From 18bb9fa4b72a6deb5438a15fe42960eab9e5206f Mon Sep 17 00:00:00 2001 From: hawkgs Date: Wed, 25 Feb 2026 14:22:36 +0200 Subject: [PATCH 1/2] refactor(@schematics/angular): remove protractor e2e schematic Protractor is no longer supported and has been deprecated since v19. --- packages/schematics/angular/collection.json | 6 - .../e2e/files/protractor.conf.js.template | 37 ------ .../e2e/files/src/app.e2e-spec.ts.template | 23 ---- .../angular/e2e/files/src/app.po.ts.template | 11 -- .../angular/e2e/files/tsconfig.json.template | 14 --- packages/schematics/angular/e2e/index.ts | 106 ------------------ packages/schematics/angular/e2e/index_spec.ts | 98 ---------------- packages/schematics/angular/e2e/schema.json | 20 ---- .../utility/latest-versions/package.json | 1 - .../angular/utility/workspace-models.ts | 4 - 10 files changed, 320 deletions(-) delete mode 100644 packages/schematics/angular/e2e/files/protractor.conf.js.template delete mode 100644 packages/schematics/angular/e2e/files/src/app.e2e-spec.ts.template delete mode 100644 packages/schematics/angular/e2e/files/src/app.po.ts.template delete mode 100644 packages/schematics/angular/e2e/files/tsconfig.json.template delete mode 100644 packages/schematics/angular/e2e/index.ts delete mode 100644 packages/schematics/angular/e2e/index_spec.ts delete mode 100644 packages/schematics/angular/e2e/schema.json diff --git a/packages/schematics/angular/collection.json b/packages/schematics/angular/collection.json index c275bc40144f..29b361ccafbb 100755 --- a/packages/schematics/angular/collection.json +++ b/packages/schematics/angular/collection.json @@ -23,12 +23,6 @@ "schema": "./application/schema.json", "description": "Create an Angular application." }, - "private-e2e": { - "factory": "./e2e", - "schema": "./e2e/schema.json", - "description": "PRIVATE API - Do not use.", - "hidden": true - }, "class": { "aliases": ["cl"], "factory": "./class", diff --git a/packages/schematics/angular/e2e/files/protractor.conf.js.template b/packages/schematics/angular/e2e/files/protractor.conf.js.template deleted file mode 100644 index 361e7f0cdfa1..000000000000 --- a/packages/schematics/angular/e2e/files/protractor.conf.js.template +++ /dev/null @@ -1,37 +0,0 @@ -// @ts-check -// Protractor configuration file, see link for more information -// https://github.com/angular/protractor/blob/master/lib/config.ts - -const { SpecReporter, StacktraceOption } = require('jasmine-spec-reporter'); - -/** - * @type { import("protractor").Config } - */ -exports.config = { - allScriptsTimeout: 11000, - specs: [ - './src/**/*.e2e-spec.ts' - ], - capabilities: { - browserName: 'chrome' - }, - directConnect: true, - SELENIUM_PROMISE_MANAGER: false, - baseUrl: 'http://localhost:4200/', - framework: 'jasmine', - jasmineNodeOpts: { - showColors: true, - defaultTimeoutInterval: 30000, - print: function() {} - }, - onPrepare() { - require('ts-node').register({ - project: require('path').join(__dirname, './tsconfig.json') - }); - jasmine.getEnv().addReporter(new SpecReporter({ - spec: { - displayStacktrace: StacktraceOption.PRETTY - } - })); - } -}; \ No newline at end of file diff --git a/packages/schematics/angular/e2e/files/src/app.e2e-spec.ts.template b/packages/schematics/angular/e2e/files/src/app.e2e-spec.ts.template deleted file mode 100644 index fdbe66b2ab46..000000000000 --- a/packages/schematics/angular/e2e/files/src/app.e2e-spec.ts.template +++ /dev/null @@ -1,23 +0,0 @@ -import { browser, logging } from 'protractor'; -import { AppPage } from './app.po'; - -describe('workspace-project App', () => { - let page: AppPage; - - beforeEach(() => { - page = new AppPage(); - }); - - it('should display welcome message', async () => { - await page.navigateTo(); - expect(await page.getTitleText()).toEqual('Hello, <%= relatedAppName %>'); - }); - - afterEach(async () => { - // Assert that there are no errors emitted from the browser - const logs = await browser.manage().logs().get(logging.Type.BROWSER); - expect(logs).not.toContain(jasmine.objectContaining({ - level: logging.Level.SEVERE, - } as logging.Entry)); - }); -}); diff --git a/packages/schematics/angular/e2e/files/src/app.po.ts.template b/packages/schematics/angular/e2e/files/src/app.po.ts.template deleted file mode 100644 index 602087cca38f..000000000000 --- a/packages/schematics/angular/e2e/files/src/app.po.ts.template +++ /dev/null @@ -1,11 +0,0 @@ -import { browser, by, element } from 'protractor'; - -export class AppPage { - async navigateTo(): Promise { - return browser.get(browser.baseUrl); - } - - async getTitleText(): Promise { - return element(by.css('h1')).getText(); - } -} diff --git a/packages/schematics/angular/e2e/files/tsconfig.json.template b/packages/schematics/angular/e2e/files/tsconfig.json.template deleted file mode 100644 index 1bc14be7a84c..000000000000 --- a/packages/schematics/angular/e2e/files/tsconfig.json.template +++ /dev/null @@ -1,14 +0,0 @@ -/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ -/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ -{ - "extends": "<%= relativePathToWorkspaceRoot %>/tsconfig.json", - "compilerOptions": { - "outDir": "<%= relativePathToWorkspaceRoot %>/out-tsc/e2e", - "module": "commonjs", - "target": "es2019", - "types": [ - "jasmine", - "node" - ] - } -} diff --git a/packages/schematics/angular/e2e/index.ts b/packages/schematics/angular/e2e/index.ts deleted file mode 100644 index 0fba1363028e..000000000000 --- a/packages/schematics/angular/e2e/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.dev/license - */ - -import { - Rule, - SchematicsException, - apply, - applyTemplates, - chain, - mergeWith, - move, - strings, - url, -} from '@angular-devkit/schematics'; -import { posix as path } from 'node:path'; -import { DependencyType, ExistingBehavior, addDependency } from '../utility/dependency'; -import { JSONFile } from '../utility/json-file'; -import { latestVersions } from '../utility/latest-versions'; -import { addRootProvider } from '../utility/standalone'; -import { updateWorkspace } from '../utility/workspace'; -import { Builders as AngularBuilder } from '../utility/workspace-models'; -import { Schema as E2eOptions } from './schema'; - -/** - * The list of development dependencies used by the E2E protractor-based builder. - * The versions are sourced from the latest versions `../utility/latest-versions/package.json` - * file which is automatically updated via renovate. - */ -const E2E_DEV_DEPENDENCIES = Object.freeze([ - 'protractor', - 'jasmine-spec-reporter', - 'ts-node', - '@types/node', -]); - -function addScriptsToPackageJson(): Rule { - return (host) => { - const pkgJson = new JSONFile(host, 'package.json'); - const e2eScriptPath = ['scripts', 'e2e']; - - if (!pkgJson.get(e2eScriptPath)) { - pkgJson.modify(e2eScriptPath, 'ng e2e', false); - } - }; -} - -export default function (options: E2eOptions): Rule { - const { relatedAppName } = options; - - return updateWorkspace((workspace) => { - const project = workspace.projects.get(relatedAppName); - - if (!project) { - throw new SchematicsException(`Project name "${relatedAppName}" doesn't not exist.`); - } - - const e2eRootPath = path.join(project.root, 'e2e'); - - project.targets.add({ - name: 'e2e', - builder: AngularBuilder.Protractor, - defaultConfiguration: 'development', - options: { - protractorConfig: path.join(e2eRootPath, 'protractor.conf.js'), - }, - configurations: { - production: { - devServerTarget: `${relatedAppName}:serve:production`, - }, - development: { - devServerTarget: `${relatedAppName}:serve:development`, - }, - }, - }); - - return chain([ - mergeWith( - apply(url('./files'), [ - applyTemplates({ - utils: strings, - ...options, - relativePathToWorkspaceRoot: path.relative(path.join('/', e2eRootPath), '/'), - }), - move(e2eRootPath), - ]), - ), - addRootProvider( - relatedAppName, - ({ code, external }) => - code`${external('provideProtractorTestingSupport', '@angular/platform-browser')}()`, - ), - ...E2E_DEV_DEPENDENCIES.map((name) => - addDependency(name, latestVersions[name], { - type: DependencyType.Dev, - existing: ExistingBehavior.Skip, - }), - ), - addScriptsToPackageJson(), - ]); - }); -} diff --git a/packages/schematics/angular/e2e/index_spec.ts b/packages/schematics/angular/e2e/index_spec.ts deleted file mode 100644 index d8253e52154f..000000000000 --- a/packages/schematics/angular/e2e/index_spec.ts +++ /dev/null @@ -1,98 +0,0 @@ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.dev/license - */ - -import { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/testing'; -import { Schema as ApplicationOptions } from '../application/schema'; -import { Schema as WorkspaceOptions } from '../workspace/schema'; -import { Schema as E2eOptions } from './schema'; - -describe('E2E Schematic', () => { - const schematicRunner = new SchematicTestRunner( - '@schematics/angular', - require.resolve('../collection.json'), - ); - - const workspaceOptions: WorkspaceOptions = { - name: 'workspace', - newProjectRoot: 'projects', - version: '6.0.0', - }; - - const defaultOptions: E2eOptions = { - relatedAppName: 'foo', - }; - - const defaultAppOptions: ApplicationOptions = { - name: 'foo', - inlineStyle: true, - inlineTemplate: true, - routing: false, - skipPackageJson: false, - minimal: true, - }; - - let applicationTree: UnitTestTree; - - beforeEach(async () => { - const workspaceTree = await schematicRunner.runSchematic('workspace', workspaceOptions); - - applicationTree = await schematicRunner.runSchematic( - 'application', - defaultAppOptions, - workspaceTree, - ); - }); - - it('should create all files of e2e in an application', async () => { - const tree = await schematicRunner.runSchematic('private-e2e', defaultOptions, applicationTree); - - const files = tree.files; - expect(files).toEqual( - jasmine.arrayContaining([ - '/projects/foo/e2e/protractor.conf.js', - '/projects/foo/e2e/tsconfig.json', - '/projects/foo/e2e/src/app.e2e-spec.ts', - '/projects/foo/e2e/src/app.po.ts', - ]), - ); - }); - - describe('workspace config', () => { - it('should add e2e targets for the app', async () => { - const tree = await schematicRunner.runSchematic( - 'private-e2e', - defaultOptions, - applicationTree, - ); - - const workspace = JSON.parse(tree.readContent('/angular.json')); - const targets = workspace.projects.foo.architect; - expect(targets.e2e).toBeDefined(); - }); - - it('should set the e2e options', async () => { - const tree = await schematicRunner.runSchematic( - 'private-e2e', - defaultOptions, - applicationTree, - ); - - const workspace = JSON.parse(tree.readContent('/angular.json')); - const { options, configurations } = workspace.projects.foo.architect.e2e; - expect(options.protractorConfig).toEqual('projects/foo/e2e/protractor.conf.js'); - expect(configurations.development.devServerTarget).toEqual('foo:serve:development'); - }); - }); - - it('should add an e2e script in package.json', async () => { - const tree = await schematicRunner.runSchematic('private-e2e', defaultOptions, applicationTree); - - const pkg = JSON.parse(tree.readContent('/package.json')); - expect(pkg.scripts['e2e']).toBe('ng e2e'); - }); -}); diff --git a/packages/schematics/angular/e2e/schema.json b/packages/schematics/angular/e2e/schema.json deleted file mode 100644 index e4805dd04c5a..000000000000 --- a/packages/schematics/angular/e2e/schema.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema", - "$id": "SchematicsAngularE2eApp", - "title": "Angular e2e Application Options Schema", - "type": "object", - "additionalProperties": false, - "description": "Generates a new, generic end-to-end test definition in the given project.", - "properties": { - "rootSelector": { - "description": "The HTML selector for the root component of the test app.", - "type": "string", - "default": "app-root" - }, - "relatedAppName": { - "description": "The name of the application being tested.", - "type": "string" - } - }, - "required": ["relatedAppName"] -} diff --git a/packages/schematics/angular/utility/latest-versions/package.json b/packages/schematics/angular/utility/latest-versions/package.json index 97416e3ba066..806527a60fba 100644 --- a/packages/schematics/angular/utility/latest-versions/package.json +++ b/packages/schematics/angular/utility/latest-versions/package.json @@ -19,7 +19,6 @@ "less": "^4.2.0", "postcss": "^8.5.3", "prettier": "^3.8.1", - "protractor": "~7.0.0", "rxjs": "~7.8.0", "tailwindcss": "^4.1.12", "@tailwindcss/postcss": "^4.1.12", diff --git a/packages/schematics/angular/utility/workspace-models.ts b/packages/schematics/angular/utility/workspace-models.ts index e4a570410371..d1ae1b146835 100644 --- a/packages/schematics/angular/utility/workspace-models.ts +++ b/packages/schematics/angular/utility/workspace-models.ts @@ -35,7 +35,6 @@ export enum Builders { BuildDevServer = '@angular/build:dev-server', ExtractI18n = '@angular-devkit/build-angular:extract-i18n', BuildExtractI18n = '@angular/build:extract-i18n', - Protractor = '@angular-devkit/build-angular:private-protractor', BuildApplication = '@angular/build:application', } @@ -123,7 +122,6 @@ export interface ExtractI18nOptions { } export interface E2EOptions { - protractorConfig: string; devServerTarget: string; } @@ -143,7 +141,6 @@ export type AppShellBuilderTarget = BuilderTarget; export type ServeBuilderTarget = BuilderTarget; export type ExtractI18nBuilderTarget = BuilderTarget; -export type E2EBuilderTarget = BuilderTarget; interface WorkspaceCLISchema { warnings?: Record; @@ -185,7 +182,6 @@ export interface WorkspaceTargets Date: Wed, 25 Feb 2026 14:27:39 +0200 Subject: [PATCH 2/2] refactor(@angular-devkit/build-angular): remove protractor Remove Protractor since it's no longer supported and has been deprecated since v19; Remove the dependency. --- .../angular_devkit/build_angular/index.api.md | 17 - .../projects/hello-world-app/README.md | 2 +- .../projects/hello-world-app/angular.json | 14 - .../hello-world-app/e2e/app.e2e-spec.ts | 22 - .../projects/hello-world-app/e2e/app.po.ts | 19 - .../hello-world-app/e2e/tsconfig.e2e.json | 12 - .../hello-world-app/protractor.conf.js | 43 - modules/testing/builder/src/test-utils.ts | 1 - package.json | 2 - .../angular_devkit/build_angular/BUILD.bazel | 18 - .../angular_devkit/build_angular/README.md | 1 - .../build_angular/builders.json | 10 - .../angular_devkit/build_angular/package.json | 6 +- .../src/builders/protractor-error/index.ts | 20 - .../src/builders/protractor/index.ts | 175 ---- .../src/builders/protractor/schema.json | 58 -- .../src/builders/protractor/works_spec.ts | 136 ---- .../angular_devkit/build_angular/src/index.ts | 5 - .../core/src/workspace/json/reader_spec.ts | 2 +- .../core/src/workspace/json/test/angular.json | 28 - .../json/test/cases/AddProject2.json | 28 - .../json/test/cases/AddProject3.json | 28 - .../json/test/cases/ProjectAddTarget.json | 28 - .../json/test/cases/ProjectDeleteTarget.json | 28 - .../test/cases/ProjectModifyProperties.json | 28 - .../json/test/cases/ProjectSetProperties.json | 28 - .../utility/latest-versions/package.json | 1 - pnpm-lock.yaml | 751 +----------------- tests/e2e/tests/protractor/test-fails.ts | 19 - tests/e2e/utils/BUILD.bazel | 1 - 30 files changed, 7 insertions(+), 1524 deletions(-) delete mode 100644 modules/testing/builder/projects/hello-world-app/e2e/app.e2e-spec.ts delete mode 100644 modules/testing/builder/projects/hello-world-app/e2e/app.po.ts delete mode 100644 modules/testing/builder/projects/hello-world-app/e2e/tsconfig.e2e.json delete mode 100644 modules/testing/builder/projects/hello-world-app/protractor.conf.js delete mode 100644 packages/angular_devkit/build_angular/src/builders/protractor-error/index.ts delete mode 100644 packages/angular_devkit/build_angular/src/builders/protractor/index.ts delete mode 100644 packages/angular_devkit/build_angular/src/builders/protractor/schema.json delete mode 100644 packages/angular_devkit/build_angular/src/builders/protractor/works_spec.ts delete mode 100644 tests/e2e/tests/protractor/test-fails.ts diff --git a/goldens/public-api/angular_devkit/build_angular/index.api.md b/goldens/public-api/angular_devkit/build_angular/index.api.md index 0208e998a300..a7747bda9da2 100644 --- a/goldens/public-api/angular_devkit/build_angular/index.api.md +++ b/goldens/public-api/angular_devkit/build_angular/index.api.md @@ -173,9 +173,6 @@ export function executeKarmaBuilder(options: KarmaBuilderOptions, context: Build // @public export function executeNgPackagrBuilder(options: NgPackagrBuilderOptions, context: BuilderContext): Observable; -// @public -export function executeProtractorBuilder(options: ProtractorBuilderOptions, context: BuilderContext): Promise; - // @public export function executeServerBuilder(options: ServerBuilderOptions, context: BuilderContext, transforms?: { webpackConfiguration?: ExecutionTransformer; @@ -269,20 +266,6 @@ export enum OutputHashing { None = "none" } -// @public -export type ProtractorBuilderOptions = { - baseUrl?: string; - devServerTarget?: string; - grep?: string; - host?: string; - invertGrep?: boolean; - port?: number; - protractorConfig: string; - specs?: string[]; - suite?: string; - webdriverUpdate?: boolean; -}; - // @public (undocumented) export type ServerBuilderOptions = { assets?: AssetPattern_3[]; diff --git a/modules/testing/builder/projects/hello-world-app/README.md b/modules/testing/builder/projects/hello-world-app/README.md index 3c578babc961..c2795c8bcc94 100644 --- a/modules/testing/builder/projects/hello-world-app/README.md +++ b/modules/testing/builder/projects/hello-world-app/README.md @@ -20,7 +20,7 @@ Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github. ## Running end-to-end tests -Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). +Run `ng e2e` to setup and run the end-to-end tests. ## Further help diff --git a/modules/testing/builder/projects/hello-world-app/angular.json b/modules/testing/builder/projects/hello-world-app/angular.json index 95607701be8f..9ab612b8b2c5 100644 --- a/modules/testing/builder/projects/hello-world-app/angular.json +++ b/modules/testing/builder/projects/hello-world-app/angular.json @@ -172,20 +172,6 @@ } } } - }, - "app-e2e": { - "root": "e2e", - "projectType": "application", - "targets": { - "e2e": { - "builder": "@angular-devkit/build-angular:private-protractor", - "options": { - "protractorConfig": "protractor.conf.js", - "devServerTarget": "app:serve", - "webdriverUpdate": false - } - } - } } } } diff --git a/modules/testing/builder/projects/hello-world-app/e2e/app.e2e-spec.ts b/modules/testing/builder/projects/hello-world-app/e2e/app.e2e-spec.ts deleted file mode 100644 index 862e95302ce3..000000000000 --- a/modules/testing/builder/projects/hello-world-app/e2e/app.e2e-spec.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.dev/license - */ - -import { AppPage } from './app.po'; - -describe('hello-world-app App', () => { - let page: AppPage; - - beforeEach(() => { - page = new AppPage(); - }); - - it('should display welcome message', async () => { - page.navigateTo(); - expect(await page.getTitleText()).toEqual('Welcome to app!'); - }); -}); diff --git a/modules/testing/builder/projects/hello-world-app/e2e/app.po.ts b/modules/testing/builder/projects/hello-world-app/e2e/app.po.ts deleted file mode 100644 index 7cb6bc3fb743..000000000000 --- a/modules/testing/builder/projects/hello-world-app/e2e/app.po.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.dev/license - */ - -import { browser, by, element } from 'protractor'; - -export class AppPage { - navigateTo(): Promise { - return browser.get(browser.baseUrl) as Promise; - } - - getTitleText(): Promise { - return element(by.css('app-root h1')).getText() as Promise; - } -} diff --git a/modules/testing/builder/projects/hello-world-app/e2e/tsconfig.e2e.json b/modules/testing/builder/projects/hello-world-app/e2e/tsconfig.e2e.json deleted file mode 100644 index a82df00eef37..000000000000 --- a/modules/testing/builder/projects/hello-world-app/e2e/tsconfig.e2e.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "outDir": "../out-tsc/e2e", - "module": "commonjs", - "target": "es2018", - "types": [ - "jasmine", - "node" - ] - } -} diff --git a/modules/testing/builder/projects/hello-world-app/protractor.conf.js b/modules/testing/builder/projects/hello-world-app/protractor.conf.js deleted file mode 100644 index 313f7ac7c53b..000000000000 --- a/modules/testing/builder/projects/hello-world-app/protractor.conf.js +++ /dev/null @@ -1,43 +0,0 @@ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.dev/license - */ - -// Protractor configuration file, see link for more information -// https://github.com/angular/protractor/blob/master/lib/config.ts - -const { SpecReporter, StacktraceOption } = require('jasmine-spec-reporter'); -const { resolve } = require('path'); - -exports.config = { - allScriptsTimeout: 11000, - specs: ['./e2e/**/*.e2e-spec.ts'], - capabilities: { - browserName: 'chrome', - chromeOptions: { - args: ['--headless', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage'], - binary: require('puppeteer').executablePath(), - }, - }, - directConnect: true, - baseUrl: 'http://localhost:4200/', - framework: 'jasmine', - jasmineNodeOpts: { - showColors: true, - defaultTimeoutInterval: 30000, - print: function() {}, - }, - onPrepare() { - require('ts-node').register({ - project: resolve(__dirname, './e2e/tsconfig.e2e.json'), - }); - jasmine.getEnv().addReporter(new SpecReporter({ - spec: { - displayStacktrace: StacktraceOption.PRETTY - } - })); - }, -}; diff --git a/modules/testing/builder/src/test-utils.ts b/modules/testing/builder/src/test-utils.ts index f41cb42d1ea6..3e8f1fe48fcb 100644 --- a/modules/testing/builder/src/test-utils.ts +++ b/modules/testing/builder/src/test-utils.ts @@ -36,7 +36,6 @@ export const devServerTargetSpec = { project: 'app', target: 'serve' }; export const extractI18nTargetSpec = { project: 'app', target: 'extract-i18n' }; export const karmaTargetSpec = { project: 'app', target: 'test' }; export const tslintTargetSpec = { project: 'app', target: 'lint' }; -export const protractorTargetSpec = { project: 'app-e2e', target: 'e2e' }; export async function createArchitect(workspaceRoot: Path) { const registry = new schema.CoreSchemaRegistry(); diff --git a/package.json b/package.json index 1675bd17610d..5477154caaa3 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,6 @@ "lodash": "^4.17.21", "magic-string": "0.30.21", "prettier": "^3.0.0", - "protractor": "~7.0.0", "puppeteer": "18.2.1", "quicktype-core": "23.2.6", "rollup": "4.59.0", @@ -127,7 +126,6 @@ "rollup-plugin-sourcemaps2": "0.5.6", "semver": "7.7.4", "source-map-support": "0.5.21", - "ts-node": "^10.9.1", "tslib": "2.8.1", "typescript": "5.9.3", "undici": "7.22.0", diff --git a/packages/angular_devkit/build_angular/BUILD.bazel b/packages/angular_devkit/build_angular/BUILD.bazel index 06bfa412c48d..ee90b96ec703 100644 --- a/packages/angular_devkit/build_angular/BUILD.bazel +++ b/packages/angular_devkit/build_angular/BUILD.bazel @@ -44,11 +44,6 @@ ts_json_schema( src = "src/builders/karma/schema.json", ) -ts_json_schema( - name = "protractor_schema", - src = "src/builders/protractor/schema.json", -) - ts_json_schema( name = "server_schema", src = "src/builders/server/schema.json", @@ -109,7 +104,6 @@ ts_project( "//packages/angular_devkit/build_angular:src/builders/karma/schema.ts", "//packages/angular_devkit/build_angular:src/builders/ng-packagr/schema.ts", "//packages/angular_devkit/build_angular:src/builders/prerender/schema.ts", - "//packages/angular_devkit/build_angular:src/builders/protractor/schema.ts", "//packages/angular_devkit/build_angular:src/builders/server/schema.ts", "//packages/angular_devkit/build_angular:src/builders/ssr-dev-server/schema.ts", ], @@ -321,18 +315,6 @@ LARGE_SPECS = { ":node_modules/webpack", ], }, - "protractor": { - "extra_deps": [ - "//:node_modules/jasmine-spec-reporter", - "//:node_modules/protractor", - "//:node_modules/puppeteer", - "//:node_modules/ts-node", - ], - # NB: does not run on rbe because webdriver manager uses an absolute path to chromedriver - "tags": ["no-remote-exec"], - # NB: multiple shards will compete for port 4200 so limiting to 1 - "shards": 1, - }, "server": { "size": "large", "extra_deps": [ diff --git a/packages/angular_devkit/build_angular/README.md b/packages/angular_devkit/build_angular/README.md index e839387b98ea..0c9ec4e36bf0 100644 --- a/packages/angular_devkit/build_angular/README.md +++ b/packages/angular_devkit/build_angular/README.md @@ -17,7 +17,6 @@ This package contains [Architect builders](/packages/angular_devkit/architect/RE | prerender | [Prerender](https://angular.dev/guide/prerendering) pages of your application. Prerendering is the process where a dynamic page is processed at build time generating static HTML. | | server | Build an Angular application targeting a [Node.js](https://nodejs.org) environment. | | ssr-dev-server | A development server which offers live reload during development, but uses server-side rendering. | -| protractor | **Deprecated** - Run end-to-end tests using [Protractor](https://www.protractortest.org/) framework. | ## Disclaimer diff --git a/packages/angular_devkit/build_angular/builders.json b/packages/angular_devkit/build_angular/builders.json index b2af093bba3c..4e823879bbfe 100644 --- a/packages/angular_devkit/build_angular/builders.json +++ b/packages/angular_devkit/build_angular/builders.json @@ -32,16 +32,6 @@ "schema": "./src/builders/karma/schema.json", "description": "Run Karma unit tests." }, - "protractor": { - "implementation": "./src/builders/protractor-error", - "schema": "./src/builders/protractor/schema.json", - "description": "Throw an error that Protractor is end-of-life and no longer supported." - }, - "private-protractor": { - "implementation": "./src/builders/protractor", - "schema": "./src/builders/protractor/schema.json", - "description": "PRIVATE API - Do not use." - }, "server": { "implementation": "./src/builders/server", "schema": "./src/builders/server/schema.json", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index fb0828e42ffc..00863906a1f5 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -71,8 +71,8 @@ "undici": "7.22.0" }, "peerDependencies": { - "@angular/core": "0.0.0-ANGULAR-FW-PEER-DEP", "@angular/compiler-cli": "0.0.0-ANGULAR-FW-PEER-DEP", + "@angular/core": "0.0.0-ANGULAR-FW-PEER-DEP", "@angular/localize": "0.0.0-ANGULAR-FW-PEER-DEP", "@angular/platform-browser": "0.0.0-ANGULAR-FW-PEER-DEP", "@angular/platform-server": "0.0.0-ANGULAR-FW-PEER-DEP", @@ -81,7 +81,6 @@ "browser-sync": "^3.0.2", "karma": "^6.3.0", "ng-packagr": "0.0.0-NG-PACKAGR-PEER-DEP", - "protractor": "^7.0.0", "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0", "typescript": ">=5.9 <6.0" }, @@ -113,9 +112,6 @@ "ng-packagr": { "optional": true }, - "protractor": { - "optional": true - }, "tailwindcss": { "optional": true } diff --git a/packages/angular_devkit/build_angular/src/builders/protractor-error/index.ts b/packages/angular_devkit/build_angular/src/builders/protractor-error/index.ts deleted file mode 100644 index 31c9fe183731..000000000000 --- a/packages/angular_devkit/build_angular/src/builders/protractor-error/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.dev/license - */ - -import { BuilderContext, createBuilder } from '@angular-devkit/architect'; -import { Schema as ProtractorBuilderOptions } from '../protractor/schema'; - -export default createBuilder( - (_options: ProtractorBuilderOptions, context: BuilderContext) => { - context.logger.error( - 'Protractor has reached end-of-life and is no longer supported. For additional information and alternatives, please see https://blog.angular.dev/protractor-deprecation-update-august-2023-2beac7402ce0.', - ); - - return { success: false }; - }, -); diff --git a/packages/angular_devkit/build_angular/src/builders/protractor/index.ts b/packages/angular_devkit/build_angular/src/builders/protractor/index.ts deleted file mode 100644 index df0a60759835..000000000000 --- a/packages/angular_devkit/build_angular/src/builders/protractor/index.ts +++ /dev/null @@ -1,175 +0,0 @@ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.dev/license - */ - -import { - BuilderContext, - BuilderOutput, - createBuilder, - targetFromTargetString, -} from '@angular-devkit/architect'; -import { tags } from '@angular-devkit/core'; -import { resolve } from 'node:path'; -import * as url from 'node:url'; -import { runModuleAsObservableFork } from '../../utils'; -import { assertIsError } from '../../utils/error'; -import { DevServerBuilderOptions } from '../dev-server/index'; -import { Schema as ProtractorBuilderOptions } from './schema'; - -interface JasmineNodeOpts { - jasmineNodeOpts: { - grep?: string; - invertGrep?: boolean; - }; -} - -function runProtractor(root: string, options: ProtractorBuilderOptions): Promise { - const additionalProtractorConfig: Partial & Partial = { - baseUrl: options.baseUrl, - specs: options.specs && options.specs.length ? options.specs : undefined, - suite: options.suite, - jasmineNodeOpts: { - grep: options.grep, - invertGrep: options.invertGrep, - }, - }; - - // TODO: Protractor manages process.exit itself, so this target will allways quit the - // process. To work around this we run it in a subprocess. - // https://github.com/angular/protractor/issues/4160 - return runModuleAsObservableFork(root, 'protractor/built/launcher', 'init', [ - resolve(root, options.protractorConfig), - additionalProtractorConfig, - ]).toPromise() as Promise; -} - -async function updateWebdriver() { - // The webdriver-manager update command can only be accessed via a deep import. - const webdriverDeepImport = 'webdriver-manager/built/lib/cmds/update'; - - let path; - try { - const protractorPath = require.resolve('protractor'); - - path = require.resolve(webdriverDeepImport, { paths: [protractorPath] }); - } catch (error) { - assertIsError(error); - if (error.code !== 'MODULE_NOT_FOUND') { - throw error; - } - } - - if (!path) { - throw new Error(tags.stripIndents` - Cannot automatically find webdriver-manager to update. - Update webdriver-manager manually and run 'ng e2e --no-webdriver-update' instead. - `); - } - - const webdriverUpdate = await import(path); - // const webdriverUpdate = await import(path) as typeof import ('webdriver-manager/built/lib/cmds/update'); - - // run `webdriver-manager update --standalone false --gecko false --quiet` - // if you change this, update the command comment in prev line - return webdriverUpdate.program.run({ - standalone: false, - gecko: false, - quiet: true, - } as unknown as JSON); -} - -export type { ProtractorBuilderOptions }; - -/** - * @experimental Direct usage of this function is considered experimental. - */ -export async function execute( - options: ProtractorBuilderOptions, - context: BuilderContext, -): Promise { - context.logger.warn( - 'Protractor has reached end-of-life and is no longer supported by the Angular team. The `protractor` builder will be removed in a future Angular major version. For additional information and alternatives, please see https://blog.angular.dev/protractor-deprecation-update-august-2023-2beac7402ce0.', - ); - - // ensure that only one of these options is used - if (options.devServerTarget && options.baseUrl) { - throw new Error(tags.stripIndents` - The 'baseUrl' option cannot be used with 'devServerTarget'. - When present, 'devServerTarget' will be used to automatically setup 'baseUrl' for Protractor. - `); - } - - if (options.webdriverUpdate) { - await updateWebdriver(); - } - - let baseUrl = options.baseUrl; - let server; - - try { - if (options.devServerTarget) { - const target = targetFromTargetString(options.devServerTarget); - const serverOptions = await context.getTargetOptions(target); - - const overrides = { - watch: false, - liveReload: false, - } as DevServerBuilderOptions; - - if (options.host !== undefined) { - overrides.host = options.host; - } else if (typeof serverOptions.host === 'string') { - options.host = serverOptions.host; - } else { - options.host = overrides.host = 'localhost'; - } - - if (options.port !== undefined) { - overrides.port = options.port; - } else if (typeof serverOptions.port === 'number') { - options.port = serverOptions.port; - } - - server = await context.scheduleTarget(target, overrides); - const result = await server.result; - if (!result.success) { - return { success: false }; - } - - if (typeof serverOptions.publicHost === 'string') { - let publicHost = serverOptions.publicHost; - if (!/^\w+:\/\//.test(publicHost)) { - publicHost = `${serverOptions.ssl ? 'https' : 'http'}://${publicHost}`; - } - const clientUrl = url.parse(publicHost); - baseUrl = url.format(clientUrl); - } else if (typeof result.baseUrl === 'string') { - baseUrl = result.baseUrl; - } else if (typeof result.port === 'number') { - baseUrl = url.format({ - protocol: serverOptions.ssl ? 'https' : 'http', - hostname: options.host, - port: result.port.toString(), - }); - } - } - - // Like the baseUrl in protractor config file when using the API we need to add - // a trailing slash when provide to the baseUrl. - if (baseUrl && !baseUrl.endsWith('/')) { - baseUrl += '/'; - } - - return await runProtractor(context.workspaceRoot, { ...options, baseUrl }); - } catch { - return { success: false }; - } finally { - await server?.stop(); - } -} - -export default createBuilder(execute); diff --git a/packages/angular_devkit/build_angular/src/builders/protractor/schema.json b/packages/angular_devkit/build_angular/src/builders/protractor/schema.json deleted file mode 100644 index 286a315a96a9..000000000000 --- a/packages/angular_devkit/build_angular/src/builders/protractor/schema.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema", - "title": "Protractor Target", - "description": "Protractor target options for Build Facade.", - "type": "object", - "properties": { - "protractorConfig": { - "type": "string", - "description": "The name of the Protractor configuration file." - }, - "devServerTarget": { - "type": "string", - "description": "A dev-server builder target to run tests against in the format of `project:target[:configuration]`. You can also pass in more than one configuration name as a comma-separated list. Example: `project:target:production,staging`.", - "pattern": "^([^:\\s]+:[^:\\s]+(:[^\\s]+)?)?$" - }, - "grep": { - "type": "string", - "description": "Execute specs whose names match the pattern, which is internally compiled to a RegExp." - }, - "invertGrep": { - "type": "boolean", - "description": "Invert the selection specified by the 'grep' option.", - "default": false - }, - "specs": { - "type": "array", - "description": "Override specs in the protractor config.", - "default": [], - "items": { - "type": "string", - "description": "Spec name." - } - }, - "suite": { - "type": "string", - "description": "Override suite in the protractor config." - }, - "webdriverUpdate": { - "type": "boolean", - "description": "Try to update webdriver.", - "default": true - }, - "port": { - "type": "number", - "description": "The port to use to serve the application." - }, - "host": { - "type": "string", - "description": "Host to listen on." - }, - "baseUrl": { - "type": "string", - "description": "Base URL for protractor to connect to." - } - }, - "additionalProperties": false, - "required": ["protractorConfig"] -} diff --git a/packages/angular_devkit/build_angular/src/builders/protractor/works_spec.ts b/packages/angular_devkit/build_angular/src/builders/protractor/works_spec.ts deleted file mode 100644 index d42d677055b3..000000000000 --- a/packages/angular_devkit/build_angular/src/builders/protractor/works_spec.ts +++ /dev/null @@ -1,136 +0,0 @@ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.dev/license - */ - -import { Architect } from '@angular-devkit/architect'; -import { JsonObject, normalize } from '@angular-devkit/core'; -import { createArchitect, host, protractorTargetSpec } from '../../testing/test-utils'; - -describe('Protractor Builder', () => { - let architect: Architect; - - beforeEach(async () => { - await host.initialize().toPromise(); - architect = (await createArchitect(host.root())).architect; - }); - - afterEach(() => host.restore().toPromise()); - - it('executes tests with automatic dev server usage', async () => { - const run = await architect.scheduleTarget(protractorTargetSpec); - - await expectAsync(run.result).toBeResolvedTo(jasmine.objectContaining({ success: true })); - - await run.stop(); - }); - - it('fails with no devServerTarget and no standalone server', async () => { - const overrides = { devServerTarget: undefined } as unknown as JsonObject; - const run = await architect.scheduleTarget(protractorTargetSpec, overrides); - - await expectAsync(run.result).toBeResolvedTo(jasmine.objectContaining({ success: false })); - - await run.stop(); - }); - - it('overrides protractor specs', async () => { - host - .scopedSync() - .rename(normalize('./e2e/app.e2e-spec.ts'), normalize('./e2e/renamed-app.e2e.spec.ts')); - - const overrides = { specs: ['./e2e/renamed-app.e2e.spec.ts'] }; - const run = await architect.scheduleTarget(protractorTargetSpec, overrides); - - await expectAsync(run.result).toBeResolvedTo(jasmine.objectContaining({ success: true })); - - await run.stop(); - }); - - it('overrides protractor suites', async () => { - host - .scopedSync() - .rename(normalize('./e2e/app.e2e-spec.ts'), normalize('./e2e/renamed-app.e2e-spec.ts')); - - // Suites block needs to be added in the protractor.conf.js file to test suites - host.replaceInFile( - 'protractor.conf.js', - `allScriptsTimeout: 11000,`, - ` - allScriptsTimeout: 11000, - suites: { - app: './e2e/app.e2e-spec.ts' - }, - `, - ); - - const overrides = { suite: 'app' }; - const run = await architect.scheduleTarget(protractorTargetSpec, overrides); - - await expectAsync(run.result).toBeResolvedTo(jasmine.objectContaining({ success: true })); - - await run.stop(); - }); - - it('supports automatic port assignment (port = 0)', async () => { - const overrides = { port: 0 }; - const run = await architect.scheduleTarget(protractorTargetSpec, overrides); - - await expectAsync(run.result).toBeResolvedTo(jasmine.objectContaining({ success: true })); - - await run.stop(); - }); - - it('supports dev server builder with browser builder base HREF option', async () => { - host.replaceInFile( - 'angular.json', - '"main": "src/main.ts",', - '"main": "src/main.ts", "baseHref": "/base/",', - ); - // Need to reset architect to use the modified config - architect = (await createArchitect(host.root())).architect; - - const run = await architect.scheduleTarget(protractorTargetSpec); - - await expectAsync(run.result).toBeResolvedTo(jasmine.objectContaining({ success: true })); - - await run.stop(); - }); - - it('supports running tests by pattern', async () => { - host.writeMultipleFiles({ - 'e2e/app.e2e-spec.ts': ` - it('should succeed', () => expect(true).toBeTruthy()); - it('should fail', () => expect(false).toBeTruthy()); - `, - }); - - const overrides = { grep: 'succeed' }; - - const run = await architect.scheduleTarget(protractorTargetSpec, overrides); - - await expectAsync(run.result).toBeResolvedTo(jasmine.objectContaining({ success: true })); - - await run.stop(); - }); - - it('supports running tests excluding a pattern', async () => { - host.writeMultipleFiles({ - 'e2e/app.e2e-spec.ts': ` - it('should succeed', () => expect(true).toBeTruthy()); - it('should fail', () => expect(false).toBeTruthy()); - `, - }); - - const overrides = { grep: 'fail', invertGrep: true }; - - const run = await architect.scheduleTarget(protractorTargetSpec, overrides); - - await expectAsync(run.result).toBeResolvedTo(jasmine.objectContaining({ success: true })); - - await run.stop(); - }); -}); diff --git a/packages/angular_devkit/build_angular/src/index.ts b/packages/angular_devkit/build_angular/src/index.ts index 1ba9ce034544..8c8b27e39987 100644 --- a/packages/angular_devkit/build_angular/src/index.ts +++ b/packages/angular_devkit/build_angular/src/index.ts @@ -65,11 +65,6 @@ export function executeKarmaBuilder( export { type KarmaBuilderOptions, type KarmaConfigOptions }; -export { - execute as executeProtractorBuilder, - type ProtractorBuilderOptions, -} from './builders/protractor'; - export { execute as executeServerBuilder, type ServerBuilderOptions, diff --git a/packages/angular_devkit/core/src/workspace/json/reader_spec.ts b/packages/angular_devkit/core/src/workspace/json/reader_spec.ts index 32647444ab2b..041cf580ce0b 100644 --- a/packages/angular_devkit/core/src/workspace/json/reader_spec.ts +++ b/packages/angular_devkit/core/src/workspace/json/reader_spec.ts @@ -75,7 +75,7 @@ describe('readJsonWorkpace Parsing', () => { const workspace = await readJsonWorkspace('', host); - expect(Array.from(workspace.projects.keys())).toEqual(['my-app', 'my-app-e2e']); + expect(Array.from(workspace.projects.keys())).toEqual(['my-app']); expect(workspace.extensions['newProjectRoot']).toBe('projects'); expect(workspace.projects.get('my-app')!.extensions['schematics']).toEqual({ '@schematics/angular:component': { styleext: 'scss' }, diff --git a/packages/angular_devkit/core/src/workspace/json/test/angular.json b/packages/angular_devkit/core/src/workspace/json/test/angular.json index 94800e0dfa56..285676999acb 100644 --- a/packages/angular_devkit/core/src/workspace/json/test/angular.json +++ b/packages/angular_devkit/core/src/workspace/json/test/angular.json @@ -104,34 +104,6 @@ } } } - }, - "my-app-e2e": { - "root": "e2e/", - "projectType": "application", - "prefix": "", - "architect": { - "e2e": { - "builder": "@angular-devkit/build-angular:private-protractor", - "options": { - "protractorConfig": "e2e/protractor.conf.js", - "devServerTarget": "my-app:serve" - }, - "configurations": { - "production": { - "devServerTarget": "my-app:serve:production" - } - } - }, - "lint": { - "builder": "@angular-devkit/build-angular:tslint", - "options": { - "tsConfig": "e2e/tsconfig.e2e.json", - "exclude": [ - "**/node_modules/**" - ] - } - } - } } } } diff --git a/packages/angular_devkit/core/src/workspace/json/test/cases/AddProject2.json b/packages/angular_devkit/core/src/workspace/json/test/cases/AddProject2.json index 5ae73ae1eff6..55ec083ffa9f 100644 --- a/packages/angular_devkit/core/src/workspace/json/test/cases/AddProject2.json +++ b/packages/angular_devkit/core/src/workspace/json/test/cases/AddProject2.json @@ -105,34 +105,6 @@ } } }, - "my-app-e2e": { - "root": "e2e/", - "projectType": "application", - "prefix": "", - "architect": { - "e2e": { - "builder": "@angular-devkit/build-angular:private-protractor", - "options": { - "protractorConfig": "e2e/protractor.conf.js", - "devServerTarget": "my-app:serve" - }, - "configurations": { - "production": { - "devServerTarget": "my-app:serve:production" - } - } - }, - "lint": { - "builder": "@angular-devkit/build-angular:tslint", - "options": { - "tsConfig": "e2e/tsconfig.e2e.json", - "exclude": [ - "**/node_modules/**" - ] - } - } - } - }, "new": { "root": "src" } diff --git a/packages/angular_devkit/core/src/workspace/json/test/cases/AddProject3.json b/packages/angular_devkit/core/src/workspace/json/test/cases/AddProject3.json index 6198c97007a0..cbd98e4c89ef 100644 --- a/packages/angular_devkit/core/src/workspace/json/test/cases/AddProject3.json +++ b/packages/angular_devkit/core/src/workspace/json/test/cases/AddProject3.json @@ -105,34 +105,6 @@ } } }, - "my-app-e2e": { - "root": "e2e/", - "projectType": "application", - "prefix": "", - "architect": { - "e2e": { - "builder": "@angular-devkit/build-angular:private-protractor", - "options": { - "protractorConfig": "e2e/protractor.conf.js", - "devServerTarget": "my-app:serve" - }, - "configurations": { - "production": { - "devServerTarget": "my-app:serve:production" - } - } - }, - "lint": { - "builder": "@angular-devkit/build-angular:tslint", - "options": { - "tsConfig": "e2e/tsconfig.e2e.json", - "exclude": [ - "**/node_modules/**" - ] - } - } - } - }, "1": { "root": "src" } diff --git a/packages/angular_devkit/core/src/workspace/json/test/cases/ProjectAddTarget.json b/packages/angular_devkit/core/src/workspace/json/test/cases/ProjectAddTarget.json index 1fdf8eeec7ed..e42eb5a70c6f 100644 --- a/packages/angular_devkit/core/src/workspace/json/test/cases/ProjectAddTarget.json +++ b/packages/angular_devkit/core/src/workspace/json/test/cases/ProjectAddTarget.json @@ -107,34 +107,6 @@ "builder": "new-builder" } } - }, - "my-app-e2e": { - "root": "e2e/", - "projectType": "application", - "prefix": "", - "architect": { - "e2e": { - "builder": "@angular-devkit/build-angular:private-protractor", - "options": { - "protractorConfig": "e2e/protractor.conf.js", - "devServerTarget": "my-app:serve" - }, - "configurations": { - "production": { - "devServerTarget": "my-app:serve:production" - } - } - }, - "lint": { - "builder": "@angular-devkit/build-angular:tslint", - "options": { - "tsConfig": "e2e/tsconfig.e2e.json", - "exclude": [ - "**/node_modules/**" - ] - } - } - } } } } diff --git a/packages/angular_devkit/core/src/workspace/json/test/cases/ProjectDeleteTarget.json b/packages/angular_devkit/core/src/workspace/json/test/cases/ProjectDeleteTarget.json index 81804c2f04b5..573a5835564b 100644 --- a/packages/angular_devkit/core/src/workspace/json/test/cases/ProjectDeleteTarget.json +++ b/packages/angular_devkit/core/src/workspace/json/test/cases/ProjectDeleteTarget.json @@ -98,34 +98,6 @@ } } } - }, - "my-app-e2e": { - "root": "e2e/", - "projectType": "application", - "prefix": "", - "architect": { - "e2e": { - "builder": "@angular-devkit/build-angular:private-protractor", - "options": { - "protractorConfig": "e2e/protractor.conf.js", - "devServerTarget": "my-app:serve" - }, - "configurations": { - "production": { - "devServerTarget": "my-app:serve:production" - } - } - }, - "lint": { - "builder": "@angular-devkit/build-angular:tslint", - "options": { - "tsConfig": "e2e/tsconfig.e2e.json", - "exclude": [ - "**/node_modules/**" - ] - } - } - } } } } diff --git a/packages/angular_devkit/core/src/workspace/json/test/cases/ProjectModifyProperties.json b/packages/angular_devkit/core/src/workspace/json/test/cases/ProjectModifyProperties.json index 1debd9ed6e6b..9f6380eb89c0 100644 --- a/packages/angular_devkit/core/src/workspace/json/test/cases/ProjectModifyProperties.json +++ b/packages/angular_devkit/core/src/workspace/json/test/cases/ProjectModifyProperties.json @@ -104,34 +104,6 @@ } } } - }, - "my-app-e2e": { - "root": "e2e/", - "projectType": "application", - "prefix": "", - "architect": { - "e2e": { - "builder": "@angular-devkit/build-angular:private-protractor", - "options": { - "protractorConfig": "e2e/protractor.conf.js", - "devServerTarget": "my-app:serve" - }, - "configurations": { - "production": { - "devServerTarget": "my-app:serve:production" - } - } - }, - "lint": { - "builder": "@angular-devkit/build-angular:tslint", - "options": { - "tsConfig": "e2e/tsconfig.e2e.json", - "exclude": [ - "**/node_modules/**" - ] - } - } - } } } } diff --git a/packages/angular_devkit/core/src/workspace/json/test/cases/ProjectSetProperties.json b/packages/angular_devkit/core/src/workspace/json/test/cases/ProjectSetProperties.json index 9e2bfb88483c..7b8b3f85e5c4 100644 --- a/packages/angular_devkit/core/src/workspace/json/test/cases/ProjectSetProperties.json +++ b/packages/angular_devkit/core/src/workspace/json/test/cases/ProjectSetProperties.json @@ -105,34 +105,6 @@ } }, "sourceRoot": "src" - }, - "my-app-e2e": { - "root": "e2e/", - "projectType": "application", - "prefix": "", - "architect": { - "e2e": { - "builder": "@angular-devkit/build-angular:private-protractor", - "options": { - "protractorConfig": "e2e/protractor.conf.js", - "devServerTarget": "my-app:serve" - }, - "configurations": { - "production": { - "devServerTarget": "my-app:serve:production" - } - } - }, - "lint": { - "builder": "@angular-devkit/build-angular:tslint", - "options": { - "tsConfig": "e2e/tsconfig.e2e.json", - "exclude": [ - "**/node_modules/**" - ] - } - } - } } } } diff --git a/packages/schematics/angular/utility/latest-versions/package.json b/packages/schematics/angular/utility/latest-versions/package.json index 806527a60fba..ea0e8e92de5a 100644 --- a/packages/schematics/angular/utility/latest-versions/package.json +++ b/packages/schematics/angular/utility/latest-versions/package.json @@ -23,7 +23,6 @@ "tailwindcss": "^4.1.12", "@tailwindcss/postcss": "^4.1.12", "tslib": "^2.3.0", - "ts-node": "~10.9.0", "typescript": "~5.9.2", "vitest": "^4.0.8", "@vitest/browser-playwright": "^4.0.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8767e3d5dacb..ce8b9910b540 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -247,9 +247,6 @@ importers: prettier: specifier: ^3.0.0 version: 3.8.1 - protractor: - specifier: ~7.0.0 - version: 7.0.0 puppeteer: specifier: 18.2.1 version: 18.2.1(bufferutil@4.1.0)(encoding@0.1.13) @@ -274,9 +271,6 @@ importers: source-map-support: specifier: 0.5.21 version: 0.5.21 - ts-node: - specifier: ^10.9.1 - version: 10.9.2(@types/node@22.19.11)(typescript@5.9.3) tslib: specifier: 2.8.1 version: 2.8.1 @@ -1603,10 +1597,6 @@ packages: conventional-commits-parser: optional: true - '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - '@csstools/color-helpers@6.0.1': resolution: {integrity: sha512-NmXRccUJMk2AWA5A7e5a//3bCIMyOu2hAtdRYrhPPHjDxINuCwX1w6rnIZ4xjLcp0ayv6h8Pc3X0eJUGiAAXHQ==} engines: {node: '>=20.19.0'} @@ -2341,9 +2331,6 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@js-sdsl/ordered-map@4.4.2': resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} @@ -3481,18 +3468,6 @@ packages: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} - '@tsconfig/node10@1.0.12': - resolution: {integrity: sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==} - - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - '@tufjs/canonical-json@2.0.0': resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} engines: {node: ^16.14.0 || >=18.0.0} @@ -3660,9 +3635,6 @@ packages: '@types/pumpify@1.4.5': resolution: {integrity: sha512-BGVAQyK5yJdfIII230fVYGY47V63hUNAhryuuS3b4lEN2LNwxUXFKsEf8QLDCjmZuimlj23BHppJgcrGvNtqKg==} - '@types/q@0.0.32': - resolution: {integrity: sha512-qYi3YV9inU/REEfxwVcGZzbS3KG/Xs90lv0Pr+lDtuVjBPGd1A+eciXzVSaRvLify132BfcvhvEjeVahrUl0Ug==} - '@types/qs@6.14.0': resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} @@ -3681,9 +3653,6 @@ packages: '@types/retry@0.12.2': resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} - '@types/selenium-webdriver@3.0.26': - resolution: {integrity: sha512-dyIGFKXfUFiwkMfNGn1+F6b80ZjR3uSYv1j6xVJSDlft5waZ2cwkHW4e7zNzvq7hiEackcgvBpmnXZrI1GltPg==} - '@types/semver@7.7.1': resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} @@ -4010,10 +3979,6 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} - engines: {node: '>=0.4.0'} - acorn@8.15.0: resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} @@ -4028,14 +3993,6 @@ packages: resolution: {integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==} engines: {node: '>=8.9'} - adm-zip@0.5.16: - resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} - engines: {node: '>=12.0'} - - agent-base@4.3.0: - resolution: {integrity: sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==} - engines: {node: '>= 4.0.0'} - agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -4086,10 +4043,6 @@ packages: engines: {'0': node >= 0.8.0} hasBin: true - ansi-regex@2.1.1: - resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} - engines: {node: '>=0.10.0'} - ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -4098,10 +4051,6 @@ packages: resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} engines: {node: '>=12'} - ansi-styles@2.2.1: - resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} - engines: {node: '>=0.10.0'} - ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -4118,9 +4067,6 @@ packages: resolution: {integrity: sha512-FCAJojipPn0bXjuEpjOOOMN8FZDkxfWWp4JGN9mifU2IhxvKyXZYqpzPHdnTSUpmPDy+tsslB6Z1g+Vg6nVbYA==} engines: {node: '>=8'} - arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -4139,18 +4085,10 @@ packages: resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} engines: {node: '>= 0.4'} - array-union@1.0.2: - resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} - engines: {node: '>=0.10.0'} - array-union@3.0.1: resolution: {integrity: sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==} engines: {node: '>=12'} - array-uniq@1.0.3: - resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} - engines: {node: '>=0.10.0'} - array.prototype.findlastindex@1.2.6: resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} engines: {node: '>= 0.4'} @@ -4167,10 +4105,6 @@ packages: resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - arrify@2.0.1: resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} engines: {node: '>=8'} @@ -4327,11 +4261,6 @@ packages: bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - blocking-proxy@1.0.1: - resolution: {integrity: sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==} - engines: {node: '>=6.9.x'} - hasBin: true - body-parser@1.20.4: resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} @@ -4383,9 +4312,6 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - browserstack@1.6.1: - resolution: {integrity: sha512-GxtFjpIaKdbAyzHfFDKixKO8IBT7wR3NjbzrGc78nNs/Ciys9wU3/nBtsqsWv5nDSrdI5tz0peKuzCPuNXNUiw==} - bs-recipes@1.3.4: resolution: {integrity: sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==} @@ -4448,10 +4374,6 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - caniuse-lite@1.0.30001770: resolution: {integrity: sha512-x/2CLQ1jHENRbHg5PSId2sXq1CIO1CISvwWAj027ltMVG2UNgW+w9oH2+HzgEIRFembL8bUlXtfbBHR1fCg2xw==} @@ -4462,10 +4384,6 @@ packages: resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} - chalk@1.1.3: - resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} - engines: {node: '>=0.10.0'} - chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -4526,9 +4444,6 @@ packages: clipanion@4.0.0-rc.4: resolution: {integrity: sha512-CXkMQxU6s9GklO/1f714dkKBMu1lopS1WFF0B8o4AxPykR1hpozxSiUZ5ZUeBjfPgCWqbcNOtZVFhB8Lkfp1+Q==} - cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} - cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} @@ -4681,9 +4596,6 @@ packages: typescript: optional: true - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - cross-fetch@3.1.5: resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} @@ -4812,10 +4724,6 @@ packages: supports-color: optional: true - decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - decimal.js@10.6.0: resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} @@ -4857,10 +4765,6 @@ packages: defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - del@2.2.2: - resolution: {integrity: sha512-Z4fzpbIRjOu7lO5jCETSWoqUDVe0IPOlfugBsF6suen2LKDlVb4QZpKEM9P+buNJ4KI1eN7I083w/pbKUpsrWQ==} - engines: {node: '>=0.10.0'} - delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -4899,10 +4803,6 @@ packages: di@0.0.1: resolution: {integrity: sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==} - diff@4.0.4: - resolution: {integrity: sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==} - engines: {node: '>=0.3.1'} - dns-packet@5.6.1: resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} engines: {node: '>=6'} @@ -5080,12 +4980,6 @@ packages: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} - es6-promise@4.2.8: - resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - - es6-promisify@5.0.0: - resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - esbuild-wasm@0.27.3: resolution: {integrity: sha512-AUXuOxZ145/5Az+lIqk6TdJbxKTyDGkXMJpTExmBdbnHR6n6qAFx+F4oG9ORpVYJ9dQYeQAqzv51TO4DFKsbXw==} engines: {node: '>=18'} @@ -5103,10 +4997,6 @@ packages: escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -5247,10 +5137,6 @@ packages: resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} engines: {node: '>=18.0.0'} - exit@0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} - engines: {node: '>= 0.8.0'} - expect-type@1.3.0: resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} engines: {node: '>=12.0.0'} @@ -5376,10 +5262,6 @@ packages: resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} engines: {node: '>=18'} - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -5426,10 +5308,6 @@ packages: form-data-encoder@1.7.2: resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} - form-data@2.3.3: - resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} - engines: {node: '>= 0.12'} - form-data@4.0.5: resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} engines: {node: '>= 6'} @@ -5590,10 +5468,6 @@ packages: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} - globby@5.0.0: - resolution: {integrity: sha512-HJRTIH2EeH44ka+LWig+EqT2ONSYpVlNfx6pyd592/VF1TbfljJ7elwie7oSwcViLGqOdWocSdu2txwBF9bjmQ==} - engines: {node: '>=0.10.0'} - google-auth-library@10.5.0: resolution: {integrity: sha512-7ABviyMOlX5hIVD60YOfHw4/CxOfBhyduaYB+wbFWCWoni4N7SLcV46hrVRktuBbZjFC9ONyqamZITN7q3n32w==} engines: {node: '>=18'} @@ -5649,19 +5523,6 @@ packages: engines: {node: '>=0.4.7'} hasBin: true - har-schema@2.0.0: - resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} - engines: {node: '>=4'} - - har-validator@5.1.5: - resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} - engines: {node: '>=6'} - deprecated: this library is no longer supported - - has-ansi@2.0.0: - resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} - engines: {node: '>=0.10.0'} - has-bigints@1.1.0: resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} engines: {node: '>= 0.4'} @@ -5759,10 +5620,6 @@ packages: resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} engines: {node: '>=8.0.0'} - http-signature@1.2.0: - resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} - engines: {node: '>=0.8', npm: '>=1.3.7'} - http-signature@1.4.0: resolution: {integrity: sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==} engines: {node: '>=0.10'} @@ -5774,10 +5631,6 @@ packages: resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} engines: {node: '>=10.19.0'} - https-proxy-agent@2.2.4: - resolution: {integrity: sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==} - engines: {node: '>= 4.5.0'} - https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} @@ -5836,9 +5689,6 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - immediate@3.0.6: - resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - immutable@3.8.2: resolution: {integrity: sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==} engines: {node: '>=0.10.0'} @@ -5861,9 +5711,6 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - ini@6.0.0: resolution: {integrity: sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==} engines: {node: ^20.17.0 || >=22.9.0} @@ -6008,18 +5855,6 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - is-path-cwd@1.0.0: - resolution: {integrity: sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw==} - engines: {node: '>=0.10.0'} - - is-path-in-cwd@1.0.1: - resolution: {integrity: sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==} - engines: {node: '>=0.10.0'} - - is-path-inside@1.0.1: - resolution: {integrity: sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==} - engines: {node: '>=0.10.0'} - is-plain-obj@3.0.0: resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} engines: {node: '>=10'} @@ -6168,9 +6003,6 @@ packages: engines: {node: '>=10'} hasBin: true - jasmine-core@2.8.0: - resolution: {integrity: sha512-SNkOkS+/jMZvLhuSx1fjhcNWUC/KG6oVyFUGkSBEr9n1axSNduWU8GlI7suaHXr4yxjet6KjrUZxUTE5WzzWwQ==} - jasmine-core@4.6.1: resolution: {integrity: sha512-VYz/BjjmC3klLJlLwA4Kw8ytk0zDSmbbDLNs794VnWmkcCB7I9aAL/D48VNQtmITyPvea2C3jdUMfc3kAoy0PQ==} @@ -6183,18 +6015,10 @@ packages: jasmine-spec-reporter@7.0.0: resolution: {integrity: sha512-OtC7JRasiTcjsaCBPtMO0Tl8glCejM4J4/dNuOJdA8lBjz4PmWjYQ6pzb0uzpBNAWJMDudYuj9OdXJWqM2QTJg==} - jasmine@2.8.0: - resolution: {integrity: sha512-KbdGQTf5jbZgltoHs31XGiChAPumMSY64OZMWLNYnEnMfG5uwGBhffePwuskexjT+/Jea/gU3qAU8344hNohSw==} - hasBin: true - jasmine@6.1.0: resolution: {integrity: sha512-WPphPqEMY0uBRMjuhRHoVoxQNvJuxIMqz0yIcJ3k3oYxBedeGoH60/NXNgasxnx2FvfXrq5/r+2wssJ7WE8ABw==} hasBin: true - jasminewd2@2.2.0: - resolution: {integrity: sha512-Rn0nZe4rfDhzA63Al3ZGh0E+JTmM6ESZYXJGKuqKGZObsAB9fwXPD03GjtIEvJBDOhN94T5MzbwZSqzFHSQPzg==} - engines: {node: '>= 6.9.x'} - jest-worker@27.5.1: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} @@ -6293,17 +6117,10 @@ packages: resolution: {integrity: sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==} engines: {node: '>=12', npm: '>=6'} - jsprim@1.4.2: - resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} - engines: {node: '>=0.6.0'} - jsprim@2.0.2: resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==} engines: {'0': node >=0.6.0} - jszip@3.10.1: - resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} - jwa@2.0.1: resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} @@ -6378,9 +6195,6 @@ packages: webpack: optional: true - lie@3.3.0: - resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} - limiter@1.1.5: resolution: {integrity: sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==} @@ -6407,10 +6221,6 @@ packages: resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} engines: {node: '>= 12.13.0'} - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -6508,9 +6318,6 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - make-fetch-happen@15.0.3: resolution: {integrity: sha512-iyyEpDty1mwW3dGlYXAJqC/azFn5PPvgKVwXayOGBSmKLxhKZ9fg4qIan2ePpp1vJIwfFiO34LAPZgq9SZW9Aw==} engines: {node: ^20.17.0 || >=22.9.0} @@ -6858,9 +6665,6 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - oauth-sign@0.9.0: - resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} - object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -6945,10 +6749,6 @@ packages: ordered-binary@1.6.1: resolution: {integrity: sha512-QkCdPooczexPLiXIrbVOPYkR3VO3T6v2OyKRkR1Xbhpy7/LAVXwahnRCgRp78Oe/Ehf0C/HATAxfSr6eA1oX+w==} - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - outvariant@1.4.3: resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==} @@ -6964,18 +6764,10 @@ packages: resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} engines: {node: '>=4'} - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} @@ -7000,10 +6792,6 @@ packages: resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} engines: {node: '>=8'} - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} @@ -7051,9 +6839,6 @@ packages: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} - path-is-inside@1.0.2: - resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} - path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -7101,10 +6886,6 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - pify@3.0.0: resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} engines: {node: '>=4'} @@ -7113,14 +6894,6 @@ packages: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} - pinkie-promise@2.0.1: - resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} - engines: {node: '>=0.10.0'} - - pinkie@2.0.4: - resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} - engines: {node: '>=0.10.0'} - pino-abstract-transport@1.2.0: resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==} @@ -7269,12 +7042,6 @@ packages: resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==} engines: {node: '>=12.0.0'} - protractor@7.0.0: - resolution: {integrity: sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw==} - engines: {node: '>=10.13.x'} - deprecated: We have news to share - Protractor is deprecated and will reach end-of-life by Summer 2023. To learn more and find out about other options please refer to this post on the Angular blog. Thank you for using and contributing to Protractor. https://goo.gle/state-of-e2e-in-angular - hasBin: true - proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} @@ -7285,9 +7052,6 @@ packages: prr@1.0.1: resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} - psl@1.15.0: - resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} - pump@2.0.1: resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} @@ -7320,14 +7084,6 @@ packages: resolution: {integrity: sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==} engines: {node: '>=16.0.0'} - q@1.4.1: - resolution: {integrity: sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg==} - engines: {node: '>=0.6.0', teleport: '>=0.2.0'} - deprecated: |- - You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. - - (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) - qjobs@1.2.0: resolution: {integrity: sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==} engines: {node: '>=0.9'} @@ -7340,10 +7096,6 @@ packages: resolution: {integrity: sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==} engines: {node: '>=0.6'} - qs@6.5.5: - resolution: {integrity: sha512-mzR4sElr1bfCaPJe7m8ilJ6ZXdDaGoObcYR0ZHSsktM/Lt21MVHj5De30GQH2eiZ1qGRTO7LCAzQsUeXTNexWQ==} - engines: {node: '>=0.6'} - queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -7435,11 +7187,6 @@ packages: resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==} hasBin: true - request@2.88.2: - resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} - engines: {node: '>= 6'} - deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 - require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -7448,9 +7195,6 @@ packages: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} @@ -7503,11 +7247,6 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} deprecated: Rimraf versions prior to v4 are no longer supported @@ -7621,9 +7360,6 @@ packages: engines: {node: '>=14.0.0'} hasBin: true - saucelabs@1.5.0: - resolution: {integrity: sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==} - sax@1.4.4: resolution: {integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==} engines: {node: '>=11.0.0'} @@ -7639,10 +7375,6 @@ packages: select-hose@2.0.0: resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} - selenium-webdriver@3.6.0: - resolution: {integrity: sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==} - engines: {node: '>= 6.9.0'} - selfsigned@5.5.0: resolution: {integrity: sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==} engines: {node: '>=18'} @@ -7696,9 +7428,6 @@ packages: server-destroy@1.0.1: resolution: {integrity: sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==} - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -7711,9 +7440,6 @@ packages: resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} engines: {node: '>= 0.4'} - setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -7813,16 +7539,9 @@ packages: peerDependencies: webpack: ^5.72.1 - source-map-support@0.4.18: - resolution: {integrity: sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==} - source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -7971,10 +7690,6 @@ packages: string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - strip-ansi@3.0.1: - resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} - engines: {node: '>=0.10.0'} - strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -7998,10 +7713,6 @@ packages: resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} engines: {node: '>=18'} - supports-color@2.0.0: - resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} - engines: {node: '>=0.8.0'} - supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -8116,10 +7827,6 @@ packages: resolution: {integrity: sha512-ASdhgQIBSay0R/eXggAkQ53G4nTJqTXqC2kbaBbdDwM7SkjyZyO0OaaN1/FH7U/yCeqOHDwFO5j8+Os/IS1dXw==} hasBin: true - tmp@0.0.30: - resolution: {integrity: sha512-HXdTB7lvMwcb55XFfrTM8CPr/IYREk4hVBFaQ4b/6nInrluSL86hfHm7vu0luYKCfyBZp2trCjpc8caC3vVM3w==} - engines: {node: '>=0.4.0'} - tmp@0.2.5: resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} engines: {node: '>=14.14'} @@ -8136,10 +7843,6 @@ packages: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} - tough-cookie@2.5.0: - resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} - engines: {node: '>=0.8'} - tough-cookie@5.1.2: resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} engines: {node: '>=16'} @@ -8171,20 +7874,6 @@ packages: peerDependencies: typescript: '>=4.8.4' - ts-node@10.9.2: - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} @@ -8363,18 +8052,10 @@ packages: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} - uuid@3.4.0: - resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. - hasBin: true - uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true - v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -8510,15 +8191,6 @@ packages: web-vitals@4.2.4: resolution: {integrity: sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==} - webdriver-js-extender@2.1.0: - resolution: {integrity: sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==} - engines: {node: '>=6.9.x'} - - webdriver-manager@12.1.9: - resolution: {integrity: sha512-Yl113uKm8z4m/KMUVWHq1Sjtla2uxEBtx2Ue3AmIlnlPAKloDn/Lvmy6pqWCUersVISpdMeVpAaGbNnvMuT2LQ==} - engines: {node: '>=6.9.x'} - hasBin: true - webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -8607,9 +8279,6 @@ packages: resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} engines: {node: '>= 0.4'} - which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - which-typed-array@1.1.20: resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==} engines: {node: '>= 0.4'} @@ -8647,10 +8316,6 @@ packages: resolution: {integrity: sha512-SGcvg80f0wUy2/fXES19feHMz8E0JoXv2uNgHOu4Dgi2OrCy1lqwFYEJz1BLbDI0exjPMe/ZdzZ/YpGECBG/aQ==} engines: {node: '>=20'} - wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -8718,14 +8383,6 @@ packages: resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} engines: {node: '>=18'} - xml2js@0.4.23: - resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==} - engines: {node: '>=4.0.0'} - - xmlbuilder@11.0.1: - resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} - engines: {node: '>=4.0'} - xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} @@ -8737,9 +8394,6 @@ packages: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} - y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -8759,10 +8413,6 @@ packages: engines: {node: '>= 14.6'} hasBin: true - yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} - yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} @@ -8775,10 +8425,6 @@ packages: resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} engines: {node: ^20.19.0 || ^22.12.0 || >=23} - yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} - yargs@16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} @@ -8794,10 +8440,6 @@ packages: yauzl@2.10.0: resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} - yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -9805,10 +9447,6 @@ snapshots: conventional-commits-filter: 5.0.0 conventional-commits-parser: 6.2.1 - '@cspotcode/source-map-support@0.8.1': - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - '@csstools/color-helpers@6.0.1': {} '@csstools/css-calc@3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': @@ -10604,11 +10242,6 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping@0.3.9': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 - '@js-sdsl/ordered-map@4.4.2': {} '@jsonjoy.com/base64@1.1.2(tslib@2.8.1)': @@ -11602,14 +11235,6 @@ snapshots: '@tootallnate/once@2.0.0': {} - '@tsconfig/node10@1.0.12': {} - - '@tsconfig/node12@1.0.11': {} - - '@tsconfig/node14@1.0.3': {} - - '@tsconfig/node16@1.0.4': {} - '@tufjs/canonical-json@2.0.0': {} '@tufjs/models@4.1.0': @@ -11836,8 +11461,6 @@ snapshots: '@types/duplexify': 3.6.5 '@types/node': 22.19.11 - '@types/q@0.0.32': {} - '@types/qs@6.14.0': {} '@types/range-parser@1.2.7': {} @@ -11852,8 +11475,6 @@ snapshots: '@types/retry@0.12.2': {} - '@types/selenium-webdriver@3.0.26': {} - '@types/semver@7.7.1': {} '@types/send@0.17.6': @@ -12338,10 +11959,6 @@ snapshots: dependencies: acorn: 8.16.0 - acorn-walk@8.3.4: - dependencies: - acorn: 8.15.0 - acorn@8.15.0: {} acorn@8.16.0: {} @@ -12351,12 +11968,6 @@ snapshots: loader-utils: 2.0.4 regex-parser: 2.3.1 - adm-zip@0.5.16: {} - - agent-base@4.3.0: - dependencies: - es6-promisify: 5.0.0 - agent-base@6.0.2(supports-color@10.2.2): dependencies: debug: 4.4.3(supports-color@10.2.2) @@ -12424,14 +12035,10 @@ snapshots: ansi-html-community@0.0.8: {} - ansi-regex@2.1.1: {} - ansi-regex@5.0.1: {} ansi-regex@6.2.2: {} - ansi-styles@2.2.1: {} - ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 @@ -12445,8 +12052,6 @@ snapshots: apache-md5@1.1.8: {} - arg@4.1.3: {} - argparse@2.0.1: {} array-buffer-byte-length@1.0.2: @@ -12469,14 +12074,8 @@ snapshots: is-string: 1.1.1 math-intrinsics: 1.1.0 - array-union@1.0.2: - dependencies: - array-uniq: 1.0.3 - array-union@3.0.1: {} - array-uniq@1.0.3: {} - array.prototype.findlastindex@1.2.6: dependencies: call-bind: 1.0.8 @@ -12511,8 +12110,6 @@ snapshots: get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 - arrify@1.0.1: {} - arrify@2.0.1: {} asn1@0.2.6: @@ -12660,10 +12257,6 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - blocking-proxy@1.0.1: - dependencies: - minimist: 1.2.8 - body-parser@1.20.4: dependencies: bytes: 3.1.2 @@ -12789,12 +12382,6 @@ snapshots: node-releases: 2.0.27 update-browserslist-db: 1.2.3(browserslist@4.28.1) - browserstack@1.6.1: - dependencies: - https-proxy-agent: 2.2.4 - transitivePeerDependencies: - - supports-color - bs-recipes@1.3.4: {} buffer-crc32@0.2.13: {} @@ -12870,22 +12457,12 @@ snapshots: callsites@3.1.0: {} - camelcase@5.3.1: {} - caniuse-lite@1.0.30001770: {} caseless@0.12.0: {} chai@6.2.2: {} - chalk@1.1.3: - dependencies: - ansi-styles: 2.2.1 - escape-string-regexp: 1.0.5 - has-ansi: 2.0.0 - strip-ansi: 3.0.1 - supports-color: 2.0.0 - chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -12950,12 +12527,6 @@ snapshots: dependencies: typanion: 3.14.0 - cliui@6.0.0: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - cliui@7.0.4: dependencies: string-width: 4.2.3 @@ -13109,8 +12680,6 @@ snapshots: optionalDependencies: typescript: 5.9.3 - create-require@1.1.1: {} - cross-fetch@3.1.5(encoding@0.1.13): dependencies: node-fetch: 2.6.7(encoding@0.1.13) @@ -13231,8 +12800,6 @@ snapshots: optionalDependencies: supports-color: 10.2.2 - decamelize@1.2.0: {} - decimal.js@10.6.0: {} decompress-response@6.0.0: @@ -13268,16 +12835,6 @@ snapshots: defu@6.1.4: {} - del@2.2.2: - dependencies: - globby: 5.0.0 - is-path-cwd: 1.0.0 - is-path-in-cwd: 1.0.1 - object-assign: 4.1.1 - pify: 2.3.0 - pinkie-promise: 2.0.1 - rimraf: 2.7.1 - delayed-stream@1.0.0: {} depd@1.1.2: {} @@ -13299,8 +12856,6 @@ snapshots: di@0.0.1: {} - diff@4.0.4: {} - dns-packet@5.6.1: dependencies: '@leichtgewicht/ip-codec': 2.0.5 @@ -13552,12 +13107,6 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 - es6-promise@4.2.8: {} - - es6-promisify@5.0.0: - dependencies: - es6-promise: 4.2.8 - esbuild-wasm@0.27.3: {} esbuild@0.27.3: @@ -13593,8 +13142,6 @@ snapshots: escape-html@1.0.3: {} - escape-string-regexp@1.0.5: {} - escape-string-regexp@4.0.0: {} eslint-config-prettier@10.1.8(eslint@10.0.2(jiti@2.6.1)): @@ -13759,8 +13306,6 @@ snapshots: dependencies: eventsource-parser: 3.0.6 - exit@0.1.2: {} - expect-type@1.3.0: {} exponential-backoff@3.1.3: {} @@ -13972,11 +13517,6 @@ snapshots: find-up-simple@1.0.1: {} - find-up@4.1.0: - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - find-up@5.0.0: dependencies: locate-path: 6.0.0 @@ -14048,12 +13588,6 @@ snapshots: form-data-encoder@1.7.2: {} - form-data@2.3.3: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - form-data@4.0.5: dependencies: asynckit: 0.4.0 @@ -14232,15 +13766,6 @@ snapshots: define-properties: 1.2.1 gopd: 1.2.0 - globby@5.0.0: - dependencies: - array-union: 1.0.2 - arrify: 1.0.1 - glob: 7.2.3 - object-assign: 4.1.1 - pify: 2.3.0 - pinkie-promise: 2.0.1 - google-auth-library@10.5.0(supports-color@10.2.2): dependencies: base64-js: 1.5.1 @@ -14329,17 +13854,6 @@ snapshots: optionalDependencies: uglify-js: 3.19.3 - har-schema@2.0.0: {} - - har-validator@5.1.5: - dependencies: - ajv: 6.14.0 - har-schema: 2.0.0 - - has-ansi@2.0.0: - dependencies: - ansi-regex: 2.1.1 - has-bigints@1.1.0: {} has-flag@4.0.0: {} @@ -14468,12 +13982,6 @@ snapshots: transitivePeerDependencies: - debug - http-signature@1.2.0: - dependencies: - assert-plus: 1.0.0 - jsprim: 1.4.2 - sshpk: 1.18.0 - http-signature@1.4.0: dependencies: assert-plus: 1.0.0 @@ -14487,13 +13995,6 @@ snapshots: quick-lru: 5.1.1 resolve-alpn: 1.2.1 - https-proxy-agent@2.2.4: - dependencies: - agent-base: 4.3.0 - debug: 3.2.7 - transitivePeerDependencies: - - supports-color - https-proxy-agent@5.0.1(supports-color@10.2.2): dependencies: agent-base: 6.0.2(supports-color@10.2.2) @@ -14543,8 +14044,6 @@ snapshots: image-size@0.5.5: optional: true - immediate@3.0.6: {} - immutable@3.8.2: {} immutable@5.1.4: {} @@ -14563,8 +14062,6 @@ snapshots: inherits@2.0.4: {} - ini@1.3.8: {} - ini@6.0.0: {} injection-js@2.6.1: @@ -14690,16 +14187,6 @@ snapshots: is-number@7.0.0: {} - is-path-cwd@1.0.0: {} - - is-path-in-cwd@1.0.1: - dependencies: - is-path-inside: 1.0.1 - - is-path-inside@1.0.1: - dependencies: - path-is-inside: 1.0.2 - is-plain-obj@3.0.0: {} is-plain-object@2.0.4: @@ -14846,8 +14333,6 @@ snapshots: filelist: 1.0.4 picocolors: 1.1.1 - jasmine-core@2.8.0: {} - jasmine-core@4.6.1: {} jasmine-core@6.1.0: {} @@ -14861,20 +14346,12 @@ snapshots: dependencies: colors: 1.4.0 - jasmine@2.8.0: - dependencies: - exit: 0.1.2 - glob: 7.2.3 - jasmine-core: 2.8.0 - jasmine@6.1.0: dependencies: '@jasminejs/reporters': 1.0.0 glob: 13.0.3 jasmine-core: 6.1.0 - jasminewd2@2.2.0: {} - jest-worker@27.5.1: dependencies: '@types/node': 22.19.11 @@ -14979,13 +14456,6 @@ snapshots: ms: 2.1.3 semver: 7.7.4 - jsprim@1.4.2: - dependencies: - assert-plus: 1.0.0 - extsprintf: 1.3.0 - json-schema: 0.4.0 - verror: 1.10.0 - jsprim@2.0.2: dependencies: assert-plus: 1.0.0 @@ -14993,13 +14463,6 @@ snapshots: json-schema: 0.4.0 verror: 1.10.0 - jszip@3.10.1: - dependencies: - lie: 3.3.0 - pako: 1.0.11 - readable-stream: 2.3.8 - setimmediate: 1.0.5 - jwa@2.0.1: dependencies: buffer-equal-constant-time: 1.0.1 @@ -15115,10 +14578,6 @@ snapshots: optionalDependencies: webpack: 5.105.2(esbuild@0.27.3) - lie@3.3.0: - dependencies: - immediate: 3.0.6 - limiter@1.1.5: {} lines-and-columns@1.2.4: {} @@ -15160,10 +14619,6 @@ snapshots: loader-utils@3.3.1: {} - locate-path@5.0.0: - dependencies: - p-locate: 4.1.0 - locate-path@6.0.0: dependencies: p-locate: 5.0.0 @@ -15263,8 +14718,6 @@ snapshots: dependencies: semver: 7.7.4 - make-error@1.3.6: {} - make-fetch-happen@15.0.3: dependencies: '@npmcli/agent': 4.0.0 @@ -15622,8 +15075,6 @@ snapshots: dependencies: boolbase: 1.0.0 - oauth-sign@0.9.0: {} - object-assign@4.1.1: {} object-hash@3.0.0: {} @@ -15728,8 +15179,6 @@ snapshots: ordered-binary@1.6.1: optional: true - os-tmpdir@1.0.2: {} - outvariant@1.4.3: {} own-keys@1.0.1: @@ -15742,18 +15191,10 @@ snapshots: p-finally@1.0.0: {} - p-limit@2.3.0: - dependencies: - p-try: 2.2.0 - p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 - p-locate@4.1.0: - dependencies: - p-limit: 2.3.0 - p-locate@5.0.0: dependencies: p-limit: 3.1.0 @@ -15780,8 +15221,6 @@ snapshots: dependencies: p-finally: 1.0.0 - p-try@2.2.0: {} - package-json-from-dist@1.0.1: {} pacote@21.4.0: @@ -15843,8 +15282,6 @@ snapshots: path-is-absolute@1.0.1: {} - path-is-inside@1.0.2: {} - path-key@3.1.1: {} path-parse@1.0.7: {} @@ -15883,19 +15320,11 @@ snapshots: picomatch@4.0.3: {} - pify@2.3.0: {} - pify@3.0.0: {} pify@4.0.1: optional: true - pinkie-promise@2.0.1: - dependencies: - pinkie: 2.0.4 - - pinkie@2.0.4: {} - pino-abstract-transport@1.2.0: dependencies: readable-stream: 4.7.0 @@ -16044,26 +15473,6 @@ snapshots: '@types/node': 22.19.11 long: 5.3.2 - protractor@7.0.0: - dependencies: - '@types/q': 0.0.32 - '@types/selenium-webdriver': 3.0.26 - blocking-proxy: 1.0.1 - browserstack: 1.6.1 - chalk: 1.1.3 - glob: 7.2.3 - jasmine: 2.8.0 - jasminewd2: 2.2.0 - q: 1.4.1 - saucelabs: 1.5.0 - selenium-webdriver: 3.6.0 - source-map-support: 0.4.18 - webdriver-js-extender: 2.1.0 - webdriver-manager: 12.1.9 - yargs: 15.4.1 - transitivePeerDependencies: - - supports-color - proxy-addr@2.0.7: dependencies: forwarded: 0.2.0 @@ -16074,10 +15483,6 @@ snapshots: prr@1.0.1: optional: true - psl@1.15.0: - dependencies: - punycode: 2.3.1 - pump@2.0.1: dependencies: end-of-stream: 1.4.5 @@ -16134,8 +15539,6 @@ snapshots: pvutils@1.1.5: {} - q@1.4.1: {} - qjobs@1.2.0: {} qs@6.14.2: @@ -16146,8 +15549,6 @@ snapshots: dependencies: side-channel: 1.1.0 - qs@6.5.5: {} - queue-microtask@1.2.3: {} quick-format-unescaped@4.0.4: {} @@ -16280,35 +15681,10 @@ snapshots: dependencies: jsesc: 3.1.0 - request@2.88.2: - dependencies: - aws-sign2: 0.7.0 - aws4: 1.13.2 - caseless: 0.12.0 - combined-stream: 1.0.8 - extend: 3.0.2 - forever-agent: 0.6.1 - form-data: 2.3.3 - har-validator: 5.1.5 - http-signature: 1.2.0 - is-typedarray: 1.0.0 - isstream: 0.1.2 - json-stringify-safe: 5.0.1 - mime-types: 2.1.35 - oauth-sign: 0.9.0 - performance-now: 2.1.0 - qs: 6.5.5 - safe-buffer: 5.2.1 - tough-cookie: 2.5.0 - tunnel-agent: 0.6.0 - uuid: 3.4.0 - require-directory@2.1.1: {} require-from-string@2.0.2: {} - require-main-filename@2.0.0: {} - requires-port@1.0.0: {} resolve-alpn@1.2.1: {} @@ -16362,10 +15738,6 @@ snapshots: rfdc@1.4.1: {} - rimraf@2.7.1: - dependencies: - glob: 7.2.3 - rimraf@3.0.2: dependencies: glob: 7.2.3 @@ -16541,13 +15913,8 @@ snapshots: optionalDependencies: '@parcel/watcher': 2.5.6 - saucelabs@1.5.0: - dependencies: - https-proxy-agent: 2.2.4 - transitivePeerDependencies: - - supports-color - - sax@1.4.4: {} + sax@1.4.4: + optional: true saxes@6.0.0: dependencies: @@ -16562,19 +15929,13 @@ snapshots: select-hose@2.0.0: {} - selenium-webdriver@3.6.0: - dependencies: - jszip: 3.10.1 - rimraf: 2.7.1 - tmp: 0.0.30 - xml2js: 0.4.23 - selfsigned@5.5.0: dependencies: '@peculiar/x509': 1.14.3 pkijs: 3.3.3 - semver@5.7.2: {} + semver@5.7.2: + optional: true semver@6.3.1: {} @@ -16654,8 +16015,6 @@ snapshots: server-destroy@1.0.1: {} - set-blocking@2.0.0: {} - set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -16678,8 +16037,6 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.1.1 - setimmediate@1.0.5: {} - setprototypeof@1.2.0: {} shallow-clone@3.0.1: @@ -16822,17 +16179,11 @@ snapshots: source-map-js: 1.2.1 webpack: 5.105.2(esbuild@0.27.3) - source-map-support@0.4.18: - dependencies: - source-map: 0.5.7 - source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - source-map@0.5.7: {} - source-map@0.6.1: {} source-map@0.7.6: {} @@ -17021,10 +16372,6 @@ snapshots: dependencies: safe-buffer: 5.2.1 - strip-ansi@3.0.1: - dependencies: - ansi-regex: 2.1.1 - strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -17041,8 +16388,6 @@ snapshots: supports-color@10.2.2: {} - supports-color@2.0.0: {} - supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -17168,10 +16513,6 @@ snapshots: dependencies: tldts-core: 7.0.23 - tmp@0.0.30: - dependencies: - os-tmpdir: 1.0.2 - tmp@0.2.5: {} to-regex-range@5.0.1: @@ -17182,11 +16523,6 @@ snapshots: toidentifier@1.0.1: {} - tough-cookie@2.5.0: - dependencies: - psl: 1.15.0 - punycode: 2.3.1 - tough-cookie@5.1.2: dependencies: tldts: 6.1.86 @@ -17211,24 +16547,6 @@ snapshots: dependencies: typescript: 5.9.3 - ts-node@10.9.2(@types/node@22.19.11)(typescript@5.9.3): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.12 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 22.19.11 - acorn: 8.15.0 - acorn-walk: 8.3.4 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.4 - make-error: 1.3.6 - typescript: 5.9.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 @@ -17415,12 +16733,8 @@ snapshots: utils-merge@1.0.1: {} - uuid@3.4.0: {} - uuid@8.3.2: {} - v8-compile-cache-lib@3.0.1: {} - validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 @@ -17585,25 +16899,6 @@ snapshots: web-vitals@4.2.4: {} - webdriver-js-extender@2.1.0: - dependencies: - '@types/selenium-webdriver': 3.0.26 - selenium-webdriver: 3.6.0 - - webdriver-manager@12.1.9: - dependencies: - adm-zip: 0.5.16 - chalk: 1.1.3 - del: 2.2.2 - glob: 7.2.3 - ini: 1.3.8 - minimist: 1.2.8 - q: 1.4.1 - request: 2.88.2 - rimraf: 2.7.1 - semver: 5.7.2 - xml2js: 0.4.23 - webidl-conversions@3.0.1: {} webidl-conversions@8.0.1: {} @@ -17759,8 +17054,6 @@ snapshots: is-weakmap: 2.0.2 is-weakset: 2.0.4 - which-module@2.0.1: {} - which-typed-array@1.1.20: dependencies: available-typed-arrays: 1.0.7 @@ -17800,12 +17093,6 @@ snapshots: string-width: 8.2.0 strip-ansi: 7.1.2 - wrap-ansi@6.2.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 @@ -17853,21 +17140,12 @@ snapshots: xml-name-validator@5.0.0: {} - xml2js@0.4.23: - dependencies: - sax: 1.4.4 - xmlbuilder: 11.0.1 - - xmlbuilder@11.0.1: {} - xmlchars@2.2.0: {} xmlhttprequest-ssl@2.1.2: {} xtend@4.0.2: {} - y18n@4.0.3: {} - y18n@5.0.8: {} yallist@3.1.1: {} @@ -17878,31 +17156,12 @@ snapshots: yaml@2.8.2: {} - yargs-parser@18.1.3: - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - yargs-parser@20.2.9: {} yargs-parser@21.1.1: {} yargs-parser@22.0.0: {} - yargs@15.4.1: - dependencies: - cliui: 6.0.0 - decamelize: 1.2.0 - find-up: 4.1.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 4.2.3 - which-module: 2.0.1 - y18n: 4.0.3 - yargs-parser: 18.1.3 - yargs@16.2.0: dependencies: cliui: 7.0.4 @@ -17937,8 +17196,6 @@ snapshots: buffer-crc32: 0.2.13 fd-slicer: 1.1.0 - yn@3.1.1: {} - yocto-queue@0.1.0: {} yoctocolors@2.1.2: {} diff --git a/tests/e2e/tests/protractor/test-fails.ts b/tests/e2e/tests/protractor/test-fails.ts deleted file mode 100644 index 5204e29338fa..000000000000 --- a/tests/e2e/tests/protractor/test-fails.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { execAndCaptureError, ng } from '../../utils/process'; -import { updateJsonFile } from '../../utils/project'; - -export default async function () { - // Setup `protractor` builder. - await updateJsonFile('angular.json', (config) => { - config.projects['test-project'].architect['e2e'] = { - builder: '@angular-devkit/build-angular:protractor', - options: { - protractorConfig: '', - }, - }; - }); - - const error = await execAndCaptureError('ng', ['e2e']); - if (!error.message.includes('Protractor has reached end-of-life')) { - throw new Error(`Protractor did not fail with an appropriate message. Got:\n${error.message}`); - } -} diff --git a/tests/e2e/utils/BUILD.bazel b/tests/e2e/utils/BUILD.bazel index 8082ab9d97c4..d4493fb14492 100644 --- a/tests/e2e/utils/BUILD.bazel +++ b/tests/e2e/utils/BUILD.bazel @@ -14,7 +14,6 @@ ts_project( "//:node_modules/@types/node", "//:node_modules/@types/semver", "//:node_modules/fast-glob", - "//:node_modules/protractor", "//:node_modules/puppeteer", "//:node_modules/semver", "//:node_modules/verdaccio",