diff --git a/CHANGELOG.md b/CHANGELOG.md
index f02cffd5ca..03059d376e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,28 @@
+# [8.7.0](https://github.com/NativeScript/nativescript-cli/compare/v8.6.5...v8.7.0) (2024-04-08)
+
+
+### Bug Fixes
+
+* **autocomplete:** fix the generation of the autocomplete script and prevent duplication on enable/disable ([#5794](https://github.com/NativeScript/nativescript-cli/issues/5794)) ([7c87b49](https://github.com/NativeScript/nativescript-cli/commit/7c87b49bd3779ad4a43ebae044595e2bdac8b373))
+* **debug-ios:** don't explicitly bind ws to `localhost` ([#5788](https://github.com/NativeScript/nativescript-cli/issues/5788)) ([280b10d](https://github.com/NativeScript/nativescript-cli/commit/280b10d3410d9b5340e7dd7e532a11e4cdd7bca5))
+* **ios:** only allow IPHONEOS_DEPLOYMENT_TARGET to be explicitly set vs entire xcconfig ([ac8afcc](https://github.com/NativeScript/nativescript-cli/commit/ac8afcc70c68c8c8476278ec508265483635f105))
+* **ios:** skip package validation on xcodebuild ([#5782](https://github.com/NativeScript/nativescript-cli/issues/5782)) ([e47cff4](https://github.com/NativeScript/nativescript-cli/commit/e47cff471ab25f7608360c8c0c94463a83116788))
+* **plugins:** parse name issue with invalid plugins ([#5770](https://github.com/NativeScript/nativescript-cli/issues/5770)) ([f826248](https://github.com/NativeScript/nativescript-cli/commit/f82624892c1433ea1aefdbeb06b5bd53e954b8a1))
+* remove python six requirement ([#5785](https://github.com/NativeScript/nativescript-cli/issues/5785)) ([25ae1f0](https://github.com/NativeScript/nativescript-cli/commit/25ae1f0842469697826c0061b499f55b54f0987d))
+* tests ([13b0bdb](https://github.com/NativeScript/nativescript-cli/commit/13b0bdb808a4796ea0c68575fd41308db5ef840c))
+
+
+### Features
+
+* add experimental bun package manager support ([#5791](https://github.com/NativeScript/nativescript-cli/issues/5791)) ([f758f6c](https://github.com/NativeScript/nativescript-cli/commit/f758f6cac3ed5e1ba6adeb9b68a683a21fdd0e07))
+* add open ios/android ([#5779](https://github.com/NativeScript/nativescript-cli/issues/5779)) ([81b32bc](https://github.com/NativeScript/nativescript-cli/commit/81b32bcaa125d2914c4e3ad41068d7da9671635d))
+* **ios:** ensure user defined xcconfig always takes priority ([#5784](https://github.com/NativeScript/nativescript-cli/issues/5784)) ([500d751](https://github.com/NativeScript/nativescript-cli/commit/500d75176cee0f5c5a5551ffcc1d4c00c7543b5a))
+* provide appId to webpack config ([#5778](https://github.com/NativeScript/nativescript-cli/issues/5778)) ([e3ef37d](https://github.com/NativeScript/nativescript-cli/commit/e3ef37dc648e99ff09844e22e11c917f7d727cdf))
+* support for solid/solidjs templates and migrations for 8.7 ([#5796](https://github.com/NativeScript/nativescript-cli/issues/5796)) ([cf788f0](https://github.com/NativeScript/nativescript-cli/commit/cf788f053fd976ee7dd62af2ac61bb1590498be0))
+* visionOS support ([#5783](https://github.com/NativeScript/nativescript-cli/issues/5783)) ([6a6a832](https://github.com/NativeScript/nativescript-cli/commit/6a6a8322655b1dedadda912d712cf26ee6d51f56))
+
+
+
## [8.6.4](https://github.com/NativeScript/nativescript-cli/compare/v8.6.3...v8.6.4) (2024-01-17)
diff --git a/README.md b/README.md
index 22f3c6a2e9..07ca7c7b89 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
-
The NativeScript CLI lets you create, build, and deploy NativeScript-based apps on iOS and Android devices.
+The NativeScript CLI lets you create, build, and deploy NativeScript apps.
@@ -18,30 +18,51 @@
Get it using: `npm install -g nativescript`
-* [What is NativeScript](#what-is-nativescript "Quick overview of NativeScript, the JavaScript framework for cross-platform development of native iOS and Android apps")
-* [How the NativeScript CLI works](#how-the-nativescript-cli-works "How the CLI works in more detail")
-* [Supported Platforms](#supported-platforms "The mobile platforms you can target with NativeScript")
-* [System Requirements](#system-requirements "The hardware and software requirements for setting up and working with the NativeScript CLI")
-* [Installation](#installation "How to configure and install the NativeScript CLI")
- * [Install the NativeScript CLI](#install-the-nativescript-cli)
- * [Configure Proxy Usage](#configure-proxy-settings)
-* [Quick Start](#quick-start "Get started with the NativeScript CLI")
- * [The Commands](#the-commands)
- * [Create Project](#create-project)
- * [Develop Your Project](#develop-your-project)
- * [Build Your Project](#build-your-project)
- * [Run Your Project](#run-your-project)
-* [Extending the CLI](#extending-the-cli)
-* [Troubleshooting](#troubleshooting)
-* [How to Contribute](#how-to-contribute)
-* [How to Build](#how-to-build)
-* [Get Help](#get-help)
-* [License](#license)
+- [What is NativeScript](#what-is-nativescript)
+- [How the NativeScript CLI works](#how-the-nativescript-cli-works)
+- [Supported Platforms](#supported-platforms)
+- [System Requirements](#system-requirements)
+- [Installation](#installation)
+ - [Install the NativeScript CLI](#install-the-nativescript-cli)
+ - [Configure Proxy Settings](#configure-proxy-settings)
+ - [Set Proxy Settings](#set-proxy-settings)
+ - [Attributes](#attributes)
+ - [Options](#options)
+ - [Limitations](#limitations)
+ - [Display Current Proxy Settings](#display-current-proxy-settings)
+ - [Clear Proxy Settings](#clear-proxy-settings)
+- [Quick Start](#quick-start)
+ - [The Commands](#the-commands)
+ - [Create Project](#create-project)
+ - [Develop Your Project](#develop-your-project)
+ - [Development with NativeScript](#development-with-nativescript)
+ - [Development in `app`](#development-in-app)
+ - [Development in `platforms`](#development-in-platforms)
+ - [Modifying Configuration Files](#modifying-configuration-files)
+ - [Modifying Entitlements File (iOS only)](#modifying-entitlements-file-ios-only)
+ - [Build Your Project](#build-your-project)
+ - [Run Your Project](#run-your-project)
+- [Extending the CLI](#extending-the-cli)
+- [Troubleshooting](#troubleshooting)
+- [How to Contribute](#how-to-contribute)
+- [How to Build](#how-to-build)
+- [Get Help](#get-help)
+- [License](#license)
What is NativeScript
===
-NativeScript is a cross-platform JavaScript framework that lets you develop native iOS and Android apps from a single code base. The framework provides JavaScript access to the native APIs, user interface, and rendering engines of iOS and Android. By using JavaScript or TypeScript, you can create one project that builds into an iOS or Android app with completely native user experience.
+NativeScript provides platform APIs directly to the JavaScript runtime (_with strong types_) for a rich TypeScript development experience.
+
+Some popular use cases:
+
+- Building Web, iOS, Android and Vision Pro apps with a shared codebase (aka, cross platform apps)
+- Building native platform apps with portable JavaScript skills
+- Augmenting JavaScript projects with platform API capabilities
+- AndroidTV and Watch development
+- watchOS development
+- Learning native platforms through JavaScript understanding
+- Exploring platform API documentation by trying APIs [directly from a web browser](https://preview.nativescript.org/) without requiring a platform development machine setup.
To learn more about NativeScript, you can check the following resources:
diff --git a/docs/man_pages/project/configuration/open-android.md b/docs/man_pages/project/configuration/open-android.md
new file mode 100644
index 0000000000..95453c9b4b
--- /dev/null
+++ b/docs/man_pages/project/configuration/open-android.md
@@ -0,0 +1,27 @@
+<% if (isJekyll) { %>---
+title: ns open android
+position: 10
+---<% } %>
+
+# ns open android
+
+### Description
+
+Opens the Android native project from the corresponding `platforms` directory.
+
+If the native project has not already been generated, the `prepare` command will be issued to generate the project, and the project will then be opened.
+
+### Commands
+
+Usage | Synopsis
+------|-------
+Open the project in Android Studio | `$ ns open android`
+
+<% if(isHtml) { %>
+
+### Related Commands
+
+Command | Description
+----------|----------
+[prepare](prepare.html) | Copies common and relevant platform-specific content from the app directory to the subdirectory for the selected target platform in the platforms directory.
+<% } %>
\ No newline at end of file
diff --git a/docs/man_pages/project/configuration/open-ios.md b/docs/man_pages/project/configuration/open-ios.md
new file mode 100644
index 0000000000..7087dfb195
--- /dev/null
+++ b/docs/man_pages/project/configuration/open-ios.md
@@ -0,0 +1,31 @@
+<% if (isJekyll) { %>---
+title: ns open ios
+position: 10
+---<% } %>
+
+# ns open ios
+
+### Description
+
+Opens the iOS native project from the corresponding `platforms` directory.
+
+If the native project has not already been generated, the `prepare` command will be issued to generate the project, and the project will then be opened.
+
+### Commands
+
+Usage | Synopsis
+------|-------
+Open the project in Xcode | `$ ns open ios`
+
+<% if(isHtml) { %>
+
+### Command Limitations
+
+* You can run `$ ns open ios` only on macOS systems.
+
+### Related Commands
+
+Command | Description
+----------|----------
+[prepare](prepare.html) | Copies common and relevant platform-specific content from the app directory to the subdirectory for the selected target platform in the platforms directory.
+<% } %>
\ No newline at end of file
diff --git a/docs/man_pages/project/configuration/open.md b/docs/man_pages/project/configuration/open.md
new file mode 100644
index 0000000000..097cac0bcc
--- /dev/null
+++ b/docs/man_pages/project/configuration/open.md
@@ -0,0 +1,36 @@
+<% if (isJekyll) { %>---
+title: ns open
+position: 10
+---<% } %>
+
+# ns open
+
+### Description
+
+Opens the iOS/Android native project from the corresponding `platforms` directory.
+
+If the native project has not already been generated, the `prepare` command will be issued to generate the project, and the project will then be opened.
+
+### Commands
+
+Usage | Synopsis
+------|-------
+<% if((isConsole && isMacOS) || isHtml) { %>General | `$ ns open `<% } %><% if(isConsole && (isLinux || isWindows)) { %>General | `$ ns open android`<% } %>
+
+<% if(isMacOS) { %>### Arguments
+`` is the target mobile platform for which you want to open the native project. You can set the following target platforms.
+* `android` - Opens the Android project in Android Studio.
+* `ios` - Opens native iOS project in Xcode.<% } %>
+
+<% if(isHtml) { %>
+
+### Command Limitations
+
+* You can run `$ ns open ios` only on macOS systems.
+
+### Related Commands
+
+Command | Description
+----------|----------
+[prepare](prepare.html) | Copies common and relevant platform-specific content from the app directory to the subdirectory for the selected target platform in the platforms directory.
+<% } %>
\ No newline at end of file
diff --git a/docs/man_pages/start.md b/docs/man_pages/start.md
index 51b24d90ee..73277b326c 100644
--- a/docs/man_pages/start.md
+++ b/docs/man_pages/start.md
@@ -49,6 +49,7 @@ Command | Description
[test ``](project/testing/test.html) | Runs the unit tests in your project on a connected physical or virtual device.
[install](project/configuration/install.html) | Installs all platforms and dependencies described in the `package.json` file in the current directory.
[plugin](lib-management/plugin.html) | Lets you manage the plugins for your project.
+[open](project/configuration/open.md) | Opens the native project in Xcode/Android Studio.
## Publishing Commands
Command | Description
diff --git a/lib/bootstrap.ts b/lib/bootstrap.ts
index 5892901282..bb99bb0650 100644
--- a/lib/bootstrap.ts
+++ b/lib/bootstrap.ts
@@ -180,17 +180,23 @@ injector.requireCommand("platform|update", "./commands/update-platform");
injector.requireCommand("run|*all", "./commands/run");
injector.requireCommand("run|ios", "./commands/run");
injector.requireCommand("run|android", "./commands/run");
+injector.requireCommand("run|vision", "./commands/run");
+injector.requireCommand("run|visionos", "./commands/run");
injector.requireCommand("typings", "./commands/typings");
injector.requireCommand("preview", "./commands/preview");
injector.requireCommand("debug|ios", "./commands/debug");
injector.requireCommand("debug|android", "./commands/debug");
+injector.requireCommand("debug|vision", "./commands/debug");
+injector.requireCommand("debug|visionos", "./commands/debug");
injector.requireCommand("fonts", "./commands/fonts");
injector.requireCommand("prepare", "./commands/prepare");
injector.requireCommand("build|ios", "./commands/build");
injector.requireCommand("build|android", "./commands/build");
+injector.requireCommand("build|vision", "./commands/build");
+injector.requireCommand("build|visionos", "./commands/build");
injector.requireCommand("deploy", "./commands/deploy");
injector.require("testExecutionService", "./services/test-execution-service");
@@ -198,6 +204,8 @@ injector.requireCommand("dev-test|android", "./commands/test");
injector.requireCommand("dev-test|ios", "./commands/test");
injector.requireCommand("test|android", "./commands/test");
injector.requireCommand("test|ios", "./commands/test");
+// injector.requireCommand("test|vision", "./commands/test");
+// injector.requireCommand("test|visionos", "./commands/test");
injector.requireCommand("test|init", "./commands/test-init");
injector.requireCommand("dev-generate-help", "./commands/generate-help");
@@ -217,6 +225,7 @@ injector.requirePublic("npm", "./node-package-manager");
injector.requirePublic("yarn", "./yarn-package-manager");
injector.requirePublic("yarn2", "./yarn2-package-manager");
injector.requirePublic("pnpm", "./pnpm-package-manager");
+injector.requirePublic("bun", "./bun-package-manager");
injector.requireCommand(
"package-manager|*get",
"./commands/package-manager-get"
diff --git a/lib/bun-package-manager.ts b/lib/bun-package-manager.ts
new file mode 100644
index 0000000000..b2d5b8f842
--- /dev/null
+++ b/lib/bun-package-manager.ts
@@ -0,0 +1,158 @@
+import * as path from "path";
+import { BasePackageManager } from "./base-package-manager";
+import { exported, cache } from "./common/decorators";
+import { CACACHE_DIRECTORY_NAME } from "./constants";
+import * as _ from "lodash";
+import {
+ INodePackageManagerInstallOptions,
+ INpmInstallResultInfo,
+ INpmsResult,
+} from "./declarations";
+import {
+ IChildProcess,
+ IErrors,
+ IFileSystem,
+ IHostInfo,
+ Server,
+} from "./common/declarations";
+import { injector } from "./common/yok";
+
+export class BunPackageManager extends BasePackageManager {
+ constructor(
+ $childProcess: IChildProcess,
+ private $errors: IErrors,
+ $fs: IFileSystem,
+ $hostInfo: IHostInfo,
+ private $logger: ILogger,
+ private $httpClient: Server.IHttpClient,
+ $pacoteService: IPacoteService
+ ) {
+ super($childProcess, $fs, $hostInfo, $pacoteService, "bun");
+ }
+
+ @exported("bun")
+ public async install(
+ packageName: string,
+ pathToSave: string,
+ config: INodePackageManagerInstallOptions
+ ): Promise {
+ if (config.disableNpmInstall) {
+ return;
+ }
+ if (config.ignoreScripts) {
+ config["ignore-scripts"] = true;
+ }
+
+ const packageJsonPath = path.join(pathToSave, "package.json");
+ const jsonContentBefore = this.$fs.readJson(packageJsonPath);
+
+ const flags = this.getFlagsString(config, true);
+ // TODO: Confirm desired behavior. The npm version uses --legacy-peer-deps
+ // by default, we could use `--no-peer` for Bun if similar is needed; the
+ // pnpm version uses `--shamefully-hoist`, but Bun has no similar flag.
+ let params = ["install", "--legacy-peer-deps"];
+ const isInstallingAllDependencies = packageName === pathToSave;
+ if (!isInstallingAllDependencies) {
+ params.push(packageName);
+ }
+
+ params = params.concat(flags);
+ const cwd = pathToSave;
+
+ try {
+ const result = await this.processPackageManagerInstall(
+ packageName,
+ params,
+ { cwd, isInstallingAllDependencies }
+ );
+ return result;
+ } catch (err) {
+ // Revert package.json contents to preserve valid state
+ this.$fs.writeJson(packageJsonPath, jsonContentBefore);
+ throw err;
+ }
+ }
+
+ @exported("bun")
+ public async uninstall(
+ packageName: string,
+ config?: any,
+ cwd?: string
+ ): Promise {
+ const flags = this.getFlagsString(config, false);
+ return this.$childProcess.exec(`bun remove ${packageName} ${flags}`, {
+ cwd,
+ });
+ }
+
+ // Bun does not have a `view` command; use npm.
+ @exported("bun")
+ public async view(packageName: string, config: Object): Promise {
+ const wrappedConfig = _.extend({}, config, { json: true }); // always require view response as JSON
+
+ const flags = this.getFlagsString(wrappedConfig, false);
+ let viewResult: any;
+ try {
+ viewResult = await this.$childProcess.exec(
+ `npm view ${packageName} ${flags}`
+ );
+ } catch (e) {
+ this.$errors.fail(e.message);
+ }
+
+ try {
+ return JSON.parse(viewResult);
+ } catch (err) {
+ return null;
+ }
+ }
+
+ // Bun does not have a `search` command; use npm.
+ @exported("bun")
+ public async search(filter: string[], config: any): Promise {
+ const flags = this.getFlagsString(config, false);
+ return this.$childProcess.exec(`npm search ${filter.join(" ")} ${flags}`);
+ }
+
+ public async searchNpms(keyword: string): Promise {
+ // Bugs with npms.io:
+ // 1. API returns no results when a valid package name contains @ or /
+ // even if using encodeURIComponent().
+ // 2. npms.io's API no longer returns updated results; see
+ // https://github.com/npms-io/npms-api/issues/112. Better to switch to
+ // https://registry.npmjs.org/
+ const httpRequestResult = await this.$httpClient.httpRequest(
+ `https://api.npms.io/v2/search?q=keywords:${keyword}`
+ );
+ const result: INpmsResult = JSON.parse(httpRequestResult.body);
+ return result;
+ }
+
+ // Bun does not have a command analogous to `npm config get registry`; Bun
+ // uses `bunfig.toml` to define custom registries.
+ // - TODO: read `bunfig.toml`, if it exists, and return the registry URL.
+ public async getRegistryPackageData(packageName: string): Promise {
+ const registry = await this.$childProcess.exec(`npm config get registry`);
+ const url = registry.trim() + packageName;
+ this.$logger.trace(
+ `Trying to get data from npm registry for package ${packageName}, url is: ${url}`
+ );
+ const responseData = (await this.$httpClient.httpRequest(url)).body;
+ this.$logger.trace(
+ `Successfully received data from npm registry for package ${packageName}. Response data is: ${responseData}`
+ );
+ const jsonData = JSON.parse(responseData);
+ this.$logger.trace(
+ `Successfully parsed data from npm registry for package ${packageName}.`
+ );
+ return jsonData;
+ }
+
+ @cache()
+ public async getCachePath(): Promise {
+ const cachePath = await this.$childProcess.exec(`bun pm cache`);
+ return path.join(cachePath.trim(), CACACHE_DIRECTORY_NAME);
+ }
+}
+
+injector.register("bun", BunPackageManager);
diff --git a/lib/commands/build.ts b/lib/commands/build.ts
index b3b732e2d6..d4c6460a1c 100644
--- a/lib/commands/build.ts
+++ b/lib/commands/build.ts
@@ -108,7 +108,7 @@ export class BuildIosCommand extends BuildCommandBase implements ICommand {
$platformValidationService: IPlatformValidationService,
$logger: ILogger,
$buildDataService: IBuildDataService,
- private $migrateController: IMigrateController
+ protected $migrateController: IMigrateController
) {
super(
$options,
@@ -221,3 +221,41 @@ export class BuildAndroidCommand extends BuildCommandBase implements ICommand {
}
injector.registerCommand("build|android", BuildAndroidCommand);
+
+export class BuildVisionOsCommand extends BuildIosCommand implements ICommand {
+ constructor(
+ protected $options: IOptions,
+ $errors: IErrors,
+ $projectData: IProjectData,
+ $platformsDataService: IPlatformsDataService,
+ $devicePlatformsConstants: Mobile.IDevicePlatformsConstants,
+ $buildController: IBuildController,
+ $platformValidationService: IPlatformValidationService,
+ $logger: ILogger,
+ $buildDataService: IBuildDataService,
+ protected $migrateController: IMigrateController
+ ) {
+ super(
+ $options,
+ $errors,
+ $projectData,
+ $platformsDataService,
+ $devicePlatformsConstants,
+ $buildController,
+ $platformValidationService,
+ $logger,
+ $buildDataService,
+ $migrateController
+ );
+ }
+
+ public async canExecute(args: string[]): Promise {
+ this.$errors.fail(
+ 'Building for "visionOS" platform is not supported via the CLI. Please open the project in Xcode and build it from there.'
+ );
+ return false;
+ }
+}
+
+injector.registerCommand("build|vision", BuildVisionOsCommand);
+injector.registerCommand("build|visionos", BuildVisionOsCommand);
diff --git a/lib/commands/create-project.ts b/lib/commands/create-project.ts
index fd10ecebb7..b162818bf8 100644
--- a/lib/commands/create-project.ts
+++ b/lib/commands/create-project.ts
@@ -15,6 +15,8 @@ export class CreateProjectCommand implements ICommand {
private static BlankTemplateDescription = "A blank app";
private static BlankTsTemplateKey = "Blank Typescript";
private static BlankTsTemplateDescription = "A blank typescript app";
+ private static BlankVisionTemplateKey = "visionOS";
+ private static BlankVisionTemplateDescription = "A visionOS app";
private static HelloWorldTemplateKey = "Hello World";
private static HelloWorldTemplateDescription = "A Hello World app";
private static DrawerTemplateKey = "SideDrawer";
@@ -47,27 +49,60 @@ export class CreateProjectCommand implements ICommand {
this.$options.ng ||
this.$options.vue ||
this.$options.react ||
+ this.$options.solid ||
this.$options.svelte ||
this.$options.js) &&
this.$options.template
) {
this.$errors.failWithHelp(
- "You cannot use a flavor option like --ng, --vue, --react, --svelte, --tsc and --js together with --template."
+ "You cannot use a flavor option like --ng, --vue, --react, --solid, --svelte, --tsc and --js together with --template."
);
}
let projectName = args[0];
let selectedTemplate: string;
- if (this.$options.js) {
- selectedTemplate = constants.JAVASCRIPT_NAME;
- } else if (this.$options.vue && this.$options.tsc) {
+ if (
+ this.$options["vision-ng"] ||
+ (this.$options.vision && this.$options.ng)
+ ) {
+ selectedTemplate = constants.RESERVED_TEMPLATE_NAMES["vision-ng"];
+ } else if (
+ this.$options["vision-react"] ||
+ (this.$options.vision && this.$options.react)
+ ) {
+ selectedTemplate = constants.RESERVED_TEMPLATE_NAMES["vision-react"];
+ } else if (
+ this.$options["vision-solid"] ||
+ (this.$options.vision && this.$options.solid)
+ ) {
+ selectedTemplate = constants.RESERVED_TEMPLATE_NAMES["vision-solid"];
+ } else if (
+ this.$options["vision-svelte"] ||
+ (this.$options.vision && this.$options.svelte)
+ ) {
+ selectedTemplate = constants.RESERVED_TEMPLATE_NAMES["vision-svelte"];
+ } else if (
+ this.$options["vision-vue"] ||
+ (this.$options.vision && (this.$options.vue || this.$options.vuejs))
+ ) {
+ selectedTemplate = constants.RESERVED_TEMPLATE_NAMES["vision-vue"];
+ } else if (
+ (this.$options.vue || this.$options.vuejs) &&
+ this.$options.tsc
+ ) {
selectedTemplate = "@nativescript/template-blank-vue-ts";
+ } else if (this.$options.vision) {
+ selectedTemplate = constants.RESERVED_TEMPLATE_NAMES["vision"];
+ } else if (this.$options.js) {
+ selectedTemplate = constants.JAVASCRIPT_NAME;
} else if (this.$options.tsc) {
selectedTemplate = constants.TYPESCRIPT_NAME;
} else if (this.$options.ng) {
selectedTemplate = constants.ANGULAR_NAME;
- } else if (this.$options.vue) {
+ } else if (this.$options.vue || this.$options.vuejs) {
selectedTemplate = constants.VUE_NAME;
+ } else if (this.$options.solid) {
+ selectedTemplate = constants.SOLID_NAME;
} else if (this.$options.react) {
selectedTemplate = constants.REACT_NAME;
} else if (this.$options.svelte) {
@@ -140,6 +175,10 @@ export class CreateProjectCommand implements ICommand {
key: constants.VueFlavorName,
description: "Learn more at https://nativescript.org/vue",
},
+ {
+ key: constants.SolidFlavorName,
+ description: "Learn more at https://www.solidjs.com",
+ },
{
key: constants.SvelteFlavorName,
description: "Learn more at https://svelte-native.technology",
@@ -192,6 +231,10 @@ can skip this prompt next time using the --template option, or the --ng, --react
selectedFlavorTemplates.push(...this.getVueTemplates());
break;
}
+ case constants.SolidFlavorName: {
+ selectedFlavorTemplates.push(...this.getSolidTemplates());
+ break;
+ }
case constants.SvelteFlavorName: {
selectedFlavorTemplates.push(...this.getSvelteTemplates());
break;
@@ -262,6 +305,11 @@ can skip this prompt next time using the --template option, or the --ng, --react
value: "@nativescript/template-tab-navigation-ts",
description: CreateProjectCommand.TabsTemplateDescription,
},
+ {
+ key: CreateProjectCommand.BlankVisionTemplateKey,
+ value: "@nativescript/template-hello-world-ts-vision",
+ description: CreateProjectCommand.BlankVisionTemplateDescription,
+ },
];
return templates;
@@ -284,6 +332,11 @@ can skip this prompt next time using the --template option, or the --ng, --react
value: "@nativescript/template-tab-navigation-ng",
description: CreateProjectCommand.TabsTemplateDescription,
},
+ {
+ key: CreateProjectCommand.BlankVisionTemplateKey,
+ value: "@nativescript/template-hello-world-ng-vision",
+ description: CreateProjectCommand.BlankVisionTemplateDescription,
+ },
];
return templates;
@@ -296,6 +349,28 @@ can skip this prompt next time using the --template option, or the --ng, --react
value: constants.RESERVED_TEMPLATE_NAMES.react,
description: CreateProjectCommand.HelloWorldTemplateDescription,
},
+ {
+ key: CreateProjectCommand.BlankVisionTemplateKey,
+ value: "@nativescript/template-blank-react-vision",
+ description: CreateProjectCommand.BlankVisionTemplateDescription,
+ },
+ ];
+
+ return templates;
+ }
+
+ private getSolidTemplates() {
+ const templates = [
+ {
+ key: CreateProjectCommand.HelloWorldTemplateKey,
+ value: constants.RESERVED_TEMPLATE_NAMES.solid,
+ description: CreateProjectCommand.HelloWorldTemplateDescription,
+ },
+ {
+ key: CreateProjectCommand.BlankVisionTemplateKey,
+ value: "@nativescript/template-blank-solid-vision",
+ description: CreateProjectCommand.BlankVisionTemplateDescription,
+ },
];
return templates;
@@ -308,6 +383,11 @@ can skip this prompt next time using the --template option, or the --ng, --react
value: constants.RESERVED_TEMPLATE_NAMES.svelte,
description: CreateProjectCommand.HelloWorldTemplateDescription,
},
+ {
+ key: CreateProjectCommand.BlankVisionTemplateKey,
+ value: "@nativescript/template-blank-svelte-vision",
+ description: CreateProjectCommand.BlankVisionTemplateDescription,
+ },
];
return templates;
@@ -335,6 +415,11 @@ can skip this prompt next time using the --template option, or the --ng, --react
value: "@nativescript/template-tab-navigation-vue",
description: CreateProjectCommand.TabsTemplateDescription,
},
+ {
+ key: CreateProjectCommand.BlankVisionTemplateKey,
+ value: "@nativescript/template-blank-vue-vision",
+ description: CreateProjectCommand.BlankVisionTemplateDescription,
+ },
];
return templates;
@@ -346,6 +431,33 @@ can skip this prompt next time using the --template option, or the --ng, --react
const greyDollarSign = color.grey("$");
this.$logger.clearScreen();
+ let runDebugNotes: Array = [];
+ if (
+ this.$options.vision ||
+ this.$options["vision-ng"] ||
+ this.$options["vision-react"] ||
+ this.$options["vision-solid"] ||
+ this.$options["vision-svelte"] ||
+ this.$options["vision-vue"]
+ ) {
+ runDebugNotes = [
+ `Run the project on Vision Pro with:`,
+ "",
+ ` ${greyDollarSign} ${color.green("ns run visionos --no-hmr")}`,
+ ];
+ } else {
+ runDebugNotes = [
+ `Run the project on multiple devices:`,
+ "",
+ ` ${greyDollarSign} ${color.green("ns run ios")}`,
+ ` ${greyDollarSign} ${color.green("ns run android")}`,
+ "",
+ "Debug the project with Chrome DevTools:",
+ "",
+ ` ${greyDollarSign} ${color.green("ns debug ios")}`,
+ ` ${greyDollarSign} ${color.green("ns debug android")}`,
+ ];
+ }
this.$logger.info(
[
[
@@ -358,15 +470,7 @@ can skip this prompt next time using the --template option, or the --ng, --react
`cd ${relativePath}`
)} and then:`,
"",
- `Run the project on multiple devices:`,
- "",
- ` ${greyDollarSign} ${color.green("ns run ios")}`,
- ` ${greyDollarSign} ${color.green("ns run android")}`,
- "",
- "Debug the project with Chrome DevTools:",
- "",
- ` ${greyDollarSign} ${color.green("ns debug ios")}`,
- ` ${greyDollarSign} ${color.green("ns debug android")}`,
+ ...runDebugNotes,
``,
`For more options consult the docs or run ${color.green("ns --help")}`,
"",
diff --git a/lib/commands/preview.ts b/lib/commands/preview.ts
index 1c3187d99f..872267b260 100644
--- a/lib/commands/preview.ts
+++ b/lib/commands/preview.ts
@@ -44,13 +44,11 @@ export class PreviewCommand implements ICommand {
const previewCLIPath = this.getPreviewCLIPath();
if (!previewCLIPath) {
- const packageManagerName = await this.$packageManager.getPackageManagerName();
+ const packageManagerName =
+ await this.$packageManager.getPackageManagerName();
let installCommand = "";
switch (packageManagerName) {
- case PackageManagers.npm:
- installCommand = "npm install --save-dev @nativescript/preview-cli";
- break;
case PackageManagers.yarn:
case PackageManagers.yarn2:
installCommand = "yarn add -D @nativescript/preview-cli";
@@ -58,6 +56,12 @@ export class PreviewCommand implements ICommand {
case PackageManagers.pnpm:
installCommand = "pnpm install --save-dev @nativescript/preview-cli";
break;
+ case PackageManagers.bun:
+ installCommand = "bun add --dev @nativescript/preview-cli";
+ case PackageManagers.npm:
+ default:
+ installCommand = "npm install --save-dev @nativescript/preview-cli";
+ break;
}
this.$logger.info(
[
diff --git a/lib/commands/run.ts b/lib/commands/run.ts
index 67daf25271..8b7e789c1b 100644
--- a/lib/commands/run.ts
+++ b/lib/commands/run.ts
@@ -83,7 +83,7 @@ injector.registerCommand("run|*all", RunCommandBase);
export class RunIosCommand implements ICommand {
@cache()
- private get runCommand(): RunCommandBase {
+ protected get runCommand(): RunCommandBase {
const runCommand = this.$injector.resolve(RunCommandBase);
runCommand.platform = this.platform;
return runCommand;
@@ -95,12 +95,12 @@ export class RunIosCommand implements ICommand {
}
constructor(
- private $devicePlatformsConstants: Mobile.IDevicePlatformsConstants,
- private $errors: IErrors,
- private $injector: IInjector,
- private $options: IOptions,
- private $platformValidationService: IPlatformValidationService,
- private $projectDataService: IProjectDataService
+ protected $devicePlatformsConstants: Mobile.IDevicePlatformsConstants,
+ protected $errors: IErrors,
+ protected $injector: IInjector,
+ protected $options: IOptions,
+ protected $platformValidationService: IPlatformValidationService,
+ protected $projectDataService: IProjectDataService
) {}
public async execute(args: string[]): Promise {
@@ -112,12 +112,12 @@ export class RunIosCommand implements ICommand {
if (
!this.$platformValidationService.isPlatformSupportedForOS(
- this.$devicePlatformsConstants.iOS,
+ this.platform,
projectData
)
) {
this.$errors.fail(
- `Applications for platform ${this.$devicePlatformsConstants.iOS} can not be built on this OS`
+ `Applications for platform ${this.platform} can not be built on this OS`
);
}
@@ -127,7 +127,7 @@ export class RunIosCommand implements ICommand {
this.$options.provision,
this.$options.teamId,
projectData,
- this.$devicePlatformsConstants.iOS.toLowerCase()
+ this.platform.toLowerCase()
));
return result;
}
@@ -196,3 +196,30 @@ export class RunAndroidCommand implements ICommand {
}
injector.registerCommand("run|android", RunAndroidCommand);
+
+export class RunVisionOSCommand extends RunIosCommand {
+ public get platform(): string {
+ return this.$devicePlatformsConstants.visionOS;
+ }
+
+ constructor(
+ protected $devicePlatformsConstants: Mobile.IDevicePlatformsConstants,
+ protected $errors: IErrors,
+ protected $injector: IInjector,
+ protected $options: IOptions,
+ protected $platformValidationService: IPlatformValidationService,
+ protected $projectDataService: IProjectDataService
+ ) {
+ super(
+ $devicePlatformsConstants,
+ $errors,
+ $injector,
+ $options,
+ $platformValidationService,
+ $projectDataService
+ );
+ }
+}
+
+injector.registerCommand("run|vision", RunVisionOSCommand);
+injector.registerCommand("run|visionos", RunVisionOSCommand);
diff --git a/lib/common/definitions/key-commands.d.ts b/lib/common/definitions/key-commands.d.ts
index f6476efe8d..2c4522b929 100644
--- a/lib/common/definitions/key-commands.d.ts
+++ b/lib/common/definitions/key-commands.d.ts
@@ -1,4 +1,4 @@
-export type IKeyCommandPlatform = "Android" | "iOS" | "all";
+export type IKeyCommandPlatform = "Android" | "iOS" | "visionOS" | "all";
export type IKeysLowerCase =
| "a"
| "b"
@@ -55,6 +55,7 @@ export interface IKeyCommand {
key: IValidKeyName;
platform: IKeyCommandPlatform;
description: string;
+ group: string;
willBlockKeyCommandExecution?: boolean;
execute(platform: string): Promise;
canExecute?: (processType: SupportedProcessType) => boolean;
diff --git a/lib/common/definitions/mobile.d.ts b/lib/common/definitions/mobile.d.ts
index c0edb53bcb..74d0fb9a2b 100644
--- a/lib/common/definitions/mobile.d.ts
+++ b/lib/common/definitions/mobile.d.ts
@@ -1037,6 +1037,10 @@ declare global {
* The state of the simulator. Can be 'Shutdown' or 'Booted'
*/
state?: string;
+ /**
+ * The platform of the device (iOS, visionOS)
+ */
+ platform?: string;
}
interface IiOSSimResolver {
@@ -1192,6 +1196,8 @@ declare global {
platformNames: string[];
isAndroidPlatform(platform: string): boolean;
isiOSPlatform(platform: string): boolean;
+ isvisionOSPlatform(platform: string): boolean;
+ isApplePlatform(platform: string): boolean;
normalizePlatformName(platform: string): string;
validatePlatformName(platform: string): string;
buildDevicePath(...args: string[]): string;
@@ -1234,6 +1240,11 @@ declare global {
interface IDevicePlatformsConstants {
iOS: string;
Android: string;
+ visionOS: string;
+
+ isiOS(value: string): boolean;
+ isAndroid(value: string): boolean;
+ isvisionOS(value: string): boolean;
}
interface IDeviceApplication {
diff --git a/lib/common/dispatchers.ts b/lib/common/dispatchers.ts
index 5227ee5221..1fa9edb065 100644
--- a/lib/common/dispatchers.ts
+++ b/lib/common/dispatchers.ts
@@ -120,9 +120,6 @@ export class CommandDispatcher implements ICommandDispatcher {
let updateCommand = "";
switch (packageManagerName) {
- case PackageManagers.npm:
- updateCommand = "npm i -g nativescript";
- break;
case PackageManagers.yarn:
case PackageManagers.yarn2:
updateCommand = "yarn global add nativescript";
@@ -130,6 +127,13 @@ export class CommandDispatcher implements ICommandDispatcher {
case PackageManagers.pnpm:
updateCommand = "pnpm i -g nativescript";
break;
+ case PackageManagers.bun:
+ updateCommand = "bun add --global nativescript";
+ break;
+ case PackageManagers.npm:
+ default:
+ updateCommand = "npm i -g nativescript";
+ break;
}
if (
diff --git a/lib/common/mobile/device-platforms-constants.ts b/lib/common/mobile/device-platforms-constants.ts
index 028c806167..a02eb88ffe 100644
--- a/lib/common/mobile/device-platforms-constants.ts
+++ b/lib/common/mobile/device-platforms-constants.ts
@@ -1,8 +1,22 @@
import { injector } from "../yok";
export class DevicePlatformsConstants
- implements Mobile.IDevicePlatformsConstants {
+ implements Mobile.IDevicePlatformsConstants
+{
public iOS = "iOS";
public Android = "Android";
+ public visionOS = "visionOS";
+
+ public isiOS(value: string) {
+ return value.toLowerCase() === this.iOS.toLowerCase();
+ }
+
+ public isAndroid(value: string) {
+ return value.toLowerCase() === this.Android.toLowerCase();
+ }
+
+ public isvisionOS(value: string) {
+ return value.toLowerCase() === this.visionOS.toLowerCase();
+ }
}
injector.register("devicePlatformsConstants", DevicePlatformsConstants);
diff --git a/lib/common/mobile/ios/device/ios-device.ts b/lib/common/mobile/ios/device/ios-device.ts
index cf81bcdb30..90dd12e7bc 100644
--- a/lib/common/mobile/ios/device/ios-device.ts
+++ b/lib/common/mobile/ios/device/ios-device.ts
@@ -48,7 +48,7 @@ export class IOSDevice extends IOSDeviceBase {
this.deviceInfo = {
identifier: deviceActionInfo.deviceId,
vendor: "Apple",
- platform: this.$devicePlatformsConstants.iOS,
+ platform: this.getPlatform(productType),
status: deviceStatus,
errorHelp:
deviceStatus === commonConstants.UNREACHABLE_STATUS
@@ -156,6 +156,9 @@ export class IOSDevice extends IOSDeviceBase {
isArm64Architecture = majorVersion >= 4;
} else if (_.startsWith(productType, "ipod")) {
isArm64Architecture = majorVersion >= 7;
+ } else if (_.startsWith(productType, "realitydevice")) {
+ // visionos
+ isArm64Architecture = true;
}
activeArchitecture = isArm64Architecture ? "arm64" : "armv7";
@@ -163,6 +166,15 @@ export class IOSDevice extends IOSDeviceBase {
return activeArchitecture;
}
+
+ private getPlatform(productType: string): string {
+ productType = productType.toLowerCase().trim();
+ if (_.startsWith(productType, "realitydevice")) {
+ // visionos
+ return this.$devicePlatformsConstants.visionOS;
+ }
+ return this.$devicePlatformsConstants.iOS;
+ }
}
injector.register("iOSDevice", IOSDevice);
diff --git a/lib/common/mobile/ios/ios-device-product-name-mapper.ts b/lib/common/mobile/ios/ios-device-product-name-mapper.ts
index 2951a60009..cf63decd54 100644
--- a/lib/common/mobile/ios/ios-device-product-name-mapper.ts
+++ b/lib/common/mobile/ios/ios-device-product-name-mapper.ts
@@ -55,6 +55,7 @@ class IosDeviceProductNameMapper implements Mobile.IiOSDeviceProductNameMapper {
"iPod4,1": "iPod touch (4th gen)",
"iPod5,1": "iPod touch (5th gen)",
"iPod7,1": "iPod touch (6th gen)",
+ "RealityDevice14,1": "Vision Pro (1st gen)",
};
public resolveProductName(deviceType: string): string {
diff --git a/lib/common/mobile/ios/simulator/ios-emulator-services.ts b/lib/common/mobile/ios/simulator/ios-emulator-services.ts
index f8185eada5..c7510ab1ed 100644
--- a/lib/common/mobile/ios/simulator/ios-emulator-services.ts
+++ b/lib/common/mobile/ios/simulator/ios-emulator-services.ts
@@ -23,6 +23,18 @@ class IosEmulatorServices implements Mobile.IiOSSimulatorService {
let error = null;
try {
+ if (
+ options.platform === this.$devicePlatformsConstants.visionOS &&
+ !options.emulatorIdOrName
+ ) {
+ // find first available visionOS simulator (for now).
+ const { devices } = await this.tryGetiOSSimDevices();
+ options.emulatorIdOrName = devices.find(
+ (device) =>
+ device.platform === this.$devicePlatformsConstants.visionOS
+ )?.id;
+ }
+
await this.$iOSSimResolver.iOSSim.startSimulator({
device: options.imageIdentifier || options.emulatorIdOrName,
state: "None",
@@ -132,7 +144,7 @@ class IosEmulatorServices implements Mobile.IiOSSimulatorService {
isTablet: this.$mobileHelper.isiOSTablet(simDevice.name),
type: DeviceTypes.Emulator,
connectionTypes: [DeviceConnectionType.Local],
- platform: this.$devicePlatformsConstants.iOS,
+ platform: simDevice.platform ?? this.$devicePlatformsConstants.iOS,
};
}
}
diff --git a/lib/common/mobile/ios/simulator/ios-simulator-device.ts b/lib/common/mobile/ios/simulator/ios-simulator-device.ts
index 6654428a6b..fa52f04088 100644
--- a/lib/common/mobile/ios/simulator/ios-simulator-device.ts
+++ b/lib/common/mobile/ios/simulator/ios-simulator-device.ts
@@ -46,7 +46,7 @@ export class IOSSimulator extends IOSDeviceBase implements Mobile.IiOSDevice {
model: _.last(this.simulator.fullId.split(".")),
version: this.simulator.runtimeVersion,
vendor: "Apple",
- platform: this.$devicePlatformsConstants.iOS,
+ platform: this.simulator.platform ?? this.$devicePlatformsConstants.iOS,
status: constants.CONNECTED_STATUS,
errorHelp: null,
isTablet: this.simulator.fullId.toLowerCase().indexOf("ipad") !== -1,
@@ -99,7 +99,7 @@ export class IOSSimulator extends IOSDeviceBase implements Mobile.IiOSDevice {
.catch((e) => this.$logger.error(e));
}, 5e3);
- // the internal retry-mechanism of getDebuggerPort will ensure the above
+ // the internal retry-mechanism of getDebuggerPort will ensure the above
// interval has a chance to execute multiple times
const port = await super.getDebuggerPort(appId).finally(() => {
clearInterval(postNotificationRetryInterval);
diff --git a/lib/common/mobile/log-filter.ts b/lib/common/mobile/log-filter.ts
index 6ad2b43dce..5cd3850d9d 100644
--- a/lib/common/mobile/log-filter.ts
+++ b/lib/common/mobile/log-filter.ts
@@ -42,7 +42,9 @@ export class LogFilter implements Mobile.ILogFilter {
if (platform) {
if (
platform.toLowerCase() ===
- this.$devicePlatformsConstants.iOS.toLowerCase()
+ this.$devicePlatformsConstants.iOS.toLowerCase() ||
+ platform.toLowerCase() ===
+ this.$devicePlatformsConstants.visionOS.toLowerCase()
) {
return this.$injector.resolve("iOSLogFilter");
} else if (
diff --git a/lib/common/mobile/mobile-core/devices-service.ts b/lib/common/mobile/mobile-core/devices-service.ts
index 9d4adcc8bd..8f72d11747 100644
--- a/lib/common/mobile/mobile-core/devices-service.ts
+++ b/lib/common/mobile/mobile-core/devices-service.ts
@@ -54,7 +54,8 @@ export class DevicesService
private $androidEmulatorServices: Mobile.IEmulatorPlatformService,
private $androidEmulatorDiscovery: Mobile.IDeviceDiscovery,
private $emulatorHelper: Mobile.IEmulatorHelper,
- private $prompter: IPrompter
+ private $prompter: IPrompter,
+ private $devicePlatformsConstants: Mobile.IDevicePlatformsConstants
) {
super();
this.attachToKnownDeviceDiscoveryEvents();
@@ -296,7 +297,11 @@ export class DevicesService
}
public getDeviceInstances(): Mobile.IDevice[] {
- return _.values(this._devices);
+ return _.values(this._devices).map((device: Mobile.IDevice) => {
+ const simPlatform = (device as any).simulator?.platform;
+ device.deviceInfo.platform = simPlatform ?? device.deviceInfo.platform;
+ return device;
+ });
}
@exported("devicesService")
@@ -516,7 +521,7 @@ export class DevicesService
this.getDeviceInstances(),
(device: Mobile.IDevice) => {
if (
- this.$mobileHelper.isiOSPlatform(device.deviceInfo.platform) &&
+ this.$mobileHelper.isApplePlatform(device.deviceInfo.platform) &&
device.isEmulator
) {
return (
@@ -783,7 +788,7 @@ export class DevicesService
if (!deviceInitOpts.deviceId && _.isEmpty(deviceInstances)) {
if (
!this.$hostInfo.isDarwin &&
- this.$mobileHelper.isiOSPlatform(deviceInitOpts.platform)
+ this.$mobileHelper.isApplePlatform(deviceInitOpts.platform)
) {
this.$errors.fail(constants.ERROR_NO_DEVICES_CANT_USE_IOS_SIMULATOR);
}
@@ -826,6 +831,20 @@ export class DevicesService
}
}
+ // make sure if the target platform is visionOS we don't try to run it on an already running iOS simulator...
+ if (
+ data.platform === this.$devicePlatformsConstants.visionOS &&
+ deviceInstances.length
+ ) {
+ const runningDeviceInstance = deviceInstances.find(
+ (device) =>
+ device.deviceInfo.platform === this.$devicePlatformsConstants.visionOS
+ );
+ if (!runningDeviceInstance) {
+ return this.startEmulatorCore(data);
+ }
+ }
+
// if only emulator flag is passed and no other emulators are running, start default emulator
if (data.emulator && deviceInstances.length) {
const runningDeviceInstance = _.some(
@@ -1079,7 +1098,7 @@ export class DevicesService
platform?: string
): Mobile.IEmulatorPlatformService {
platform = platform || this._platform;
- if (this.$mobileHelper.isiOSPlatform(platform)) {
+ if (this.$mobileHelper.isApplePlatform(platform)) {
return this.$injector.resolve("iOSEmulatorServices");
} else if (this.$mobileHelper.isAndroidPlatform(platform)) {
return this.$injector.resolve("androidEmulatorServices");
diff --git a/lib/common/mobile/mobile-core/ios-device-discovery.ts b/lib/common/mobile/mobile-core/ios-device-discovery.ts
index 7cfe3ec91e..d7b5a210e9 100644
--- a/lib/common/mobile/mobile-core/ios-device-discovery.ts
+++ b/lib/common/mobile/mobile-core/ios-device-discovery.ts
@@ -8,7 +8,8 @@ export class IOSDeviceDiscovery extends DeviceDiscovery {
private $injector: IInjector,
private $logger: ILogger,
private $mobileHelper: Mobile.IMobileHelper,
- private $iosDeviceOperations: IIOSDeviceOperations
+ private $iosDeviceOperations: IIOSDeviceOperations,
+ private $devicePlatformsConstants: Mobile.IDevicePlatformsConstants
) {
super();
}
@@ -21,11 +22,17 @@ export class IOSDeviceDiscovery extends DeviceDiscovery {
if (
options &&
options.platform &&
- (!this.$mobileHelper.isiOSPlatform(options.platform) || options.emulator)
+ (!this.$mobileHelper.isApplePlatform(options.platform) ||
+ options.emulator)
) {
return;
}
+ if (this.$mobileHelper.isvisionOSPlatform(options.platform)) {
+ // look for ios devices - same logic.
+ options.platform = this.$devicePlatformsConstants.iOS;
+ }
+
await this.$iosDeviceOperations.startLookingForDevices(
(deviceInfo: IOSDeviceLib.IDeviceActionInfo) => {
const device = this.createDevice(deviceInfo);
diff --git a/lib/common/mobile/mobile-helper.ts b/lib/common/mobile/mobile-helper.ts
index 2ac4f189e1..666f2ffae9 100644
--- a/lib/common/mobile/mobile-helper.ts
+++ b/lib/common/mobile/mobile-helper.ts
@@ -20,6 +20,7 @@ export class MobileHelper implements Mobile.IMobileHelper {
return [
this.$devicePlatformsConstants.iOS,
this.$devicePlatformsConstants.Android,
+ this.$devicePlatformsConstants.visionOS,
];
}
@@ -39,11 +40,25 @@ export class MobileHelper implements Mobile.IMobileHelper {
);
}
+ public isvisionOSPlatform(platform: string): boolean {
+ return !!(
+ platform &&
+ this.$devicePlatformsConstants.visionOS.toLowerCase() ===
+ platform.toLowerCase()
+ );
+ }
+
+ public isApplePlatform(platform: string): boolean {
+ return this.isiOSPlatform(platform) || this.isvisionOSPlatform(platform);
+ }
+
public normalizePlatformName(platform: string): string {
if (this.isAndroidPlatform(platform)) {
return "Android";
} else if (this.isiOSPlatform(platform)) {
return "iOS";
+ } else if (this.isvisionOSPlatform(platform)) {
+ return "visionOS";
}
return undefined;
diff --git a/lib/common/services/auto-completion-service.ts b/lib/common/services/auto-completion-service.ts
index a684fea048..3e187ee9fe 100644
--- a/lib/common/services/auto-completion-service.ts
+++ b/lib/common/services/auto-completion-service.ts
@@ -21,6 +21,10 @@ export class AutoCompletionService implements IAutoCompletionService {
"###-begin-%s-completion-###";
private static TABTAB_COMPLETION_END_REGEX_PATTERN =
"###-end-%s-completion-###";
+ private static GENERATED_TABTAB_COMPLETION_END =
+ "###-end-ns-completions-section-###";
+ private static GENERATED_TABTAB_COMPLETION_START =
+ "###-begin-ns-completions-section-###";
constructor(
private $fs: IFileSystem,
@@ -70,6 +74,16 @@ export class AutoCompletionService implements IAutoCompletionService {
return tabTabRegex;
}
+ private getTabTabCompletionsRegex(): RegExp {
+ return new RegExp(
+ util.format(
+ "%s[\\s\\S]*%s",
+ AutoCompletionService.GENERATED_TABTAB_COMPLETION_START,
+ AutoCompletionService.GENERATED_TABTAB_COMPLETION_END
+ )
+ );
+ }
+
private removeObsoleteAutoCompletion(): void {
// In previous releases we were writing directly in .bash_profile, .bashrc, .zshrc and .profile - remove this old code
const shellProfilesToBeCleared = this.shellProfiles;
@@ -107,6 +121,43 @@ export class AutoCompletionService implements IAutoCompletionService {
});
}
+ private removeOboleteTabTabCompletion(text: string) {
+ try {
+ let newText = text.replace(this.getTabTabObsoleteRegex("ns"), "");
+
+ newText = newText.replace(this.getTabTabObsoleteRegex("nsc"), "");
+
+ newText = newText.replace(
+ this.getTabTabObsoleteRegex("nativescript"),
+ ""
+ );
+
+ newText = newText.replace(this.getTabTabObsoleteRegex("tns"), "");
+
+ return newText;
+ } catch (error) {
+ this.$logger.trace(
+ "Error while trying to disable autocompletion for '%s' file. Error is:\n%s",
+ error.toString()
+ );
+
+ return text;
+ }
+ }
+
+ @cache()
+ private get completionAliasDefinition() {
+ const pattern = "compdef _nativescript.js_yargs_completions %s";
+ const ns = util.format(pattern, "ns");
+ const tns = util.format(pattern, "tns");
+ return util.format(
+ "\n%s\n%s\n%s\n",
+ ns,
+ tns,
+ AutoCompletionService.GENERATED_TABTAB_COMPLETION_END
+ );
+ }
+
@cache()
private get completionShellScriptContent() {
const startText = util.format(
@@ -284,24 +335,9 @@ export class AutoCompletionService implements IAutoCompletionService {
if (this.$fs.exists(filePath)) {
const contents = this.$fs.readText(filePath);
const regExp = new RegExp(
- util.format(
- "%s\\s+completion\\s+--\\s+",
- this.$staticConfig.CLIENT_NAME.toLowerCase()
- )
+ AutoCompletionService.GENERATED_TABTAB_COMPLETION_START
);
let matchCondition = contents.match(regExp);
- if (this.$staticConfig.CLIENT_NAME_ALIAS) {
- matchCondition =
- matchCondition ||
- contents.match(
- new RegExp(
- util.format(
- "%s\\s+completion\\s+--\\s+",
- this.$staticConfig.CLIENT_NAME_ALIAS.toLowerCase()
- )
- )
- );
- }
if (matchCondition) {
doUpdate = false;
@@ -316,9 +352,33 @@ export class AutoCompletionService implements IAutoCompletionService {
__dirname,
`../../../bin/${clientExecutableFileName}.js`
);
+
+ if (this.$fs.exists(filePath)) {
+ const existingText = this.$fs.readText(filePath);
+ let newText = existingText.replace(
+ this.getTabTabCompletionsRegex(),
+ ""
+ );
+ newText = this.removeOboleteTabTabCompletion(newText);
+ if (newText !== existingText) {
+ this.$logger.trace(
+ "Remove existing AutoCompletion from file %s.",
+ filePath
+ );
+ this.$fs.writeFile(filePath, newText);
+ }
+ }
+ // The generated seems to be inconsistent in it's start/end markers so adding our own.
+
+ this.$fs.appendFile(
+ filePath,
+ `\n${AutoCompletionService.GENERATED_TABTAB_COMPLETION_START}\n`
+ );
await this.$childProcess.exec(
- `"${process.argv[0]}" "${pathToExecutableFile}" completion >> "${filePath}"`
+ `"${process.argv[0]}" "${pathToExecutableFile}" completion_generate_script >> "${filePath}"`
);
+ this.$fs.appendFile(filePath, this.completionAliasDefinition);
+
this.$fs.chmod(filePath, "0644");
}
} catch (err) {
diff --git a/lib/common/test/unit-tests/mobile/devices-service.ts b/lib/common/test/unit-tests/mobile/devices-service.ts
index 2e4692db70..7602454834 100644
--- a/lib/common/test/unit-tests/mobile/devices-service.ts
+++ b/lib/common/test/unit-tests/mobile/devices-service.ts
@@ -208,12 +208,20 @@ function createTestInjector(): IInjector {
testInjector.register("prompter", {});
testInjector.register("mobileHelper", {
- platformNames: ["ios", "android"],
+ platformNames: ["ios", "android", "visionos"],
validatePlatformName: (platform: string) => platform.toLowerCase(),
isiOSPlatform: (platform: string) =>
!!(platform && platform.toLowerCase() === "ios"),
isAndroidPlatform: (platform: string) =>
!!(platform && platform.toLowerCase() === "android"),
+ isvisionOSPlatform: (platform: string) =>
+ !!(platform && platform.toLowerCase() === "visionos"),
+ isApplePlatform: (platform: string) =>
+ !!(
+ platform &&
+ (platform.toLowerCase() === "ios" ||
+ platform.toLowerCase() === "visionos")
+ ),
});
testInjector.register("deviceLogProvider", {
@@ -452,9 +460,10 @@ describe("devicesService", () => {
};
it(`emits ${EmulatorDiscoveryNames.EMULATOR_IMAGE_FOUND} event when new Android Emulator image is found`, (done: mocha.Done) => {
- const androidEmulatorDiscovery = testInjector.resolve<
- AndroidEmulatorDiscoveryStub
- >("androidEmulatorDiscovery");
+ const androidEmulatorDiscovery =
+ testInjector.resolve(
+ "androidEmulatorDiscovery"
+ );
devicesService.on(
EmulatorDiscoveryNames.EMULATOR_IMAGE_FOUND,
(emulatorImage: Mobile.IDeviceInfo) => {
@@ -485,9 +494,10 @@ describe("devicesService", () => {
});
it(`emits ${EmulatorDiscoveryNames.EMULATOR_IMAGE_LOST} event when new Android Emulator image is deleted`, (done: mocha.Done) => {
- const androidEmulatorDiscovery = testInjector.resolve<
- AndroidEmulatorDiscoveryStub
- >("androidEmulatorDiscovery");
+ const androidEmulatorDiscovery =
+ testInjector.resolve(
+ "androidEmulatorDiscovery"
+ );
devicesService.on(
EmulatorDiscoveryNames.EMULATOR_IMAGE_LOST,
(emulatorImage: Mobile.IDeviceInfo) => {
@@ -1098,21 +1108,19 @@ describe("devicesService", () => {
});
it("does not fail when iOSDeviceDiscovery startLookingForDevices fails", async () => {
- (iOSDeviceDiscovery).startLookingForDevices = (): Promise<
- void
- > => {
- throw new Error("my error");
- };
+ (iOSDeviceDiscovery).startLookingForDevices =
+ (): Promise => {
+ throw new Error("my error");
+ };
await assertAllMethodsResults("1");
assert.isTrue(logger.traceOutput.indexOf("my error") !== -1);
});
it("does not fail when androidDeviceDiscovery startLookingForDevices fails", async () => {
- (androidDeviceDiscovery).startLookingForDevices = (): Promise<
- void
- > => {
- throw new Error("my error");
- };
+ (androidDeviceDiscovery).startLookingForDevices =
+ (): Promise => {
+ throw new Error("my error");
+ };
iOSDeviceDiscovery.emit(
DeviceDiscoveryEventNames.DEVICE_FOUND,
iOSDevice
@@ -1129,11 +1137,10 @@ describe("devicesService", () => {
it("does not fail when iosSimulatorDiscovery startLookingForDevices fails", async () => {
const hostInfo = testInjector.resolve("hostInfo");
hostInfo.isDarwin = true;
- (iOSSimulatorDiscovery).startLookingForDevices = (): Promise<
- void
- > => {
- throw new Error("my error");
- };
+ (iOSSimulatorDiscovery).startLookingForDevices =
+ (): Promise => {
+ throw new Error("my error");
+ };
iOSDeviceDiscovery.emit(
DeviceDiscoveryEventNames.DEVICE_FOUND,
iOSDevice
@@ -1350,21 +1357,19 @@ describe("devicesService", () => {
});
it("does not fail when iOSDeviceDiscovery startLookingForDevices fails", async () => {
- (iOSDeviceDiscovery).startLookingForDevices = (): Promise<
- void
- > => {
- throw new Error("my error");
- };
+ (iOSDeviceDiscovery).startLookingForDevices =
+ (): Promise => {
+ throw new Error("my error");
+ };
await assertAllMethodsResults("1");
assert.isTrue(logger.traceOutput.indexOf("my error") !== -1);
});
it("does not fail when androidDeviceDiscovery startLookingForDevices fails", async () => {
- (androidDeviceDiscovery).startLookingForDevices = (): Promise<
- void
- > => {
- throw new Error("my error");
- };
+ (androidDeviceDiscovery).startLookingForDevices =
+ (): Promise => {
+ throw new Error("my error");
+ };
iOSDeviceDiscovery.emit(
DeviceDiscoveryEventNames.DEVICE_FOUND,
iOSDevice
@@ -2425,11 +2430,10 @@ describe("devicesService", () => {
it("should check for ios devices.", async () => {
let hasCheckedForIosDevices = false;
- $iOSDeviceDiscovery.startLookingForDevices = async (): Promise<
- void
- > => {
- hasCheckedForIosDevices = true;
- };
+ $iOSDeviceDiscovery.startLookingForDevices =
+ async (): Promise => {
+ hasCheckedForIosDevices = true;
+ };
devicesService.startDeviceDetectionInterval();
@@ -2465,11 +2469,10 @@ describe("devicesService", () => {
it("should start interval that will check for android devices.", async () => {
let hasCheckedForAndroidDevices = false;
- $androidDeviceDiscovery.startLookingForDevices = async (): Promise<
- void
- > => {
- hasCheckedForAndroidDevices = true;
- };
+ $androidDeviceDiscovery.startLookingForDevices =
+ async (): Promise => {
+ hasCheckedForAndroidDevices = true;
+ };
mockSetInterval();
devicesService.startDeviceDetectionInterval();
@@ -2500,11 +2503,10 @@ describe("devicesService", () => {
beforeEach(() => {
$iOSSimulatorDiscovery = testInjector.resolve("iOSSimulatorDiscovery");
- ($iOSSimulatorDiscovery).checkForDevices = async (): Promise<
- void
- > => {
- /** */
- };
+ ($iOSSimulatorDiscovery).checkForDevices =
+ async (): Promise => {
+ /** */
+ };
$hostInfo = testInjector.resolve("hostInfo");
$hostInfo.isDarwin = true;
@@ -2538,11 +2540,10 @@ describe("devicesService", () => {
it("should check for devices in interval", async () => {
let hasCheckedForDevices = false;
- customDeviceDiscovery.startLookingForDevices = async (): Promise<
- void
- > => {
- hasCheckedForDevices = true;
- };
+ customDeviceDiscovery.startLookingForDevices =
+ async (): Promise => {
+ hasCheckedForDevices = true;
+ };
mockSetInterval();
devicesService.startDeviceDetectionInterval();
@@ -2581,17 +2582,15 @@ describe("devicesService", () => {
"androidDeviceDiscovery"
);
- androidDevice.applicationManager.checkForApplicationUpdates = async (): Promise<
- void
- > => {
- hasCheckedForAndroidAppUpdates = true;
- };
+ androidDevice.applicationManager.checkForApplicationUpdates =
+ async (): Promise => {
+ hasCheckedForAndroidAppUpdates = true;
+ };
- iOSDevice.applicationManager.checkForApplicationUpdates = async (): Promise<
- void
- > => {
- hasCheckedForIosAppUpdates = true;
- };
+ iOSDevice.applicationManager.checkForApplicationUpdates =
+ async (): Promise => {
+ hasCheckedForIosAppUpdates = true;
+ };
$androidDeviceDiscovery.emit(
DeviceDiscoveryEventNames.DEVICE_FOUND,
@@ -2613,7 +2612,8 @@ describe("devicesService", () => {
});
it("should check for application updates if the check on one device throws an exception.", async () => {
- iOSDevice.applicationManager.checkForApplicationUpdates = throwErrorFunction;
+ iOSDevice.applicationManager.checkForApplicationUpdates =
+ throwErrorFunction;
devicesService.startDeviceDetectionInterval();
@@ -2633,8 +2633,10 @@ describe("devicesService", () => {
});
it("should not throw if all checks for application updates on all devices throw exceptions.", () => {
- iOSDevice.applicationManager.checkForApplicationUpdates = throwErrorFunction;
- androidDevice.applicationManager.checkForApplicationUpdates = throwErrorFunction;
+ iOSDevice.applicationManager.checkForApplicationUpdates =
+ throwErrorFunction;
+ androidDevice.applicationManager.checkForApplicationUpdates =
+ throwErrorFunction;
const callback = () => {
devicesService.startDeviceDetectionInterval.call(devicesService);
@@ -2661,11 +2663,10 @@ describe("devicesService", () => {
it("should start looking for android devices.", async () => {
let hasStartedLookingForAndroidDevices = false;
- $androidDeviceDiscovery.startLookingForDevices = async (): Promise<
- void
- > => {
- hasStartedLookingForAndroidDevices = true;
- };
+ $androidDeviceDiscovery.startLookingForDevices =
+ async (): Promise => {
+ hasStartedLookingForAndroidDevices = true;
+ };
await devicesService.detectCurrentlyAttachedDevices();
@@ -2767,9 +2768,8 @@ describe("devicesService", () => {
let actualDeviceIdentifier: string;
let actualAppIdentifier: string;
let actualFramework: string;
- const $androidProcessService: Mobile.IAndroidProcessService = testInjector.resolve(
- "androidProcessService"
- );
+ const $androidProcessService: Mobile.IAndroidProcessService =
+ testInjector.resolve("androidProcessService");
$androidProcessService.mapAbstractToTcpPort = async (
deviceIdentifier: string,
appIdentifier: string,
@@ -2793,12 +2793,10 @@ describe("devicesService", () => {
});
it("should get debuggable apps correctly for multiple devices.", async () => {
- const $iOSDeviceDiscovery: Mobile.IDeviceDiscovery = testInjector.resolve(
- "iOSDeviceDiscovery"
- );
- const $androidDeviceDiscovery: Mobile.IAndroidDeviceDiscovery = testInjector.resolve(
- "androidDeviceDiscovery"
- );
+ const $iOSDeviceDiscovery: Mobile.IDeviceDiscovery =
+ testInjector.resolve("iOSDeviceDiscovery");
+ const $androidDeviceDiscovery: Mobile.IAndroidDeviceDiscovery =
+ testInjector.resolve("androidDeviceDiscovery");
$androidDeviceDiscovery.emit(
DeviceDiscoveryEventNames.DEVICE_FOUND,
@@ -2849,9 +2847,8 @@ describe("devicesService", () => {
iOSDevice.deviceInfo.identifier,
]);
const debuggableAppsResult = await Promise.all(futures);
- const debuggableApps = _.flatten(
- debuggableAppsResult
- );
+ const debuggableApps =
+ _.flatten(debuggableAppsResult);
assert.deepStrictEqual(
debuggableApps,
diff --git a/lib/constants.ts b/lib/constants.ts
index bb1cf94aa5..a7935b38c5 100644
--- a/lib/constants.ts
+++ b/lib/constants.ts
@@ -22,6 +22,7 @@ export const TNS_ANDROID_RUNTIME_NAME = "tns-android";
export const TNS_IOS_RUNTIME_NAME = "tns-ios";
export const SCOPED_ANDROID_RUNTIME_NAME = "@nativescript/android";
export const SCOPED_IOS_RUNTIME_NAME = "@nativescript/ios";
+export const SCOPED_VISIONOS_RUNTIME_NAME = "@nativescript/visionos";
export const PACKAGE_JSON_FILE_NAME = "package.json";
export const PACKAGE_LOCK_JSON_FILE_NAME = "package-lock.json";
export const ANDROID_DEVICE_APP_ROOT_TEMPLATE = `/data/data/%s/files`;
@@ -67,7 +68,7 @@ export const APK_EXTENSION_NAME = ".apk";
export const AAB_EXTENSION_NAME = ".aab";
export const APKS_EXTENSION_NAME = ".apks";
export const HASHES_FILE_NAME = ".nshashes";
-export const TNS_NATIVE_SOURCE_GROUP_NAME = "TNSNativeSource";
+export const TNS_NATIVE_SOURCE_GROUP_NAME = "NSNativeSources";
export const NATIVE_SOURCE_FOLDER = "src";
export const APPLICATION_RESPONSE_TIMEOUT_SECONDS = 60;
export const NATIVE_EXTENSION_FOLDER = "extensions";
@@ -143,7 +144,16 @@ export const RESERVED_TEMPLATE_NAMES: IStringDictionary = {
angular: "@nativescript/template-hello-world-ng",
react: "@nativescript/template-blank-react",
reactjs: "@nativescript/template-blank-react",
+ solid: "@nativescript/template-blank-solid",
+ solidjs: "@nativescript/template-blank-solid",
svelte: "@nativescript/template-blank-svelte",
+ // vision templates
+ vision: "@nativescript/template-hello-world-ts-vision",
+ "vision-vue": "@nativescript/template-blank-vue-vision",
+ "vision-ng": "@nativescript/template-hello-world-ng-vision",
+ "vision-react": "@nativescript/template-blank-react-vision",
+ "vision-solid": "@nativescript/template-blank-solid-vision",
+ "vision-svelte": "@nativescript/template-blank-svelte-vision",
};
export const ANALYTICS_LOCAL_TEMPLATE_PREFIX = "localTemplate_";
@@ -160,7 +170,8 @@ export class ITMSConstants {
}
class ItunesConnectApplicationTypesClass
- implements IiTunesConnectApplicationType {
+ implements IiTunesConnectApplicationType
+{
public iOS = "iOS App";
public Mac = "Mac OS X App";
}
@@ -168,16 +179,19 @@ class ItunesConnectApplicationTypesClass
export const iOSAppResourcesFolderName = "iOS";
export const androidAppResourcesFolderName = "Android";
-export const ItunesConnectApplicationTypes = new ItunesConnectApplicationTypesClass();
+export const ItunesConnectApplicationTypes =
+ new ItunesConnectApplicationTypesClass();
export const VUE_NAME = "vue";
export const ANGULAR_NAME = "angular";
export const JAVASCRIPT_NAME = "javascript";
export const TYPESCRIPT_NAME = "typescript";
export const REACT_NAME = "react";
+export const SOLID_NAME = "solid";
export const SVELTE_NAME = "svelte";
export const NgFlavorName = "Angular";
export const VueFlavorName = "Vue.js";
export const ReactFlavorName = "React";
+export const SolidFlavorName = "Solid";
export const SvelteFlavorName = "Svelte";
export const TsFlavorName = "Plain TypeScript";
export const JsFlavorName = "Plain JavaScript";
@@ -187,6 +201,7 @@ export class ProjectTypes {
public static TsFlavorName = "Pure TypeScript";
public static JsFlavorName = "Pure JavaScript";
public static ReactFlavorName = "React";
+ public static SolidFlavorName = "Solid";
public static SvelteFlavorName = "Svelte";
}
export const BUILD_OUTPUT_EVENT_NAME = "buildOutput";
@@ -329,9 +344,13 @@ export const PLUGINS_BUILD_DATA_FILENAME = ".ns-plugins-build-data.json";
export const enum PlatformTypes {
ios = "ios",
android = "android",
+ visionos = "visionos",
}
-export type SupportedPlatform = PlatformTypes.ios | PlatformTypes.android;
+export type SupportedPlatform =
+ | PlatformTypes.ios
+ | PlatformTypes.android
+ | PlatformTypes.visionos;
export const PODFILE_NAME = "Podfile";
@@ -478,4 +497,5 @@ export enum PackageManagers {
pnpm = "pnpm",
yarn = "yarn",
yarn2 = "yarn2",
+ bun = "bun",
}
diff --git a/lib/controllers/migrate-controller.ts b/lib/controllers/migrate-controller.ts
index 50f6e3c219..910b465203 100644
--- a/lib/controllers/migrate-controller.ts
+++ b/lib/controllers/migrate-controller.ts
@@ -121,7 +121,7 @@ export class MigrateController
{
packageName: "@nativescript/core",
minVersion: "6.5.0",
- desiredVersion: "~8.5.0",
+ desiredVersion: "~8.7.0",
shouldAddIfMissing: true,
},
{
@@ -131,7 +131,7 @@ export class MigrateController
{
packageName: "@nativescript/types",
minVersion: "7.0.0",
- desiredVersion: "~8.5.0",
+ desiredVersion: "~8.7.0",
isDev: true,
},
{
@@ -190,7 +190,7 @@ export class MigrateController
{
packageName: "@nativescript/angular",
minVersion: "10.0.0",
- desiredVersion: "^16.0.0",
+ desiredVersion: "^17.0.0",
async shouldMigrateAction(
dependency: IMigrationDependency,
projectData: IProjectData,
@@ -262,7 +262,7 @@ export class MigrateController
packageName: "typescript",
isDev: true,
minVersion: "3.7.0",
- desiredVersion: "~4.8.4",
+ desiredVersion: "~5.4.0",
},
{
packageName: "node-sass",
@@ -274,7 +274,7 @@ export class MigrateController
{
packageName: "sass",
minVersion: "0.0.0", // ignore
- desiredVersion: "~1.49.9",
+ desiredVersion: "^1.49.9",
isDev: true,
// shouldRemove: true,
},
@@ -295,13 +295,13 @@ export class MigrateController
{
packageName: "@nativescript/ios",
minVersion: "6.5.3",
- desiredVersion: "~8.5.0",
+ desiredVersion: "~8.7.0",
isDev: true,
},
{
packageName: "@nativescript/android",
minVersion: "7.0.0",
- desiredVersion: "~8.5.0",
+ desiredVersion: "~8.7.0",
isDev: true,
},
];
@@ -1235,14 +1235,14 @@ export class MigrateController
// update
configContents.compilerOptions = configContents.compilerOptions || {};
- configContents.compilerOptions.target = "es2017";
+ configContents.compilerOptions.target = "es2020";
configContents.compilerOptions.module = "esnext";
configContents.compilerOptions.moduleResolution = "node";
configContents.compilerOptions.experimentalDecorators = true;
configContents.compilerOptions.removeComments = false;
configContents.compilerOptions.lib = [
- ...new Set([...(configContents.compilerOptions.lib || []), "es2017"]),
+ ...new Set([...(configContents.compilerOptions.lib || []), "ESNext"]),
];
if (isAngular) {
@@ -1310,7 +1310,7 @@ export class MigrateController
private async migrateNativeScriptAngular(): Promise {
const minVersion = "10.0.0";
- const desiredVersion = "~16.2.0";
+ const desiredVersion = "~17.3.0";
const dependencies: IMigrationDependency[] = [
{
diff --git a/lib/controllers/prepare-controller.ts b/lib/controllers/prepare-controller.ts
index 8c22fe3e61..538fc75527 100644
--- a/lib/controllers/prepare-controller.ts
+++ b/lib/controllers/prepare-controller.ts
@@ -466,7 +466,9 @@ export class PrepareController extends EventEmitter {
packageData.android.discardUncaughtJsExceptions;
}
let packagePath: string;
- if (platformData.platformNameLowerCase === "ios") {
+ if (
+ this.$mobileHelper.isApplePlatform(platformData.platformNameLowerCase)
+ ) {
packagePath = path.join(
platformData.projectRoot,
projectData.projectName,
diff --git a/lib/data/build-data.ts b/lib/data/build-data.ts
index 87af14d166..fc50640dbd 100644
--- a/lib/data/build-data.ts
+++ b/lib/data/build-data.ts
@@ -3,6 +3,7 @@ import { IiOSBuildData, IBuildData } from "../definitions/build";
export class BuildData extends PrepareData implements IBuildData {
public device?: string;
+ public _device?: Mobile.IDevice;
public emulator?: boolean;
public clean: boolean;
public buildForDevice?: boolean;
@@ -14,6 +15,7 @@ export class BuildData extends PrepareData implements IBuildData {
super(projectDir, platform, data);
this.device = data.device;
+ this._device = data?._device;
this.emulator = data.emulator;
this.clean = data.clean;
this.buildForDevice = data.buildForDevice || data.forDevice;
diff --git a/lib/declarations.d.ts b/lib/declarations.d.ts
index 9f627a9202..f039b23f26 100644
--- a/lib/declarations.d.ts
+++ b/lib/declarations.d.ts
@@ -673,10 +673,17 @@ interface IOptions
ng: boolean;
angular: boolean;
react: boolean;
+ solid: boolean;
svelte: boolean;
vue: boolean;
vuejs: boolean;
js: boolean;
+ vision: boolean;
+ "vision-ng": boolean;
+ "vision-react": boolean;
+ "vision-solid": boolean;
+ "vision-svelte": boolean;
+ "vision-vue": boolean;
javascript: boolean;
androidTypings: boolean;
production: boolean; //npm flag
@@ -692,6 +699,8 @@ interface IOptions
markingMode: boolean;
git: boolean;
dryRun: boolean;
+
+ platformOverride: string;
}
interface IEnvOptions {
diff --git a/lib/definitions/build.d.ts b/lib/definitions/build.d.ts
index 0ef831745c..e64a318c6d 100644
--- a/lib/definitions/build.d.ts
+++ b/lib/definitions/build.d.ts
@@ -9,6 +9,7 @@ import {
interface IBuildData extends IPrepareData {
device?: string;
+ _device?: Mobile.IDevice;
emulator?: boolean;
clean: boolean;
buildForDevice?: boolean;
diff --git a/lib/definitions/ios.d.ts b/lib/definitions/ios.d.ts
index 5e766c39ca..248b25b7b4 100644
--- a/lib/definitions/ios.d.ts
+++ b/lib/definitions/ios.d.ts
@@ -57,7 +57,7 @@ declare global {
buildConfig: IBuildConfig
): Promise;
getXcodeProjectArgs(
- projectRoot: string,
+ platformData: IPlatformData,
projectData: IProjectData
): string[];
}
diff --git a/lib/definitions/project.d.ts b/lib/definitions/project.d.ts
index a25346adfa..40fd0456b4 100644
--- a/lib/definitions/project.d.ts
+++ b/lib/definitions/project.d.ts
@@ -105,6 +105,8 @@ interface INsConfigIOS extends INsConfigPlaform {
discardUncaughtJsExceptions?: boolean;
}
+interface INSConfigVisionOS extends INsConfigIOS {}
+
interface INsConfigAndroid extends INsConfigPlaform {
v8Flags?: string;
@@ -156,6 +158,7 @@ interface INsConfig {
webpackConfigPath?: string;
ios?: INsConfigIOS;
android?: INsConfigAndroid;
+ visionos?: INSConfigVisionOS;
ignoredNativeDependencies?: string[];
hooks?: INsConfigHooks[];
}
@@ -558,6 +561,8 @@ interface IBuildConfig
clean?: boolean;
architectures?: string[];
buildOutputStdio?: string;
+ platform?: string;
+ _device?: Mobile.IDevice;
}
/**
diff --git a/lib/definitions/start-service.d.ts b/lib/definitions/start-service.d.ts
index 98815046a6..441967b697 100644
--- a/lib/definitions/start-service.d.ts
+++ b/lib/definitions/start-service.d.ts
@@ -7,7 +7,9 @@ export interface IStartService {
toggleVerbose(): void;
runIOS(): Promise;
+ runVisionOS(): Promise;
runAndroid(): Promise;
stopIOS(): Promise;
+ stopVisionOS(): Promise;
stopAndroid(): Promise;
}
diff --git a/lib/device-path-provider.ts b/lib/device-path-provider.ts
index 692c6775d1..6995c41b31 100644
--- a/lib/device-path-provider.ts
+++ b/lib/device-path-provider.ts
@@ -17,7 +17,7 @@ export class DevicePathProvider implements IDevicePathProvider {
options: IDeviceProjectRootOptions
): Promise {
let projectRoot = "";
- if (this.$mobileHelper.isiOSPlatform(device.deviceInfo.platform)) {
+ if (this.$mobileHelper.isApplePlatform(device.deviceInfo.platform)) {
projectRoot = device.isEmulator
? await this.$iOSSimResolver.iOSSim.getApplicationPath(
device.deviceInfo.identifier,
@@ -53,7 +53,7 @@ export class DevicePathProvider implements IDevicePathProvider {
}
public getDeviceSyncZipPath(device: Mobile.IDevice): string {
- return this.$mobileHelper.isiOSPlatform(device.deviceInfo.platform) &&
+ return this.$mobileHelper.isApplePlatform(device.deviceInfo.platform) &&
!device.isEmulator
? LiveSyncPaths.IOS_DEVICE_SYNC_ZIP_PATH
: undefined;
diff --git a/lib/device-sockets/ios/app-debug-socket-proxy-factory.ts b/lib/device-sockets/ios/app-debug-socket-proxy-factory.ts
index 4e1738d217..3f83fcbaad 100644
--- a/lib/device-sockets/ios/app-debug-socket-proxy-factory.ts
+++ b/lib/device-sockets/ios/app-debug-socket-proxy-factory.ts
@@ -157,7 +157,6 @@ export class AppDebugSocketProxyFactory
let currentWebSocket: ws = null;
const server = new ws.Server({
port: localPort,
- host: "localhost",
verifyClient: async (
info: any,
callback: (res: boolean, code?: number, message?: string) => void
diff --git a/lib/helpers/key-command-helper.ts b/lib/helpers/key-command-helper.ts
index 28f01ff5dd..ecfaabd367 100644
--- a/lib/helpers/key-command-helper.ts
+++ b/lib/helpers/key-command-helper.ts
@@ -88,6 +88,7 @@ export default class KeyCommandHelper implements IKeyCommandHelper {
public printCommands(platform: IKeyCommandPlatform) {
const commands = injector.getRegisteredKeyCommandsNames();
+ const groupings: { [key: string]: boolean } = {};
const commandHelp = commands.reduce((arr, key) => {
const command = injector.resolveKeyCommand(key as IValidKeyName);
@@ -100,6 +101,10 @@ export default class KeyCommandHelper implements IKeyCommandHelper {
) {
return arr;
} else {
+ if (!groupings[command.group]) {
+ groupings[command.group] = true;
+ arr.push(` \n${color.underline(color.bold(command.group))}\n`);
+ }
arr.push(` ${color.bold(command.key)} — ${command.description}`);
return arr;
}
diff --git a/lib/helpers/livesync-command-helper.ts b/lib/helpers/livesync-command-helper.ts
index e1077d21c6..ea9cc44ea4 100644
--- a/lib/helpers/livesync-command-helper.ts
+++ b/lib/helpers/livesync-command-helper.ts
@@ -104,6 +104,7 @@ export class LiveSyncCommandHelper implements ILiveSyncCommandHelper {
nativePrepare: {
forceRebuildNativeApp: additionalOptions.forceRebuildNativeApp,
},
+ _device: d,
}
);
this.$androidBundleValidatorHelper.validateDeviceApiLevel(d, buildData);
@@ -256,15 +257,15 @@ export class LiveSyncCommandHelper implements ILiveSyncCommandHelper {
}
}
- const workingWithiOSDevices =
- !platform || this.$mobileHelper.isiOSPlatform(platform);
+ const workingWithAppleDevices =
+ !platform || this.$mobileHelper.isApplePlatform(platform);
const shouldKeepProcessAlive =
this.$options.watch || !this.$options.justlaunch;
if (shouldKeepProcessAlive) {
this.$analyticsService.setShouldDispose(false);
this.$cleanupService.setShouldDispose(false);
- if (workingWithiOSDevices) {
+ if (workingWithAppleDevices) {
this.$iosDeviceOperations.setShouldDispose(false);
this.$iOSSimulatorLogProvider.setShouldDispose(false);
}
diff --git a/lib/key-commands/bootstrap.ts b/lib/key-commands/bootstrap.ts
index 39175eda4c..a10d2bd7b8 100644
--- a/lib/key-commands/bootstrap.ts
+++ b/lib/key-commands/bootstrap.ts
@@ -4,9 +4,11 @@ import { injector } from "../common/yok";
const path = "./key-commands/index";
injector.requireKeyCommand("a", path);
-injector.requireKeyCommand("i", path);
injector.requireKeyCommand("A", path);
+injector.requireKeyCommand("i", path);
injector.requireKeyCommand("I", path);
+injector.requireKeyCommand("v", path);
+injector.requireKeyCommand("V", path);
injector.requireKeyCommand("r", path);
injector.requireKeyCommand("R", path);
injector.requireKeyCommand("w", path);
@@ -15,3 +17,7 @@ injector.requireKeyCommand("n", path);
injector.requireKeyCommand(SpecialKeys.QuestionMark, path);
injector.requireKeyCommand(SpecialKeys.CtrlC, path);
+injector.requireCommand("open|ios", path);
+injector.requireCommand("open|android", path);
+injector.requireCommand("open|visionos", path);
+injector.requireCommand("open|vision", path);
diff --git a/lib/key-commands/index.ts b/lib/key-commands/index.ts
index 29daa9d6c3..440fec13af 100644
--- a/lib/key-commands/index.ts
+++ b/lib/key-commands/index.ts
@@ -3,7 +3,7 @@ import { platform as currentPlatform } from "os";
import * as path from "path";
import { color } from "../color";
import { PrepareCommand } from "../commands/prepare";
-import { IChildProcess } from "../common/declarations";
+import { IChildProcess, IXcodeSelectService } from "../common/declarations";
import { ICommand } from "../common/definitions/commands";
import {
IKeyCommand,
@@ -16,11 +16,14 @@ import {
import { injector } from "../common/yok";
import { IProjectData } from "../definitions/project";
import { IStartService } from "../definitions/start-service";
+import { IOSProjectService } from "../services/ios-project-service";
+import { IOptions } from "../declarations";
export class A implements IKeyCommand {
key: IValidKeyName = "a";
platform: IKeyCommandPlatform = "Android";
- description: string = "Run android app";
+ description: string = "Run Android app";
+ group = "Android";
constructor(private $startService: IStartService) {}
@@ -36,9 +39,10 @@ export class A implements IKeyCommand {
export class ShiftA implements IKeyCommand {
key: IValidKeyName = "A";
platform: IKeyCommandPlatform = "Android";
- description: string = "Open android project in Android Studio";
+ description: string = "Open project in Android Studio";
+ group = "Android";
willBlockKeyCommandExecution: boolean = true;
-
+ protected isInteractive: boolean = true;
constructor(
private $logger: ILogger,
private $liveSyncCommandHelper: ILiveSyncCommandHelper,
@@ -56,7 +60,9 @@ export class ShiftA implements IKeyCommand {
"prepare"
) as PrepareCommand;
await prepareCommand.execute([this.platform]);
- process.stdin.resume();
+ if (this.isInteractive) {
+ process.stdin.resume();
+ }
}
const os = currentPlatform();
@@ -93,7 +99,11 @@ export class ShiftA implements IKeyCommand {
return;
}
- this.$childProcess.exec(`"${studioPath}" "${androidDir}"`);
+ const child = this.$childProcess.spawn(studioPath, [androidDir], {
+ detached: true,
+ stdio: "ignore",
+ });
+ child.unref();
} else if (os === "linux") {
if (!fs.existsSync(`/usr/local/android-studio/bin/studio.sh`)) {
this.$logger.error("Android Studio is not installed");
@@ -105,11 +115,28 @@ export class ShiftA implements IKeyCommand {
}
}
}
+export class OpenAndroidCommand extends ShiftA {
+ constructor(
+ $logger: ILogger,
+ $liveSyncCommandHelper: ILiveSyncCommandHelper,
+ $childProcess: IChildProcess,
+ $projectData: IProjectData,
+ private $options: IOptions
+ ) {
+ super($logger, $liveSyncCommandHelper, $childProcess, $projectData);
+ this.isInteractive = false;
+ }
+ async execute(): Promise {
+ this.$options.watch = false;
+ super.execute();
+ }
+}
export class I implements IKeyCommand {
key: IValidKeyName = "i";
platform: IKeyCommandPlatform = "iOS";
description: string = "Run iOS app";
+ group = "iOS";
constructor(private $startService: IStartService) {}
@@ -125,39 +152,190 @@ export class I implements IKeyCommand {
export class ShiftI implements IKeyCommand {
key: IValidKeyName = "I";
platform: IKeyCommandPlatform = "iOS";
- description: string = "Open iOS project in Xcode";
+ description: string = "Open project in Xcode";
+ group = "iOS";
willBlockKeyCommandExecution: boolean = true;
+ protected isInteractive: boolean = true;
constructor(
+ private $iOSProjectService: IOSProjectService,
private $logger: ILogger,
private $childProcess: IChildProcess,
- private $projectData: IProjectData
+ private $projectData: IProjectData,
+ private $xcodeSelectService: IXcodeSelectService,
+ private $xcodebuildArgsService: IXcodebuildArgsService
) {}
async execute(): Promise {
- this.$projectData.initializeProjectData();
- const iosDir = path.resolve(this.$projectData.platformsDir, "ios");
+ const os = currentPlatform();
+ if (os === "darwin") {
+ this.$projectData.initializeProjectData();
+ const iosDir = path.resolve(this.$projectData.platformsDir, "ios");
+
+ if (!fs.existsSync(iosDir)) {
+ const prepareCommand = injector.resolveCommand(
+ "prepare"
+ ) as PrepareCommand;
+
+ await prepareCommand.execute(["ios"]);
+ if (this.isInteractive) {
+ process.stdin.resume();
+ }
+ }
+ const platformData = this.$iOSProjectService.getPlatformData(
+ this.$projectData
+ );
+ const xcprojectFile = this.$xcodebuildArgsService.getXcodeProjectArgs(
+ platformData,
+ this.$projectData
+ )[1];
+
+ if (fs.existsSync(xcprojectFile)) {
+ this.$xcodeSelectService
+ .getDeveloperDirectoryPath()
+ .then(() => this.$childProcess.exec(`open ${xcprojectFile}`, {}))
+ .catch((e) => {
+ this.$logger.error(e.message);
+ });
+ } else {
+ this.$logger.error(`Unable to open project file: ${xcprojectFile}`);
+ }
+ } else {
+ this.$logger.error("Opening a project in XCode requires macOS.");
+ }
+ }
+}
+
+export class OpenIOSCommand extends ShiftI {
+ constructor(
+ $iOSProjectService: IOSProjectService,
+ $logger: ILogger,
+ $childProcess: IChildProcess,
+ $projectData: IProjectData,
+ $xcodeSelectService: IXcodeSelectService,
+ $xcodebuildArgsService: IXcodebuildArgsService,
+ private $options: IOptions
+ ) {
+ super(
+ $iOSProjectService,
+ $logger,
+ $childProcess,
+ $projectData,
+ $xcodeSelectService,
+ $xcodebuildArgsService
+ );
+ this.isInteractive = false;
+ }
+ async execute(): Promise {
+ this.$options.watch = false;
+ super.execute();
+ }
+}
- // TODO: reuse logic for resolving the xcode project file.
- const xcprojectFile = path.resolve(iosDir);
+export class V implements IKeyCommand {
+ key: IValidKeyName = "v";
+ platform: IKeyCommandPlatform = "visionOS";
+ description: string = "Run visionOS app";
+ group = "visionOS";
- if (!fs.existsSync(iosDir)) {
- const prepareCommand = injector.resolveCommand(
- "prepare"
- ) as PrepareCommand;
- await prepareCommand.execute(["ios"]);
- process.stdin.resume();
- }
+ constructor(private $startService: IStartService) {}
+ async execute(): Promise {
+ this.$startService.runVisionOS();
+ }
+
+ canExecute(processType: SupportedProcessType) {
+ return processType === "start";
+ }
+}
+
+export class ShiftV implements IKeyCommand {
+ key: IValidKeyName = "V";
+ platform: IKeyCommandPlatform = "visionOS";
+ description: string = "Open project in Xcode";
+ group = "visionOS";
+ willBlockKeyCommandExecution: boolean = true;
+ protected isInteractive: boolean = true;
+
+ constructor(
+ private $iOSProjectService: IOSProjectService,
+ private $logger: ILogger,
+ private $childProcess: IChildProcess,
+ private $projectData: IProjectData,
+ private $xcodeSelectService: IXcodeSelectService,
+ private $xcodebuildArgsService: IXcodebuildArgsService,
+ protected $options: IOptions
+ ) {}
+
+ async execute(): Promise {
+ this.$options.platformOverride = "visionOS";
const os = currentPlatform();
if (os === "darwin") {
- // TODO: remove this, and just use "open path/to/ios/xcworkspace or xcproject".
- if (!fs.existsSync("/Applications/Xcode.app")) {
- this.$logger.error("Xcode is not installed");
- return;
+ this.$projectData.initializeProjectData();
+ const visionOSDir = path.resolve(
+ this.$projectData.platformsDir,
+ "visionos"
+ );
+
+ if (!fs.existsSync(visionOSDir)) {
+ const prepareCommand = injector.resolveCommand(
+ "prepare"
+ ) as PrepareCommand;
+
+ await prepareCommand.execute(["visionos"]);
+ if (this.isInteractive) {
+ process.stdin.resume();
+ }
+ }
+ const platformData = this.$iOSProjectService.getPlatformData(
+ this.$projectData
+ );
+ const xcprojectFile = this.$xcodebuildArgsService.getXcodeProjectArgs(
+ platformData,
+ this.$projectData
+ )[1];
+
+ if (fs.existsSync(xcprojectFile)) {
+ this.$xcodeSelectService
+ .getDeveloperDirectoryPath()
+ .then(() => this.$childProcess.exec(`open ${xcprojectFile}`, {}))
+ .catch((e) => {
+ this.$logger.error(e.message);
+ });
+ } else {
+ this.$logger.error(`Unable to open project file: ${xcprojectFile}`);
}
- this.$childProcess.exec(`open ${xcprojectFile}`);
+ } else {
+ this.$logger.error("Opening a project in XCode requires macOS.");
}
+ this.$options.platformOverride = null;
+ }
+}
+
+export class OpenVisionOSCommand extends ShiftV {
+ constructor(
+ $iOSProjectService: IOSProjectService,
+ $logger: ILogger,
+ $childProcess: IChildProcess,
+ $projectData: IProjectData,
+ $xcodeSelectService: IXcodeSelectService,
+ $xcodebuildArgsService: IXcodebuildArgsService,
+ protected $options: IOptions
+ ) {
+ super(
+ $iOSProjectService,
+ $logger,
+ $childProcess,
+ $projectData,
+ $xcodeSelectService,
+ $xcodebuildArgsService,
+ $options
+ );
+ this.isInteractive = false;
+ }
+ async execute(): Promise {
+ this.$options.watch = false;
+ super.execute();
}
}
@@ -165,6 +343,7 @@ export class R implements IKeyCommand {
key: IValidKeyName = "r";
platform: IKeyCommandPlatform = "all";
description: string = "Rebuild native app if needed and restart";
+ group = "Development Workflow";
willBlockKeyCommandExecution: boolean = true;
constructor(private $liveSyncCommandHelper: ILiveSyncCommandHelper) {}
@@ -188,6 +367,7 @@ export class ShiftR implements IKeyCommand {
key: IValidKeyName = "R";
platform: IKeyCommandPlatform = "all";
description: string = "Force rebuild native app and restart";
+ group = "Development Workflow";
willBlockKeyCommandExecution: boolean = true;
constructor(private $liveSyncCommandHelper: ILiveSyncCommandHelper) {}
@@ -212,6 +392,7 @@ export class CtrlC implements IKeyCommand {
key: IValidKeyName = SpecialKeys.CtrlC;
platform: IKeyCommandPlatform = "all";
description: string;
+ group = "Development Workflow";
willBlockKeyCommandExecution: boolean = false;
async execute(): Promise {
@@ -223,6 +404,7 @@ export class W implements IKeyCommand {
key: IValidKeyName = "w";
platform: IKeyCommandPlatform = "all";
description: string = "Toggle file watcher";
+ group = "Development Workflow";
willBlockKeyCommandExecution: boolean = true;
constructor(private $prepareController: IPrepareController) {}
@@ -243,6 +425,7 @@ export class C implements IKeyCommand {
key: IValidKeyName = "c";
platform: IKeyCommandPlatform = "all";
description: string = "Clean project";
+ group = "Development Workflow";
willBlockKeyCommandExecution: boolean = true;
constructor(
@@ -270,6 +453,7 @@ export class N implements IKeyCommand {
key: IValidKeyName = "n";
platform: IKeyCommandPlatform = "all";
description: string = "Install dependencies";
+ group = "Development Workflow";
willBlockKeyCommandExecution: boolean = true;
async execute(platform: string): Promise {
@@ -283,6 +467,7 @@ export class QuestionMark implements IKeyCommand {
key: IValidKeyName = SpecialKeys.QuestionMark;
platform: IKeyCommandPlatform = "all";
description: string = "Show this help";
+ group = "Development Workflow";
willBlockKeyCommandExecution: boolean = true;
constructor(private $keyCommandHelper: IKeyCommandHelper) {}
@@ -296,6 +481,10 @@ export class QuestionMark implements IKeyCommand {
case "ios":
platform = "iOS";
break;
+ case "visionOS":
+ case "vision":
+ platform = "visionOS";
+ break;
default:
platform = "all";
break;
@@ -306,9 +495,11 @@ export class QuestionMark implements IKeyCommand {
}
injector.registerKeyCommand("a", A);
-injector.registerKeyCommand("i", I);
injector.registerKeyCommand("A", ShiftA);
+injector.registerKeyCommand("i", I);
injector.registerKeyCommand("I", ShiftI);
+injector.registerKeyCommand("v", V);
+injector.registerKeyCommand("V", ShiftV);
injector.registerKeyCommand("r", R);
injector.registerKeyCommand("R", ShiftR);
injector.registerKeyCommand("w", W);
@@ -317,3 +508,8 @@ injector.registerKeyCommand("A", ShiftA);
injector.registerKeyCommand("n", N);
injector.registerKeyCommand(SpecialKeys.QuestionMark, QuestionMark);
injector.registerKeyCommand(SpecialKeys.CtrlC, CtrlC);
+
+injector.registerCommand("open|ios", OpenIOSCommand);
+injector.registerCommand("open|visionos", OpenVisionOSCommand);
+injector.registerCommand("open|vision", OpenVisionOSCommand);
+injector.registerCommand("open|android", OpenAndroidCommand);
diff --git a/lib/options.ts b/lib/options.ts
index 26451d8264..3a9dcf3c0a 100644
--- a/lib/options.ts
+++ b/lib/options.ts
@@ -132,6 +132,12 @@ export class Options {
vue: { type: OptionType.Boolean, hasSensitiveValue: false },
vuejs: { type: OptionType.Boolean, hasSensitiveValue: false },
svelte: { type: OptionType.Boolean, hasSensitiveValue: false },
+ vision: { type: OptionType.Boolean, hasSensitiveValue: false },
+ "vision-ng": { type: OptionType.Boolean, hasSensitiveValue: false },
+ "vision-react": { type: OptionType.Boolean, hasSensitiveValue: false },
+ "vision-solid": { type: OptionType.Boolean, hasSensitiveValue: false },
+ "vision-svelte": { type: OptionType.Boolean, hasSensitiveValue: false },
+ "vision-vue": { type: OptionType.Boolean, hasSensitiveValue: false },
tsc: { type: OptionType.Boolean, hasSensitiveValue: false },
ts: { type: OptionType.Boolean, hasSensitiveValue: false },
typescript: { type: OptionType.Boolean, hasSensitiveValue: false },
@@ -422,9 +428,8 @@ export class Options {
this.$settingsService.setSettings({
profileDir: this.argv.profileDir,
});
- this.argv.profileDir = this.argv[
- "profile-dir"
- ] = this.$settingsService.getProfileDir();
+ this.argv.profileDir = this.argv["profile-dir"] =
+ this.$settingsService.getProfileDir();
// if justlaunch is set, it takes precedence over the --watch flag and the default true value
if (this.argv.justlaunch) {
diff --git a/lib/package-installation-manager.ts b/lib/package-installation-manager.ts
index 904d5caaec..535ff2d942 100644
--- a/lib/package-installation-manager.ts
+++ b/lib/package-installation-manager.ts
@@ -70,9 +70,21 @@ export class PackageInstallationManager implements IPackageInstallationManager {
versions: true,
});
- return semver
- .maxSatisfying(data?.versions ?? data, versionRange)
- ?.toString();
+ let versions;
+
+ if (typeof data === "string") {
+ versions = [data];
+ } else if (data?.versions) {
+ versions = data.versions;
+ } else {
+ versions = data;
+ }
+
+ if (!versions || !Array.isArray(versions)) {
+ return null;
+ }
+
+ return semver.maxSatisfying(versions, versionRange)?.toString();
}
public async getMaxSatisfyingVersionSafe(
diff --git a/lib/package-manager.ts b/lib/package-manager.ts
index 8944fc7148..df6d18aa92 100644
--- a/lib/package-manager.ts
+++ b/lib/package-manager.ts
@@ -28,6 +28,7 @@ export class PackageManager implements IPackageManager {
private $yarn: INodePackageManager,
private $yarn2: INodePackageManager,
private $pnpm: INodePackageManager,
+ private $bun: INodePackageManager,
private $logger: ILogger,
private $userSettingsService: IUserSettingsService,
private $projectConfigService: IProjectConfigService
@@ -144,9 +145,8 @@ export class PackageManager implements IPackageManager {
}
try {
- const configPm = this.$projectConfigService.getValue(
- "cli.packageManager"
- );
+ const configPm =
+ this.$projectConfigService.getValue("cli.packageManager");
if (configPm) {
this.$logger.trace(
@@ -172,6 +172,9 @@ export class PackageManager implements IPackageManager {
} else if (pm === PackageManagers.pnpm || this.$options.pnpm) {
this._packageManagerName = PackageManagers.pnpm;
return this.$pnpm;
+ } else if (pm === PackageManagers.bun) {
+ this._packageManagerName = PackageManagers.bun;
+ return this.$bun;
} else {
this._packageManagerName = PackageManagers.npm;
return this.$npm;
diff --git a/lib/project-data.ts b/lib/project-data.ts
index f8bee9a09c..63ddc34e73 100644
--- a/lib/project-data.ts
+++ b/lib/project-data.ts
@@ -79,6 +79,7 @@ export class ProjectData implements IProjectData {
this.warnProjectId();
this.projectIdentifiers.ios = identifier;
this.projectIdentifiers.android = identifier;
+ this.projectIdentifiers.visionos = identifier;
}
public projectName: string;
@@ -217,11 +218,10 @@ export class ProjectData implements IProjectData {
appResourcesDir,
this.$devicePlatformsConstants.Android
);
- const androidManifestDir = this.$androidResourcesMigrationService.hasMigrated(
- appResourcesDir
- )
- ? path.join(androidDirPath, constants.SRC_DIR, constants.MAIN_DIR)
- : androidDirPath;
+ const androidManifestDir =
+ this.$androidResourcesMigrationService.hasMigrated(appResourcesDir)
+ ? path.join(androidDirPath, constants.SRC_DIR, constants.MAIN_DIR)
+ : androidDirPath;
return path.join(androidManifestDir, constants.MANIFEST_FILE_NAME);
}
@@ -244,7 +244,8 @@ export class ProjectData implements IProjectData {
}
public getAppResourcesDirectoryPath(projectDir?: string): string {
- const appResourcesRelativePath = this.getAppResourcesRelativeDirectoryPath();
+ const appResourcesRelativePath =
+ this.getAppResourcesRelativeDirectoryPath();
return this.resolveToProjectDir(appResourcesRelativePath, projectDir);
}
@@ -313,12 +314,14 @@ export class ProjectData implements IProjectData {
return {
ios: "",
android: "",
+ visionos: "",
};
}
const identifier: Mobile.IProjectIdentifier = {
ios: config.id,
android: config.id,
+ visionos: config.id,
};
if (config.ios && config.ios.id) {
@@ -327,6 +330,9 @@ export class ProjectData implements IProjectData {
if (config.android && config.android.id) {
identifier.android = config.android.id;
}
+ if (config.visionos && config.visionos.id) {
+ identifier.visionos = config.visionos.id;
+ }
return identifier;
}
diff --git a/lib/resolvers/livesync-service-resolver.ts b/lib/resolvers/livesync-service-resolver.ts
index f7399ea47a..714374117b 100644
--- a/lib/resolvers/livesync-service-resolver.ts
+++ b/lib/resolvers/livesync-service-resolver.ts
@@ -10,7 +10,7 @@ export class LiveSyncServiceResolver implements ILiveSyncServiceResolver {
) {}
public resolveLiveSyncService(platform: string): IPlatformLiveSyncService {
- if (this.$mobileHelper.isiOSPlatform(platform)) {
+ if (this.$mobileHelper.isApplePlatform(platform)) {
return this.$injector.resolve("iOSLiveSyncService");
} else if (this.$mobileHelper.isAndroidPlatform(platform)) {
return this.$injector.resolve("androidLiveSyncService");
diff --git a/lib/services/build-data-service.ts b/lib/services/build-data-service.ts
index 4eba5a8506..e8a13f7c6f 100644
--- a/lib/services/build-data-service.ts
+++ b/lib/services/build-data-service.ts
@@ -6,7 +6,7 @@ export class BuildDataService implements IBuildDataService {
constructor(private $mobileHelper: Mobile.IMobileHelper) {}
public getBuildData(projectDir: string, platform: string, data: any) {
- if (this.$mobileHelper.isiOSPlatform(platform)) {
+ if (this.$mobileHelper.isApplePlatform(platform)) {
return new IOSBuildData(projectDir, platform, data);
} else if (this.$mobileHelper.isAndroidPlatform(platform)) {
return new AndroidBuildData(projectDir, platform, data);
diff --git a/lib/services/ios-entitlements-service.ts b/lib/services/ios-entitlements-service.ts
index bd2d6c097b..c506971016 100644
--- a/lib/services/ios-entitlements-service.ts
+++ b/lib/services/ios-entitlements-service.ts
@@ -3,10 +3,12 @@ import { PlistSession } from "plist-merge-patch";
import { IPluginsService, IPluginData } from "../definitions/plugins";
import { IProjectData } from "../definitions/project";
import { IFileSystem } from "../common/declarations";
+import { IOptions } from "../declarations";
import { injector } from "../common/yok";
export class IOSEntitlementsService {
constructor(
+ private $options: IOptions,
private $fs: IFileSystem,
private $logger: ILogger,
private $devicePlatformsConstants: Mobile.IDevicePlatformsConstants,
@@ -21,7 +23,7 @@ export class IOSEntitlementsService {
const entitlementsPath = path.join(
projectData.appResourcesDirectoryPath,
this.$mobileHelper.normalizePlatformName(
- this.$devicePlatformsConstants.iOS
+ this.$options.platformOverride ?? this.$devicePlatformsConstants.iOS
),
entitlementsName
);
@@ -31,7 +33,8 @@ export class IOSEntitlementsService {
public getPlatformsEntitlementsPath(projectData: IProjectData): string {
return path.join(
projectData.platformsDir,
- this.$devicePlatformsConstants.iOS.toLowerCase(),
+ this.$options.platformOverride ??
+ this.$devicePlatformsConstants.iOS.toLowerCase(),
projectData.projectName,
projectData.projectName + ".entitlements"
);
diff --git a/lib/services/ios-project-service.ts b/lib/services/ios-project-service.ts
index dafe91ebad..f100b31c45 100644
--- a/lib/services/ios-project-service.ts
+++ b/lib/services/ios-project-service.ts
@@ -63,14 +63,32 @@ interface INativeSourceCodeGroup {
files: string[];
}
-const DevicePlatformSdkName = "iphoneos";
-const SimulatorPlatformSdkName = "iphonesimulator";
+export const DevicePlatformSdkName = "iphoneos";
+export const SimulatorPlatformSdkName = "iphonesimulator";
+export const VisionDevicePlatformSdkName = "xros";
+export const VisionSimulatorPlatformSdkName = "xrsimulator";
+
const FRAMEWORK_EXTENSIONS = [".framework", ".xcframework"];
-const getPlatformSdkName = (forDevice: boolean): string =>
- forDevice ? DevicePlatformSdkName : SimulatorPlatformSdkName;
-const getConfigurationName = (release: boolean): string =>
- release ? Configurations.Release : Configurations.Debug;
+const getPlatformSdkName = (buildData: IBuildData): string => {
+ const forDevice =
+ !buildData || buildData.buildForDevice || buildData.buildForAppStore;
+ const isvisionOS = injector
+ .resolve("devicePlatformsConstants")
+ .isvisionOS(buildData.platform);
+
+ if (isvisionOS) {
+ return forDevice
+ ? VisionDevicePlatformSdkName
+ : VisionSimulatorPlatformSdkName;
+ }
+
+ return forDevice ? DevicePlatformSdkName : SimulatorPlatformSdkName;
+};
+
+const getConfigurationName = (release: boolean): string => {
+ return release ? Configurations.Release : Configurations.Debug;
+};
export class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase {
private static IOS_PROJECT_NAME_PLACEHOLDER = "__PROJECT_NAME__";
@@ -78,6 +96,7 @@ export class IOSProjectService extends projectServiceBaseLib.PlatformProjectServ
constructor(
$fs: IFileSystem,
+ private $options: IOptions,
private $childProcess: IChildProcess,
private $cocoapodsService: ICocoaPodsService,
private $errors: IErrors,
@@ -101,7 +120,8 @@ export class IOSProjectService extends projectServiceBaseLib.PlatformProjectServ
private $iOSNativeTargetService: IIOSNativeTargetService,
private $sysInfo: ISysInfo,
private $tempService: ITempService,
- private $spmService: ISPMService
+ private $spmService: ISPMService,
+ private $mobileHelper: Mobile.IMobileHelper
) {
super($fs, $projectDataService);
}
@@ -120,19 +140,22 @@ export class IOSProjectService extends projectServiceBaseLib.PlatformProjectServ
projectData.platformsDir &&
this._platformsDirCache !== projectData.platformsDir
) {
+ const platform = this.$mobileHelper.normalizePlatformName(
+ this.$options.platformOverride ?? this.$devicePlatformsConstants.iOS
+ );
const projectRoot = path.join(
projectData.platformsDir,
- this.$devicePlatformsConstants.iOS.toLowerCase()
+ platform.toLowerCase()
);
const runtimePackage = this.$projectDataService.getRuntimePackage(
projectData.projectDir,
- constants.PlatformTypes.ios
+ platform.toLowerCase() as constants.SupportedPlatform
);
this._platformData = {
frameworkPackageName: runtimePackage.name,
- normalizedPlatformName: "iOS",
- platformNameLowerCase: "ios",
+ normalizedPlatformName: platform,
+ platformNameLowerCase: platform.toLowerCase(),
appDestinationDirectoryPath: path.join(
projectRoot,
projectData.projectName
@@ -144,9 +167,7 @@ export class IOSProjectService extends projectServiceBaseLib.PlatformProjectServ
return path.join(
projectRoot,
constants.BUILD_DIR,
- `${config}-${getPlatformSdkName(
- !options || options.buildForDevice || options.buildForAppStore
- )}`
+ `${config}-${getPlatformSdkName(options)}`
);
},
getValidBuildOutputData: (
@@ -654,12 +675,20 @@ export class IOSProjectService extends projectServiceBaseLib.PlatformProjectServ
this.savePbxProj(project, projectData);
- const resourcesNativeCodePath = path.join(
+ let resourcesNativeCodePath = path.join(
resourcesDirectoryPath,
platformData.normalizedPlatformName,
constants.NATIVE_SOURCE_FOLDER
);
+ if (!this.$fs.exists(resourcesNativeCodePath)) {
+ resourcesNativeCodePath = path.join(
+ resourcesDirectoryPath,
+ this.$devicePlatformsConstants.iOS,
+ constants.NATIVE_SOURCE_FOLDER
+ );
+ }
+
await this.prepareNativeSourceCode(
constants.TNS_NATIVE_SOURCE_GROUP_NAME,
resourcesNativeCodePath,
@@ -696,15 +725,29 @@ export class IOSProjectService extends projectServiceBaseLib.PlatformProjectServ
this.$fs.deleteDirectory(platformsAppResourcesPath);
this.$fs.ensureDirectoryExists(platformsAppResourcesPath);
- this.$fs.copyFile(
- path.join(
- projectAppResourcesPath,
- platformData.normalizedPlatformName,
- "*"
- ),
- platformsAppResourcesPath
+ const platformAppResourcesPath = path.join(
+ projectAppResourcesPath,
+ platformData.normalizedPlatformName
);
+ // this allows App_Resources/visionOS
+ if (this.$fs.exists(platformAppResourcesPath)) {
+ this.$fs.copyFile(
+ path.join(platformAppResourcesPath, "*"),
+ platformsAppResourcesPath
+ );
+ } else {
+ // otherwise falls back to App_Resources/iOS
+ this.$fs.copyFile(
+ path.join(
+ projectAppResourcesPath,
+ this.$devicePlatformsConstants.iOS,
+ "*"
+ ),
+ platformsAppResourcesPath
+ );
+ }
+
this.$fs.deleteFile(
path.join(platformsAppResourcesPath, platformData.configurationFileName)
);
diff --git a/lib/services/ios/spm-service.ts b/lib/services/ios/spm-service.ts
index c5da44cd64..9965549ce4 100644
--- a/lib/services/ios/spm-service.ts
+++ b/lib/services/ios/spm-service.ts
@@ -15,25 +15,32 @@ export class SPMService implements ISPMService {
private $xcodebuildArgsService: IXcodebuildArgsService
) {}
- public getSPMPackages(projectData: IProjectData): IosSPMPackageDefinition[] {
+ public getSPMPackages(
+ projectData: IProjectData,
+ platform: string
+ ): IosSPMPackageDefinition[] {
const spmPackages = this.$projectConfigService.getValue(
- "ios.SPMPackages",
+ `${platform}.SPMPackages`,
[]
);
return spmPackages;
}
- public hasSPMPackages(projectData: IProjectData): boolean {
- return this.getSPMPackages(projectData).length > 0;
- }
+ // note: this is not used anywhere at the moment.
+ // public hasSPMPackages(projectData: IProjectData): boolean {
+ // return this.getSPMPackages(projectData).length > 0;
+ // }
public async applySPMPackages(
platformData: IPlatformData,
projectData: IProjectData
) {
try {
- const spmPackages = this.getSPMPackages(projectData);
+ const spmPackages = this.getSPMPackages(
+ projectData,
+ platformData.platformNameLowerCase
+ );
if (!spmPackages.length) {
this.$logger.trace("SPM: no SPM packages to apply.");
@@ -48,6 +55,7 @@ export class SPMService implements ISPMService {
});
await project.load();
+ // note: in trapeze both visionOS and iOS are handled by the ios project.
if (!project.ios) {
this.$logger.trace("SPM: no iOS project found via trapeze.");
return;
@@ -78,7 +86,7 @@ export class SPMService implements ISPMService {
) {
await this.$xcodebuildCommandService.executeCommand(
this.$xcodebuildArgsService
- .getXcodeProjectArgs(platformData.projectRoot, projectData)
+ .getXcodeProjectArgs(platformData, projectData)
.concat([
"-destination",
"generic/platform=iOS",
diff --git a/lib/services/ios/xcodebuild-args-service.ts b/lib/services/ios/xcodebuild-args-service.ts
index ae47d13cd0..b97a11d8e5 100644
--- a/lib/services/ios/xcodebuild-args-service.ts
+++ b/lib/services/ios/xcodebuild-args-service.ts
@@ -7,13 +7,17 @@ import {
IBuildConfig,
IiOSBuildConfig,
} from "../../definitions/project";
+import { IXcconfigService } from "../../declarations";
import { IPlatformData } from "../../definitions/platform";
import { IFileSystem } from "../../common/declarations";
import { injector } from "../../common/yok";
import * as _ from "lodash";
-const DevicePlatformSdkName = "iphoneos";
-const SimulatorPlatformSdkName = "iphonesimulator";
+import {
+ DevicePlatformSdkName,
+ SimulatorPlatformSdkName,
+ VisionSimulatorPlatformSdkName,
+} from "../ios-project-service";
export class XcodebuildArgsService implements IXcodebuildArgsService {
constructor(
@@ -21,7 +25,8 @@ export class XcodebuildArgsService implements IXcodebuildArgsService {
private $devicesService: Mobile.IDevicesService,
private $fs: IFileSystem,
private $iOSWatchAppService: IIOSWatchAppService,
- private $logger: ILogger
+ private $logger: ILogger,
+ private $xcconfigService: IXcconfigService
) {}
public async getBuildForSimulatorArgs(
@@ -37,10 +42,23 @@ export class XcodebuildArgsService implements IXcodebuildArgsService {
args = args.concat(["CODE_SIGN_IDENTITY="]);
}
+ let destination = "generic/platform=iOS Simulator";
+
+ let isvisionOS = this.$devicePlatformsConstants.isvisionOS(
+ buildConfig.platform
+ );
+
+ if (isvisionOS) {
+ destination = "platform=visionOS Simulator";
+ if (buildConfig._device) {
+ destination += `,id=${buildConfig._device.deviceInfo.identifier}`;
+ }
+ }
+
args = args
.concat([
"-destination",
- "generic/platform=iOS Simulator",
+ destination,
"build",
"-configuration",
buildConfig.release ? Configurations.Release : Configurations.Debug,
@@ -49,11 +67,11 @@ export class XcodebuildArgsService implements IXcodebuildArgsService {
this.getBuildCommonArgs(
platformData,
projectData,
- SimulatorPlatformSdkName
+ isvisionOS ? VisionSimulatorPlatformSdkName : SimulatorPlatformSdkName
)
)
.concat(this.getBuildLoggingArgs())
- .concat(this.getXcodeProjectArgs(platformData.projectRoot, projectData));
+ .concat(this.getXcodeProjectArgs(platformData, projectData));
return args;
}
@@ -68,9 +86,20 @@ export class XcodebuildArgsService implements IXcodebuildArgsService {
platformData.getBuildOutputPath(buildConfig),
projectData.projectName + ".xcarchive"
);
+ let destination = "generic/platform=iOS";
+ let isvisionOS = this.$devicePlatformsConstants.isvisionOS(
+ buildConfig.platform
+ );
+
+ if (isvisionOS) {
+ destination = "platform=visionOS";
+ if (buildConfig._device) {
+ destination += `,id=${buildConfig._device.deviceInfo.identifier}`;
+ }
+ }
const args = [
"-destination",
- "generic/platform=iOS",
+ destination,
"archive",
"-archivePath",
archivePath,
@@ -78,7 +107,7 @@ export class XcodebuildArgsService implements IXcodebuildArgsService {
buildConfig.release ? Configurations.Release : Configurations.Debug,
"-allowProvisioningUpdates",
]
- .concat(this.getXcodeProjectArgs(platformData.projectRoot, projectData))
+ .concat(this.getXcodeProjectArgs(platformData, projectData))
.concat(architectures)
.concat(
this.getBuildCommonArgs(
@@ -97,6 +126,11 @@ export class XcodebuildArgsService implements IXcodebuildArgsService {
): Promise {
const args = [];
+ if (this.$devicePlatformsConstants.isvisionOS(buildConfig.platform)) {
+ args.push("ONLY_ACTIVE_ARCH=YES");
+ return args;
+ }
+
const devicesArchitectures = buildConfig.buildForDevice
? await this.getArchitecturesFromConnectedDevices(buildConfig)
: [];
@@ -108,27 +142,63 @@ export class XcodebuildArgsService implements IXcodebuildArgsService {
}
public getXcodeProjectArgs(
- projectRoot: string,
+ platformData: IPlatformData,
projectData: IProjectData
): string[] {
const xcworkspacePath = path.join(
- projectRoot,
+ platformData.projectRoot,
`${projectData.projectName}.xcworkspace`
);
+ // Introduced in Xcode 14+
+ // ref: https://forums.swift.org/t/telling-xcode-14-beta-4-to-trust-build-tool-plugins-programatically/59305/5
+ const skipPackageValidation = "-skipPackagePluginValidation";
+
+ const extraArgs: string[] = [
+ "-scheme",
+ projectData.projectName,
+ skipPackageValidation,
+ ];
+
+ const BUILD_SETTINGS_FILE_PATH = path.join(
+ projectData.appResourcesDirectoryPath,
+ platformData.normalizedPlatformName,
+ constants.BUILD_XCCONFIG_FILE_NAME
+ );
+
+ // Only include explicit properties from build.xcconfig
+ // Note: we could include entire file via -xcconfig flag
+ // however doing so introduces unwanted side effects
+ // like cocoapods issues related to ASSETCATALOG_COMPILER_APPICON_NAME
+ // references: https://medium.com/@iostechset/why-cocoapods-eats-app-icons-79fe729808d4
+ // https://github.com/CocoaPods/CocoaPods/issues/7003
+
+ const deployTargetProperty = "IPHONEOS_DEPLOYMENT_TARGET";
+ const deployTargetVersion = this.$xcconfigService.readPropertyValue(
+ BUILD_SETTINGS_FILE_PATH,
+ deployTargetProperty
+ );
+ if (deployTargetVersion) {
+ extraArgs.push(`${deployTargetProperty}=${deployTargetVersion}`);
+ }
+
+ const swiftUIBootProperty = "NS_SWIFTUI_BOOT";
+ const swiftUIBootValue = this.$xcconfigService.readPropertyValue(
+ BUILD_SETTINGS_FILE_PATH,
+ swiftUIBootProperty
+ );
+ if (swiftUIBootValue) {
+ extraArgs.push(`${swiftUIBootProperty}=${swiftUIBootValue}`);
+ }
+
if (this.$fs.exists(xcworkspacePath)) {
- return [
- "-workspace",
- xcworkspacePath,
- "-scheme",
- projectData.projectName,
- ];
+ return ["-workspace", xcworkspacePath, ...extraArgs];
}
const xcodeprojPath = path.join(
- projectRoot,
+ platformData.projectRoot,
`${projectData.projectName}.xcodeproj`
);
- return ["-project", xcodeprojPath, "-scheme", projectData.projectName];
+ return ["-project", xcodeprojPath, ...extraArgs];
}
private getBuildLoggingArgs(): string[] {
diff --git a/lib/services/platforms-data-service.ts b/lib/services/platforms-data-service.ts
index 04fc5f0756..0f0ac30848 100644
--- a/lib/services/platforms-data-service.ts
+++ b/lib/services/platforms-data-service.ts
@@ -2,17 +2,20 @@ import { IProjectData } from "../definitions/project";
import { IPlatformData, IPlatformsDataService } from "../definitions/platform";
import { injector } from "../common/yok";
import * as _ from "lodash";
+import { IOptions } from "../declarations";
export class PlatformsDataService implements IPlatformsDataService {
private platformsDataService: { [index: string]: any } = {};
constructor(
+ private $options: IOptions,
$androidProjectService: IPlatformProjectService,
$iOSProjectService: IPlatformProjectService
) {
this.platformsDataService = {
ios: $iOSProjectService,
android: $androidProjectService,
+ visionos: $iOSProjectService,
};
}
@@ -23,6 +26,7 @@ export class PlatformsDataService implements IPlatformsDataService {
const platformKey = platform && _.first(platform.toLowerCase().split("@"));
let platformData: IPlatformData;
if (platformKey) {
+ this.$options.platformOverride ??= platform;
platformData =
this.platformsDataService[platformKey] &&
this.platformsDataService[platformKey].getPlatformData(projectData);
diff --git a/lib/services/plugins-service.ts b/lib/services/plugins-service.ts
index 46c45b23ec..b1dc3a5a63 100644
--- a/lib/services/plugins-service.ts
+++ b/lib/services/plugins-service.ts
@@ -623,25 +623,41 @@ This framework comes from ${dependencyName} plugin, which is installed multiple
cacheData: IDependencyData | INodeModuleData,
projectDir: string
): IPluginData {
- const pluginData: any = {};
- pluginData.name = cacheData.name;
- pluginData.version = cacheData.version;
- pluginData.fullPath =
- (cacheData).directory ||
- path.dirname(
- this.getPackageJsonFilePathForModule(cacheData.name, projectDir)
+ try {
+ const pluginData: any = {};
+ pluginData.name = cacheData.name;
+ pluginData.version = cacheData.version;
+ pluginData.fullPath =
+ (cacheData).directory ||
+ path.dirname(
+ this.getPackageJsonFilePathForModule(cacheData.name, projectDir)
+ );
+ pluginData.isPlugin = !!cacheData.nativescript;
+ pluginData.pluginPlatformsFolderPath = (platform: string) => {
+ if (this.$mobileHelper.isvisionOSPlatform(platform)) {
+ platform = constants.PlatformTypes.ios;
+ }
+ return path.join(
+ pluginData.fullPath,
+ "platforms",
+ platform.toLowerCase()
+ );
+ };
+ const data = cacheData.nativescript;
+
+ if (pluginData.isPlugin) {
+ pluginData.platformsData = data.platforms;
+ pluginData.pluginVariables = data.variables;
+ }
+ return pluginData;
+ } catch (err) {
+ this.$logger.trace(
+ "NOTE: There appears to be a problem with this dependency:",
+ cacheData.name
);
- pluginData.isPlugin = !!cacheData.nativescript;
- pluginData.pluginPlatformsFolderPath = (platform: string) =>
- path.join(pluginData.fullPath, "platforms", platform.toLowerCase());
- const data = cacheData.nativescript;
-
- if (pluginData.isPlugin) {
- pluginData.platformsData = data.platforms;
- pluginData.pluginVariables = data.variables;
+ this.$logger.trace(err);
+ return null;
}
-
- return pluginData;
}
private removeDependencyFromPackageJsonContent(
diff --git a/lib/services/prepare-data-service.ts b/lib/services/prepare-data-service.ts
index b533a4e6da..90f34766f6 100644
--- a/lib/services/prepare-data-service.ts
+++ b/lib/services/prepare-data-service.ts
@@ -7,7 +7,7 @@ export class PrepareDataService implements IPrepareDataService {
public getPrepareData(projectDir: string, platform: string, data: any) {
const platformLowerCase = platform.toLowerCase();
- if (this.$mobileHelper.isiOSPlatform(platform)) {
+ if (this.$mobileHelper.isApplePlatform(platform)) {
return new IOSPrepareData(projectDir, platformLowerCase, data);
} else if (this.$mobileHelper.isAndroidPlatform(platform)) {
return new AndroidPrepareData(projectDir, platformLowerCase, data);
diff --git a/lib/services/project-changes-service.ts b/lib/services/project-changes-service.ts
index edb9b2593d..5ffa09c3bf 100644
--- a/lib/services/project-changes-service.ts
+++ b/lib/services/project-changes-service.ts
@@ -83,10 +83,22 @@ export class ProjectChangesService implements IProjectChangesService {
prepareData
);
if (!isNewPrepareInfo) {
- const platformResourcesDir = path.join(
+ let platformResourcesDir = path.join(
projectData.appResourcesDirectoryPath,
platformData.normalizedPlatformName
);
+
+ if (
+ !this.$fs.exists(platformResourcesDir) &&
+ platformData.platformNameLowerCase ===
+ this.$devicePlatformsConstants.visionOS.toLowerCase()
+ ) {
+ platformResourcesDir = path.join(
+ projectData.appResourcesDirectoryPath,
+ this.$devicePlatformsConstants.iOS
+ );
+ }
+
this._changesInfo.appResourcesChanged = this.containsNewerFiles(
platformResourcesDir,
projectData
diff --git a/lib/services/project-data-service.ts b/lib/services/project-data-service.ts
index abc917c424..52f1ff49a5 100644
--- a/lib/services/project-data-service.ts
+++ b/lib/services/project-data-service.ts
@@ -246,9 +246,8 @@ export class ProjectDataService implements IProjectDataService {
// ignore
}
- const content = this.getImageDefinitions()[
- useLegacy ? "android_legacy" : "android"
- ];
+ const content =
+ this.getImageDefinitions()[useLegacy ? "android_legacy" : "android"];
return {
icons: this.getAndroidAssetSubGroup(content.icons, basePath),
@@ -638,6 +637,8 @@ export class ProjectDataService implements IProjectDataService {
constants.SCOPED_ANDROID_RUNTIME_NAME,
constants.TNS_ANDROID_RUNTIME_NAME,
].includes(d.name);
+ } else if (platform === constants.PlatformTypes.visionos) {
+ return d.name === constants.SCOPED_VISIONOS_RUNTIME_NAME;
}
});
@@ -694,6 +695,11 @@ export class ProjectDataService implements IProjectDataService {
name: constants.SCOPED_ANDROID_RUNTIME_NAME,
version: null,
};
+ } else if (platform === constants.PlatformTypes.visionos) {
+ return {
+ name: constants.SCOPED_VISIONOS_RUNTIME_NAME,
+ version: null,
+ };
}
}
diff --git a/lib/services/start-service.ts b/lib/services/start-service.ts
index 3ce4b8df2a..7ed068916d 100644
--- a/lib/services/start-service.ts
+++ b/lib/services/start-service.ts
@@ -11,6 +11,7 @@ import { IStaticConfig } from "../declarations";
export default class StartService implements IStartService {
ios: ChildProcess;
+ visionos: ChildProcess;
android: ChildProcess;
verbose: boolean = false;
@@ -64,6 +65,10 @@ export default class StartService implements IStartService {
this.runForPlatform(this.$devicePlatformsConstants.iOS);
}
+ async runVisionOS(): Promise {
+ this.runForPlatform(this.$devicePlatformsConstants.visionOS);
+ }
+
async runAndroid(): Promise {
this.runForPlatform(this.$devicePlatformsConstants.Android);
}
@@ -72,6 +77,11 @@ export default class StartService implements IStartService {
this.ios.kill("SIGINT");
}
}
+ async stopVisionOS(): Promise {
+ if (this.visionos) {
+ this.visionos.kill("SIGINT");
+ }
+ }
async stopAndroid(): Promise {
if (this.android) {
this.android.kill("SIGINT");
diff --git a/lib/services/webpack/webpack-compiler-service.ts b/lib/services/webpack/webpack-compiler-service.ts
index 4590fbc895..205aa8faea 100644
--- a/lib/services/webpack/webpack-compiler-service.ts
+++ b/lib/services/webpack/webpack-compiler-service.ts
@@ -361,11 +361,13 @@ export class WebpackCompilerService
const { env } = prepareData;
const envData = Object.assign({}, env, { [platform.toLowerCase()]: true });
+ const appId = projectData.projectIdentifiers[platform];
const appPath = projectData.getAppDirectoryRelativePath();
const appResourcesPath = projectData.getAppResourcesRelativeDirectoryPath();
Object.assign(
envData,
+ appId && { appId },
appPath && { appPath },
appResourcesPath && { appResourcesPath },
{
diff --git a/package-lock.json b/package-lock.json
index 59753848f4..d4e5bbe597 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "nativescript",
- "version": "8.6.5",
+ "version": "8.7.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "nativescript",
- "version": "8.6.5",
+ "version": "8.7.0",
"bundleDependencies": [
"@npmcli/move-file",
"stringify-package"
@@ -14,7 +14,7 @@
"hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": {
- "@nativescript/doctor": "2.0.13",
+ "@nativescript/doctor": "2.0.14",
"@nativescript/schematics-executor": "0.0.2",
"@npmcli/arborist": "^7.2.0",
"@npmcli/move-file": "^2.0.0",
@@ -36,7 +36,7 @@
"glob": "9.3.4",
"ios-device-lib": "0.9.3",
"ios-mobileprovision-finder": "1.1.0",
- "ios-sim-portable": "4.4.1",
+ "ios-sim-portable": "4.5.0",
"jimp": "0.22.10",
"lodash": "4.17.21",
"log4js": "6.9.1",
@@ -45,7 +45,7 @@
"minimatch": "7.4.2",
"mkdirp": "2.1.6",
"mute-stream": "1.0.0",
- "nativescript-dev-xcode": "0.6.0",
+ "nativescript-dev-xcode": "0.7.0",
"open": "8.4.2",
"ora": "5.4.1",
"pacote": "15.1.1",
@@ -140,81 +140,17 @@
}
},
"node_modules/@babel/code-frame": {
- "version": "7.22.13",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
- "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
+ "version": "7.24.2",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz",
+ "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==",
"dependencies": {
- "@babel/highlight": "^7.22.13",
- "chalk": "^2.4.2"
+ "@babel/highlight": "^7.24.2",
+ "picocolors": "^1.0.0"
},
"engines": {
"node": ">=6.9.0"
}
},
- "node_modules/@babel/code-frame/node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/code-frame/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/code-frame/node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/@babel/code-frame/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
- },
- "node_modules/@babel/code-frame/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/@babel/code-frame/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==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/code-frame/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==",
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/@babel/helper-validator-identifier": {
"version": "7.22.20",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
@@ -224,13 +160,14 @@
}
},
"node_modules/@babel/highlight": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
- "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
+ "version": "7.24.2",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz",
+ "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==",
"dependencies": {
"@babel/helper-validator-identifier": "^7.22.20",
"chalk": "^2.4.2",
- "js-tokens": "^4.0.0"
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
},
"engines": {
"node": ">=6.9.0"
@@ -320,6 +257,11 @@
"node": ">=12"
}
},
+ "node_modules/@gar/promisify": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
+ "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw=="
+ },
"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",
@@ -395,9 +337,9 @@
}
},
"node_modules/@ionic/utils-subprocess": {
- "version": "2.1.12",
- "resolved": "https://registry.npmjs.org/@ionic/utils-subprocess/-/utils-subprocess-2.1.12.tgz",
- "integrity": "sha512-N05Y+dIXBHofKWJTheCMzVqmgY9wFmZcRv/LdNnfXaaA/mxLTyGxQYeig8fvQXTtDafb/siZXcrTkmQ+y6n3Yg==",
+ "version": "2.1.14",
+ "resolved": "https://registry.npmjs.org/@ionic/utils-subprocess/-/utils-subprocess-2.1.14.tgz",
+ "integrity": "sha512-nGYvyGVjU0kjPUcSRFr4ROTraT3w/7r502f5QJEsMRKTqa4eEzCshtwRk+/mpASm0kgBN5rrjYA5A/OZg8ahqg==",
"dependencies": {
"@ionic/utils-array": "2.1.6",
"@ionic/utils-fs": "3.1.7",
@@ -526,11 +468,11 @@
"integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ=="
},
"node_modules/@jimp/bmp": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.22.10.tgz",
- "integrity": "sha512-1UXRl1Nw1KptZ1r0ANqtXOst9vGH51dq7keVKQzyyTO2lz4dOaezS9StuSTNh+RmiHg/SVPaFRpPfB0S/ln4Kg==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.22.12.tgz",
+ "integrity": "sha512-aeI64HD0npropd+AR76MCcvvRaa+Qck6loCOS03CkkxGHN5/r336qTM5HPUdHKMDOGzqknuVPA8+kK1t03z12g==",
"dependencies": {
- "@jimp/utils": "^0.22.10",
+ "@jimp/utils": "^0.22.12",
"bmp-js": "^0.1.0"
},
"peerDependencies": {
@@ -538,11 +480,11 @@
}
},
"node_modules/@jimp/core": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.22.10.tgz",
- "integrity": "sha512-ZKyrehVy6wu1PnBXIUpn/fXmyMRQiVSbvHDubgXz4bfTOao3GiOurKHjByutQIgozuAN6ZHWiSge1dKA+dex3w==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.22.12.tgz",
+ "integrity": "sha512-l0RR0dOPyzMKfjUW1uebzueFEDtCOj9fN6pyTYWWOM/VS4BciXQ1VVrJs8pO3kycGYZxncRKhCoygbNr8eEZQA==",
"dependencies": {
- "@jimp/utils": "^0.22.10",
+ "@jimp/utils": "^0.22.12",
"any-base": "^1.1.0",
"buffer": "^5.2.0",
"exif-parser": "^0.1.12",
@@ -553,19 +495,19 @@
}
},
"node_modules/@jimp/custom": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.22.10.tgz",
- "integrity": "sha512-sPZkUYe1hu0iIgNisjizxPJqq2vaaKvkCkPoXq2U6UV3ZA1si/WVdrg25da3IcGIEV+83AoHgM8TvqlLgrCJsg==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.22.12.tgz",
+ "integrity": "sha512-xcmww1O/JFP2MrlGUMd3Q78S3Qu6W3mYTXYuIqFq33EorgYHV/HqymHfXy9GjiCJ7OI+7lWx6nYFOzU7M4rd1Q==",
"dependencies": {
- "@jimp/core": "^0.22.10"
+ "@jimp/core": "^0.22.12"
}
},
"node_modules/@jimp/gif": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.22.10.tgz",
- "integrity": "sha512-yEX2dSpamvkSx1PPDWGnKeWDrBz0vrCKjVG/cn4Zr68MRRT75tbZIeOrBa+RiUpY3ho5ix7d36LkYvt3qfUIhQ==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.22.12.tgz",
+ "integrity": "sha512-y6BFTJgch9mbor2H234VSjd9iwAhaNf/t3US5qpYIs0TSbAvM02Fbc28IaDETj9+4YB4676sz4RcN/zwhfu1pg==",
"dependencies": {
- "@jimp/utils": "^0.22.10",
+ "@jimp/utils": "^0.22.12",
"gifwrap": "^0.10.1",
"omggif": "^1.0.9"
},
@@ -574,11 +516,11 @@
}
},
"node_modules/@jimp/jpeg": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.22.10.tgz",
- "integrity": "sha512-6bu98pAcVN4DY2oiDLC4TOgieX/lZrLd1tombWZOFCN5PBmqaHQxm7IUmT+Wj4faEvh8QSHgVLSA+2JQQRJWVA==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.22.12.tgz",
+ "integrity": "sha512-Rq26XC/uQWaQKyb/5lksCTCxXhtY01NJeBN+dQv5yNYedN0i7iYu+fXEoRsfaJ8xZzjoANH8sns7rVP4GE7d/Q==",
"dependencies": {
- "@jimp/utils": "^0.22.10",
+ "@jimp/utils": "^0.22.12",
"jpeg-js": "^0.4.4"
},
"peerDependencies": {
@@ -586,44 +528,44 @@
}
},
"node_modules/@jimp/plugin-blit": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.22.10.tgz",
- "integrity": "sha512-6EI8Sl+mxYHEIy6Yteh6eknD+EZguKpNdr3sCKxNezmLR0+vK99vHcllo6uGSjXXiwtwS67Xqxn8SsoatL+UJQ==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.22.12.tgz",
+ "integrity": "sha512-xslz2ZoFZOPLY8EZ4dC29m168BtDx95D6K80TzgUi8gqT7LY6CsajWO0FAxDwHz6h0eomHMfyGX0stspBrTKnQ==",
"dependencies": {
- "@jimp/utils": "^0.22.10"
+ "@jimp/utils": "^0.22.12"
},
"peerDependencies": {
"@jimp/custom": ">=0.3.5"
}
},
"node_modules/@jimp/plugin-blur": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.22.10.tgz",
- "integrity": "sha512-4XRTWuPVdMXJeclJMisXPGizeHtTryVaVV5HnuQXpKqIZtzXReCCpNGH8q/i0kBQOQMXhGWS3mpqOEwtpPePKw==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.22.12.tgz",
+ "integrity": "sha512-S0vJADTuh1Q9F+cXAwFPlrKWzDj2F9t/9JAbUvaaDuivpyWuImEKXVz5PUZw2NbpuSHjwssbTpOZ8F13iJX4uw==",
"dependencies": {
- "@jimp/utils": "^0.22.10"
+ "@jimp/utils": "^0.22.12"
},
"peerDependencies": {
"@jimp/custom": ">=0.3.5"
}
},
"node_modules/@jimp/plugin-circle": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.22.10.tgz",
- "integrity": "sha512-mhcwTO1ywRxiCgtLGge6tDDIDPlX6qkI3CY+BjgGG/XhVHccCddXgOGLdlf+5OuKIEF2Nqs0V01LQEQIJFTmEw==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.22.12.tgz",
+ "integrity": "sha512-SWVXx1yiuj5jZtMijqUfvVOJBwOifFn0918ou4ftoHgegc5aHWW5dZbYPjvC9fLpvz7oSlptNl2Sxr1zwofjTg==",
"dependencies": {
- "@jimp/utils": "^0.22.10"
+ "@jimp/utils": "^0.22.12"
},
"peerDependencies": {
"@jimp/custom": ">=0.3.5"
}
},
"node_modules/@jimp/plugin-color": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.22.10.tgz",
- "integrity": "sha512-e4t3L7Kedd96E0x1XjsTM6NcgulKUU66HdFTao7Tc9FYJRFSlttARZ/C6LEryGDm/i69R6bJEpo7BkNz0YL55Q==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.22.12.tgz",
+ "integrity": "sha512-xImhTE5BpS8xa+mAN6j4sMRWaUgUDLoaGHhJhpC+r7SKKErYDR0WQV4yCE4gP+N0gozD0F3Ka1LUSaMXrn7ZIA==",
"dependencies": {
- "@jimp/utils": "^0.22.10",
+ "@jimp/utils": "^0.22.12",
"tinycolor2": "^1.6.0"
},
"peerDependencies": {
@@ -631,11 +573,11 @@
}
},
"node_modules/@jimp/plugin-contain": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.22.10.tgz",
- "integrity": "sha512-eP8KrzctuEoqibQAxi9WhbnoRosydhiwg+IYya3dKuKDBTrD9UHt+ERlPQ/lTNWHzV/l4S1ntV3r9s9saJgsXA==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.22.12.tgz",
+ "integrity": "sha512-Eo3DmfixJw3N79lWk8q/0SDYbqmKt1xSTJ69yy8XLYQj9svoBbyRpSnHR+n9hOw5pKXytHwUW6nU4u1wegHNoQ==",
"dependencies": {
- "@jimp/utils": "^0.22.10"
+ "@jimp/utils": "^0.22.12"
},
"peerDependencies": {
"@jimp/custom": ">=0.3.5",
@@ -645,11 +587,11 @@
}
},
"node_modules/@jimp/plugin-cover": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.22.10.tgz",
- "integrity": "sha512-kJCwL5T1igfa0InCfkE7bBeqg26m46aoRt10ug+rvm11P6RrvRMGrgINFyIKB+mnB7CiyBN/MOula1CvLhSInQ==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.22.12.tgz",
+ "integrity": "sha512-z0w/1xH/v/knZkpTNx+E8a7fnasQ2wHG5ze6y5oL2dhH1UufNua8gLQXlv8/W56+4nJ1brhSd233HBJCo01BXA==",
"dependencies": {
- "@jimp/utils": "^0.22.10"
+ "@jimp/utils": "^0.22.12"
},
"peerDependencies": {
"@jimp/custom": ">=0.3.5",
@@ -659,55 +601,55 @@
}
},
"node_modules/@jimp/plugin-crop": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.22.10.tgz",
- "integrity": "sha512-BOZ+YGaZlhU7c5ye65RxikicXH0Ki0It6/XHISvipR5WZrfjLjL2Ke20G+AGnwBQc76gKenVcMXVUCnEjtZV+Q==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.22.12.tgz",
+ "integrity": "sha512-FNuUN0OVzRCozx8XSgP9MyLGMxNHHJMFt+LJuFjn1mu3k0VQxrzqbN06yIl46TVejhyAhcq5gLzqmSCHvlcBVw==",
"dependencies": {
- "@jimp/utils": "^0.22.10"
+ "@jimp/utils": "^0.22.12"
},
"peerDependencies": {
"@jimp/custom": ">=0.3.5"
}
},
"node_modules/@jimp/plugin-displace": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.22.10.tgz",
- "integrity": "sha512-llNiWWMTKISDXt5+cXI0GaFmZWAjlT+4fFLYf4eXquuL/9wZoQsEBhv2GdGd48mkiS8jZq1Nnb2Q4ehEPTvrzw==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.22.12.tgz",
+ "integrity": "sha512-qpRM8JRicxfK6aPPqKZA6+GzBwUIitiHaZw0QrJ64Ygd3+AsTc7BXr+37k2x7QcyCvmKXY4haUrSIsBug4S3CA==",
"dependencies": {
- "@jimp/utils": "^0.22.10"
+ "@jimp/utils": "^0.22.12"
},
"peerDependencies": {
"@jimp/custom": ">=0.3.5"
}
},
"node_modules/@jimp/plugin-dither": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.22.10.tgz",
- "integrity": "sha512-05WLmeV5M+P/0FS+bWf13hMew2X0oa8w9AtmevL2UyA/5GqiyvP2Xm5WfGQ8oFiiMvpnL6RFomJQOZtWca0C2w==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.22.12.tgz",
+ "integrity": "sha512-jYgGdSdSKl1UUEanX8A85v4+QUm+PE8vHFwlamaKk89s+PXQe7eVE3eNeSZX4inCq63EHL7cX580dMqkoC3ZLw==",
"dependencies": {
- "@jimp/utils": "^0.22.10"
+ "@jimp/utils": "^0.22.12"
},
"peerDependencies": {
"@jimp/custom": ">=0.3.5"
}
},
"node_modules/@jimp/plugin-fisheye": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.22.10.tgz",
- "integrity": "sha512-InjiXvc7Gkzrx8VWtU97kDqV7ENnhHGPULymJWeZaF2aicud9Fpk4iCtd/DcZIrk7Cbe60A8RwNXN00HXIbSCg==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.22.12.tgz",
+ "integrity": "sha512-LGuUTsFg+fOp6KBKrmLkX4LfyCy8IIsROwoUvsUPKzutSqMJnsm3JGDW2eOmWIS/jJpPaeaishjlxvczjgII+Q==",
"dependencies": {
- "@jimp/utils": "^0.22.10"
+ "@jimp/utils": "^0.22.12"
},
"peerDependencies": {
"@jimp/custom": ">=0.3.5"
}
},
"node_modules/@jimp/plugin-flip": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.22.10.tgz",
- "integrity": "sha512-42GkGtTHWnhnwTMPVK/kXObZbkYIpQWfuIfy5EMEMk6zRj05zpv4vsjkKWfuemweZINwfvD7wDJF7FVFNNcZZg==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.22.12.tgz",
+ "integrity": "sha512-m251Rop7GN8W0Yo/rF9LWk6kNclngyjIJs/VXHToGQ6EGveOSTSQaX2Isi9f9lCDLxt+inBIb7nlaLLxnvHX8Q==",
"dependencies": {
- "@jimp/utils": "^0.22.10"
+ "@jimp/utils": "^0.22.12"
},
"peerDependencies": {
"@jimp/custom": ">=0.3.5",
@@ -715,55 +657,55 @@
}
},
"node_modules/@jimp/plugin-gaussian": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.22.10.tgz",
- "integrity": "sha512-ykrG/6lTp9Q5YA8jS5XzwMHtRxb9HOFMgtmnrUZ8kU+BK8REecfy9Ic5BUEOjCYvS1a/xLsnrZQU07iiYxBxFg==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.22.12.tgz",
+ "integrity": "sha512-sBfbzoOmJ6FczfG2PquiK84NtVGeScw97JsCC3rpQv1PHVWyW+uqWFF53+n3c8Y0P2HWlUjflEla2h/vWShvhg==",
"dependencies": {
- "@jimp/utils": "^0.22.10"
+ "@jimp/utils": "^0.22.12"
},
"peerDependencies": {
"@jimp/custom": ">=0.3.5"
}
},
"node_modules/@jimp/plugin-invert": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.22.10.tgz",
- "integrity": "sha512-d8j9BlUJYs/c994t4azUWSWmQq4LLPG4ecm8m6SSNqap+S/HlVQGqjYhJEBbY9EXkOTYB9vBL9bqwSM1Rr6paA==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.22.12.tgz",
+ "integrity": "sha512-N+6rwxdB+7OCR6PYijaA/iizXXodpxOGvT/smd/lxeXsZ/empHmFFFJ/FaXcYh19Tm04dGDaXcNF/dN5nm6+xQ==",
"dependencies": {
- "@jimp/utils": "^0.22.10"
+ "@jimp/utils": "^0.22.12"
},
"peerDependencies": {
"@jimp/custom": ">=0.3.5"
}
},
"node_modules/@jimp/plugin-mask": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.22.10.tgz",
- "integrity": "sha512-yRBs1230XZkz24uFTdTcSlZ0HXZpIWzM3iFQN56MzZ7USgdVZjPPDCQ8I9RpqfZ36nDflQkUO0wV7ucsi4ogow==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.22.12.tgz",
+ "integrity": "sha512-4AWZg+DomtpUA099jRV8IEZUfn1wLv6+nem4NRJC7L/82vxzLCgXKTxvNvBcNmJjT9yS1LAAmiJGdWKXG63/NA==",
"dependencies": {
- "@jimp/utils": "^0.22.10"
+ "@jimp/utils": "^0.22.12"
},
"peerDependencies": {
"@jimp/custom": ">=0.3.5"
}
},
"node_modules/@jimp/plugin-normalize": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.22.10.tgz",
- "integrity": "sha512-Wk9GX6eJMchX/ZAazVa70Fagu+OXMvHiPY+HrcEwcclL+p1wo8xAHEsf9iKno7Ja4EU9lLhbBRY5hYJyiKMEkg==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.22.12.tgz",
+ "integrity": "sha512-0So0rexQivnWgnhacX4cfkM2223YdExnJTTy6d06WbkfZk5alHUx8MM3yEzwoCN0ErO7oyqEWRnEkGC+As1FtA==",
"dependencies": {
- "@jimp/utils": "^0.22.10"
+ "@jimp/utils": "^0.22.12"
},
"peerDependencies": {
"@jimp/custom": ">=0.3.5"
}
},
"node_modules/@jimp/plugin-print": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.22.10.tgz",
- "integrity": "sha512-1U3VloIR+beE1kWPdGEJMiE2h1Do29iv3w8sBbvPyRP4qXxRFcDpmCGtctsrKmb1krlBFlj8ubyAY90xL+5n9w==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.22.12.tgz",
+ "integrity": "sha512-c7TnhHlxm87DJeSnwr/XOLjJU/whoiKYY7r21SbuJ5nuH+7a78EW1teOaj5gEr2wYEd7QtkFqGlmyGXY/YclyQ==",
"dependencies": {
- "@jimp/utils": "^0.22.10",
+ "@jimp/utils": "^0.22.12",
"load-bmfont": "^1.4.1"
},
"peerDependencies": {
@@ -772,22 +714,22 @@
}
},
"node_modules/@jimp/plugin-resize": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.22.10.tgz",
- "integrity": "sha512-ixomxVcnAONXDgaq0opvAx4UAOiEhOA/tipuhFFOvPKFd4yf1BAnEviB5maB0SBHHkJXPUSzDp/73xVTMGSe7g==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.22.12.tgz",
+ "integrity": "sha512-3NyTPlPbTnGKDIbaBgQ3HbE6wXbAlFfxHVERmrbqAi8R3r6fQPxpCauA8UVDnieg5eo04D0T8nnnNIX//i/sXg==",
"dependencies": {
- "@jimp/utils": "^0.22.10"
+ "@jimp/utils": "^0.22.12"
},
"peerDependencies": {
"@jimp/custom": ">=0.3.5"
}
},
"node_modules/@jimp/plugin-rotate": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.22.10.tgz",
- "integrity": "sha512-eeFX8dnRyf3LAdsdXWKWuN18hLRg8zy1cP0cP9rHzQVWRK7ck/QsLxK1vHq7MADGwQalNaNTJ9SQxH6c8mz6jw==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.22.12.tgz",
+ "integrity": "sha512-9YNEt7BPAFfTls2FGfKBVgwwLUuKqy+E8bDGGEsOqHtbuhbshVGxN2WMZaD4gh5IDWvR+emmmPPWGgaYNYt1gA==",
"dependencies": {
- "@jimp/utils": "^0.22.10"
+ "@jimp/utils": "^0.22.12"
},
"peerDependencies": {
"@jimp/custom": ">=0.3.5",
@@ -797,11 +739,11 @@
}
},
"node_modules/@jimp/plugin-scale": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.22.10.tgz",
- "integrity": "sha512-TG/H0oUN69C9ArBCZg4PmuoixFVKIiru8282KzSB/Tp1I0xwX0XLTv3dJ5pobPlIgPcB+TmD4xAIdkCT4rtWxg==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.22.12.tgz",
+ "integrity": "sha512-dghs92qM6MhHj0HrV2qAwKPMklQtjNpoYgAB94ysYpsXslhRTiPisueSIELRwZGEr0J0VUxpUY7HgJwlSIgGZw==",
"dependencies": {
- "@jimp/utils": "^0.22.10"
+ "@jimp/utils": "^0.22.12"
},
"peerDependencies": {
"@jimp/custom": ">=0.3.5",
@@ -809,11 +751,11 @@
}
},
"node_modules/@jimp/plugin-shadow": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.22.10.tgz",
- "integrity": "sha512-TN9xm6fI7XfxbMUQqFPZjv59Xdpf0tSiAQdINB4g6pJMWiVANR/74OtDONoy3KKpenu5Y38s+FkrtID/KcQAhw==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.22.12.tgz",
+ "integrity": "sha512-FX8mTJuCt7/3zXVoeD/qHlm4YH2bVqBuWQHXSuBK054e7wFRnRnbSLPUqAwSeYP3lWqpuQzJtgiiBxV3+WWwTg==",
"dependencies": {
- "@jimp/utils": "^0.22.10"
+ "@jimp/utils": "^0.22.12"
},
"peerDependencies": {
"@jimp/custom": ">=0.3.5",
@@ -822,11 +764,11 @@
}
},
"node_modules/@jimp/plugin-threshold": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.22.10.tgz",
- "integrity": "sha512-DA2lSnU0TgIRbAgmXaxroYw3Ad6J2DOFEoJp0NleSm2h3GWbZEE5yW9U2B6hD3iqn4AenG4E2b2WzHXZyzSutw==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.22.12.tgz",
+ "integrity": "sha512-4x5GrQr1a/9L0paBC/MZZJjjgjxLYrqSmWd+e+QfAEPvmRxdRoQ5uKEuNgXnm9/weHQBTnQBQsOY2iFja+XGAw==",
"dependencies": {
- "@jimp/utils": "^0.22.10"
+ "@jimp/utils": "^0.22.12"
},
"peerDependencies": {
"@jimp/custom": ">=0.3.5",
@@ -835,31 +777,31 @@
}
},
"node_modules/@jimp/plugins": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.22.10.tgz",
- "integrity": "sha512-KDMZyM6pmvS8freB+UBLko1TO/k4D7URS/nphCozuH+P7i3UMe7NdckXKJ8u+WD6sqN0YFYvBehpkpnUiw/91w==",
- "dependencies": {
- "@jimp/plugin-blit": "^0.22.10",
- "@jimp/plugin-blur": "^0.22.10",
- "@jimp/plugin-circle": "^0.22.10",
- "@jimp/plugin-color": "^0.22.10",
- "@jimp/plugin-contain": "^0.22.10",
- "@jimp/plugin-cover": "^0.22.10",
- "@jimp/plugin-crop": "^0.22.10",
- "@jimp/plugin-displace": "^0.22.10",
- "@jimp/plugin-dither": "^0.22.10",
- "@jimp/plugin-fisheye": "^0.22.10",
- "@jimp/plugin-flip": "^0.22.10",
- "@jimp/plugin-gaussian": "^0.22.10",
- "@jimp/plugin-invert": "^0.22.10",
- "@jimp/plugin-mask": "^0.22.10",
- "@jimp/plugin-normalize": "^0.22.10",
- "@jimp/plugin-print": "^0.22.10",
- "@jimp/plugin-resize": "^0.22.10",
- "@jimp/plugin-rotate": "^0.22.10",
- "@jimp/plugin-scale": "^0.22.10",
- "@jimp/plugin-shadow": "^0.22.10",
- "@jimp/plugin-threshold": "^0.22.10",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.22.12.tgz",
+ "integrity": "sha512-yBJ8vQrDkBbTgQZLty9k4+KtUQdRjsIDJSPjuI21YdVeqZxYywifHl4/XWILoTZsjTUASQcGoH0TuC0N7xm3ww==",
+ "dependencies": {
+ "@jimp/plugin-blit": "^0.22.12",
+ "@jimp/plugin-blur": "^0.22.12",
+ "@jimp/plugin-circle": "^0.22.12",
+ "@jimp/plugin-color": "^0.22.12",
+ "@jimp/plugin-contain": "^0.22.12",
+ "@jimp/plugin-cover": "^0.22.12",
+ "@jimp/plugin-crop": "^0.22.12",
+ "@jimp/plugin-displace": "^0.22.12",
+ "@jimp/plugin-dither": "^0.22.12",
+ "@jimp/plugin-fisheye": "^0.22.12",
+ "@jimp/plugin-flip": "^0.22.12",
+ "@jimp/plugin-gaussian": "^0.22.12",
+ "@jimp/plugin-invert": "^0.22.12",
+ "@jimp/plugin-mask": "^0.22.12",
+ "@jimp/plugin-normalize": "^0.22.12",
+ "@jimp/plugin-print": "^0.22.12",
+ "@jimp/plugin-resize": "^0.22.12",
+ "@jimp/plugin-rotate": "^0.22.12",
+ "@jimp/plugin-scale": "^0.22.12",
+ "@jimp/plugin-shadow": "^0.22.12",
+ "@jimp/plugin-threshold": "^0.22.12",
"timm": "^1.6.1"
},
"peerDependencies": {
@@ -867,11 +809,11 @@
}
},
"node_modules/@jimp/png": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.22.10.tgz",
- "integrity": "sha512-RYinU7tZToeeR2g2qAMn42AU+8OUHjXPKZZ9RkmoL4bguA1xyZWaSdr22/FBkmnHhOERRlr02KPDN1OTOYHLDQ==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.22.12.tgz",
+ "integrity": "sha512-Mrp6dr3UTn+aLK8ty/dSKELz+Otdz1v4aAXzV5q53UDD2rbB5joKVJ/ChY310B+eRzNxIovbUF1KVrUsYdE8Hg==",
"dependencies": {
- "@jimp/utils": "^0.22.10",
+ "@jimp/utils": "^0.22.12",
"pngjs": "^6.0.0"
},
"peerDependencies": {
@@ -879,9 +821,9 @@
}
},
"node_modules/@jimp/tiff": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.22.10.tgz",
- "integrity": "sha512-OaivlSYzpNTHyH/h7pEtl3A7F7TbsgytZs52GLX/xITW92ffgDgT6PkldIrMrET6ERh/hdijNQiew7IoEEr2og==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.22.12.tgz",
+ "integrity": "sha512-E1LtMh4RyJsoCAfAkBRVSYyZDTtLq9p9LUiiYP0vPtXyxX4BiYBUYihTLSBlCQg5nF2e4OpQg7SPrLdJ66u7jg==",
"dependencies": {
"utif2": "^4.0.1"
},
@@ -890,15 +832,15 @@
}
},
"node_modules/@jimp/types": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.22.10.tgz",
- "integrity": "sha512-u/r+XYzbCx4zZukDmxx8S0er3Yq3iDPI6+31WKX0N18i2qPPJYcn8qwIFurfupRumGvJ8SlGLCgt/T+Y8zzUIw==",
- "dependencies": {
- "@jimp/bmp": "^0.22.10",
- "@jimp/gif": "^0.22.10",
- "@jimp/jpeg": "^0.22.10",
- "@jimp/png": "^0.22.10",
- "@jimp/tiff": "^0.22.10",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.22.12.tgz",
+ "integrity": "sha512-wwKYzRdElE1MBXFREvCto5s699izFHNVvALUv79GXNbsOVqlwlOxlWJ8DuyOGIXoLP4JW/m30YyuTtfUJgMRMA==",
+ "dependencies": {
+ "@jimp/bmp": "^0.22.12",
+ "@jimp/gif": "^0.22.12",
+ "@jimp/jpeg": "^0.22.12",
+ "@jimp/png": "^0.22.12",
+ "@jimp/tiff": "^0.22.12",
"timm": "^1.6.1"
},
"peerDependencies": {
@@ -906,17 +848,17 @@
}
},
"node_modules/@jimp/utils": {
- "version": "0.22.10",
- "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.22.10.tgz",
- "integrity": "sha512-ztlOK9Mm2iLG2AMoabzM4i3WZ/FtshcgsJCbZCRUs/DKoeS2tySRJTnQZ1b7Roq0M4Ce+FUAxnCAcBV0q7PH9w==",
+ "version": "0.22.12",
+ "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.22.12.tgz",
+ "integrity": "sha512-yJ5cWUknGnilBq97ZXOyOS0HhsHOyAyjHwYfHxGbSyMTohgQI6sVyE8KPgDwH8HHW/nMKXk8TrSwAE71zt716Q==",
"dependencies": {
"regenerator-runtime": "^0.13.3"
}
},
"node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
- "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
"engines": {
"node": ">=6.0.0"
}
@@ -949,9 +891,9 @@
"integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw=="
},
"node_modules/@nativescript/doctor": {
- "version": "2.0.13",
- "resolved": "https://registry.npmjs.org/@nativescript/doctor/-/doctor-2.0.13.tgz",
- "integrity": "sha512-eq3KVaNg5hrKV3qBHbZqQGIppWmwZIFvlSev0uAzpRiYnvAsab2uqpyOKPJXxfaZot7Bcf77aRDe/62CCM7nQw==",
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/@nativescript/doctor/-/doctor-2.0.14.tgz",
+ "integrity": "sha512-XKIwT4SczoHjvbhHZuR8llMvXzDpa7HQwTWs1d9xPgqHHIuuhO2GR1g8eiukBBxhVSThYN2QwJ6mE/MiCrmYZA==",
"dependencies": {
"lodash": "4.17.21",
"osenv": "0.1.5",
@@ -1011,72 +953,24 @@
"dev": true
},
"node_modules/@npmcli/agent": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.0.tgz",
- "integrity": "sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q==",
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz",
+ "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==",
"dependencies": {
"agent-base": "^7.1.0",
"http-proxy-agent": "^7.0.0",
"https-proxy-agent": "^7.0.1",
"lru-cache": "^10.0.1",
- "socks-proxy-agent": "^8.0.1"
+ "socks-proxy-agent": "^8.0.3"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
}
},
- "node_modules/@npmcli/agent/node_modules/agent-base": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz",
- "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==",
- "dependencies": {
- "debug": "^4.3.4"
- },
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/@npmcli/agent/node_modules/http-proxy-agent": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz",
- "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==",
- "dependencies": {
- "agent-base": "^7.1.0",
- "debug": "^4.3.4"
- },
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/@npmcli/agent/node_modules/https-proxy-agent": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz",
- "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==",
- "dependencies": {
- "agent-base": "^7.0.2",
- "debug": "4"
- },
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/@npmcli/agent/node_modules/socks-proxy-agent": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz",
- "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==",
- "dependencies": {
- "agent-base": "^7.0.2",
- "debug": "^4.3.4",
- "socks": "^2.7.1"
- },
- "engines": {
- "node": ">= 14"
- }
- },
"node_modules/@npmcli/arborist": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-7.2.0.tgz",
- "integrity": "sha512-J6XCan+5nV6F94E0+9z//OnZADcqHw6HGDO0ynX+Ayd6GEopK0odq99V+UQjb8P1zexTmCWGvxp4jU5OM6NTtg==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-7.4.0.tgz",
+ "integrity": "sha512-VFsUaTrV8NR+0E2I+xhp6pPC5eAbMmSMSMZbS57aogLc6du6HWBPATFOaiNWwp1QTFVeP4aLhYixQM9hHfaAsA==",
"dependencies": {
"@isaacs/string-locale-compare": "^1.1.0",
"@npmcli/fs": "^3.1.0",
@@ -1086,8 +980,8 @@
"@npmcli/name-from-folder": "^2.0.0",
"@npmcli/node-gyp": "^3.0.0",
"@npmcli/package-json": "^5.0.0",
- "@npmcli/query": "^3.0.1",
- "@npmcli/run-script": "^7.0.1",
+ "@npmcli/query": "^3.1.0",
+ "@npmcli/run-script": "^7.0.2",
"bin-links": "^4.0.1",
"cacache": "^18.0.0",
"common-ancestor-path": "^1.0.1",
@@ -1105,7 +999,7 @@
"parse-conflict-json": "^3.0.0",
"proc-log": "^3.0.0",
"promise-all-reject-late": "^1.0.0",
- "promise-call-limit": "^1.0.2",
+ "promise-call-limit": "^3.0.1",
"read-package-json-fast": "^3.0.2",
"semver": "^7.3.7",
"ssri": "^10.0.5",
@@ -1120,23 +1014,32 @@
}
},
"node_modules/@npmcli/arborist/node_modules/@sigstore/bundle": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.1.0.tgz",
- "integrity": "sha512-89uOo6yh/oxaU8AeOUnVrTdVMcGk9Q1hJa7Hkvalc6G3Z3CupWk4Xe9djSgJm9fMkH69s0P0cVHUoKSOemLdng==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.2.0.tgz",
+ "integrity": "sha512-5VI58qgNs76RDrwXNhpmyN/jKpq9evV/7f1XrcqcAfvxDl5SeVY/I5Rmfe96ULAV7/FK5dge9RBKGBJPhL1WsQ==",
"dependencies": {
- "@sigstore/protobuf-specs": "^0.2.1"
+ "@sigstore/protobuf-specs": "^0.3.0"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
}
},
+ "node_modules/@npmcli/arborist/node_modules/@sigstore/protobuf-specs": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.1.tgz",
+ "integrity": "sha512-aIL8Z9NsMr3C64jyQzE0XlkEyBLpgEJJFDHLVVStkFV5Q3Il/r/YtY6NJWKQ4cy4AE7spP1IX5Jq7VCAxHHMfQ==",
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
"node_modules/@npmcli/arborist/node_modules/@sigstore/sign": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.2.0.tgz",
- "integrity": "sha512-AAbmnEHDQv6CSfrWA5wXslGtzLPtAtHZleKOgxdQYvx/s76Fk6T6ZVt7w2IGV9j1UrFeBocTTQxaXG2oRrDhYA==",
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.2.3.tgz",
+ "integrity": "sha512-LqlA+ffyN02yC7RKszCdMTS6bldZnIodiox+IkT8B2f8oRYXCB3LQ9roXeiEL21m64CVH1wyveYAORfD65WoSw==",
"dependencies": {
- "@sigstore/bundle": "^2.1.0",
- "@sigstore/protobuf-specs": "^0.2.1",
+ "@sigstore/bundle": "^2.2.0",
+ "@sigstore/core": "^1.0.0",
+ "@sigstore/protobuf-specs": "^0.3.0",
"make-fetch-happen": "^13.0.0"
},
"engines": {
@@ -1144,12 +1047,12 @@
}
},
"node_modules/@npmcli/arborist/node_modules/@sigstore/tuf": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.2.0.tgz",
- "integrity": "sha512-KKATZ5orWfqd9ZG6MN8PtCIx4eevWSuGRKQvofnWXRpyMyUEpmrzg5M5BrCpjM+NfZ0RbNGOh5tCz/P2uoRqOA==",
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.2.tgz",
+ "integrity": "sha512-mwbY1VrEGU4CO55t+Kl6I7WZzIl+ysSzEYdA1Nv/FTrl2bkeaPXo5PnWZAVfcY2zSdhOpsUTJW67/M2zHXGn5w==",
"dependencies": {
- "@sigstore/protobuf-specs": "^0.2.1",
- "tuf-js": "^2.1.0"
+ "@sigstore/protobuf-specs": "^0.3.0",
+ "tuf-js": "^2.2.0"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
@@ -1176,15 +1079,15 @@
}
},
"node_modules/@npmcli/arborist/node_modules/glob": {
- "version": "10.3.10",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
- "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
+ "version": "10.3.12",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz",
+ "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==",
"dependencies": {
"foreground-child": "^3.1.0",
- "jackspeak": "^2.3.5",
+ "jackspeak": "^2.3.6",
"minimatch": "^9.0.1",
- "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
- "path-scurry": "^1.10.1"
+ "minipass": "^7.0.4",
+ "path-scurry": "^1.10.2"
},
"bin": {
"glob": "dist/esm/bin.mjs"
@@ -1196,31 +1099,10 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/@npmcli/arborist/node_modules/make-fetch-happen": {
- "version": "13.0.0",
- "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz",
- "integrity": "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==",
- "dependencies": {
- "@npmcli/agent": "^2.0.0",
- "cacache": "^18.0.0",
- "http-cache-semantics": "^4.1.1",
- "is-lambda": "^1.0.1",
- "minipass": "^7.0.2",
- "minipass-fetch": "^3.0.0",
- "minipass-flush": "^1.0.5",
- "minipass-pipeline": "^1.2.4",
- "negotiator": "^0.6.3",
- "promise-retry": "^2.0.1",
- "ssri": "^10.0.0"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
"node_modules/@npmcli/arborist/node_modules/minimatch": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
- "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "version": "9.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
+ "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -1240,20 +1122,20 @@
}
},
"node_modules/@npmcli/arborist/node_modules/npm-packlist": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.0.tgz",
- "integrity": "sha512-ErAGFB5kJUciPy1mmx/C2YFbvxoJ0QJ9uwkCZOeR6CqLLISPZBOiFModAbSXnjjlwW5lOhuhXva+fURsSGJqyw==",
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz",
+ "integrity": "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==",
"dependencies": {
- "ignore-walk": "^6.0.0"
+ "ignore-walk": "^6.0.4"
},
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/@npmcli/arborist/node_modules/pacote": {
- "version": "17.0.4",
- "resolved": "https://registry.npmjs.org/pacote/-/pacote-17.0.4.tgz",
- "integrity": "sha512-eGdLHrV/g5b5MtD5cTPyss+JxOlaOloSMG3UwPMAvL8ywaLJ6beONPF40K4KKl/UI6q5hTKCJq5rCu8tkF+7Dg==",
+ "version": "17.0.6",
+ "resolved": "https://registry.npmjs.org/pacote/-/pacote-17.0.6.tgz",
+ "integrity": "sha512-cJKrW21VRE8vVTRskJo78c/RCvwJCn1f4qgfxL4w77SOWrTCRcmfkYHlHtS0gqpgjv3zhXflRtgsrUCX5xwNnQ==",
"dependencies": {
"@npmcli/git": "^5.0.0",
"@npmcli/installed-package-contents": "^2.0.1",
@@ -1270,7 +1152,7 @@
"promise-retry": "^2.0.1",
"read-package-json": "^7.0.0",
"read-package-json-fast": "^3.0.0",
- "sigstore": "^2.0.0",
+ "sigstore": "^2.2.0",
"ssri": "^10.0.0",
"tar": "^6.1.11"
},
@@ -1296,23 +1178,25 @@
}
},
"node_modules/@npmcli/arborist/node_modules/sigstore": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.1.0.tgz",
- "integrity": "sha512-kPIj+ZLkyI3QaM0qX8V/nSsweYND3W448pwkDgS6CQ74MfhEkIR8ToK5Iyx46KJYRjseVcD3Rp9zAmUAj6ZjPw==",
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.2.2.tgz",
+ "integrity": "sha512-2A3WvXkQurhuMgORgT60r6pOWiCOO5LlEqY2ADxGBDGVYLSo5HN0uLtb68YpVpuL/Vi8mLTe7+0Dx2Fq8lLqEg==",
"dependencies": {
- "@sigstore/bundle": "^2.1.0",
- "@sigstore/protobuf-specs": "^0.2.1",
- "@sigstore/sign": "^2.1.0",
- "@sigstore/tuf": "^2.1.0"
+ "@sigstore/bundle": "^2.2.0",
+ "@sigstore/core": "^1.0.0",
+ "@sigstore/protobuf-specs": "^0.3.0",
+ "@sigstore/sign": "^2.2.3",
+ "@sigstore/tuf": "^2.3.1",
+ "@sigstore/verify": "^1.1.0"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
}
},
"node_modules/@npmcli/arborist/node_modules/tuf-js": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.1.0.tgz",
- "integrity": "sha512-eD7YPPjVlMzdggrOeE8zwoegUaG/rt6Bt3jwoQPunRiNVzgcCE009UDFJKJjG+Gk9wFu6W/Vi+P5d/5QpdD9jA==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.0.tgz",
+ "integrity": "sha512-ZSDngmP1z6zw+FIkIBjvOp/II/mIub/O7Pp12j1WNsiCpg5R5wAc//i555bBQsE44O94btLt0xM/Zr2LQjwdCg==",
"dependencies": {
"@tufjs/models": "2.0.0",
"debug": "^4.3.4",
@@ -1334,9 +1218,9 @@
}
},
"node_modules/@npmcli/git": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.3.tgz",
- "integrity": "sha512-UZp9NwK+AynTrKvHn5k3KviW/hA5eENmFsu3iAPe7sWRt0lFUdsY/wXIYjpDFe7cdSNwOIzbObfwgt6eL5/2zw==",
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.4.tgz",
+ "integrity": "sha512-nr6/WezNzuYUppzXRaYu/W4aT5rLxdXqEFupbh6e/ovlYFQ8hpu1UUPV3Ir/YTl+74iXl2ZOMlGzudh9ZPUchQ==",
"dependencies": {
"@npmcli/promise-spawn": "^7.0.0",
"lru-cache": "^10.0.1",
@@ -1381,15 +1265,15 @@
}
},
"node_modules/@npmcli/map-workspaces/node_modules/glob": {
- "version": "10.3.10",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
- "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
+ "version": "10.3.12",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz",
+ "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==",
"dependencies": {
"foreground-child": "^3.1.0",
- "jackspeak": "^2.3.5",
+ "jackspeak": "^2.3.6",
"minimatch": "^9.0.1",
- "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
- "path-scurry": "^1.10.1"
+ "minipass": "^7.0.4",
+ "path-scurry": "^1.10.2"
},
"bin": {
"glob": "dist/esm/bin.mjs"
@@ -1402,9 +1286,9 @@
}
},
"node_modules/@npmcli/map-workspaces/node_modules/minimatch": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
- "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "version": "9.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
+ "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -1438,23 +1322,32 @@
}
},
"node_modules/@npmcli/metavuln-calculator/node_modules/@sigstore/bundle": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.1.0.tgz",
- "integrity": "sha512-89uOo6yh/oxaU8AeOUnVrTdVMcGk9Q1hJa7Hkvalc6G3Z3CupWk4Xe9djSgJm9fMkH69s0P0cVHUoKSOemLdng==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.2.0.tgz",
+ "integrity": "sha512-5VI58qgNs76RDrwXNhpmyN/jKpq9evV/7f1XrcqcAfvxDl5SeVY/I5Rmfe96ULAV7/FK5dge9RBKGBJPhL1WsQ==",
"dependencies": {
- "@sigstore/protobuf-specs": "^0.2.1"
+ "@sigstore/protobuf-specs": "^0.3.0"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
}
},
+ "node_modules/@npmcli/metavuln-calculator/node_modules/@sigstore/protobuf-specs": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.1.tgz",
+ "integrity": "sha512-aIL8Z9NsMr3C64jyQzE0XlkEyBLpgEJJFDHLVVStkFV5Q3Il/r/YtY6NJWKQ4cy4AE7spP1IX5Jq7VCAxHHMfQ==",
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
"node_modules/@npmcli/metavuln-calculator/node_modules/@sigstore/sign": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.2.0.tgz",
- "integrity": "sha512-AAbmnEHDQv6CSfrWA5wXslGtzLPtAtHZleKOgxdQYvx/s76Fk6T6ZVt7w2IGV9j1UrFeBocTTQxaXG2oRrDhYA==",
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.2.3.tgz",
+ "integrity": "sha512-LqlA+ffyN02yC7RKszCdMTS6bldZnIodiox+IkT8B2f8oRYXCB3LQ9roXeiEL21m64CVH1wyveYAORfD65WoSw==",
"dependencies": {
- "@sigstore/bundle": "^2.1.0",
- "@sigstore/protobuf-specs": "^0.2.1",
+ "@sigstore/bundle": "^2.2.0",
+ "@sigstore/core": "^1.0.0",
+ "@sigstore/protobuf-specs": "^0.3.0",
"make-fetch-happen": "^13.0.0"
},
"engines": {
@@ -1462,12 +1355,12 @@
}
},
"node_modules/@npmcli/metavuln-calculator/node_modules/@sigstore/tuf": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.2.0.tgz",
- "integrity": "sha512-KKATZ5orWfqd9ZG6MN8PtCIx4eevWSuGRKQvofnWXRpyMyUEpmrzg5M5BrCpjM+NfZ0RbNGOh5tCz/P2uoRqOA==",
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.2.tgz",
+ "integrity": "sha512-mwbY1VrEGU4CO55t+Kl6I7WZzIl+ysSzEYdA1Nv/FTrl2bkeaPXo5PnWZAVfcY2zSdhOpsUTJW67/M2zHXGn5w==",
"dependencies": {
- "@sigstore/protobuf-specs": "^0.2.1",
- "tuf-js": "^2.1.0"
+ "@sigstore/protobuf-specs": "^0.3.0",
+ "tuf-js": "^2.2.0"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
@@ -1494,15 +1387,15 @@
}
},
"node_modules/@npmcli/metavuln-calculator/node_modules/glob": {
- "version": "10.3.10",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
- "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
+ "version": "10.3.12",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz",
+ "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==",
"dependencies": {
"foreground-child": "^3.1.0",
- "jackspeak": "^2.3.5",
+ "jackspeak": "^2.3.6",
"minimatch": "^9.0.1",
- "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
- "path-scurry": "^1.10.1"
+ "minipass": "^7.0.4",
+ "path-scurry": "^1.10.2"
},
"bin": {
"glob": "dist/esm/bin.mjs"
@@ -1514,31 +1407,10 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/@npmcli/metavuln-calculator/node_modules/make-fetch-happen": {
- "version": "13.0.0",
- "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz",
- "integrity": "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==",
- "dependencies": {
- "@npmcli/agent": "^2.0.0",
- "cacache": "^18.0.0",
- "http-cache-semantics": "^4.1.1",
- "is-lambda": "^1.0.1",
- "minipass": "^7.0.2",
- "minipass-fetch": "^3.0.0",
- "minipass-flush": "^1.0.5",
- "minipass-pipeline": "^1.2.4",
- "negotiator": "^0.6.3",
- "promise-retry": "^2.0.1",
- "ssri": "^10.0.0"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
"node_modules/@npmcli/metavuln-calculator/node_modules/minimatch": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
- "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "version": "9.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
+ "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -1558,20 +1430,20 @@
}
},
"node_modules/@npmcli/metavuln-calculator/node_modules/npm-packlist": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.0.tgz",
- "integrity": "sha512-ErAGFB5kJUciPy1mmx/C2YFbvxoJ0QJ9uwkCZOeR6CqLLISPZBOiFModAbSXnjjlwW5lOhuhXva+fURsSGJqyw==",
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz",
+ "integrity": "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==",
"dependencies": {
- "ignore-walk": "^6.0.0"
+ "ignore-walk": "^6.0.4"
},
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/@npmcli/metavuln-calculator/node_modules/pacote": {
- "version": "17.0.4",
- "resolved": "https://registry.npmjs.org/pacote/-/pacote-17.0.4.tgz",
- "integrity": "sha512-eGdLHrV/g5b5MtD5cTPyss+JxOlaOloSMG3UwPMAvL8ywaLJ6beONPF40K4KKl/UI6q5hTKCJq5rCu8tkF+7Dg==",
+ "version": "17.0.6",
+ "resolved": "https://registry.npmjs.org/pacote/-/pacote-17.0.6.tgz",
+ "integrity": "sha512-cJKrW21VRE8vVTRskJo78c/RCvwJCn1f4qgfxL4w77SOWrTCRcmfkYHlHtS0gqpgjv3zhXflRtgsrUCX5xwNnQ==",
"dependencies": {
"@npmcli/git": "^5.0.0",
"@npmcli/installed-package-contents": "^2.0.1",
@@ -1588,7 +1460,7 @@
"promise-retry": "^2.0.1",
"read-package-json": "^7.0.0",
"read-package-json-fast": "^3.0.0",
- "sigstore": "^2.0.0",
+ "sigstore": "^2.2.0",
"ssri": "^10.0.0",
"tar": "^6.1.11"
},
@@ -1614,23 +1486,25 @@
}
},
"node_modules/@npmcli/metavuln-calculator/node_modules/sigstore": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.1.0.tgz",
- "integrity": "sha512-kPIj+ZLkyI3QaM0qX8V/nSsweYND3W448pwkDgS6CQ74MfhEkIR8ToK5Iyx46KJYRjseVcD3Rp9zAmUAj6ZjPw==",
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.2.2.tgz",
+ "integrity": "sha512-2A3WvXkQurhuMgORgT60r6pOWiCOO5LlEqY2ADxGBDGVYLSo5HN0uLtb68YpVpuL/Vi8mLTe7+0Dx2Fq8lLqEg==",
"dependencies": {
- "@sigstore/bundle": "^2.1.0",
- "@sigstore/protobuf-specs": "^0.2.1",
- "@sigstore/sign": "^2.1.0",
- "@sigstore/tuf": "^2.1.0"
+ "@sigstore/bundle": "^2.2.0",
+ "@sigstore/core": "^1.0.0",
+ "@sigstore/protobuf-specs": "^0.3.0",
+ "@sigstore/sign": "^2.2.3",
+ "@sigstore/tuf": "^2.3.1",
+ "@sigstore/verify": "^1.1.0"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
}
},
"node_modules/@npmcli/metavuln-calculator/node_modules/tuf-js": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.1.0.tgz",
- "integrity": "sha512-eD7YPPjVlMzdggrOeE8zwoegUaG/rt6Bt3jwoQPunRiNVzgcCE009UDFJKJjG+Gk9wFu6W/Vi+P5d/5QpdD9jA==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.0.tgz",
+ "integrity": "sha512-ZSDngmP1z6zw+FIkIBjvOp/II/mIub/O7Pp12j1WNsiCpg5R5wAc//i555bBQsE44O94btLt0xM/Zr2LQjwdCg==",
"dependencies": {
"@tufjs/models": "2.0.0",
"debug": "^4.3.4",
@@ -1700,15 +1574,15 @@
}
},
"node_modules/@npmcli/package-json/node_modules/glob": {
- "version": "10.3.10",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
- "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
+ "version": "10.3.12",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz",
+ "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==",
"dependencies": {
"foreground-child": "^3.1.0",
- "jackspeak": "^2.3.5",
+ "jackspeak": "^2.3.6",
"minimatch": "^9.0.1",
- "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
- "path-scurry": "^1.10.1"
+ "minipass": "^7.0.4",
+ "path-scurry": "^1.10.2"
},
"bin": {
"glob": "dist/esm/bin.mjs"
@@ -1721,9 +1595,9 @@
}
},
"node_modules/@npmcli/package-json/node_modules/minimatch": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
- "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "version": "9.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
+ "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -1743,9 +1617,9 @@
}
},
"node_modules/@npmcli/promise-spawn": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.0.tgz",
- "integrity": "sha512-wBqcGsMELZna0jDblGd7UXgOby45TQaMWmbFwWX+SEotk4HV6zG2t6rT9siyLhPk4P6YYqgfL1UO8nMWDBVJXQ==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.1.tgz",
+ "integrity": "sha512-P4KkF9jX3y+7yFUxgcUdDtLy+t4OlDGuEBLNs57AZsfSfg+uV6MLndqGpnl4831ggaEdXwR50XFoZP4VFtHolg==",
"dependencies": {
"which": "^4.0.0"
},
@@ -1754,9 +1628,9 @@
}
},
"node_modules/@npmcli/query": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@npmcli/query/-/query-3.0.1.tgz",
- "integrity": "sha512-0jE8iHBogf/+bFDj+ju6/UMLbJ39c8h6nSe6qile+dB7PJ0iV3gNqcb2vtt6WWCBrxv9uAjzUT/8vroluulidA==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/query/-/query-3.1.0.tgz",
+ "integrity": "sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ==",
"dependencies": {
"postcss-selector-parser": "^6.0.10"
},
@@ -1765,14 +1639,14 @@
}
},
"node_modules/@npmcli/run-script": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-7.0.1.tgz",
- "integrity": "sha512-Od/JMrgkjZ8alyBE0IzeqZDiF1jgMez9Gkc/OYrCkHHiXNwM0wc6s7+h+xM7kYDZkS0tAoOLr9VvygyE5+2F7g==",
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-7.0.4.tgz",
+ "integrity": "sha512-9ApYM/3+rBt9V80aYg6tZfzj3UWdiYyCt7gJUD1VJKvWF5nwKDSICXbYIQbspFTq6TOpbsEtIC0LArB8d9PFmg==",
"dependencies": {
"@npmcli/node-gyp": "^3.0.0",
+ "@npmcli/package-json": "^5.0.0",
"@npmcli/promise-spawn": "^7.0.0",
- "node-gyp": "^9.0.0",
- "read-package-json-fast": "^3.0.0",
+ "node-gyp": "^10.0.0",
"which": "^4.0.0"
},
"engines": {
@@ -1847,6 +1721,14 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
+ "node_modules/@sigstore/core": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-1.1.0.tgz",
+ "integrity": "sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==",
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
"node_modules/@sigstore/protobuf-specs": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz",
@@ -1868,41 +1750,258 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/@sigstore/tuf": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.3.tgz",
- "integrity": "sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==",
+ "node_modules/@sigstore/sign/node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
"dependencies": {
- "@sigstore/protobuf-specs": "^0.2.0",
- "tuf-js": "^1.1.7"
+ "debug": "4"
},
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
- }
- },
- "node_modules/@sindresorhus/is": {
- "version": "0.14.0",
- "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
- "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
+ "node": ">= 6.0.0"
}
},
- "node_modules/@sinonjs/commons": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz",
- "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==",
- "dev": true,
+ "node_modules/@sigstore/sign/node_modules/cacache": {
+ "version": "17.1.4",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz",
+ "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==",
"dependencies": {
- "type-detect": "4.0.8"
- }
- },
- "node_modules/@sinonjs/fake-timers": {
- "version": "10.3.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz",
- "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==",
- "dev": true,
+ "@npmcli/fs": "^3.1.0",
+ "fs-minipass": "^3.0.0",
+ "glob": "^10.2.2",
+ "lru-cache": "^7.7.1",
+ "minipass": "^7.0.3",
+ "minipass-collect": "^1.0.2",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "p-map": "^4.0.0",
+ "ssri": "^10.0.0",
+ "tar": "^6.1.11",
+ "unique-filename": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@sigstore/sign/node_modules/cacache/node_modules/minipass": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
+ "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/@sigstore/sign/node_modules/glob": {
+ "version": "10.3.12",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz",
+ "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^2.3.6",
+ "minimatch": "^9.0.1",
+ "minipass": "^7.0.4",
+ "path-scurry": "^1.10.2"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@sigstore/sign/node_modules/glob/node_modules/minipass": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
+ "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/@sigstore/sign/node_modules/http-proxy-agent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
+ "dependencies": {
+ "@tootallnate/once": "2",
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@sigstore/sign/node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@sigstore/sign/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@sigstore/sign/node_modules/make-fetch-happen": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz",
+ "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==",
+ "dependencies": {
+ "agentkeepalive": "^4.2.1",
+ "cacache": "^17.0.0",
+ "http-cache-semantics": "^4.1.1",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.0",
+ "is-lambda": "^1.0.1",
+ "lru-cache": "^7.7.1",
+ "minipass": "^5.0.0",
+ "minipass-fetch": "^3.0.0",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "negotiator": "^0.6.3",
+ "promise-retry": "^2.0.1",
+ "socks-proxy-agent": "^7.0.0",
+ "ssri": "^10.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@sigstore/sign/node_modules/minimatch": {
+ "version": "9.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
+ "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@sigstore/sign/node_modules/minipass": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
+ "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@sigstore/sign/node_modules/minipass-collect": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
+ "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@sigstore/sign/node_modules/minipass-collect/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@sigstore/sign/node_modules/socks-proxy-agent": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz",
+ "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==",
+ "dependencies": {
+ "agent-base": "^6.0.2",
+ "debug": "^4.3.3",
+ "socks": "^2.6.2"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@sigstore/tuf": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.3.tgz",
+ "integrity": "sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==",
+ "dependencies": {
+ "@sigstore/protobuf-specs": "^0.2.0",
+ "tuf-js": "^1.1.7"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@sigstore/verify": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-1.1.1.tgz",
+ "integrity": "sha512-BNANJms49rw9Q5J+fJjrDqOQSzjXDcOq/pgKDaVdDoIvQwqIfaoUriy+fQfh8sBX04hr4bkkrwu3EbhQqoQH7A==",
+ "dependencies": {
+ "@sigstore/bundle": "^2.2.0",
+ "@sigstore/core": "^1.1.0",
+ "@sigstore/protobuf-specs": "^0.3.0"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@sigstore/verify/node_modules/@sigstore/bundle": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.2.0.tgz",
+ "integrity": "sha512-5VI58qgNs76RDrwXNhpmyN/jKpq9evV/7f1XrcqcAfvxDl5SeVY/I5Rmfe96ULAV7/FK5dge9RBKGBJPhL1WsQ==",
+ "dependencies": {
+ "@sigstore/protobuf-specs": "^0.3.0"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@sigstore/verify/node_modules/@sigstore/protobuf-specs": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.1.tgz",
+ "integrity": "sha512-aIL8Z9NsMr3C64jyQzE0XlkEyBLpgEJJFDHLVVStkFV5Q3Il/r/YtY6NJWKQ4cy4AE7spP1IX5Jq7VCAxHHMfQ==",
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@sindresorhus/is": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
+ "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@sinonjs/commons": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz",
+ "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==",
+ "dev": true,
+ "dependencies": {
+ "type-detect": "4.0.8"
+ }
+ },
+ "node_modules/@sinonjs/fake-timers": {
+ "version": "10.3.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz",
+ "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==",
+ "dev": true,
"dependencies": {
"@sinonjs/commons": "^3.0.0"
}
@@ -1997,9 +2096,9 @@
}
},
"node_modules/@tsconfig/node10": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
- "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA=="
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz",
+ "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw=="
},
"node_modules/@tsconfig/node12": {
"version": "1.0.11",
@@ -2037,9 +2136,9 @@
}
},
"node_modules/@tufjs/models/node_modules/minimatch": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
- "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "version": "9.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
+ "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -2060,18 +2159,18 @@
}
},
"node_modules/@types/byline": {
- "version": "4.2.35",
- "resolved": "https://registry.npmjs.org/@types/byline/-/byline-4.2.35.tgz",
- "integrity": "sha512-YRfEGhvLQrA1/ixrJ95/vqin4J+hc0OIHH89rWGE2q0Tn9Jy6BhPZTiCLV1X39VJMOoq8UCUUFN+WD+gnmBjhw==",
+ "version": "4.2.36",
+ "resolved": "https://registry.npmjs.org/@types/byline/-/byline-4.2.36.tgz",
+ "integrity": "sha512-dO55KDSaOSE+3T8TwP66mzn0u/PM/aSedVMr1tby7WBNjfLIuS6IbYXi1mlau49sVSVB+gXKJscWE0JO3tlXDw==",
"dev": true,
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/cacache": {
- "version": "17.0.1",
- "resolved": "https://registry.npmjs.org/@types/cacache/-/cacache-17.0.1.tgz",
- "integrity": "sha512-UE0nmwT8EGT8aZNYXh4xNemW2n45zPMdAxc4fKee5fqTML+XcZCq/CwFvVu3wpQm9QHxL6XQsxE5hgVqJ7S9ZA==",
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/@types/cacache/-/cacache-17.0.2.tgz",
+ "integrity": "sha512-IrqHzVX2VRMDQQKa7CtKRnuoCLdRJiLW6hWU+w7i7+AaQ0Ii5bKwJxd5uRK4zBCyrHd3tG6G8zOm2LplxbSfQg==",
"dev": true,
"dependencies": {
"@types/node": "*"
@@ -2112,18 +2211,18 @@
}
},
"node_modules/@types/color-convert": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@types/color-convert/-/color-convert-2.0.2.tgz",
- "integrity": "sha512-KGRIgCxwcgazts4MXRCikPbIMzBpjfdgEZSy8TRHU/gtg+f9sOfHdtK8unPfxIoBtyd2aTTwINVLSNENlC8U8A==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@types/color-convert/-/color-convert-2.0.3.tgz",
+ "integrity": "sha512-2Q6wzrNiuEvYxVQqhh7sXM2mhIhvZR/Paq4FdsQkOMgWsCIkKvSGj8Le1/XalulrmgOzPMqNa0ix+ePY4hTrfg==",
"dev": true,
"dependencies": {
"@types/color-name": "*"
}
},
"node_modules/@types/color-name": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.2.tgz",
- "integrity": "sha512-JWO/ZyxTKk0bLuOhAavGjnwLR73rUE7qzACnU7gMeyA/gdrSHm2xJwqNPipw2MtaZUaqQ2UG/q7pP6AQiZ8mqw==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-87W6MJCKZYDhLAx/J1ikW8niMvmGRyY+rpUxWpL1cO7F8Uu5CHuQoFv+R0/L5pgNdW4jTyda42kv60uwVIPjLw==",
"dev": true
},
"node_modules/@types/convert-source-map": {
@@ -2143,9 +2242,9 @@
}
},
"node_modules/@types/fs-extra": {
- "version": "8.1.4",
- "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.4.tgz",
- "integrity": "sha512-OMcQKnlrkrOI0TaZ/MgVDA8LYFl7CykzFsjMj9l5x3un2nFxCY20ZFlnqrM0lcqlbs0Yro2HbnZlmopyRaoJ5w==",
+ "version": "8.1.5",
+ "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.5.tgz",
+ "integrity": "sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==",
"dependencies": {
"@types/node": "*"
}
@@ -2179,9 +2278,9 @@
"dev": true
},
"node_modules/@types/minimist": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.4.tgz",
- "integrity": "sha512-Kfe/D3hxHTusnPNRbycJE1N77WHDsdS4AjUYIzlDzhDrS47NrwuL3YW4VITxwR7KCVpzwgy4Rbj829KSSQmwXQ=="
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz",
+ "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag=="
},
"node_modules/@types/node": {
"version": "18.15.11",
@@ -2189,9 +2288,9 @@
"integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q=="
},
"node_modules/@types/node-fetch": {
- "version": "2.6.7",
- "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.7.tgz",
- "integrity": "sha512-lX17GZVpJ/fuCjguZ5b3TjEbSENxmEk1B2z02yoXSK9WMEWRivhdSY73wWMn6bpcCDAOh6qAdktpKHIlkDk2lg==",
+ "version": "2.6.11",
+ "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz",
+ "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==",
"dev": true,
"dependencies": {
"@types/node": "*",
@@ -2199,20 +2298,20 @@
}
},
"node_modules/@types/normalize-package-data": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.3.tgz",
- "integrity": "sha512-ehPtgRgaULsFG8x0NeYJvmyH1hmlfsNLujHe9dQEia/7MAJYdzMSi19JtchUHjmBA6XC/75dK55mzZH+RyieSg=="
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz",
+ "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA=="
},
"node_modules/@types/npm-package-arg": {
- "version": "6.1.3",
- "resolved": "https://registry.npmjs.org/@types/npm-package-arg/-/npm-package-arg-6.1.3.tgz",
- "integrity": "sha512-zuqnmvs721gebIA28enST/9KvrHbNvO5HPdtkwzkfgDnUlI3rAJi0CaAxyccehcqDysMntsMpe3UZ4wpaENj+A==",
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/@types/npm-package-arg/-/npm-package-arg-6.1.4.tgz",
+ "integrity": "sha512-vDgdbMy2QXHnAruzlv68pUtXCjmqUk3WrBAsRboRovsOmxbfn/WiYCjmecyKjGztnMps5dWp4Uq2prp+Ilo17Q==",
"dev": true
},
"node_modules/@types/npm-registry-fetch": {
- "version": "8.0.6",
- "resolved": "https://registry.npmjs.org/@types/npm-registry-fetch/-/npm-registry-fetch-8.0.6.tgz",
- "integrity": "sha512-RF/ZlyDuUs/8NIw9CdiBMFrxHdS/8qibyBU8UCEKwDMMaHUfmcZhl5bnh85QdKrqGzpxBDE1e7OHkNCb1fih4A==",
+ "version": "8.0.7",
+ "resolved": "https://registry.npmjs.org/@types/npm-registry-fetch/-/npm-registry-fetch-8.0.7.tgz",
+ "integrity": "sha512-db9iBh7kDDg4lRT4k4XZ6IiecTEgFCID4qk+VDVPbtzU855q3KZLCn08ATr4H27ntRJVhulQ7GWjl24H42x96w==",
"dev": true,
"dependencies": {
"@types/node": "*",
@@ -2223,9 +2322,9 @@
}
},
"node_modules/@types/npmcli__arborist": {
- "version": "5.6.4",
- "resolved": "https://registry.npmjs.org/@types/npmcli__arborist/-/npmcli__arborist-5.6.4.tgz",
- "integrity": "sha512-OBlSpKj2lU5iRENEHi82s52g+Hd4PmjV7ijeOepFz7JRsTo2Fvm+NN6+WgeuGdygy/S7gv+5TsNl4bwhm+R6vA==",
+ "version": "5.6.5",
+ "resolved": "https://registry.npmjs.org/@types/npmcli__arborist/-/npmcli__arborist-5.6.5.tgz",
+ "integrity": "sha512-T5ouyikyoizjmfoi3DQp66YwefKksJpolZ6Wf4Nxz6c+vvBajBjYASqngE1/99eW/O5wpnv7BwdxEmZC8R3M8Q==",
"dev": true,
"dependencies": {
"@npm/types": "*",
@@ -2235,15 +2334,15 @@
}
},
"node_modules/@types/npmcli__package-json": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@types/npmcli__package-json/-/npmcli__package-json-4.0.2.tgz",
- "integrity": "sha512-Vj2Nchx+43m5NOvFNW/FuUT5GB5OTznzNn5Pa+HW1bZWKfK84O2C8LmqOHd1ZrSB+xjxt0EgG30Oz/y2WZN8Vg==",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@types/npmcli__package-json/-/npmcli__package-json-4.0.4.tgz",
+ "integrity": "sha512-6QjlFUSHBmZJWuC08bz1ZCx6tm4t+7+OJXAdvM6tL2pI7n6Bh5SIp/YxQvnOLFf8MzCXs2ijyFgrzaiu1UFBGA==",
"dev": true
},
"node_modules/@types/npmlog": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.5.tgz",
- "integrity": "sha512-Fl3TEbwPoR7V1z6CMJ18whXOUkOYqF5eCkGKTir2VuevdLYUmcwj9mQdvXzuY0oagZBbsy0J7df41jn+ZcwGRA==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@types/npmlog/-/npmlog-7.0.0.tgz",
+ "integrity": "sha512-hJWbrKFvxKyWwSUXjZMYTINsSOY6IclhvGOZ97M8ac2tmR9hMwmTnYaMdpGhvju9ctWLTPhCS+eLfQNluiEjQQ==",
"dev": true,
"dependencies": {
"@types/node": "*"
@@ -2260,9 +2359,9 @@
}
},
"node_modules/@types/pacote": {
- "version": "11.1.7",
- "resolved": "https://registry.npmjs.org/@types/pacote/-/pacote-11.1.7.tgz",
- "integrity": "sha512-XW4UbANZdZ/Rwz18e3jRZ7h92KfXwlJNG7b+AnD+gbl0bNr7qX1GddD3Gy2Ig/RDBYM6h+Bj2ronjtrGMxSdZw==",
+ "version": "11.1.8",
+ "resolved": "https://registry.npmjs.org/@types/pacote/-/pacote-11.1.8.tgz",
+ "integrity": "sha512-/XLR0VoTh2JEO0jJg1q/e6Rh9bxjBq9vorJuQmtT7rRrXSiWz7e7NsvXVYJQ0i8JxMlBMPPYDTnrRe7MZRFA8Q==",
"dev": true,
"dependencies": {
"@types/node": "*",
@@ -2272,9 +2371,9 @@
}
},
"node_modules/@types/plist": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.4.tgz",
- "integrity": "sha512-pTa9xUFQFM9WJGSWHajYNljD+DbVylE1q9IweK1LBhUYJdJ28YNU8j3KZ4Q1Qw+cSl4+QLLLOVmqNjhhvVO8fA==",
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.5.tgz",
+ "integrity": "sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==",
"dev": true,
"dependencies": {
"@types/node": "*",
@@ -2325,9 +2424,9 @@
}
},
"node_modules/@types/readdir-glob": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@types/readdir-glob/-/readdir-glob-1.1.3.tgz",
- "integrity": "sha512-trCChHpWDGCJCUPJRwD62eapW4KOru6h4S7n9KUIESaxhyBM/2Jh20P3XrFRQQ6Df78E/rq2DbUCVZlI8CXPnA==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@types/readdir-glob/-/readdir-glob-1.1.5.tgz",
+ "integrity": "sha512-raiuEPUYqXu+nvtY2Pe8s8FEmZ3x5yAH4VkLdihcPdalvsHltomrRC9BzuStrJ9yk06470hS0Crw0f1pXqD+Hg==",
"dev": true,
"dependencies": {
"@types/node": "*"
@@ -2346,9 +2445,9 @@
"dev": true
},
"node_modules/@types/shelljs": {
- "version": "0.8.14",
- "resolved": "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.8.14.tgz",
- "integrity": "sha512-eqKaGPi60riuxI9pUVeCT02EGo94Y6HT119h7w5bXSELsis6+JqzdEy6H/w2xXl881wcN3VDnb/D0WlgSety5w==",
+ "version": "0.8.15",
+ "resolved": "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.8.15.tgz",
+ "integrity": "sha512-vzmnCHl6hViPu9GNLQJ+DZFd6BQI2DBTUeOvYHqkWQLMfKAAQYMb/xAmZkTogZI/vqXHCWkqDRymDI5p0QTi5Q==",
"dev": true,
"dependencies": {
"@types/glob": "~7.2.0",
@@ -2375,9 +2474,9 @@
}
},
"node_modules/@types/sinonjs__fake-timers": {
- "version": "8.1.4",
- "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.4.tgz",
- "integrity": "sha512-GDV68H0mBSN449sa5HEj51E0wfpVQb8xNSMzxf/PrypMFcLTMwJMOM/cgXiv71Mq5drkOQmUGvL1okOZcu6RrQ==",
+ "version": "8.1.5",
+ "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz",
+ "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==",
"dev": true
},
"node_modules/@types/slice-ansi": {
@@ -2396,18 +2495,18 @@
}
},
"node_modules/@types/ssri": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/@types/ssri/-/ssri-7.1.3.tgz",
- "integrity": "sha512-pn5Fdgnh9aZQ88G1ifC9+OapCGup84gtJk8zaSctwl2qrZ6xo6T7nf2QBSdX0d6tuRovAvoDZuVueVwtGlXZDQ==",
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/@types/ssri/-/ssri-7.1.5.tgz",
+ "integrity": "sha512-odD/56S3B51liILSk5aXJlnYt99S6Rt9EFDDqGtJM26rKHApHcwyU/UoYHrzKkdkHMAIquGWCuHtQTbes+FRQw==",
"dev": true,
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/tabtab": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/tabtab/-/tabtab-3.0.3.tgz",
- "integrity": "sha512-7oXhf9jSJ9vGvLWBp3dL+fhLdHaHUJ2Lyr+QxPifVutUN0FMvEVr0LI7MFLtRjlg33O71gFeQ9uE8zZmtind4A==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/tabtab/-/tabtab-3.0.4.tgz",
+ "integrity": "sha512-gmh8JsmIYPGRqk8Xb4dmulV37TpLwg0Quo3GJ0LgEcl4v0O92F14PGebBd7LHv9GBEw2KbmBSrvU0/NzIy5AoA==",
"dev": true,
"dependencies": {
"@types/node": "*"
@@ -2448,9 +2547,9 @@
"dev": true
},
"node_modules/@types/uuid": {
- "version": "9.0.6",
- "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.6.tgz",
- "integrity": "sha512-BT2Krtx4xaO6iwzwMFUYvWBWkV2pr37zD68Vmp1CDV196MzczBRxuEpD6Pr395HAgebC/co7hOphs53r8V7jew==",
+ "version": "9.0.8",
+ "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz",
+ "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==",
"dev": true
},
"node_modules/@types/ws": {
@@ -2481,9 +2580,9 @@
}
},
"node_modules/@types/yargs-parser": {
- "version": "21.0.2",
- "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.2.tgz",
- "integrity": "sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw==",
+ "version": "21.0.3",
+ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
+ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
"dev": true
},
"node_modules/@xml-tools/parser": {
@@ -2507,21 +2606,10 @@
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
"integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q=="
},
- "node_modules/abort-controller": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
- "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
- "dependencies": {
- "event-target-shim": "^5.0.0"
- },
- "engines": {
- "node": ">=6.5"
- }
- },
"node_modules/acorn": {
- "version": "8.10.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
- "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
+ "version": "8.11.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
+ "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
"bin": {
"acorn": "bin/acorn"
},
@@ -2530,9 +2618,9 @@
}
},
"node_modules/acorn-walk": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
- "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz",
+ "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==",
"engines": {
"node": ">=0.4.0"
}
@@ -2543,14 +2631,14 @@
"integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ=="
},
"node_modules/agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
+ "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
"dependencies": {
- "debug": "4"
+ "debug": "^4.3.4"
},
"engines": {
- "node": ">= 6.0.0"
+ "node": ">= 14"
}
},
"node_modules/agentkeepalive": {
@@ -2722,11 +2810,6 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/archiver-utils/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
- },
"node_modules/archiver-utils/node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
@@ -2766,55 +2849,13 @@
}
},
"node_modules/are-we-there-yet": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-4.0.1.tgz",
- "integrity": "sha512-2zuA+jpOYBRgoBCfa+fB87Rk0oGJjDX6pxGzqH6f33NzUhG25Xur6R0u0Z9VVAq8Z5JvQpQI6j6rtonuivC8QA==",
- "dependencies": {
- "delegates": "^1.0.0",
- "readable-stream": "^4.1.0"
- },
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-4.0.2.tgz",
+ "integrity": "sha512-ncSWAawFhKMJDTdoAeOV+jyW1VCMj5QIAwULIBV0SSR7B/RLPPEQiknKcg/RIIZlUQrxELpsxMiTUoAQ4sIUyg==",
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/are-we-there-yet/node_modules/buffer": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
- "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.2.1"
- }
- },
- "node_modules/are-we-there-yet/node_modules/readable-stream": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz",
- "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==",
- "dependencies": {
- "abort-controller": "^3.0.0",
- "buffer": "^6.0.3",
- "events": "^3.3.0",
- "process": "^0.11.10",
- "string_decoder": "^1.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
"node_modules/arg": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
@@ -2904,6 +2945,11 @@
"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=="
+ },
"node_modules/assertion-error": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
@@ -2931,9 +2977,9 @@
}
},
"node_modules/async": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
- "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz",
+ "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg=="
},
"node_modules/async-each": {
"version": "1.0.6",
@@ -3018,44 +3064,17 @@
"node": ">=0.10.0"
}
},
- "node_modules/base/node_modules/is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "deprecated": "Please upgrade to v1.0.1",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/base/node_modules/is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "deprecated": "Please upgrade to v1.0.1",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/base/node_modules/is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz",
+ "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==",
"dev": true,
"dependencies": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 0.4"
}
},
"node_modules/base64-js": {
@@ -3078,9 +3097,9 @@
]
},
"node_modules/big-integer": {
- "version": "1.6.51",
- "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
- "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==",
+ "version": "1.6.52",
+ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz",
+ "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==",
"engines": {
"node": ">=0.6"
}
@@ -3100,11 +3119,14 @@
}
},
"node_modules/binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
"engines": {
"node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/bindings": {
@@ -3264,16 +3286,16 @@
"dev": true
},
"node_modules/cacache": {
- "version": "18.0.0",
- "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.0.tgz",
- "integrity": "sha512-I7mVOPl3PUCeRub1U8YoGz2Lqv9WOBpobZ8RyWFXmReuILz+3OAyTa5oH3QPdtKZD7N0Yk00aLfzn0qvp8dZ1w==",
+ "version": "18.0.2",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.2.tgz",
+ "integrity": "sha512-r3NU8h/P+4lVUHfeRw1dtgQYar3DZMm4/cm2bZgOvrFC/su7budSOeqh52VJIC4U4iG1WWwV6vRW0znqBvxNuw==",
"dependencies": {
"@npmcli/fs": "^3.1.0",
"fs-minipass": "^3.0.0",
"glob": "^10.2.2",
"lru-cache": "^10.0.1",
"minipass": "^7.0.3",
- "minipass-collect": "^1.0.2",
+ "minipass-collect": "^2.0.1",
"minipass-flush": "^1.0.5",
"minipass-pipeline": "^1.2.4",
"p-map": "^4.0.0",
@@ -3286,15 +3308,15 @@
}
},
"node_modules/cacache/node_modules/glob": {
- "version": "10.3.10",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
- "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
+ "version": "10.3.12",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz",
+ "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==",
"dependencies": {
"foreground-child": "^3.1.0",
- "jackspeak": "^2.3.5",
+ "jackspeak": "^2.3.6",
"minimatch": "^9.0.1",
- "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
- "path-scurry": "^1.10.1"
+ "minipass": "^7.0.4",
+ "path-scurry": "^1.10.2"
},
"bin": {
"glob": "dist/esm/bin.mjs"
@@ -3307,9 +3329,9 @@
}
},
"node_modules/cacache/node_modules/minimatch": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
- "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "version": "9.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
+ "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -3391,14 +3413,19 @@
}
},
"node_modules/call-bind": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
- "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
"dev": true,
"dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
"function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.1",
- "set-function-length": "^1.1.1"
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -3578,9 +3605,9 @@
}
},
"node_modules/cli-spinners": {
- "version": "2.9.1",
- "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz",
- "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==",
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz",
+ "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==",
"engines": {
"node": ">=6"
},
@@ -3862,10 +3889,13 @@
}
},
"node_modules/component-emitter": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
- "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
- "dev": true
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz",
+ "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
"node_modules/compress-commons": {
"version": "4.1.2",
@@ -4462,17 +4492,20 @@
"dev": true
},
"node_modules/define-data-property": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
- "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
"dev": true,
"dependencies": {
- "get-intrinsic": "^1.2.1",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.0"
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
},
"engines": {
"node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/define-lazy-prop": {
@@ -4558,10 +4591,19 @@
"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==",
+ "dependencies": {
+ "asap": "^2.0.0",
+ "wrappy": "1"
+ }
+ },
"node_modules/diff": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz",
- "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
+ "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
"engines": {
"node": ">=0.3.1"
}
@@ -4675,6 +4717,27 @@
"is-arrayish": "^0.2.1"
}
},
+ "node_modules/es-define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.4"
+ },
+ "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==",
+ "dev": true,
+ "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",
@@ -4682,9 +4745,9 @@
"dev": true
},
"node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
+ "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
"engines": {
"node": ">=6"
}
@@ -4779,14 +4842,6 @@
"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==",
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/eventemitter2": {
"version": "0.4.14",
"resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz",
@@ -4799,14 +4854,6 @@
"integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==",
"dev": true
},
- "node_modules/events": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
- "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
- "engines": {
- "node": ">=0.8.x"
- }
- },
"node_modules/execa": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz",
@@ -4831,9 +4878,9 @@
}
},
"node_modules/execa/node_modules/npm-run-path": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
- "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==",
+ "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,
"dependencies": {
"path-key": "^4.0.0"
@@ -4970,50 +5017,23 @@
"node": ">=0.10.0"
}
},
- "node_modules/extglob/node_modules/is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "deprecated": "Please upgrade to v1.0.1",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob/node_modules/is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "deprecated": "Please upgrade to v1.0.1",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/extglob/node_modules/is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz",
+ "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==",
"dev": true,
"dependencies": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 0.4"
}
},
"node_modules/fast-glob": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
- "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
"@nodelib/fs.walk": "^1.2.3",
@@ -5032,9 +5052,9 @@
"dev": true
},
"node_modules/fastq": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
- "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
+ "version": "1.17.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
"dependencies": {
"reusify": "^1.0.4"
}
@@ -5165,14 +5185,14 @@
}
},
"node_modules/flatted": {
- "version": "3.2.9",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
- "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ=="
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz",
+ "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw=="
},
"node_modules/follow-redirects": {
- "version": "1.15.5",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
- "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==",
+ "version": "1.15.6",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
+ "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
"funding": [
{
"type": "individual",
@@ -5261,10 +5281,14 @@
}
},
"node_modules/formidable": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz",
- "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==",
- "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau",
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.1.tgz",
+ "integrity": "sha512-WJWKelbRHN41m5dumb0/k8TeAx7Id/y3a+Z7QfhxP/htI9Js5zYaEDtG8uMgG0vM0lOlqnmjE99/kfpOYi/0Og==",
+ "dependencies": {
+ "dezalgo": "^1.0.4",
+ "hexoid": "^1.0.0",
+ "once": "^1.4.0"
+ },
"funding": {
"url": "https://ko-fi.com/tunnckoCore/commissions"
}
@@ -5405,16 +5429,20 @@
}
},
"node_modules/get-intrinsic": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
- "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
"dev": true,
"dependencies": {
+ "es-errors": "^1.3.0",
"function-bind": "^1.1.2",
"has-proto": "^1.0.1",
"has-symbols": "^1.0.3",
"hasown": "^2.0.0"
},
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -5457,11 +5485,6 @@
"node": ">=10"
}
},
- "node_modules/get-pkg-repo/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
- },
"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",
@@ -6408,19 +6431,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/grunt-ts/node_modules/is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "deprecated": "Please upgrade to v1.0.1",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/grunt-ts/node_modules/is-binary-path": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
@@ -6433,31 +6443,17 @@
"node": ">=0.10.0"
}
},
- "node_modules/grunt-ts/node_modules/is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "deprecated": "Please upgrade to v1.0.1",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/grunt-ts/node_modules/is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz",
+ "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==",
"dev": true,
"dependencies": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 0.4"
}
},
"node_modules/grunt-ts/node_modules/is-extendable": {
@@ -6496,12 +6492,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/grunt-ts/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
- },
"node_modules/grunt-ts/node_modules/micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -6743,21 +6733,21 @@
}
},
"node_modules/has-property-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
- "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
"dev": true,
"dependencies": {
- "get-intrinsic": "^1.2.2"
+ "es-define-property": "^1.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
- "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
+ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
"dev": true,
"engines": {
"node": ">= 0.4"
@@ -6847,9 +6837,9 @@
}
},
"node_modules/hasown": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
- "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
"dependencies": {
"function-bind": "^1.1.2"
},
@@ -6866,6 +6856,14 @@
"he": "bin/he"
}
},
+ "node_modules/hexoid": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz",
+ "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/homedir-polyfill": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
@@ -6910,28 +6908,27 @@
"dev": true
},
"node_modules/http-proxy-agent": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
- "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
"dependencies": {
- "@tootallnate/once": "2",
- "agent-base": "6",
- "debug": "4"
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
},
"engines": {
- "node": ">= 6"
+ "node": ">= 14"
}
},
"node_modules/https-proxy-agent": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz",
+ "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==",
"dependencies": {
- "agent-base": "6",
+ "agent-base": "^7.0.2",
"debug": "4"
},
"engines": {
- "node": ">= 6"
+ "node": ">= 14"
}
},
"node_modules/human-signals": {
@@ -6998,9 +6995,9 @@
]
},
"node_modules/ignore": {
- "version": "5.2.4",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
- "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
+ "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
"engines": {
"node": ">= 4"
}
@@ -7011,9 +7008,9 @@
"integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA=="
},
"node_modules/ignore-walk": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz",
- "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==",
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.4.tgz",
+ "integrity": "sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==",
"dependencies": {
"minimatch": "^9.0.0"
},
@@ -7022,9 +7019,9 @@
}
},
"node_modules/ignore-walk/node_modules/minimatch": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
- "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "version": "9.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
+ "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -7064,6 +7061,11 @@
"node": ">=8"
}
},
+ "node_modules/infer-owner": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
+ "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A=="
+ },
"node_modules/inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
@@ -7135,9 +7137,9 @@
}
},
"node_modules/ios-sim-portable": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/ios-sim-portable/-/ios-sim-portable-4.4.1.tgz",
- "integrity": "sha512-8g/IlCaIQ+2IAe1qrMq2HO2Y+D4pnSk3l5NpabmCiNB/f367Db4a8MVFBVPS9jY65Ao57UedP6kaFFAUPoLnsA==",
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/ios-sim-portable/-/ios-sim-portable-4.5.0.tgz",
+ "integrity": "sha512-fJ6HewuZh6uoUkljXbTZF1MhDiSUs33C6WWPd+M7UuwHsf0e6urjURvxSS5MkkSedIVJyY6vCRup781HieW7NQ==",
"dependencies": {
"bplist-parser": "0.3.2",
"lodash": "4.17.21",
@@ -7153,10 +7155,22 @@
"node": ">=6.0.0"
}
},
- "node_modules/ip": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
- "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ=="
+ "node_modules/ip-address": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz",
+ "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==",
+ "dependencies": {
+ "jsbn": "1.1.0",
+ "sprintf-js": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/ip-address/node_modules/sprintf-js": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
+ "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="
},
"node_modules/is-absolute": {
"version": "1.0.0",
@@ -7172,28 +7186,15 @@
}
},
"node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "deprecated": "Please upgrade to v0.1.7",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz",
+ "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==",
"dev": true,
"dependencies": {
- "is-buffer": "^1.1.5"
+ "hasown": "^2.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 0.10"
}
},
"node_modules/is-arrayish": {
@@ -7230,51 +7231,28 @@
}
},
"node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "deprecated": "Please upgrade to v0.1.5",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz",
+ "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==",
"dev": true,
"dependencies": {
- "is-buffer": "^1.1.5"
+ "hasown": "^2.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 0.4"
}
},
"node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz",
+ "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==",
"dev": true,
"dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
},
"engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-descriptor/node_modules/kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "node": ">= 0.4"
}
},
"node_modules/is-docker": {
@@ -7494,10 +7472,9 @@
}
},
"node_modules/isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==",
- "dev": true
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
},
"node_modules/isexe": {
"version": "3.1.1",
@@ -7722,6 +7699,11 @@
"js-yaml": "bin/js-yaml.js"
}
},
+ "node_modules/jsbn": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
+ "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A=="
+ },
"node_modules/jsmin2": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/jsmin2/-/jsmin2-1.2.1.tgz",
@@ -7740,9 +7722,9 @@
"integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
},
"node_modules/json-parse-even-better-errors": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz",
- "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz",
+ "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==",
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
@@ -7805,9 +7787,9 @@
"integrity": "sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw=="
},
"node_modules/just-extend": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz",
- "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==",
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz",
+ "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==",
"dev": true
},
"node_modules/keyv": {
@@ -7858,11 +7840,6 @@
"node": ">= 0.6.3"
}
},
- "node_modules/lazystream/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
- },
"node_modules/lazystream/node_modules/readable-stream": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
@@ -8398,9 +8375,9 @@
}
},
"node_modules/lru-cache": {
- "version": "10.0.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz",
- "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==",
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
+ "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",
"engines": {
"node": "14 || >=16.14"
}
@@ -8411,53 +8388,27 @@
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="
},
"node_modules/make-fetch-happen": {
- "version": "11.1.1",
- "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz",
- "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==",
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz",
+ "integrity": "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==",
"dependencies": {
- "agentkeepalive": "^4.2.1",
- "cacache": "^17.0.0",
+ "@npmcli/agent": "^2.0.0",
+ "cacache": "^18.0.0",
"http-cache-semantics": "^4.1.1",
- "http-proxy-agent": "^5.0.0",
- "https-proxy-agent": "^5.0.0",
"is-lambda": "^1.0.1",
- "lru-cache": "^7.7.1",
- "minipass": "^5.0.0",
+ "minipass": "^7.0.2",
"minipass-fetch": "^3.0.0",
"minipass-flush": "^1.0.5",
"minipass-pipeline": "^1.2.4",
"negotiator": "^0.6.3",
"promise-retry": "^2.0.1",
- "socks-proxy-agent": "^7.0.0",
"ssri": "^10.0.0"
},
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
- }
- },
- "node_modules/make-fetch-happen/node_modules/cacache": {
- "version": "17.1.4",
- "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz",
- "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==",
- "dependencies": {
- "@npmcli/fs": "^3.1.0",
- "fs-minipass": "^3.0.0",
- "glob": "^10.2.2",
- "lru-cache": "^7.7.1",
- "minipass": "^7.0.3",
- "minipass-collect": "^1.0.2",
- "minipass-flush": "^1.0.5",
- "minipass-pipeline": "^1.2.4",
- "p-map": "^4.0.0",
- "ssri": "^10.0.0",
- "tar": "^6.1.11",
- "unique-filename": "^3.0.0"
- },
- "engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ "node": "^16.14.0 || >=18.0.0"
}
},
- "node_modules/make-fetch-happen/node_modules/cacache/node_modules/minipass": {
+ "node_modules/make-fetch-happen/node_modules/minipass": {
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
"integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
@@ -8465,57 +8416,6 @@
"node": ">=16 || 14 >=14.17"
}
},
- "node_modules/make-fetch-happen/node_modules/glob": {
- "version": "10.3.10",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
- "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
- "dependencies": {
- "foreground-child": "^3.1.0",
- "jackspeak": "^2.3.5",
- "minimatch": "^9.0.1",
- "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
- "path-scurry": "^1.10.1"
- },
- "bin": {
- "glob": "dist/esm/bin.mjs"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/make-fetch-happen/node_modules/lru-cache": {
- "version": "7.18.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
- "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/make-fetch-happen/node_modules/minimatch": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
- "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/make-fetch-happen/node_modules/minipass": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
- "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/make-iterator": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
@@ -8843,12 +8743,12 @@
}
},
"node_modules/mergexml": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/mergexml/-/mergexml-1.2.3.tgz",
- "integrity": "sha512-sNc9qswtLUoGmN0MB3dY+MCIJqCGEZZrtYp0Z5Iwsk6ELc/V96SFIuv5Y6O6tYAsFtdpJcPFV0FgOSHSciJLbA==",
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/mergexml/-/mergexml-1.2.4.tgz",
+ "integrity": "sha512-yiOlDqcVCz7AG1eSboonc18FTlfqDEKYfGoAV3Lul98u6YRV/s0kjtf4bjk47t0hLTFJR0BSYMd6BpmX3xDjNQ==",
"dependencies": {
"@xmldom/xmldom": "^0.7.0",
- "formidable": "^1.2.1",
+ "formidable": "^3.5.1",
"xpath": "0.0.27"
}
},
@@ -8983,25 +8883,22 @@
}
},
"node_modules/minipass-collect": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
- "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz",
+ "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==",
"dependencies": {
- "minipass": "^3.0.0"
+ "minipass": "^7.0.3"
},
"engines": {
- "node": ">= 8"
+ "node": ">=16 || 14 >=14.17"
}
},
"node_modules/minipass-collect/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
+ "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
"engines": {
- "node": ">=8"
+ "node": ">=16 || 14 >=14.17"
}
},
"node_modules/minipass-fetch": {
@@ -9282,9 +9179,9 @@
}
},
"node_modules/mocha/node_modules/glob/node_modules/minimatch": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz",
- "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"dependencies": {
"brace-expansion": "^1.1.7"
@@ -9387,9 +9284,9 @@
}
},
"node_modules/nan": {
- "version": "2.18.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz",
- "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==",
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.19.0.tgz",
+ "integrity": "sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==",
"dev": true,
"optional": true
},
@@ -9453,44 +9350,17 @@
"node": ">=0.10.0"
}
},
- "node_modules/nanomatch/node_modules/is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "deprecated": "Please upgrade to v1.0.1",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/nanomatch/node_modules/is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "deprecated": "Please upgrade to v1.0.1",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/nanomatch/node_modules/is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz",
+ "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==",
"dev": true,
"dependencies": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 0.4"
}
},
"node_modules/nanomatch/node_modules/is-extendable": {
@@ -9506,9 +9376,9 @@
}
},
"node_modules/nativescript-dev-xcode": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/nativescript-dev-xcode/-/nativescript-dev-xcode-0.6.0.tgz",
- "integrity": "sha512-8LAQZgX5SXABbcPsBpcRHc+qlJEufC1S0AmfZA03abMhaLgvWzo3SREuePz46XEDtj50DZvPN840SIzv1t26Fw==",
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/nativescript-dev-xcode/-/nativescript-dev-xcode-0.7.0.tgz",
+ "integrity": "sha512-L0oe44Kqeqzv9kBzBwGnyh0KJ1bVWNQEiLMRE9l7EyIC/mdoajaz/1hTZEq9JmKuUB8CQ4i7CK/f9WvyDJ9sxw==",
"dependencies": {
"simple-plist": "1.3.1",
"uuid": "9.0.1"
@@ -9581,25 +9451,25 @@
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
},
"node_modules/nise": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.5.tgz",
- "integrity": "sha512-VJuPIfUFaXNRzETTQEEItTOP8Y171ijr+JLq42wHes3DiryR8vT+1TXQW/Rx8JNUhyYYWyIvjXTU6dOhJcs9Nw==",
+ "version": "5.1.9",
+ "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz",
+ "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==",
"dev": true,
"dependencies": {
- "@sinonjs/commons": "^2.0.0",
- "@sinonjs/fake-timers": "^10.0.2",
- "@sinonjs/text-encoding": "^0.7.1",
- "just-extend": "^4.0.2",
- "path-to-regexp": "^1.7.0"
+ "@sinonjs/commons": "^3.0.0",
+ "@sinonjs/fake-timers": "^11.2.2",
+ "@sinonjs/text-encoding": "^0.7.2",
+ "just-extend": "^6.2.0",
+ "path-to-regexp": "^6.2.1"
}
},
- "node_modules/nise/node_modules/@sinonjs/commons": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz",
- "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==",
+ "node_modules/nise/node_modules/@sinonjs/fake-timers": {
+ "version": "11.2.2",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz",
+ "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==",
"dev": true,
"dependencies": {
- "type-detect": "4.0.8"
+ "@sinonjs/commons": "^3.0.0"
}
},
"node_modules/node-emoji": {
@@ -9630,48 +9500,26 @@
}
},
"node_modules/node-gyp": {
- "version": "9.4.0",
- "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.0.tgz",
- "integrity": "sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg==",
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.1.0.tgz",
+ "integrity": "sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA==",
"dependencies": {
"env-paths": "^2.2.0",
"exponential-backoff": "^3.1.1",
- "glob": "^7.1.4",
+ "glob": "^10.3.10",
"graceful-fs": "^4.2.6",
- "make-fetch-happen": "^11.0.3",
- "nopt": "^6.0.0",
- "npmlog": "^6.0.0",
- "rimraf": "^3.0.2",
+ "make-fetch-happen": "^13.0.0",
+ "nopt": "^7.0.0",
+ "proc-log": "^3.0.0",
"semver": "^7.3.5",
"tar": "^6.1.2",
- "which": "^2.0.2"
+ "which": "^4.0.0"
},
"bin": {
"node-gyp": "bin/node-gyp.js"
},
"engines": {
- "node": "^12.13 || ^14.13 || >=16"
- }
- },
- "node_modules/node-gyp/node_modules/are-we-there-yet": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz",
- "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==",
- "dependencies": {
- "delegates": "^1.0.0",
- "readable-stream": "^3.6.0"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/node-gyp/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
+ "node": "^16.14.0 || >=18.0.0"
}
},
"node_modules/node-gyp/node_modules/env-paths": {
@@ -9682,126 +9530,74 @@
"node": ">=6"
}
},
- "node_modules/node-gyp/node_modules/gauge": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz",
- "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==",
+ "node_modules/node-gyp/node_modules/glob": {
+ "version": "10.3.12",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz",
+ "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==",
"dependencies": {
- "aproba": "^1.0.3 || ^2.0.0",
- "color-support": "^1.1.3",
- "console-control-strings": "^1.1.0",
- "has-unicode": "^2.0.1",
- "signal-exit": "^3.0.7",
- "string-width": "^4.2.3",
- "strip-ansi": "^6.0.1",
- "wide-align": "^1.1.5"
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^2.3.6",
+ "minimatch": "^9.0.1",
+ "minipass": "^7.0.4",
+ "path-scurry": "^1.10.2"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/node-gyp/node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "node_modules/node-gyp/node_modules/minimatch": {
+ "version": "9.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
+ "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
"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"
+ "brace-expansion": "^2.0.1"
},
"engines": {
- "node": "*"
+ "node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/node-gyp/node_modules/isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
- },
- "node_modules/node-gyp/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
+ "node_modules/node-gyp/node_modules/minipass": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
+ "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
"engines": {
- "node": "*"
+ "node": ">=16 || 14 >=14.17"
}
},
- "node_modules/node-gyp/node_modules/nopt": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz",
- "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==",
+ "node_modules/nodemon": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.3.tgz",
+ "integrity": "sha512-7jH/NXbFPxVaMwmBCC2B9F/V6X1VkEdNgx3iu9jji8WxWcvhMWkmhNWhI5077zknOnZnBzba9hZP6bCPJLSReQ==",
"dependencies": {
- "abbrev": "^1.0.0"
+ "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": {
- "nopt": "bin/nopt.js"
+ "nodemon": "bin/nodemon.js"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/node-gyp/node_modules/npmlog": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz",
- "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==",
- "dependencies": {
- "are-we-there-yet": "^3.0.0",
- "console-control-strings": "^1.1.0",
- "gauge": "^4.0.3",
- "set-blocking": "^2.0.0"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/node-gyp/node_modules/which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/nodemon": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.3.tgz",
- "integrity": "sha512-7jH/NXbFPxVaMwmBCC2B9F/V6X1VkEdNgx3iu9jji8WxWcvhMWkmhNWhI5077zknOnZnBzba9hZP6bCPJLSReQ==",
- "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": ">=10"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/nodemon"
}
},
"node_modules/nodemon/node_modules/brace-expansion": {
@@ -9982,27 +9778,6 @@
"node": "^16.14.0 || >=18.0.0"
}
},
- "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": {
- "version": "13.0.0",
- "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz",
- "integrity": "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==",
- "dependencies": {
- "@npmcli/agent": "^2.0.0",
- "cacache": "^18.0.0",
- "http-cache-semantics": "^4.1.1",
- "is-lambda": "^1.0.1",
- "minipass": "^7.0.2",
- "minipass-fetch": "^3.0.0",
- "minipass-flush": "^1.0.5",
- "minipass-pipeline": "^1.2.4",
- "negotiator": "^0.6.3",
- "promise-retry": "^2.0.1",
- "ssri": "^10.0.0"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
"node_modules/npm-registry-fetch/node_modules/minipass": {
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
@@ -10468,6 +10243,29 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
+ "node_modules/pacote/node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/pacote/node_modules/are-we-there-yet": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz",
+ "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==",
+ "dependencies": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^3.6.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
"node_modules/pacote/node_modules/cacache": {
"version": "17.1.4",
"resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz",
@@ -10498,16 +10296,42 @@
"node": ">=16 || 14 >=14.17"
}
},
+ "node_modules/pacote/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==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pacote/node_modules/gauge": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz",
+ "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==",
+ "dependencies": {
+ "aproba": "^1.0.3 || ^2.0.0",
+ "color-support": "^1.1.3",
+ "console-control-strings": "^1.1.0",
+ "has-unicode": "^2.0.1",
+ "signal-exit": "^3.0.7",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1",
+ "wide-align": "^1.1.5"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
"node_modules/pacote/node_modules/glob": {
- "version": "10.3.10",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
- "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
+ "version": "10.3.12",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz",
+ "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==",
"dependencies": {
"foreground-child": "^3.1.0",
- "jackspeak": "^2.3.5",
+ "jackspeak": "^2.3.6",
"minimatch": "^9.0.1",
- "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
- "path-scurry": "^1.10.1"
+ "minipass": "^7.0.4",
+ "path-scurry": "^1.10.2"
},
"bin": {
"glob": "dist/esm/bin.mjs"
@@ -10538,6 +10362,31 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
+ "node_modules/pacote/node_modules/http-proxy-agent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
+ "dependencies": {
+ "@tootallnate/once": "2",
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/pacote/node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/pacote/node_modules/isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
@@ -10551,10 +10400,165 @@
"node": ">=12"
}
},
+ "node_modules/pacote/node_modules/make-fetch-happen": {
+ "version": "10.2.1",
+ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz",
+ "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==",
+ "dependencies": {
+ "agentkeepalive": "^4.2.1",
+ "cacache": "^16.1.0",
+ "http-cache-semantics": "^4.1.0",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.0",
+ "is-lambda": "^1.0.1",
+ "lru-cache": "^7.7.1",
+ "minipass": "^3.1.6",
+ "minipass-collect": "^1.0.2",
+ "minipass-fetch": "^2.0.3",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "negotiator": "^0.6.3",
+ "promise-retry": "^2.0.1",
+ "socks-proxy-agent": "^7.0.0",
+ "ssri": "^9.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/pacote/node_modules/make-fetch-happen/node_modules/@npmcli/fs": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz",
+ "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==",
+ "dependencies": {
+ "@gar/promisify": "^1.1.3",
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/pacote/node_modules/make-fetch-happen/node_modules/cacache": {
+ "version": "16.1.3",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz",
+ "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==",
+ "dependencies": {
+ "@npmcli/fs": "^2.1.0",
+ "@npmcli/move-file": "^2.0.0",
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.1.0",
+ "glob": "^8.0.1",
+ "infer-owner": "^1.0.4",
+ "lru-cache": "^7.7.1",
+ "minipass": "^3.1.6",
+ "minipass-collect": "^1.0.2",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "mkdirp": "^1.0.4",
+ "p-map": "^4.0.0",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^3.0.2",
+ "ssri": "^9.0.0",
+ "tar": "^6.1.11",
+ "unique-filename": "^2.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/pacote/node_modules/make-fetch-happen/node_modules/fs-minipass": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
+ "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/pacote/node_modules/make-fetch-happen/node_modules/glob": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
+ "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^5.0.1",
+ "once": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/pacote/node_modules/make-fetch-happen/node_modules/minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/pacote/node_modules/make-fetch-happen/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pacote/node_modules/make-fetch-happen/node_modules/minipass-fetch": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz",
+ "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==",
+ "dependencies": {
+ "minipass": "^3.1.6",
+ "minipass-sized": "^1.0.3",
+ "minizlib": "^2.1.2"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ },
+ "optionalDependencies": {
+ "encoding": "^0.1.13"
+ }
+ },
+ "node_modules/pacote/node_modules/make-fetch-happen/node_modules/ssri": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz",
+ "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==",
+ "dependencies": {
+ "minipass": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/pacote/node_modules/make-fetch-happen/node_modules/unique-filename": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz",
+ "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==",
+ "dependencies": {
+ "unique-slug": "^3.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
"node_modules/pacote/node_modules/minimatch": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
- "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "version": "9.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
+ "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -10565,6 +10569,130 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/pacote/node_modules/minipass-collect": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
+ "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/pacote/node_modules/minipass-collect/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pacote/node_modules/mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/pacote/node_modules/node-gyp": {
+ "version": "9.4.1",
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz",
+ "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==",
+ "dependencies": {
+ "env-paths": "^2.2.0",
+ "exponential-backoff": "^3.1.1",
+ "glob": "^7.1.4",
+ "graceful-fs": "^4.2.6",
+ "make-fetch-happen": "^10.0.3",
+ "nopt": "^6.0.0",
+ "npmlog": "^6.0.0",
+ "rimraf": "^3.0.2",
+ "semver": "^7.3.5",
+ "tar": "^6.1.2",
+ "which": "^2.0.2"
+ },
+ "bin": {
+ "node-gyp": "bin/node-gyp.js"
+ },
+ "engines": {
+ "node": "^12.13 || ^14.13 || >=16"
+ }
+ },
+ "node_modules/pacote/node_modules/node-gyp/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/pacote/node_modules/node-gyp/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "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/pacote/node_modules/node-gyp/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/pacote/node_modules/node-gyp/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/pacote/node_modules/nopt": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz",
+ "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==",
+ "dependencies": {
+ "abbrev": "^1.0.0"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
"node_modules/pacote/node_modules/npm-package-arg": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz",
@@ -10610,6 +10738,31 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
+ "node_modules/pacote/node_modules/npm-registry-fetch/node_modules/make-fetch-happen": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz",
+ "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==",
+ "dependencies": {
+ "agentkeepalive": "^4.2.1",
+ "cacache": "^17.0.0",
+ "http-cache-semantics": "^4.1.1",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.0",
+ "is-lambda": "^1.0.1",
+ "lru-cache": "^7.7.1",
+ "minipass": "^5.0.0",
+ "minipass-fetch": "^3.0.0",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "negotiator": "^0.6.3",
+ "promise-retry": "^2.0.1",
+ "socks-proxy-agent": "^7.0.0",
+ "ssri": "^10.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
"node_modules/pacote/node_modules/npm-registry-fetch/node_modules/minipass": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
@@ -10618,6 +10771,44 @@
"node": ">=8"
}
},
+ "node_modules/pacote/node_modules/npmlog": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz",
+ "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==",
+ "dependencies": {
+ "are-we-there-yet": "^3.0.0",
+ "console-control-strings": "^1.1.0",
+ "gauge": "^4.0.3",
+ "set-blocking": "^2.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/pacote/node_modules/socks-proxy-agent": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz",
+ "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==",
+ "dependencies": {
+ "agent-base": "^6.0.2",
+ "debug": "^4.3.3",
+ "socks": "^2.6.2"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/pacote/node_modules/unique-slug": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz",
+ "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==",
+ "dependencies": {
+ "imurmurhash": "^0.1.4"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
"node_modules/pacote/node_modules/which": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz",
@@ -10648,32 +10839,12 @@
"integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA=="
},
"node_modules/parse-bmfont-xml": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz",
- "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==",
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.6.tgz",
+ "integrity": "sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==",
"dependencies": {
"xml-parse-from-string": "^1.0.0",
- "xml2js": "^0.4.5"
- }
- },
- "node_modules/parse-bmfont-xml/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==",
- "dependencies": {
- "sax": ">=0.6.0",
- "xmlbuilder": "~11.0.0"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/parse-bmfont-xml/node_modules/xmlbuilder": {
- "version": "11.0.1",
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
- "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
- "engines": {
- "node": ">=4.0"
+ "xml2js": "^0.5.0"
}
},
"node_modules/parse-conflict-json": {
@@ -10801,11 +10972,11 @@
}
},
"node_modules/path-scurry": {
- "version": "1.10.1",
- "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz",
- "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==",
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz",
+ "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==",
"dependencies": {
- "lru-cache": "^9.1.1 || ^10.0.0",
+ "lru-cache": "^10.2.0",
"minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
},
"engines": {
@@ -10824,13 +10995,10 @@
}
},
"node_modules/path-to-regexp": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
- "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
- "dev": true,
- "dependencies": {
- "isarray": "0.0.1"
- }
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz",
+ "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==",
+ "dev": true
},
"node_modules/path-type": {
"version": "3.0.0",
@@ -10885,7 +11053,13 @@
"node_modules/phin": {
"version": "2.9.3",
"resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz",
- "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA=="
+ "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
},
"node_modules/picomatch": {
"version": "2.3.1",
@@ -10976,9 +11150,9 @@
}
},
"node_modules/postcss-selector-parser": {
- "version": "6.0.13",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz",
- "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==",
+ "version": "6.0.16",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz",
+ "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==",
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
@@ -11049,9 +11223,9 @@
}
},
"node_modules/promise-call-limit": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.2.tgz",
- "integrity": "sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-3.0.1.tgz",
+ "integrity": "sha512-utl+0x8gIDasV5X+PI5qWEPqH6fJS0pFtQ/4gZ95xfEFb/89dmh+/b895TbFDBLiafBvxD/PGTKfvxl4kH/pQg==",
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
@@ -11171,12 +11345,12 @@
}
},
"node_modules/qs": {
- "version": "6.11.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz",
- "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
+ "version": "6.12.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.0.tgz",
+ "integrity": "sha512-trVZiI6RMOkO476zLGaBIzszOdFPnCCXHPG9kn0yuS1uz6xdVxPfZdB3vUig9pxPFDM9BRAgz/YUIVQ1/vuiUg==",
"dev": true,
"dependencies": {
- "side-channel": "^1.0.4"
+ "side-channel": "^1.0.6"
},
"engines": {
"node": ">=0.6"
@@ -11305,15 +11479,15 @@
}
},
"node_modules/read-package-json/node_modules/glob": {
- "version": "10.3.10",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
- "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
+ "version": "10.3.12",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz",
+ "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==",
"dependencies": {
"foreground-child": "^3.1.0",
- "jackspeak": "^2.3.5",
+ "jackspeak": "^2.3.6",
"minimatch": "^9.0.1",
- "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
- "path-scurry": "^1.10.1"
+ "minipass": "^7.0.4",
+ "path-scurry": "^1.10.2"
},
"bin": {
"glob": "dist/esm/bin.mjs"
@@ -11345,9 +11519,9 @@
}
},
"node_modules/read-package-json/node_modules/minimatch": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
- "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "version": "9.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
+ "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -12075,9 +12249,9 @@
}
},
"node_modules/rfdc": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz",
- "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA=="
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz",
+ "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg=="
},
"node_modules/rimraf": {
"version": "3.0.2",
@@ -12243,15 +12417,17 @@
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
},
"node_modules/set-function-length": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
- "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
"dev": true,
"dependencies": {
- "define-data-property": "^1.1.1",
- "get-intrinsic": "^1.2.1",
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
"gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.0"
+ "has-property-descriptors": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -12358,14 +12534,18 @@
}
},
"node_modules/side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
+ "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "object-inspect": "^1.13.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -12376,22 +12556,207 @@
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
},
- "node_modules/sigstore": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.9.0.tgz",
- "integrity": "sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A==",
+ "node_modules/sigstore": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.9.0.tgz",
+ "integrity": "sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A==",
+ "dependencies": {
+ "@sigstore/bundle": "^1.1.0",
+ "@sigstore/protobuf-specs": "^0.2.0",
+ "@sigstore/sign": "^1.0.0",
+ "@sigstore/tuf": "^1.0.3",
+ "make-fetch-happen": "^11.0.1"
+ },
+ "bin": {
+ "sigstore": "bin/sigstore.js"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/sigstore/node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/sigstore/node_modules/cacache": {
+ "version": "17.1.4",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz",
+ "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==",
+ "dependencies": {
+ "@npmcli/fs": "^3.1.0",
+ "fs-minipass": "^3.0.0",
+ "glob": "^10.2.2",
+ "lru-cache": "^7.7.1",
+ "minipass": "^7.0.3",
+ "minipass-collect": "^1.0.2",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "p-map": "^4.0.0",
+ "ssri": "^10.0.0",
+ "tar": "^6.1.11",
+ "unique-filename": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/sigstore/node_modules/cacache/node_modules/minipass": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
+ "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/sigstore/node_modules/glob": {
+ "version": "10.3.12",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz",
+ "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^2.3.6",
+ "minimatch": "^9.0.1",
+ "minipass": "^7.0.4",
+ "path-scurry": "^1.10.2"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/sigstore/node_modules/glob/node_modules/minipass": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
+ "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/sigstore/node_modules/http-proxy-agent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
+ "dependencies": {
+ "@tootallnate/once": "2",
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/sigstore/node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/sigstore/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/sigstore/node_modules/make-fetch-happen": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz",
+ "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==",
+ "dependencies": {
+ "agentkeepalive": "^4.2.1",
+ "cacache": "^17.0.0",
+ "http-cache-semantics": "^4.1.1",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.0",
+ "is-lambda": "^1.0.1",
+ "lru-cache": "^7.7.1",
+ "minipass": "^5.0.0",
+ "minipass-fetch": "^3.0.0",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "negotiator": "^0.6.3",
+ "promise-retry": "^2.0.1",
+ "socks-proxy-agent": "^7.0.0",
+ "ssri": "^10.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/sigstore/node_modules/minimatch": {
+ "version": "9.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
+ "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/sigstore/node_modules/minipass": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
+ "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/sigstore/node_modules/minipass-collect": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
+ "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/sigstore/node_modules/minipass-collect/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
"dependencies": {
- "@sigstore/bundle": "^1.1.0",
- "@sigstore/protobuf-specs": "^0.2.0",
- "@sigstore/sign": "^1.0.0",
- "@sigstore/tuf": "^1.0.3",
- "make-fetch-happen": "^11.0.1"
+ "yallist": "^4.0.0"
},
- "bin": {
- "sigstore": "bin/sigstore.js"
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/sigstore/node_modules/socks-proxy-agent": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz",
+ "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==",
+ "dependencies": {
+ "agent-base": "^6.0.2",
+ "debug": "^4.3.3",
+ "socks": "^2.6.2"
},
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ "node": ">= 10"
}
},
"node_modules/simple-git": {
@@ -12544,44 +12909,17 @@
"node": ">=0.10.0"
}
},
- "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "deprecated": "Please upgrade to v1.0.1",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-node/node_modules/is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "deprecated": "Please upgrade to v1.0.1",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/snapdragon-node/node_modules/is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz",
+ "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==",
"dev": true,
"dependencies": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 0.4"
}
},
"node_modules/snapdragon-util": {
@@ -12633,29 +12971,29 @@
}
},
"node_modules/socks": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz",
- "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==",
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.1.tgz",
+ "integrity": "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==",
"dependencies": {
- "ip": "^2.0.0",
+ "ip-address": "^9.0.5",
"smart-buffer": "^4.2.0"
},
"engines": {
- "node": ">= 10.13.0",
+ "node": ">= 10.0.0",
"npm": ">= 3.0.0"
}
},
"node_modules/socks-proxy-agent": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz",
- "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==",
+ "version": "8.0.3",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz",
+ "integrity": "sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==",
"dependencies": {
- "agent-base": "^6.0.2",
- "debug": "^4.3.3",
- "socks": "^2.6.2"
+ "agent-base": "^7.1.1",
+ "debug": "^4.3.4",
+ "socks": "^2.7.1"
},
"engines": {
- "node": ">= 10"
+ "node": ">= 14"
}
},
"node_modules/source-map": {
@@ -12716,9 +13054,9 @@
}
},
"node_modules/spdx-exceptions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A=="
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
+ "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w=="
},
"node_modules/spdx-expression-parse": {
"version": "3.0.1",
@@ -12730,9 +13068,9 @@
}
},
"node_modules/spdx-license-ids": {
- "version": "3.0.16",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz",
- "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw=="
+ "version": "3.0.17",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz",
+ "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg=="
},
"node_modules/split": {
"version": "1.0.1",
@@ -13318,14 +13656,11 @@
"integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw=="
},
"node_modules/tmp": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
- "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
- "dependencies": {
- "rimraf": "^3.0.0"
- },
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz",
+ "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==",
"engines": {
- "node": ">=8.17.0"
+ "node": ">=14.14"
}
},
"node_modules/to-object-path": {
@@ -13413,44 +13748,17 @@
"node": ">=0.10.0"
}
},
- "node_modules/to-regex/node_modules/is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "deprecated": "Please upgrade to v1.0.1",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-regex/node_modules/is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "deprecated": "Please upgrade to v1.0.1",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/to-regex/node_modules/is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz",
+ "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==",
"dev": true,
"dependencies": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 0.4"
}
},
"node_modules/to-regex/node_modules/is-extendable": {
@@ -13545,9 +13853,9 @@
}
},
"node_modules/ts-node": {
- "version": "10.9.1",
- "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
- "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
+ "version": "10.9.2",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
+ "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
"dependencies": {
"@cspotcode/source-map-support": "^0.8.0",
"@tsconfig/node10": "^1.0.7",
@@ -13612,6 +13920,191 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
+ "node_modules/tuf-js/node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/tuf-js/node_modules/cacache": {
+ "version": "17.1.4",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz",
+ "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==",
+ "dependencies": {
+ "@npmcli/fs": "^3.1.0",
+ "fs-minipass": "^3.0.0",
+ "glob": "^10.2.2",
+ "lru-cache": "^7.7.1",
+ "minipass": "^7.0.3",
+ "minipass-collect": "^1.0.2",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "p-map": "^4.0.0",
+ "ssri": "^10.0.0",
+ "tar": "^6.1.11",
+ "unique-filename": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/tuf-js/node_modules/cacache/node_modules/minipass": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
+ "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/tuf-js/node_modules/glob": {
+ "version": "10.3.12",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz",
+ "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^2.3.6",
+ "minimatch": "^9.0.1",
+ "minipass": "^7.0.4",
+ "path-scurry": "^1.10.2"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/tuf-js/node_modules/glob/node_modules/minipass": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
+ "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/tuf-js/node_modules/http-proxy-agent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
+ "dependencies": {
+ "@tootallnate/once": "2",
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/tuf-js/node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/tuf-js/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/tuf-js/node_modules/make-fetch-happen": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz",
+ "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==",
+ "dependencies": {
+ "agentkeepalive": "^4.2.1",
+ "cacache": "^17.0.0",
+ "http-cache-semantics": "^4.1.1",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.0",
+ "is-lambda": "^1.0.1",
+ "lru-cache": "^7.7.1",
+ "minipass": "^5.0.0",
+ "minipass-fetch": "^3.0.0",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "negotiator": "^0.6.3",
+ "promise-retry": "^2.0.1",
+ "socks-proxy-agent": "^7.0.0",
+ "ssri": "^10.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/tuf-js/node_modules/minimatch": {
+ "version": "9.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
+ "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/tuf-js/node_modules/minipass": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
+ "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/tuf-js/node_modules/minipass-collect": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
+ "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/tuf-js/node_modules/minipass-collect/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/tuf-js/node_modules/socks-proxy-agent": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz",
+ "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==",
+ "dependencies": {
+ "agent-base": "^6.0.2",
+ "debug": "^4.3.3",
+ "socks": "^2.6.2"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
"node_modules/tunnel": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
@@ -13778,9 +14271,9 @@
}
},
"node_modules/universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
"engines": {
"node": ">= 10.0.0"
}
@@ -13833,12 +14326,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/unset-value/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
- },
"node_modules/untildify": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
@@ -13985,9 +14472,9 @@
}
},
"node_modules/whatwg-fetch": {
- "version": "3.6.19",
- "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz",
- "integrity": "sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw=="
+ "version": "3.6.20",
+ "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz",
+ "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg=="
},
"node_modules/whatwg-url": {
"version": "5.0.0",
diff --git a/package.json b/package.json
index 75ea51580f..03cba92f7b 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "nativescript",
"preferGlobal": true,
- "version": "8.6.5",
+ "version": "8.7.0",
"author": "NativeScript ",
"description": "Command-line interface for building NativeScript projects",
"bin": {
@@ -34,7 +34,7 @@
"build.all": "grunt test",
"dev": "tsc --watch",
"setup": "npm i --ignore-scripts && npx husky install",
- "test": "mocha --config=test/.mocharc.yml",
+ "test": "npm run tsc && mocha --config=test/.mocharc.yml",
"postinstall": "node postinstall.js",
"preuninstall": "node preuninstall.js",
"prepack": "grunt prepare",
@@ -55,7 +55,7 @@
"mobile"
],
"dependencies": {
- "@nativescript/doctor": "2.0.13",
+ "@nativescript/doctor": "2.0.14",
"@nativescript/schematics-executor": "0.0.2",
"@npmcli/arborist": "^7.2.0",
"@npmcli/move-file": "^2.0.0",
@@ -77,7 +77,7 @@
"glob": "9.3.4",
"ios-device-lib": "0.9.3",
"ios-mobileprovision-finder": "1.1.0",
- "ios-sim-portable": "4.4.1",
+ "ios-sim-portable": "4.5.0",
"jimp": "0.22.10",
"lodash": "4.17.21",
"log4js": "6.9.1",
@@ -86,7 +86,7 @@
"minimatch": "7.4.2",
"mkdirp": "2.1.6",
"mute-stream": "1.0.0",
- "nativescript-dev-xcode": "0.6.0",
+ "nativescript-dev-xcode": "0.7.0",
"open": "8.4.2",
"ora": "5.4.1",
"pacote": "15.1.1",
@@ -193,4 +193,4 @@
"nodemon": "3.0.3"
}
}
-}
\ No newline at end of file
+}
diff --git a/packages/doctor/package.json b/packages/doctor/package.json
index 0808a50792..6219dc871e 100644
--- a/packages/doctor/package.json
+++ b/packages/doctor/package.json
@@ -1,6 +1,6 @@
{
"name": "@nativescript/doctor",
- "version": "2.0.13",
+ "version": "2.0.14",
"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",
diff --git a/packages/doctor/src/doctor.ts b/packages/doctor/src/doctor.ts
index cdd7c107d6..3fc13bae78 100644
--- a/packages/doctor/src/doctor.ts
+++ b/packages/doctor/src/doctor.ts
@@ -220,7 +220,8 @@ export class Doctor implements NativeScriptDoctor.IDoctor {
);
if (sysInfoData.xcodeVer && sysInfoData.cocoaPodsVer) {
- const isCocoaPodsWorkingCorrectly = await this.sysInfo.isCocoaPodsWorkingCorrectly();
+ const isCocoaPodsWorkingCorrectly =
+ await this.sysInfo.isCocoaPodsWorkingCorrectly();
result = result.concat(
this.processSysInfoItem({
item: isCocoaPodsWorkingCorrectly,
@@ -259,14 +260,6 @@ export class Doctor implements NativeScriptDoctor.IDoctor {
EOL +
`Error while validating Python packages. Error is: ${sysInfoData.pythonInfo.installationErrorMessage}`,
platforms: [Constants.IOS_PLATFORM_NAME],
- }),
- this.processSysInfoItem({
- item: sysInfoData.pythonInfo.isSixPackageInstalled,
- infoMessage: `The Python 'six' package is found.`,
- warningMessage: `The Python 'six' package not found.`,
- additionalInformation:
- "This package is required by the Debugger library (LLDB) for iOS. You can install it by first making sure you have pip3 installed and then running 'pip3 install six' from the terminal.",
- platforms: [Constants.IOS_PLATFORM_NAME],
})
);
diff --git a/packages/doctor/src/sys-info.ts b/packages/doctor/src/sys-info.ts
index 903feb6afb..58d1719be5 100644
--- a/packages/doctor/src/sys-info.ts
+++ b/packages/doctor/src/sys-info.ts
@@ -493,21 +493,15 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo {
async (): Promise => {
if (this.hostInfo.isDarwin) {
try {
- await this.childProcess.exec(`python3 -c "import six"`);
+ await this.childProcess.exec(`python3 --version`);
} catch (error) {
- // error.code = 1 so the Python is present, but we don't have six.
- if (error.code === 1) {
- return { isInstalled: true, isSixPackageInstalled: false };
- }
-
return {
isInstalled: false,
- isSixPackageInstalled: false,
installationErrorMessage: error.message,
};
}
- return { isInstalled: true, isSixPackageInstalled: true };
+ return { isInstalled: true };
}
return null;
@@ -678,9 +672,8 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo {
return this.getValueForProperty(
() => this.commonSysInfoCache,
async (): Promise => {
- const result: NativeScriptDoctor.ICommonSysInfoData = Object.create(
- null
- );
+ const result: NativeScriptDoctor.ICommonSysInfoData =
+ Object.create(null);
// os stuff
result.platform = platform();
@@ -708,8 +701,10 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo {
result.xcodeprojLocation = await this.getXcodeprojLocation();
result.itunesInstalled = await this.isITunesInstalled();
result.cocoaPodsVer = await this.getCocoaPodsVersion();
- result.isCocoaPodsWorkingCorrectly = await this.isCocoaPodsWorkingCorrectly();
- result.isCocoaPodsUpdateRequired = await this.isCocoaPodsUpdateRequired();
+ result.isCocoaPodsWorkingCorrectly =
+ await this.isCocoaPodsWorkingCorrectly();
+ result.isCocoaPodsUpdateRequired =
+ await this.isCocoaPodsUpdateRequired();
result.pythonInfo = await this.getPythonInfo();
return result;
@@ -723,9 +718,8 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo {
return this.getValueForProperty(
() => this.androidSysInfoCache,
async (): Promise => {
- const result: NativeScriptDoctor.IAndroidSysInfoData = Object.create(
- null
- );
+ const result: NativeScriptDoctor.IAndroidSysInfoData =
+ Object.create(null);
result.dotNetVer = await this.hostInfo.dotNetVersion();
result.javacVersion = await this.getJavaCompilerVersion();
@@ -737,7 +731,8 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo {
result.androidInstalled = await this.isAndroidInstalled();
result.monoVer = await this.getMonoVersion();
result.gradleVer = await this.getGradleVersion();
- result.isAndroidSdkConfiguredCorrectly = await this.isAndroidSdkConfiguredCorrectly();
+ result.isAndroidSdkConfiguredCorrectly =
+ await this.isAndroidSdkConfiguredCorrectly();
return result;
}
@@ -749,9 +744,8 @@ export class SysInfo implements NativeScriptDoctor.ISysInfo {
regExp: RegExp
): Promise {
let javaExecutableVersion: string = null;
- const javaExecutablePath = this.getJavaExecutablePathFromJavaHome(
- javaExecutableName
- );
+ const javaExecutablePath =
+ this.getJavaExecutablePathFromJavaHome(javaExecutableName);
if (javaExecutablePath) {
javaExecutableVersion = await this.getVersionOfJavaExecutable(
javaExecutablePath,
diff --git a/packages/doctor/test/sys-info.ts b/packages/doctor/test/sys-info.ts
index acb4e44b9f..928cb7f0c4 100644
--- a/packages/doctor/test/sys-info.ts
+++ b/packages/doctor/test/sys-info.ts
@@ -113,7 +113,7 @@ function createChildProcessResults(
"tns --version": childProcessResult.nativeScriptCliVersion,
emulator: { shouldThrowError: false },
"which git": childProcessResult.git,
- 'python3 -c "import six"': childProcessResult.pythonInfo,
+ "python3 --version": childProcessResult.pythonInfo,
};
}
@@ -164,9 +164,8 @@ function mockSysInfo(
isLinux: !hostInfoOptions.isDarwin && !hostInfoOptions.isWindows,
winreg,
};
- const childProcessResultDictionary = createChildProcessResults(
- childProcessResult
- );
+ const childProcessResultDictionary =
+ createChildProcessResults(childProcessResult);
const childProcess = {
exec: async (command: string) => {
return getResultFromChildProcess(
@@ -558,7 +557,8 @@ Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)`),
null
);
const adbVersion = await sysInfo.getAdbVersion();
- const isAndroidSdkConfiguredCorrectly = await sysInfo.isAndroidSdkConfiguredCorrectly();
+ const isAndroidSdkConfiguredCorrectly =
+ await sysInfo.isAndroidSdkConfiguredCorrectly();
assert.deepEqual(adbVersion, null);
assert.deepEqual(isAndroidSdkConfiguredCorrectly, undefined);
});
@@ -583,7 +583,7 @@ Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)`),
const pythonInfo = await sysInfo.getPythonInfo();
assert.deepEqual(pythonInfo, null);
});
- it("should return {isInstalled: true, isSixPackageInstalled: true} when python is correctly installed on Mac", async () => {
+ it("should return {isInstalled: true} when python is correctly installed on Mac", async () => {
childProcessResult.pythonInfo = { result: "" };
sysInfo = mockSysInfo(
childProcessResult,
@@ -593,10 +593,9 @@ Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)`),
const pythonInfo = await sysInfo.getPythonInfo();
assert.deepEqual(pythonInfo, {
isInstalled: true,
- isSixPackageInstalled: true,
});
});
- it("should return {isInstalled: false, isSixPackageInstalled: false} when python check throws an error", async () => {
+ it("should return {isInstalled: false} when python check throws an error", async () => {
childProcessResult.pythonInfo = { shouldThrowError: true };
sysInfo = mockSysInfo(
childProcessResult,
@@ -606,27 +605,25 @@ Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)`),
const pythonInfo = await sysInfo.getPythonInfo();
assert.deepEqual(pythonInfo, {
isInstalled: false,
- isSixPackageInstalled: false,
installationErrorMessage:
- 'This one throws error. (python3 -c "import six")',
- });
- });
- it("should return {isInstalled: true, isSixPackageInstalled: false} when python is installed but six package is not", async () => {
- childProcessResult.pythonInfo = {
- shouldThrowError: true,
- errorCode: 1,
- };
- sysInfo = mockSysInfo(
- childProcessResult,
- { isWindows: false, isDarwin: true, dotNetVersion: "4.5.1" },
- null
- );
- const pythonInfo = await sysInfo.getPythonInfo();
- assert.deepEqual(pythonInfo, {
- isInstalled: true,
- isSixPackageInstalled: false,
+ "This one throws error. (python3 --version)",
});
});
+ // it("should return {isInstalled: true} when python is installed but six package is not", async () => {
+ // childProcessResult.pythonInfo = {
+ // shouldThrowError: true,
+ // errorCode: 1,
+ // };
+ // sysInfo = mockSysInfo(
+ // childProcessResult,
+ // { isWindows: false, isDarwin: true, dotNetVersion: "4.5.1" },
+ // null
+ // );
+ // const pythonInfo = await sysInfo.getPythonInfo();
+ // assert.deepEqual(pythonInfo, {
+ // isInstalled: true,
+ // });
+ // });
});
const testData: ICLIOutputVersionTestCase[] = [
@@ -823,7 +820,6 @@ ${expectedCliVersion}`;
assert.deepEqual(result.isCocoaPodsUpdateRequired, false);
assert.deepEqual(result.pythonInfo, {
isInstalled: false,
- isSixPackageInstalled: false,
installationErrorMessage:
"Cannot read properties of undefined (reading 'shouldThrowError')",
});
diff --git a/packages/doctor/typings/interfaces.ts b/packages/doctor/typings/interfaces.ts
index 867431c6d7..1d873a78b8 100644
--- a/packages/doctor/typings/interfaces.ts
+++ b/packages/doctor/typings/interfaces.ts
@@ -209,7 +209,11 @@ declare module NativeScriptDoctor {
* @param {string} runtimeVersion @optional The runtime version against which the validation is executed. In case this parameter is passed, it takes precedence over the projectDir argument.
* @return {Promise} true if local build can be executed for the provided platform.
*/
- canExecuteLocalBuild(platform: string, projectDir?: string, runtimeVersion?: string): Promise;
+ canExecuteLocalBuild(
+ platform: string,
+ projectDir?: string,
+ runtimeVersion?: string
+ ): Promise;
/**
* Executes all checks for the current environment and returns the warnings from each check.
@@ -363,7 +367,10 @@ declare module NativeScriptDoctor {
dotNetVer?: string;
}
- interface ISysInfoData extends ICommonSysInfoData, IiOSSysInfoData, IAndroidSysInfoData { }
+ interface ISysInfoData
+ extends ICommonSysInfoData,
+ IiOSSysInfoData,
+ IAndroidSysInfoData {}
/**
* Describes warning returned from @nativescript/doctor check.
@@ -438,11 +445,6 @@ declare module NativeScriptDoctor {
*/
isInstalled: boolean;
- /**
- * Determines whether python six package is installed
- */
- isSixPackageInstalled: boolean;
-
/**
* Error message from installation check
*/
@@ -487,7 +489,11 @@ declare module NativeScriptDoctor {
* @param {string} runtimeVersion @optional The runtime version against which the validation is executed. In case this parameter is passed, it takes precedence over the projectDir argument.
* @return {NativeScriptDoctor.IWarning[]} An array of errors from the validation checks. If there are no errors will return [].
*/
- validateJavacVersion(installedJavaVersion: string, projectDir?: string, runtimeVersion?: string): NativeScriptDoctor.IWarning[];
+ validateJavacVersion(
+ installedJavaVersion: string,
+ projectDir?: string,
+ runtimeVersion?: string
+ ): NativeScriptDoctor.IWarning[];
/**
* Returns the path to the adb which is located in ANDROID_HOME.
@@ -506,14 +512,18 @@ declare module NativeScriptDoctor {
* @param {ITargetValidationOptions} options The targetSdk to be validated and the project directory - used to determine the Android Runtime version.
* @return {NativeScriptDoctor.IWarning[]} An array of errors from the validation checks. If there are no errors will return [].
*/
- validateMinSupportedTargetSdk(options: ITargetValidationOptions): NativeScriptDoctor.IWarning[];
+ validateMinSupportedTargetSdk(
+ options: ITargetValidationOptions
+ ): NativeScriptDoctor.IWarning[];
/**
* Validates if the provided targetSdk is lower that the maximum supported target SDK.
* @param {ITargetValidationOptions} options The targetSdk to be validated and the project directory - used to determine the Android Runtime version.
* @return {NativeScriptDoctor.IWarning[]} An array of errors from the validation checks. If there are no errors will return [].
*/
- validataMaxSupportedTargetSdk(options: ITargetValidationOptions): NativeScriptDoctor.IWarning[];
+ validataMaxSupportedTargetSdk(
+ options: ITargetValidationOptions
+ ): NativeScriptDoctor.IWarning[];
/**
* Returns the path to the emulator executable.
diff --git a/test/bun-package-manager.ts b/test/bun-package-manager.ts
new file mode 100644
index 0000000000..758b620f54
--- /dev/null
+++ b/test/bun-package-manager.ts
@@ -0,0 +1,97 @@
+import { Yok } from "../lib/common/yok";
+import * as stubs from "./stubs";
+import { assert } from "chai";
+import { BunPackageManager } from "../lib/bun-package-manager";
+import { IInjector } from "../lib/common/definitions/yok";
+
+function createTestInjector(configuration: {} = {}): IInjector {
+ const injector = new Yok();
+ injector.register("hostInfo", {});
+ injector.register("errors", stubs.ErrorsStub);
+ injector.register("logger", stubs.LoggerStub);
+ injector.register("childProcess", stubs.ChildProcessStub);
+ injector.register("httpClient", {});
+ injector.register("fs", stubs.FileSystemStub);
+ injector.register("bun", BunPackageManager);
+ injector.register("pacoteService", {
+ manifest: () => Promise.resolve(),
+ });
+
+ return injector;
+}
+
+describe("node-package-manager", () => {
+ describe("getPackageNameParts", () => {
+ [
+ {
+ name: "should return both name and version when valid fullName passed",
+ templateFullName: "some-template@1.0.0",
+ expectedVersion: "1.0.0",
+ expectedName: "some-template",
+ },
+ {
+ name: "should return both name and version when valid fullName with scope passed",
+ templateFullName: "@nativescript/some-template@1.0.0",
+ expectedVersion: "1.0.0",
+ expectedName: "@nativescript/some-template",
+ },
+ {
+ name: "should return only name when version is not specified and the template is scoped",
+ templateFullName: "@nativescript/some-template",
+ expectedVersion: "",
+ expectedName: "@nativescript/some-template",
+ },
+ {
+ name: "should return only name when version is not specified",
+ templateFullName: "some-template",
+ expectedVersion: "",
+ expectedName: "some-template",
+ },
+ ].forEach((testCase) => {
+ it(testCase.name, async () => {
+ const testInjector = createTestInjector();
+ const npm = testInjector.resolve("bun");
+ const templateNameParts = await npm.getPackageNameParts(
+ testCase.templateFullName
+ );
+ assert.strictEqual(templateNameParts.name, testCase.expectedName);
+ assert.strictEqual(templateNameParts.version, testCase.expectedVersion);
+ });
+ });
+ });
+
+ describe("getPackageFullName", () => {
+ [
+ {
+ name: "should return name and version when specified",
+ templateName: "some-template",
+ templateVersion: "1.0.0",
+ expectedFullName: "some-template@1.0.0",
+ },
+ {
+ name: "should return only the github url when no version specified",
+ templateName:
+ "https://github.com/NativeScript/template-drawer-navigation-ng#master",
+ templateVersion: "",
+ expectedFullName:
+ "https://github.com/NativeScript/template-drawer-navigation-ng#master",
+ },
+ {
+ name: "should return only the name when no version specified",
+ templateName: "some-template",
+ templateVersion: "",
+ expectedFullName: "some-template",
+ },
+ ].forEach((testCase) => {
+ it(testCase.name, async () => {
+ const testInjector = createTestInjector();
+ const npm = testInjector.resolve("bun");
+ const templateFullName = await npm.getPackageFullName({
+ name: testCase.templateName,
+ version: testCase.templateVersion,
+ });
+ assert.strictEqual(templateFullName, testCase.expectedFullName);
+ });
+ });
+ });
+});
diff --git a/test/controllers/add-platform-controller.ts b/test/controllers/add-platform-controller.ts
index 613b7d79ef..cc2b9e62ae 100644
--- a/test/controllers/add-platform-controller.ts
+++ b/test/controllers/add-platform-controller.ts
@@ -10,6 +10,7 @@ import { NodePackageManager } from "../../lib/node-package-manager";
import { YarnPackageManager } from "../../lib/yarn-package-manager";
import { Yarn2PackageManager } from "../../lib/yarn2-package-manager";
import { PnpmPackageManager } from "../../lib/pnpm-package-manager";
+import { BunPackageManager } from "../../lib/bun-package-manager";
import { MobileHelper } from "../../lib/common/mobile/mobile-helper";
let actualMessage: string = null;
@@ -32,6 +33,8 @@ function createInjector(data?: { latestFrameworkVersion: string }) {
injector.register("yarn", YarnPackageManager);
injector.register("yarn2", Yarn2PackageManager);
injector.register("pnpm", PnpmPackageManager);
+ injector.register("bun", BunPackageManager);
+
injector.register("userSettingsService", {
getSettingValue: async (settingName: string): Promise => undefined,
});
@@ -69,8 +72,7 @@ describe("PlatformController", () => {
latestFrameworkVersion: "7.0.0",
},
{
- name:
- "should add the latest compatible version (tns platform add )",
+ name: "should add the latest compatible version (tns platform add )",
latestFrameworkVersion,
getPlatformParam: (platform: string) =>
`${platform}@${latestFrameworkVersion}`,
@@ -96,9 +98,8 @@ describe("PlatformController", () => {
const platformParam = testCase.getPlatformParam
? testCase.getPlatformParam(platform)
: platform;
- const platformController: PlatformController = injector.resolve(
- "platformController"
- );
+ const platformController: PlatformController =
+ injector.resolve("platformController");
await platformController.addPlatform({
projectDir,
platform: platformParam,
@@ -123,9 +124,8 @@ describe("PlatformController", () => {
const fs = injector.resolve("fs");
fs.exists = (filePath: string) => filePath !== frameworkPath;
- const platformController: PlatformController = injector.resolve(
- "platformController"
- );
+ const platformController: PlatformController =
+ injector.resolve("platformController");
await assert.isRejected(
platformController.addPlatform({ projectDir, platform, frameworkPath }),
@@ -175,9 +175,8 @@ describe("PlatformController", () => {
}
};
- const platformController: PlatformController = injector.resolve(
- "platformController"
- );
+ const platformController: PlatformController =
+ injector.resolve("platformController");
await platformController.addPlatform({
projectDir,
platform: "android",
diff --git a/test/ios-entitlements-service.ts b/test/ios-entitlements-service.ts
index 842ef0bbcd..455e9900fe 100644
--- a/test/ios-entitlements-service.ts
+++ b/test/ios-entitlements-service.ts
@@ -39,6 +39,8 @@ describe("IOSEntitlements Service Tests", () => {
testInjector.register("tempService", stubs.TempServiceStub);
+ testInjector.register("options", {});
+
return testInjector;
};
@@ -57,22 +59,23 @@ describe("IOSEntitlements Service Tests", () => {
projectData.platformsDir = temp.mkdirSync("platformsDir");
projectData.projectDir = temp.mkdirSync("projectDir");
projectData.appDirectoryPath = projectData.getAppDirectoryPath();
- projectData.appResourcesDirectoryPath = projectData.getAppResourcesDirectoryPath();
+ projectData.appResourcesDirectoryPath =
+ projectData.getAppResourcesDirectoryPath();
fs = injector.resolve("$fs");
iOSEntitlementsService = injector.resolve("iOSEntitlementsService");
- destinationFilePath = iOSEntitlementsService.getPlatformsEntitlementsPath(
- projectData
- );
+ destinationFilePath =
+ iOSEntitlementsService.getPlatformsEntitlementsPath(projectData);
});
describe("Ensure paths constructed are correct", () => {
it("Ensure destination entitlements relative path is calculated correctly.", () => {
const expected = path.join("testApp", "testApp.entitlements");
- const actual = iOSEntitlementsService.getPlatformsEntitlementsRelativePath(
- projectData
- );
+ const actual =
+ iOSEntitlementsService.getPlatformsEntitlementsRelativePath(
+ projectData
+ );
assert.equal(actual, expected);
});
@@ -83,9 +86,8 @@ describe("IOSEntitlements Service Tests", () => {
"testApp",
"testApp.entitlements"
);
- const actual = iOSEntitlementsService.getPlatformsEntitlementsPath(
- projectData
- );
+ const actual =
+ iOSEntitlementsService.getPlatformsEntitlementsPath(projectData);
assert.equal(actual, expected);
});
});
diff --git a/test/ios-project-service.ts b/test/ios-project-service.ts
index 9c6dd5f9be..330976a257 100644
--- a/test/ios-project-service.ts
+++ b/test/ios-project-service.ts
@@ -50,6 +50,7 @@ import { IPluginData } from "../lib/definitions/plugins";
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 {
@@ -120,7 +121,7 @@ function createTestInjector(
testInjector.register("staticConfig", ConfigLib.StaticConfig);
testInjector.register("projectDataService", ProjectDataServiceStub);
testInjector.register("prompter", {});
- testInjector.register("devicePlatformsConstants", { iOS: "iOS" });
+ testInjector.register("devicePlatformsConstants", DevicePlatformsConstants);
testInjector.register("devicesService", DevicesService);
testInjector.register("iOSDeviceDiscovery", IOSDeviceDiscovery);
testInjector.register("iOSSimulatorDiscovery", IOSSimulatorDiscoveryMock);
@@ -1159,9 +1160,8 @@ describe("Merge Project XCConfig files", () => {
for (const release in [true, false]) {
await (iOSProjectService).mergeProjectXcconfigFiles(projectData);
- const destinationFilePaths = xcconfigService.getPluginsXcconfigFilePaths(
- projectRoot
- );
+ const destinationFilePaths =
+ xcconfigService.getPluginsXcconfigFilePaths(projectRoot);
_.each(destinationFilePaths, (destinationFilePath) => {
assert.isTrue(
@@ -1197,9 +1197,8 @@ describe("Merge Project XCConfig files", () => {
release,
});
- const destinationFilePaths = xcconfigService.getPluginsXcconfigFilePaths(
- projectRoot
- );
+ const destinationFilePaths =
+ xcconfigService.getPluginsXcconfigFilePaths(projectRoot);
_.each(destinationFilePaths, (destinationFilePath) => {
assert.isTrue(
@@ -1207,9 +1206,10 @@ describe("Merge Project XCConfig files", () => {
"Target build xcconfig is missing for release: " + release
);
const expected = {
- CODE_SIGN_ENTITLEMENTS: iOSEntitlementsService.getPlatformsEntitlementsRelativePath(
- projectData
- ),
+ CODE_SIGN_ENTITLEMENTS:
+ iOSEntitlementsService.getPlatformsEntitlementsRelativePath(
+ projectData
+ ),
};
assertPropertyValues(expected, destinationFilePath, testInjector);
});
@@ -1226,9 +1226,8 @@ describe("Merge Project XCConfig files", () => {
await (iOSProjectService).mergeProjectXcconfigFiles(projectData);
- const destinationFilePaths = xcconfigService.getPluginsXcconfigFilePaths(
- projectRoot
- );
+ const destinationFilePaths =
+ xcconfigService.getPluginsXcconfigFilePaths(projectRoot);
_.each(destinationFilePaths, (destinationFilePath) => {
assert.isTrue(
@@ -1248,9 +1247,8 @@ describe("Merge Project XCConfig files", () => {
it("creates empty plugins-.xcconfig in case there are no build.xcconfig in App_Resources and in plugins", async () => {
await (iOSProjectService).mergeProjectXcconfigFiles(projectData);
- const destinationFilePaths = xcconfigService.getPluginsXcconfigFilePaths(
- projectRoot
- );
+ const destinationFilePaths =
+ xcconfigService.getPluginsXcconfigFilePaths(projectRoot);
_.each(destinationFilePaths, (destinationFilePath) => {
assert.isTrue(
@@ -1279,7 +1277,8 @@ describe("handleNativeDependenciesChange", () => {
cocoapodsService.mergePodXcconfigFile = async () =>
executedCocoapodsMethods.push("podMerge");
cocoapodsService.applyPodfileFromAppResources = async () => ({});
- cocoapodsService.removeDuplicatedPlatfomsFromProjectPodFile = async () => ({});
+ cocoapodsService.removeDuplicatedPlatfomsFromProjectPodFile =
+ async () => ({});
cocoapodsService.getProjectPodfilePath = () => projectPodfilePath;
const fs = testInjector.resolve("fs");
diff --git a/test/package-installation-manager.ts b/test/package-installation-manager.ts
index 8fcbac47c1..ca2cbe409e 100644
--- a/test/package-installation-manager.ts
+++ b/test/package-installation-manager.ts
@@ -8,6 +8,7 @@ import * as NpmLib from "../lib/node-package-manager";
import * as YarnLib from "../lib/yarn-package-manager";
import * as Yarn2Lib from "../lib/yarn2-package-manager";
import * as PnpmLib from "../lib/pnpm-package-manager";
+import * as BunLib from "../lib/bun-package-manager";
import * as PackageManagerLib from "../lib/package-manager";
import * as PackageInstallationManagerLib from "../lib/package-installation-manager";
import * as OptionsLib from "../lib/options";
@@ -49,6 +50,7 @@ function createTestInjector(): IInjector {
testInjector.register("yarn", YarnLib.YarnPackageManager);
testInjector.register("yarn2", Yarn2Lib.Yarn2PackageManager);
testInjector.register("pnpm", PnpmLib.PnpmPackageManager);
+ testInjector.register("bun", BunLib.BunPackageManager);
testInjector.register("packageManager", PackageManagerLib.PackageManager);
testInjector.register("projectConfigService", ProjectConfigServiceStub);
testInjector.register(
@@ -114,130 +116,148 @@ describe("Npm installation manager tests", () => {
expectedResult: "1.4.0",
},
- "when there's only one available version and it is higher than match CLI's version": {
- versions: ["1.4.0"],
- packageLatestVersion: "1.4.0",
- cliVersion: "1.2.0",
- expectedResult: "1.4.0",
- },
+ "when there's only one available version and it is higher than match CLI's version":
+ {
+ versions: ["1.4.0"],
+ packageLatestVersion: "1.4.0",
+ cliVersion: "1.2.0",
+ expectedResult: "1.4.0",
+ },
- "when there's only one available version and it is lower than CLI's version": {
- versions: ["1.4.0"],
- packageLatestVersion: "1.4.0",
- cliVersion: "1.6.0",
- expectedResult: "1.4.0",
- },
+ "when there's only one available version and it is lower than CLI's version":
+ {
+ versions: ["1.4.0"],
+ packageLatestVersion: "1.4.0",
+ cliVersion: "1.6.0",
+ expectedResult: "1.4.0",
+ },
- "when there are multiple package versions and the latest one matches ~": {
- versions: ["1.2.0", "1.3.0", "1.3.1", "1.3.2", "1.3.3", "1.4.0"],
- packageLatestVersion: "1.3.3",
- cliVersion: "1.3.0",
- expectedResult: "1.3.3",
- },
+ "when there are multiple package versions and the latest one matches ~":
+ {
+ versions: ["1.2.0", "1.3.0", "1.3.1", "1.3.2", "1.3.3", "1.4.0"],
+ packageLatestVersion: "1.3.3",
+ cliVersion: "1.3.0",
+ expectedResult: "1.3.3",
+ },
- "when there are multiple package versions and the latest one matches ~ when there are newer matching versions but they are not under latest tag": {
- versions: ["1.2.0", "1.3.0", "1.3.1", "1.3.2", "1.3.3", "1.4.0"],
- packageLatestVersion: "1.3.2",
- cliVersion: "1.3.0",
- expectedResult: "1.3.2",
- },
+ "when there are multiple package versions and the latest one matches ~ when there are newer matching versions but they are not under latest tag":
+ {
+ versions: ["1.2.0", "1.3.0", "1.3.1", "1.3.2", "1.3.3", "1.4.0"],
+ packageLatestVersion: "1.3.2",
+ cliVersion: "1.3.0",
+ expectedResult: "1.3.2",
+ },
- "when there are multiple package versions and the latest one is lower than ~": {
- versions: ["1.2.0", "1.3.0", "1.3.1", "1.3.2", "1.3.3", "1.4.0"],
- packageLatestVersion: "1.4.0",
- cliVersion: "1.5.0",
- expectedResult: "1.4.0",
- },
+ "when there are multiple package versions and the latest one is lower than ~":
+ {
+ versions: ["1.2.0", "1.3.0", "1.3.1", "1.3.2", "1.3.3", "1.4.0"],
+ packageLatestVersion: "1.4.0",
+ cliVersion: "1.5.0",
+ expectedResult: "1.4.0",
+ },
- "when there are multiple package versions and there's beta version matching CLI's semver": {
- versions: ["1.2.0", "1.3.0", "1.3.1", "1.4.0", "1.5.0-2016-02-25-182"],
- packageLatestVersion: "1.4.0",
- cliVersion: "1.5.0",
- expectedResult: "1.4.0",
- },
+ "when there are multiple package versions and there's beta version matching CLI's semver":
+ {
+ versions: [
+ "1.2.0",
+ "1.3.0",
+ "1.3.1",
+ "1.4.0",
+ "1.5.0-2016-02-25-182",
+ ],
+ packageLatestVersion: "1.4.0",
+ cliVersion: "1.5.0",
+ expectedResult: "1.4.0",
+ },
- "when there are multiple package versions and package's latest version is greater than CLI's version": {
- versions: [
- "1.2.0",
- "1.3.0",
- "1.3.1",
- "1.4.0",
- "1.5.0-2016-02-25-182",
- "1.5.0",
- "1.6.0",
- ],
- packageLatestVersion: "1.6.0",
- cliVersion: "1.5.0",
- expectedResult: "1.5.0",
- },
+ "when there are multiple package versions and package's latest version is greater than CLI's version":
+ {
+ versions: [
+ "1.2.0",
+ "1.3.0",
+ "1.3.1",
+ "1.4.0",
+ "1.5.0-2016-02-25-182",
+ "1.5.0",
+ "1.6.0",
+ ],
+ packageLatestVersion: "1.6.0",
+ cliVersion: "1.5.0",
+ expectedResult: "1.5.0",
+ },
- "when there are multiple versions latest one does not match CLI's semver and other versions are not matching either": {
- versions: [
- "1.0.0",
- "1.0.1",
- "1.2.0",
- "1.3.1",
- "1.4.0",
- "1.5.0-2016-02-25-182",
- "1.5.0",
- ],
- packageLatestVersion: "1.0.0",
- cliVersion: "1.1.0",
- expectedResult: "1.0.0",
- },
+ "when there are multiple versions latest one does not match CLI's semver and other versions are not matching either":
+ {
+ versions: [
+ "1.0.0",
+ "1.0.1",
+ "1.2.0",
+ "1.3.1",
+ "1.4.0",
+ "1.5.0-2016-02-25-182",
+ "1.5.0",
+ ],
+ packageLatestVersion: "1.0.0",
+ cliVersion: "1.1.0",
+ expectedResult: "1.0.0",
+ },
- "when CLI's version is beta (has dash) latest matching beta version is returned": {
- versions: [
- "1.0.0",
- "1.0.1",
- "1.4.0",
- "1.5.0-2016-02-25-182",
- "1.5.0-2016-02-26-202",
- ],
- packageLatestVersion: "1.4.0",
- cliVersion: "1.5.0-182",
- expectedResult: "1.5.0-2016-02-26-202",
- },
+ "when CLI's version is beta (has dash) latest matching beta version is returned":
+ {
+ versions: [
+ "1.0.0",
+ "1.0.1",
+ "1.4.0",
+ "1.5.0-2016-02-25-182",
+ "1.5.0-2016-02-26-202",
+ ],
+ packageLatestVersion: "1.4.0",
+ cliVersion: "1.5.0-182",
+ expectedResult: "1.5.0-2016-02-26-202",
+ },
- "when CLI's version is beta (has dash) latest matching official version is returned when beta versions do not match": {
- versions: [
- "1.0.0",
- "1.0.1",
- "1.4.0",
- "1.5.0-2016-02-25-182",
- "1.5.0-2016-02-26-202",
- ],
- packageLatestVersion: "1.4.0",
- cliVersion: "1.6.0-2016-03-01-182",
- expectedResult: "1.4.0",
- },
+ "when CLI's version is beta (has dash) latest matching official version is returned when beta versions do not match":
+ {
+ versions: [
+ "1.0.0",
+ "1.0.1",
+ "1.4.0",
+ "1.5.0-2016-02-25-182",
+ "1.5.0-2016-02-26-202",
+ ],
+ packageLatestVersion: "1.4.0",
+ cliVersion: "1.6.0-2016-03-01-182",
+ expectedResult: "1.4.0",
+ },
- "when CLI's version is beta (has dash) latest matching official version is returned when beta versions do not match (when the prerelease of CLI is higher than prerelease version of runtime)": {
- versions: [
- "1.0.0",
- "1.0.1",
- "1.4.0",
- "1.6.0-2016-02-25-182",
- "1.6.0-2016-02-26-202",
- ],
- packageLatestVersion: "1.4.0",
- cliVersion: "1.6.0-2016-10-01-182",
- expectedResult: "1.4.0",
- },
- "When CLI Version has patch version larger than an existing package, should return max compliant package from the same major.minor version": {
- versions: [
- "1.0.0",
- "1.0.1",
- "1.4.0",
- "2.5.0",
- "2.5.1",
- "2.5.2",
- "3.0.0",
- ],
- packageLatestVersion: "3.0.0",
- cliVersion: "2.5.4",
- expectedResult: "2.5.2",
- },
+ "when CLI's version is beta (has dash) latest matching official version is returned when beta versions do not match (when the prerelease of CLI is higher than prerelease version of runtime)":
+ {
+ versions: [
+ "1.0.0",
+ "1.0.1",
+ "1.4.0",
+ "1.6.0-2016-02-25-182",
+ "1.6.0-2016-02-26-202",
+ ],
+ packageLatestVersion: "1.4.0",
+ cliVersion: "1.6.0-2016-10-01-182",
+ expectedResult: "1.4.0",
+ },
+ "When CLI Version has patch version larger than an existing package, should return max compliant package from the same major.minor version":
+ {
+ versions: [
+ "1.0.0",
+ "1.0.1",
+ "1.4.0",
+ "2.5.0",
+ "2.5.1",
+ "2.5.2",
+ "3.0.0",
+ ],
+ packageLatestVersion: "3.0.0",
+ cliVersion: "2.5.4",
+ expectedResult: "2.5.2",
+ },
"When reference version is specified as argument": {
versions: ["122.0.4", "123.0.0", "123.0.1", "123.1.0", "124.0.0"],
packageLatestVersion: "124.0.0",
@@ -268,10 +288,11 @@ describe("Npm installation manager tests", () => {
packageInstallationManager.getLatestVersion = (packageName: string) =>
Promise.resolve(currentTestData.packageLatestVersion);
- const actualLatestCompatibleVersion = await packageInstallationManager.getLatestCompatibleVersion(
- "",
- currentTestData.referenceVersion
- );
+ const actualLatestCompatibleVersion =
+ await packageInstallationManager.getLatestCompatibleVersion(
+ "",
+ currentTestData.referenceVersion
+ );
assert.equal(
actualLatestCompatibleVersion,
currentTestData.expectedResult
diff --git a/test/plugins-service.ts b/test/plugins-service.ts
index 3402286914..99d3aede71 100644
--- a/test/plugins-service.ts
+++ b/test/plugins-service.ts
@@ -6,6 +6,7 @@ import { NodePackageManager } from "../lib/node-package-manager";
import { YarnPackageManager } from "../lib/yarn-package-manager";
import { Yarn2PackageManager } from "../lib/yarn2-package-manager";
import { PnpmPackageManager } from "../lib/pnpm-package-manager";
+import { BunPackageManager } from "../lib/bun-package-manager";
import { ProjectData } from "../lib/project-data";
import { ChildProcess } from "../lib/common/child-process";
import { Options } from "../lib/options";
@@ -76,6 +77,7 @@ function createTestInjector() {
testInjector.register("yarn", YarnPackageManager);
testInjector.register("yarn2", Yarn2PackageManager);
testInjector.register("pnpm", PnpmPackageManager);
+ testInjector.register("bun", BunPackageManager);
testInjector.register("fs", FileSystem);
// const fileSystemStub = new stubs.FileSystemStub();
// fileSystemStub.exists = (fileName: string) => {
@@ -705,6 +707,7 @@ describe("Plugins service", () => {
testData.isPreparePluginNativeCodeCalled = true;
},
},
+ platformsData: {},
normalizedPlatformName: "iOS",
}),
});
diff --git a/test/project-changes-service.ts b/test/project-changes-service.ts
index afb7a42835..97784fdd31 100644
--- a/test/project-changes-service.ts
+++ b/test/project-changes-service.ts
@@ -45,6 +45,7 @@ class ProjectChangesServiceTest extends BaseServiceTest {
this.injector.register("logger", LoggerStub);
this.injector.register("hooksService", HooksServiceStub);
this.injector.register("nodeModulesDependenciesBuilder", {});
+ this.injector.register("options", {});
const fs = this.injector.resolve("fs");
fs.writeJson(path.join(this.projectDir, Constants.PACKAGE_JSON_FILE_NAME), {
@@ -124,9 +125,10 @@ describe("Project Changes Service Tests", () => {
describe("Get Prepare Info File Path", () => {
it("Gets the correct Prepare Info path for ios/android", () => {
for (const platform of ["ios", "android"]) {
- const actualPrepareInfoPath = serviceTest.projectChangesService.getPrepareInfoFilePath(
- serviceTest.getPlatformData(platform)
- );
+ const actualPrepareInfoPath =
+ serviceTest.projectChangesService.getPrepareInfoFilePath(
+ serviceTest.getPlatformData(platform)
+ );
const expectedPrepareInfoPath = path.join(
serviceTest.projectDir,
@@ -175,9 +177,10 @@ describe("Project Changes Service Tests", () => {
fs.writeJson(prepareInfoPath, expectedPrepareInfo);
// act
- const actualPrepareInfo = serviceTest.projectChangesService.getPrepareInfo(
- serviceTest.getPlatformData(platform)
- );
+ const actualPrepareInfo =
+ serviceTest.projectChangesService.getPrepareInfo(
+ serviceTest.getPlatformData(platform)
+ );
// assert
assert.deepStrictEqual(actualPrepareInfo, expectedPrepareInfo);
@@ -187,14 +190,15 @@ describe("Project Changes Service Tests", () => {
describe("Accumulates Changes From Project Services", () => {
it("accumulates changes from the project service", async () => {
- const iOSChanges = await serviceTest.projectChangesService.checkForChanges(
- serviceTest.getPlatformData("ios"),
- serviceTest.projectData,
- {
- provision: undefined,
- teamId: undefined,
- }
- );
+ const iOSChanges =
+ await serviceTest.projectChangesService.checkForChanges(
+ serviceTest.getPlatformData("ios"),
+ serviceTest.projectData,
+ {
+ provision: undefined,
+ teamId: undefined,
+ }
+ );
assert.isTrue(
!!iOSChanges.signingChanged,
"iOS signingChanged expected to be true"
@@ -214,9 +218,10 @@ describe("Project Changes Service Tests", () => {
}
);
- const actualPrepareInfo = serviceTest.projectChangesService.getPrepareInfo(
- serviceTest.getPlatformData(platform)
- );
+ const actualPrepareInfo =
+ serviceTest.projectChangesService.getPrepareInfo(
+ serviceTest.getPlatformData(platform)
+ );
assert.deepStrictEqual(actualPrepareInfo, {
nativePlatformStatus: Constants.NativePlatformStatus.requiresPrepare,
@@ -249,9 +254,10 @@ describe("Project Changes Service Tests", () => {
}
);
- const actualPrepareInfo = serviceTest.projectChangesService.getPrepareInfo(
- serviceTest.getPlatformData(platform)
- );
+ const actualPrepareInfo =
+ serviceTest.projectChangesService.getPrepareInfo(
+ serviceTest.getPlatformData(platform)
+ );
prepareInfo.nativePlatformStatus =
Constants.NativePlatformStatus.alreadyPrepared;
assert.deepStrictEqual(actualPrepareInfo, prepareInfo);
@@ -277,9 +283,10 @@ describe("Project Changes Service Tests", () => {
{ nativePlatformStatus: nativePlatformStatus }
);
- const actualPrepareInfo = serviceTest.projectChangesService.getPrepareInfo(
- serviceTest.getPlatformData(platform)
- );
+ const actualPrepareInfo =
+ serviceTest.projectChangesService.getPrepareInfo(
+ serviceTest.getPlatformData(platform)
+ );
assert.deepStrictEqual(actualPrepareInfo, {
nativePlatformStatus: nativePlatformStatus,
});
diff --git a/test/project-commands.ts b/test/project-commands.ts
index 4a3f8e245e..259c8185df 100644
--- a/test/project-commands.ts
+++ b/test/project-commands.ts
@@ -32,6 +32,10 @@ const expectedFlavorChoices = [
"Learn more at https://github.com/shirakaba/react-nativescript",
},
{ key: "Vue.js", description: "Learn more at https://nativescript.org/vue" },
+ {
+ key: "Solid",
+ description: "Learn more at https://www.solidjs.com",
+ },
{
key: "Svelte",
description: "Learn more at https://svelte-native.technology",
@@ -61,18 +65,61 @@ const templateChoices = {
key: "Tabs",
description: "An app with pre-built pages that uses tabs for navigation",
},
+ vision: {
+ description: "A visionOS app",
+ key: "visionOS",
+ },
+};
+// const expectedTemplateChoices = [
+// templateChoices.helloWorld,
+// templateChoices.sideDrawer,
+// templateChoices.tabs,
+// ];
+// const expectedTemplateChoicesVue = [
+// templateChoices.blank,
+// templateChoices.blankTypeScript,
+// templateChoices.sideDrawer,
+// templateChoices.tabs,
+// ];
+
+const expectedTemplateChoices: Record = {
+ [constants.JsFlavorName]: [
+ templateChoices.helloWorld,
+ templateChoices.sideDrawer,
+ templateChoices.tabs,
+ ],
+ [constants.TsFlavorName]: [
+ templateChoices.helloWorld,
+ templateChoices.sideDrawer,
+ templateChoices.tabs,
+ templateChoices.vision,
+ ],
+ [constants.NgFlavorName]: [
+ templateChoices.helloWorld,
+ templateChoices.sideDrawer,
+ templateChoices.tabs,
+ templateChoices.vision,
+ ],
+ [constants.VueFlavorName]: [
+ templateChoices.blank,
+ templateChoices.blankTypeScript,
+ templateChoices.sideDrawer,
+ templateChoices.tabs,
+ templateChoices.vision,
+ ],
+ [constants.ReactFlavorName]: [
+ templateChoices.helloWorld,
+ templateChoices.vision,
+ ],
+ [constants.SvelteFlavorName]: [
+ templateChoices.helloWorld,
+ templateChoices.vision,
+ ],
+ // [constants.SolidFlavorName]: [
+ // templateChoices.helloWorld,
+ // templateChoices.vision,
+ // ],
};
-const expectedTemplateChoices = [
- templateChoices.helloWorld,
- templateChoices.sideDrawer,
- templateChoices.tabs,
-];
-const expectedTemplateChoicesVue = [
- templateChoices.blank,
- templateChoices.blankTypeScript,
- templateChoices.sideDrawer,
- templateChoices.tabs,
-];
class ProjectServiceMock implements IProjectService {
async validateProjectName(opts: {
@@ -157,10 +204,12 @@ describe("Project commands tests", () => {
? "Finally"
: "Next, which template would you like to start from:";
answers[templateQuestion] = opts.templateAnswer;
+
+ if (opts.flavorAnswer in expectedTemplateChoices === false) {
+ throw new Error(`Unexpected flavorAnswer: ${opts.flavorAnswer}`);
+ }
questionChoices[templateQuestion] =
- opts.flavorAnswer === constants.VueFlavorName
- ? expectedTemplateChoicesVue
- : expectedTemplateChoices;
+ expectedTemplateChoices[opts.flavorAnswer];
}
prompterStub.expect({
diff --git a/test/services/extensibility-service.ts b/test/services/extensibility-service.ts
index 0a5067a798..1a4e0a424f 100644
--- a/test/services/extensibility-service.ts
+++ b/test/services/extensibility-service.ts
@@ -7,6 +7,7 @@ import { PackageManager } from "../../lib/package-manager";
import { YarnPackageManager } from "../../lib/yarn-package-manager";
import { Yarn2PackageManager } from "../../lib/yarn2-package-manager";
import { PnpmPackageManager } from "../../lib/pnpm-package-manager";
+import { BunPackageManager } from "../../lib/bun-package-manager";
import * as constants from "../../lib/constants";
import { ChildProcess } from "../../lib/common/child-process";
import { CommandsDelimiters } from "../../lib/common/constants";
@@ -78,6 +79,7 @@ describe("extensibilityService", () => {
testInjector.register("yarn", YarnPackageManager);
testInjector.register("yarn2", Yarn2PackageManager);
testInjector.register("pnpm", PnpmPackageManager);
+ testInjector.register("bun", BunPackageManager);
testInjector.register("settingsService", SettingsService);
testInjector.register("requireService", {
require: (pathToRequire: string): any => undefined,
@@ -89,9 +91,8 @@ describe("extensibilityService", () => {
testInjector: IInjector,
extensionName: string
): string => {
- const settingsService = testInjector.resolve(
- "settingsService"
- );
+ const settingsService =
+ testInjector.resolve("settingsService");
const profileDir = settingsService.getProfileDir();
return path.join(profileDir, "extensions", "node_modules", extensionName);
@@ -134,9 +135,8 @@ describe("extensibilityService", () => {
throw new Error(expectedErrorMessage);
};
- const extensibilityService: IExtensibilityService = testInjector.resolve(
- ExtensibilityService
- );
+ const extensibilityService: IExtensibilityService =
+ testInjector.resolve(ExtensibilityService);
await assert.isRejected(
extensibilityService.installExtension("extensionToInstall"),
expectedErrorMessage
@@ -153,9 +153,8 @@ describe("extensibilityService", () => {
throw new Error(expectedErrorMessage);
};
- const extensibilityService: IExtensibilityService = testInjector.resolve(
- ExtensibilityService
- );
+ const extensibilityService: IExtensibilityService =
+ testInjector.resolve(ExtensibilityService);
await assert.isRejected(
extensibilityService.installExtension("extensionToInstall"),
expectedErrorMessage
@@ -176,9 +175,8 @@ describe("extensibilityService", () => {
throw new Error(expectedErrorMessage);
};
- const extensibilityService: IExtensibilityService = testInjector.resolve(
- ExtensibilityService
- );
+ const extensibilityService: IExtensibilityService =
+ testInjector.resolve(ExtensibilityService);
await assert.isRejected(
extensibilityService.installExtension("extensionToInstall"),
expectedErrorMessage
@@ -210,9 +208,8 @@ describe("extensibilityService", () => {
return { name: userSpecifiedValue };
};
- const extensibilityService: IExtensibilityService = testInjector.resolve(
- ExtensibilityService
- );
+ const extensibilityService: IExtensibilityService =
+ testInjector.resolve(ExtensibilityService);
await extensibilityService.installExtension(userSpecifiedValue);
return argsPassedToNpmInstall;
@@ -222,9 +219,10 @@ describe("extensibilityService", () => {
userSpecifiedValue: string,
expectedValue: string
): Promise => {
- const argsPassedToNpmInstall = await getArgsPassedToNpmInstallDuringInstallExtensionCall(
- userSpecifiedValue
- );
+ const argsPassedToNpmInstall =
+ await getArgsPassedToNpmInstallDuringInstallExtensionCall(
+ userSpecifiedValue
+ );
assert.deepStrictEqual(
argsPassedToNpmInstall.packageName,
expectedValue
@@ -249,9 +247,10 @@ describe("extensibilityService", () => {
it("passes save and save-exact options to npm install", async () => {
const extensionName = "extension1";
- const argsPassedToNpmInstall = await getArgsPassedToNpmInstallDuringInstallExtensionCall(
- extensionName
- );
+ const argsPassedToNpmInstall =
+ await getArgsPassedToNpmInstallDuringInstallExtensionCall(
+ extensionName
+ );
const expectedNpmConfg: any = { save: true };
expectedNpmConfg["save-exact"] = true;
assert.deepStrictEqual(argsPassedToNpmInstall.config, expectedNpmConfg);
@@ -260,17 +259,17 @@ describe("extensibilityService", () => {
it("passes full path to extensions dir for installation", async () => {
const extensionName = "extension1";
const testInjector = getTestInjector();
- const settingsService: ISettingsService = testInjector.resolve(
- "settingsService"
- );
+ const settingsService: ISettingsService =
+ testInjector.resolve("settingsService");
const profileDir = "my-profile-dir";
settingsService.getProfileDir = () => profileDir;
const expectedDirForInstallation = path.join(profileDir, "extensions");
- const argsPassedToNpmInstall = await getArgsPassedToNpmInstallDuringInstallExtensionCall(
- extensionName,
- testInjector
- );
+ const argsPassedToNpmInstall =
+ await getArgsPassedToNpmInstallDuringInstallExtensionCall(
+ extensionName,
+ testInjector
+ );
assert.deepStrictEqual(
argsPassedToNpmInstall.pathToSave,
expectedDirForInstallation
@@ -297,9 +296,8 @@ describe("extensibilityService", () => {
config?: any
): Promise => ({ name: extensionName, version: "1.0.0" });
- const extensibilityService: IExtensibilityService = testInjector.resolve(
- ExtensibilityService
- );
+ const extensibilityService: IExtensibilityService =
+ testInjector.resolve(ExtensibilityService);
const actualResult = await extensibilityService.installExtension(
extensionName
);
@@ -346,9 +344,8 @@ describe("extensibilityService", () => {
})
);
- const extensibilityService: IExtensibilityService = testInjector.resolve(
- ExtensibilityService
- );
+ const extensibilityService: IExtensibilityService =
+ testInjector.resolve(ExtensibilityService);
const actualResult = await Promise.all(
extensibilityService.loadExtensions()
);
@@ -404,9 +401,8 @@ describe("extensibilityService", () => {
})
);
- const extensibilityService: IExtensibilityService = testInjector.resolve(
- ExtensibilityService
- );
+ const extensibilityService: IExtensibilityService =
+ testInjector.resolve(ExtensibilityService);
const actualResult = await Promise.all(
extensibilityService.loadExtensions()
);
@@ -430,9 +426,8 @@ describe("extensibilityService", () => {
mockFsReadJson(testInjector, extensionNames);
- const requireService: IRequireService = testInjector.resolve(
- "requireService"
- );
+ const requireService: IRequireService =
+ testInjector.resolve("requireService");
requireService.require = (module: string) => {
if (path.basename(module) === extensionNames[0]) {
throw new Error("Unable to load module.");
@@ -454,9 +449,8 @@ describe("extensibilityService", () => {
expectedResults[0] = new Error(
"Unable to load extension extension1. You will not be able to use the functionality that it adds. Error: Unable to load module."
);
- const extensibilityService: IExtensibilityService = testInjector.resolve(
- ExtensibilityService
- );
+ const extensibilityService: IExtensibilityService =
+ testInjector.resolve(ExtensibilityService);
const promises = extensibilityService.loadExtensions();
assert.deepStrictEqual(promises.length, extensionNames.length);
@@ -495,9 +489,8 @@ describe("extensibilityService", () => {
throw new Error(expectedErrorMessage);
};
- const extensibilityService: IExtensibilityService = testInjector.resolve(
- ExtensibilityService
- );
+ const extensibilityService: IExtensibilityService =
+ testInjector.resolve(ExtensibilityService);
const promises = extensibilityService.loadExtensions();
for (let index = 0; index < promises.length; index++) {
@@ -561,9 +554,8 @@ describe("extensibilityService", () => {
throw new Error(expectedErrorMessage);
};
- const extensibilityService: IExtensibilityService = testInjector.resolve(
- ExtensibilityService
- );
+ const extensibilityService: IExtensibilityService =
+ testInjector.resolve(ExtensibilityService);
const promises = extensibilityService.loadExtensions();
for (let index = 0; index < promises.length; index++) {
@@ -604,9 +596,8 @@ describe("extensibilityService", () => {
throw new Error(expectedErrorMessage);
};
- const extensibilityService: IExtensibilityService = testInjector.resolve(
- ExtensibilityService
- );
+ const extensibilityService: IExtensibilityService =
+ testInjector.resolve(ExtensibilityService);
const promises = extensibilityService.loadExtensions();
assert.deepStrictEqual(promises.length, 0);
@@ -621,9 +612,8 @@ describe("extensibilityService", () => {
throw new Error(expectedErrorMessage);
};
- const extensibilityService: IExtensibilityService = testInjector.resolve(
- ExtensibilityService
- );
+ const extensibilityService: IExtensibilityService =
+ testInjector.resolve(ExtensibilityService);
const promises = extensibilityService.loadExtensions();
assert.deepStrictEqual(promises.length, 0);
@@ -642,9 +632,8 @@ describe("extensibilityService", () => {
};
const expectedResults: IExtensionData[] = [];
- const extensibilityService: IExtensibilityService = testInjector.resolve(
- ExtensibilityService
- );
+ const extensibilityService: IExtensibilityService =
+ testInjector.resolve(ExtensibilityService);
const actualResult = await Promise.all(
extensibilityService.loadExtensions()
);
@@ -672,9 +661,8 @@ describe("extensibilityService", () => {
};
const expectedResults: IExtensionData[] = [];
- const extensibilityService: IExtensibilityService = testInjector.resolve(
- ExtensibilityService
- );
+ const extensibilityService: IExtensibilityService =
+ testInjector.resolve(ExtensibilityService);
const actualResult = await Promise.all(
extensibilityService.loadExtensions()
);
@@ -698,9 +686,8 @@ describe("extensibilityService", () => {
throw new Error(expectedErrorMessage);
};
- const extensibilityService: IExtensibilityService = testInjector.resolve(
- ExtensibilityService
- );
+ const extensibilityService: IExtensibilityService =
+ testInjector.resolve(ExtensibilityService);
await assert.isRejected(
extensibilityService.uninstallExtension("extensionToInstall"),
expectedErrorMessage
@@ -717,9 +704,8 @@ describe("extensibilityService", () => {
throw new Error(expectedErrorMessage);
};
- const extensibilityService: IExtensibilityService = testInjector.resolve(
- ExtensibilityService
- );
+ const extensibilityService: IExtensibilityService =
+ testInjector.resolve(ExtensibilityService);
await assert.isRejected(
extensibilityService.uninstallExtension("extensionToInstall"),
expectedErrorMessage
@@ -740,9 +726,8 @@ describe("extensibilityService", () => {
throw new Error(expectedErrorMessage);
};
- const extensibilityService: IExtensibilityService = testInjector.resolve(
- ExtensibilityService
- );
+ const extensibilityService: IExtensibilityService =
+ testInjector.resolve(ExtensibilityService);
await assert.isRejected(
extensibilityService.uninstallExtension("extensionToInstall"),
expectedErrorMessage
@@ -774,9 +759,8 @@ describe("extensibilityService", () => {
return [userSpecifiedValue];
};
- const extensibilityService: IExtensibilityService = testInjector.resolve(
- ExtensibilityService
- );
+ const extensibilityService: IExtensibilityService =
+ testInjector.resolve(ExtensibilityService);
await extensibilityService.uninstallExtension(userSpecifiedValue);
return argsPassedToNpmInstall;
@@ -786,9 +770,10 @@ describe("extensibilityService", () => {
userSpecifiedValue: string,
expectedValue: string
): Promise => {
- const argsPassedToNpmInstall = await getArgsPassedToNpmUninstallDuringUninstallExtensionCall(
- userSpecifiedValue
- );
+ const argsPassedToNpmInstall =
+ await getArgsPassedToNpmUninstallDuringUninstallExtensionCall(
+ userSpecifiedValue
+ );
assert.deepStrictEqual(
argsPassedToNpmInstall.packageName,
expectedValue
@@ -811,9 +796,10 @@ describe("extensibilityService", () => {
it("passes save option to npm uninstall", async () => {
const extensionName = "extension1";
- const argsPassedToNpmUninstall = await getArgsPassedToNpmUninstallDuringUninstallExtensionCall(
- extensionName
- );
+ const argsPassedToNpmUninstall =
+ await getArgsPassedToNpmUninstallDuringUninstallExtensionCall(
+ extensionName
+ );
const expectedNpmConfg: any = { save: true };
assert.deepStrictEqual(
argsPassedToNpmUninstall.config,
@@ -824,17 +810,17 @@ describe("extensibilityService", () => {
it("passes full path to extensions dir for uninstallation", async () => {
const extensionName = "extension1";
const testInjector = getTestInjector();
- const settingsService: ISettingsService = testInjector.resolve(
- "settingsService"
- );
+ const settingsService: ISettingsService =
+ testInjector.resolve("settingsService");
const profileDir = "my-profile-dir";
settingsService.getProfileDir = () => profileDir;
const expectedDirForUninstall = path.join(profileDir, "extensions");
- const argsPassedToNpmUninstall = await getArgsPassedToNpmUninstallDuringUninstallExtensionCall(
- extensionName,
- testInjector
- );
+ const argsPassedToNpmUninstall =
+ await getArgsPassedToNpmUninstallDuringUninstallExtensionCall(
+ extensionName,
+ testInjector
+ );
assert.deepStrictEqual(
argsPassedToNpmUninstall.pathToSave,
expectedDirForUninstall
@@ -858,9 +844,8 @@ describe("extensibilityService", () => {
p?: string
): Promise => [extensionName];
- const extensibilityService: IExtensibilityService = testInjector.resolve(
- ExtensibilityService
- );
+ const extensibilityService: IExtensibilityService =
+ testInjector.resolve(ExtensibilityService);
await extensibilityService.uninstallExtension(extensionName);
});
});
@@ -875,9 +860,8 @@ describe("extensibilityService", () => {
throw new Error(expectedErrorMessage);
};
- const extensibilityService: IExtensibilityService = testInjector.resolve(
- ExtensibilityService
- );
+ const extensibilityService: IExtensibilityService =
+ testInjector.resolve(ExtensibilityService);
assert.throws(
() => extensibilityService.getInstalledExtensions(),
expectedErrorMessage
@@ -889,9 +873,8 @@ describe("extensibilityService", () => {
const fs: IFileSystem = testInjector.resolve("fs");
fs.exists = (pathToCheck: string) => false;
- const extensibilityService: IExtensibilityService = testInjector.resolve(
- ExtensibilityService
- );
+ const extensibilityService: IExtensibilityService =
+ testInjector.resolve(ExtensibilityService);
assert.isNull(extensibilityService.getInstalledExtensions());
});
@@ -903,9 +886,8 @@ describe("extensibilityService", () => {
return {};
};
- const extensibilityService: IExtensibilityService = testInjector.resolve(
- ExtensibilityService
- );
+ const extensibilityService: IExtensibilityService =
+ testInjector.resolve(ExtensibilityService);
assert.isUndefined(extensibilityService.getInstalledExtensions());
});
@@ -923,9 +905,8 @@ describe("extensibilityService", () => {
return { dependencies };
};
- const extensibilityService: IExtensibilityService = testInjector.resolve(
- ExtensibilityService
- );
+ const extensibilityService: IExtensibilityService =
+ testInjector.resolve(ExtensibilityService);
assert.deepStrictEqual(
extensibilityService.getInstalledExtensions(),
dependencies
@@ -952,16 +933,14 @@ describe("extensibilityService", () => {
config?: any
): Promise => ({ name: extensionName });
- const requireService: IRequireService = testInjector.resolve(
- "requireService"
- );
+ const requireService: IRequireService =
+ testInjector.resolve("requireService");
requireService.require = (pathToRequire: string) => {
throw new Error(expectedErrorMessage);
};
- const extensibilityService: IExtensibilityService = testInjector.resolve(
- ExtensibilityService
- );
+ const extensibilityService: IExtensibilityService =
+ testInjector.resolve(ExtensibilityService);
let isErrorRaised = false;
try {
await extensibilityService.loadExtension(extensionName);
@@ -1015,8 +994,7 @@ describe("extensibilityService", () => {
},
},
{
- name:
- "returns correct data when user enters exact hierarchical command name",
+ name: "returns correct data when user enters exact hierarchical command name",
inputStrings: ["hierarchical", "command"],
extensionsDefinitions: [
{
@@ -1059,8 +1037,7 @@ describe("extensibilityService", () => {
expectedResult: null,
},
{
- name:
- "returns correct data when user enters hierarchical command and args for this command",
+ name: "returns correct data when user enters hierarchical command and args for this command",
inputStrings: ["valid", "command", "with", "lots", "of", "params"],
extensionsDefinitions: [
{
@@ -1089,8 +1066,7 @@ describe("extensibilityService", () => {
},
},
{
- name:
- "returns correct data when user enters the default value of hierarchical command",
+ name: "returns correct data when user enters the default value of hierarchical command",
inputStrings: ["valid", "and", "lots", "of", "params"],
extensionsDefinitions: [
{
@@ -1105,8 +1081,7 @@ describe("extensibilityService", () => {
},
},
{
- name:
- "returns correct data when user enters the full default value of hierarchical command",
+ name: "returns correct data when user enters the full default value of hierarchical command",
inputStrings: ["valid", "command", "and", "lots", "of", "params"],
extensionsDefinitions: [
{
@@ -1121,8 +1096,7 @@ describe("extensibilityService", () => {
},
},
{
- name:
- "returns correct data when user enters the default value of multilevel hierarchical command",
+ name: "returns correct data when user enters the default value of multilevel hierarchical command",
inputStrings: [
"valid",
"multilevel",
@@ -1151,8 +1125,7 @@ describe("extensibilityService", () => {
},
},
{
- name:
- "returns correct data when user enters the full default value of multilevel hierarchical command",
+ name: "returns correct data when user enters the full default value of multilevel hierarchical command",
inputStrings: [
"valid",
"multilevel",
@@ -1259,9 +1232,8 @@ describe("extensibilityService", () => {
return result;
};
- const extensibilityService = testInjector.resolve<
- IExtensibilityService
- >(ExtensibilityService);
+ const extensibilityService =
+ testInjector.resolve(ExtensibilityService);
const inputData = {
inputStrings: testCase.inputStrings,
commandDelimiter: CommandsDelimiters.HierarchicalCommand,
@@ -1269,9 +1241,10 @@ describe("extensibilityService", () => {
CommandsDelimiters.DefaultHierarchicalCommand,
};
- const actualExtensionName = await extensibilityService.getExtensionNameWhereCommandIsRegistered(
- inputData
- );
+ const actualExtensionName =
+ await extensibilityService.getExtensionNameWhereCommandIsRegistered(
+ inputData
+ );
assert.deepStrictEqual(actualExtensionName, testCase.expectedResult);
});
});
@@ -1292,12 +1265,12 @@ describe("extensibilityService", () => {
isGetRegistryPackageDataCalled = true;
};
- const extensibilityService = testInjector.resolve(
- ExtensibilityService
- );
- const actualExtensionName = await extensibilityService.getExtensionNameWhereCommandIsRegistered(
- null
- );
+ const extensibilityService =
+ testInjector.resolve(ExtensibilityService);
+ const actualExtensionName =
+ await extensibilityService.getExtensionNameWhereCommandIsRegistered(
+ null
+ );
assert.deepStrictEqual(actualExtensionName, null);
assert.isFalse(
isGetRegistryPackageDataCalled,
diff --git a/test/services/ios/xcodebuild-args-service.ts b/test/services/ios/xcodebuild-args-service.ts
index 0d37020406..1dea63bb8b 100644
--- a/test/services/ios/xcodebuild-args-service.ts
+++ b/test/services/ios/xcodebuild-args-service.ts
@@ -5,6 +5,7 @@ import * as path from "path";
import * as _ from "lodash";
import { assert } from "chai";
import { IInjector } from "../../../lib/common/definitions/yok";
+import { XcconfigService } from "../../../lib/services/xcconfig-service";
function createTestInjector(data: {
logLevel: string;
@@ -19,11 +20,14 @@ function createTestInjector(data: {
});
injector.register("fs", {
exists: () => data.hasProjectWorkspace,
+ readText: () => "",
});
injector.register("logger", {
getLevel: () => data.logLevel,
});
injector.register("xcodebuildArgsService", XcodebuildArgsService);
+ injector.register("childProcess", {});
+ injector.register("xcconfigService", XcconfigService);
injector.register("iOSWatchAppService", {
hasWatchApp: () => false,
});
@@ -32,6 +36,8 @@ function createTestInjector(data: {
}
const projectRoot = "path/to/my/app/folder/platforms/ios";
+const normalizedPlatformName = "iOS";
+const appResourcesDirectoryPath = "App_Resources";
const projectName = "myApp";
const buildOutputPath = path.join(projectRoot, projectName, "archive");
@@ -43,18 +49,17 @@ function getCommonArgs() {
}
function getXcodeProjectArgs(data?: { hasProjectWorkspace: boolean }) {
+ const extraArgs = ["-scheme", projectName, "-skipPackagePluginValidation"];
return data && data.hasProjectWorkspace
? [
"-workspace",
path.join(projectRoot, `${projectName}.xcworkspace`),
- "-scheme",
- projectName,
+ ...extraArgs,
]
: [
"-project",
path.join(projectRoot, `${projectName}.xcodeproj`),
- "-scheme",
- projectName,
+ ...extraArgs,
];
}
@@ -71,41 +76,47 @@ describe("xcodebuildArgsService", () => {
_.each([true, false], (hasProjectWorkspace) => {
_.each(["INFO", "TRACE"], (logLevel) => {
_.each(["Debug", "Release"], (configuration) => {
- it(`should return correct args when workspace is ${hasProjectWorkspace} with ${logLevel} log level and ${configuration} configuration`, async () => {
- const injector = createTestInjector({
- logLevel,
- hasProjectWorkspace,
- });
+ _.each(["iOS", "visionOS"], (platform) => {
+ it(`should return correct args when workspace is ${hasProjectWorkspace} with ${logLevel} log level and ${configuration} configuration (platform = ${platform})`, async () => {
+ const injector = createTestInjector({
+ logLevel,
+ hasProjectWorkspace,
+ });
- const buildConfig = {
- buildForDevice: false,
- release: configuration === "Release",
- };
- const xcodebuildArgsService = injector.resolve(
- "xcodebuildArgsService"
- );
- const actualArgs = await xcodebuildArgsService.getBuildForSimulatorArgs(
- { projectRoot },
- { projectName },
- buildConfig
- );
+ const buildConfig = {
+ buildForDevice: false,
+ release: configuration === "Release",
+ platform,
+ };
+ const xcodebuildArgsService = injector.resolve(
+ "xcodebuildArgsService"
+ );
+ const actualArgs =
+ await xcodebuildArgsService.getBuildForSimulatorArgs(
+ { projectRoot, normalizedPlatformName },
+ { projectName, appResourcesDirectoryPath },
+ buildConfig
+ );
- const expectedArgs = [
- "ONLY_ACTIVE_ARCH=NO",
- "CODE_SIGN_IDENTITY=",
- "-destination",
- "generic/platform=iOS Simulator",
- "build",
- "-configuration",
- configuration,
- "-sdk",
- "iphonesimulator",
- ]
- .concat(getCommonArgs())
- .concat(getBuildLoggingArgs(logLevel))
- .concat(getXcodeProjectArgs({ hasProjectWorkspace }));
+ const expectedArgs = [
+ `ONLY_ACTIVE_ARCH=${platform === "visionOS" ? "YES" : "NO"}`,
+ "CODE_SIGN_IDENTITY=",
+ "-destination",
+ platform === "visionOS"
+ ? "platform=visionOS Simulator"
+ : "generic/platform=iOS Simulator",
+ "build",
+ "-configuration",
+ configuration,
+ "-sdk",
+ platform === "visionOS" ? "xrsimulator" : "iphonesimulator",
+ ]
+ .concat(getCommonArgs())
+ .concat(getBuildLoggingArgs(logLevel))
+ .concat(getXcodeProjectArgs({ hasProjectWorkspace }));
- assert.deepStrictEqual(actualArgs, expectedArgs);
+ assert.deepStrictEqual(actualArgs, expectedArgs);
+ });
});
});
});
@@ -114,8 +125,7 @@ describe("xcodebuildArgsService", () => {
describe("getBuildForDeviceArgs", () => {
const testCases = [
{
- name:
- "should return correct args when there are more than one connected device",
+ name: "should return correct args when there are more than one connected device",
connectedDevices: [
{ deviceInfo: { activeArchitecture: "arm64" } },
{ deviceInfo: { activeArchitecture: "armv7" } },
@@ -125,8 +135,7 @@ describe("xcodebuildArgsService", () => {
),
},
{
- name:
- "should return correct args when there is only one connected device",
+ name: "should return correct args when there is only one connected device",
connectedDevices: [{ deviceInfo: { activeArchitecture: "arm64" } }],
expectedArgs: ["-sdk", "iphoneos"].concat(getCommonArgs()),
},
@@ -150,21 +159,26 @@ describe("xcodebuildArgsService", () => {
const platformData = {
projectRoot,
+ normalizedPlatformName,
getBuildOutputPath: () => buildOutputPath,
};
- const projectData = { projectName };
+ const projectData = {
+ projectName,
+ appResourcesDirectoryPath,
+ };
const buildConfig = {
buildForDevice: true,
release: configuration === "Release",
+ platform: "ios",
};
- const xcodebuildArgsService: IXcodebuildArgsService = injector.resolve(
- "xcodebuildArgsService"
- );
- const actualArgs = await xcodebuildArgsService.getBuildForDeviceArgs(
- platformData,
- projectData,
- buildConfig
- );
+ const xcodebuildArgsService: IXcodebuildArgsService =
+ injector.resolve("xcodebuildArgsService");
+ const actualArgs =
+ await xcodebuildArgsService.getBuildForDeviceArgs(
+ platformData,
+ projectData,
+ buildConfig
+ );
const expectedArgs = [
"-destination",
diff --git a/test/stubs.ts b/test/stubs.ts
index 82aafdd215..39f1f012b5 100644
--- a/test/stubs.ts
+++ b/test/stubs.ts
@@ -387,7 +387,8 @@ export class ErrorsStub implements IErrors {
}
export class PackageInstallationManagerStub
- implements IPackageInstallationManager {
+ implements IPackageInstallationManager
+{
clearInspectorCache(): void {
return undefined;
}
@@ -733,7 +734,8 @@ export class ProjectDataStub implements IProjectData {
}
export class AndroidPluginBuildServiceStub
- implements IAndroidPluginBuildService {
+ implements IAndroidPluginBuildService
+{
buildAar(options: IPluginBuildOptions): Promise {
return Promise.resolve(true);
}
@@ -745,7 +747,8 @@ export class AndroidPluginBuildServiceStub
export class PlatformProjectServiceStub
extends EventEmitter
- implements IPlatformProjectService {
+ implements IPlatformProjectService
+{
constructor(private platform: string) {
super();
}
@@ -888,7 +891,8 @@ export class PlatformProjectServiceStub
export class NativeProjectDataStub
extends EventEmitter
- implements IPlatformsDataService {
+ implements IPlatformsDataService
+{
public platformNames: string[];
public getPlatformData(
@@ -1126,7 +1130,8 @@ function unexpected(msg: string): Error {
export class DebugServiceStub
extends EventEmitter
- implements IDeviceDebugService {
+ implements IDeviceDebugService
+{
public async debug(): Promise {
return;
}
@@ -1140,7 +1145,8 @@ export class DebugServiceStub
export class LiveSyncServiceStub
extends EventEmitter
- implements ILiveSyncService {
+ implements ILiveSyncService
+{
public async liveSync(
deviceDescriptors: ILiveSyncDeviceDescriptor[],
liveSyncData: ILiveSyncInfo
@@ -1308,7 +1314,8 @@ export class CommandsService implements ICommandsService {
}
export class AndroidResourcesMigrationServiceStub
- implements IAndroidResourcesMigrationService {
+ implements IAndroidResourcesMigrationService
+{
canMigrate(platformString: string): boolean {
return true;
}
@@ -1323,7 +1330,8 @@ export class AndroidResourcesMigrationServiceStub
}
export class AndroidBundleValidatorHelper
- implements IAndroidBundleValidatorHelper {
+ implements IAndroidBundleValidatorHelper
+{
validateDeviceApiLevel(device: Mobile.IDevice, buildData: IBuildData): void {
return;
}