1
0
mirror of https://github.com/angular/angular-cli.git synced 2025-05-15 18:13:38 +08:00

Compare commits

...

6 Commits

Author SHA1 Message Date
Angular Robot
da94f638d9 build: update devinfra digest to 36bfe0a 2025-03-18 15:03:44 +00:00
Paul Gschwendtner
fe69a9b23a build: improve debugging mode of e2e test runner
Currently the `while` loop may either be causing the process to be
really stuck/hanging, or it somehow causes Node to exit.

This change makes the logic more robust and less CPU consuming.
2025-03-18 14:52:40 +01:00
Charles Lyding
bc0f07b484 fix(@schematics/angular): generate services without a .service extension/type
To align with the updated style guide, Angular v20 will generate services
without a `.service` file extension type for all service related
files by default. Projects will automatically use this naming convention.
Projects can however opt-out by setting the `type` option to `Service`
for the service schematic. This can be done as a default in the `angular.json`
or directly on the commandline via `--type=Service` when executing `ng generate`.
As an example, `example.service.ts` will now be named `example.ts`. Additionally,
the TypeScript class name will be `Example` instead of the previous `ExampleService`.
2025-03-18 07:25:46 -04:00
Charles Lyding
e7ae25a76b refactor(@schematics/angular): remove unneeded initial library service generation
The `library` schematic will now longer generate an empty Angular service
with the name of the library. Using only the name would generate a file
name conflict with the component now that the type suffix is no longer
used by default. Additionally, services tend to be specific to a particular
behavior and/or functionality and are named as such. A generically named
empty service will typically be deleted or renamed.
2025-03-18 07:25:46 -04:00
Charles Lyding
e07491e80e build: move devkit core specific dependencies out of root
With the migration to `rules_js`, package specific dependencies now only
need to be referenced with the source `package.json` for each specific
package. Most of the `@angular-devkit/core` specific dependencies have now been
moved. This is not exhaustive and further changes will continue to move
additional dependencies.
2025-03-17 17:18:58 -04:00
Angular Robot
e774476413 build: lock file maintenance 2025-03-17 12:28:40 -04:00
27 changed files with 184 additions and 211 deletions

@ -234,7 +234,7 @@ load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
git_repository(
name = "devinfra",
commit = "85eab901e27abe60bb725fbfd8def94559cbe636",
commit = "36bfe0a0b79681f75c17049b50123153fc3b02c8",
remote = "https://github.com/angular/dev-infra.git",
)

@ -105,13 +105,11 @@
"@typescript-eslint/parser": "8.26.1",
"@web/test-runner": "^0.20.0",
"ajv": "8.17.1",
"ajv-formats": "3.0.1",
"ansi-colors": "4.1.3",
"beasties": "0.2.0",
"browser-sync": "3.0.3",
"browserslist": "^4.21.5",
"buffer": "6.0.3",
"chokidar": "4.0.3",
"esbuild": "0.25.1",
"esbuild-wasm": "0.25.1",
"eslint": "9.22.0",
@ -130,7 +128,6 @@
"jasmine-core": "~5.6.0",
"jasmine-reporters": "^2.5.2",
"jasmine-spec-reporter": "~7.0.0",
"jsonc-parser": "3.3.1",
"karma": "~6.4.0",
"karma-chrome-launcher": "~3.2.0",
"karma-coverage": "~2.2.0",
@ -148,7 +145,6 @@
"open": "10.1.0",
"ora": "5.4.1",
"parse5-html-rewriting-stream": "7.0.0",
"picomatch": "4.0.2",
"piscina": "4.9.0",
"postcss": "8.5.3",
"prettier": "^3.0.0",
@ -162,7 +158,6 @@
"sass": "1.85.1",
"semver": "7.7.1",
"shelljs": "^0.9.0",
"source-map": "0.7.4",
"source-map-support": "0.5.21",
"symbol-observable": "4.0.0",
"tar": "^7.0.0",

@ -79,6 +79,8 @@ ts_project(
":node_modules/@angular/ssr",
":node_modules/@inquirer/confirm",
":node_modules/@vitejs/plugin-basic-ssl",
":node_modules/jsonc-parser",
":node_modules/picomatch",
":node_modules/vite",
"//:node_modules/@ampproject/remapping",
"//:node_modules/@angular/common",
@ -105,7 +107,6 @@ ts_project(
"//:node_modules/esbuild-wasm",
"//:node_modules/https-proxy-agent",
"//:node_modules/istanbul-lib-instrument",
"//:node_modules/jsonc-parser",
"//:node_modules/karma",
"//:node_modules/less",
"//:node_modules/listr2",
@ -114,7 +115,6 @@ ts_project(
"//:node_modules/mrmime",
"//:node_modules/ng-packagr",
"//:node_modules/parse5-html-rewriting-stream",
"//:node_modules/picomatch",
"//:node_modules/piscina",
"//:node_modules/postcss",
"//:node_modules/rollup",

@ -31,6 +31,7 @@
"esbuild": "0.25.1",
"https-proxy-agent": "7.0.6",
"istanbul-lib-instrument": "6.0.3",
"jsonc-parser": "3.3.1",
"listr2": "8.2.5",
"magic-string": "0.30.17",
"mrmime": "2.0.1",

@ -52,6 +52,7 @@ ts_project(
":node_modules/@listr2/prompt-adapter-inquirer",
":node_modules/@yarnpkg/lockfile",
":node_modules/ini",
":node_modules/jsonc-parser",
":node_modules/npm-package-arg",
":node_modules/npm-pick-manifest",
":node_modules/pacote",
@ -66,7 +67,6 @@ ts_project(
"//:node_modules/@types/semver",
"//:node_modules/@types/yargs",
"//:node_modules/@types/yarnpkg__lockfile",
"//:node_modules/jsonc-parser",
"//:node_modules/listr2",
"//:node_modules/semver",
"//:node_modules/symbol-observable",

@ -141,11 +141,11 @@ ts_project(
":node_modules/@babel/runtime",
":node_modules/@discoveryjs/json-ext",
":node_modules/@ngtools/webpack",
":node_modules/@vitejs/plugin-basic-ssl",
":node_modules/autoprefixer",
":node_modules/babel-loader",
":node_modules/copy-webpack-plugin",
":node_modules/css-loader",
":node_modules/jsonc-parser",
":node_modules/less",
":node_modules/less-loader",
":node_modules/license-webpack-plugin",
@ -183,7 +183,6 @@ ts_project(
"//:node_modules/@types/semver",
"//:node_modules/@types/watchpack",
"//:node_modules/@web/test-runner",
"//:node_modules/ajv",
"//:node_modules/ansi-colors",
"//:node_modules/browser-sync",
"//:node_modules/browserslist",
@ -192,7 +191,6 @@ ts_project(
"//:node_modules/fast-glob",
"//:node_modules/http-proxy-middleware",
"//:node_modules/istanbul-lib-instrument",
"//:node_modules/jsonc-parser",
"//:node_modules/karma",
"//:node_modules/karma-source-map-support",
"//:node_modules/ng-packagr",
@ -365,6 +363,7 @@ LARGE_SPECS = {
"//:node_modules/@types/node",
"//:node_modules/@angular/animations",
"//:node_modules/@angular/material",
"//:node_modules/ajv",
],
},
"prerender": {},

@ -1,4 +1,5 @@
load("@devinfra//bazel/api-golden:index_rjs.bzl", "api_golden_test_npm_package")
load("@npm2//:defs.bzl", "npm_link_all_packages")
load("//tools:defaults2.bzl", "jasmine_test", "npm_package", "ts_project")
# Copyright Google Inc. All Rights Reserved.
@ -9,6 +10,8 @@ package(default_visibility = ["//visibility:public"])
licenses(["notice"])
npm_link_all_packages()
RUNTIME_ASSETS = glob(
include = ["**/*.json"],
# NB: we need to exclude the nested node_modules that is laid out by yarn workspaces
@ -29,19 +32,15 @@ ts_project(
data = RUNTIME_ASSETS,
module_name = "@angular-devkit/core",
deps = [
":node_modules/ajv",
":node_modules/ajv-formats",
":node_modules/jsonc-parser",
":node_modules/picomatch",
":node_modules/source-map",
"//:node_modules/@types/jasmine",
"//:node_modules/@types/node",
"//:node_modules/@types/picomatch",
"//:node_modules/@types/jasmine",
"//:node_modules/ajv",
"//:node_modules/ajv-formats",
"//:node_modules/jsonc-parser",
"//:node_modules/picomatch",
"//:node_modules/rxjs",
"//:node_modules/source-map",
# @node_module: typescript:es2015.proxy
# @node_module: typescript:es2015.reflect
# @node_module: typescript:es2015.symbol.wellknown
# @typings: source_map
],
)

@ -21,9 +21,9 @@ ts_project(
module_name = "@angular-devkit/core/node",
deps = [
"//:node_modules/@types/node",
"//:node_modules/chokidar",
"//:node_modules/rxjs",
"//packages/angular_devkit/core",
"//packages/angular_devkit/core:node_modules/chokidar",
],
)

@ -32,6 +32,9 @@
"rxjs": "7.8.2",
"source-map": "0.7.4"
},
"devDependencies": {
"chokidar": "4.0.3"
},
"peerDependencies": {
"chokidar": "^4.0.0"
},

@ -28,8 +28,8 @@ ts_project(
module_name = "@angular-devkit/schematics",
deps = [
":node_modules/@angular-devkit/core",
":node_modules/jsonc-parser",
"//:node_modules/@types/node",
"//:node_modules/jsonc-parser",
"//:node_modules/magic-string",
"//:node_modules/rxjs",
],

@ -21,10 +21,10 @@ ts_project(
module_name = "@angular-devkit/schematics/tools",
deps = [
"//:node_modules/@types/node",
"//:node_modules/jsonc-parser",
"//:node_modules/rxjs",
"//packages/angular_devkit/schematics",
"//packages/angular_devkit/schematics:node_modules/@angular-devkit/core",
"//packages/angular_devkit/schematics:node_modules/jsonc-parser",
"//packages/angular_devkit/schematics/tasks",
"//packages/angular_devkit/schematics/tasks/node",
],

@ -90,9 +90,9 @@ ts_project(
deps = [
":node_modules/@angular-devkit/core",
":node_modules/@angular-devkit/schematics",
":node_modules/jsonc-parser",
"//:node_modules/@types/node",
"//:node_modules/browserslist",
"//:node_modules/jsonc-parser",
"//packages/schematics/angular/third_party/github.com/Microsoft/TypeScript",
],
)
@ -123,9 +123,9 @@ ts_project(
":angular",
":node_modules/@angular-devkit/core",
":node_modules/@angular-devkit/schematics",
":node_modules/jsonc-parser",
"//:node_modules/@types/jasmine",
"//:node_modules/@types/node",
"//:node_modules/jsonc-parser",
"//packages/schematics/angular/third_party/github.com/Microsoft/TypeScript",
],
)

@ -2,6 +2,5 @@
* Public API Surface of <%= dasherize(name) %>
*/
export * from './lib/<%= dasherize(name) %>.service';
export * from './lib/<%= dasherize(name) %>';<% if (!standalone) { %>
export * from './lib/<%= dasherize(name) %>.module';<% } %>

@ -185,12 +185,6 @@ export default function (options: LibraryOptions): Rule {
standalone: options.standalone,
project: packageName,
}),
schematic('service', {
name: options.name,
flat: true,
path: sourceDir,
project: packageName,
}),
(_tree: Tree, context: SchematicContext) => {
if (!options.skipPackageJson && !options.skipInstall) {
context.addTask(new NodePackageInstallTask());

@ -57,8 +57,6 @@ describe('Library Schematic', () => {
'/projects/foo/src/my-index.ts',
'/projects/foo/src/lib/foo.spec.ts',
'/projects/foo/src/lib/foo.ts',
'/projects/foo/src/lib/foo.service.spec.ts',
'/projects/foo/src/lib/foo.service.ts',
]),
);
});
@ -102,8 +100,6 @@ describe('Library Schematic', () => {
'/some/other/directory/bar/src/my-index.ts',
'/some/other/directory/bar/src/lib/foo.spec.ts',
'/some/other/directory/bar/src/lib/foo.ts',
'/some/other/directory/bar/src/lib/foo.service.spec.ts',
'/some/other/directory/bar/src/lib/foo.service.ts',
]),
);
});
@ -207,10 +203,8 @@ describe('Library Schematic', () => {
const project = config.projects.pascalCasedName;
expect(project).toBeDefined();
expect(project.root).toEqual('projects/pascal-cased-name');
const svcContent = tree.readContent(
'/projects/pascal-cased-name/src/lib/pascal-cased-name.service.ts',
);
expect(svcContent).toMatch(/providedIn: 'root'/);
const svcContent = tree.readContent('/projects/pascal-cased-name/src/lib/pascal-cased-name.ts');
expect(svcContent).toContain('@Component');
});
describe(`update package.json`, () => {
@ -320,7 +314,6 @@ describe('Library Schematic', () => {
const pkgJsonPath = '/projects/myscope/mylib/package.json';
expect(tree.files).toContain(pkgJsonPath);
expect(tree.files).toContain('/projects/myscope/mylib/src/lib/mylib.service.ts');
expect(tree.files).toContain('/projects/myscope/mylib/src/lib/mylib.ts');
const pkgJson = JSON.parse(tree.readContent(pkgJsonPath));
@ -431,8 +424,6 @@ describe('Library Schematic', () => {
'/projects/foo/src/lib/foo.module.ts',
'/projects/foo/src/lib/foo.spec.ts',
'/projects/foo/src/lib/foo.ts',
'/projects/foo/src/lib/foo.service.spec.ts',
'/projects/foo/src/lib/foo.service.ts',
]),
);
});

@ -0,0 +1,16 @@
import { TestBed } from '@angular/core/testing';
import { <%= classify(name) %><%= classify(type) %> } from './<%= dasherize(name) %><%= type ? '.' + dasherize(type) : '' %>';
describe('<%= classify(name) %><%= classify(type) %>', () => {
let service: <%= classify(name) %><%= classify(type) %>;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(<%= classify(name) %><%= classify(type) %>);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});

@ -3,7 +3,7 @@ import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class <%= classify(name) %>Service {
export class <%= classify(name) %><%= classify(type) %> {
constructor() { }
}

@ -1,16 +0,0 @@
import { TestBed } from '@angular/core/testing';
import { <%= classify(name) %>Service } from './<%= dasherize(name) %>.service';
describe('<%= classify(name) %>Service', () => {
let service: <%= classify(name) %>Service;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(<%= classify(name) %>Service);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});

@ -15,6 +15,9 @@ export default function (options: ServiceOptions): Rule {
const flat = options.flat;
options.flat = true;
// Schematic templates require a defined type value
options.type ??= '';
return generateFromFiles(options, {
'if-flat': (s: string) => (flat ? '' : s),
});

@ -46,15 +46,15 @@ describe('Service Schematic', () => {
const tree = await schematicRunner.runSchematic('service', options, appTree);
const files = tree.files;
expect(files).toContain('/projects/bar/src/app/foo/foo.service.spec.ts');
expect(files).toContain('/projects/bar/src/app/foo/foo.service.ts');
expect(files).toContain('/projects/bar/src/app/foo/foo.spec.ts');
expect(files).toContain('/projects/bar/src/app/foo/foo.ts');
});
it('service should be tree-shakeable', async () => {
const options = { ...defaultOptions };
const tree = await schematicRunner.runSchematic('service', options, appTree);
const content = tree.readContent('/projects/bar/src/app/foo/foo.service.ts');
const content = tree.readContent('/projects/bar/src/app/foo/foo.ts');
expect(content).toMatch(/providedIn: 'root'/);
});
@ -63,8 +63,8 @@ describe('Service Schematic', () => {
const tree = await schematicRunner.runSchematic('service', options, appTree);
const files = tree.files;
expect(files).toContain('/projects/bar/src/app/foo/foo.service.ts');
expect(files).not.toContain('/projects/bar/src/app/foo/foo.service.spec.ts');
expect(files).toContain('/projects/bar/src/app/foo/foo.ts');
expect(files).not.toContain('/projects/bar/src/app/foo/foo.spec.ts');
});
it('should respect the sourceRoot value', async () => {
@ -72,6 +72,24 @@ describe('Service Schematic', () => {
config.projects.bar.sourceRoot = 'projects/bar/custom';
appTree.overwrite('/angular.json', JSON.stringify(config, null, 2));
appTree = await schematicRunner.runSchematic('service', defaultOptions, appTree);
expect(appTree.files).toContain('/projects/bar/custom/app/foo/foo.service.ts');
expect(appTree.files).toContain('/projects/bar/custom/app/foo/foo.ts');
});
it('should respect the type option', async () => {
const options = { ...defaultOptions, type: 'Service' };
const tree = await schematicRunner.runSchematic('service', options, appTree);
const content = tree.readContent('/projects/bar/src/app/foo/foo.service.ts');
const testContent = tree.readContent('/projects/bar/src/app/foo/foo.service.spec.ts');
expect(content).toContain('export class FooService');
expect(testContent).toContain("describe('FooService'");
});
it('should allow empty string in the type option', async () => {
const options = { ...defaultOptions, type: '' };
const tree = await schematicRunner.runSchematic('service', options, appTree);
const content = tree.readContent('/projects/bar/src/app/foo/foo.ts');
const testContent = tree.readContent('/projects/bar/src/app/foo/foo.spec.ts');
expect(content).toContain('export class Foo');
expect(testContent).toContain("describe('Foo'");
});
});

@ -39,6 +39,10 @@
"type": "boolean",
"description": "Skip the generation of a unit test file `spec.ts` for the service.",
"default": false
},
"type": {
"type": "string",
"description": "Append a custom type to the service's filename. For example, if you set the type to `service`, the file will be named `my-service.service.ts`."
}
},
"required": ["name", "project"]

@ -7,12 +7,14 @@
*/
import {
FileOperator,
Rule,
Tree,
apply,
applyTemplates,
chain,
filter,
forEach,
mergeWith,
move,
noop,
@ -31,6 +33,7 @@ export interface GenerateFromFilesOptions {
project: string;
skipTests?: boolean;
templateFilesDirectory?: string;
type?: string;
}
export function generateFromFiles(
@ -56,6 +59,16 @@ export function generateFromFiles(
...options,
...extraTemplateValues,
}),
!options.type
? forEach(((file) => {
return file.path.includes('..')
? {
content: file.content,
path: file.path.replace('..', '.'),
}
: file;
}) as FileOperator)
: noop(),
move(parsedPath.path + (options.flat ? '' : '/' + strings.dasherize(options.name))),
]);

221
pnpm-lock.yaml generated

@ -191,9 +191,6 @@ importers:
ajv:
specifier: 8.17.1
version: 8.17.1
ajv-formats:
specifier: 3.0.1
version: 3.0.1(ajv@8.17.1)
ansi-colors:
specifier: 4.1.3
version: 4.1.3
@ -209,9 +206,6 @@ importers:
buffer:
specifier: 6.0.3
version: 6.0.3
chokidar:
specifier: 4.0.3
version: 4.0.3
esbuild:
specifier: 0.25.1
version: 0.25.1
@ -266,9 +260,6 @@ importers:
jasmine-spec-reporter:
specifier: ~7.0.0
version: 7.0.0
jsonc-parser:
specifier: 3.3.1
version: 3.3.1
karma:
specifier: ~6.4.0
version: 6.4.4
@ -320,9 +311,6 @@ importers:
parse5-html-rewriting-stream:
specifier: 7.0.0
version: 7.0.0
picomatch:
specifier: 4.0.2
version: 4.0.2
piscina:
specifier: 4.9.0
version: 4.9.0
@ -361,10 +349,7 @@ importers:
version: 7.7.1
shelljs:
specifier: ^0.9.0
version: 0.9.1
source-map:
specifier: 0.7.4
version: 0.7.4
version: 0.9.2
source-map-support:
specifier: 0.5.21
version: 0.5.21
@ -472,6 +457,9 @@ importers:
istanbul-lib-instrument:
specifier: 6.0.3
version: 6.0.3
jsonc-parser:
specifier: 3.3.1
version: 3.3.1
listr2:
specifier: 8.2.5
version: 8.2.5
@ -875,6 +863,10 @@ importers:
source-map:
specifier: 0.7.4
version: 0.7.4
devDependencies:
chokidar:
specifier: 4.0.3
version: 4.0.3
packages/angular_devkit/schematics:
dependencies:
@ -1196,11 +1188,6 @@ packages:
engines: {node: '>=6.0.0'}
hasBin: true
'@babel/parser@7.26.9':
resolution: {integrity: sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==}
engines: {node: '>=6.0.0'}
hasBin: true
'@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9':
resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==}
engines: {node: '>=6.9.0'}
@ -1584,18 +1571,10 @@ packages:
resolution: {integrity: sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==}
engines: {node: '>=6.9.0'}
'@babel/traverse@7.26.9':
resolution: {integrity: sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==}
engines: {node: '>=6.9.0'}
'@babel/types@7.26.10':
resolution: {integrity: sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==}
engines: {node: '>=6.9.0'}
'@babel/types@7.26.9':
resolution: {integrity: sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==}
engines: {node: '>=6.9.0'}
'@bazel/bazelisk@1.25.0':
resolution: {integrity: sha512-IgesSUh9EwwLI9+Vs5rb/sx7vh6cI97CRLPqw9+/egFzeZlB5S2fTsKwbdDxtTVPjQMGS3GY64tTNsgejVFeKg==}
hasBin: true
@ -1770,8 +1749,8 @@ packages:
cpu: [x64]
os: [win32]
'@eslint-community/eslint-utils@4.5.0':
resolution: {integrity: sha512-RoV8Xs9eNwiDvhv7M+xcL4PWyRyIXRY/FLp3buU4h1EYfdF7unWUy3dOjPqb3C7rMUewIcqwW850PgS8h1o1yg==}
'@eslint-community/eslint-utils@4.5.1':
resolution: {integrity: sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
@ -1832,16 +1811,16 @@ packages:
resolution: {integrity: sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==}
engines: {node: '>=14.0.0'}
'@google-cloud/promisify@4.0.0':
resolution: {integrity: sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==}
engines: {node: '>=14'}
'@google-cloud/promisify@4.1.0':
resolution: {integrity: sha512-G/FQx5cE/+DqBbOpA5jKsegGwdPniU6PuIEMt+qxWgFxvxuFOzVmp6zYchtYuwAWV5/8Dgs0yAmjvNZv3uXLQg==}
engines: {node: '>=18'}
'@google-cloud/spanner@7.19.0':
resolution: {integrity: sha512-EQUGFc6l5h4spSbVKtURt+6OY+vFkACkXvdcDFISwB2++VWigeTOE0gFVJMUrko0HaKxOKfWW80+GYZCUToTcA==}
engines: {node: '>=14.0.0'}
'@grpc/grpc-js@1.12.6':
resolution: {integrity: sha512-JXUj6PI0oqqzTGvKtzOkxtpsyPRNsrmhh41TtIz/zEB6J+AUiZZ0dxWzcMwO9Ns5rmSPuMdghlTbUuqIM48d3Q==}
'@grpc/grpc-js@1.13.0':
resolution: {integrity: sha512-pMuxInZjUnUkgMT2QLZclRqwk2ykJbIU05aZgPgJYXEpN9+2I7z7aNwcjWZSycRPl232FfhPszyBFJyOxTHNog==}
engines: {node: '>=12.10.0'}
'@grpc/proto-loader@0.7.13':
@ -2621,8 +2600,8 @@ packages:
cpu: [x64]
os: [win32]
'@rollup/wasm-node@4.35.0':
resolution: {integrity: sha512-mVs1GGfgeDCcMCFN5FystW0B5XjwhARAnomDBm2wTITTAioNr+YrUJ4UPjV33iXiLH1xAKWuUo30Od5HzrfQyA==}
'@rollup/wasm-node@4.36.0':
resolution: {integrity: sha512-qEzDrBzGlkWgtWiP8OJJegVdT+gHYEbHXtkI0vhlDLSzejAzMuhl1MfIQyU6U6XCZrijX9KTSi3UNBwB4en/eQ==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@ -3377,8 +3356,8 @@ packages:
resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==}
engines: {node: '>=0.10.0'}
array.prototype.findlastindex@1.2.5:
resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==}
array.prototype.findlastindex@1.2.6:
resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==}
engines: {node: '>= 0.4'}
array.prototype.flat@1.3.3:
@ -3674,8 +3653,8 @@ packages:
resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
engines: {node: '>=10'}
caniuse-lite@1.0.30001703:
resolution: {integrity: sha512-kRlAGTRWgPsOj7oARC9m1okJEXdL/8fekFVcxA8Hl7GH4r/sN4OJn/i6Flde373T50KS7Y37oFbMwlE8+F42kQ==}
caniuse-lite@1.0.30001705:
resolution: {integrity: sha512-S0uyMMiYvA7CxNgomYBwwwPUnWzFD83f3B1ce5jHUfHTH//QL6hHsreI8RVC5606R4ssqravelYO5TU6t8sEyg==}
caseless@0.12.0:
resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==}
@ -4225,8 +4204,8 @@ packages:
ee-first@1.1.1:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
electron-to-chromium@1.5.114:
resolution: {integrity: sha512-DFptFef3iktoKlFQK/afbo274/XNWD00Am0xa7M8FZUepHlHT8PEuiNBoRfFHbH1okqN58AlhbJ4QTkcnXorjA==}
electron-to-chromium@1.5.119:
resolution: {integrity: sha512-Ku4NMzUjz3e3Vweh7PhApPrZSS4fyiCIbcIrG9eKrriYVLmbMepETR/v6SU7xPm98QTqMSYiCwfO89QNjXLkbQ==}
emoji-regex@10.4.0:
resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==}
@ -5953,8 +5932,8 @@ packages:
nanocolors@0.2.13:
resolution: {integrity: sha512-0n3mSAQLPpGLV9ORXT5+C/D4mwew7Ebws69Hx4E2sgz2ZA5+32Q80B9tL8PbL7XHnRDiAxH/pnrUJ9a4fkTNTA==}
nanoid@3.3.9:
resolution: {integrity: sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==}
nanoid@3.3.10:
resolution: {integrity: sha512-vSJJTG+t/dIKAUhUDw/dLdZ9s//5OxcHqLaDWWrW4Cdq7o6tdLIczUkMXt2MBNmk6sJRZBZRXVixs7URY1CmIg==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
@ -6473,9 +6452,9 @@ packages:
resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
engines: {node: '>=4'}
portfinder@1.0.33:
resolution: {integrity: sha512-+2jndHT63cL5MdQOwDm9OT2dIe11zVpjV+0GGRXdtO1wpPxv260NfVqoEXtYAi/shanmm3W4+yLduIe55ektTw==}
engines: {node: '>= 0.12.0'}
portfinder@1.0.35:
resolution: {integrity: sha512-73JaFg4NwYNAufDtS5FsFu/PdM49ahJrO1i44aCRsDWju1z5wuGDaqyFUQWR6aJoK2JPDWlaYYAGFNIGTSUHSw==}
engines: {node: '>= 10.12'}
portscanner@2.2.0:
resolution: {integrity: sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==}
@ -6635,7 +6614,6 @@ packages:
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:
@ -7020,8 +6998,8 @@ packages:
resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==}
engines: {node: '>= 0.4'}
shelljs@0.9.1:
resolution: {integrity: sha512-ngPynK9u9OmsL2DttaTOhEPahyAjVbjIwCK3R+2V9YDq0/equpq7hVz3XrnfIjAk1thN5ET5mEIzAmocmV6i+Q==}
shelljs@0.9.2:
resolution: {integrity: sha512-S3I64fEiKgTZzKCC46zT/Ib9meqofLrQVbpSswtjFfAVDW+AZ54WTnAM/3/yENoxz/V1Cy6u3kiiEbQ4DNphvw==}
engines: {node: '>=18'}
hasBin: true
@ -7424,8 +7402,8 @@ packages:
tr46@0.0.3:
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
tr46@5.0.0:
resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==}
tr46@5.1.0:
resolution: {integrity: sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==}
engines: {node: '>=18'}
tree-dump@1.0.2:
@ -7815,8 +7793,8 @@ packages:
resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==}
engines: {node: '>=0.8.0'}
whatwg-url@14.1.1:
resolution: {integrity: sha512-mDGf9diDad/giZ/Sm9Xi2YcyzaFpbdLpJPr+E9fSkyQ7KpQD4SdFcugkRQYzhmfI4KeV4Qpnn2sKPdo+kmsgRQ==}
whatwg-url@14.2.0:
resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==}
engines: {node: '>=18'}
whatwg-url@5.0.0:
@ -8227,7 +8205,7 @@ snapshots:
'@babel/helper-annotate-as-pure@7.25.9':
dependencies:
'@babel/types': 7.26.9
'@babel/types': 7.26.10
'@babel/helper-compilation-targets@7.26.5':
dependencies:
@ -8277,8 +8255,8 @@ snapshots:
'@babel/helper-module-imports@7.25.9':
dependencies:
'@babel/traverse': 7.26.9
'@babel/types': 7.26.9
'@babel/traverse': 7.26.10
'@babel/types': 7.26.10
transitivePeerDependencies:
- supports-color
@ -8311,7 +8289,7 @@ snapshots:
'@babel/core': 7.26.10
'@babel/helper-annotate-as-pure': 7.25.9
'@babel/helper-wrap-function': 7.25.9
'@babel/traverse': 7.26.9
'@babel/traverse': 7.26.10
transitivePeerDependencies:
- supports-color
@ -8333,7 +8311,7 @@ snapshots:
'@babel/helper-split-export-declaration@7.24.7':
dependencies:
'@babel/types': 7.26.9
'@babel/types': 7.26.10
'@babel/helper-string-parser@7.25.9': {}
@ -8344,8 +8322,8 @@ snapshots:
'@babel/helper-wrap-function@7.25.9':
dependencies:
'@babel/template': 7.26.9
'@babel/traverse': 7.26.9
'@babel/types': 7.26.9
'@babel/traverse': 7.26.10
'@babel/types': 7.26.10
transitivePeerDependencies:
- supports-color
@ -8358,15 +8336,11 @@ snapshots:
dependencies:
'@babel/types': 7.26.10
'@babel/parser@7.26.9':
dependencies:
'@babel/types': 7.26.9
'@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.10)':
dependencies:
'@babel/core': 7.26.10
'@babel/helper-plugin-utils': 7.26.5
'@babel/traverse': 7.26.9
'@babel/traverse': 7.26.10
transitivePeerDependencies:
- supports-color
@ -8393,7 +8367,7 @@ snapshots:
dependencies:
'@babel/core': 7.26.10
'@babel/helper-plugin-utils': 7.26.5
'@babel/traverse': 7.26.9
'@babel/traverse': 7.26.10
transitivePeerDependencies:
- supports-color
@ -8427,7 +8401,7 @@ snapshots:
'@babel/core': 7.26.10
'@babel/helper-plugin-utils': 7.26.5
'@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.10)
'@babel/traverse': 7.26.9
'@babel/traverse': 7.26.10
transitivePeerDependencies:
- supports-color
@ -8473,7 +8447,7 @@ snapshots:
'@babel/helper-compilation-targets': 7.26.5
'@babel/helper-plugin-utils': 7.26.5
'@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.10)
'@babel/traverse': 7.26.9
'@babel/traverse': 7.26.10
globals: 11.12.0
transitivePeerDependencies:
- supports-color
@ -8534,7 +8508,7 @@ snapshots:
'@babel/core': 7.26.10
'@babel/helper-compilation-targets': 7.26.5
'@babel/helper-plugin-utils': 7.26.5
'@babel/traverse': 7.26.9
'@babel/traverse': 7.26.10
transitivePeerDependencies:
- supports-color
@ -8580,7 +8554,7 @@ snapshots:
'@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10)
'@babel/helper-plugin-utils': 7.26.5
'@babel/helper-validator-identifier': 7.25.9
'@babel/traverse': 7.26.9
'@babel/traverse': 7.26.10
transitivePeerDependencies:
- supports-color
@ -8827,7 +8801,7 @@ snapshots:
dependencies:
'@babel/core': 7.26.10
'@babel/helper-plugin-utils': 7.26.5
'@babel/types': 7.26.9
'@babel/types': 7.26.10
esutils: 2.0.3
'@babel/runtime@7.26.10':
@ -8852,28 +8826,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@babel/traverse@7.26.9':
dependencies:
'@babel/code-frame': 7.26.2
'@babel/generator': 7.26.10
'@babel/parser': 7.26.9
'@babel/template': 7.26.9
'@babel/types': 7.26.9
debug: 4.4.0(supports-color@10.0.0)
globals: 11.12.0
transitivePeerDependencies:
- supports-color
'@babel/types@7.26.10':
dependencies:
'@babel/helper-string-parser': 7.25.9
'@babel/helper-validator-identifier': 7.25.9
'@babel/types@7.26.9':
dependencies:
'@babel/helper-string-parser': 7.25.9
'@babel/helper-validator-identifier': 7.25.9
'@bazel/bazelisk@1.25.0': {}
'@bazel/buildifier@8.0.3': {}
@ -8982,7 +8939,7 @@ snapshots:
'@esbuild/win32-x64@0.25.1':
optional: true
'@eslint-community/eslint-utils@4.5.0(eslint@9.22.0(jiti@1.21.7))':
'@eslint-community/eslint-utils@4.5.1(eslint@9.22.0(jiti@1.21.7))':
dependencies:
eslint: 9.22.0(jiti@1.21.7)
eslint-visitor-keys: 3.4.3
@ -9035,7 +8992,7 @@ snapshots:
'@google-cloud/common@5.0.2(encoding@0.1.13)(supports-color@10.0.0)':
dependencies:
'@google-cloud/projectify': 4.0.0
'@google-cloud/promisify': 4.0.0
'@google-cloud/promisify': 4.1.0
arrify: 2.0.1
duplexify: 4.1.3
extend: 3.0.2
@ -9051,14 +9008,14 @@ snapshots:
'@google-cloud/projectify@4.0.0': {}
'@google-cloud/promisify@4.0.0': {}
'@google-cloud/promisify@4.1.0': {}
'@google-cloud/spanner@7.19.0(encoding@0.1.13)(supports-color@10.0.0)':
dependencies:
'@google-cloud/common': 5.0.2(encoding@0.1.13)(supports-color@10.0.0)
'@google-cloud/precise-date': 4.0.0
'@google-cloud/projectify': 4.0.0
'@google-cloud/promisify': 4.0.0
'@google-cloud/promisify': 4.1.0
'@grpc/proto-loader': 0.7.13
'@opentelemetry/api': 1.9.0
'@opentelemetry/context-async-hooks': 1.30.1(@opentelemetry/api@1.9.0)
@ -9090,7 +9047,7 @@ snapshots:
- encoding
- supports-color
'@grpc/grpc-js@1.12.6':
'@grpc/grpc-js@1.13.0':
dependencies:
'@grpc/proto-loader': 0.7.13
'@js-sdsl/ordered-map': 4.4.2
@ -9770,7 +9727,7 @@ snapshots:
'@rollup/rollup-win32-x64-msvc@4.36.0':
optional: true
'@rollup/wasm-node@4.35.0':
'@rollup/wasm-node@4.36.0':
dependencies:
'@types/estree': 1.0.6
optionalDependencies:
@ -9851,24 +9808,24 @@ snapshots:
'@types/babel__core@7.20.5':
dependencies:
'@babel/parser': 7.26.9
'@babel/types': 7.26.9
'@babel/parser': 7.26.10
'@babel/types': 7.26.10
'@types/babel__generator': 7.6.8
'@types/babel__template': 7.4.4
'@types/babel__traverse': 7.20.6
'@types/babel__generator@7.6.8':
dependencies:
'@babel/types': 7.26.9
'@babel/types': 7.26.10
'@types/babel__template@7.4.4':
dependencies:
'@babel/parser': 7.26.9
'@babel/types': 7.26.9
'@babel/parser': 7.26.10
'@babel/types': 7.26.10
'@types/babel__traverse@7.20.6':
dependencies:
'@babel/types': 7.26.9
'@babel/types': 7.26.10
'@types/big.js@6.2.2': {}
@ -10268,7 +10225,7 @@ snapshots:
'@typescript-eslint/utils@8.26.1(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2)':
dependencies:
'@eslint-community/eslint-utils': 4.5.0(eslint@9.22.0(jiti@1.21.7))
'@eslint-community/eslint-utils': 4.5.1(eslint@9.22.0(jiti@1.21.7))
'@typescript-eslint/scope-manager': 8.26.1
'@typescript-eslint/types': 8.26.1
'@typescript-eslint/typescript-estree': 8.26.1(typescript@5.8.2)
@ -10486,7 +10443,7 @@ snapshots:
nanocolors: 0.2.13
parse5: 6.0.1
rollup: 4.36.0
whatwg-url: 14.1.1
whatwg-url: 14.2.0
transitivePeerDependencies:
- bufferutil
- supports-color
@ -10507,7 +10464,7 @@ snapshots:
internal-ip: 6.2.0
nanocolors: 0.2.13
open: 8.4.2
portfinder: 1.0.33
portfinder: 1.0.35
transitivePeerDependencies:
- bufferutil
- supports-color
@ -10564,7 +10521,7 @@ snapshots:
istanbul-reports: 3.1.7
log-update: 4.0.0
nanocolors: 0.2.13
nanoid: 3.3.9
nanoid: 3.3.10
open: 8.4.2
picomatch: 2.3.1
source-map: 0.7.4
@ -10609,7 +10566,7 @@ snapshots:
diff: 5.2.0
globby: 11.1.0
nanocolors: 0.2.13
portfinder: 1.0.33
portfinder: 1.0.35
source-map: 0.7.4
transitivePeerDependencies:
- bare-buffer
@ -10838,9 +10795,10 @@ snapshots:
array-uniq@1.0.3: {}
array.prototype.findlastindex@1.2.5:
array.prototype.findlastindex@1.2.6:
dependencies:
call-bind: 1.0.8
call-bound: 1.0.4
define-properties: 1.2.1
es-abstract: 1.23.9
es-errors: 1.3.0
@ -10912,7 +10870,7 @@ snapshots:
autoprefixer@10.4.21(postcss@8.5.3):
dependencies:
browserslist: 4.24.4
caniuse-lite: 1.0.30001703
caniuse-lite: 1.0.30001705
fraction.js: 4.3.7
normalize-range: 0.1.2
picocolors: 1.1.1
@ -11134,8 +11092,8 @@ snapshots:
browserslist@4.24.4:
dependencies:
caniuse-lite: 1.0.30001703
electron-to-chromium: 1.5.114
caniuse-lite: 1.0.30001705
electron-to-chromium: 1.5.119
node-releases: 2.0.19
update-browserslist-db: 1.1.3(browserslist@4.24.4)
@ -11214,7 +11172,7 @@ snapshots:
camelcase@6.3.0: {}
caniuse-lite@1.0.30001703: {}
caniuse-lite@1.0.30001705: {}
caseless@0.12.0: {}
@ -11772,7 +11730,7 @@ snapshots:
ee-first@1.1.1: {}
electron-to-chromium@1.5.114: {}
electron-to-chromium@1.5.119: {}
emoji-regex@10.4.0: {}
@ -12021,7 +11979,7 @@ snapshots:
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.8
array.prototype.findlastindex: 1.2.5
array.prototype.findlastindex: 1.2.6
array.prototype.flat: 1.3.3
array.prototype.flatmap: 1.3.3
debug: 3.2.7
@ -12062,7 +12020,7 @@ snapshots:
eslint@9.22.0(jiti@1.21.7):
dependencies:
'@eslint-community/eslint-utils': 4.5.0(eslint@9.22.0(jiti@1.21.7))
'@eslint-community/eslint-utils': 4.5.1(eslint@9.22.0(jiti@1.21.7))
'@eslint-community/regexpp': 4.12.1
'@eslint/config-array': 0.19.2
'@eslint/config-helpers': 0.1.0
@ -12214,7 +12172,7 @@ snapshots:
extract-zip@2.0.1:
dependencies:
debug: 4.4.0(supports-color@10.0.0)
debug: 4.3.4
get-stream: 5.2.0
yauzl: 2.10.0
optionalDependencies:
@ -12573,7 +12531,7 @@ snapshots:
google-gax@4.4.1(encoding@0.1.13)(supports-color@10.0.0):
dependencies:
'@grpc/grpc-js': 1.12.6
'@grpc/grpc-js': 1.13.0
'@grpc/proto-loader': 0.7.13
'@types/long': 4.0.2
abort-controller: 3.0.0
@ -12599,7 +12557,7 @@ snapshots:
grpc-gcp@1.0.1(protobufjs@7.4.0):
dependencies:
'@grpc/grpc-js': 1.12.6
'@grpc/grpc-js': 1.13.0
protobufjs: 7.4.0
gtoken@7.1.0(encoding@0.1.13)(supports-color@10.0.0):
@ -13109,7 +13067,7 @@ snapshots:
istanbul-lib-instrument@5.2.1:
dependencies:
'@babel/core': 7.26.10
'@babel/parser': 7.26.9
'@babel/parser': 7.26.10
'@istanbuljs/schema': 0.1.3
istanbul-lib-coverage: 3.2.2
semver: 6.3.1
@ -13119,7 +13077,7 @@ snapshots:
istanbul-lib-instrument@6.0.3:
dependencies:
'@babel/core': 7.26.10
'@babel/parser': 7.26.9
'@babel/parser': 7.26.10
'@istanbuljs/schema': 0.1.3
istanbul-lib-coverage: 3.2.2
semver: 7.7.1
@ -13791,7 +13749,7 @@ snapshots:
nanocolors@0.2.13: {}
nanoid@3.3.9: {}
nanoid@3.3.10: {}
natural-compare@1.4.0: {}
@ -13815,7 +13773,7 @@ snapshots:
dependencies:
'@angular/compiler-cli': 20.0.0-next.2(@angular/compiler@20.0.0-next.2)(typescript@5.8.2)
'@rollup/plugin-json': 6.1.0(rollup@4.36.0)
'@rollup/wasm-node': 4.35.0
'@rollup/wasm-node': 4.36.0
ajv: 8.17.1
ansi-colors: 4.1.3
browserslist: 4.24.4
@ -14276,11 +14234,10 @@ snapshots:
pluralize@8.0.0: {}
portfinder@1.0.33:
portfinder@1.0.35:
dependencies:
async: 2.6.4
debug: 3.2.7
mkdirp: 0.5.6
async: 3.2.6
debug: 4.4.0(supports-color@10.0.0)
transitivePeerDependencies:
- supports-color
@ -14334,7 +14291,7 @@ snapshots:
postcss@8.5.3:
dependencies:
nanoid: 3.3.9
nanoid: 3.3.10
picocolors: 1.1.1
source-map-js: 1.2.1
@ -14977,7 +14934,7 @@ snapshots:
shell-quote@1.8.2: {}
shelljs@0.9.1:
shelljs@0.9.2:
dependencies:
execa: 1.0.0
fast-glob: 3.3.3
@ -15486,7 +15443,7 @@ snapshots:
tr46@0.0.3: {}
tr46@5.0.0:
tr46@5.1.0:
dependencies:
punycode: 2.3.1
@ -15942,9 +15899,9 @@ snapshots:
websocket-extensions@0.1.4: {}
whatwg-url@14.1.1:
whatwg-url@14.2.0:
dependencies:
tr46: 5.0.0
tr46: 5.1.0
webidl-conversions: 7.0.0
whatwg-url@5.0.0:

@ -17,7 +17,7 @@ export async function libraryConsumptionSetup(): Promise<void> {
export class MyLibComponent {}`,
'./src/app/app.ts': `
import { Component } from '@angular/core';
import { MyLibService, MyLibComponent } from 'my-lib';
import { MyLibComponent } from 'my-lib';
@Component({
standalone: true,
@ -28,8 +28,7 @@ export async function libraryConsumptionSetup(): Promise<void> {
export class App {
title = 'test-project';
constructor(myLibService: MyLibService) {
console.log(myLibService);
constructor() {
}
}
`,

@ -9,8 +9,8 @@ export default function () {
return (
ng('generate', 'service', 'test-service')
.then(() => expectFileToExist(serviceDir))
.then(() => expectFileToExist(join(serviceDir, 'test-service.service.ts')))
.then(() => expectFileToExist(join(serviceDir, 'test-service.service.spec.ts')))
.then(() => expectFileToExist(join(serviceDir, 'test-service.ts')))
.then(() => expectFileToExist(join(serviceDir, 'test-service.spec.ts')))
// Try to run the unit tests.
.then(() => ng('test', '--watch=false'))

@ -2,10 +2,10 @@ import { prependToFile, replaceInFile } from '../../utils/fs';
import { ng } from '../../utils/process';
export default async function () {
await ng('generate', 'service', 'user');
await ng('generate', 'service', 'user-service');
// Update the application to use the new service
await prependToFile('src/app/app.ts', "import { UserService } from './user.service';");
await prependToFile('src/app/app.ts', "import { UserService } from './user-service';");
await replaceInFile(
'src/app/app.ts',

@ -257,10 +257,8 @@ Promise.all([findFreePort(), findFreePort(), findPackageTars()])
console.log(`Current Directory: ${process.cwd()}`);
console.log('Will loop forever while you debug... CTRL-C to quit.');
/* eslint-disable no-constant-condition */
while (1) {
// That's right!
}
// Wait forever until user explicitly cancels.
await new Promise(() => {});
}
process.exitCode = 1;