From 3ce3b9814c01d90ce64dc208df7f24db8fe17385 Mon Sep 17 00:00:00 2001 From: Nathan Walker Date: Thu, 4 Sep 2025 23:05:02 -0700 Subject: [PATCH 1/3] fix: clear all deprecated dependencies --- lib/common/test/unit-tests/file-system.ts | 18 +- .../mobile/project-files-manager.ts | 78 +- .../test/unit-tests/services/hook-service.ts | 31 +- lib/common/test/unit-tests/yok.ts | 272 +- lib/controllers/migrate-controller.ts | 9 +- lib/definitions/temp-service.d.ts | 8 +- lib/services/ios/spm-service.ts | 2 +- lib/services/temp-service.ts | 31 +- package-lock.json | 5680 +++++------------ package.json | 14 +- packages/doctor/package.json | 9 +- packages/doctor/src/declarations.d.ts | 4 +- packages/doctor/src/sys-info.ts | 287 +- packages/doctor/test/android-tools-info.ts | 4 +- test/ios-entitlements-service.ts | 34 +- test/ios-project-service.ts | 171 +- test/plugin-create.ts | 50 +- test/plugins-service.ts | 130 +- test/project-changes-service.ts | 50 +- test/services/android-plugin-build-service.ts | 57 +- .../android/gradle-build-args-service.ts | 23 +- .../livesync/android-livesync-tool.ts | 6 +- test/stubs.ts | 20 +- .../node-modules-dependencies-builder.ts | 1585 ++--- test/xcconfig-service.ts | 18 +- 25 files changed, 3061 insertions(+), 5530 deletions(-) diff --git a/lib/common/test/unit-tests/file-system.ts b/lib/common/test/unit-tests/file-system.ts index 8ea252d41b..f9de36974f 100644 --- a/lib/common/test/unit-tests/file-system.ts +++ b/lib/common/test/unit-tests/file-system.ts @@ -1,6 +1,7 @@ import { Yok } from "../../yok"; +import { mkdtempSync } from "fs"; +import { tmpdir } from "os"; import * as path from "path"; -import * as temp from "temp"; import * as hostInfoLib from "../../host-info"; import { assert, use } from "chai"; import "chai-as-promised"; @@ -28,7 +29,6 @@ function isOsCaseSensitive(testInjector: IInjector): boolean { const hostInfo = testInjector.resolve("hostInfo"); return hostInfo.isLinux; } -temp.track(); function createWriteJsonTestCases(): { exists: boolean; @@ -125,7 +125,7 @@ describe("FileSystem", () => { beforeEach(() => { testInjector = createTestInjector(); - tempDir = temp.mkdirSync("projectToUnzip"); + tempDir = mkdtempSync(path.join(tmpdir(), "projectToUnzip-")); fs = testInjector.resolve("fs"); file = path.join(tempDir, unzippedFileName); fs.writeFile(file, msg); @@ -188,7 +188,7 @@ describe("FileSystem", () => { const commandUnzipFailedMessage = "Command unzip failed with exit code 9"; it("is case sensitive when options is not defined", async () => { const testInjector = createTestInjector(); - const tempDir = temp.mkdirSync("projectToUnzip"); + const tempDir = mkdtempSync(path.join(tmpdir(), "projectToUnzip-")); const fs: IFileSystem = testInjector.resolve("fs"); if (isOsCaseSensitive(testInjector)) { await assert.isRejected( @@ -202,7 +202,7 @@ describe("FileSystem", () => { it("is case sensitive when caseSensitive option is not defined", async () => { const testInjector = createTestInjector(); - const tempDir = temp.mkdirSync("projectToUnzip"); + const tempDir = mkdtempSync(path.join(tmpdir(), "projectToUnzip-")); const fs: IFileSystem = testInjector.resolve("fs"); if (isOsCaseSensitive(testInjector)) { await assert.isRejected( @@ -216,7 +216,7 @@ describe("FileSystem", () => { it("is case sensitive when caseSensitive option is true", async () => { const testInjector = createTestInjector(); - const tempDir = temp.mkdirSync("projectToUnzip"); + const tempDir = mkdtempSync(path.join(tmpdir(), "projectToUnzip-")); const fs: IFileSystem = testInjector.resolve("fs"); if (isOsCaseSensitive(testInjector)) { await assert.isRejected( @@ -233,7 +233,7 @@ describe("FileSystem", () => { it("is case insensitive when caseSensitive option is false", async () => { const testInjector = createTestInjector(); - const tempDir = temp.mkdirSync("projectToUnzip"); + const tempDir = mkdtempSync(path.join(tmpdir(), "projectToUnzip-")); const fs: IFileSystem = testInjector.resolve("fs"); const file = path.join(tempDir, unzippedFileName); await fs.unzip( @@ -251,7 +251,7 @@ describe("FileSystem", () => { describe("renameIfExists", () => { it("returns true when file is renamed", () => { const testInjector = createTestInjector(); - const tempDir = temp.mkdirSync("renameIfExists"); + const tempDir = mkdtempSync(path.join(tmpdir(), "renameIfExists-")); const testFileName = path.join(tempDir, "testRenameIfExistsMethod"); const newFileName = path.join(tempDir, "newfilename"); @@ -287,7 +287,7 @@ describe("FileSystem", () => { beforeEach(() => { testInjector = createTestInjector(); - tempDir = temp.mkdirSync("copyFile"); + tempDir = mkdtempSync(path.join(tmpdir(), "copyFile-")); testFileName = path.join(tempDir, "testCopyFile"); newFileName = path.join(tempDir, "newfilename"); diff --git a/lib/common/test/unit-tests/mobile/project-files-manager.ts b/lib/common/test/unit-tests/mobile/project-files-manager.ts index 927dde9acd..1ab06e1a94 100644 --- a/lib/common/test/unit-tests/mobile/project-files-manager.ts +++ b/lib/common/test/unit-tests/mobile/project-files-manager.ts @@ -12,12 +12,12 @@ import * as path from "path"; import { Yok } from "../../../yok"; import { ProjectFilesProviderBase } from "../../../services/project-files-provider-base"; -import * as temp from "temp"; +import { mkdtempSync } from "fs"; +import { tmpdir } from "os"; import { LiveSyncPaths } from "../../../constants"; import { TempServiceStub } from "../../../../../test/stubs"; import { IInjector } from "../../../definitions/yok"; import { IProjectFilesManager } from "../../../declarations"; -temp.track(); const testedApplicationIdentifier = "com.telerik.myApp"; const iOSDeviceProjectRootPath = "/Documents/AppBuilder/LiveSync/app"; @@ -44,7 +44,7 @@ function createTestInjector(): IInjector { testInjector.register("hostInfo", HostInfo); testInjector.register( "localToDevicePathDataFactory", - LocalToDevicePathDataFactory + LocalToDevicePathDataFactory, ); testInjector.register("mobileHelper", MobileHelper); testInjector.register("projectFilesProvider", ProjectFilesProviderBase); @@ -61,12 +61,14 @@ function createTestInjector(): IInjector { async function createFiles( testInjector: IInjector, - filesToCreate: string[] + filesToCreate: string[], ): Promise { - const directoryPath = temp.mkdirSync("Project Files Manager Tests"); + const directoryPath = mkdtempSync( + path.join(tmpdir(), "Project Files Manager Tests-"), + ); _.each(filesToCreate, (file) => - createFile(testInjector, file, "", directoryPath) + createFile(testInjector, file, "", directoryPath), ); return directoryPath; @@ -76,11 +78,11 @@ function createFile( testInjector: IInjector, fileToCreate: string, fileContent: string, - directoryPath?: string + directoryPath?: string, ): string { const fs = testInjector.resolve("fs"); directoryPath = !directoryPath - ? temp.mkdirSync("Project Files Manager Tests") + ? mkdtempSync(path.join(tmpdir(), "Project Files Manager Tests-")) : directoryPath; fs.writeFile(path.join(directoryPath, fileToCreate), fileContent); @@ -100,50 +102,52 @@ describe("Project Files Manager Tests", () => { it("maps non-platform specific files to device file paths for ios platform", async () => { const files = ["~/TestApp/app/test.js", "~/TestApp/app/myfile.js"]; - const localToDevicePaths = await projectFilesManager.createLocalToDevicePaths( - iOSDeviceAppData, - "~/TestApp/app", - files, - [] - ); + const localToDevicePaths = + await projectFilesManager.createLocalToDevicePaths( + iOSDeviceAppData, + "~/TestApp/app", + files, + [], + ); _.each(localToDevicePaths, (localToDevicePathData, index) => { assert.equal(files[index], localToDevicePathData.getLocalPath()); assert.equal( mobileHelper.buildDevicePath( iOSDeviceProjectRootPath, - path.basename(files[index]) + path.basename(files[index]), ), - localToDevicePathData.getDevicePath() + localToDevicePathData.getDevicePath(), ); assert.equal( path.basename(files[index]), - localToDevicePathData.getRelativeToProjectBasePath() + localToDevicePathData.getRelativeToProjectBasePath(), ); }); }); it("maps non-platform specific files to device file paths for android platform", async () => { const files = ["~/TestApp/app/test.js", "~/TestApp/app/myfile.js"]; - const localToDevicePaths = await projectFilesManager.createLocalToDevicePaths( - androidDeviceAppData, - "~/TestApp/app", - files, - [] - ); + const localToDevicePaths = + await projectFilesManager.createLocalToDevicePaths( + androidDeviceAppData, + "~/TestApp/app", + files, + [], + ); _.each(localToDevicePaths, (localToDevicePathData, index) => { assert.equal(files[index], localToDevicePathData.getLocalPath()); assert.equal( mobileHelper.buildDevicePath( androidDeviceProjectRootPath, - path.basename(files[index]) + path.basename(files[index]), ), - localToDevicePathData.getDevicePath() + localToDevicePathData.getDevicePath(), ); assert.equal( path.basename(files[index]), - localToDevicePathData.getRelativeToProjectBasePath() + localToDevicePathData.getRelativeToProjectBasePath(), ); }); }); @@ -155,18 +159,18 @@ describe("Project Files Manager Tests", () => { iOSDeviceAppData, "~/TestApp/app", [filePath], - [] + [], ) )[0]; assert.equal(filePath, localToDevicePathData.getLocalPath()); assert.equal( mobileHelper.buildDevicePath(iOSDeviceProjectRootPath, "test.js"), - localToDevicePathData.getDevicePath() + localToDevicePathData.getDevicePath(), ); assert.equal( "test.ios.js", - localToDevicePathData.getRelativeToProjectBasePath() + localToDevicePathData.getRelativeToProjectBasePath(), ); }); @@ -177,18 +181,18 @@ describe("Project Files Manager Tests", () => { androidDeviceAppData, "~/TestApp/app", [filePath], - [] + [], ) )[0]; assert.equal(filePath, localToDevicePathData.getLocalPath()); assert.equal( mobileHelper.buildDevicePath(androidDeviceProjectRootPath, "test.js"), - localToDevicePathData.getDevicePath() + localToDevicePathData.getDevicePath(), ); assert.equal( "test.android.js", - localToDevicePathData.getRelativeToProjectBasePath() + localToDevicePathData.getRelativeToProjectBasePath(), ); }); @@ -199,7 +203,7 @@ describe("Project Files Manager Tests", () => { projectFilesManager.processPlatformSpecificFiles( directoryPath, "android", - {} + {}, ); const fs = testInjector.resolve("fs"); @@ -228,7 +232,7 @@ describe("Project Files Manager Tests", () => { testInjector, "test.release.x", releaseFileContent, - directoryPath + directoryPath, ); projectFilesManager.processPlatformSpecificFiles(directoryPath, "android", { @@ -241,7 +245,7 @@ describe("Project Files Manager Tests", () => { assert.isFalse(fs.exists(path.join(directoryPath, "test.release.x"))); assert.isTrue( fs.readFile(path.join(directoryPath, "test.x")).toString() === - releaseFileContent + releaseFileContent, ); }); @@ -253,7 +257,7 @@ describe("Project Files Manager Tests", () => { projectFilesManager.processPlatformSpecificFiles( directoryPath, "android", - {} + {}, ); const fs = testInjector.resolve("fs"); @@ -262,7 +266,7 @@ describe("Project Files Manager Tests", () => { assert.isFalse(fs.exists(path.join(directoryPath, "test.release.x"))); assert.isTrue( fs.readFile(path.join(directoryPath, "test.x")).toString() === - debugFileContent + debugFileContent, ); }); diff --git a/lib/common/test/unit-tests/services/hook-service.ts b/lib/common/test/unit-tests/services/hook-service.ts index 7b5d935a9c..f0eb83fd3f 100644 --- a/lib/common/test/unit-tests/services/hook-service.ts +++ b/lib/common/test/unit-tests/services/hook-service.ts @@ -14,9 +14,8 @@ import * as FileSystemLib from "../../../file-system"; import * as ChildProcessLib from "../../../child-process"; import { IHooksService } from "../../../declarations"; import { HooksService } from "../../../services/hooks-service"; -import * as temp from "temp"; - -temp.track(); +import { mkdtempSync } from "fs"; +import { tmpdir } from "os"; function createTestInjector(opts?: { projectDir?: string }): IInjector { const testInjector = new Yok(); @@ -34,7 +33,7 @@ function createTestInjector(opts?: { projectDir?: string }): IInjector { testInjector.register("projectConfigService", ProjectConfigServiceStub); testInjector.register( "projectHelper", - new ProjectHelperStub("", opts && opts.projectDir) + new ProjectHelperStub("", opts && opts.projectDir), ); testInjector.register("performanceService", PerformanceService); testInjector.register("hooksService", HooksService); @@ -47,7 +46,7 @@ describe("hooks-service", () => { it("should run hooks from hooks folder", async () => { const projectName = "projectDirectory"; - const projectPath = temp.mkdirSync(projectName); + const projectPath = mkdtempSync(path.join(tmpdir(), `${projectName}-`)); const testInjector = createTestInjector({ projectDir: projectPath }); @@ -64,7 +63,7 @@ describe("hooks-service", () => { fs.mkdirSync(path.join(projectPath, "hooks/after-prepare")); fs.writeFileSync( path.join(projectPath, "hooks/after-prepare/hook.js"), - script + script, ); service = testInjector.resolve("$hooksService"); @@ -73,13 +72,13 @@ describe("hooks-service", () => { assert.equal( testInjector.resolve("$logger").output, - "after-prepare hook is running\n" + "after-prepare hook is running\n", ); }); it("should run custom hooks from nativescript config", async () => { const projectName = "projectDirectory"; - const projectPath = temp.mkdirSync(projectName); + const projectPath = mkdtempSync(path.join(tmpdir(), `${projectName}-`)); const testInjector = createTestInjector({ projectDir: projectPath }); @@ -99,7 +98,7 @@ describe("hooks-service", () => { "projectConfigService", ProjectConfigServiceStub.initWithConfig({ hooks: [{ type: "before-prepare", script: "scripts/custom-hook.js" }], - }) + }), ); service = testInjector.resolve("$hooksService"); @@ -108,13 +107,13 @@ describe("hooks-service", () => { assert.equal( testInjector.resolve("$logger").output, - "custom hook is running\n" + "custom hook is running\n", ); }); it("skip when missing hook args", async () => { const projectName = "projectDirectory"; - const projectPath = temp.mkdirSync(projectName); + const projectPath = mkdtempSync(path.join(tmpdir(), `${projectName}-`)); const testInjector = createTestInjector({ projectDir: projectPath }); @@ -131,7 +130,7 @@ describe("hooks-service", () => { fs.mkdirSync(path.join(projectPath, "hooks/after-prepare")); fs.writeFileSync( path.join(projectPath, "hooks/after-prepare/hook.js"), - script + script, ); service = testInjector.resolve("$hooksService"); @@ -140,13 +139,13 @@ describe("hooks-service", () => { expect(testInjector.resolve("$logger").warnOutput).to.have.string( "invalid arguments", - "$projectData should be missing" + "$projectData should be missing", ); }); it("should run non-hook files", async () => { const projectName = "projectDirectory"; - const projectPath = temp.mkdirSync(projectName); + const projectPath = mkdtempSync(path.join(tmpdir(), `${projectName}-`)); const testInjector = createTestInjector({ projectDir: projectPath }); @@ -160,7 +159,7 @@ describe("hooks-service", () => { fs.mkdirSync(path.join(projectPath, "hooks/after-prepare")); fs.writeFileSync( path.join(projectPath, "hooks/after-prepare/script.js"), - script + script, ); service = testInjector.resolve("$hooksService"); @@ -169,7 +168,7 @@ describe("hooks-service", () => { assert( fs.existsSync(path.join(projectPath, "js-test.txt")), - "javascript file did not run" + "javascript file did not run", ); }); }); diff --git a/lib/common/test/unit-tests/yok.ts b/lib/common/test/unit-tests/yok.ts index 880c66b012..5c63a18d08 100644 --- a/lib/common/test/unit-tests/yok.ts +++ b/lib/common/test/unit-tests/yok.ts @@ -2,16 +2,18 @@ import { assert } from "chai"; import { injector, setGlobalInjector, Yok } from "../../yok"; import * as path from "path"; import * as fs from "fs"; -import * as temp from "temp"; +import { mkdtempSync } from "fs"; +import { tmpdir } from "os"; import * as _ from "lodash"; import { ICliGlobal } from "../../definitions/cli-global"; import { ICommandParameter } from "../../definitions/commands"; import { IInjector } from "../../definitions/yok"; -temp.track(); - class MyClass { - constructor(private x: string, public y: any) {} + constructor( + private x: string, + public y: any, + ) {} public checkX(): void { assert.strictEqual(this.x, "foo"); @@ -476,9 +478,10 @@ describe("yok", () => { const cliGlobal = (global); const injectorCache = cliGlobal.$injector; cliGlobal.$injector = injector; - const tmpPathA = temp.path({ - prefix: "overrideAlreadyRequiredModule_fileA", - }); + const tmpDirA = mkdtempSync( + path.join(tmpdir(), "overrideAlreadyRequiredModule_fileA-"), + ); + const tmpPathA = path.join(tmpDirA, "fileA.js"); fs.writeFileSync( tmpPathA, ` @@ -490,14 +493,15 @@ class A { } } $injector.register("a", A); - ` + `, ); injector.require("a", tmpPathA); - const tmpPathB = temp.path({ - prefix: "overrideAlreadyRequiredModule_fileB", - }); + const tmpDirB = mkdtempSync( + path.join(tmpdir(), "overrideAlreadyRequiredModule_fileB-"), + ); + const tmpPathB = path.join(tmpDirB, "fileB.js"); fs.writeFileSync( tmpPathB, ` @@ -509,7 +513,7 @@ class A { } } $injector.register("a", A); - ` + `, ); injector.overrideAlreadyRequiredModule = true; @@ -526,7 +530,7 @@ $injector.register("a", A); setGlobalInjector(new Yok()); injector.requirePublic("foo", "test"); assert.isTrue( - _.includes(Object.getOwnPropertyNames(injector.publicApi), "foo") + _.includes(Object.getOwnPropertyNames(injector.publicApi), "foo"), ); }); @@ -542,9 +546,10 @@ $injector.register("a", A); const injectorCache = injector; setGlobalInjector(new Yok()); - const testPublicApiFilePath = temp.path({ - prefix: "overrideAlreadyRequiredModule_fileA", - }); + const tempDir = mkdtempSync( + path.join(tmpdir(), "overrideAlreadyRequiredModule_fileA-"), + ); + const testPublicApiFilePath = path.join(tempDir, "public-api-mocks.js"); const pathToMock = path.join(__dirname, "mocks", "public-api-mocks.js"); const originalContent = fs.readFileSync(pathToMock).toString(); @@ -567,11 +572,11 @@ $injector.register("a", A); const result = 1; assert.ok( injector.publicApi.testPublicApi, - "The module testPublicApi must be resolved in its getter and the returned value should not be falsey." + "The module testPublicApi must be resolved in its getter and the returned value should not be falsey.", ); assert.deepStrictEqual( await injector.publicApi.testPublicApi.myMethod(result), - result + result, ); setGlobalInjector(injectorCache); @@ -589,14 +594,14 @@ $injector.register("a", A); it("and is valid", () => { localInjector.requireCommand("sample|command", "sampleFileName"); return assert.eventually.isTrue( - localInjector.isValidHierarchicalCommand("sample", ["command"]) + localInjector.isValidHierarchicalCommand("sample", ["command"]), ); }); it("and has default value and no arguments passed", () => { localInjector.requireCommand("sample|*default", "sampleFileName"); return assert.eventually.isTrue( - localInjector.isValidHierarchicalCommand("sample", []) + localInjector.isValidHierarchicalCommand("sample", []), ); }); @@ -607,7 +612,7 @@ $injector.register("a", A); localInjector.registerCommand("sample|*default", command); localInjector.requireCommand("sample|*default", "sampleFileName"); return assert.eventually.isTrue( - localInjector.isValidHierarchicalCommand("sample", ["arg"]) + localInjector.isValidHierarchicalCommand("sample", ["arg"]), ); }); @@ -621,21 +626,24 @@ $injector.register("a", A); localInjector.registerCommand("sample|*default", command); localInjector.requireCommand("sample|*default", "sampleFileName"); return assert.eventually.isTrue( - localInjector.isValidHierarchicalCommand("sample", ["arg"]) + localInjector.isValidHierarchicalCommand("sample", ["arg"]), ); }); it("and has default value and argument default passed", () => { localInjector.requireCommand("sample|*default", "sampleFileName"); return assert.eventually.isTrue( - localInjector.isValidHierarchicalCommand("sample", ["default"]) + localInjector.isValidHierarchicalCommand("sample", ["default"]), ); }); it("and has default value and some arguments passed", () => { localInjector.requireCommand("sample|*default", "sampleFileName"); return assert.eventually.isTrue( - localInjector.isValidHierarchicalCommand("sample", ["arg1", "arg2"]) + localInjector.isValidHierarchicalCommand("sample", [ + "arg1", + "arg2", + ]), ); }); }); @@ -644,50 +652,50 @@ $injector.register("a", A); it("and is valid", () => { localInjector.requireCommand( "sample|command|subcommand", - "sampleFileName" + "sampleFileName", ); return assert.eventually.isTrue( localInjector.isValidHierarchicalCommand("sample", [ "command", "subcommand", - ]) + ]), ); }); it("and has default value and no arguments passed", () => { localInjector.requireCommand( "sample|command|*default", - "sampleFileName" + "sampleFileName", ); return assert.eventually.isTrue( - localInjector.isValidHierarchicalCommand("sample", ["command"]) + localInjector.isValidHierarchicalCommand("sample", ["command"]), ); }); it("has default value and default argument passed", () => { localInjector.requireCommand( "sample|command|*default", - "sampleFileName" + "sampleFileName", ); return assert.eventually.isTrue( localInjector.isValidHierarchicalCommand("sample", [ "command", "default", - ]) + ]), ); }); it("has default value and some arguments passed", () => { localInjector.requireCommand( "sample|command|*default", - "sampleFileName" + "sampleFileName", ); return assert.eventually.isTrue( localInjector.isValidHierarchicalCommand("sample", [ "command", "arg1", "arg2", - ]) + ]), ); }); }); @@ -697,7 +705,7 @@ $injector.register("a", A); it("when command is invalid", () => { localInjector.requireCommand("sample|command", "sampleFileName"); return assert.eventually.isFalse( - localInjector.isValidHierarchicalCommand("wrong", ["command"]) + localInjector.isValidHierarchicalCommand("wrong", ["command"]), ); }); @@ -705,7 +713,7 @@ $injector.register("a", A); it("when arguments are invalid", () => { localInjector.requireCommand("sample|command", "sampleFileName"); return assert.isRejected( - localInjector.isValidHierarchicalCommand("sample", ["commandarg"]) + localInjector.isValidHierarchicalCommand("sample", ["commandarg"]), ); }); }); @@ -722,21 +730,21 @@ $injector.register("a", A); injector.requireCommand("sample|command", "sampleFileName"); assert.isUndefined( injector.buildHierarchicalCommand("command", ["subCommand"]), - "When there's no matching subcommand, buildHierarchicalCommand should return undefined." + "When there's no matching subcommand, buildHierarchicalCommand should return undefined.", ); }); it("when there's no hierarchical commands required", () => { assert.isUndefined( injector.buildHierarchicalCommand("command", ["subCommand"]), - "When there's no hierarchical commands required, buildHierarchicalCommand should return undefined." + "When there's no hierarchical commands required, buildHierarchicalCommand should return undefined.", ); }); it("when only one argument is passed", () => { assert.isUndefined( injector.buildHierarchicalCommand("command", []), - "When when only one argument is passed, buildHierarchicalCommand should return undefined." + "When when only one argument is passed, buildHierarchicalCommand should return undefined.", ); }); @@ -744,7 +752,7 @@ $injector.register("a", A); injector.requireCommand("command", "sampleFileName"); assert.isUndefined( injector.buildHierarchicalCommand("command", []), - "When there's matching command, but it is not hierarchical command, buildHierarchicalCommand should return undefined." + "When there's matching command, but it is not hierarchical command, buildHierarchicalCommand should return undefined.", ); }); }); @@ -753,19 +761,17 @@ $injector.register("a", A); it("when only command is passed, no arguments are returned", () => { const commandName = "sample|command"; injector.requireCommand(commandName, "sampleFileName"); - const buildHierarchicalCommandResult = injector.buildHierarchicalCommand( - "sample", - ["command"] - ); + const buildHierarchicalCommandResult = + injector.buildHierarchicalCommand("sample", ["command"]); assert.deepStrictEqual( buildHierarchicalCommandResult.commandName, commandName, - `The expected command name is ${commandName}` + `The expected command name is ${commandName}`, ); assert.deepStrictEqual( buildHierarchicalCommandResult.remainingArguments, [], - "There shouldn't be any arguments left." + "There shouldn't be any arguments left.", ); }); @@ -779,19 +785,20 @@ $injector.register("a", A); "to", "command", ]; - const buildHierarchicalCommandResult = injector.buildHierarchicalCommand( - "sample", - ["command"].concat(sampleArguments) - ); + const buildHierarchicalCommandResult = + injector.buildHierarchicalCommand( + "sample", + ["command"].concat(sampleArguments), + ); assert.deepStrictEqual( buildHierarchicalCommandResult.commandName, commandName, - `The expected command name is ${commandName}` + `The expected command name is ${commandName}`, ); assert.deepStrictEqual( buildHierarchicalCommandResult.remainingArguments, sampleArguments, - "All arguments except first one should be returned." + "All arguments except first one should be returned.", ); }); @@ -805,38 +812,37 @@ $injector.register("a", A); "to", "command", ]; - const buildHierarchicalCommandResult = injector.buildHierarchicalCommand( - "sample", - ["CoMmanD"].concat(sampleArguments) - ); + const buildHierarchicalCommandResult = + injector.buildHierarchicalCommand( + "sample", + ["CoMmanD"].concat(sampleArguments), + ); assert.deepStrictEqual( buildHierarchicalCommandResult.commandName, commandName, - `The expected command name is ${commandName}` + `The expected command name is ${commandName}`, ); assert.deepStrictEqual( buildHierarchicalCommandResult.remainingArguments, sampleArguments, - "All arguments except first one should be returned." + "All arguments except first one should be returned.", ); }); it("when only default command is passed, no arguments are returned", () => { const commandName = "sample|*command"; injector.requireCommand(commandName, "sampleFileName"); - const buildHierarchicalCommandResult = injector.buildHierarchicalCommand( - "sample", - ["command"] - ); + const buildHierarchicalCommandResult = + injector.buildHierarchicalCommand("sample", ["command"]); assert.deepStrictEqual( buildHierarchicalCommandResult.commandName, commandName, - `The expected command name is ${commandName}` + `The expected command name is ${commandName}`, ); assert.deepStrictEqual( buildHierarchicalCommandResult.remainingArguments, [], - "There shouldn't be any arguments left." + "There shouldn't be any arguments left.", ); }); @@ -850,19 +856,20 @@ $injector.register("a", A); "to", "command", ]; - const buildHierarchicalCommandResult = injector.buildHierarchicalCommand( - "sample", - ["command"].concat(sampleArguments) - ); + const buildHierarchicalCommandResult = + injector.buildHierarchicalCommand( + "sample", + ["command"].concat(sampleArguments), + ); assert.deepStrictEqual( buildHierarchicalCommandResult.commandName, commandName, - `The expected command name is ${commandName}` + `The expected command name is ${commandName}`, ); assert.deepStrictEqual( buildHierarchicalCommandResult.remainingArguments, sampleArguments, - "All arguments except first one should be returned." + "All arguments except first one should be returned.", ); }); }); @@ -871,19 +878,22 @@ $injector.register("a", A); it("when only command is passed, no arguments are returned", () => { const commandName = "sample|command|with|more|pipes"; injector.requireCommand(commandName, "sampleFileName"); - const buildHierarchicalCommandResult = injector.buildHierarchicalCommand( - "sample", - ["command", "with", "more", "pipes"] - ); + const buildHierarchicalCommandResult = + injector.buildHierarchicalCommand("sample", [ + "command", + "with", + "more", + "pipes", + ]); assert.deepStrictEqual( buildHierarchicalCommandResult.commandName, commandName, - `The expected command name is ${commandName}` + `The expected command name is ${commandName}`, ); assert.deepStrictEqual( buildHierarchicalCommandResult.remainingArguments, [], - "There shouldn't be any arguments left." + "There shouldn't be any arguments left.", ); }); @@ -897,38 +907,37 @@ $injector.register("a", A); "to", "command", ]; - const buildHierarchicalCommandResult = injector.buildHierarchicalCommand( - "sample", - ["command", "pipes"].concat(sampleArguments) - ); + const buildHierarchicalCommandResult = + injector.buildHierarchicalCommand( + "sample", + ["command", "pipes"].concat(sampleArguments), + ); assert.deepStrictEqual( buildHierarchicalCommandResult.commandName, commandName, - `The expected command name is ${commandName}` + `The expected command name is ${commandName}`, ); assert.deepStrictEqual( buildHierarchicalCommandResult.remainingArguments, sampleArguments, - "All arguments except the ones used for commandName should be returned." + "All arguments except the ones used for commandName should be returned.", ); }); it("when only default command is passed, no arguments are returned", () => { const commandName = "sample|*command|pipes"; injector.requireCommand(commandName, "sampleFileName"); - const buildHierarchicalCommandResult = injector.buildHierarchicalCommand( - "sample", - ["command", "pipes"] - ); + const buildHierarchicalCommandResult = + injector.buildHierarchicalCommand("sample", ["command", "pipes"]); assert.deepStrictEqual( buildHierarchicalCommandResult.commandName, commandName, - `The expected command name is ${commandName}` + `The expected command name is ${commandName}`, ); assert.deepStrictEqual( buildHierarchicalCommandResult.remainingArguments, [], - "There shouldn't be any arguments left." + "There shouldn't be any arguments left.", ); }); @@ -942,19 +951,20 @@ $injector.register("a", A); "to", "command", ]; - const buildHierarchicalCommandResult = injector.buildHierarchicalCommand( - "sample", - ["command", "pipes"].concat(sampleArguments) - ); + const buildHierarchicalCommandResult = + injector.buildHierarchicalCommand( + "sample", + ["command", "pipes"].concat(sampleArguments), + ); assert.deepStrictEqual( buildHierarchicalCommandResult.commandName, commandName, - `The expected command name is ${commandName}` + `The expected command name is ${commandName}`, ); assert.deepStrictEqual( buildHierarchicalCommandResult.remainingArguments, sampleArguments, - "All arguments except the ones used for commandName should be returned." + "All arguments except the ones used for commandName should be returned.", ); }); @@ -972,114 +982,116 @@ $injector.register("a", A); injector.requireCommand("sample|command|with|more", "sampleFileName"); injector.requireCommand( "sample|command|with|more|pipes", - "sampleFileName" + "sampleFileName", ); }); it("when subcommand of subcommand is called", () => { const commandName = "sample|command|with|more|pipes"; - const buildHierarchicalCommandResult = injector.buildHierarchicalCommand( - "sample", - ["command", "with", "more", "pipes"] - ); + const buildHierarchicalCommandResult = + injector.buildHierarchicalCommand("sample", [ + "command", + "with", + "more", + "pipes", + ]); assert.deepStrictEqual( buildHierarchicalCommandResult.commandName, commandName, - `The expected command name is ${commandName}` + `The expected command name is ${commandName}`, ); assert.deepStrictEqual( buildHierarchicalCommandResult.remainingArguments, [], - "There shouldn't be any arguments left." + "There shouldn't be any arguments left.", ); }); it("and correct arguments, when subcommand of subcommand is called", () => { const commandName = "sample|command|with|more|pipes"; - const buildHierarchicalCommandResult = injector.buildHierarchicalCommand( - "sample", - ["command", "with", "more", "pipes"].concat(sampleArguments) - ); + const buildHierarchicalCommandResult = + injector.buildHierarchicalCommand( + "sample", + ["command", "with", "more", "pipes"].concat(sampleArguments), + ); assert.deepStrictEqual( buildHierarchicalCommandResult.commandName, commandName, - `The expected command name is ${commandName}` + `The expected command name is ${commandName}`, ); assert.deepStrictEqual( buildHierarchicalCommandResult.remainingArguments, sampleArguments, - "All arguments except the ones used for commandName should be returned." + "All arguments except the ones used for commandName should be returned.", ); }); it("when top subcommand is called and it has its own subcommand", () => { const commandName = "sample|command"; - const buildHierarchicalCommandResult = injector.buildHierarchicalCommand( - "sample", - ["command"] - ); + const buildHierarchicalCommandResult = + injector.buildHierarchicalCommand("sample", ["command"]); assert.deepStrictEqual( buildHierarchicalCommandResult.commandName, commandName, - `The expected command name is ${commandName}` + `The expected command name is ${commandName}`, ); assert.deepStrictEqual( buildHierarchicalCommandResult.remainingArguments, [], - "There shouldn't be any arguments left." + "There shouldn't be any arguments left.", ); }); it("and correct arguments, when top subcommand is called and it has its own subcommand", () => { const commandName = "sample|command"; - const buildHierarchicalCommandResult = injector.buildHierarchicalCommand( - "sample", - ["command"].concat(sampleArguments) - ); + const buildHierarchicalCommandResult = + injector.buildHierarchicalCommand( + "sample", + ["command"].concat(sampleArguments), + ); assert.deepStrictEqual( buildHierarchicalCommandResult.commandName, commandName, - `The expected command name is ${commandName}` + `The expected command name is ${commandName}`, ); assert.deepStrictEqual( buildHierarchicalCommandResult.remainingArguments, sampleArguments, - "All arguments except the ones used for commandName should be returned." + "All arguments except the ones used for commandName should be returned.", ); }); it("when subcommand of subcommand is called and it has its own subcommand", () => { const commandName = "sample|command|with"; - const buildHierarchicalCommandResult = injector.buildHierarchicalCommand( - "sample", - ["command", "with"] - ); + const buildHierarchicalCommandResult = + injector.buildHierarchicalCommand("sample", ["command", "with"]); assert.deepStrictEqual( buildHierarchicalCommandResult.commandName, commandName, - `The expected command name is ${commandName}` + `The expected command name is ${commandName}`, ); assert.deepStrictEqual( buildHierarchicalCommandResult.remainingArguments, [], - "There shouldn't be any arguments left." + "There shouldn't be any arguments left.", ); }); it("and correct arguments, when subcommand of subcommand is called and it has its own subcommand", () => { const commandName = "sample|command|with"; - const buildHierarchicalCommandResult = injector.buildHierarchicalCommand( - "sample", - ["command", "with"].concat(sampleArguments) - ); + const buildHierarchicalCommandResult = + injector.buildHierarchicalCommand( + "sample", + ["command", "with"].concat(sampleArguments), + ); assert.deepStrictEqual( buildHierarchicalCommandResult.commandName, commandName, - `The expected command name is ${commandName}` + `The expected command name is ${commandName}`, ); assert.deepStrictEqual( buildHierarchicalCommandResult.remainingArguments, sampleArguments, - "All arguments except the ones used for commandName should be returned." + "All arguments except the ones used for commandName should be returned.", ); }); }); @@ -1106,7 +1118,7 @@ $injector.register("a", A); const resultFooObject = injector.publicApi.foo; fs.unlinkSync(filepath); assert.isTrue( - _.includes(Object.getOwnPropertyNames(injector.publicApi), "foo") + _.includes(Object.getOwnPropertyNames(injector.publicApi), "foo"), ); assert.deepStrictEqual(resultFooObject, dataObject); }); diff --git a/lib/controllers/migrate-controller.ts b/lib/controllers/migrate-controller.ts index d83016803e..3206099583 100644 --- a/lib/controllers/migrate-controller.ts +++ b/lib/controllers/migrate-controller.ts @@ -40,7 +40,8 @@ import { IInjector } from "../common/definitions/yok"; import { injector } from "../common/yok"; import { IJsonFileSettingsService } from "../common/definitions/json-file-settings-service"; import { SupportedConfigValues } from "../tools/config-manipulation/config-transformer"; -import * as temp from "temp"; +import * as fs from "fs"; +import { tmpdir } from "os"; import { color } from "../color"; import { ITerminalSpinner, @@ -1285,9 +1286,9 @@ export class MigrateController return "./" + path.relative(projectDir, polyfillsPath); } - const tempDir = temp.mkdirSync({ - prefix: "migrate-angular-polyfills", - }); + const tempDir = fs.mkdtempSync( + path.join(tmpdir(), "migrate-angular-polyfills-"), + ); // get from default angular template await this.$pacoteService.extractPackage( diff --git a/lib/definitions/temp-service.d.ts b/lib/definitions/temp-service.d.ts index ea73b7737c..24038d9ec3 100644 --- a/lib/definitions/temp-service.d.ts +++ b/lib/definitions/temp-service.d.ts @@ -1,9 +1,13 @@ -import { AffixOptions } from "temp"; +export type AffixOptions = { + prefix?: string; + suffix?: string; + dir?: string; +}; /** * Declares wrapped functions of temp module */ -interface ITempService { +export interface ITempService { mkdirSync(affixes: string | AffixOptions): Promise; path(options: string | AffixOptions): Promise; } diff --git a/lib/services/ios/spm-service.ts b/lib/services/ios/spm-service.ts index d7d46107ff..ec6b68b2d5 100644 --- a/lib/services/ios/spm-service.ts +++ b/lib/services/ios/spm-service.ts @@ -1,6 +1,6 @@ import { injector } from "../../common/yok"; import { IProjectConfigService, IProjectData } from "../../definitions/project"; -import { MobileProject } from "@rigor789/trapezedev-project"; +import { MobileProject } from "@nstudio/trapezedev-project"; import { IPlatformData } from "../../definitions/platform"; import path = require("path"); diff --git a/lib/services/temp-service.ts b/lib/services/temp-service.ts index 988fe8a8c0..f82af5efdd 100644 --- a/lib/services/temp-service.ts +++ b/lib/services/temp-service.ts @@ -1,22 +1,39 @@ -import * as temp from "temp"; +import * as fs from "fs"; +import * as path from "path"; +import { tmpdir } from "os"; import { ICleanupService } from "../definitions/cleanup-service"; import { injector } from "../common/yok"; -import { AffixOptions } from "temp"; import { ITempService } from "../definitions/temp-service"; +type TempAffixOptions = { + prefix?: string; + suffix?: string; + dir?: string; +}; + export class TempService implements ITempService { constructor(private $cleanupService: ICleanupService) { - temp.track(); + // no-op } - public async mkdirSync(affixes: string | AffixOptions): Promise { - const pathToDir = temp.mkdirSync(affixes); + public async mkdirSync(affixes: string | TempAffixOptions): Promise { + const opts = typeof affixes === "string" ? { prefix: affixes } : affixes; + const baseDir = opts?.dir ? opts.dir : tmpdir(); + const prefix = (opts?.prefix ?? "ns-").replace(/\s+/g, "-"); + // fs.mkdtempSync requires the full path prefix + const pathToDir = fs.mkdtempSync(path.join(baseDir, prefix)); await this.$cleanupService.addCleanupDeleteAction(pathToDir); return pathToDir; } - public async path(options: string | AffixOptions): Promise { - const pathToFile = temp.path(options); + public async path(options: string | TempAffixOptions): Promise { + const opts = typeof options === "string" ? { prefix: options } : options; + const baseDir = opts?.dir ? opts.dir : tmpdir(); + const prefix = (opts?.prefix ?? "ns-").replace(/\s+/g, "-"); + const suffix = opts?.suffix ?? ""; + const unique = Math.random().toString(36).slice(2); + const filePath = path.join(baseDir, `${prefix}${unique}${suffix}`); + const pathToFile = filePath; await this.$cleanupService.addCleanupDeleteAction(pathToFile); return pathToFile; } diff --git a/package-lock.json b/package-lock.json index fe0a393e74..fef4100052 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,20 +1,20 @@ { "name": "nativescript", - "version": "9.0.0-alpha.5", + "version": "9.0.0-alpha.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "nativescript", - "version": "9.0.0-alpha.5", + "version": "9.0.0-alpha.6", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { "@foxt/js-srp": "^0.0.3-patch2", - "@nativescript/doctor": "2.0.16-rc.0", - "@npmcli/arborist": "^9.0.0", + "@nativescript/doctor": "2.0.17-alpha.0", + "@npmcli/arborist": "^9.1.4", + "@nstudio/trapezedev-project": "7.2.3", "@rigor789/resolve-package-path": "1.0.7", - "@rigor789/trapezedev-project": "7.1.2", "archiver": "^7.0.1", "axios": "1.11.0", "byline": "5.0.0", @@ -47,16 +47,15 @@ "prettier": "3.5.2", "prompts": "2.4.2", "proper-lockfile": "4.1.2", - "proxy-lib": "0.4.0", + "proxy-lib": "0.4.1", "qr-image": "3.2.0", "qrcode-terminal": "0.12.0", "semver": "7.7.1", - "shelljs": "0.8.5", + "shelljs": "0.10.0", "simple-git": "3.27.0", "simple-plist": "1.4.0", "source-map": "0.7.4", "tar": "7.4.3", - "temp": "0.9.4", "ts-morph": "25.0.1", "tunnel": "0.0.6", "typescript": "5.7.3", @@ -95,7 +94,6 @@ "@types/sinon": "^17.0.3", "@types/tabtab": "^3.0.2", "@types/tar": "6.1.13", - "@types/temp": "0.9.4", "@types/tunnel": "0.0.7", "@types/universal-analytics": "0.4.8", "@types/uuid": "^10.0.0", @@ -132,6 +130,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", @@ -146,6 +145,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -161,6 +161,32 @@ "node": ">=0.1.90" } }, + "node_modules/@conventional-changelog/git-client": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@conventional-changelog/git-client/-/git-client-1.0.1.tgz", + "integrity": "sha512-PJEqBwAleffCMETaVm/fUgHldzBE35JFk3/9LL6NUA5EXa3qednu+UT6M7E5iBu3zIQZCULYIiZ90fBYHt6xUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/semver": "^7.5.5", + "semver": "^7.5.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "conventional-commits-filter": "^5.0.0", + "conventional-commits-parser": "^6.0.0" + }, + "peerDependenciesMeta": { + "conventional-commits-filter": { + "optional": true + }, + "conventional-commits-parser": { + "optional": true + } + } + }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -180,12 +206,13 @@ "license": "ISC" }, "node_modules/@hutson/parse-repository-url": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", - "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-5.0.0.tgz", + "integrity": "sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg==", + "dev": true, "license": "Apache-2.0", "engines": { - "node": ">=6.9.0" + "node": ">=10.13.0" } }, "node_modules/@ionic/utils-array": { @@ -883,23 +910,22 @@ "license": "MIT" }, "node_modules/@nativescript/doctor": { - "version": "2.0.16-rc.0", - "resolved": "https://registry.npmjs.org/@nativescript/doctor/-/doctor-2.0.16-rc.0.tgz", - "integrity": "sha512-ZZ85tIH56vRyt9A4NpFeKGgCGX5B312HgdvUNNWoxzGI7DzpRfB2E/niu6pF7ejvpyFGXVLntisL0f/XX69E7g==", + "version": "2.0.17-alpha.0", + "resolved": "https://registry.npmjs.org/@nativescript/doctor/-/doctor-2.0.17-alpha.0.tgz", + "integrity": "sha512-OhThrM7nVW14bOEhxp2ge3yP2h7QwAECI0yH0a/Y0MnbaJpoPr/i/VFaE41njXTDDTbWCoT4ZHYaiWURBcfd8w==", "license": "Apache-2.0", "dependencies": { "lodash": "4.17.21", - "semver": "7.6.3", - "shelljs": "0.8.5", - "temp": "0.9.4", + "semver": "7.7.2", + "shelljs": "0.10.0", "winreg": "1.2.5", "yauzl": "3.2.0" } }, "node_modules/@nativescript/doctor/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -908,18 +934,6 @@ "node": ">=10" } }, - "node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -979,9 +993,9 @@ } }, "node_modules/@npmcli/arborist": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-9.1.3.tgz", - "integrity": "sha512-PvwtZD1dipP5VByHyWX28tZfan1AkfBLenJTgr0rDdEbdovZc06Z5PHdGb5SEeN7EERl68wFH8lq6WvuUHmgrw==", + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-9.1.4.tgz", + "integrity": "sha512-2Co31oEFlzT9hYjGahGL4PqDXXpA18tX9yu55j5on+m2uDiyBoljQjHNnnNVCji4pFUjawlHi23tQ4j2A5gHow==", "license": "ISC", "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", @@ -1171,9 +1185,9 @@ } }, "node_modules/@npmcli/promise-spawn": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-8.0.2.tgz", - "integrity": "sha512-/bNJhjc+o6qL+Dwz/bqfTQClkEO5nTQ1ZEcdCkAQjhkZMHIh22LPG7fNh1enJP1NKWDqYiiABnjFCY7E0zHYtQ==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-8.0.3.tgz", + "integrity": "sha512-Yb00SWaL4F8w+K8YGhQ55+xE4RUNdMHV43WZGsiTM92gS+lC0mGsn7I4hLug7pbao035S6bj3Y3w0cUNGLfmkg==", "license": "ISC", "dependencies": { "which": "^5.0.0" @@ -1220,54 +1234,17 @@ "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/@paralleldrive/cuid2": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.2.2.tgz", - "integrity": "sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "^1.1.5" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@prettier/plugin-xml": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@prettier/plugin-xml/-/plugin-xml-2.2.0.tgz", - "integrity": "sha512-UWRmygBsyj4bVXvDiqSccwT1kmsorcwQwaIy30yVh8T+Gspx4OlC0shX1y+ZuwXZvgnafmpRYKks0bAu9urJew==", - "license": "MIT", - "dependencies": { - "@xml-tools/parser": "^1.0.11", - "prettier": ">=2.4.0" - } - }, - "node_modules/@rigor789/resolve-package-path": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@rigor789/resolve-package-path/-/resolve-package-path-1.0.7.tgz", - "integrity": "sha512-/JqGCvHpj0PxS9cyZPP5LpiEy1pYszgWor/JTyreHQwLPQQdxO1mUYTtRribYcVosxH7FFs0GJBtJ652nlwKyw==", - "license": "MIT" - }, - "node_modules/@rigor789/trapezedev-project": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@rigor789/trapezedev-project/-/trapezedev-project-7.1.2.tgz", - "integrity": "sha512-eFnyKmQD73uB+CA+mg2YODFM6EAlUV/ub57UnRAI9QmpsXZnPedbJH698hjWm5g6+KuR8La9rg4sxBEexPG6Ow==", + "node_modules/@nstudio/trapezedev-project": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@nstudio/trapezedev-project/-/trapezedev-project-7.2.3.tgz", + "integrity": "sha512-EIxEGjwPeMfBVkxvRvf8GY+pD3lfu8CP2sh/AD5eV4fgW/gpgRYE9WKbW4QJLj7WIRgQbn6Oos9NXq1OfTmzhA==", "license": "SEE LICENSE", "dependencies": { "@ionic/utils-fs": "^3.1.5", "@ionic/utils-subprocess": "^2.1.8", "@prettier/plugin-xml": "^2.2.0", - "@trapezedev/gradle-parse": "7.0.10", - "@xmldom/xmldom": "^0.7.5", - "conventional-changelog": "^3.1.4", - "cross-fetch": "^3.1.5", + "@trapezedev/gradle-parse": "7.1.3", + "@xmldom/xmldom": "^0.8.11", "cross-spawn": "^7.0.3", "diff": "^5.1.0", "env-paths": "^3.0.0", @@ -1275,13 +1252,10 @@ "ini": "^2.0.0", "kleur": "^4.1.5", "lodash": "^4.17.21", - "mergexml": "^1.2.3", - "npm-watch": "^0.11.0", "plist": "^3.0.4", "prettier": "^2.7.1", "prompts": "^2.4.2", "replace": "^1.1.0", - "tempy": "^1.0.1", "tmp": "^0.2.1", "ts-node": "^10.2.1", "xcode": "^3.0.1", @@ -1290,7 +1264,7 @@ "yargs": "^17.2.1" } }, - "node_modules/@rigor789/trapezedev-project/node_modules/ini": { + "node_modules/@nstudio/trapezedev-project/node_modules/ini": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", @@ -1299,7 +1273,7 @@ "node": ">=10" } }, - "node_modules/@rigor789/trapezedev-project/node_modules/prettier": { + "node_modules/@nstudio/trapezedev-project/node_modules/prettier": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", @@ -1314,6 +1288,32 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@prettier/plugin-xml": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@prettier/plugin-xml/-/plugin-xml-2.2.0.tgz", + "integrity": "sha512-UWRmygBsyj4bVXvDiqSccwT1kmsorcwQwaIy30yVh8T+Gspx4OlC0shX1y+ZuwXZvgnafmpRYKks0bAu9urJew==", + "license": "MIT", + "dependencies": { + "@xml-tools/parser": "^1.0.11", + "prettier": ">=2.4.0" + } + }, + "node_modules/@rigor789/resolve-package-path": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@rigor789/resolve-package-path/-/resolve-package-path-1.0.7.tgz", + "integrity": "sha512-/JqGCvHpj0PxS9cyZPP5LpiEy1pYszgWor/JTyreHQwLPQQdxO1mUYTtRribYcVosxH7FFs0GJBtJ652nlwKyw==", + "license": "MIT" + }, "node_modules/@sigstore/bundle": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-3.1.0.tgz", @@ -1455,9 +1455,9 @@ "license": "MIT" }, "node_modules/@trapezedev/gradle-parse": { - "version": "7.0.10", - "resolved": "https://registry.npmjs.org/@trapezedev/gradle-parse/-/gradle-parse-7.0.10.tgz", - "integrity": "sha512-k822Is3jGroqOTKF0gAFm80LmhFJWBAyZvNtyuXq6uQUzDDe2fj/gHwixP6VFzlpaWKLP7IuR609Xv8gwJCXyg==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@trapezedev/gradle-parse/-/gradle-parse-7.1.3.tgz", + "integrity": "sha512-WQVF5pEJ5o/mUyvfGTG9nBKx9Te/ilKM3r2IT69GlbaooItT5ao7RyF1MUTBNjHLPk/xpGUY3c6PyVnjDlz0Vw==", "license": "SEE LICENSE" }, "node_modules/@ts-morph/common": { @@ -1674,19 +1674,6 @@ "marked": ">=6.0.0 <12" } }, - "node_modules/@types/marked-terminal/node_modules/chalk": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.0.tgz", - "integrity": "sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/@types/marked-terminal/node_modules/marked": { "version": "11.2.0", "resolved": "https://registry.npmjs.org/marked/-/marked-11.2.0.tgz", @@ -1700,16 +1687,10 @@ "node": ">= 18" } }, - "node_modules/@types/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", - "license": "MIT" - }, "node_modules/@types/node": { - "version": "22.18.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.0.tgz", - "integrity": "sha512-m5ObIqwsUp6BZzyiy4RdZpzWGub9bqLJMvZDD0QMXhxjqMHMENlj+SqF5QxoUwaQNFe+8kz8XM8ZQhqkQPTgMQ==", + "version": "22.18.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.1.tgz", + "integrity": "sha512-rzSDyhn4cYznVG+PCzGe1lwuMYJrcBS1fc3JqSa2PvtABwWo+dZ1ij5OVok3tqfpEBCBoaR4d7upFJk73HRJDw==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" @@ -1730,6 +1711,7 @@ "version": "2.4.4", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true, "license": "MIT" }, "node_modules/@types/npm-package-arg": { @@ -1925,9 +1907,9 @@ } }, "node_modules/@types/shelljs/node_modules/lru-cache": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", - "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==", + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.1.tgz", + "integrity": "sha512-r8LA6i4LP4EeWOhqBaZZjDWwehd1xUJPCJd9Sv300H0ZmcUER4+JPh7bqqZeqs1o5pgtgvXm+d9UGrB5zZGDiQ==", "dev": true, "license": "ISC", "engines": { @@ -2031,16 +2013,6 @@ "minipass": "^4.0.0" } }, - "node_modules/@types/temp": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/@types/temp/-/temp-0.9.4.tgz", - "integrity": "sha512-+VfWIwrlept2VBTj7Y2wQnI/Xfscy1u8Pyj/puYwss6V1IblXn1x7S0S9eFh6KyBolgLCm+rUFzhFAbdkR691g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/tunnel": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/@types/tunnel/-/tunnel-0.0.7.tgz", @@ -2112,10 +2084,9 @@ } }, "node_modules/@xmldom/xmldom": { - "version": "0.7.13", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.13.tgz", - "integrity": "sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==", - "deprecated": "this version is no longer supported, please update to at least 0.8.*", + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", + "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -2168,6 +2139,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==", + "dev": true, "license": "MIT" }, "node_modules/agent-base": { @@ -2179,19 +2151,6 @@ "node": ">= 14" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/amdefine": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", @@ -2526,6 +2485,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "dev": true, "license": "MIT" }, "node_modules/array-slice": { @@ -2538,15 +2498,6 @@ "node": ">=0.10.0" } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", @@ -2557,21 +2508,6 @@ "node": ">=0.10.0" } }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "license": "MIT" - }, "node_modules/assertion-error": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", @@ -3036,32 +2972,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "license": "MIT", - "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/camelcase-keys/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/chai": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", @@ -3093,16 +3003,12 @@ } }, "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.0.tgz", + "integrity": "sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==", "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { "url": "https://github.com/chalk/chalk?sponsor=1" @@ -3203,15 +3109,6 @@ "node": ">= 0.4" } }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/cli-cursor": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", @@ -3249,6 +3146,22 @@ "npm": ">=5.0.0" } }, + "node_modules/cli-highlight/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/cli-highlight/node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -3260,6 +3173,27 @@ "wrap-ansi": "^7.0.0" } }, + "node_modules/cli-highlight/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/cli-highlight/node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -3345,9 +3279,9 @@ } }, "node_modules/cli-truncate/node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.5.0.tgz", + "integrity": "sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==", "dev": true, "license": "MIT" }, @@ -3557,6 +3491,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, "license": "MIT", "dependencies": { "array-ify": "^1.0.0", @@ -3602,50 +3537,49 @@ "dev": true }, "node_modules/conventional-changelog": { - "version": "3.1.25", - "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.25.tgz", - "integrity": "sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-6.0.0.tgz", + "integrity": "sha512-tuUH8H/19VjtD9Ig7l6TQRh+Z0Yt0NZ6w/cCkkyzUbGQTnUEmKfGtkC9gGfVgCfOL1Rzno5NgNF4KY8vR+Jo3w==", + "dev": true, "license": "MIT", "dependencies": { - "conventional-changelog-angular": "^5.0.12", - "conventional-changelog-atom": "^2.0.8", - "conventional-changelog-codemirror": "^2.0.8", - "conventional-changelog-conventionalcommits": "^4.5.0", - "conventional-changelog-core": "^4.2.1", - "conventional-changelog-ember": "^2.0.9", - "conventional-changelog-eslint": "^3.0.9", - "conventional-changelog-express": "^2.0.6", - "conventional-changelog-jquery": "^3.0.11", - "conventional-changelog-jshint": "^2.0.9", - "conventional-changelog-preset-loader": "^2.3.4" + "conventional-changelog-angular": "^8.0.0", + "conventional-changelog-atom": "^5.0.0", + "conventional-changelog-codemirror": "^5.0.0", + "conventional-changelog-conventionalcommits": "^8.0.0", + "conventional-changelog-core": "^8.0.0", + "conventional-changelog-ember": "^5.0.0", + "conventional-changelog-eslint": "^6.0.0", + "conventional-changelog-express": "^5.0.0", + "conventional-changelog-jquery": "^6.0.0", + "conventional-changelog-jshint": "^5.0.0", + "conventional-changelog-preset-loader": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/conventional-changelog-angular": { - "version": "5.0.13", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", - "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.0.0.tgz", + "integrity": "sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==", + "dev": true, "license": "ISC", "dependencies": { - "compare-func": "^2.0.0", - "q": "^1.5.1" + "compare-func": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/conventional-changelog-atom": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz", - "integrity": "sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-5.0.0.tgz", + "integrity": "sha512-WfzCaAvSCFPkznnLgLnfacRAzjgqjLUjvf3MftfsJzQdDICqkOOpcMtdJF3wTerxSpv2IAAjX8doM3Vozqle3g==", + "dev": true, "license": "ISC", - "dependencies": { - "q": "^1.5.1" - }, "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/conventional-changelog-cli": { @@ -3667,89 +3601,7 @@ "node": ">=18" } }, - "node_modules/conventional-changelog-cli/node_modules/@conventional-changelog/git-client": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@conventional-changelog/git-client/-/git-client-1.0.1.tgz", - "integrity": "sha512-PJEqBwAleffCMETaVm/fUgHldzBE35JFk3/9LL6NUA5EXa3qednu+UT6M7E5iBu3zIQZCULYIiZ90fBYHt6xUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/semver": "^7.5.5", - "semver": "^7.5.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "conventional-commits-filter": "^5.0.0", - "conventional-commits-parser": "^6.0.0" - }, - "peerDependenciesMeta": { - "conventional-commits-filter": { - "optional": true - }, - "conventional-commits-parser": { - "optional": true - } - } - }, - "node_modules/conventional-changelog-cli/node_modules/@hutson/parse-repository-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-5.0.0.tgz", - "integrity": "sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/conventional-changelog-cli/node_modules/conventional-changelog": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-6.0.0.tgz", - "integrity": "sha512-tuUH8H/19VjtD9Ig7l6TQRh+Z0Yt0NZ6w/cCkkyzUbGQTnUEmKfGtkC9gGfVgCfOL1Rzno5NgNF4KY8vR+Jo3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "conventional-changelog-angular": "^8.0.0", - "conventional-changelog-atom": "^5.0.0", - "conventional-changelog-codemirror": "^5.0.0", - "conventional-changelog-conventionalcommits": "^8.0.0", - "conventional-changelog-core": "^8.0.0", - "conventional-changelog-ember": "^5.0.0", - "conventional-changelog-eslint": "^6.0.0", - "conventional-changelog-express": "^5.0.0", - "conventional-changelog-jquery": "^6.0.0", - "conventional-changelog-jshint": "^5.0.0", - "conventional-changelog-preset-loader": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/conventional-changelog-cli/node_modules/conventional-changelog-angular": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.0.0.tgz", - "integrity": "sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==", - "dev": true, - "license": "ISC", - "dependencies": { - "compare-func": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/conventional-changelog-cli/node_modules/conventional-changelog-atom": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-5.0.0.tgz", - "integrity": "sha512-WfzCaAvSCFPkznnLgLnfacRAzjgqjLUjvf3MftfsJzQdDICqkOOpcMtdJF3wTerxSpv2IAAjX8doM3Vozqle3g==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=18" - } - }, - "node_modules/conventional-changelog-cli/node_modules/conventional-changelog-codemirror": { + "node_modules/conventional-changelog-codemirror": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-5.0.0.tgz", "integrity": "sha512-8gsBDI5Y3vrKUCxN6Ue8xr6occZ5nsDEc4C7jO/EovFGozx8uttCAyfhRrvoUAWi2WMm3OmYs+0mPJU7kQdYWQ==", @@ -3759,7 +3611,7 @@ "node": ">=18" } }, - "node_modules/conventional-changelog-cli/node_modules/conventional-changelog-conventionalcommits": { + "node_modules/conventional-changelog-conventionalcommits": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-8.0.0.tgz", "integrity": "sha512-eOvlTO6OcySPyyyk8pKz2dP4jjElYunj9hn9/s0OB+gapTO8zwS9UQWrZ1pmF2hFs3vw1xhonOLGcGjy/zgsuA==", @@ -3772,7 +3624,7 @@ "node": ">=18" } }, - "node_modules/conventional-changelog-cli/node_modules/conventional-changelog-core": { + "node_modules/conventional-changelog-core": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-8.0.0.tgz", "integrity": "sha512-EATUx5y9xewpEe10UEGNpbSHRC6cVZgO+hXQjofMqpy+gFIrcGvH3Fl6yk2VFKh7m+ffenup2N7SZJYpyD9evw==", @@ -3794,7 +3646,20 @@ "node": ">=18" } }, - "node_modules/conventional-changelog-cli/node_modules/conventional-changelog-ember": { + "node_modules/conventional-changelog-core/node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/conventional-changelog-ember": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-5.0.0.tgz", "integrity": "sha512-RPflVfm5s4cSO33GH/Ey26oxhiC67akcxSKL8CLRT3kQX2W3dbE19sSOM56iFqUJYEwv9mD9r6k79weWe1urfg==", @@ -3804,7 +3669,7 @@ "node": ">=18" } }, - "node_modules/conventional-changelog-cli/node_modules/conventional-changelog-eslint": { + "node_modules/conventional-changelog-eslint": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-6.0.0.tgz", "integrity": "sha512-eiUyULWjzq+ybPjXwU6NNRflApDWlPEQEHvI8UAItYW/h22RKkMnOAtfCZxMmrcMO1OKUWtcf2MxKYMWe9zJuw==", @@ -3814,7 +3679,7 @@ "node": ">=18" } }, - "node_modules/conventional-changelog-cli/node_modules/conventional-changelog-express": { + "node_modules/conventional-changelog-express": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-5.0.0.tgz", "integrity": "sha512-D8Q6WctPkQpvr2HNCCmwU5GkX22BVHM0r4EW8vN0230TSyS/d6VQJDAxGb84lbg0dFjpO22MwmsikKL++Oo/oQ==", @@ -3824,7 +3689,7 @@ "node": ">=18" } }, - "node_modules/conventional-changelog-cli/node_modules/conventional-changelog-jquery": { + "node_modules/conventional-changelog-jquery": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-6.0.0.tgz", "integrity": "sha512-2kxmVakyehgyrho2ZHBi90v4AHswkGzHuTaoH40bmeNqUt20yEkDOSpw8HlPBfvEQBwGtbE+5HpRwzj6ac2UfA==", @@ -3834,7 +3699,7 @@ "node": ">=18" } }, - "node_modules/conventional-changelog-cli/node_modules/conventional-changelog-jshint": { + "node_modules/conventional-changelog-jshint": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-5.0.0.tgz", "integrity": "sha512-gGNphSb/opc76n2eWaO6ma4/Wqu3tpa2w7i9WYqI6Cs2fncDSI2/ihOfMvXveeTTeld0oFvwMVNV+IYQIk3F3g==", @@ -3847,7 +3712,7 @@ "node": ">=18" } }, - "node_modules/conventional-changelog-cli/node_modules/conventional-changelog-preset-loader": { + "node_modules/conventional-changelog-preset-loader": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-5.0.0.tgz", "integrity": "sha512-SetDSntXLk8Jh1NOAl1Gu5uLiCNSYenB5tm0YVeZKePRIgDW9lQImromTwLa3c/Gae298tsgOM+/CYT9XAl0NA==", @@ -3857,7 +3722,7 @@ "node": ">=18" } }, - "node_modules/conventional-changelog-cli/node_modules/conventional-changelog-writer": { + "node_modules/conventional-changelog-writer": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-8.2.0.tgz", "integrity": "sha512-Y2aW4596l9AEvFJRwFGJGiQjt2sBYTjPD18DdvxX9Vpz0Z7HQ+g1Z+6iYDAm1vR3QOJrDBkRHixHK/+FhkR6Pw==", @@ -3876,7 +3741,7 @@ "node": ">=18" } }, - "node_modules/conventional-changelog-cli/node_modules/conventional-commits-filter": { + "node_modules/conventional-commits-filter": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-5.0.0.tgz", "integrity": "sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==", @@ -3886,7 +3751,7 @@ "node": ">=18" } }, - "node_modules/conventional-changelog-cli/node_modules/conventional-commits-parser": { + "node_modules/conventional-commits-parser": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.2.0.tgz", "integrity": "sha512-uLnoLeIW4XaoFtH37qEcg/SXMJmKF4vi7V0H2rnPueg+VEtFGA/asSCNTcq4M/GQ6QmlzchAEtOoDTtKqWeHag==", @@ -3902,579 +3767,499 @@ "node": ">=18" } }, - "node_modules/conventional-changelog-cli/node_modules/git-raw-commits": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-5.0.0.tgz", - "integrity": "sha512-I2ZXrXeOc0KrCvC7swqtIFXFN+rbjnC7b2T943tvemIOVNl+XP8YnA9UVwqFhzzLClnSA60KR/qEjLpXzs73Qg==", + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", "dev": true, "license": "MIT", - "dependencies": { - "@conventional-changelog/git-client": "^1.0.0", - "meow": "^13.0.0" - }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", "bin": { - "git-raw-commits": "src/cli.js" + "crc32": "bin/crc32.njs" }, "engines": { - "node": ">=18" + "node": ">=0.8" } }, - "node_modules/conventional-changelog-cli/node_modules/git-semver-tags": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-8.0.0.tgz", - "integrity": "sha512-N7YRIklvPH3wYWAR2vysaqGLPRcpwQ0GKdlqTiVN5w1UmCdaeY3K8s6DMKRCh54DDdzyt/OAB6C8jgVtb7Y2Fg==", - "dev": true, + "node_modules/crc32-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", + "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", "license": "MIT", "dependencies": { - "@conventional-changelog/git-client": "^1.0.0", - "meow": "^13.0.0" - }, - "bin": { - "git-semver-tags": "src/cli.js" + "crc-32": "^1.2.0", + "readable-stream": "^4.0.0" }, "engines": { - "node": ">=18" + "node": ">= 14" } }, - "node_modules/conventional-changelog-cli/node_modules/hosted-git-info": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", - "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", - "dev": true, - "license": "ISC", + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", "dependencies": { - "lru-cache": "^10.0.1" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">= 8" } }, - "node_modules/conventional-changelog-cli/node_modules/normalize-package-data": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", - "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/cross-spawn/node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", "dependencies": { - "hosted-git-info": "^7.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">= 8" } }, - "node_modules/conventional-changelog-cli/node_modules/parse-json": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz", - "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==", + "node_modules/csproj2ts": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/csproj2ts/-/csproj2ts-1.1.0.tgz", + "integrity": "sha512-sk0RTT51t4lUNQ7UfZrqjQx7q4g0m3iwNA6mvyh7gLsgQYvwKzfdyoAgicC9GqJvkoIkU0UmndV9c7VZ8pJ45Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.26.2", - "index-to-position": "^1.1.0", - "type-fest": "^4.39.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "es6-promise": "^4.1.1", + "lodash": "^4.17.4", + "semver": "^5.4.1", + "xml2js": "^0.4.19" } }, - "node_modules/conventional-changelog-cli/node_modules/read-pkg": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", - "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", + "node_modules/csproj2ts/node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/csproj2ts/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/csproj2ts/node_modules/xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", "dev": true, "license": "MIT", "dependencies": { - "@types/normalize-package-data": "^2.4.3", - "normalize-package-data": "^6.0.0", - "parse-json": "^8.0.0", - "type-fest": "^4.6.0", - "unicorn-magic": "^0.1.0" + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4.0.0" } }, - "node_modules/conventional-changelog-cli/node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "node_modules/csproj2ts/node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT", "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4.0" } }, - "node_modules/conventional-changelog-codemirror": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz", - "integrity": "sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==", - "license": "ISC", - "dependencies": { - "q": "^1.5.1" + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" }, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/conventional-changelog-conventionalcommits": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.3.tgz", - "integrity": "sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==", - "license": "ISC", - "dependencies": { - "compare-func": "^2.0.0", - "lodash": "^4.17.15", - "q": "^1.5.1" - }, + "node_modules/date-format": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=4.0" } }, - "node_modules/conventional-changelog-core": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", - "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", + "node_modules/dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "dev": true, "license": "MIT", - "dependencies": { - "add-stream": "^1.0.0", - "conventional-changelog-writer": "^5.0.0", - "conventional-commits-parser": "^3.2.0", - "dateformat": "^3.0.0", - "get-pkg-repo": "^4.0.0", - "git-raw-commits": "^2.0.8", - "git-remote-origin-url": "^2.0.0", - "git-semver-tags": "^4.1.1", - "lodash": "^4.17.15", - "normalize-package-data": "^3.0.0", - "q": "^1.5.1", - "read-pkg": "^3.0.0", - "read-pkg-up": "^3.0.0", - "through2": "^4.0.0" - }, "engines": { - "node": ">=10" + "node": "*" } }, - "node_modules/conventional-changelog-ember": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz", - "integrity": "sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==", - "license": "ISC", + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", "dependencies": { - "q": "^1.5.1" + "ms": "^2.1.3" }, "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-eslint": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz", - "integrity": "sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==", - "license": "ISC", - "dependencies": { - "q": "^1.5.1" + "node": ">=6.0" }, - "engines": { - "node": ">=10" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/conventional-changelog-express": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz", - "integrity": "sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==", - "license": "ISC", - "dependencies": { - "q": "^1.5.1" - }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "license": "MIT", "engines": { "node": ">=10" - } - }, - "node_modules/conventional-changelog-jquery": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz", - "integrity": "sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==", - "license": "ISC", - "dependencies": { - "q": "^1.5.1" }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-changelog-jshint": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz", - "integrity": "sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==", - "license": "ISC", - "dependencies": { - "compare-func": "^2.0.0", - "q": "^1.5.1" - }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=0.10" } }, - "node_modules/conventional-changelog-preset-loader": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", - "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, "license": "MIT", "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/conventional-changelog-writer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", - "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "license": "MIT", "dependencies": { - "conventional-commits-filter": "^2.0.7", - "dateformat": "^3.0.0", - "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "semver": "^6.0.0", - "split": "^1.0.0", - "through2": "^4.0.0" - }, - "bin": { - "conventional-changelog-writer": "cli.js" + "clone": "^1.0.2" }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-changelog-writer/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/conventional-changelog-writer/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "license": "ISC" - }, - "node_modules/conventional-changelog-writer/node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "license": "MIT" - }, - "node_modules/conventional-changelog-writer/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/conventional-changelog-writer/node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "license": "MIT", - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.4.0" } }, - "node_modules/conventional-changelog-writer/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "dev": true, "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/conventional-changelog-writer/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==", + "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "repeating": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/conventional-changelog-writer/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg": { + "node_modules/diff": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, "license": "MIT", "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "is-obj": "^2.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "license": "MIT", "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.4" } }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "license": "(MIT OR CC0-1.0)", + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/email-validator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz", + "integrity": "sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==", "engines": { - "node": ">=8" + "node": ">4.0" } }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } + "node_modules/emojilib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", + "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", + "license": "MIT" }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" } }, - "node_modules/conventional-changelog-writer/node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", "license": "MIT", "dependencies": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, + "once": "^1.4.0" + } + }, + "node_modules/env-paths": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz", + "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==", + "license": "MIT", "engines": { - "node": ">= 0.4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/conventional-changelog-writer/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-changelog-writer/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "license": "(MIT OR CC0-1.0)", + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-changelog-writer/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "license": "ISC", + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "license": "MIT" + }, + "node_modules/error": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/error/-/error-7.2.1.tgz", + "integrity": "sha512-fo9HBvWnx3NGUKMvMwB/CBCMMrfEJgbDTVDEkPygA3Bdd3lM1OyCd+rbQ8BwnpF6GdVeOLDNmyL4N5Bg80ZvdA==", + "dev": true, + "dependencies": { + "string-template": "~0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 0.4" } }, - "node_modules/conventional-commits-filter": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", - "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "license": "MIT", - "dependencies": { - "lodash.ismatch": "^4.4.0", - "modify-values": "^1.0.0" - }, "engines": { - "node": ">=10" + "node": ">= 0.4" } }, - "node_modules/conventional-commits-parser": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", - "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "license": "MIT", "dependencies": { - "is-text-path": "^1.0.1", - "JSONStream": "^1.0.4", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "conventional-commits-parser": "cli.js" + "es-errors": "^1.3.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" } }, - "node_modules/conventional-commits-parser/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/conventional-commits-parser/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "license": "ISC" - }, - "node_modules/conventional-commits-parser/node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "node_modules/es6-promise": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-0.1.2.tgz", + "integrity": "sha512-FkHS6f1w/2Nj2kO8NsnLj2ZuCvcXHEMhZfmZSIBtY+DY2mPDDWxnSLG9CyygFW0hrb5RhOXVOvHpEUHS/6nkhQ==", + "dev": true, "license": "MIT" }, - "node_modules/conventional-commits-parser/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/conventional-commits-parser/node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, "license": "MIT", - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, "engines": { "node": ">=10" }, @@ -4482,1948 +4267,499 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-commits-parser/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", + "node_modules/escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "p-try": "^2.0.0" + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" }, "engines": { - "node": ">=6" + "node": ">=0.12.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "source-map": "~0.2.0" } }, - "node_modules/conventional-commits-parser/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" + "node_modules/escodegen/node_modules/esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/conventional-commits-parser/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "license": "MIT", + "node_modules/escodegen/node_modules/source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==", + "dev": true, + "optional": true, "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "amdefine": ">=0.0.4" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.8.0" } }, - "node_modules/conventional-commits-parser/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "license": "MIT", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/conventional-commits-parser/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "license": "MIT", - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, + "node_modules/estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==", + "dev": true, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/conventional-commits-parser/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "license": "(MIT OR CC0-1.0)", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/conventional-commits-parser/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/conventional-commits-parser/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "node_modules/conventional-commits-parser/node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/conventional-commits-parser/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/conventional-commits-parser/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/conventional-commits-parser/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "license": "MIT" - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "license": "MIT" - }, - "node_modules/crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "license": "Apache-2.0", - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/crc32-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", - "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", - "license": "MIT", - "dependencies": { - "crc-32": "^1.2.0", - "readable-stream": "^4.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "license": "MIT" - }, - "node_modules/cross-fetch": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", - "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", - "license": "MIT", - "dependencies": { - "node-fetch": "^2.7.0" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cross-spawn/node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/csproj2ts": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/csproj2ts/-/csproj2ts-1.1.0.tgz", - "integrity": "sha512-sk0RTT51t4lUNQ7UfZrqjQx7q4g0m3iwNA6mvyh7gLsgQYvwKzfdyoAgicC9GqJvkoIkU0UmndV9c7VZ8pJ45Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "es6-promise": "^4.1.1", - "lodash": "^4.17.4", - "semver": "^5.4.1", - "xml2js": "^0.4.19" - } - }, - "node_modules/csproj2ts/node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true, - "license": "MIT" - }, - "node_modules/csproj2ts/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/csproj2ts/node_modules/xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", - "dev": true, - "license": "MIT", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/csproj2ts/node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/dargs": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", - "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/date-format": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", - "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", - "license": "MIT", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "license": "MIT", - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decamelize-keys/node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/deep-eql": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", - "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "license": "MIT", - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/del/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/del/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/del/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/del/node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/del/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==", - "dev": true, - "license": "MIT", - "dependencies": { - "repeating": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/dezalgo": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", - "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", - "license": "ISC", - "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "node_modules/diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dir-glob/node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "license": "MIT", - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "license": "MIT" - }, - "node_modules/email-validator": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz", - "integrity": "sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==", - "engines": { - "node": ">4.0" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/emojilib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", - "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", - "license": "MIT" - }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "license": "MIT", - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/env-paths": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz", - "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/environment": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", - "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "license": "MIT" - }, - "node_modules/error": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/error/-/error-7.2.1.tgz", - "integrity": "sha512-fo9HBvWnx3NGUKMvMwB/CBCMMrfEJgbDTVDEkPygA3Bdd3lM1OyCd+rbQ8BwnpF6GdVeOLDNmyL4N5Bg80ZvdA==", - "dev": true, - "dependencies": { - "string-template": "~0.2.1" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es6-promise": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-0.1.2.tgz", - "integrity": "sha512-FkHS6f1w/2Nj2kO8NsnLj2ZuCvcXHEMhZfmZSIBtY+DY2mPDDWxnSLG9CyygFW0hrb5RhOXVOvHpEUHS/6nkhQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/escodegen": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", - "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esprima": "^2.7.1", - "estraverse": "^1.9.1", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=0.12.0" - }, - "optionalDependencies": { - "source-map": "~0.2.0" - } - }, - "node_modules/escodegen/node_modules/esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", - "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==", - "dev": true, - "optional": true, - "dependencies": { - "amdefine": ">=0.0.4" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/estraverse": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/eventemitter2": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "integrity": "sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "dev": true, - "license": "MIT" - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/execa/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/execa/node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/execa/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/execa/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/exif-parser": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", - "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==" - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/expand-brackets/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/exponential-backoff": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.2.tgz", - "integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==", - "license": "Apache-2.0" - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true, - "license": "MIT" - }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha512-Xhj93RXbMSq8urNCUq4p9l0P6hnySJ/7YNRhYNug0bLOuii7pKO7xQFb5mx9xZXWCar88pLPb805PvUkwrLZpQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/file-sync-cmp": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz", - "integrity": "sha512-0k45oWBokCqh2MOexeYKpyqmGKG+8mQ2Wd8iawx+uWd/weWJQAZ6SoPybagdCI4xFisag8iAR77WPm4h3pTfxA==", - "dev": true, - "license": "MIT" - }, - "node_modules/file-type": { - "version": "16.5.4", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", - "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", - "license": "MIT", - "dependencies": { - "readable-web-to-node-stream": "^3.0.0", - "strtok3": "^6.2.4", - "token-types": "^4.1.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" - } - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-up-simple": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz", - "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/findup-sync": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", - "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.3", - "micromatch": "^4.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", - "dev": true, - "license": "MIT", - "dependencies": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "license": "BSD-3-Clause", - "bin": { - "flat": "cli.js" - } - }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "license": "ISC" - }, - "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/font-finder": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/font-finder/-/font-finder-1.1.0.tgz", - "integrity": "sha512-wpCL2uIbi6GurJbU7ZlQ3nGd61Ho+dSU6U83/xJT5UPFfN35EeCW/rOtS+5k+IuEZu2SYmHzDIPL9eA5tSYRAw==", - "license": "MIT", - "dependencies": { - "get-system-fonts": "^2.0.0", - "promise-stream-reader": "^1.0.1" - }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", "engines": { - "node": ">8.0.0" + "node": ">=6" } }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "node_modules/eventemitter2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", "dev": true, + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "license": "MIT", - "dependencies": { - "for-in": "^1.0.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=0.8.x" } }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "license": "ISC", + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">=14" + "node": ">=16.17" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "license": "ISC", + "node_modules/execa/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=14" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/form-data": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", - "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/formidable": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz", - "integrity": "sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==", + "node_modules/execa/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, "license": "MIT", "dependencies": { - "@paralleldrive/cuid2": "^2.2.2", - "dezalgo": "^1.0.4", - "once": "^1.4.0" + "path-key": "^4.0.0" }, "engines": { - "node": ">=14.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://ko-fi.com/tunnckoCore/commissions" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "node_modules/execa/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, "license": "MIT", - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "license": "MIT", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, "engines": { - "node": ">=10" - } - }, - "node_modules/fs-minipass": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", - "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" + "node": ">=12" }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fs-minipass/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "node_modules/execa/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, "license": "ISC", "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "license": "ISC" + "node_modules/exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==" }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8.0" } }, - "node_modules/gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", "dev": true, "license": "MIT", "dependencies": { - "globule": "^1.0.0" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-east-asian-width": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", - "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/get-pkg-repo": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", - "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, "license": "MIT", "dependencies": { - "@hutson/parse-repository-url": "^3.0.0", - "hosted-git-info": "^4.0.0", - "through2": "^2.0.0", - "yargs": "^16.2.0" - }, - "bin": { - "get-pkg-repo": "src/cli.js" + "is-descriptor": "^0.1.0" }, "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-pkg-repo/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "node": ">=0.10.0" } }, - "node_modules/get-pkg-repo/node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "license": "ISC", + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" + "is-extendable": "^0.1.0" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/get-pkg-repo/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "license": "ISC", + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=10" + "node": ">= 0.4" } }, - "node_modules/get-pkg-repo/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "node_modules/expand-brackets/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/get-pkg-repo/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, "license": "MIT" }, - "node_modules/get-pkg-repo/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, "license": "MIT", "dependencies": { - "safe-buffer": "~5.1.0" + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/get-pkg-repo/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "license": "MIT", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } + "node_modules/exponential-backoff": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.2.tgz", + "integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==", + "license": "Apache-2.0" }, - "node_modules/get-pkg-repo/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC" + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true, + "license": "MIT" }, - "node_modules/get-pkg-repo/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, "license": "MIT", "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/get-pkg-repo/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "license": "ISC", + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, "license": "MIT", "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" + "is-descriptor": "^1.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=0.10.0" } }, - "node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "license": "MIT", - "engines": { - "node": ">=16" + "dependencies": { + "is-extendable": "^0.1.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/get-system-fonts": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-system-fonts/-/get-system-fonts-2.0.2.tgz", - "integrity": "sha512-zzlgaYnHMIEgHRrfC7x0Qp0Ylhw/sHpM6MHXeVBTYIsvGf5GpbnClB+Q6rAPdn+0gd2oZZIo6Tj3EaWrt4VhDQ==", + "node_modules/extglob/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, "license": "MIT", "engines": { - "node": ">8.0.0" + "node": ">=0.10.0" } }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", - "dev": true, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8.6.0" } }, - "node_modules/getobject": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/getobject/-/getobject-1.0.2.tgz", - "integrity": "sha512-2zblDBaFcb3rB4rF77XVnuINOE2h2k/OnqXAiy0IrTxUfV1iFp3la33oAQVY9pCpWU268WFYVt2t71hlMuLsOg==", + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true, - "engines": { - "node": ">=10" + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" } }, - "node_modules/gifwrap": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.10.1.tgz", - "integrity": "sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw==", + "node_modules/faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha512-Xhj93RXbMSq8urNCUq4p9l0P6hnySJ/7YNRhYNug0bLOuii7pKO7xQFb5mx9xZXWCar88pLPb805PvUkwrLZpQ==", + "dev": true, "license": "MIT", "dependencies": { - "image-q": "^4.0.0", - "omggif": "^1.0.10" + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.4.0" } }, - "node_modules/git-raw-commits": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", - "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", + "node_modules/file-sync-cmp": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz", + "integrity": "sha512-0k45oWBokCqh2MOexeYKpyqmGKG+8mQ2Wd8iawx+uWd/weWJQAZ6SoPybagdCI4xFisag8iAR77WPm4h3pTfxA==", + "dev": true, + "license": "MIT" + }, + "node_modules/file-type": { + "version": "16.5.4", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", + "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", "license": "MIT", "dependencies": { - "dargs": "^7.0.0", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "git-raw-commits": "cli.js" + "readable-web-to-node-stream": "^3.0.0", + "strtok3": "^6.2.4", + "token-types": "^4.1.1" }, "engines": { "node": ">=10" - } - }, - "node_modules/git-raw-commits/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" } }, - "node_modules/git-raw-commits/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "license": "ISC" - }, - "node_modules/git-raw-commits/node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "license": "MIT" + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "license": "MIT", + "optional": true }, - "node_modules/git-raw-commits/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" + "to-regex-range": "^5.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/git-raw-commits/node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, "license": "MIT", "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { "node": ">=10" @@ -6432,435 +4768,414 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/git-raw-commits/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/find-up-simple": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz", + "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==", + "dev": true, "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, "engines": { - "node": ">=6" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/git-raw-commits/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/findup-sync": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", + "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==", + "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "detect-file": "^1.0.0", + "is-glob": "^4.0.3", + "micromatch": "^4.0.4", + "resolve-dir": "^1.0.1" }, "engines": { - "node": ">=8" + "node": ">= 10.13.0" } }, - "node_modules/git-raw-commits/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "node_modules/fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.10" } }, - "node_modules/git-raw-commits/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "node_modules/flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true, "license": "MIT", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, "engines": { - "node": ">=8" + "node": ">= 0.10" } }, - "node_modules/git-raw-commits/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "license": "MIT", - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" } }, - "node_modules/git-raw-commits/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "license": "(MIT OR CC0-1.0)", + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/git-raw-commits/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "license": "BSD-2-Clause", + "node_modules/font-finder": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/font-finder/-/font-finder-1.1.0.tgz", + "integrity": "sha512-wpCL2uIbi6GurJbU7ZlQ3nGd61Ho+dSU6U83/xJT5UPFfN35EeCW/rOtS+5k+IuEZu2SYmHzDIPL9eA5tSYRAw==", + "license": "MIT", "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "get-system-fonts": "^2.0.0", + "promise-stream-reader": "^1.0.1" + }, + "engines": { + "node": ">8.0.0" } }, - "node_modules/git-raw-commits/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "license": "(MIT OR CC0-1.0)", + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/git-raw-commits/node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "node_modules/for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", + "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "for-in": "^1.0.1" }, - "bin": { - "resolve": "bin/resolve" + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/git-raw-commits/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "license": "ISC", - "bin": { - "semver": "bin/semver" + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/git-raw-commits/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "license": "(MIT OR CC0-1.0)", + "node_modules/form-data": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, "engines": { - "node": ">=10" + "node": ">= 6" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "license": "MIT", + "dependencies": { + "map-cache": "^0.2.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/git-raw-commits/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "license": "ISC", + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, "engines": { "node": ">=10" } }, - "node_modules/git-remote-origin-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", - "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", - "license": "MIT", + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "license": "ISC", "dependencies": { - "gitconfiglocal": "^1.0.0", - "pify": "^2.3.0" + "minipass": "^7.0.3" }, "engines": { - "node": ">=4" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/git-semver-tags": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", - "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", - "license": "MIT", - "dependencies": { - "meow": "^8.0.0", - "semver": "^6.0.0" - }, - "bin": { - "git-semver-tags": "cli.js" - }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/git-semver-tags/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=8" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/git-semver-tags/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "license": "ISC" - }, - "node_modules/git-semver-tags/node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "license": "MIT" + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/git-semver-tags/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" + "globule": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 4.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/git-semver-tags/node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "node_modules/get-east-asian-width": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.1.tgz", + "integrity": "sha512-R1QfovbPsKmosqTnPoRFiJ7CF9MLRgb53ChvMZm+r4p76/+8yKDy17qLL2PKInORy2RkZZekuK0efYgmzTkXyQ==", + "dev": true, "license": "MIT", - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/git-semver-tags/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { - "node": ">=6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/git-semver-tags/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/git-semver-tags/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, "engines": { - "node": ">=8" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/git-semver-tags/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "node_modules/get-system-fonts": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-system-fonts/-/get-system-fonts-2.0.2.tgz", + "integrity": "sha512-zzlgaYnHMIEgHRrfC7x0Qp0Ylhw/sHpM6MHXeVBTYIsvGf5GpbnClB+Q6rAPdn+0gd2oZZIo6Tj3EaWrt4VhDQ==", "license": "MIT", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, "engines": { - "node": ">=8" + "node": ">8.0.0" } }, - "node_modules/git-semver-tags/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true, "license": "MIT", - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/git-semver-tags/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "license": "(MIT OR CC0-1.0)", + "node_modules/getobject": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/getobject/-/getobject-1.0.2.tgz", + "integrity": "sha512-2zblDBaFcb3rB4rF77XVnuINOE2h2k/OnqXAiy0IrTxUfV1iFp3la33oAQVY9pCpWU268WFYVt2t71hlMuLsOg==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "license": "BSD-2-Clause", + "node_modules/gifwrap": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.10.1.tgz", + "integrity": "sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw==", + "license": "MIT", "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" + "image-q": "^4.0.0", + "omggif": "^1.0.10" } }, - "node_modules/git-semver-tags/node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "node_modules/git-raw-commits": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-5.0.0.tgz", + "integrity": "sha512-I2ZXrXeOc0KrCvC7swqtIFXFN+rbjnC7b2T943tvemIOVNl+XP8YnA9UVwqFhzzLClnSA60KR/qEjLpXzs73Qg==", + "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "@conventional-changelog/git-client": "^1.0.0", + "meow": "^13.0.0" }, "bin": { - "resolve": "bin/resolve" + "git-raw-commits": "src/cli.js" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=18" } }, - "node_modules/git-semver-tags/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", + "node_modules/git-semver-tags": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-8.0.0.tgz", + "integrity": "sha512-N7YRIklvPH3wYWAR2vysaqGLPRcpwQ0GKdlqTiVN5w1UmCdaeY3K8s6DMKRCh54DDdzyt/OAB6C8jgVtb7Y2Fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@conventional-changelog/git-client": "^1.0.0", + "meow": "^13.0.0" + }, "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/git-semver-tags/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" + "git-semver-tags": "src/cli.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/git-semver-tags/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "license": "ISC", "engines": { - "node": ">=10" - } - }, - "node_modules/gitconfiglocal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", - "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", - "license": "BSD", - "dependencies": { - "ini": "^1.3.2" + "node": ">=18" } }, - "node_modules/gitconfiglocal/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "license": "ISC" - }, "node_modules/glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", @@ -6970,30 +5285,10 @@ "dev": true, "license": "ISC", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" + "isexe": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "which": "bin/which" } }, "node_modules/globule": { @@ -7316,6 +5611,46 @@ "node": ">=10" } }, + "node_modules/grunt-legacy-log-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/grunt-legacy-log-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/grunt-legacy-log-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/grunt-legacy-util": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-2.0.1.tgz", @@ -7393,6 +5728,29 @@ "node": ">=8" } }, + "node_modules/grunt-shell/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/grunt-shell/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/grunt-template": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/grunt-template/-/grunt-template-1.0.0.tgz", @@ -7750,16 +6108,6 @@ "concat-map": "0.0.1" } }, - "node_modules/grunt/node_modules/dateformat": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", - "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, "node_modules/grunt/node_modules/glob": { "version": "7.1.7", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", @@ -7812,6 +6160,7 @@ "version": "4.7.8", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, "license": "MIT", "dependencies": { "minimist": "^1.2.5", @@ -7833,20 +6182,12 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -7871,12 +6212,13 @@ } }, "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, "node_modules/has-symbols": { @@ -8137,21 +6479,6 @@ ], "license": "BSD-3-Clause" }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", - "license": "ISC" - }, "node_modules/ignore-walk": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-8.0.0.tgz", @@ -8203,15 +6530,6 @@ "node": ">=0.8.19" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/index-to-position": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.1.0.tgz", @@ -8230,6 +6548,7 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, "license": "ISC", "dependencies": { "once": "^1.3.0", @@ -8290,18 +6609,6 @@ "ios-mobileprovision-finder": "src/ios-mobileprovision-finder.js" } }, - "node_modules/ios-mobileprovision-finder/node_modules/chalk": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.0.tgz", - "integrity": "sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==", - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/ios-sim-portable": { "version": "4.5.1", "resolved": "https://registry.npmjs.org/ios-sim-portable/-/ios-sim-portable-4.5.1.tgz", @@ -8531,9 +6838,9 @@ } }, "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", "license": "MIT" }, "node_modules/is-binary-path": { @@ -8560,6 +6867,7 @@ "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, "license": "MIT", "dependencies": { "hasown": "^2.0.2" @@ -8691,24 +6999,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -8762,18 +7053,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-text-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", - "license": "MIT", - "dependencies": { - "text-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-unc-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", @@ -8930,16 +7209,6 @@ "node": "*" } }, - "node_modules/istanbul/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/istanbul/node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -8986,19 +7255,6 @@ "nopt": "bin/nopt.js" } }, - "node_modules/istanbul/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^1.0.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/istanbul/node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -9075,6 +7331,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, "license": "MIT" }, "node_modules/js-yaml": { @@ -9098,12 +7355,6 @@ "dev": true, "license": "The Software shall be used for Good, not Evil. (see LICENSE)" }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "license": "MIT" - }, "node_modules/json-parse-even-better-errors": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-4.0.0.tgz", @@ -9122,12 +7373,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "license": "ISC" - }, "node_modules/jsonfile": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", @@ -9149,22 +7394,6 @@ ], "license": "MIT" }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "license": "(MIT OR Apache-2.0)", - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, - "engines": { - "node": "*" - } - }, "node_modules/just-diff": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-6.0.2.tgz", @@ -9188,6 +7417,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -9202,35 +7432,6 @@ "node": ">=6" } }, - "node_modules/ky": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ky/-/ky-1.9.1.tgz", - "integrity": "sha512-WGzpBn57klhxsqRTEABAqF4tqTtqCuxoTIv9m6nIZtMMFTVcrHp7bRDWblzFIfqkb47+OhTztOgHn6A4xItmqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sindresorhus/ky?sponsor=1" - } - }, - "node_modules/latest-version": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-9.0.0.tgz", - "integrity": "sha512-7W0vV3rqv5tokqkBAFV1LbR7HPOWzXQDpDgEuib/aJ1jsZZx6x3c2mBI+TJhJzOhkGeaLbCKEHXEXLfirtG2JA==", - "dev": true, - "license": "MIT", - "dependencies": { - "package-json": "^10.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/lazystream": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", @@ -9357,12 +7558,6 @@ "url": "https://github.com/sponsors/antonk52" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "license": "MIT" - }, "node_modules/lint-staged": { "version": "15.4.3", "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.4.3.tgz", @@ -9391,19 +7586,6 @@ "url": "https://opencollective.com/lint-staged" } }, - "node_modules/lint-staged/node_modules/chalk": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.0.tgz", - "integrity": "sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/listr2": { "version": "8.3.3", "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.3.3.tgz", @@ -9436,9 +7618,9 @@ } }, "node_modules/listr2/node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.5.0.tgz", + "integrity": "sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==", "dev": true, "license": "MIT" }, @@ -9501,39 +7683,6 @@ "dev": true, "license": "MIT" }, - "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -9556,32 +7705,63 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "license": "MIT" }, - "node_modules/lodash.ismatch": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", - "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", - "license": "MIT" - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "license": "MIT" }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "license": "MIT", "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/log-update": { @@ -9618,20 +7798,20 @@ } }, "node_modules/log-update/node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.5.0.tgz", + "integrity": "sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==", "dev": true, "license": "MIT" }, "node_modules/log-update/node_modules/is-fullwidth-code-point": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", - "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", + "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", "dev": true, "license": "MIT", "dependencies": { - "get-east-asian-width": "^1.0.0" + "get-east-asian-width": "^1.3.1" }, "engines": { "node": ">=18" @@ -9798,18 +7978,6 @@ "node": ">=0.10.0" } }, - "node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", @@ -9856,18 +8024,6 @@ "marked": ">=1 <16" } }, - "node_modules/marked-terminal/node_modules/chalk": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.0.tgz", - "integrity": "sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==", - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -9894,7 +8050,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, "license": "MIT" }, "node_modules/merge2": { @@ -9906,26 +8061,6 @@ "node": ">= 8" } }, - "node_modules/mergexml": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/mergexml/-/mergexml-1.2.4.tgz", - "integrity": "sha512-yiOlDqcVCz7AG1eSboonc18FTlfqDEKYfGoAV3Lul98u6YRV/s0kjtf4bjk47t0hLTFJR0BSYMd6BpmX3xDjNQ==", - "license": "ISC", - "dependencies": { - "@xmldom/xmldom": "^0.7.0", - "formidable": "^3.5.1", - "xpath": "0.0.27" - } - }, - "node_modules/mergexml/node_modules/xpath": { - "version": "0.0.27", - "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.27.tgz", - "integrity": "sha512-fg03WRxtkCV6ohClePNAECYsmpKKTv5L8y/X3Dn1hQrec3POx2jHZ/0P2qQ6HvsrU1BmeqXcof3NGGueG6LxwQ==", - "license": "MIT", - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", @@ -9998,15 +8133,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/minimatch": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", @@ -10026,34 +8152,12 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "license": "MIT", - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/minimist-options/node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/minipass": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", @@ -10346,6 +8450,16 @@ "fsevents": "~2.3.2" } }, + "node_modules/mocha/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/mocha/node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -10414,15 +8528,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/modify-values": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", - "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -10561,6 +8666,7 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, "license": "MIT" }, "node_modules/nice-try": { @@ -10571,228 +8677,64 @@ }, "node_modules/nise": { "version": "6.1.1", - "resolved": "https://registry.npmjs.org/nise/-/nise-6.1.1.tgz", - "integrity": "sha512-aMSAzLVY7LyeM60gvBS423nBmIPP+Wy7St7hsb+8/fc1HmeoHJfLO8CKse4u3BtOZvQLJghYPI2i/1WZrEj5/g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1", - "@sinonjs/fake-timers": "^13.0.1", - "@sinonjs/text-encoding": "^0.7.3", - "just-extend": "^6.2.0", - "path-to-regexp": "^8.1.0" - } - }, - "node_modules/node-emoji": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.2.0.tgz", - "integrity": "sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==", - "license": "MIT", - "dependencies": { - "@sindresorhus/is": "^4.6.0", - "char-regex": "^1.0.2", - "emojilib": "^2.4.0", - "skin-tone": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-gyp": { - "version": "11.4.2", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-11.4.2.tgz", - "integrity": "sha512-3gD+6zsrLQH7DyYOUIutaauuXrcyxeTPyQuZQCQoNPZMHMMS5m4y0xclNpvYzoK3VNzuyxT6eF4mkIL4WSZ1eQ==", - "license": "MIT", - "dependencies": { - "env-paths": "^2.2.0", - "exponential-backoff": "^3.1.1", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^14.0.3", - "nopt": "^8.0.0", - "proc-log": "^5.0.0", - "semver": "^7.3.5", - "tar": "^7.4.3", - "tinyglobby": "^0.2.12", - "which": "^5.0.0" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/node-gyp/node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/nodemon": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.3.tgz", - "integrity": "sha512-7jH/NXbFPxVaMwmBCC2B9F/V6X1VkEdNgx3iu9jji8WxWcvhMWkmhNWhI5077zknOnZnBzba9hZP6bCPJLSReQ==", - "license": "MIT", - "dependencies": { - "chokidar": "^3.5.2", - "debug": "^4", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.1.2", - "pstree.remy": "^1.1.8", - "semver": "^7.5.3", - "simple-update-notifier": "^2.0.0", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5" - }, - "bin": { - "nodemon": "bin/nodemon.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nodemon" - } - }, - "node_modules/nodemon/node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/nodemon/node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/nodemon/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/nodemon/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/nodemon/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/nodemon/node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "license": "MIT", + "resolved": "https://registry.npmjs.org/nise/-/nise-6.1.1.tgz", + "integrity": "sha512-aMSAzLVY7LyeM60gvBS423nBmIPP+Wy7St7hsb+8/fc1HmeoHJfLO8CKse4u3BtOZvQLJghYPI2i/1WZrEj5/g==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" + "@sinonjs/commons": "^3.0.1", + "@sinonjs/fake-timers": "^13.0.1", + "@sinonjs/text-encoding": "^0.7.3", + "just-extend": "^6.2.0", + "path-to-regexp": "^8.1.0" } }, - "node_modules/nodemon/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", + "node_modules/node-emoji": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.2.0.tgz", + "integrity": "sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "@sindresorhus/is": "^4.6.0", + "char-regex": "^1.0.2", + "emojilib": "^2.4.0", + "skin-tone": "^2.0.0" }, "engines": { - "node": "*" + "node": ">=18" } }, - "node_modules/nodemon/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/node-gyp": { + "version": "11.4.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-11.4.2.tgz", + "integrity": "sha512-3gD+6zsrLQH7DyYOUIutaauuXrcyxeTPyQuZQCQoNPZMHMMS5m4y0xclNpvYzoK3VNzuyxT6eF4mkIL4WSZ1eQ==", "license": "MIT", "dependencies": { - "picomatch": "^2.2.1" + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^14.0.3", + "nopt": "^8.0.0", + "proc-log": "^5.0.0", + "semver": "^7.3.5", + "tar": "^7.4.3", + "tinyglobby": "^0.2.12", + "which": "^5.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": ">=8.10.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/nodemon/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/node-gyp/node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/nopt": { @@ -10820,50 +8762,33 @@ } }, "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", + "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", + "dev": true, "license": "BSD-2-Clause", "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" + "hosted-git-info": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" }, "engines": { - "node": ">=10" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/normalize-package-data/node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-package-data/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dev": true, "license": "ISC", "dependencies": { - "yallist": "^4.0.0" + "lru-cache": "^10.0.1" }, "engines": { - "node": ">=10" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/normalize-package-data/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC" - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -10997,19 +8922,6 @@ "node": ">=4" } }, - "node_modules/npm-watch": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/npm-watch/-/npm-watch-0.11.0.tgz", - "integrity": "sha512-wAOd0moNX2kSA2FNvt8+7ORwYaJpQ1ZoWjUYdb1bBCxq4nkWuU0IiJa9VpVxrj5Ks+FGXQd62OC/Bjk0aSr+dg==", - "license": "MIT", - "dependencies": { - "nodemon": "^2.0.7", - "through2": "^4.0.2" - }, - "bin": { - "npm-watch": "cli.js" - } - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -11232,6 +9144,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/ora/node_modules/cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -11244,6 +9172,15 @@ "node": ">=8" } }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/ora/node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", @@ -11281,10 +9218,23 @@ "node": ">=8" } }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -11294,16 +9244,18 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/osenv": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", - "integrity": "sha512-W6FhbLxEWdiyX2/fCl2YBZUJOYWaCHJa+jJwUVMX0iFYJmwyd0uzKx4NxFdj3xo9C0pumQ6G/fvd1MbNhsqQbQ==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "deprecated": "This package is no longer supported.", + "dev": true, "license": "ISC", "dependencies": { "os-homedir": "^1.0.0", @@ -11578,16 +9530,21 @@ } }, "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz", + "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==", + "dev": true, "license": "MIT", "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "@babel/code-frame": "^7.26.2", + "index-to-position": "^1.1.0", + "type-fest": "^4.39.1" }, "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/parse-passwd": { @@ -11657,6 +9614,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -11675,6 +9633,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, "license": "MIT" }, "node_modules/path-root": { @@ -11726,34 +9685,14 @@ } }, "node_modules/path-to-regexp": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", - "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", + "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=16" - } - }, - "node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "license": "MIT", - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-type/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "license": "MIT", - "engines": { - "node": ">=4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/pathval": { @@ -11795,6 +9734,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, "license": "ISC" }, "node_modules/picomatch": { @@ -11822,15 +9762,6 @@ "node": ">=0.10" } }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/pixelmatch": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.3.0.tgz", @@ -11889,15 +9820,6 @@ "node": ">=6" } }, - "node_modules/plist/node_modules/@xmldom/xmldom": { - "version": "0.8.11", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", - "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/pngjs": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz", @@ -12067,19 +9989,10 @@ "license": "MIT" }, "node_modules/proxy-lib": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/proxy-lib/-/proxy-lib-0.4.0.tgz", - "integrity": "sha512-oUDDpf0NTtKPyXjBNUcKzwZhA9GjEdu8Z47GsxGv5rZvKyCqsSrHurJtlL1yp7uVzA2NOmxd4aX7qmB1ZOdCwQ==", - "license": "Apache-2.0", - "dependencies": { - "osenv": "0.1.4" - } - }, - "node_modules/pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", - "license": "MIT" + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/proxy-lib/-/proxy-lib-0.4.1.tgz", + "integrity": "sha512-PvdxnMi+iTIjv5CWDAv5JqWcXthPwVGJ5fp1uWwsCKLsSpjfBlLTFtKIBC5kQyH6EpzxqJuUoapYP25tOpxLWQ==", + "license": "Apache-2.0" }, "node_modules/pump": { "version": "3.0.3", @@ -12091,17 +10004,6 @@ "once": "^1.3.1" } }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", - "license": "MIT", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, "node_modules/qr-image": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/qr-image/-/qr-image-3.2.0.tgz", @@ -12152,15 +10054,6 @@ ], "license": "MIT" }, - "node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -12190,86 +10083,40 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", "dev": true, - "license": "MIT" - }, - "node_modules/read-cmd-shim": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-5.0.0.tgz", - "integrity": "sha512-SEbJV7tohp3DAAILbEMPXavBjAnMN0tVnh4+9G8ihV4Pq3HYF9h8QNez9zkJ1ILkv9G2BjdzwctznGZXgu/HGw==", - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/read-package-json-fast": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-4.0.0.tgz", - "integrity": "sha512-qpt8EwugBWDw2cgE2W+/3oxC+KTez2uSVR8JU9Q36TXPAGCaozfQUs59v4j4GFpWTaw0i6hAZSvOmu1J0uOEUg==", - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^4.0.0", - "npm-normalize-package-bin": "^4.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/read-package-up": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-11.0.0.tgz", - "integrity": "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up-simple": "^1.0.0", - "read-pkg": "^9.0.0", - "type-fest": "^4.6.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-package-up/node_modules/hosted-git-info": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", - "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", - "dev": true, + "license": "MIT" + }, + "node_modules/read-cmd-shim": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-5.0.0.tgz", + "integrity": "sha512-SEbJV7tohp3DAAILbEMPXavBjAnMN0tVnh4+9G8ihV4Pq3HYF9h8QNez9zkJ1ILkv9G2BjdzwctznGZXgu/HGw==", "license": "ISC", - "dependencies": { - "lru-cache": "^10.0.1" - }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/read-package-up/node_modules/normalize-package-data": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", - "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/read-package-json-fast": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-4.0.0.tgz", + "integrity": "sha512-qpt8EwugBWDw2cgE2W+/3oxC+KTez2uSVR8JU9Q36TXPAGCaozfQUs59v4j4GFpWTaw0i6hAZSvOmu1J0uOEUg==", + "license": "ISC", "dependencies": { - "hosted-git-info": "^7.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" + "json-parse-even-better-errors": "^4.0.0", + "npm-normalize-package-bin": "^4.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/read-package-up/node_modules/parse-json": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz", - "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==", + "node_modules/read-package-up": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-11.0.0.tgz", + "integrity": "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.26.2", - "index-to-position": "^1.1.0", - "type-fest": "^4.39.1" + "find-up-simple": "^1.0.0", + "read-pkg": "^9.0.0", + "type-fest": "^4.6.0" }, "engines": { "node": ">=18" @@ -12278,7 +10125,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-package-up/node_modules/read-pkg": { + "node_modules/read-pkg": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", @@ -12298,160 +10145,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-package-up/node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", - "license": "MIT", - "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", - "license": "MIT", - "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "license": "MIT", - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "license": "MIT", - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "license": "MIT", - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "license": "MIT", - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "license": "ISC" - }, - "node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/read-pkg/node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/read-pkg/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, "node_modules/readable-stream": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", @@ -12576,19 +10269,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "license": "MIT", - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -13274,74 +10954,105 @@ } }, "node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.10.0.tgz", + "integrity": "sha512-Jex+xw5Mg2qMZL3qnzXIfaxEtBaC4n7xifqaqtrZDdlheR70OGkydrPJWT0V1cA1k3nanC86x9FwAmQl6w3Klw==", "license": "BSD-3-Clause", "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" + "execa": "^5.1.1", + "fast-glob": "^3.3.2" }, "engines": { - "node": ">=4" + "node": ">=18" } }, - "node_modules/shelljs/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "node_modules/shelljs/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/shelljs/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, + "node_modules/shelljs/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", "engines": { - "node": "*" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/shelljs/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", + "node_modules/shelljs/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/shelljs/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/shelljs/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "path-key": "^3.0.0" }, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/shelljs/node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "node_modules/shelljs/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", "dependencies": { - "resolve": "^1.1.6" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">= 0.10" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/shelljs/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "license": "MIT", + "engines": { + "node": ">=6" } }, "node_modules/side-channel": { @@ -13470,30 +11181,12 @@ } }, "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "license": "MIT" - }, - "node_modules/simple-update-notifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", - "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", "license": "MIT", "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" + "is-arrayish": "^0.3.1" } }, "node_modules/simple-xml-to-json": { @@ -13534,6 +11227,29 @@ "node": ">=0.3.1" } }, + "node_modules/sinon/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/sinon/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -13552,15 +11268,6 @@ "node": ">=8" } }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", @@ -13852,18 +11559,6 @@ "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", "license": "CC0-1.0" }, - "node_modules/split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "license": "MIT", - "dependencies": { - "through": "2" - }, - "engines": { - "node": "*" - } - }, "node_modules/split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -13877,29 +11572,6 @@ "node": ">=0.10.0" } }, - "node_modules/split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "license": "ISC", - "dependencies": { - "readable-stream": "^3.0.0" - } - }, - "node_modules/split2/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -14169,18 +11841,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "license": "MIT", - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -14212,15 +11872,16 @@ } }, "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "has-flag": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=0.8.0" } }, "node_modules/supports-hyperlinks": { @@ -14239,10 +11900,32 @@ "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" } }, + "node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -14288,19 +11971,6 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/temp": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", - "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", - "license": "MIT", - "dependencies": { - "mkdirp": "^0.5.1", - "rimraf": "~2.6.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/temp-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", @@ -14311,74 +11981,6 @@ "node": ">=14.16" } }, - "node_modules/temp/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/temp/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/temp/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/temp/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/temp/node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/tempfile": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-5.0.0.tgz", @@ -14395,34 +11997,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tempy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz", - "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==", - "license": "MIT", - "dependencies": { - "del": "^6.0.0", - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tempy/node_modules/temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/text-decoder": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", @@ -14432,15 +12006,6 @@ "b4a": "^1.6.4" } }, - "node_modules/text-extensions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", - "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, "node_modules/thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", @@ -14462,35 +12027,6 @@ "node": ">=0.8" } }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "license": "MIT" - }, - "node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "license": "MIT", - "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/through2/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/tiny-lr": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz", @@ -14647,21 +12183,6 @@ "url": "https://github.com/sponsors/Borewit" } }, - "node_modules/touch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", - "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", - "license": "ISC", - "bin": { - "nodetouch": "bin/nodetouch.js" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" - }, "node_modules/tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -14680,15 +12201,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/ts-morph": { "version": "25.0.1", "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-25.0.1.tgz", @@ -14804,12 +12316,13 @@ } }, "node_modules/type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -14832,6 +12345,7 @@ "version": "3.19.3", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, "license": "BSD-2-Clause", "optional": true, "bin": { @@ -14851,12 +12365,6 @@ "node": ">=0.10.0" } }, - "node_modules/undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", - "license": "MIT" - }, "node_modules/underscore.string": { "version": "3.3.6", "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.6.tgz", @@ -14956,18 +12464,6 @@ "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "license": "MIT", - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/universal-analytics": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.5.3.tgz", @@ -15173,12 +12669,6 @@ "defaults": "^1.0.3" } }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" - }, "node_modules/websocket-driver": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", @@ -15204,16 +12694,6 @@ "node": ">=0.8.0" } }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/which": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", @@ -15255,6 +12735,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, "license": "MIT" }, "node_modules/workerpool": { @@ -15431,15 +12912,6 @@ "node": ">=0.6.0" } }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/package.json b/package.json index b055efd158..e3ac3f2c9e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "nativescript", "main": "./lib/nativescript-cli-lib.js", - "version": "9.0.0-alpha.5", + "version": "9.0.0-alpha.6", "author": "NativeScript ", "description": "Command-line interface for building NativeScript projects", "bin": { @@ -55,10 +55,10 @@ ], "dependencies": { "@foxt/js-srp": "^0.0.3-patch2", - "@nativescript/doctor": "2.0.16-rc.0", - "@npmcli/arborist": "^9.0.0", + "@nativescript/doctor": "2.0.17-alpha.0", + "@npmcli/arborist": "^9.1.4", "@rigor789/resolve-package-path": "1.0.7", - "@rigor789/trapezedev-project": "7.1.2", + "@nstudio/trapezedev-project": "7.2.3", "archiver": "^7.0.1", "axios": "1.11.0", "byline": "5.0.0", @@ -91,16 +91,15 @@ "prettier": "3.5.2", "prompts": "2.4.2", "proper-lockfile": "4.1.2", - "proxy-lib": "0.4.0", + "proxy-lib": "0.4.1", "qr-image": "3.2.0", "qrcode-terminal": "0.12.0", "semver": "7.7.1", - "shelljs": "0.8.5", + "shelljs": "0.10.0", "simple-git": "3.27.0", "simple-plist": "1.4.0", "source-map": "0.7.4", "tar": "7.4.3", - "temp": "0.9.4", "ts-morph": "25.0.1", "tunnel": "0.0.6", "typescript": "5.7.3", @@ -133,7 +132,6 @@ "@types/sinon": "^17.0.3", "@types/tabtab": "^3.0.2", "@types/tar": "6.1.13", - "@types/temp": "0.9.4", "@types/tunnel": "0.0.7", "@types/universal-analytics": "0.4.8", "@types/uuid": "^10.0.0", diff --git a/packages/doctor/package.json b/packages/doctor/package.json index 1b48afc27a..c08858e3db 100644 --- a/packages/doctor/package.json +++ b/packages/doctor/package.json @@ -1,6 +1,6 @@ { "name": "@nativescript/doctor", - "version": "2.0.16-rc.0", + "version": "2.0.17-alpha.0", "description": "Library that helps identifying if the environment can be used for development of {N} apps.", "main": "src/index.js", "types": "./typings/nativescript-doctor.d.ts", @@ -45,7 +45,7 @@ "@types/lodash": "4.17.15", "@types/mocha": "10.0.10", "@types/semver": "7.5.8", - "@types/shelljs": "0.8.15", + "@types/shelljs": "0.8.17", "@types/temp": "0.9.4", "@types/winreg": "1.2.36", "@types/yauzl": "2.10.3", @@ -66,9 +66,8 @@ }, "dependencies": { "lodash": "4.17.21", - "semver": "7.6.3", - "shelljs": "0.8.5", - "temp": "0.9.4", + "semver": "7.7.2", + "shelljs": "0.10.0", "winreg": "1.2.5", "yauzl": "3.2.0" } diff --git a/packages/doctor/src/declarations.d.ts b/packages/doctor/src/declarations.d.ts index e678f05bd2..f800c683ad 100644 --- a/packages/doctor/src/declarations.d.ts +++ b/packages/doctor/src/declarations.d.ts @@ -5,12 +5,12 @@ interface IProcessInfo { /** * The stdout of the process. */ - stdout: string; + stdout: string | Buffer; /** * The stderr of the process. */ - stderr: string; + stderr: string | Buffer; /** * The exit code of the process. diff --git a/packages/doctor/src/sys-info.ts b/packages/doctor/src/sys-info.ts index 58d1719be5..7b470601f3 100644 --- a/packages/doctor/src/sys-info.ts +++ b/packages/doctor/src/sys-info.ts @@ -1,12 +1,12 @@ -import { ChildProcess } from "./wrappers/child-process"; -import { FileSystem } from "./wrappers/file-system"; -import { HostInfo } from "./host-info"; -import { ExecOptions } from "child_process"; -import { WinReg } from "./winreg"; -import { Helpers } from "./helpers"; -import { platform, EOL, homedir } from "os"; +import type { ChildProcess } from "./wrappers/child-process"; +import type { FileSystem } from "./wrappers/file-system"; +import type { HostInfo } from "./host-info"; +import type { ExecOptions } from "child_process"; +import type { WinReg } from "./winreg"; +import type { Helpers } from "./helpers"; +import { platform, EOL, homedir, tmpdir } from "os"; import * as path from "path"; -import * as temp from "temp"; +import * as fs from "fs"; import * as semver from "semver"; import { Constants } from "./constants"; @@ -58,8 +58,11 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { private helpers: Helpers, private hostInfo: HostInfo, private winReg: WinReg, - private androidToolsInfo: NativeScriptDoctor.IAndroidToolsInfo - ) {} + private androidToolsInfo: NativeScriptDoctor.IAndroidToolsInfo, + ) { + // keep reference to preserve constructor signature compatibility + void this.winReg; + } public getJavaCompilerVersion(): Promise { return this.getValueForProperty( @@ -68,15 +71,15 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { const javacVersion = process.env["JAVA_HOME"] ? await this.getVersionOfJavaExecutableFromJavaHome( Constants.JAVAC_EXECUTABLE_NAME, - SysInfo.JAVA_COMPILER_VERSION_REGEXP - ) + SysInfo.JAVA_COMPILER_VERSION_REGEXP, + ) : await this.getVersionOfJavaExecutableFromPath( Constants.JAVAC_EXECUTABLE_NAME, - SysInfo.JAVA_COMPILER_VERSION_REGEXP - ); + SysInfo.JAVA_COMPILER_VERSION_REGEXP, + ); return javacVersion; - } + }, ); } @@ -88,7 +91,7 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { (await this.getJavaVersionFromJavaHome()) || (await this.getJavaVersionFromPath()); return javaVersion; - } + }, ); } @@ -98,13 +101,13 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { async (): Promise => { const javaPath = (await this.getJavaExecutablePathFromJavaHome( - Constants.JAVA_EXECUTABLE_NAME + Constants.JAVA_EXECUTABLE_NAME, )) || (await this.getJavaExecutablePathFromPath( - Constants.JAVA_EXECUTABLE_NAME + Constants.JAVA_EXECUTABLE_NAME, )); return javaPath; - } + }, ); } @@ -114,9 +117,9 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { (): Promise => { return this.getVersionOfJavaExecutableFromPath( Constants.JAVA_EXECUTABLE_NAME, - SysInfo.JAVA_VERSION_REGEXP + SysInfo.JAVA_VERSION_REGEXP, ); - } + }, ); } @@ -126,9 +129,9 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { (): Promise => { return this.getVersionOfJavaExecutableFromJavaHome( Constants.JAVA_EXECUTABLE_NAME, - SysInfo.JAVA_VERSION_REGEXP + SysInfo.JAVA_VERSION_REGEXP, ); - } + }, ); } @@ -145,7 +148,7 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { return this.getVersionFromString(output); } } - } + }, ); } @@ -160,7 +163,7 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { } return null; - } + }, ); } @@ -170,7 +173,7 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { async (): Promise => { const output = await this.execCommand("npm -v"); return output ? output.split("\n")[0] : null; - } + }, ); } @@ -180,7 +183,7 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { async (): Promise => { const output = await this.execCommand("node-gyp -v"); return output ? this.getVersionFromString(output) : null; - } + }, ); } @@ -190,7 +193,7 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { async (): Promise => { const output = await this.execCommand("which xcodeproj"); return output ? output.trim() : null; - } + }, ); } @@ -212,12 +215,12 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { coreFoundationDir = path.join( commonProgramFiles, "Apple", - "Apple Application Support" + "Apple Application Support", ); mobileDeviceDir = path.join( commonProgramFiles, "Apple", - "Mobile Device Support" + "Mobile Device Support", ); } else if (this.hostInfo.isDarwin) { coreFoundationDir = @@ -230,7 +233,7 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { (await this.fileSystem.exists(coreFoundationDir)) && (await this.fileSystem.exists(mobileDeviceDir)) ); - } + }, ); } @@ -249,7 +252,7 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { } } } - } + }, ); } @@ -258,7 +261,7 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { () => this.osCache, async (): Promise => { return await (this.hostInfo.isWindows ? this.winVer() : this.unixVer()); - } + }, ); } @@ -276,14 +279,14 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { pathToAdb, ["version"], "close", - { ignoreError: true } + { ignoreError: true }, ); } return output && output.stdout - ? this.getVersionFromString(output.stdout) + ? this.getVersionFromString(output.stdout as string) : null; - } + }, ); } @@ -297,7 +300,7 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { } catch (err) { return false; } - } + }, ); } @@ -309,11 +312,11 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { this.androidToolsInfo.getPathToEmulatorExecutable(), ["-help"], "close", - { ignoreError: true } + { ignoreError: true }, ); return output && output.stdout.indexOf("usage: emulator") >= 0; - } + }, ); } @@ -324,7 +327,7 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { const output = await this.execCommand("mono --version"); const match = this.monoVerRegExp.exec(output); return match ? match[1] : null; - } + }, ); } @@ -338,11 +341,11 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { } const output = await this.execCommand( - `${this.helpers.quoteString(gitPath)} --version` + `${this.helpers.quoteString(gitPath)} --version`, ); const matches = SysInfo.GIT_VERSION_REGEXP.exec(output); return matches && matches[1]; - } + }, ); } @@ -354,12 +357,12 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { const matches = SysInfo.GRADLE_VERSION_REGEXP.exec(output); return matches && matches[1]; - } + }, ); } public async getSysInfo( - config?: NativeScriptDoctor.ISysInfoConfig + config?: NativeScriptDoctor.ISysInfoConfig, ): Promise { if ( config && @@ -370,7 +373,7 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { return ( Object.assign( await this.getCommonSysInfo(), - await this.getAndroidSysInfo(config) + await this.getAndroidSysInfo(config), ) ); } @@ -389,7 +392,7 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { return Object.assign( await this.getCommonSysInfo(), await this.getAndroidSysInfo(), - await this.getiOSSysInfo() + await this.getiOSSysInfo(), ); } @@ -397,52 +400,43 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { return this.getValueForProperty( () => this.isCocoaPodsWorkingCorrectlyCache, async (): Promise => { - if (this.hostInfo.isDarwin) { - if (!this.fileSystem.exists(path.join(homedir(), ".cocoapods"))) { - return true; - } - temp.track(); - const tempDirectory = temp.mkdirSync("nativescript-check-cocoapods"); - const pathToXCodeProjectZip = path.join( - __dirname, - "..", - "resources", - "cocoapods-verification", - "cocoapods.zip" - ); + if (!this.hostInfo.isDarwin) { + return false; + } + if (!this.fileSystem.exists(path.join(homedir(), ".cocoapods"))) { + return true; + } + + const tempDirectory = fs.mkdtempSync( + path.join(tmpdir(), "nativescript-check-cocoapods-"), + ); + const pathToXCodeProjectZip = path.join( + __dirname, + "..", + "resources", + "cocoapods-verification", + "cocoapods.zip", + ); + try { await this.fileSystem.extractZip( pathToXCodeProjectZip, - tempDirectory + tempDirectory, ); - const xcodeProjectDir = path.join(tempDirectory, "cocoapods"); - - try { - const spawnResult = await this.childProcess.spawnFromEvent( - "pod", - ["install"], - "exit", - { spawnOptions: { cwd: xcodeProjectDir } } - ); - if (spawnResult.exitCode) { - this.fileSystem.deleteEntry(tempDirectory); - return false; - } else { - const exists = this.fileSystem.exists( - path.join(xcodeProjectDir, "cocoapods.xcworkspace") - ); - this.fileSystem.deleteEntry(tempDirectory); - return exists; - } - } catch (err) { - this.fileSystem.deleteEntry(tempDirectory); - return null; - } - } else { + const spawnResult = await this.childProcess.spawnFromEvent( + "pod", + ["install"], + "exit", + { spawnOptions: { cwd: xcodeProjectDir } }, + ); + return !spawnResult.exitCode; + } catch (err) { return false; + } finally { + this.fileSystem.deleteEntry(tempDirectory); } - } + }, ); } @@ -452,7 +446,7 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { async (): Promise => { const output = await this.execCommand("tns --version"); return output ? this.getVersionFromCLIOutput(output.trim()) : output; - } + }, ); } @@ -483,7 +477,7 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { } return { shouldUseXcproj, xcprojAvailable }; - } + }, ); } @@ -505,7 +499,7 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { } return null; - } + }, ); } @@ -519,7 +513,7 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { } else { return false; } - } + }, ); } @@ -563,7 +557,9 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { } const children = this.fileSystem.readDirectory(github); - const git = children.filter((child) => /^PortableGit/.test(child))[0]; + const git = children.filter((child: string) => + /^PortableGit/.test(child), + )[0]; if (!this.fileSystem.exists(git)) { return null; } @@ -585,9 +581,28 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { return result && result.split("\n")[0].trim(); } + private async winVer(): Promise { + try { + // Using `ver` is sufficient for an OS string on Windows. + const output = await this.execCommand("ver"); + return output ? output.trim() : null; + } catch { + return null; + } + } + + private async unixVer(): Promise { + try { + const output = await this.execCommand("uname -a"); + return output ? output.trim() : null; + } catch { + return null; + } + } + private async getValueForProperty( property: Function, - getValueMethod: () => Promise + getValueMethod: () => Promise, ): Promise { if (this.shouldCache) { const propertyName = this.helpers.getPropertyName(property); @@ -607,7 +622,7 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { private async exec( cmd: string, - execOptions?: ExecOptions + execOptions?: ExecOptions, ): Promise { if (cmd) { try { @@ -622,50 +637,31 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { private async execCommand( cmd: string, - execOptions?: ExecOptions + execOptions?: ExecOptions, ): Promise { const output = await this.exec(cmd, execOptions); - return output && output.stdout; + return output && (output.stdout as string); } - private getVersionFromString(versionString: string): string { - const matches = versionString.match(SysInfo.VERSION_REGEXP); - if (matches) { - return `${matches[1]}.${matches[2]}.${matches[3] || 0}`; + private getVersionFromString(output: string): string { + if (!output) { + return null; } - - return null; + const match = SysInfo.VERSION_REGEXP.exec(output); + return match && match[0] ? match[0].trim() : null; } - private getVersionFromCLIOutput(commandOutput: string): string { - const matches = commandOutput.match(SysInfo.CLI_OUTPUT_VERSION_REGEXP); - return matches && matches[0]; - } - - private async winVer(): Promise { - let productName: string; - let currentVersion: string; - let currentBuild: string; - const hive = this.winReg.registryKeys.HKLM; - const key = "\\Software\\Microsoft\\Windows NT\\CurrentVersion"; - - productName = await this.winReg.getRegistryValue("ProductName", hive, key); - currentVersion = await this.winReg.getRegistryValue( - "CurrentVersion", - hive, - key - ); - currentBuild = await this.winReg.getRegistryValue( - "CurrentBuild", - hive, - key - ); - - return `${productName} ${currentVersion}.${currentBuild}`; - } - - private unixVer(): Promise { - return this.execCommand("uname -a"); + private getVersionFromCLIOutput(output: string): string { + if (!output) { + return null; + } + const lines = output.split(/\r?\n/); + for (const line of lines) { + if (SysInfo.CLI_OUTPUT_VERSION_REGEXP.test(line)) { + return line.trim(); + } + } + return null; } private getCommonSysInfo(): Promise { @@ -687,7 +683,7 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { result.gitVer = await this.getGitVersion(); return result; - } + }, ); } @@ -708,12 +704,12 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { result.pythonInfo = await this.getPythonInfo(); return result; - } + }, ); } private async getAndroidSysInfo( - config?: NativeScriptDoctor.ISysInfoConfig + config?: NativeScriptDoctor.ISysInfoConfig, ): Promise { return this.getValueForProperty( () => this.androidSysInfoCache, @@ -726,7 +722,9 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { result.javaVersion = await this.getJavaVersion(); result.javaPath = await this.getJavaPath(); result.adbVer = await this.getAdbVersion( - config && config.androidToolsInfo && config.androidToolsInfo.pathToAdb + config && + config.androidToolsInfo && + config.androidToolsInfo.pathToAdb, ); result.androidInstalled = await this.isAndroidInstalled(); result.monoVer = await this.getMonoVersion(); @@ -735,13 +733,13 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { await this.isAndroidSdkConfiguredCorrectly(); return result; - } + }, ); } private async getVersionOfJavaExecutableFromJavaHome( javaExecutableName: string, - regExp: RegExp + regExp: RegExp, ): Promise { let javaExecutableVersion: string = null; const javaExecutablePath = @@ -749,7 +747,7 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { if (javaExecutablePath) { javaExecutableVersion = await this.getVersionOfJavaExecutable( javaExecutablePath, - regExp + regExp, ); } @@ -757,7 +755,7 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { } private getJavaExecutablePathFromJavaHome( - javaExecutableName: string + javaExecutableName: string, ): string { let javaExecutablePath: string = null; @@ -771,7 +769,7 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { const pathToJavaExecutable = path.join( javaHome, "bin", - javaExecutableFile + javaExecutableFile, ); if (this.fileSystem.exists(pathToJavaExecutable)) { javaExecutablePath = pathToJavaExecutable; @@ -786,17 +784,16 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { private async getVersionOfJavaExecutableFromPath( javaExecutableName: string, - regExp: RegExp + regExp: RegExp, ): Promise { let javaExecutableVersion: string = null; - const javaExecutablePath = await this.getJavaExecutablePathFromPath( - javaExecutableName - ); + const javaExecutablePath = + await this.getJavaExecutablePathFromPath(javaExecutableName); if (javaExecutablePath) { javaExecutableVersion = await this.getVersionOfJavaExecutable( javaExecutablePath, - regExp + regExp, ); } @@ -804,7 +801,7 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { } private async getJavaExecutablePathFromPath( - javaExecutableName: string + javaExecutableName: string, ): Promise { let javaExecutablePath: string = null; @@ -822,7 +819,7 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo { private async getVersionOfJavaExecutable( executable: string, - regExp: RegExp + regExp: RegExp, ): Promise { try { const output = await this.childProcess.exec(`"${executable}" -version`); diff --git a/packages/doctor/test/android-tools-info.ts b/packages/doctor/test/android-tools-info.ts index 89d1eb3f31..f8121b0da6 100644 --- a/packages/doctor/test/android-tools-info.ts +++ b/packages/doctor/test/android-tools-info.ts @@ -106,7 +106,7 @@ describe("androidToolsInfo", () => { const androidToolsInfo = getAndroidToolsInfo("8.2.0"); const toolsInfo = androidToolsInfo.getToolsInfo({ projectDir: "test" }); - assert.equal(toolsInfo.compileSdkVersion, 35); + assert.equal(toolsInfo.compileSdkVersion, 36); }); }); @@ -140,7 +140,7 @@ describe("androidToolsInfo", () => { it("runtime 8.2.0 should support android-17 - android-34", () => { const min = 17; - const max = 35; + const max = 36; assertSupportedRange("8.2.0", min, max); assertSupportedRange("8.3.0", min, max); }); diff --git a/test/ios-entitlements-service.ts b/test/ios-entitlements-service.ts index 455e9900fe..282754705b 100644 --- a/test/ios-entitlements-service.ts +++ b/test/ios-entitlements-service.ts @@ -1,4 +1,5 @@ -import * as temp from "temp"; +import { mkdtempSync } from "fs"; +import { tmpdir } from "os"; import { EOL } from "os"; import { assert } from "chai"; import { IOSEntitlementsService } from "../lib/services/ios-entitlements-service"; @@ -13,8 +14,7 @@ import { IProjectData } from "../lib/definitions/project"; import { IInjector } from "../lib/common/definitions/yok"; import { IFileSystem } from "../lib/common/declarations"; -// start tracking temporary folders/files -temp.track(); +// start temporary folders/files helpers describe("IOSEntitlements Service Tests", () => { const createTestInjector = (): IInjector => { @@ -29,7 +29,7 @@ describe("IOSEntitlements Service Tests", () => { testInjector.register("mobileHelper", MobileHelperLib.MobileHelper); testInjector.register( "devicePlatformsConstants", - DevicePlatformsConstantsLib.DevicePlatformsConstants + DevicePlatformsConstantsLib.DevicePlatformsConstants, ); testInjector.register("errors", ErrorsLib.Errors); @@ -56,8 +56,10 @@ describe("IOSEntitlements Service Tests", () => { projectData = injector.resolve("projectData"); projectData.projectName = "testApp"; - projectData.platformsDir = temp.mkdirSync("platformsDir"); - projectData.projectDir = temp.mkdirSync("projectDir"); + projectData.platformsDir = mkdtempSync( + path.join(tmpdir(), "platformsDir-"), + ); + projectData.projectDir = mkdtempSync(path.join(tmpdir(), "projectDir-")); projectData.appDirectoryPath = projectData.getAppDirectoryPath(); projectData.appResourcesDirectoryPath = projectData.getAppResourcesDirectoryPath(); @@ -74,7 +76,7 @@ describe("IOSEntitlements Service Tests", () => { const expected = path.join("testApp", "testApp.entitlements"); const actual = iOSEntitlementsService.getPlatformsEntitlementsRelativePath( - projectData + projectData, ); assert.equal(actual, expected); }); @@ -84,7 +86,7 @@ describe("IOSEntitlements Service Tests", () => { projectData.platformsDir, "ios", "testApp", - "testApp.entitlements" + "testApp.entitlements", ); const actual = iOSEntitlementsService.getPlatformsEntitlementsPath(projectData); @@ -149,7 +151,7 @@ describe("IOSEntitlements Service Tests", () => { )).getDefaultAppEntitlementsPath(projectData); fs.writeFile( appResourcesEntitlement, - defaultAppResourcesEntitlementsContent + defaultAppResourcesEntitlementsContent, ); // act @@ -162,7 +164,9 @@ describe("IOSEntitlements Service Tests", () => { it("Merge uses the entitlements file from a Plugin", async () => { const pluginsService = injector.resolve("pluginsService"); - const testPluginFolderPath = temp.mkdirSync("testPlugin"); + const testPluginFolderPath = mkdtempSync( + path.join(tmpdir(), "testPlugin-"), + ); pluginsService.getAllInstalledPlugins = async () => [ { pluginPlatformsFolderPath: (platform: string) => { @@ -172,7 +176,7 @@ describe("IOSEntitlements Service Tests", () => { ]; const pluginAppEntitlementsPath = path.join( testPluginFolderPath, - IOSEntitlementsService.DefaultEntitlementsName + IOSEntitlementsService.DefaultEntitlementsName, ); fs.writeFile(pluginAppEntitlementsPath, defaultPluginEntitlementsContent); @@ -191,12 +195,14 @@ describe("IOSEntitlements Service Tests", () => { )).getDefaultAppEntitlementsPath(projectData); fs.writeFile( appResourcesEntitlement, - namedAppResourcesEntitlementsContent + namedAppResourcesEntitlementsContent, ); // setup plugin entitlements const pluginsService = injector.resolve("pluginsService"); - const testPluginFolderPath = temp.mkdirSync("testPlugin"); + const testPluginFolderPath = mkdtempSync( + path.join(tmpdir(), "testPlugin-"), + ); pluginsService.getAllInstalledPlugins = async () => [ { pluginPlatformsFolderPath: (platform: string) => { @@ -206,7 +212,7 @@ describe("IOSEntitlements Service Tests", () => { ]; const pluginAppEntitlementsPath = path.join( testPluginFolderPath, - IOSEntitlementsService.DefaultEntitlementsName + IOSEntitlementsService.DefaultEntitlementsName, ); fs.writeFile(pluginAppEntitlementsPath, defaultPluginEntitlementsContent); diff --git a/test/ios-project-service.ts b/test/ios-project-service.ts index 330976a257..a8f7a9e1a1 100644 --- a/test/ios-project-service.ts +++ b/test/ios-project-service.ts @@ -38,7 +38,9 @@ import { ProjectConfigServiceStub, } from "./stubs"; import { xcode } from "../lib/node/xcode"; -import * as temp from "temp"; +import { mkdtempSync } from "fs"; +import { tmpdir } from "os"; +import * as path from "path"; import { CocoaPodsPlatformManager } from "../lib/services/cocoapods-platform-manager"; import { XcodebuildService } from "../lib/services/ios/xcodebuild-service"; import { XcodebuildCommandService } from "../lib/services/ios/xcodebuild-command-service"; @@ -51,7 +53,6 @@ import { IXcconfigService } from "../lib/declarations"; import { IInjector } from "../lib/common/definitions/yok"; import { IStringDictionary, IFileSystem } from "../lib/common/declarations"; import { DevicePlatformsConstants } from "../lib/common/mobile/device-platforms-constants"; -temp.track(); class IOSSimulatorDiscoveryMock extends DeviceDiscovery { public async startLookingForDevices(): Promise { @@ -66,7 +67,7 @@ class IOSSimulatorDiscoveryMock extends DeviceDiscovery { function createTestInjector( projectPath: string, projectName: string, - xCode?: IXcode + xCode?: IXcode, ): IInjector { const testInjector = new yok.Yok(); testInjector.register("childProcess", ChildProcessLib.ChildProcess); @@ -80,7 +81,7 @@ function createTestInjector( testInjector.register("cocoapodsService", CocoaPodsService); testInjector.register( "iOSProjectService", - iOSProjectServiceLib.IOSProjectService + iOSProjectServiceLib.IOSProjectService, ); testInjector.register("iOSProvisionService", {}); testInjector.register("xcconfigService", XcconfigService); @@ -103,11 +104,11 @@ function createTestInjector( overridePods: false, }, }); - projectData.projectDir = temp.mkdirSync("projectDir"); + projectData.projectDir = mkdtempSync(path.join(tmpdir(), "projectDir-")); projectData.appDirectoryPath = join(projectData.projectDir, "app"); projectData.appResourcesDirectoryPath = join( projectData.appDirectoryPath, - "App_Resources" + "App_Resources", ); testInjector.register("projectData", projectData); testInjector.register("projectHelper", {}); @@ -175,7 +176,7 @@ function createTestInjector( return ""; } }, - } + }, ); testInjector.register("userSettingsService", { getSettingValue: async (settingName: string): Promise => undefined, @@ -197,7 +198,7 @@ function createTestInjector( testInjector.register("filesHashService", { hasChangesInShasums: ( oldPluginNativeHashes: IStringDictionary, - currentPluginNativeHashes: IStringDictionary + currentPluginNativeHashes: IStringDictionary, ) => true, generateHashes: async (files: string[]): Promise => ({}), }); @@ -205,7 +206,7 @@ function createTestInjector( extractPackage: async ( packageName: string, destinationDirectory: string, - options?: IPacoteExtractOptions + options?: IPacoteExtractOptions, ): Promise => undefined, }); testInjector.register("iOSExtensionsService", { @@ -248,7 +249,7 @@ function createTestInjector( function createPackageJson( testInjector: IInjector, projectPath: string, - projectName: string + projectName: string, ) { const packageJsonData = { name: projectName, @@ -291,7 +292,7 @@ describe("Cocoapods support", () => { it("adds а base Podfile", async () => { const projectName = "projectDirectory"; - const projectPath = temp.mkdirSync(projectName); + const projectPath = mkdtempSync(path.join(tmpdir(), `${projectName}-`)); const testInjector = createTestInjector(projectPath, projectName); const fs: IFileSystem = testInjector.resolve("fs"); @@ -333,7 +334,7 @@ describe("Cocoapods support", () => { projectData.appDirectoryPath, "App_Resources", "iOS", - "Podfile" + "Podfile", ); const pluginPodfileContent = [ "source 'https://github.com/CocoaPods/Specs.git'", @@ -348,13 +349,13 @@ describe("Cocoapods support", () => { basePodfileModuleName, basePodfilePath, projectData, - iOSProjectService.getPlatformData(projectData) + iOSProjectService.getPlatformData(projectData), ); const projectPodfilePath = join(platformsFolderPath, "Podfile"); assert.isTrue( fs.exists(projectPodfilePath), - `File ${projectPodfilePath} must exist as we have already applied Podfile to it.` + `File ${projectPodfilePath} must exist as we have already applied Podfile to it.`, ); const actualProjectPodfileContent = fs.readText(projectPodfilePath); @@ -385,17 +386,17 @@ describe("Cocoapods support", () => { basePodfileModuleName, basePodfilePath, projectData, - iOSProjectService.getPlatformData(projectData) + iOSProjectService.getPlatformData(projectData), ); assert.isFalse( fs.exists(projectPodfilePath), - `The projectPodfilePath (${projectPodfilePath}) must not exist when all Podfiles have been deleted and project is prepared again. (i.e. CLI should delete the project Podfile in this case)` + `The projectPodfilePath (${projectPodfilePath}) must not exist when all Podfiles have been deleted and project is prepared again. (i.e. CLI should delete the project Podfile in this case)`, ); }); it("adds plugin with Podfile", async () => { const projectName = "projectDirectory"; - const projectPath = temp.mkdirSync(projectName); + const projectPath = mkdtempSync(path.join(tmpdir(), `${projectName}-`)); const testInjector = createTestInjector(projectPath, projectName); const fs: IFileSystem = testInjector.resolve("fs"); @@ -418,13 +419,13 @@ describe("Cocoapods support", () => { const iOSProjectService = testInjector.resolve("iOSProjectService"); iOSProjectService.prepareFrameworks = ( pluginPlatformsFolderPath: string, - pluginData: IPluginData + pluginData: IPluginData, ): Promise => { return Promise.resolve(); }; iOSProjectService.prepareStaticLibs = ( pluginPlatformsFolderPath: string, - pluginData: IPluginData + pluginData: IPluginData, ): Promise => { return Promise.resolve(); }; @@ -440,15 +441,15 @@ describe("Cocoapods support", () => { }; iOSProjectService.savePbxProj = (): Promise => Promise.resolve(); - const pluginPath = temp.mkdirSync("pluginDirectory"); + const pluginPath = mkdtempSync(path.join(tmpdir(), "pluginDirectory-")); const samplePluginPlatformsFolderPath = join( pluginPath, "platforms", - "ios" + "ios", ); const pluginPodfilePath = join( samplePluginPlatformsFolderPath, - "Podfile" + "Podfile", ); const pluginPodfileContent = [ "source 'https://github.com/CocoaPods/Specs.git'", @@ -505,7 +506,7 @@ describe("Cocoapods support", () => { }); it("adds and removes plugin with Podfile", async () => { const projectName = "projectDirectory2"; - const projectPath = temp.mkdirSync(projectName); + const projectPath = mkdtempSync(path.join(tmpdir(), `${projectName}-`)); const testInjector = createTestInjector(projectPath, projectName); const fs: IFileSystem = testInjector.resolve("fs"); @@ -528,25 +529,25 @@ describe("Cocoapods support", () => { const iOSProjectService = testInjector.resolve("iOSProjectService"); iOSProjectService.prepareFrameworks = ( pluginPlatformsPath: string, - pluginData: IPluginData + pluginData: IPluginData, ): Promise => { return Promise.resolve(); }; iOSProjectService.prepareStaticLibs = ( pluginPlatformsPath: string, - pluginData: IPluginData + pluginData: IPluginData, ): Promise => { return Promise.resolve(); }; iOSProjectService.removeFrameworks = ( pluginPlatformsPath: string, - pluginData: IPluginData + pluginData: IPluginData, ): Promise => { return Promise.resolve(); }; iOSProjectService.removeStaticLibs = ( pluginPlatformsPath: string, - pluginData: IPluginData + pluginData: IPluginData, ): Promise => { return Promise.resolve(); }; @@ -568,15 +569,15 @@ describe("Cocoapods support", () => { }; iOSProjectService.savePbxProj = (): Promise => Promise.resolve(); - const pluginPath = temp.mkdirSync("pluginDirectory"); + const pluginPath = mkdtempSync(path.join(tmpdir(), "pluginDirectory-")); const samplePluginPlatformsFolderPath = join( pluginPath, "platforms", - "ios" + "ios", ); const pluginPodfilePath = join( samplePluginPlatformsFolderPath, - "Podfile" + "Podfile", ); const pluginPodfileContent = [ "source 'https://github.com/CocoaPods/Specs.git'", @@ -633,7 +634,7 @@ describe("Cocoapods support", () => { await iOSProjectService.removePluginNativeCode( samplePluginData, - projectData + projectData, ); assert.isFalse(fs.exists(projectPodfilePath)); @@ -658,13 +659,13 @@ describe("Cocoapods support", () => { describe("Source code support", () => { if (require("os").platform() !== "darwin") { console.log( - "Skipping Source code in plugin tests. They cannot work on windows" + "Skipping Source code in plugin tests. They cannot work on windows", ); } else { const getProjectWithoutPlugins = async (files: string[]) => { // Arrange const projectName = "projectDirectory"; - const projectPath = temp.mkdirSync(projectName); + const projectPath = mkdtempSync(path.join(tmpdir(), `${projectName}-`)); const testInjector = createTestInjector(projectPath, projectName, xcode); const fs: IFileSystem = testInjector.resolve("fs"); @@ -699,7 +700,7 @@ describe("Source code support", () => { const platformSpecificAppResourcesPath = join( projectData.appResourcesDirectoryPath, - iOSProjectService.getPlatformData(projectData).normalizedPlatformName + iOSProjectService.getPlatformData(projectData).normalizedPlatformName, ); files.forEach((file) => { @@ -711,7 +712,7 @@ describe("Source code support", () => { await iOSProjectService.prepareNativeSourceCode( "src", platformSpecificAppResourcesPath, - projectData + projectData, ); return pbxProj; @@ -719,11 +720,11 @@ describe("Source code support", () => { const preparePluginWithFiles = async ( files: string[], - prepareMethodToCall: string + prepareMethodToCall: string, ) => { // Arrange const projectName = "projectDirectory"; - const projectPath = temp.mkdirSync(projectName); + const projectPath = mkdtempSync(path.join(tmpdir(), `${projectName}-`)); const testInjector = createTestInjector(projectPath, projectName, xcode); const fs: IFileSystem = testInjector.resolve("fs"); @@ -756,7 +757,7 @@ describe("Source code support", () => { .forEach((methodName) => { iOSProjectService[methodName] = ( pluginPlatformsFolderPath: string, - pluginData: IPluginData + pluginData: IPluginData, ): Promise => { return Promise.resolve(); }; @@ -773,11 +774,11 @@ describe("Source code support", () => { return Promise.resolve(); }; - const pluginPath = temp.mkdirSync("pluginDirectory"); + const pluginPath = mkdtempSync(path.join(tmpdir(), "pluginDirectory-")); const samplePluginPlatformsFolderPath = join( pluginPath, "platforms", - "ios" + "ios", ); files.forEach((file) => { const fullPath = join(samplePluginPlatformsFolderPath, file); @@ -797,7 +798,7 @@ describe("Source code support", () => { // Act await iOSProjectService.preparePluginNativeCode( samplePluginData, - projectData + projectData, ); return pbxProj; @@ -817,7 +818,7 @@ describe("Source code support", () => { ]; const projectName = "projectDirectory"; - const projectPath = temp.mkdirSync(projectName); + const projectPath = mkdtempSync(path.join(tmpdir(), `${projectName}-`)); const testInjector = createTestInjector(projectPath, projectName, xcode); const fs: IFileSystem = testInjector.resolve("fs"); @@ -828,7 +829,7 @@ describe("Source code support", () => { const pbxFileReference = pbxProj.hash.project.objects.PBXFileReference; const pbxFileReferenceValues = Object.keys(pbxFileReference).map( - (key) => pbxFileReference[key] + (key) => pbxFileReference[key], ); const buildPhaseFiles = pbxProj.hash.project.objects.PBXSourcesBuildPhase[ @@ -843,26 +844,26 @@ describe("Source code support", () => { assert.notEqual( pbxFileReferenceValues.indexOf(baseName), -1, - `${baseName} not added to PBXFileRefereces` + `${baseName} not added to PBXFileRefereces`, ); const buildPhaseFile = buildPhaseFiles.find((fileObject: any) => - fileObject.comment.startsWith(baseName) + fileObject.comment.startsWith(baseName), ); if (shouldBeAdded && !extname(baseName).startsWith(".h")) { assert.isDefined( buildPhaseFile, - `${baseName} not added to PBXSourcesBuildPhase` + `${baseName} not added to PBXSourcesBuildPhase`, ); assert.include( buildPhaseFile.comment, "in Sources", - `${baseName} must be added to Sources group` + `${baseName} must be added to Sources group`, ); } else { assert.isUndefined( buildPhaseFile, - `${baseName} is added to PBXSourcesBuildPhase, but it shouldn't have been.` + `${baseName} is added to PBXSourcesBuildPhase, but it shouldn't have been.`, ); } }); @@ -883,12 +884,12 @@ describe("Source code support", () => { const pbxProj = await preparePluginWithFiles( sourceFileNames, - "prepareNativeSourceCode" + "prepareNativeSourceCode", ); const pbxFileReference = pbxProj.hash.project.objects.PBXFileReference; const pbxFileReferenceValues = Object.keys(pbxFileReference).map( - (key) => pbxFileReference[key] + (key) => pbxFileReference[key], ); const buildPhaseFiles = pbxProj.hash.project.objects.PBXSourcesBuildPhase[ @@ -903,26 +904,26 @@ describe("Source code support", () => { assert.notEqual( pbxFileReferenceValues.indexOf(baseName), -1, - `${baseName} not added to PBXFileRefereces` + `${baseName} not added to PBXFileRefereces`, ); const buildPhaseFile = buildPhaseFiles.find((fileObject: any) => - fileObject.comment.startsWith(baseName) + fileObject.comment.startsWith(baseName), ); if (shouldBeAdded && !extname(baseName).startsWith(".h")) { assert.isDefined( buildPhaseFile, - `${baseName} not added to PBXSourcesBuildPhase` + `${baseName} not added to PBXSourcesBuildPhase`, ); assert.include( buildPhaseFile.comment, "in Sources", - `${baseName} must be added to Sources group` + `${baseName} must be added to Sources group`, ); } else { assert.isUndefined( buildPhaseFile, - `${baseName} was added to PBXSourcesBuildPhase, but it shouldn't have been` + `${baseName} was added to PBXSourcesBuildPhase, but it shouldn't have been`, ); } }); @@ -937,12 +938,12 @@ describe("Source code support", () => { const pbxProj = await preparePluginWithFiles( resFileNames, - "prepareResources" + "prepareResources", ); const pbxFileReference = pbxProj.hash.project.objects.PBXFileReference; const pbxFileReferenceValues = Object.keys(pbxFileReference).map( - (key) => pbxFileReference[key] + (key) => pbxFileReference[key], ); const buildPhaseFiles = pbxProj.hash.project.objects.PBXResourcesBuildPhase[ @@ -956,20 +957,20 @@ describe("Source code support", () => { assert.isTrue( pbxFileReferenceValues.indexOf(fileName) !== -1, - `Resource ${filename} not added to PBXFileRefereces` + `Resource ${filename} not added to PBXFileRefereces`, ); const buildPhaseFile = buildPhaseFiles.find((fileObject: any) => - fileObject.comment.startsWith(fileName) + fileObject.comment.startsWith(fileName), ); assert.isDefined( buildPhaseFile, - `${fileToCheck} not added to PBXResourcesBuildPhase` + `${fileToCheck} not added to PBXResourcesBuildPhase`, ); assert.include( buildPhaseFile.comment, "in Resources", - `${fileToCheck} must be added to Resources group` + `${fileToCheck} must be added to Resources group`, ); }); }); @@ -983,18 +984,22 @@ describe("Static libraries support", () => { } const projectName = "TNSApp"; - const projectPath = temp.mkdirSync(projectName); + const projectPath = mkdtempSync(path.join(tmpdir(), `${projectName}-`)); const libraryName = "testLibrary1"; const headers = ["TestHeader1.h", "TestHeader2.h"]; const testInjector = createTestInjector(projectPath, projectName); const fs: IFileSystem = testInjector.resolve("fs"); const staticLibraryPath = join( - join(temp.mkdirSync("pluginDirectory"), "platforms", "ios") + join( + mkdtempSync(path.join(tmpdir(), "pluginDirectory-")), + "platforms", + "ios", + ), ); const staticLibraryHeadersPath = join( staticLibraryPath, "include", - libraryName + libraryName, ); it("checks validation of header files", async () => { @@ -1010,7 +1015,7 @@ describe("Static libraries support", () => { let error: any; try { await iOSProjectService.validateStaticLibrary( - join(staticLibraryPath, libraryName + ".a") + join(staticLibraryPath, libraryName + ".a"), ); } catch (err) { error = err; @@ -1019,7 +1024,7 @@ describe("Static libraries support", () => { assert.instanceOf( error, Error, - "Expect to fail, the .a file is not a static library." + "Expect to fail, the .a file is not a static library.", ); }); @@ -1033,11 +1038,11 @@ describe("Static libraries support", () => { iOSProjectService.generateModulemap(staticLibraryHeadersPath, libraryName); // Read the generated modulemap and verify it. let modulemap = fs.readFile( - join(staticLibraryHeadersPath, "module.modulemap") + join(staticLibraryHeadersPath, "module.modulemap"), ); const headerCommands = _.map(headers, (value) => `header "${value}"`); const modulemapExpectation = `module ${libraryName} { explicit module ${libraryName} { ${headerCommands.join( - " " + " ", )} } }`; assert.equal(modulemap, modulemapExpectation); @@ -1051,7 +1056,7 @@ describe("Static libraries support", () => { let error: any; try { modulemap = fs.readFile( - join(staticLibraryHeadersPath, "module.modulemap") + join(staticLibraryHeadersPath, "module.modulemap"), ); } catch (err) { error = err; @@ -1060,7 +1065,7 @@ describe("Static libraries support", () => { assert.instanceOf( error, Error, - "Expect to fail, there shouldn't be a module.modulemap file." + "Expect to fail, there shouldn't be a module.modulemap file.", ); }); }); @@ -1068,7 +1073,7 @@ describe("Static libraries support", () => { describe("Relative paths", () => { it("checks for correct calculation of relative paths", () => { const projectName = "projectDirectory"; - const projectPath = temp.mkdirSync(projectName); + const projectPath = mkdtempSync(path.join(tmpdir(), `${projectName}-`)); const subpath = join(projectPath, "sub", "path"); const testInjector = createTestInjector(projectPath, projectName); @@ -1078,7 +1083,7 @@ describe("Relative paths", () => { const result = iOSProjectService.getLibSubpathRelativeToProjectPath( subpath, - projectData + projectData, ); assert.equal(result, join("..", "..", "sub", "path")); }); @@ -1087,14 +1092,14 @@ describe("Relative paths", () => { describe("Merge Project XCConfig files", () => { if (require("os").platform() !== "darwin") { console.log( - "Skipping 'Merge Project XCConfig files' tests. They can work only on macOS" + "Skipping 'Merge Project XCConfig files' tests. They can work only on macOS", ); return; } const assertPropertyValues = ( expected: any, xcconfigPath: string, - injector: IInjector + injector: IInjector, ) => { const service = injector.resolve("xcconfigService"); _.forOwn(expected, (value, key) => { @@ -1117,7 +1122,7 @@ describe("Merge Project XCConfig files", () => { beforeEach(() => { projectName = "projectDirectory"; - projectPath = temp.mkdirSync(projectName); + projectPath = mkdtempSync(path.join(tmpdir(), `${projectName}-`)); testInjector = createTestInjector(projectPath, projectName); iOSProjectService = testInjector.resolve("iOSProjectService"); @@ -1126,7 +1131,7 @@ describe("Merge Project XCConfig files", () => { projectData.appResourcesDirectoryPath = join( projectData.projectDir, "app", - "App_Resources" + "App_Resources", ); iOSEntitlementsService = testInjector.resolve("iOSEntitlementsService"); @@ -1134,7 +1139,7 @@ describe("Merge Project XCConfig files", () => { appResourcesXcconfigPath = join( projectData.appResourcesDirectoryPath, "iOS", - BUILD_XCCONFIG_FILE_NAME + BUILD_XCCONFIG_FILE_NAME, ); appResourceXCConfigContent = `CODE_SIGN_IDENTITY = iPhone Distribution // To build for device with XCode you need to specify your development team. More info: https://developer.apple.com/library/prerelease/content/releasenotes/DeveloperTools/RN-Xcode/Introduction.html @@ -1166,7 +1171,7 @@ describe("Merge Project XCConfig files", () => { _.each(destinationFilePaths, (destinationFilePath) => { assert.isTrue( fs.exists(destinationFilePath), - "Target build xcconfig is missing for release: " + release + "Target build xcconfig is missing for release: " + release, ); const expected = { ASSETCATALOG_COMPILER_APPICON_NAME: "AppIcon", @@ -1203,12 +1208,12 @@ describe("Merge Project XCConfig files", () => { _.each(destinationFilePaths, (destinationFilePath) => { assert.isTrue( fs.exists(destinationFilePath), - "Target build xcconfig is missing for release: " + release + "Target build xcconfig is missing for release: " + release, ); const expected = { CODE_SIGN_ENTITLEMENTS: iOSEntitlementsService.getPlatformsEntitlementsRelativePath( - projectData + projectData, ), }; assertPropertyValues(expected, destinationFilePath, testInjector); @@ -1232,7 +1237,7 @@ describe("Merge Project XCConfig files", () => { _.each(destinationFilePaths, (destinationFilePath) => { assert.isTrue( fs.exists(destinationFilePath), - `Target build xcconfig ${destinationFilePath} is missing.` + `Target build xcconfig ${destinationFilePath} is missing.`, ); const expected = { ASSETCATALOG_COMPILER_APPICON_NAME: "AppIcon", @@ -1253,7 +1258,7 @@ describe("Merge Project XCConfig files", () => { _.each(destinationFilePaths, (destinationFilePath) => { assert.isTrue( fs.exists(destinationFilePath), - `Target build xcconfig ${destinationFilePath} is missing.` + `Target build xcconfig ${destinationFilePath} is missing.`, ); const content = fs.readFile(destinationFilePath).toString(); assert.equal(content, ""); @@ -1265,7 +1270,7 @@ describe("handleNativeDependenciesChange", () => { it("ensure the correct order of pod install and merging pod's xcconfig file", async () => { const executedCocoapodsMethods: string[] = []; const projectPodfilePath = "my/test/project/platforms/ios/Podfile"; - const dir = temp.mkdirSync("myTestProjectPath"); + const dir = mkdtempSync(path.join(tmpdir(), "myTestProjectPath-")); const testInjector = createTestInjector(dir, "myTestProjectName"); const iOSProjectService = testInjector.resolve("iOSProjectService"); diff --git a/test/plugin-create.ts b/test/plugin-create.ts index af0f36a028..fdb9e68a93 100644 --- a/test/plugin-create.ts +++ b/test/plugin-create.ts @@ -4,13 +4,13 @@ import { CreatePluginCommand } from "../lib/commands/plugin/create-plugin"; import { assert } from "chai"; import * as helpers from "../lib/common/helpers"; import * as sinon from "sinon"; -import * as temp from "temp"; +import { mkdtempSync } from "fs"; +import { tmpdir } from "os"; import * as path from "path"; import * as util from "util"; import { IOptions } from "../lib/declarations"; import { IInjector } from "../lib/common/definitions/yok"; import { IDictionary } from "../lib/common/declarations"; -temp.track(); interface IPacoteOutput { packageName: string; @@ -123,12 +123,10 @@ describe("Plugin create command tests", () => { const confirmQuestions: IDictionary = {}; strings[createPluginCommand.userMessage] = dummyUser; strings[createPluginCommand.nameMessage] = dummyName; - confirmQuestions[ - createPluginCommand.includeTypeScriptDemoMessage - ] = createDemoProjectAnswer; - confirmQuestions[ - createPluginCommand.includeAngularDemoMessage - ] = createDemoProjectAnswer; + confirmQuestions[createPluginCommand.includeTypeScriptDemoMessage] = + createDemoProjectAnswer; + confirmQuestions[createPluginCommand.includeAngularDemoMessage] = + createDemoProjectAnswer; prompter.expect({ strings: strings, @@ -144,12 +142,10 @@ describe("Plugin create command tests", () => { const strings: IDictionary = {}; const confirmQuestions: IDictionary = {}; strings[createPluginCommand.nameMessage] = dummyName; - confirmQuestions[ - createPluginCommand.includeTypeScriptDemoMessage - ] = createDemoProjectAnswer; - confirmQuestions[ - createPluginCommand.includeAngularDemoMessage - ] = createDemoProjectAnswer; + confirmQuestions[createPluginCommand.includeTypeScriptDemoMessage] = + createDemoProjectAnswer; + confirmQuestions[createPluginCommand.includeAngularDemoMessage] = + createDemoProjectAnswer; prompter.expect({ strings: strings, @@ -166,12 +162,10 @@ describe("Plugin create command tests", () => { const confirmQuestions: IDictionary = {}; strings[createPluginCommand.userMessage] = dummyUser; - confirmQuestions[ - createPluginCommand.includeTypeScriptDemoMessage - ] = createDemoProjectAnswer; - confirmQuestions[ - createPluginCommand.includeAngularDemoMessage - ] = createDemoProjectAnswer; + confirmQuestions[createPluginCommand.includeTypeScriptDemoMessage] = + createDemoProjectAnswer; + confirmQuestions[createPluginCommand.includeAngularDemoMessage] = + createDemoProjectAnswer; prompter.expect({ strings, @@ -188,9 +182,8 @@ describe("Plugin create command tests", () => { const confirmQuestions: IDictionary = {}; strings[createPluginCommand.userMessage] = dummyUser; strings[createPluginCommand.nameMessage] = dummyName; - confirmQuestions[ - createPluginCommand.includeAngularDemoMessage - ] = createDemoProjectAnswer; + confirmQuestions[createPluginCommand.includeAngularDemoMessage] = + createDemoProjectAnswer; prompter.expect({ strings: strings, @@ -208,9 +201,8 @@ describe("Plugin create command tests", () => { strings[createPluginCommand.userMessage] = dummyUser; strings[createPluginCommand.nameMessage] = dummyName; - confirmQuestions[ - createPluginCommand.includeTypeScriptDemoMessage - ] = createDemoProjectAnswer; + confirmQuestions[createPluginCommand.includeTypeScriptDemoMessage] = + createDemoProjectAnswer; prompter.expect({ strings: strings, @@ -236,7 +228,7 @@ describe("Plugin create command tests", () => { beforeEach(() => { sandbox = sinon.createSandbox(); - const workingPath = temp.mkdirSync("test_plugin"); + const workingPath = mkdtempSync(path.join(tmpdir(), "test_plugin-")); options.path = workingPath; projectPath = path.join(workingPath, dummyProjectName); const fsService = testInjector.resolve("fs"); @@ -285,8 +277,8 @@ describe("Plugin create command tests", () => { executePromise, util.format( createPluginCommand.pathAlreadyExistsMessageTemplate, - projectPath - ) + projectPath, + ), ); assert(fsSpy.notCalled); }); diff --git a/test/plugins-service.ts b/test/plugins-service.ts index 99d3aede71..0ea539bfdd 100644 --- a/test/plugins-service.ts +++ b/test/plugins-service.ts @@ -31,8 +31,9 @@ import { ProjectFilesProvider } from "../lib/providers/project-files-provider"; import { DevicePlatformsConstants } from "../lib/common/mobile/device-platforms-constants"; import { SettingsService } from "../lib/common/test/unit-tests/stubs"; import * as StaticConfigLib from "../lib/config"; +import { mkdtempSync } from "fs"; +import { tmpdir } from "os"; import * as path from "path"; -import * as temp from "temp"; import * as _ from "lodash"; import { PLUGINS_BUILD_DATA_FILENAME, PlatformTypes } from "../lib/constants"; // PACKAGE_JSON_FILE_NAME, CONFIG_FILE_NAME_JS, CONFIG_FILE_NAME_TS import { GradleCommandService } from "../lib/services/android/gradle-command-service"; @@ -51,7 +52,6 @@ import { import { FileSystem } from "../lib/common/file-system"; import { ProjectHelper } from "../lib/common/project-helper"; // import { basename } from 'path'; -temp.track(); let isErrorThrown = false; @@ -71,7 +71,7 @@ function createTestInjector() { testInjector.register("packageManager", PackageManager); testInjector.register( "projectConfigService", - stubs.PackageInstallationManagerStub + stubs.PackageInstallationManagerStub, ); testInjector.register("npm", NodePackageManager); testInjector.register("yarn", YarnPackageManager); @@ -149,17 +149,17 @@ function createTestInjector() { Promise.resolve(), interpolatePluginVariables: ( pluginData: IPluginData, - pluginConfigurationFileContent: string + pluginConfigurationFileContent: string, ) => Promise.resolve(pluginConfigurationFileContent), }); testInjector.register( "packageInstallationManager", - PackageInstallationManager + PackageInstallationManager, ); testInjector.register( "localToDevicePathDataFactory", - LocalToDevicePathDataFactory + LocalToDevicePathDataFactory, ); testInjector.register("mobileHelper", MobileHelper); testInjector.register("projectFilesProvider", ProjectFilesProvider); @@ -176,19 +176,19 @@ function createTestInjector() { testInjector.register("extensibilityService", {}); testInjector.register( "androidPluginBuildService", - stubs.AndroidPluginBuildServiceStub + stubs.AndroidPluginBuildServiceStub, ); testInjector.register("analyticsSettingsService", {}); testInjector.register( "androidResourcesMigrationService", - stubs.AndroidResourcesMigrationServiceStub + stubs.AndroidResourcesMigrationServiceStub, ); testInjector.register("platformEnvironmentRequirements", {}); testInjector.register("filesHashService", { hasChangesInShasums: ( oldPluginNativeHashes: IStringDictionary, - currentPluginNativeHashes: IStringDictionary + currentPluginNativeHashes: IStringDictionary, ) => true, generateHashes: async (files: string[]): Promise => ({}), }); @@ -208,7 +208,7 @@ function createTestInjector() { projectData.projectDir, "node_modules", packageToInstall, - "package.json" + "package.json", ); } @@ -221,7 +221,7 @@ function createTestInjector() { extractPackage: async ( packageName: string, destinationDirectory: string, - options?: IPacoteExtractOptions + options?: IPacoteExtractOptions, ): Promise => undefined, }); testInjector.register("gradleCommandService", GradleCommandService); @@ -236,7 +236,7 @@ function createTestInjector() { "projectConfigService", stubs.ProjectConfigServiceStub.initWithConfig({ id: "org.nativescript.Test", - }) + }), ); return testInjector; @@ -244,7 +244,7 @@ function createTestInjector() { function createProjectFile(testInjector: IInjector): string { const fs = testInjector.resolve("fs") as FileSystem; - const tempFolder = temp.mkdirSync("pluginsService"); + const tempFolder = mkdtempSync(path.join(tmpdir(), "pluginsService-")); const options = testInjector.resolve("options"); options.path = tempFolder; @@ -274,11 +274,11 @@ function createProjectFile(testInjector: IInjector): string { function mockBeginCommand( testInjector: IInjector, - expectedErrorMessage: string + expectedErrorMessage: string, ) { const errors = testInjector.resolve("errors"); errors.beginCommand = async ( - action: () => Promise + action: () => Promise, ): Promise => { try { return await action(); @@ -294,7 +294,7 @@ async function addPluginWhenExpectingToFail( testInjector: IInjector, plugin: string, expectedErrorMessage: string, - command?: string + command?: string, ) { createProjectFile(testInjector); @@ -332,7 +332,7 @@ describe("Plugins service", () => { testInjector, null, "You must specify plugin name.", - command + command, ); }); it("fails when invalid nativescript plugin name is specified", async () => { @@ -340,7 +340,7 @@ describe("Plugins service", () => { testInjector, "lodash", "lodash is not a valid NativeScript plugin. Verify that the plugin package.json file contains a nativescript key and try again.", - command + command, ); }); it("fails when the plugin is already installed", async () => { @@ -358,14 +358,14 @@ describe("Plugins service", () => { const pluginsService: IPluginsService = testInjector.resolve("pluginsService"); pluginsService.getAllInstalledPlugins = async ( - projData: IProjectData + projData: IProjectData, ) => { return [{ name: "plugin1" }]; }; mockBeginCommand( testInjector, - "Exception: " + 'Plugin "plugin1" is already installed.' + "Exception: " + 'Plugin "plugin1" is already installed.', ); isErrorThrown = false; @@ -397,14 +397,14 @@ describe("Plugins service", () => { const fs = testInjector.resolve("fs"); fs.writeJson( path.join(pluginFolderPath, "package.json"), - pluginJsonData + pluginJsonData, ); // Adds android platform fs.createDirectory(path.join(projectFolder, "platforms")); fs.createDirectory(path.join(projectFolder, "platforms", "android")); fs.createDirectory( - path.join(projectFolder, "platforms", "android", "app") + path.join(projectFolder, "platforms", "android", "app"), ); // Mock logger.warn @@ -420,21 +420,21 @@ describe("Plugins service", () => { const projectData: IProjectData = testInjector.resolve("projectData"); projectData.initializeProjectData(); pluginsService.getAllInstalledPlugins = async ( - projData: IProjectData + projData: IProjectData, ) => { return [{ name: "" }]; }; // Mock platformsDataService const platformsDataService = testInjector.resolve( - "platformsDataService" + "platformsDataService", ); platformsDataService.getPlatformData = (platform: string) => { return { appDestinationDirectoryPath: path.join( projectFolder, "platforms", - "android" + "android", ), frameworkPackageName: "tns-android", normalizedPlatformName: "Android", @@ -443,7 +443,7 @@ describe("Plugins service", () => { const projectDataService = testInjector.resolve("projectDataService"); projectDataService.getRuntimePackage = ( projectDir: string, - platform: PlatformTypes + platform: PlatformTypes, ) => { return { name: "tns-android", @@ -462,7 +462,7 @@ describe("Plugins service", () => { const pluginsService: IPluginsService = testInjector.resolve("pluginsService"); pluginsService.getAllInstalledPlugins = async ( - projectData: IProjectData + projectData: IProjectData, ) => { return [{ name: "" }]; }; @@ -488,14 +488,14 @@ describe("Plugins service", () => { // Asserts that the plugin is added in package.json file const packageJsonContent = fs.readJson( - path.join(projectFolder, "package.json") + path.join(projectFolder, "package.json"), ); const actualDependencies = packageJsonContent.dependencies; const expectedDependencies = { plugin1: "^1.0.3" }; const expectedDependenciesExact = { plugin1: "1.0.3" }; assert.isTrue( _.isEqual(actualDependencies, expectedDependencies) || - _.isEqual(actualDependencies, expectedDependenciesExact) + _.isEqual(actualDependencies, expectedDependenciesExact), ); }); it("adds plugin by name and version", async () => { @@ -505,7 +505,7 @@ describe("Plugins service", () => { const pluginsService: IPluginsService = testInjector.resolve("pluginsService"); pluginsService.getAllInstalledPlugins = async ( - projectData: IProjectData + projectData: IProjectData, ) => { return [{ name: "" }]; }; @@ -531,14 +531,14 @@ describe("Plugins service", () => { // Assert that the plugin is added in package.json file const packageJsonContent = fs.readJson( - path.join(projectFolder, "package.json") + path.join(projectFolder, "package.json"), ); const actualDependencies = packageJsonContent.dependencies; const expectedDependencies = { plugin1: "^1.0.0" }; const expectedDependenciesExact = { plugin1: "1.0.0" }; assert.isTrue( _.isEqual(actualDependencies, expectedDependencies) || - _.isEqual(actualDependencies, expectedDependenciesExact) + _.isEqual(actualDependencies, expectedDependenciesExact), ); }); it("adds plugin by local path", async () => { @@ -556,13 +556,13 @@ describe("Plugins service", () => { const fs = testInjector.resolve("fs"); fs.writeJson( path.join(pluginFolderPath, "package.json"), - pluginJsonData + pluginJsonData, ); const pluginsService: IPluginsService = testInjector.resolve("pluginsService"); pluginsService.getAllInstalledPlugins = async ( - projectData: IProjectData + projectData: IProjectData, ) => { return [{ name: "" }]; }; @@ -580,7 +580,7 @@ describe("Plugins service", () => { const pluginFiles = ["package.json"]; _.each(pluginFiles, (pluginFile) => { assert.isTrue( - fs.exists(path.join(nodeModulesFolderPath, pluginName, pluginFile)) + fs.exists(path.join(nodeModulesFolderPath, pluginName, pluginFile)), ); }); }); @@ -605,13 +605,13 @@ describe("Plugins service", () => { const fs = testInjector.resolve("fs"); fs.writeJson( path.join(pluginFolderPath, "package.json"), - pluginJsonData + pluginJsonData, ); const pluginsService: IPluginsService = testInjector.resolve("pluginsService"); pluginsService.getAllInstalledPlugins = async ( - projectData: IProjectData + projectData: IProjectData, ) => { return [{ name: "" }]; }; @@ -632,9 +632,9 @@ describe("Plugins service", () => { nodeModulesFolderPath, pluginName, "node_modules", - "grunt" - ) - ) + "grunt", + ), + ), ); }); it("install dev dependencies when --production option is not specified", async () => { @@ -658,13 +658,13 @@ describe("Plugins service", () => { const fs = testInjector.resolve("fs"); fs.writeJson( path.join(pluginFolderPath, "package.json"), - pluginJsonData + pluginJsonData, ); const pluginsService: IPluginsService = testInjector.resolve("pluginsService"); pluginsService.getAllInstalledPlugins = async ( - projectData: IProjectData + projectData: IProjectData, ) => { return [{ name: "" }]; }; @@ -702,7 +702,7 @@ describe("Plugins service", () => { platformProjectService: { preparePluginNativeCode: async ( pluginData: IPluginData, - projData: IProjectData + projData: IProjectData, ) => { testData.isPreparePluginNativeCodeCalled = true; }, @@ -723,7 +723,7 @@ describe("Plugins service", () => { unitTestsInjector.register("filesHashService", { hasChangesInShasums: ( oldPluginNativeHashes: IStringDictionary, - currentPluginNativeHashes: IStringDictionary + currentPluginNativeHashes: IStringDictionary, ) => !!opts.hasChangesInShasums, generateHashes: async (files: string[]): Promise => testData.isPreparePluginNativeCodeCalled && @@ -761,7 +761,7 @@ describe("Plugins service", () => { unitTestsInjector.register("mobileHelper", MobileHelper); unitTestsInjector.register( "devicePlatformsConstants", - DevicePlatformsConstants + DevicePlatformsConstants, ); unitTestsInjector.register("nodeModulesDependenciesBuilder", {}); unitTestsInjector.register("tempService", stubs.TempServiceStub); @@ -854,7 +854,7 @@ describe("Plugins service", () => { unitTestsInjector.register("mobileHelper", MobileHelper); unitTestsInjector.register( "devicePlatformsConstants", - DevicePlatformsConstants + DevicePlatformsConstants, ); unitTestsInjector.register("nodeModulesDependenciesBuilder", {}); unitTestsInjector.register("tempService", stubs.TempServiceStub); @@ -881,7 +881,7 @@ describe("Plugins service", () => { unitTestsInjector.resolve(PluginsService); const pluginData = (pluginsService).convertToPluginData( dataFromPluginPackageJson, - "my project dir" + "my project dir", ); // Remove the comparison of a function delete pluginData["pluginPlatformsFolderPath"]; @@ -901,35 +901,35 @@ describe("Plugins service", () => { unitTestsInjector.resolve(PluginsService); const pluginData = (pluginsService).convertToPluginData( dataFromPluginPackageJson, - "my project dir" + "my project dir", ); const expectediOSPath = path.join(pluginDir, "platforms", "ios"); const expectedAndroidPath = path.join(pluginDir, "platforms", "android"); assert.equal( pluginData.pluginPlatformsFolderPath("iOS"), - expectediOSPath + expectediOSPath, ); assert.equal( pluginData.pluginPlatformsFolderPath("ios"), - expectediOSPath + expectediOSPath, ); assert.equal( pluginData.pluginPlatformsFolderPath("IOS"), - expectediOSPath + expectediOSPath, ); assert.equal( pluginData.pluginPlatformsFolderPath("Android"), - expectedAndroidPath + expectedAndroidPath, ); assert.equal( pluginData.pluginPlatformsFolderPath("android"), - expectedAndroidPath + expectedAndroidPath, ); assert.equal( pluginData.pluginPlatformsFolderPath("ANDROID"), - expectedAndroidPath + expectedAndroidPath, ); }); }); @@ -1142,7 +1142,7 @@ describe("Plugins service", () => { This framework comes from nativescript-ui-core plugin, which is installed multiple times in node_modules:\n` + "* Path: /Users/username/projectDir/node_modules/nativescript-ui-core, version: 3.0.0\n" + "* Path: /Users/username/projectDir/node_modules/nativescript-ui-listview/node_modules/nativescript-ui-core, version: 4.0.0\n\n" + - `Probably you need to update your dependencies, remove node_modules and try again.` + `Probably you need to update your dependencies, remove node_modules and try again.`, ), }, { @@ -1182,13 +1182,13 @@ This framework comes from nativescript-ui-core plugin, which is installed multip `Detected the framework a.framework is installed from multiple plugins at locations:\n` + "/Users/username/projectDir/node_modules/nativescript-ui-core-forked/platforms/ios/a.framework\n".replace( /\//g, - path.sep + path.sep, ) + "/Users/username/projectDir/node_modules/nativescript-ui-core/platforms/ios/a.framework\n\n".replace( /\//g, - path.sep + path.sep, ) + - `Probably you need to update your dependencies, remove node_modules and try again.` + `Probably you need to update your dependencies, remove node_modules and try again.`, ), }, ]; @@ -1205,15 +1205,15 @@ This framework comes from nativescript-ui-core plugin, which is installed multip pluginsService.getAllProductionPlugins( { projectDir: "projectDir" }, "ios", - testCase.inputDependencies + testCase.inputDependencies, ), - testCase.expectedOutput.message + testCase.expectedOutput.message, ); } else { const plugins = pluginsService.getAllProductionPlugins( { projectDir: "projectDir" }, "ios", - testCase.inputDependencies + testCase.inputDependencies, ); if (testCase.expectedWarning) { @@ -1273,7 +1273,7 @@ This framework comes from nativescript-ui-core plugin, which is installed multip pluginsService.getAllProductionPlugins( { projectDir: "projectDir" }, "ios", - inputDependencies + inputDependencies, ); }); @@ -1284,20 +1284,20 @@ This framework comes from nativescript-ui-core plugin, which is installed multip assert.equal( logger.warnOutput, util.format(expectedWarnMessage, "6.3.0"), - "The warn message must be shown only once - the result of the private method must be cached as input dependencies have not changed" + "The warn message must be shown only once - the result of the private method must be cached as input dependencies have not changed", ); inputDependencies[0].version = "1.0.0"; inputDependencies[1].version = "1.0.0"; pluginsService.getAllProductionPlugins( { projectDir: "projectDir" }, "ios", - inputDependencies + inputDependencies, ); assert.equal( logger.warnOutput, util.format(expectedWarnMessage, "6.3.0") + util.format(expectedWarnMessage, "1.0.0"), - "When something in input dependencies change, the cached value shouldn't be taken into account" + "When something in input dependencies change, the cached value shouldn't be taken into account", ); }); }); diff --git a/test/project-changes-service.ts b/test/project-changes-service.ts index 97784fdd31..0085c763d4 100644 --- a/test/project-changes-service.ts +++ b/test/project-changes-service.ts @@ -1,6 +1,7 @@ -import * as path from "path"; import { BaseServiceTest } from "./base-service-test"; -import * as temp from "temp"; +import { mkdtempSync } from "fs"; +import { tmpdir } from "os"; +import * as path from "path"; import * as _ from "lodash"; import { assert } from "chai"; import { PlatformsDataService } from "../lib/services/platforms-data-service"; @@ -17,7 +18,6 @@ import { } from "../lib/definitions/project-changes"; // start tracking temporary folders/files -temp.track(); class ProjectChangesServiceTest extends BaseServiceTest { public projectDir: string; @@ -27,7 +27,7 @@ class ProjectChangesServiceTest extends BaseServiceTest { } initInjector(): void { - this.projectDir = temp.mkdirSync("projectDir"); + this.projectDir = mkdtempSync(path.join(tmpdir(), "projectDir-")); this.injector.register("projectData", { projectDir: this.projectDir, }); @@ -72,7 +72,7 @@ class ProjectChangesServiceTest extends BaseServiceTest { projectRoot: path.join( this.projectDir, "platforms", - platform.toLowerCase() + platform.toLowerCase(), ), platformProjectService: { checkForChanges: async (changesInfo: IProjectChangesInfo) => { @@ -90,11 +90,11 @@ describe("Project Changes Service Tests", () => { const platformsDir = path.join( serviceTest.projectDir, - Constants.PLATFORMS_DIR_NAME + Constants.PLATFORMS_DIR_NAME, ); serviceTest.getNativeProjectDataService.getPlatformData = ( - platform: string + platform: string, ) => { if (platform.toLowerCase() === "ios") { return { @@ -127,14 +127,14 @@ describe("Project Changes Service Tests", () => { for (const platform of ["ios", "android"]) { const actualPrepareInfoPath = serviceTest.projectChangesService.getPrepareInfoFilePath( - serviceTest.getPlatformData(platform) + serviceTest.getPlatformData(platform), ); const expectedPrepareInfoPath = path.join( serviceTest.projectDir, Constants.PLATFORMS_DIR_NAME, platform, - ".nsprepareinfo" + ".nsprepareinfo", ); assert.equal(actualPrepareInfoPath, expectedPrepareInfoPath); } @@ -145,7 +145,7 @@ describe("Project Changes Service Tests", () => { it("Returns empty if file path doesn't exists", () => { for (const platform of ["ios", "android"]) { const projectInfo = serviceTest.projectChangesService.getPrepareInfo( - serviceTest.getPlatformData(platform) + serviceTest.getPlatformData(platform), ); assert.isNull(projectInfo); @@ -160,7 +160,7 @@ describe("Project Changes Service Tests", () => { serviceTest.projectDir, Constants.PLATFORMS_DIR_NAME, platform, - ".nsprepareinfo" + ".nsprepareinfo", ); const expectedPrepareInfo: IPrepareInfo = { time: new Date().toString(), @@ -179,7 +179,7 @@ describe("Project Changes Service Tests", () => { // act const actualPrepareInfo = serviceTest.projectChangesService.getPrepareInfo( - serviceTest.getPlatformData(platform) + serviceTest.getPlatformData(platform), ); // assert @@ -197,11 +197,11 @@ describe("Project Changes Service Tests", () => { { provision: undefined, teamId: undefined, - } + }, ); assert.isTrue( !!iOSChanges.signingChanged, - "iOS signingChanged expected to be true" + "iOS signingChanged expected to be true", ); }); }); @@ -215,12 +215,12 @@ describe("Project Changes Service Tests", () => { { nativePlatformStatus: Constants.NativePlatformStatus.requiresPrepare, - } + }, ); const actualPrepareInfo = serviceTest.projectChangesService.getPrepareInfo( - serviceTest.getPlatformData(platform) + serviceTest.getPlatformData(platform), ); assert.deepStrictEqual(actualPrepareInfo, { @@ -234,15 +234,15 @@ describe("Project Changes Service Tests", () => { await serviceTest.projectChangesService.checkForChanges( serviceTest.getPlatformData(platform), serviceTest.projectData, - {} + {}, ); await serviceTest.projectChangesService.savePrepareInfo( serviceTest.getPlatformData(platform), serviceTest.projectData, - null + null, ); const prepareInfo = serviceTest.projectChangesService.getPrepareInfo( - serviceTest.getPlatformData(platform) + serviceTest.getPlatformData(platform), ); await serviceTest.projectChangesService.setNativePlatformStatus( @@ -251,12 +251,12 @@ describe("Project Changes Service Tests", () => { { nativePlatformStatus: Constants.NativePlatformStatus.alreadyPrepared, - } + }, ); const actualPrepareInfo = serviceTest.projectChangesService.getPrepareInfo( - serviceTest.getPlatformData(platform) + serviceTest.getPlatformData(platform), ); prepareInfo.nativePlatformStatus = Constants.NativePlatformStatus.alreadyPrepared; @@ -275,24 +275,24 @@ describe("Project Changes Service Tests", () => { await serviceTest.projectChangesService.checkForChanges( serviceTest.getPlatformData(platform), serviceTest.projectData, - {} + {}, ); await serviceTest.projectChangesService.setNativePlatformStatus( serviceTest.getPlatformData(platform), serviceTest.projectData, - { nativePlatformStatus: nativePlatformStatus } + { nativePlatformStatus: nativePlatformStatus }, ); const actualPrepareInfo = serviceTest.projectChangesService.getPrepareInfo( - serviceTest.getPlatformData(platform) + serviceTest.getPlatformData(platform), ); assert.deepStrictEqual(actualPrepareInfo, { nativePlatformStatus: nativePlatformStatus, }); } }); - } + }, ); }); }); diff --git a/test/services/android-plugin-build-service.ts b/test/services/android-plugin-build-service.ts index 8c67eebf3d..c2107cf4c1 100644 --- a/test/services/android-plugin-build-service.ts +++ b/test/services/android-plugin-build-service.ts @@ -9,7 +9,8 @@ import { getShortPluginName } from "../../lib/common/helpers"; import * as FsLib from "../../lib/common/file-system"; import * as path from "path"; import * as stubs from "../stubs"; -import * as temp from "temp"; +import { mkdtempSync } from "fs"; +import { tmpdir } from "os"; import { IFileSystem, ISpawnResult, @@ -19,8 +20,6 @@ import { IPluginBuildOptions } from "../../lib/definitions/android-plugin-migrat import { IInjector } from "../../lib/common/definitions/yok"; import { IFilesHashService } from "../../lib/definitions/files-hash-service"; -temp.track(); - describe("androidPluginBuildService", () => { const pluginName = "my-plugin"; const shortPluginName = getShortPluginName(pluginName); @@ -47,8 +46,12 @@ describe("androidPluginBuildService", () => { }): IPluginBuildOptions { options = options || {}; spawnFromEventCalled = false; - tempFolder = temp.mkdirSync("androidPluginBuildService-temp"); - pluginFolder = temp.mkdirSync("androidPluginBuildService-plugin"); + tempFolder = mkdtempSync( + path.join(tmpdir(), "androidPluginBuildService-temp-"), + ); + pluginFolder = mkdtempSync( + path.join(tmpdir(), "androidPluginBuildService-plugin-"), + ); createTestInjector(options); setupPluginFolders(options); @@ -80,7 +83,7 @@ describe("androidPluginBuildService", () => { "build", "outputs", "aar", - finalAarName + finalAarName, ); fs.writeFile(aar, ""); spawnFromEventCalled = command.indexOf("gradlew") !== -1; @@ -91,15 +94,15 @@ describe("androidPluginBuildService", () => { testInjector.register("projectData", stubs.ProjectDataStub); testInjector.register("filesHashService", { generateHashes: async ( - files: string[] + files: string[], ): Promise => ({}), getChanges: async ( files: string[], - oldHashes: IStringDictionary + oldHashes: IStringDictionary, ): Promise => ({}), hasChangesInShasums: ( oldHashes: IStringDictionary, - newHashes: IStringDictionary + newHashes: IStringDictionary, ): boolean => !!options.hasChangesInShasums, }); @@ -109,7 +112,7 @@ describe("androidPluginBuildService", () => { fs = testInjector.resolve("fs"); androidBuildPluginService = testInjector.resolve( - AndroidPluginBuildService + AndroidPluginBuildService, ); // initialize dummy projectData @@ -219,7 +222,7 @@ dependencies { if (options.addManifest) { fs.writeFile( path.join(pluginFolder, "AndroidManifest.xml"), - validAndroidManifestContent + validAndroidManifestContent, ); } @@ -228,7 +231,7 @@ dependencies { fs.createDirectory(valuesFolder); fs.writeFile( path.join(valuesFolder, "strings.xml"), - validStringsXmlContent + validStringsXmlContent, ); } @@ -241,7 +244,7 @@ dependencies { if (options.addLegacyIncludeGradle || options.addIncludeGradle) { fs.writeFile( path.join(pluginFolder, INCLUDE_GRADLE_NAME), - validIncludeGradleContent + validIncludeGradleContent, ); } @@ -329,7 +332,7 @@ dependencies { await androidBuildPluginService.buildAar(config); const actualAndroidVersion = getGradleAndroidPluginVersion( - expectedAndroidVersion + expectedAndroidVersion, ); const actualGradleVersion = getGradleVersion(); @@ -353,7 +356,7 @@ dependencies { await androidBuildPluginService.buildAar(config); const actualAndroidVersion = getGradleAndroidPluginVersion( - expectedAndroidVersion + expectedAndroidVersion, ); const actualGradleVersion = getGradleVersion(); @@ -377,7 +380,7 @@ dependencies { await androidBuildPluginService.buildAar(config); const actualAndroidVersion = getGradleAndroidPluginVersion( - expectedAndroidVersion + expectedAndroidVersion, ); const actualGradleVersion = getGradleVersion(); @@ -399,14 +402,14 @@ dependencies { await androidBuildPluginService.buildAar(config); const actualAndroidVersion = getGradleAndroidPluginVersion( - AndroidBuildDefaults.GradleAndroidPluginVersion + AndroidBuildDefaults.GradleAndroidPluginVersion, ); const actualGradleVersion = getGradleVersion(); assert.equal(actualGradleVersion, AndroidBuildDefaults.GradleVersion); assert.equal( actualAndroidVersion, - AndroidBuildDefaults.GradleAndroidPluginVersion + AndroidBuildDefaults.GradleAndroidPluginVersion, ); assert.isTrue(spawnFromEventCalled); }); @@ -418,11 +421,10 @@ dependencies { addLegacyIncludeGradle: true, }); - const isMigrated = await androidBuildPluginService.migrateIncludeGradle( - config - ); + const isMigrated = + await androidBuildPluginService.migrateIncludeGradle(config); const includeGradleContent = fs.readText( - path.join(pluginFolder, INCLUDE_GRADLE_NAME).toString() + path.join(pluginFolder, INCLUDE_GRADLE_NAME).toString(), ); const areProductFlavorsRemoved = includeGradleContent.indexOf("productFlavors") === -1; @@ -436,9 +438,8 @@ dependencies { addIncludeGradle: true, }); - const isMigrated = await androidBuildPluginService.migrateIncludeGradle( - config - ); + const isMigrated = + await androidBuildPluginService.migrateIncludeGradle(config); assert.isFalse(isMigrated); }); @@ -446,7 +447,7 @@ dependencies { function getGradleAndroidPluginVersion(expected?: string) { const gradleWrappersContent = fs.readText( - path.join(tempFolder, shortPluginName, "build.gradle") + path.join(tempFolder, shortPluginName, "build.gradle"), ); const androidVersionRegex = /com\.android\.tools\.build\:gradle\:(.*)['"]/g; const androidVersion = androidVersionRegex.exec(gradleWrappersContent)[1]; @@ -466,8 +467,8 @@ dependencies { shortPluginName, "gradle", "wrapper", - "gradle-wrapper.properties" - ) + "gradle-wrapper.properties", + ), ); const gradleVersionRegex = /gradle\-(.*)\-bin\.zip\r?\n/g; const gradleVersion = gradleVersionRegex.exec(buildGradleContent)[1]; diff --git a/test/services/android/gradle-build-args-service.ts b/test/services/android/gradle-build-args-service.ts index a0e2ff5cd6..3f2a25f0af 100644 --- a/test/services/android/gradle-build-args-service.ts +++ b/test/services/android/gradle-build-args-service.ts @@ -2,12 +2,12 @@ import { Yok } from "../../../lib/common/yok"; import { GradleBuildArgsService } from "../../../lib/services/android/gradle-build-args-service"; import * as stubs from "../../stubs"; import { assert } from "chai"; -import * as temp from "temp"; +import { mkdtempSync } from "fs"; +import { tmpdir } from "os"; import { IGradleBuildArgsService } from "../../../lib/definitions/gradle"; import { IAndroidBuildData } from "../../../lib/definitions/build"; import { IInjector } from "../../../lib/common/definitions/yok"; import * as path from "path"; -temp.track(); function createTestInjector(): IInjector { const injector = new Yok(); @@ -37,8 +37,8 @@ async function executeTests( testCases: any[], testFunction: ( gradleBuildArgsService: IGradleBuildArgsService, - buildData: IAndroidBuildData - ) => Promise + buildData: IAndroidBuildData, + ) => Promise, ) { for (const testCase of testCases) { it(testCase.name, async () => { @@ -51,21 +51,22 @@ async function executeTests( const gradleBuildArgsService = injector.resolve("gradleBuildArgsService"); const args = await testFunction( gradleBuildArgsService, - testCase.buildConfig + testCase.buildConfig, ); assert.deepStrictEqual(args, testCase.expectedResult); }); } } -const ksPath = temp.path({ prefix: "ksPath" }); +const ksDir = mkdtempSync(path.join(tmpdir(), "ksPath-")); +const ksPath = path.join(ksDir, "keystore.jks"); const expectedInfoLoggingArgs = ["--quiet"]; const expectedTraceLoggingArgs = ["--stacktrace", "--debug"]; const expectedDebugBuildArgs = [ "-PappPath=/path/to/projectDir/app".replace(/\//g, path.sep), "-PappResourcesPath=/path/to/projectDir/app/App_Resources".replace( /\//g, - path.sep + path.sep, ), ]; const expectedReleaseBuildArgs = expectedDebugBuildArgs.concat([ @@ -157,8 +158,8 @@ describe("GradleBuildArgsService", () => { testCases, ( gradleBuildArgsService: IGradleBuildArgsService, - buildData: IAndroidBuildData - ) => gradleBuildArgsService.getBuildTaskArgs(buildData) + buildData: IAndroidBuildData, + ) => gradleBuildArgsService.getBuildTaskArgs(buildData), ); }); @@ -234,8 +235,8 @@ describe("GradleBuildArgsService", () => { testCases, ( gradleBuildArgsService: IGradleBuildArgsService, - buildData: IAndroidBuildData - ) => Promise.resolve(gradleBuildArgsService.getCleanTaskArgs(buildData)) + buildData: IAndroidBuildData, + ) => Promise.resolve(gradleBuildArgsService.getCleanTaskArgs(buildData)), ); }); }); diff --git a/test/services/livesync/android-livesync-tool.ts b/test/services/livesync/android-livesync-tool.ts index e81384d317..712cecd59f 100644 --- a/test/services/livesync/android-livesync-tool.ts +++ b/test/services/livesync/android-livesync-tool.ts @@ -9,12 +9,12 @@ import { MobileHelper } from "../../../lib/common/mobile/mobile-helper"; import { FileSystem } from "../../../lib/common/file-system"; import { DevicePlatformsConstants } from "../../../lib/common/mobile/device-platforms-constants"; import * as path from "path"; -import * as temp from "temp"; +import { mkdtempSync } from "fs"; +import { tmpdir } from "os"; import * as crypto from "crypto"; import { IInjector } from "../../../lib/common/definitions/yok"; import { IDictionary } from "../../../lib/common/declarations"; -temp.track(); const protocolVersion = "0.2.0"; class TestSocket extends LiveSyncSocket { @@ -58,7 +58,7 @@ const fileContents = { }; const projectCreated = false; -const testAppPath = temp.mkdirSync("testsyncapp"); +const testAppPath = mkdtempSync(path.join(tmpdir(), "testsyncapp-")); const testAppPlatformPath = path.join( testAppPath, "platforms", diff --git a/test/stubs.ts b/test/stubs.ts index 7ec3580891..29545654d8 100644 --- a/test/stubs.ts +++ b/test/stubs.ts @@ -9,7 +9,9 @@ import { Yok } from "./../lib/common/yok"; import { HostInfo } from "./../lib/common/host-info"; import { DevicePlatformsConstants } from "./../lib/common/mobile/device-platforms-constants"; import { PrepareData } from "../lib/data/prepare-data"; -import * as temp from "temp"; +import { mkdtempSync } from "fs"; +import { tmpdir } from "os"; +import * as path from "path"; import { IPackageInstallationManager, INpmInstallOptions, @@ -87,16 +89,13 @@ import { } from "../lib/common/definitions/google-analytics"; import * as _ from "lodash"; import { SupportedConfigValues } from "../lib/tools/config-manipulation/config-transformer"; -import { AffixOptions } from "temp"; -import { ITempService } from "../lib/definitions/temp-service"; +import { AffixOptions, ITempService } from "../lib/definitions/temp-service"; import { ITerminalSpinner, ITerminalSpinnerOptions, ITerminalSpinnerService, } from "../lib/definitions/terminal-spinner-service"; -temp.track(); - export class LoggerStub implements ILogger { initialize(opts?: ILoggerOptions): void {} @@ -1518,10 +1517,17 @@ export class InjectorStub extends Yok implements IInjector { export class TempServiceStub implements ITempService { public async mkdirSync(affixes: string): Promise { - return temp.mkdirSync(affixes); + const prefix = typeof affixes === "string" ? affixes : "tmp"; + return mkdtempSync(path.join(tmpdir(), `${prefix}-`)); } public async path(options: string | AffixOptions): Promise { - return temp.path(options); + const opts: AffixOptions = + typeof options === "string" ? { prefix: options } : options || {}; + const dir = opts.dir || tmpdir(); + const prefix = opts.prefix || "tmp"; + const suffix = opts.suffix || ""; + const name = `${prefix}-${Date.now()}-${Math.random().toString(16).slice(2)}${suffix}`; + return path.join(dir, name); } } diff --git a/test/tools/node-modules/node-modules-dependencies-builder.ts b/test/tools/node-modules/node-modules-dependencies-builder.ts index 5494b159bb..8ea64163ef 100644 --- a/test/tools/node-modules/node-modules-dependencies-builder.ts +++ b/test/tools/node-modules/node-modules-dependencies-builder.ts @@ -7,794 +7,813 @@ import * as constants from "../../../lib/constants"; import { IDependencyData } from "../../../lib/declarations"; import { INodeModulesDependenciesBuilder } from "../../../lib/definitions/platform"; import { IInjector } from "../../../lib/common/definitions/yok"; -import { IFileSystem, IStringDictionary, } from "../../../lib/common/declarations"; -import * as temp from 'temp' -import * as fs from 'fs'; +import { + IFileSystem, + IStringDictionary, +} from "../../../lib/common/declarations"; +import * as os from "os"; +import * as fs from "fs"; import { FileSystem } from "../../../lib/common/file-system"; interface IDependencyInfo { - name: string; - version: string; - depth: number; - dependencies?: IDependencyInfo[]; - nativescript?: any; - isDevDependency?: boolean; + name: string; + version: string; + depth: number; + dependencies?: IDependencyInfo[]; + nativescript?: any; + isDevDependency?: boolean; } // TODO: Add integration tests. // The tests assumes npm 3 or later is used, so all dependencies (and their dependencies) will be installed at the root node_modules describe("nodeModulesDependenciesBuilder", () => { - let pathToProject: string = 'test-project'; - - beforeEach(() => { - // we use realpath because os.tmpdir points to a symlink on macos - // and require.resolve resolves the symlink causing test failures - pathToProject = fs.realpathSync( - temp.mkdirSync("test-project") - ); - }) - - const getTestInjector = (): IInjector => { - const testInjector = new Yok(); - testInjector.register("fs", FileSystem); - - return testInjector; - }; - - describe("getProductionDependencies", () => { - describe("returns empty array", () => { - const validateResultIsEmpty = async (resultOfReadJson: any) => { - const testInjector = getTestInjector(); - const fs = testInjector.resolve("fs"); - fs.readJson = (filename: string, encoding?: string): any => { - return resultOfReadJson; - }; - - const nodeModulesDependenciesBuilder = testInjector.resolve(NodeModulesDependenciesBuilder); - const result = await nodeModulesDependenciesBuilder.getProductionDependencies( - pathToProject - ); - - assert.deepStrictEqual(result, []); - }; - - it("when package.json does not have any data", async () => { - await validateResultIsEmpty(null); - }); - - it("when package.json does not have dependencies section", async () => { - await validateResultIsEmpty({ - name: "some name", - devDependencies: { a: "1.0.0" }, - }); - }); - }); - - describe("returns correct dependencies", () => { - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Helper functions for easier writing of consecutive tests in the suite. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - const getPathToDependencyInNodeModules = ( - dependencyName: string, - parentDir?: string - ): string => { - return path.join( - parentDir ?? pathToProject, - constants.NODE_MODULES_FOLDER_NAME, - dependencyName - ); - }; - - const getNodeModuleInfoForExpectedDependency = ( - dir: string, - depth: number, - nativescript?: any, - dependencies?: string[], - name?: string, - version?: string - ): IDependencyData => { - const packageName = name ?? path.basename(dir); - const result: IDependencyData = { - name: packageName, - directory: getPathToDependencyInNodeModules(dir), - depth, - dependencies: dependencies || [], - version: version, - }; - - if (nativescript) { - result.nativescript = nativescript; - } - - return result; - }; - - const getPathToPackageJsonOfDependency = ( - dependencyName: string, - parentDir?: string - ): string => { - return path.join( - getPathToDependencyInNodeModules(dependencyName, parentDir), - constants.PACKAGE_JSON_FILE_NAME - ); - }; - - const getDependenciesObjectFromDependencyInfo = ( - depInfos: IDependencyInfo[], - nativescript: any, - version: string - ): { - dependencies: IStringDictionary; - nativescript?: any; - devDependencies: IStringDictionary; - version: string; - } => { - const dependencies: any = {}; - const devDependencies: any = {}; - _.each(depInfos, (innerDependency) => { - if (innerDependency.isDevDependency) { - devDependencies[innerDependency.name] = innerDependency.version; - } else { - dependencies[innerDependency.name] = innerDependency.version; - } - }); - - const result: any = { - dependencies, - devDependencies, - }; - - if (nativescript) { - result.nativescript = nativescript; - } - - if (version) { - result.version = version; - } - - return result; - }; - - const getDependenciesObject = ( - filename: string, - deps: IDependencyInfo[], - parentDir: string - ): { - dependencies: IStringDictionary; - nativescript?: any; - devDependencies: IStringDictionary; - } => { - let result: { - dependencies: IStringDictionary; - nativescript?: any; - devDependencies: IStringDictionary; - } = null; - for (const dependencyInfo of deps) { - const pathToPackageJson = getPathToPackageJsonOfDependency( - dependencyInfo.name, - parentDir - ); - if (filename === pathToPackageJson) { - return getDependenciesObjectFromDependencyInfo( - dependencyInfo.dependencies, - dependencyInfo.nativescript, - dependencyInfo.version - ); - } - - if (dependencyInfo.dependencies) { - result = getDependenciesObject( - filename, - dependencyInfo.dependencies, - path.join( - parentDir, - constants.NODE_MODULES_FOLDER_NAME, - dependencyInfo.name - ) - ); - if (result) { - break; - } - } - } - - return result; - }; - - const generatePackageJsonData = ( - dep: IDependencyInfo - ) => { - const data: any = { - name: dep.name, - version: dep.version, - dependencies: dep.dependencies?.reduce((deps, dep) => { - if (!dep.isDevDependency) { - deps[dep.name] = dep.version - } - return deps; - }, {} as { [name: string]: string }), - devDependencies: dep.dependencies?.reduce((deps, dep) => { - if (dep.isDevDependency) { - deps[dep.name] = dep.version - } - return deps; - }, {} as { [name: string]: string }) - } - - if(dep.nativescript) { - data.nativescript = dep.nativescript; - } - - return data; - } - - const generateNodeModules = ( - dep: IDependencyInfo, - rootPath: string) => { - // ensure dep directory - fs.mkdirSync(rootPath, { recursive: true }); - - // generate package.json contents - const packageJsonData = generatePackageJsonData(dep); - - // write package.json - fs.writeFileSync( - path.join(rootPath, 'package.json'), - JSON.stringify(packageJsonData) - ) - - // recurse into sub-dependencies if any - if (dep.dependencies) { - for (const subDep of dep.dependencies) { - generateNodeModules( - subDep, - path.join(rootPath, 'node_modules', subDep.name) - ); - } - } - } - - const generateTest = ( - rootDeps: IDependencyInfo[] - ): INodeModulesDependenciesBuilder => { - const testInjector = getTestInjector(); - const nodeModulesDependenciesBuilder = testInjector.resolve(NodeModulesDependenciesBuilder); - - generateNodeModules( - { - name: 'test-project', - version: '1.0.0', - depth: 0, - dependencies: rootDeps - }, - pathToProject - ); - - return nodeModulesDependenciesBuilder; - }; - - const generateDependency = ( - name: string, - version: string, - depth: number, - dependencies: IDependencyInfo[], - nativescript?: any, - opts?: { isDevDependency: boolean } - ): IDependencyInfo => { - return { - name, - version, - depth, - dependencies, - nativescript, - isDevDependency: !!(opts && opts.isDevDependency), - }; - }; - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * END of helper functions for easier writing of consecutive tests in the suite. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - const firstPackage = "firstPackage"; - const secondPackage = "secondPackage"; - const thirdPackage = "thirdPackage"; - - it("when there are both dependencies and devDependencies installed", async () => { - // The test validates the following dependency tree, when npm 3+ is used. - // - // ├── firstPackage@1.0.0 - // ├── secondPackage@1.1.0 - // └── thirdPackage@1.2.0 // this is devDependency - - const rootDeps: IDependencyInfo[] = [ - generateDependency(firstPackage, "1.0.0", 0, null), - generateDependency(secondPackage, "1.1.0", 0, null), - generateDependency(thirdPackage, "1.2.0", 0, null, null, { - isDevDependency: true, - }), - ]; - - const nodeModulesDependenciesBuilder = generateTest(rootDeps); - const actualResult = await nodeModulesDependenciesBuilder.getProductionDependencies( - pathToProject - ); - - const expectedResult: IDependencyData[] = [ - getNodeModuleInfoForExpectedDependency( - firstPackage, - 0, - null, - null, - null, - "1.0.0" - ), - getNodeModuleInfoForExpectedDependency( - secondPackage, - 0, - null, - null, - null, - "1.1.0" - ), - ]; - - assert.deepStrictEqual(actualResult, expectedResult); - }); - - it("when there are both dependencies and devDependencies installed, does not handle dependencies of devDependencies", async () => { - // The test validates the following dependency tree, when npm 3+ is used. - // - // ├─┬ firstPackage@1.0.0 // this is devDependency - // │ └── secondPackage@1.2.0 - // └── secondPackage@1.1.0 - - const rootDeps: IDependencyInfo[] = [ - generateDependency( - firstPackage, - "1.0.0", - 0, - [generateDependency(secondPackage, "1.2.0", 1, null)], - null, - { isDevDependency: true } - ), - generateDependency(secondPackage, "1.1.0", 0, null), - ]; - - const expectedResult: IDependencyData[] = [ - getNodeModuleInfoForExpectedDependency( - secondPackage, - 0, - null, - null, - null, - "1.1.0" - ), - ]; - - const nodeModulesDependenciesBuilder = generateTest(rootDeps); - const actualResult = await nodeModulesDependenciesBuilder.getProductionDependencies( - pathToProject - ); - assert.deepStrictEqual(actualResult, expectedResult); - }); - - it("when there are scoped dependencies", async () => { - // The test validates the following dependency tree, when npm 3+ is used. - // - // ├─┬ @scope/firstPackage@1.0.0 - // │ └── secondPackage@1.2.0 - // └── secondPackage@1.1.0 - - const scopedPackageName = `@scope/${firstPackage}`; - const rootDeps: IDependencyInfo[] = [ - generateDependency(scopedPackageName, "1.0.0", 0, [ - generateDependency(secondPackage, "1.2.0", 1, null), - ]), - generateDependency(secondPackage, "1.1.0", 0, null), - ]; - - const expectedResult: IDependencyData[] = [ - getNodeModuleInfoForExpectedDependency( - scopedPackageName, - 0, - null, - [secondPackage], - scopedPackageName, - "1.0.0" - ), - getNodeModuleInfoForExpectedDependency( - secondPackage, - 0, - null, - null, - null, - "1.1.0" - ), - getNodeModuleInfoForExpectedDependency( - path.join( - scopedPackageName, - constants.NODE_MODULES_FOLDER_NAME, - secondPackage - ), - 1, - null, - null, - null, - "1.2.0" - ), - ]; - - const nodeModulesDependenciesBuilder = generateTest(rootDeps); - const actualResult = await nodeModulesDependenciesBuilder.getProductionDependencies( - pathToProject - ); - assert.deepStrictEqual(actualResult, expectedResult); - }); - - it("when there are scoped dependencies as dependency of other non-scoped dependency", async () => { - // The test validates the following dependency tree, when npm 3+ is used. - // - // ├─┬ firstPackage@1.0.0 - // │ └── @scope/secondPackage@1.2.0 - // └── thirdPackage@1.1.0 - - const scopedPackageName = `@scope/${secondPackage}`; - const rootDeps: IDependencyInfo[] = [ - generateDependency(firstPackage, "1.0.0", 0, [ - generateDependency(scopedPackageName, "1.2.0", 1, null), - ]), - generateDependency(thirdPackage, "1.1.0", 0, null), - ]; - - const expectedResult: IDependencyData[] = [ - getNodeModuleInfoForExpectedDependency( - firstPackage, - 0, - null, - [scopedPackageName], - null, - "1.0.0" - ), - getNodeModuleInfoForExpectedDependency( - thirdPackage, - 0, - null, - null, - null, - "1.1.0" - ), - getNodeModuleInfoForExpectedDependency( - path.join( - firstPackage, - constants.NODE_MODULES_FOLDER_NAME, - scopedPackageName - ), - 1, - null, - null, - scopedPackageName, - "1.2.0" - ), - ]; - - const nodeModulesDependenciesBuilder = generateTest(rootDeps); - const actualResult = await nodeModulesDependenciesBuilder.getProductionDependencies( - pathToProject - ); - assert.deepStrictEqual(actualResult, expectedResult); - }); - - it("when all dependencies are installed at the root level of the project", async () => { - // The test validates the following dependency tree, when npm 3+ is used. - // - // ├── firstPackage@1.0.0 - // ├── secondPackage@1.1.0 - // └── thirdPackage@1.2.0 - - const rootDeps: IDependencyInfo[] = [ - generateDependency(firstPackage, "1.0.0", 0, null), - generateDependency(secondPackage, "1.1.0", 0, null), - generateDependency(thirdPackage, "1.2.0", 0, null), - ]; - - const nodeModulesDependenciesBuilder = generateTest(rootDeps); - const actualResult = await nodeModulesDependenciesBuilder.getProductionDependencies( - pathToProject - ); - - const expectedResult: IDependencyData[] = [ - getNodeModuleInfoForExpectedDependency( - firstPackage, - 0, - null, - null, - null, - "1.0.0" - ), - getNodeModuleInfoForExpectedDependency( - secondPackage, - 0, - null, - null, - null, - "1.1.0" - ), - getNodeModuleInfoForExpectedDependency( - thirdPackage, - 0, - null, - null, - null, - "1.2.0" - ), - ]; - - assert.deepStrictEqual(actualResult, expectedResult); - }); - - it("when the project has a dependency to a package and one of the other packages has dependency to other version of this package", async () => { - // The test validates the following dependency tree, when npm 3+ is used. - // - // ├─┬ firstPackage@1.0.0 - // │ └── secondPackage@1.2.0 - // └── secondPackage@1.1.0 - - const rootDeps: IDependencyInfo[] = [ - generateDependency(firstPackage, "1.0.0", 0, [ - generateDependency(secondPackage, "1.2.0", 1, null), - ]), - generateDependency(secondPackage, "1.1.0", 0, null), - ]; - - const expectedResult: IDependencyData[] = [ - getNodeModuleInfoForExpectedDependency( - firstPackage, - 0, - null, - [secondPackage], - null, - "1.0.0" - ), - getNodeModuleInfoForExpectedDependency( - secondPackage, - 0, - null, - null, - null, - "1.1.0" - ), - getNodeModuleInfoForExpectedDependency( - path.join( - firstPackage, - constants.NODE_MODULES_FOLDER_NAME, - secondPackage - ), - 1, - null, - null, - null, - "1.2.0" - ), - ]; - - const nodeModulesDependenciesBuilder = generateTest(rootDeps); - const actualResult = await nodeModulesDependenciesBuilder.getProductionDependencies( - pathToProject - ); - assert.deepStrictEqual(actualResult, expectedResult); - }); - - it("when several package depend on different versions of other packages", async () => { - // The test validates the following dependency tree, when npm 3+ is used. - // - // ├─┬ firstPackage@1.0.0 - // │ ├─┬ secondPackage@1.1.0 - // │ │ └── thirdPackage@1.2.0 - // │ └── thirdPackage@1.1.0 - // ├── secondPackage@1.0.0 - // └── thirdPackage@1.0.0 - - const rootDeps: IDependencyInfo[] = [ - generateDependency(firstPackage, "1.0.0", 0, [ - generateDependency(secondPackage, "1.1.0", 1, [ - generateDependency(thirdPackage, "1.2.0", 2, null), - ]), - generateDependency(thirdPackage, "1.1.0", 1, null), - ]), - generateDependency(secondPackage, "1.0.0", 0, null), - generateDependency(thirdPackage, "1.0.0", 0, null), - ]; - - const pathToSecondPackageInsideFirstPackage = path.join( - firstPackage, - constants.NODE_MODULES_FOLDER_NAME, - secondPackage - ); - const expectedResult: IDependencyData[] = [ - getNodeModuleInfoForExpectedDependency( - firstPackage, - 0, - null, - [secondPackage, thirdPackage], - null, - "1.0.0" - ), - getNodeModuleInfoForExpectedDependency( - secondPackage, - 0, - null, - null, - null, - "1.0.0" - ), - getNodeModuleInfoForExpectedDependency( - thirdPackage, - 0, - null, - null, - null, - "1.0.0" - ), - getNodeModuleInfoForExpectedDependency( - pathToSecondPackageInsideFirstPackage, - 1, - null, - [thirdPackage], - null, - "1.1.0" - ), - getNodeModuleInfoForExpectedDependency( - path.join( - firstPackage, - constants.NODE_MODULES_FOLDER_NAME, - thirdPackage - ), - 1, - null, - null, - null, - "1.1.0" - ), - getNodeModuleInfoForExpectedDependency( - path.join( - pathToSecondPackageInsideFirstPackage, - constants.NODE_MODULES_FOLDER_NAME, - thirdPackage - ), - 2, - null, - null, - null, - "1.2.0" - ), - ]; - - const nodeModulesDependenciesBuilder = generateTest(rootDeps); - const actualResult = await nodeModulesDependenciesBuilder.getProductionDependencies( - pathToProject - ); - assert.deepStrictEqual(actualResult, expectedResult); - }); - - it("when the installed packages have nativescript data in their package.json", async () => { - // The test validates the following dependency tree, when npm 3+ is used. - // - // ├── firstPackage@1.0.0 - // ├── secondPackage@1.1.0 - // └── thirdPackage@1.2.0 - - const getNativeScriptDataForPlugin = (pluginName: string): any => { - return { - platforms: { - "tns-android": "x.x.x", - "tns-ios": "x.x.x", - }, - - customPropertyUsedForThisTestOnly: pluginName, - }; - }; - - const rootDeps: IDependencyInfo[] = [ - generateDependency( - firstPackage, - "1.0.0", - 0, - null, - getNativeScriptDataForPlugin(firstPackage) - ), - generateDependency( - secondPackage, - "1.1.0", - 0, - null, - getNativeScriptDataForPlugin(secondPackage) - ), - generateDependency( - thirdPackage, - "1.2.0", - 0, - null, - getNativeScriptDataForPlugin(thirdPackage) - ), - ]; - - const nodeModulesDependenciesBuilder = generateTest(rootDeps); - const actualResult = await nodeModulesDependenciesBuilder.getProductionDependencies( - pathToProject - ); - - const expectedResult: IDependencyData[] = [ - getNodeModuleInfoForExpectedDependency( - firstPackage, - 0, - getNativeScriptDataForPlugin(firstPackage), - null, - null, - "1.0.0" - ), - getNodeModuleInfoForExpectedDependency( - secondPackage, - 0, - getNativeScriptDataForPlugin(secondPackage), - null, - null, - "1.1.0" - ), - getNodeModuleInfoForExpectedDependency( - thirdPackage, - 0, - getNativeScriptDataForPlugin(thirdPackage), - null, - null, - "1.2.0" - ), - ]; - - assert.deepStrictEqual(actualResult, expectedResult); - }); - - it("ignoring dependencies", async () => { - // The test validates the following dependency tree, when npm 3+ is used. - // - // ├── firstPackage@1.0.0 - // ├── secondPackage@1.1.0 - // └── thirdPackage@1.2.0 - - const rootDeps: IDependencyInfo[] = [ - generateDependency(firstPackage, "1.0.0", 0, null), - generateDependency(secondPackage, "1.1.0", 0, null), - generateDependency(thirdPackage, "1.2.0", 0, null), - ]; - - const nodeModulesDependenciesBuilder = generateTest(rootDeps); - const actualResult = await nodeModulesDependenciesBuilder.getProductionDependencies( - pathToProject, [firstPackage] - ); - - const expectedResult: IDependencyData[] = [ - getNodeModuleInfoForExpectedDependency( - secondPackage, - 0, - null, - null, - null, - "1.1.0" - ), - getNodeModuleInfoForExpectedDependency( - thirdPackage, - 0, - null, - null, - null, - "1.2.0" - ), - ]; - - assert.deepStrictEqual(actualResult, expectedResult); - }); - }); - }) - ; -}) -; + let pathToProject: string = "test-project"; + + beforeEach(() => { + // we use realpath because os.tmpdir points to a symlink on macos + // and require.resolve resolves the symlink causing test failures + const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "test-project-")); + pathToProject = fs.realpathSync(tmpDir); + }); + + const getTestInjector = (): IInjector => { + const testInjector = new Yok(); + testInjector.register("fs", FileSystem); + + return testInjector; + }; + + describe("getProductionDependencies", () => { + describe("returns empty array", () => { + const validateResultIsEmpty = async (resultOfReadJson: any) => { + const testInjector = getTestInjector(); + const fs = testInjector.resolve("fs"); + fs.readJson = (filename: string, encoding?: string): any => { + return resultOfReadJson; + }; + + const nodeModulesDependenciesBuilder = + testInjector.resolve( + NodeModulesDependenciesBuilder, + ); + const result = + await nodeModulesDependenciesBuilder.getProductionDependencies( + pathToProject, + ); + + assert.deepStrictEqual(result, []); + }; + + it("when package.json does not have any data", async () => { + await validateResultIsEmpty(null); + }); + + it("when package.json does not have dependencies section", async () => { + await validateResultIsEmpty({ + name: "some name", + devDependencies: { a: "1.0.0" }, + }); + }); + }); + + describe("returns correct dependencies", () => { + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Helper functions for easier writing of consecutive tests in the suite. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + + const getPathToDependencyInNodeModules = ( + dependencyName: string, + parentDir?: string, + ): string => { + return path.join( + parentDir ?? pathToProject, + constants.NODE_MODULES_FOLDER_NAME, + dependencyName, + ); + }; + + const getNodeModuleInfoForExpectedDependency = ( + dir: string, + depth: number, + nativescript?: any, + dependencies?: string[], + name?: string, + version?: string, + ): IDependencyData => { + const packageName = name ?? path.basename(dir); + const result: IDependencyData = { + name: packageName, + directory: getPathToDependencyInNodeModules(dir), + depth, + dependencies: dependencies || [], + version: version, + }; + + if (nativescript) { + result.nativescript = nativescript; + } + + return result; + }; + + const getPathToPackageJsonOfDependency = ( + dependencyName: string, + parentDir?: string, + ): string => { + return path.join( + getPathToDependencyInNodeModules(dependencyName, parentDir), + constants.PACKAGE_JSON_FILE_NAME, + ); + }; + + const getDependenciesObjectFromDependencyInfo = ( + depInfos: IDependencyInfo[], + nativescript: any, + version: string, + ): { + dependencies: IStringDictionary; + nativescript?: any; + devDependencies: IStringDictionary; + version: string; + } => { + const dependencies: any = {}; + const devDependencies: any = {}; + _.each(depInfos, (innerDependency) => { + if (innerDependency.isDevDependency) { + devDependencies[innerDependency.name] = innerDependency.version; + } else { + dependencies[innerDependency.name] = innerDependency.version; + } + }); + + const result: any = { + dependencies, + devDependencies, + }; + + if (nativescript) { + result.nativescript = nativescript; + } + + if (version) { + result.version = version; + } + + return result; + }; + + const getDependenciesObject = ( + filename: string, + deps: IDependencyInfo[], + parentDir: string, + ): { + dependencies: IStringDictionary; + nativescript?: any; + devDependencies: IStringDictionary; + } => { + let result: { + dependencies: IStringDictionary; + nativescript?: any; + devDependencies: IStringDictionary; + } = null; + for (const dependencyInfo of deps) { + const pathToPackageJson = getPathToPackageJsonOfDependency( + dependencyInfo.name, + parentDir, + ); + if (filename === pathToPackageJson) { + return getDependenciesObjectFromDependencyInfo( + dependencyInfo.dependencies, + dependencyInfo.nativescript, + dependencyInfo.version, + ); + } + + if (dependencyInfo.dependencies) { + result = getDependenciesObject( + filename, + dependencyInfo.dependencies, + path.join( + parentDir, + constants.NODE_MODULES_FOLDER_NAME, + dependencyInfo.name, + ), + ); + if (result) { + break; + } + } + } + + return result; + }; + + const generatePackageJsonData = (dep: IDependencyInfo) => { + const data: any = { + name: dep.name, + version: dep.version, + dependencies: dep.dependencies?.reduce( + (deps, dep) => { + if (!dep.isDevDependency) { + deps[dep.name] = dep.version; + } + return deps; + }, + {} as { [name: string]: string }, + ), + devDependencies: dep.dependencies?.reduce( + (deps, dep) => { + if (dep.isDevDependency) { + deps[dep.name] = dep.version; + } + return deps; + }, + {} as { [name: string]: string }, + ), + }; + + if (dep.nativescript) { + data.nativescript = dep.nativescript; + } + + return data; + }; + + const generateNodeModules = (dep: IDependencyInfo, rootPath: string) => { + // ensure dep directory + fs.mkdirSync(rootPath, { recursive: true }); + + // generate package.json contents + const packageJsonData = generatePackageJsonData(dep); + + // write package.json + fs.writeFileSync( + path.join(rootPath, "package.json"), + JSON.stringify(packageJsonData), + ); + + // recurse into sub-dependencies if any + if (dep.dependencies) { + for (const subDep of dep.dependencies) { + generateNodeModules( + subDep, + path.join(rootPath, "node_modules", subDep.name), + ); + } + } + }; + + const generateTest = ( + rootDeps: IDependencyInfo[], + ): INodeModulesDependenciesBuilder => { + const testInjector = getTestInjector(); + const nodeModulesDependenciesBuilder = + testInjector.resolve( + NodeModulesDependenciesBuilder, + ); + + generateNodeModules( + { + name: "test-project", + version: "1.0.0", + depth: 0, + dependencies: rootDeps, + }, + pathToProject, + ); + + return nodeModulesDependenciesBuilder; + }; + + const generateDependency = ( + name: string, + version: string, + depth: number, + dependencies: IDependencyInfo[], + nativescript?: any, + opts?: { isDevDependency: boolean }, + ): IDependencyInfo => { + return { + name, + version, + depth, + dependencies, + nativescript, + isDevDependency: !!(opts && opts.isDevDependency), + }; + }; + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * END of helper functions for easier writing of consecutive tests in the suite. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + + const firstPackage = "firstPackage"; + const secondPackage = "secondPackage"; + const thirdPackage = "thirdPackage"; + + it("when there are both dependencies and devDependencies installed", async () => { + // The test validates the following dependency tree, when npm 3+ is used. + // + // ├── firstPackage@1.0.0 + // ├── secondPackage@1.1.0 + // └── thirdPackage@1.2.0 // this is devDependency + + const rootDeps: IDependencyInfo[] = [ + generateDependency(firstPackage, "1.0.0", 0, null), + generateDependency(secondPackage, "1.1.0", 0, null), + generateDependency(thirdPackage, "1.2.0", 0, null, null, { + isDevDependency: true, + }), + ]; + + const nodeModulesDependenciesBuilder = generateTest(rootDeps); + const actualResult = + await nodeModulesDependenciesBuilder.getProductionDependencies( + pathToProject, + ); + + const expectedResult: IDependencyData[] = [ + getNodeModuleInfoForExpectedDependency( + firstPackage, + 0, + null, + null, + null, + "1.0.0", + ), + getNodeModuleInfoForExpectedDependency( + secondPackage, + 0, + null, + null, + null, + "1.1.0", + ), + ]; + + assert.deepStrictEqual(actualResult, expectedResult); + }); + + it("when there are both dependencies and devDependencies installed, does not handle dependencies of devDependencies", async () => { + // The test validates the following dependency tree, when npm 3+ is used. + // + // ├─┬ firstPackage@1.0.0 // this is devDependency + // │ └── secondPackage@1.2.0 + // └── secondPackage@1.1.0 + + const rootDeps: IDependencyInfo[] = [ + generateDependency( + firstPackage, + "1.0.0", + 0, + [generateDependency(secondPackage, "1.2.0", 1, null)], + null, + { isDevDependency: true }, + ), + generateDependency(secondPackage, "1.1.0", 0, null), + ]; + + const expectedResult: IDependencyData[] = [ + getNodeModuleInfoForExpectedDependency( + secondPackage, + 0, + null, + null, + null, + "1.1.0", + ), + ]; + + const nodeModulesDependenciesBuilder = generateTest(rootDeps); + const actualResult = + await nodeModulesDependenciesBuilder.getProductionDependencies( + pathToProject, + ); + assert.deepStrictEqual(actualResult, expectedResult); + }); + + it("when there are scoped dependencies", async () => { + // The test validates the following dependency tree, when npm 3+ is used. + // + // ├─┬ @scope/firstPackage@1.0.0 + // │ └── secondPackage@1.2.0 + // └── secondPackage@1.1.0 + + const scopedPackageName = `@scope/${firstPackage}`; + const rootDeps: IDependencyInfo[] = [ + generateDependency(scopedPackageName, "1.0.0", 0, [ + generateDependency(secondPackage, "1.2.0", 1, null), + ]), + generateDependency(secondPackage, "1.1.0", 0, null), + ]; + + const expectedResult: IDependencyData[] = [ + getNodeModuleInfoForExpectedDependency( + scopedPackageName, + 0, + null, + [secondPackage], + scopedPackageName, + "1.0.0", + ), + getNodeModuleInfoForExpectedDependency( + secondPackage, + 0, + null, + null, + null, + "1.1.0", + ), + getNodeModuleInfoForExpectedDependency( + path.join( + scopedPackageName, + constants.NODE_MODULES_FOLDER_NAME, + secondPackage, + ), + 1, + null, + null, + null, + "1.2.0", + ), + ]; + + const nodeModulesDependenciesBuilder = generateTest(rootDeps); + const actualResult = + await nodeModulesDependenciesBuilder.getProductionDependencies( + pathToProject, + ); + assert.deepStrictEqual(actualResult, expectedResult); + }); + + it("when there are scoped dependencies as dependency of other non-scoped dependency", async () => { + // The test validates the following dependency tree, when npm 3+ is used. + // + // ├─┬ firstPackage@1.0.0 + // │ └── @scope/secondPackage@1.2.0 + // └── thirdPackage@1.1.0 + + const scopedPackageName = `@scope/${secondPackage}`; + const rootDeps: IDependencyInfo[] = [ + generateDependency(firstPackage, "1.0.0", 0, [ + generateDependency(scopedPackageName, "1.2.0", 1, null), + ]), + generateDependency(thirdPackage, "1.1.0", 0, null), + ]; + + const expectedResult: IDependencyData[] = [ + getNodeModuleInfoForExpectedDependency( + firstPackage, + 0, + null, + [scopedPackageName], + null, + "1.0.0", + ), + getNodeModuleInfoForExpectedDependency( + thirdPackage, + 0, + null, + null, + null, + "1.1.0", + ), + getNodeModuleInfoForExpectedDependency( + path.join( + firstPackage, + constants.NODE_MODULES_FOLDER_NAME, + scopedPackageName, + ), + 1, + null, + null, + scopedPackageName, + "1.2.0", + ), + ]; + + const nodeModulesDependenciesBuilder = generateTest(rootDeps); + const actualResult = + await nodeModulesDependenciesBuilder.getProductionDependencies( + pathToProject, + ); + assert.deepStrictEqual(actualResult, expectedResult); + }); + + it("when all dependencies are installed at the root level of the project", async () => { + // The test validates the following dependency tree, when npm 3+ is used. + // + // ├── firstPackage@1.0.0 + // ├── secondPackage@1.1.0 + // └── thirdPackage@1.2.0 + + const rootDeps: IDependencyInfo[] = [ + generateDependency(firstPackage, "1.0.0", 0, null), + generateDependency(secondPackage, "1.1.0", 0, null), + generateDependency(thirdPackage, "1.2.0", 0, null), + ]; + + const nodeModulesDependenciesBuilder = generateTest(rootDeps); + const actualResult = + await nodeModulesDependenciesBuilder.getProductionDependencies( + pathToProject, + ); + + const expectedResult: IDependencyData[] = [ + getNodeModuleInfoForExpectedDependency( + firstPackage, + 0, + null, + null, + null, + "1.0.0", + ), + getNodeModuleInfoForExpectedDependency( + secondPackage, + 0, + null, + null, + null, + "1.1.0", + ), + getNodeModuleInfoForExpectedDependency( + thirdPackage, + 0, + null, + null, + null, + "1.2.0", + ), + ]; + + assert.deepStrictEqual(actualResult, expectedResult); + }); + + it("when the project has a dependency to a package and one of the other packages has dependency to other version of this package", async () => { + // The test validates the following dependency tree, when npm 3+ is used. + // + // ├─┬ firstPackage@1.0.0 + // │ └── secondPackage@1.2.0 + // └── secondPackage@1.1.0 + + const rootDeps: IDependencyInfo[] = [ + generateDependency(firstPackage, "1.0.0", 0, [ + generateDependency(secondPackage, "1.2.0", 1, null), + ]), + generateDependency(secondPackage, "1.1.0", 0, null), + ]; + + const expectedResult: IDependencyData[] = [ + getNodeModuleInfoForExpectedDependency( + firstPackage, + 0, + null, + [secondPackage], + null, + "1.0.0", + ), + getNodeModuleInfoForExpectedDependency( + secondPackage, + 0, + null, + null, + null, + "1.1.0", + ), + getNodeModuleInfoForExpectedDependency( + path.join( + firstPackage, + constants.NODE_MODULES_FOLDER_NAME, + secondPackage, + ), + 1, + null, + null, + null, + "1.2.0", + ), + ]; + + const nodeModulesDependenciesBuilder = generateTest(rootDeps); + const actualResult = + await nodeModulesDependenciesBuilder.getProductionDependencies( + pathToProject, + ); + assert.deepStrictEqual(actualResult, expectedResult); + }); + + it("when several package depend on different versions of other packages", async () => { + // The test validates the following dependency tree, when npm 3+ is used. + // + // ├─┬ firstPackage@1.0.0 + // │ ├─┬ secondPackage@1.1.0 + // │ │ └── thirdPackage@1.2.0 + // │ └── thirdPackage@1.1.0 + // ├── secondPackage@1.0.0 + // └── thirdPackage@1.0.0 + + const rootDeps: IDependencyInfo[] = [ + generateDependency(firstPackage, "1.0.0", 0, [ + generateDependency(secondPackage, "1.1.0", 1, [ + generateDependency(thirdPackage, "1.2.0", 2, null), + ]), + generateDependency(thirdPackage, "1.1.0", 1, null), + ]), + generateDependency(secondPackage, "1.0.0", 0, null), + generateDependency(thirdPackage, "1.0.0", 0, null), + ]; + + const pathToSecondPackageInsideFirstPackage = path.join( + firstPackage, + constants.NODE_MODULES_FOLDER_NAME, + secondPackage, + ); + const expectedResult: IDependencyData[] = [ + getNodeModuleInfoForExpectedDependency( + firstPackage, + 0, + null, + [secondPackage, thirdPackage], + null, + "1.0.0", + ), + getNodeModuleInfoForExpectedDependency( + secondPackage, + 0, + null, + null, + null, + "1.0.0", + ), + getNodeModuleInfoForExpectedDependency( + thirdPackage, + 0, + null, + null, + null, + "1.0.0", + ), + getNodeModuleInfoForExpectedDependency( + pathToSecondPackageInsideFirstPackage, + 1, + null, + [thirdPackage], + null, + "1.1.0", + ), + getNodeModuleInfoForExpectedDependency( + path.join( + firstPackage, + constants.NODE_MODULES_FOLDER_NAME, + thirdPackage, + ), + 1, + null, + null, + null, + "1.1.0", + ), + getNodeModuleInfoForExpectedDependency( + path.join( + pathToSecondPackageInsideFirstPackage, + constants.NODE_MODULES_FOLDER_NAME, + thirdPackage, + ), + 2, + null, + null, + null, + "1.2.0", + ), + ]; + + const nodeModulesDependenciesBuilder = generateTest(rootDeps); + const actualResult = + await nodeModulesDependenciesBuilder.getProductionDependencies( + pathToProject, + ); + assert.deepStrictEqual(actualResult, expectedResult); + }); + + it("when the installed packages have nativescript data in their package.json", async () => { + // The test validates the following dependency tree, when npm 3+ is used. + // + // ├── firstPackage@1.0.0 + // ├── secondPackage@1.1.0 + // └── thirdPackage@1.2.0 + + const getNativeScriptDataForPlugin = (pluginName: string): any => { + return { + platforms: { + "tns-android": "x.x.x", + "tns-ios": "x.x.x", + }, + + customPropertyUsedForThisTestOnly: pluginName, + }; + }; + + const rootDeps: IDependencyInfo[] = [ + generateDependency( + firstPackage, + "1.0.0", + 0, + null, + getNativeScriptDataForPlugin(firstPackage), + ), + generateDependency( + secondPackage, + "1.1.0", + 0, + null, + getNativeScriptDataForPlugin(secondPackage), + ), + generateDependency( + thirdPackage, + "1.2.0", + 0, + null, + getNativeScriptDataForPlugin(thirdPackage), + ), + ]; + + const nodeModulesDependenciesBuilder = generateTest(rootDeps); + const actualResult = + await nodeModulesDependenciesBuilder.getProductionDependencies( + pathToProject, + ); + + const expectedResult: IDependencyData[] = [ + getNodeModuleInfoForExpectedDependency( + firstPackage, + 0, + getNativeScriptDataForPlugin(firstPackage), + null, + null, + "1.0.0", + ), + getNodeModuleInfoForExpectedDependency( + secondPackage, + 0, + getNativeScriptDataForPlugin(secondPackage), + null, + null, + "1.1.0", + ), + getNodeModuleInfoForExpectedDependency( + thirdPackage, + 0, + getNativeScriptDataForPlugin(thirdPackage), + null, + null, + "1.2.0", + ), + ]; + + assert.deepStrictEqual(actualResult, expectedResult); + }); + + it("ignoring dependencies", async () => { + // The test validates the following dependency tree, when npm 3+ is used. + // + // ├── firstPackage@1.0.0 + // ├── secondPackage@1.1.0 + // └── thirdPackage@1.2.0 + + const rootDeps: IDependencyInfo[] = [ + generateDependency(firstPackage, "1.0.0", 0, null), + generateDependency(secondPackage, "1.1.0", 0, null), + generateDependency(thirdPackage, "1.2.0", 0, null), + ]; + + const nodeModulesDependenciesBuilder = generateTest(rootDeps); + const actualResult = + await nodeModulesDependenciesBuilder.getProductionDependencies( + pathToProject, + [firstPackage], + ); + + const expectedResult: IDependencyData[] = [ + getNodeModuleInfoForExpectedDependency( + secondPackage, + 0, + null, + null, + null, + "1.1.0", + ), + getNodeModuleInfoForExpectedDependency( + thirdPackage, + 0, + null, + null, + null, + "1.2.0", + ), + ]; + + assert.deepStrictEqual(actualResult, expectedResult); + }); + }); + }); +}); diff --git a/test/xcconfig-service.ts b/test/xcconfig-service.ts index cb81c045f3..a43291f73d 100644 --- a/test/xcconfig-service.ts +++ b/test/xcconfig-service.ts @@ -1,4 +1,3 @@ -import * as temp from "temp"; import { assert } from "chai"; import * as _ from "lodash"; import { XcconfigService } from "../lib/services/xcconfig-service"; @@ -8,7 +7,6 @@ import { IInjector } from "../lib/common/definitions/yok"; import { IReadFileOptions } from "../lib/common/declarations"; // start tracking temporary folders/files -temp.track(); describe("XCConfig Service Tests", () => { const createTestInjector = (): IInjector => { @@ -62,7 +60,7 @@ describe("XCConfig Service Tests", () => { const fs = getFileSystemMock(injector); fs.readText = ( filename: string, - options?: IReadFileOptions | string + options?: IReadFileOptions | string, ): string => { return `// You can add custom settings here // for example you can uncomment the following line to force distribution code signing @@ -87,7 +85,7 @@ describe("XCConfig Service Tests", () => { const fs = getFileSystemMock(injector); fs.readText = ( filename: string, - options?: IReadFileOptions | string + options?: IReadFileOptions | string, ): string => { return `// You can add custom settings here // for example you can uncomment the following line to force distribution code signing @@ -112,7 +110,7 @@ describe("XCConfig Service Tests", () => { const fs = getFileSystemMock(injector); fs.readText = ( filename: string, - options?: IReadFileOptions | string + options?: IReadFileOptions | string, ): string => { return `// DEVELOPMENT_TEAM = YOUR_TEAM_ID; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;`; @@ -131,7 +129,7 @@ describe("XCConfig Service Tests", () => { const fs = getFileSystemMock(injector); fs.readText = ( filename: string, - options?: IReadFileOptions | string + options?: IReadFileOptions | string, ): string => { return ` ASSETCATALOG_COMPILER_APPICON_NAME = ; @@ -152,7 +150,7 @@ describe("XCConfig Service Tests", () => { const fs = getFileSystemMock(injector); fs.readText = ( filename: string, - options?: IReadFileOptions | string + options?: IReadFileOptions | string, ): string => { return `ASSETCATALOG_COMPILER_APPICON_NAME`; }; @@ -169,7 +167,7 @@ describe("XCConfig Service Tests", () => { const fs = getFileSystemMock(injector); fs.readText = ( filename: string, - options?: IReadFileOptions | string + options?: IReadFileOptions | string, ): string => { return `ASSETCATALOG_COMPILER_APPICON_NAME=`; }; @@ -186,7 +184,7 @@ describe("XCConfig Service Tests", () => { const fs = getFileSystemMock(injector); fs.readText = ( filename: string, - options?: IReadFileOptions | string + options?: IReadFileOptions | string, ): string => { return `ASSETCATALOG_COMPILER_APPICON_NAME= `; }; @@ -203,7 +201,7 @@ describe("XCConfig Service Tests", () => { const fs = getFileSystemMock(injector); fs.readText = ( filename: string, - options?: IReadFileOptions | string + options?: IReadFileOptions | string, ): string => { return `ASSETCATALOG_COMPILER_APPICON_NAME= ;`; }; From 1dda43f1b4841738fb163f186268e4ba0bc6f388 Mon Sep 17 00:00:00 2001 From: Nathan Walker Date: Fri, 5 Sep 2025 10:49:52 -0700 Subject: [PATCH 2/3] chore: device log coloring with updated deps --- lib/common/mobile/device-log-provider.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/common/mobile/device-log-provider.ts b/lib/common/mobile/device-log-provider.ts index d1a786db9e..d5c548f780 100644 --- a/lib/common/mobile/device-log-provider.ts +++ b/lib/common/mobile/device-log-provider.ts @@ -14,7 +14,7 @@ export class DeviceLogProvider extends DeviceLogProviderBase { protected $logger: ILogger, protected $logSourceMapService: Mobile.ILogSourceMapService, protected $timelineProfilerService: ITimelineProfilerService, - protected $options: IOptions + protected $options: IOptions, ) { super($logFilter, $logger, $logSourceMapService); } @@ -22,7 +22,7 @@ export class DeviceLogProvider extends DeviceLogProviderBase { public logData( lineText: string, platform: string, - deviceIdentifier: string + deviceIdentifier: string, ): void { // console.log(lineText) const loggingOptions = this.getDeviceLogOptionsForDevice(deviceIdentifier); @@ -30,7 +30,7 @@ export class DeviceLogProvider extends DeviceLogProviderBase { data = this.$logSourceMapService.replaceWithOriginalFileLocations( platform, data, - loggingOptions + loggingOptions, ); if (data) { @@ -58,12 +58,12 @@ export class DeviceLogProvider extends DeviceLogProviderBase { private deviceColorMap = new Map(); private colorPool: StyleFormat[] = [ - "bgMagentaBright", + "bgGray", "bgBlueBright", "bgWhiteBright", "bgCyanBright", "bgYellowBright", - "bgGreenBright", + "bgMagentaBright", ]; private colorPoolIndex = 0; @@ -150,7 +150,7 @@ export class DeviceLogProvider extends DeviceLogProviderBase { toLog.split("\n").forEach((actualLine) => { this.printLine( color.styleText(this.getDeviceColor(deviceIdentifier), " "), - this.consoleLevelColor[level](actualLine) + this.consoleLevelColor[level](actualLine), ); }); } From fa5f46f30e086ab5ef9dce0b20fd11b6a564e6fd Mon Sep 17 00:00:00 2001 From: Nathan Walker Date: Fri, 5 Sep 2025 11:13:48 -0700 Subject: [PATCH 3/3] chore: doctor 2.0.17 [skip ci] --- package-lock.json | 12 ++++++------ package.json | 4 ++-- packages/doctor/package.json | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index fef4100052..e34faa8f1b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,17 +1,17 @@ { "name": "nativescript", - "version": "9.0.0-alpha.6", + "version": "9.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "nativescript", - "version": "9.0.0-alpha.6", + "version": "9.0.0", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { "@foxt/js-srp": "^0.0.3-patch2", - "@nativescript/doctor": "2.0.17-alpha.0", + "@nativescript/doctor": "2.0.17", "@npmcli/arborist": "^9.1.4", "@nstudio/trapezedev-project": "7.2.3", "@rigor789/resolve-package-path": "1.0.7", @@ -910,9 +910,9 @@ "license": "MIT" }, "node_modules/@nativescript/doctor": { - "version": "2.0.17-alpha.0", - "resolved": "https://registry.npmjs.org/@nativescript/doctor/-/doctor-2.0.17-alpha.0.tgz", - "integrity": "sha512-OhThrM7nVW14bOEhxp2ge3yP2h7QwAECI0yH0a/Y0MnbaJpoPr/i/VFaE41njXTDDTbWCoT4ZHYaiWURBcfd8w==", + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@nativescript/doctor/-/doctor-2.0.17.tgz", + "integrity": "sha512-+S3nL9/OwsrQ75MkolXtLYOuzzjc2W9EEqys7hg8FLFJbcQc47TYmpGLf/v7bdwx6Rh8G3HTcKy0QSkjInL1WQ==", "license": "Apache-2.0", "dependencies": { "lodash": "4.17.21", diff --git a/package.json b/package.json index e3ac3f2c9e..5b5ccd76bc 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "nativescript", "main": "./lib/nativescript-cli-lib.js", - "version": "9.0.0-alpha.6", + "version": "9.0.0", "author": "NativeScript ", "description": "Command-line interface for building NativeScript projects", "bin": { @@ -55,7 +55,7 @@ ], "dependencies": { "@foxt/js-srp": "^0.0.3-patch2", - "@nativescript/doctor": "2.0.17-alpha.0", + "@nativescript/doctor": "2.0.17", "@npmcli/arborist": "^9.1.4", "@rigor789/resolve-package-path": "1.0.7", "@nstudio/trapezedev-project": "7.2.3", diff --git a/packages/doctor/package.json b/packages/doctor/package.json index c08858e3db..6ff547fdbc 100644 --- a/packages/doctor/package.json +++ b/packages/doctor/package.json @@ -1,6 +1,6 @@ { "name": "@nativescript/doctor", - "version": "2.0.17-alpha.0", + "version": "2.0.17", "description": "Library that helps identifying if the environment can be used for development of {N} apps.", "main": "src/index.js", "types": "./typings/nativescript-doctor.d.ts",