Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -163,11 +163,11 @@
"npm-package-arg": "12.0.1",
"npm-pick-manifest": "10.0.0",
"open": "10.1.0",
"ora": "5.4.1",
"pacote": "20.0.0",
"parse5-html-rewriting-stream": "7.0.0",
"patch-package": "^8.0.0",
"picomatch": "4.0.2",
"picospinner": "2.0.0",
"piscina": "4.8.0",
"postcss": "8.4.49",
"postcss-loader": "8.1.1",
Expand Down Expand Up @@ -222,5 +222,6 @@
},
"resolutions": {
"typescript": "5.7.2"
}
},
"packageManager": "[email protected]+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
}
2 changes: 1 addition & 1 deletion packages/angular_devkit/build_angular/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ ts_project(
"//:root_modules/mini-css-extract-plugin",
"//:root_modules/ng-packagr",
"//:root_modules/open",
"//:root_modules/ora",
"//:root_modules/picospinner",
"//:root_modules/piscina",
"//:root_modules/postcss",
"//:root_modules/postcss-loader",
Expand Down
2 changes: 1 addition & 1 deletion packages/angular_devkit/build_angular/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
"loader-utils": "3.3.1",
"mini-css-extract-plugin": "2.9.2",
"open": "10.1.0",
"ora": "5.4.1",
"picospinner": "2.0.0",
"picomatch": "4.0.2",
"piscina": "4.8.0",
"postcss": "8.4.49",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import {
} from '@angular-devkit/architect';
import * as fs from 'fs';
import { readFile } from 'node:fs/promises';
import ora from 'ora';
import { Spinner } from 'picospinner';
import * as path from 'path';
import Piscina from 'piscina';
import { normalizeOptimization } from '../../utils';
Expand Down Expand Up @@ -198,7 +198,8 @@ async function _renderUniversal(
context.workspaceRoot,
);

const spinner = ora(`Prerendering ${routes.length} route(s) to ${outputPath}...`).start();
const spinner = new Spinner(`Prerendering ${routes.length} route(s) to ${outputPath}...`);
spinner.start();

try {
const results = (await Promise.all(
Expand Down Expand Up @@ -236,7 +237,8 @@ async function _renderUniversal(
spinner.succeed(`Prerendering routes to ${outputPath} complete.`);

if (browserOptions.serviceWorker) {
spinner.start('Generating service worker...');
spinner.setText('Generating service worker...');
spinner.start();
try {
await augmentAppWithServiceWorker(
projectRoot,
Expand Down
30 changes: 14 additions & 16 deletions packages/angular_devkit/build_angular/src/utils/spinner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,53 +6,51 @@
* found in the LICENSE file at https://angular.dev/license
*/

import ora from 'ora';
import { Spinner as PicoSpinner } from 'picospinner';
import { colors } from './color';
import { isTTY } from './tty';

export class Spinner {
private readonly spinner: ora.Ora;
private readonly spinner?: PicoSpinner;

/** When false, only fail messages will be displayed. */
enabled = true;
readonly #isTTY = isTTY();

constructor(text?: string) {
this.spinner = ora({
text: text === undefined ? undefined : text + '\n',
// The below 2 options are needed because otherwise CTRL+C will be delayed
// when the underlying process is sync.
hideCursor: false,
discardStdin: false,
isEnabled: this.#isTTY,
});
if (this.#isTTY) {
this.spinner = new PicoSpinner(text === undefined ? undefined : text + '\n');
}
}

set text(text: string) {
this.spinner.text = text;
this.spinner?.setText(text);
}

get isSpinning(): boolean {
return this.spinner.isSpinning || !this.#isTTY;
return this.spinner?.running || !this.#isTTY;
}

succeed(text?: string): void {
if (this.enabled) {
this.spinner.succeed(text);
this.spinner?.succeed(text);
}
}

fail(text?: string): void {
this.spinner.fail(text && colors.redBright(text));
this.spinner?.fail(text && colors.redBright(text));
}

stop(): void {
this.spinner.stop();
this.spinner?.stop();
}

start(text?: string): void {
if (this.enabled) {
this.spinner.start(text);
if (text) {
this.text = text;
}
this.spinner?.start();
}
}
}
2 changes: 1 addition & 1 deletion packages/angular_devkit/schematics/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
"@angular-devkit/core": "0.0.0-PLACEHOLDER",
"jsonc-parser": "3.3.1",
"magic-string": "0.30.17",
"ora": "5.4.1",
"picospinner": "2.0.0",
"rxjs": "7.8.1"
}
}
2 changes: 1 addition & 1 deletion packages/angular_devkit/schematics/tasks/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ ts_library(
"//packages/angular_devkit/core/node",
"//packages/angular_devkit/schematics",
"@npm//@types/node",
"@npm//ora",
"@npm//picospinner",
"@npm//rxjs",
"@npm//typescript",
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

import { BaseException } from '@angular-devkit/core';
import { SpawnOptions, spawn } from 'child_process';
import ora from 'ora';
import { Spinner } from 'picospinner';
import * as path from 'path';
import { Observable } from 'rxjs';
import { TaskExecutor, UnsuccessfulWorkflowExecution } from '../../src';
Expand Down Expand Up @@ -128,11 +128,8 @@ export default function (
}

return new Observable((obs) => {
const spinner = ora({
text: `Installing packages (${taskPackageManagerName})...`,
// Workaround for https://github.com/sindresorhus/ora/issues/136.
discardStdin: process.platform != 'win32',
}).start();
const spinner = new Spinner(`Installing packages (${taskPackageManagerName})...`);
spinner.start();
const childProcess = spawn(taskPackageManagerName, args, spawnOptions).on(
'close',
(code: number) => {
Expand Down
11 changes: 8 additions & 3 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 9 additions & 2 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -430,11 +430,11 @@ __metadata:
npm-package-arg: "npm:12.0.1"
npm-pick-manifest: "npm:10.0.0"
open: "npm:10.1.0"
ora: "npm:5.4.1"
pacote: "npm:20.0.0"
parse5-html-rewriting-stream: "npm:7.0.0"
patch-package: "npm:^8.0.0"
picomatch: "npm:4.0.2"
picospinner: "npm:2.0.0"
piscina: "npm:4.8.0"
postcss: "npm:8.4.49"
postcss-loader: "npm:8.1.1"
Expand Down Expand Up @@ -14053,7 +14053,7 @@ __metadata:
languageName: node
linkType: hard

"ora@npm:5.4.1, ora@npm:^5.1.0":
"ora@npm:^5.1.0":
version: 5.4.1
resolution: "ora@npm:5.4.1"
dependencies:
Expand Down Expand Up @@ -14532,6 +14532,13 @@ __metadata:
languageName: node
linkType: hard

"picospinner@npm:2.0.0":
version: 2.0.0
resolution: "picospinner@npm:2.0.0"
checksum: 10c0/f8e4cca484f093c2483e1bc9644e637c297b2f0b45de80a0697690bcde25540d413920abed6fea1d3ce1718518474a3d169ebae6101e0733bd31742cd7e85ee1
languageName: node
linkType: hard

"pify@npm:^2.0.0":
version: 2.3.0
resolution: "pify@npm:2.3.0"
Expand Down
Loading