From 28aa7b3188ccefa3dad31bed0e51edab2afeeaee Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Tue, 16 Jan 2024 21:51:06 +0000 Subject: [PATCH] refactor: migrate tools to prettier formatting (#53947) Migrate formatting to prettier for tools directory from clang-format PR Close #53947 --- .ng-dev/format.mts | 8 +- .../madge-resolve.config.js | 5 +- tools/contributing-stats/get-data.ts | 99 +-- tools/gulp-tasks/changelog-zonejs.js | 31 +- .../generate_block_api_json.ts | 2 +- .../generate_element_api_json.ts | 2 +- tools/postinstall-patches.js | 5 +- .../background-service/cli.ts | 14 +- .../background-service/ipc.ts | 34 +- .../background-service/saucelabs-daemon.ts | 153 ++-- tools/saucelabs-daemon/browser.ts | 4 +- tools/saucelabs-daemon/ipc-messages.ts | 10 +- tools/saucelabs-daemon/launcher/launcher.ts | 36 +- tools/symbol-extractor/cli.ts | 2 +- .../run_all_symbols_extractor_tests.js | 28 +- tools/symbol-extractor/symbol_extractor.ts | 19 +- .../symbol-extractor/symbol_extractor_spec.ts | 16 +- .../dont_pick_up_inner_symbols.js | 6 +- .../drop_trailing_suffix.js | 8 +- .../symbol_extractor_spec/empty_iife.js | 2 +- .../hello_world_min_debug.js | 684 ++++++++++-------- .../iife_arrow_function.js | 3 +- .../symbol_extractor_spec/simple.js | 5 +- .../two_symbols_per_var.js | 33 +- .../symbol_extractor_spec/var_list.js | 8 +- tools/testing/browser_tests.init.ts | 9 +- tools/testing/node_tests.init.ts | 10 +- .../requireInternalWithUnderscoreRule.ts | 10 +- 28 files changed, 696 insertions(+), 550 deletions(-) diff --git a/.ng-dev/format.mts b/.ng-dev/format.mts index 057a87cd581..ab200a3bb7a 100644 --- a/.ng-dev/format.mts +++ b/.ng-dev/format.mts @@ -5,7 +5,10 @@ import {FormatConfig} from '@angular/ng-dev'; */ export const format: FormatConfig = { 'prettier': { - 'matchers': ['**/*.{yaml,yml}'], + 'matchers': [ + '**/*.{yaml,yml}', + 'tools/**/*.{js,ts}', + ], }, 'clang-format': { 'matchers': [ @@ -31,6 +34,9 @@ export const format: FormatConfig = { '!packages/common/src/i18n/currencies.ts', // Temporarily disable formatting for adev '!adev/**', + + // Migrated to prettier + '!tools/**/*.{js,ts}', ], }, 'buildifier': true, diff --git a/tools/circular_dependency_test/madge-resolve.config.js b/tools/circular_dependency_test/madge-resolve.config.js index ec59a2a87d6..4e56efc87ac 100644 --- a/tools/circular_dependency_test/madge-resolve.config.js +++ b/tools/circular_dependency_test/madge-resolve.config.js @@ -22,8 +22,7 @@ class BazelRunfileResolutionPlugin { // Update the request to refer to the runfile resolved file path. resolver.doResolve('resolve', {...request, request: resolvedPath}, null, callback, true); return; - } catch { - } + } catch {} // If the file could not be resolved through Bazel's runfile resolution, proceed // with the default module resolvers. callback(); @@ -34,5 +33,5 @@ class BazelRunfileResolutionPlugin { // Configures a plugin which ensures that Madge can properly resolve specified // dependencies through their configured module names. module.exports = { - resolve: {plugins: [new BazelRunfileResolutionPlugin()]} + resolve: {plugins: [new BazelRunfileResolutionPlugin()]}, }; diff --git a/tools/contributing-stats/get-data.ts b/tools/contributing-stats/get-data.ts index ee8cad1b0ed..5c8bea1b967 100644 --- a/tools/contributing-stats/get-data.ts +++ b/tools/contributing-stats/get-data.ts @@ -34,10 +34,10 @@ const REPOS = ['angular', 'components', 'angular-cli']; /** * Handle flags for the script. */ -const args = yargs.option('use-created', {type: 'boolean'}) - .option('since', {type: 'string', demandOption: true}) - .strictOptions() - .argv; +const args = yargs + .option('use-created', {type: 'boolean'}) + .option('since', {type: 'string', demandOption: true}) + .strictOptions().argv; /** * Authenticated instance of Github GraphQl API service, relies on a @@ -48,7 +48,7 @@ const graphql = unauthenticatedGraphql.defaults({ // TODO(josephperrott): Remove reference to TOKEN environment variable as part of larger // effort to migrate to expecting tokens via GITHUB_ACCESS_TOKEN environment variables. authorization: `token ${process.env['TOKEN'] || process.env['GITHUB_ACCESS_TOKEN']}`, - } + }, }); /** @@ -57,27 +57,32 @@ const graphql = unauthenticatedGraphql.defaults({ async function getAllOrgMembers() { // The GraphQL query object to get a page of members of an organization. const MEMBERS_QUERY = params( - { - $first: 'Int', // How many entries to get with each request - $after: 'String', // The cursor to start the page at - $owner: 'String!', // The organization to query for - }, - { - organization: params({login: '$owner'}, { + { + $first: 'Int', // How many entries to get with each request + $after: 'String', // The cursor to start the page at + $owner: 'String!', // The organization to query for + }, + { + organization: params( + {login: '$owner'}, + { membersWithRole: params( - { - first: '$first', - after: '$after', + { + first: '$first', + after: '$after', + }, + { + nodes: [{login: types.string}], + pageInfo: { + hasNextPage: types.boolean, + endCursor: types.string, }, - { - nodes: [{login: types.string}], - pageInfo: { - hasNextPage: types.boolean, - endCursor: types.string, - }, - }), - }) - }); + }, + ), + }, + ), + }, + ); const query = graphqlQuery('members', MEMBERS_QUERY); /** @@ -103,10 +108,11 @@ async function getAllOrgMembers() { while (hasNextPage) { const {query, params} = queryBuilder(100, cursor); - const results = await graphql(query.toString(), params) as typeof MEMBERS_QUERY; + const results = (await graphql(query.toString(), params)) as typeof MEMBERS_QUERY; - results.organization.membersWithRole.nodes.forEach( - (node: {login: string}) => members.push(node.login)); + results.organization.membersWithRole.nodes.forEach((node: {login: string}) => + members.push(node.login), + ); hasNextPage = results.organization.membersWithRole.pageInfo.hasNextPage; cursor = results.organization.membersWithRole.pageInfo.endCursor; } @@ -121,7 +127,7 @@ async function getAllOrgMembers() { function buildQueryAndParams(username: string, date: string) { // Whether the updated or created timestamp should be used. const updatedOrCreated = args['use-created'] ? 'created' : 'updated'; - let dataQueries: {[key: string]: {query: string, label: string}} = {}; + let dataQueries: {[key: string]: {query: string; label: string}} = {}; // Add queries and params for all values queried for each repo. for (let repo of REPOS) { dataQueries = { @@ -131,8 +137,7 @@ function buildQueryAndParams(username: string, date: string) { label: `${ORG}/${repo} Issue Authored`, }, [`${repo.replace(/[\/\-]/g, '_')}_issues_involved`]: { - query: `repo:${ORG}/${repo} is:issue -author:${username} involves:${username} ${ - updatedOrCreated}:>${date}`, + query: `repo:${ORG}/${repo} is:issue -author:${username} involves:${username} ${updatedOrCreated}:>${date}`, label: `${ORG}/${repo} Issue Involved`, }, [`${repo.replace(/[\/\-]/g, '_')}_pr_author`]: { @@ -144,13 +149,11 @@ function buildQueryAndParams(username: string, date: string) { label: `${ORG}/${repo} PR Involved`, }, [`${repo.replace(/[\/\-]/g, '_')}_pr_reviewed`]: { - query: `repo:${ORG}/${repo} is:pr -author:${username} reviewed-by:${username} ${ - updatedOrCreated}:>${date}`, + query: `repo:${ORG}/${repo} is:pr -author:${username} reviewed-by:${username} ${updatedOrCreated}:>${date}`, label: `${ORG}/${repo} PR Reviewed`, }, [`${repo.replace(/[\/\-]/g, '_')}_pr_commented`]: { - query: `repo:${ORG}/${repo} is:pr -author:${username} commenter:${username} ${ - updatedOrCreated}:>${date}`, + query: `repo:${ORG}/${repo} is:pr -author:${username} commenter:${username} ${updatedOrCreated}:>${date}`, label: `${ORG}/${repo} PR Commented`, }, }; @@ -163,8 +166,7 @@ function buildQueryAndParams(username: string, date: string) { label: `${ORG} org Issue Authored`, }, [`${ORG}_org_issues_involved`]: { - query: `org:${ORG} is:issue -author:${username} involves:${username} ${updatedOrCreated}:>${ - date}`, + query: `org:${ORG} is:issue -author:${username} involves:${username} ${updatedOrCreated}:>${date}`, label: `${ORG} org Issue Involved`, }, [`${ORG}_org_pr_author`]: { @@ -176,13 +178,11 @@ function buildQueryAndParams(username: string, date: string) { label: `${ORG} org PR Involved`, }, [`${ORG}_org_pr_reviewed`]: { - query: `org:${ORG} is:pr -author:${username} reviewed-by:${username} ${updatedOrCreated}:>${ - date}`, + query: `org:${ORG} is:pr -author:${username} reviewed-by:${username} ${updatedOrCreated}:>${date}`, label: `${ORG} org PR Reviewed`, }, [`${ORG}_org_pr_commented`]: { - query: - `org:${ORG} is:pr -author:${username} commenter:${username} ${updatedOrCreated}:>${date}`, + query: `org:${ORG} is:pr -author:${username} commenter:${username} ${updatedOrCreated}:>${date}`, label: `${ORG} org PR Commented`, }, }; @@ -191,7 +191,7 @@ function buildQueryAndParams(username: string, date: string) { * Gets the labels for each requested value to be used as headers. */ function getLabels(pairs: typeof dataQueries) { - return Object.values(pairs).map(val => val.label); + return Object.values(pairs).map((val) => val.label); } /** @@ -201,13 +201,14 @@ function buildQueryAndParams(username: string, date: string) { const output: {[key: string]: {}} = {}; Object.entries(pairs).map(([key, val]) => { output[alias(key, 'search')] = params( - { - query: `"${val.query}"`, - type: 'ISSUE', - }, - { - issueCount: types.number, - }); + { + query: `"${val.query}"`, + type: 'ISSUE', + }, + { + issueCount: types.number, + }, + ); }); return output; } @@ -229,7 +230,7 @@ async function run(date: string) { for (const username of allOrgMembers) { const results = await graphql(buildQueryAndParams(username, date).query.toString()); - const values = Object.values(results).map(result => `${result.issueCount}`); + const values = Object.values(results).map((result) => `${result.issueCount}`); console.info([username, ...values].join(',')); } } catch (error) { diff --git a/tools/gulp-tasks/changelog-zonejs.js b/tools/gulp-tasks/changelog-zonejs.js index 4fb6d5cc35f..7b53fc91043 100644 --- a/tools/gulp-tasks/changelog-zonejs.js +++ b/tools/gulp-tasks/changelog-zonejs.js @@ -13,17 +13,22 @@ module.exports = (gulp) => () => { // the tag of zone.js will start with `zone.js-`, such as `zone.js-0.10.0` // we will remove the first 8 (zone.js-) chars to get the real version. const version = tag.replace(/^zone\.js-/, ''); - return gulp.src('packages/zone.js/CHANGELOG.md') - .pipe(conventionalChangelog( - { - preset: 'angular', - }, - {linkCompare: true, previousTag: ptag, currentTag: tag, version: version}, { - // Ignore commits that have a different scope than `zone.js`. - extendedRegexp: true, - grep: '^[^(]+\\(zone\\.js\\)', - from: ptag, - to: 'HEAD', - })) - .pipe(gulp.dest('./packages/zone.js/')); + return gulp + .src('packages/zone.js/CHANGELOG.md') + .pipe( + conventionalChangelog( + { + preset: 'angular', + }, + {linkCompare: true, previousTag: ptag, currentTag: tag, version: version}, + { + // Ignore commits that have a different scope than `zone.js`. + extendedRegexp: true, + grep: '^[^(]+\\(zone\\.js\\)', + from: ptag, + to: 'HEAD', + }, + ), + ) + .pipe(gulp.dest('./packages/zone.js/')); }; diff --git a/tools/manual_api_docs/generate_block_api_json.ts b/tools/manual_api_docs/generate_block_api_json.ts index d405817cbbd..e1d1e61a391 100644 --- a/tools/manual_api_docs/generate_block_api_json.ts +++ b/tools/manual_api_docs/generate_block_api_json.ts @@ -15,7 +15,7 @@ function main() { const rawParamLines = readFileSync(paramFilePath, {encoding: 'utf8'}).split('\n'); const [srcs, outputFileExecRootRelativePath] = rawParamLines; - const entries: DocEntry[] = srcs.split(',').map(sourceFilePath => { + const entries: DocEntry[] = srcs.split(',').map((sourceFilePath) => { const fileContent = readFileSync(sourceFilePath, {encoding: 'utf8'}); return { diff --git a/tools/manual_api_docs/generate_element_api_json.ts b/tools/manual_api_docs/generate_element_api_json.ts index c1fce94b871..21980792db3 100644 --- a/tools/manual_api_docs/generate_element_api_json.ts +++ b/tools/manual_api_docs/generate_element_api_json.ts @@ -15,7 +15,7 @@ function main() { const rawParamLines = readFileSync(paramFilePath, {encoding: 'utf8'}).split('\n'); const [srcs, outputFileExecRootRelativePath] = rawParamLines; - const entries: DocEntry[] = srcs.split(',').map(sourceFilePath => { + const entries: DocEntry[] = srcs.split(',').map((sourceFilePath) => { const fileContent = readFileSync(sourceFilePath, {encoding: 'utf8'}); return { diff --git a/tools/postinstall-patches.js b/tools/postinstall-patches.js index 5eb0416bdfa..1409bab207c 100644 --- a/tools/postinstall-patches.js +++ b/tools/postinstall-patches.js @@ -15,8 +15,9 @@ try { // This can be fixed using the --preserve-symlinks-main flag which // is introduced in node 10.2.0 console.warn( - `Running postinstall-patches.js script in an external repository requires --preserve-symlinks-main node flag introduced in node 10.2.0. ` + - `Current node version is ${process.version}. Node called with '${process.argv.join(' ')}'.`); + `Running postinstall-patches.js script in an external repository requires --preserve-symlinks-main node flag introduced in node 10.2.0. ` + + `Current node version is ${process.version}. Node called with '${process.argv.join(' ')}'.`, + ); process.exit(0); } diff --git a/tools/saucelabs-daemon/background-service/cli.ts b/tools/saucelabs-daemon/background-service/cli.ts index 0dbb25fe2d0..15e0fd78ff3 100644 --- a/tools/saucelabs-daemon/background-service/cli.ts +++ b/tools/saucelabs-daemon/background-service/cli.ts @@ -43,13 +43,13 @@ if (!parallelExecutions) { // Start the daemon and launch the given browser const daemon = new SaucelabsDaemon( - username, - accessKey, - process.env['CIRCLE_BUILD_NUM']!, - Object.values(customLaunchers) as Browser[], - parallelExecutions, - sauceConnect, - {tunnelIdentifier}, + username, + accessKey, + process.env['CIRCLE_BUILD_NUM']!, + Object.values(customLaunchers) as Browser[], + parallelExecutions, + sauceConnect, + {tunnelIdentifier}, ); if (args.includes('--connect')) { diff --git a/tools/saucelabs-daemon/background-service/ipc.ts b/tools/saucelabs-daemon/background-service/ipc.ts index bddbad3d9a2..9e591052b7b 100644 --- a/tools/saucelabs-daemon/background-service/ipc.ts +++ b/tools/saucelabs-daemon/background-service/ipc.ts @@ -9,7 +9,11 @@ import {createServer, Server, Socket} from 'net'; import {IPC_PORT} from '../ipc-defaults'; -import {BackgroundServiceReceiveMessages, InternalErrorMessage, NoAvailableBrowserMessage} from '../ipc-messages'; +import { + BackgroundServiceReceiveMessages, + InternalErrorMessage, + NoAvailableBrowserMessage, +} from '../ipc-messages'; import {SaucelabsDaemon} from './saucelabs-daemon'; @@ -27,30 +31,30 @@ export class IpcServer { constructor(private _service: SaucelabsDaemon) { this._server = createServer(this._connectionHandler.bind(this)); - this._server.listen( - IPC_PORT, () => console.info(`Daemon IPC server listening (pid ${process.pid}).`)); + this._server.listen(IPC_PORT, () => + console.info(`Daemon IPC server listening (pid ${process.pid}).`), + ); } private _connectionHandler(socket: Socket) { const socketId = nextSocketId++; this._connections.set(socketId, socket); - socket.on('data', b => { + socket.on('data', (b) => { this._processMessage( - socket, - socketId, - JSON.parse(b.toString()) as BackgroundServiceReceiveMessages, - ) - .catch((err) => { - console.error(err); - this._sendInternalError(socket, err.toString()); - }); + socket, + socketId, + JSON.parse(b.toString()) as BackgroundServiceReceiveMessages, + ).catch((err) => { + console.error(err); + this._sendInternalError(socket, err.toString()); + }); }); } private async _processMessage( - socket: Socket, - socketId: number, - message: BackgroundServiceReceiveMessages, + socket: Socket, + socketId: number, + message: BackgroundServiceReceiveMessages, ) { switch (message.type) { case 'start-test': diff --git a/tools/saucelabs-daemon/background-service/saucelabs-daemon.ts b/tools/saucelabs-daemon/background-service/saucelabs-daemon.ts index 105d611efc5..4ba2d8ca2e3 100644 --- a/tools/saucelabs-daemon/background-service/saucelabs-daemon.ts +++ b/tools/saucelabs-daemon/background-service/saucelabs-daemon.ts @@ -28,9 +28,9 @@ const defaultCapabilities = { interface RemoteBrowser { id: string; - state: 'claimed'|'free'|'launching'; - driver: WebDriver|null; - sessionUrl: string|null; + state: 'claimed' | 'free' | 'launching'; + driver: WebDriver | null; + sessionUrl: string | null; } interface BrowserTest { @@ -66,22 +66,22 @@ export class SaucelabsDaemon { private _baseCapabilities = {...defaultCapabilities, ...this._userCapabilities}; /** Id of the keep alive interval that ensures no remote browsers time out. */ - private _keepAliveIntervalId: NodeJS.Timeout|null = null; + private _keepAliveIntervalId: NodeJS.Timeout | null = null; /* Promise indicating whether we the tunnel is active, or if we are still connecting. */ - private _connection: Promise|undefined = undefined; + private _connection: Promise | undefined = undefined; /* Number of parallel executions started */ private _parallelExecutions: number = 0; constructor( - private _username: string, - private _accessKey: string, - private _buildName: string, - private _browsers: Browser[], - private _maxParallelExecutions: number, - private _sauceConnect: string, - private _userCapabilities: object = {}, + private _username: string, + private _accessKey: string, + private _buildName: string, + private _browsers: Browser[], + private _maxParallelExecutions: number, + private _sauceConnect: string, + private _userCapabilities: object = {}, ) { // Starts the keep alive loop for all active browsers, running every 15 seconds. this._keepAliveIntervalId = setInterval(() => this._keepAliveBrowsers(), 15_000); @@ -104,7 +104,7 @@ export class SaucelabsDaemon { */ async quitAllBrowsers() { let quitBrowsers: Promise[] = []; - this._activeBrowsers.forEach(b => { + this._activeBrowsers.forEach((b) => { if (b.driver) { quitBrowsers.push(b.driver.quit()); } @@ -190,7 +190,9 @@ export class SaucelabsDaemon { **/ private async _connect() { await openSauceConnectTunnel( - (this._userCapabilities as any).tunnelIdentifier, this._sauceConnect); + (this._userCapabilities as any).tunnelIdentifier, + this._sauceConnect, + ); } /** @@ -202,74 +204,76 @@ export class SaucelabsDaemon { private async launchBrowserSet() { this._parallelExecutions++; console.debug( - `Launching browsers set ${this._parallelExecutions} of ${this._maxParallelExecutions}...`); + `Launching browsers set ${this._parallelExecutions} of ${this._maxParallelExecutions}...`, + ); // Once the tunnel is established we can launch browsers await Promise.all( - this._browsers.map(async (browser, id) => { - const browserId = getUniqueId(browser); - const launched: RemoteBrowser = { - state: 'launching', - driver: null, - sessionUrl: null, - id: browserId, - }; - const browserDescription = `${this._buildName} - ${browser.browserName} - #${id + 1}`; + this._browsers.map(async (browser, id) => { + const browserId = getUniqueId(browser); + const launched: RemoteBrowser = { + state: 'launching', + driver: null, + sessionUrl: null, + id: browserId, + }; + const browserDescription = `${this._buildName} - ${browser.browserName} - #${id + 1}`; - const capabilities: any = { - 'browserName': browser.browserName, - 'sauce:options': {...this._baseCapabilities, ...browser}, - }; + const capabilities: any = { + 'browserName': browser.browserName, + 'sauce:options': {...this._baseCapabilities, ...browser}, + }; - // Set `sauce:options` to provide a build name for the remote browser instances. - // This helps with debugging. Also ensures the W3C protocol is used. - // See. https://wiki.saucelabs.com/display/DOCS/Test+Configuration+Options - capabilities['sauce:options']['name'] = browserDescription; - capabilities['sauce:options']['build'] = browserDescription; + // Set `sauce:options` to provide a build name for the remote browser instances. + // This helps with debugging. Also ensures the W3C protocol is used. + // See. https://wiki.saucelabs.com/display/DOCS/Test+Configuration+Options + capabilities['sauce:options']['name'] = browserDescription; + capabilities['sauce:options']['build'] = browserDescription; - console.debug( - `Capabilities for ${browser.browserName}:`, JSON.stringify(capabilities, null, 2)); - console.debug(` > Browser-ID: `, browserId); - console.debug(` > Browser-Description: `, browserDescription); + console.debug( + `Capabilities for ${browser.browserName}:`, + JSON.stringify(capabilities, null, 2), + ); + console.debug(` > Browser-ID: `, browserId); + console.debug(` > Browser-Description: `, browserDescription); - // Keep track of the launched browser. We do this before it even completed the - // launch as we can then handle scheduled tests when the browser is still launching. - this._activeBrowsers.push(launched); + // Keep track of the launched browser. We do this before it even completed the + // launch as we can then handle scheduled tests when the browser is still launching. + this._activeBrowsers.push(launched); - // See the following link for public API of the selenium server. - // https://wiki.saucelabs.com/display/DOCS/Instant+Selenium+Node.js+Tests - const driver = await new Builder() - .withCapabilities(capabilities) - .usingServer( - `http://${this._username}:${ - this._accessKey}@ondemand.saucelabs.com:80/wd/hub`, - ) - .build(); + // See the following link for public API of the selenium server. + // https://wiki.saucelabs.com/display/DOCS/Instant+Selenium+Node.js+Tests + const driver = await new Builder() + .withCapabilities(capabilities) + .usingServer( + `http://${this._username}:${this._accessKey}@ondemand.saucelabs.com:80/wd/hub`, + ) + .build(); - // Only wait 30 seconds to load a test page. - await driver.manage().setTimeouts({pageLoad: 30000}); + // Only wait 30 seconds to load a test page. + await driver.manage().setTimeouts({pageLoad: 30000}); - const sessionId = (await driver.getSession()).getId(); + const sessionId = (await driver.getSession()).getId(); - // Mark the browser as available after launch completion. - launched.state = 'free'; - launched.driver = driver; - launched.sessionUrl = `https://saucelabs.com/tests/${sessionId}`; + // Mark the browser as available after launch completion. + launched.state = 'free'; + launched.driver = driver; + launched.sessionUrl = `https://saucelabs.com/tests/${sessionId}`; - console.info( - chalk.yellow( - `Started browser ${browser.browserName} on Saucelabs: ${launched.sessionUrl}`, - ), - ); + console.info( + chalk.yellow( + `Started browser ${browser.browserName} on Saucelabs: ${launched.sessionUrl}`, + ), + ); - // If a test has been scheduled before the browser completed launching, run - // it now given that the browser is ready now. - if (this._pendingTests.has(launched)) { - const test = this._pendingTests.get(launched)!; - this._pendingTests.delete(launched); - this._startBrowserTest(launched, test); - } - }), + // If a test has been scheduled before the browser completed launching, run + // it now given that the browser is ready now. + if (this._pendingTests.has(launched)) { + const test = this._pendingTests.get(launched)!; + this._pendingTests.delete(launched); + this._startBrowserTest(launched, test); + } + }), ); } @@ -305,7 +309,7 @@ export class SaucelabsDaemon { * or launching with no pending test. If no such browser if found, returns * null. **/ - private _findAvailableBrowser(browserId: string): RemoteBrowser|null { + private _findAvailableBrowser(browserId: string): RemoteBrowser | null { for (const browser of this._activeBrowsers) { // If the browser ID doesn't match, continue searching. if (browser.id !== browserId) { @@ -337,13 +341,16 @@ export class SaucelabsDaemon { **/ private async _keepAliveBrowsers() { const pendingCommands: Promise[] = []; - this._activeBrowsers.forEach(b => { + this._activeBrowsers.forEach((b) => { if (b.driver !== null) { pendingCommands.push(b.driver.getTitle() as Promise); } }); await Promise.all(pendingCommands); - console.debug(`${Date().toLocaleString()}: Refreshed ${pendingCommands.length} browsers (pid ${ - process.pid}).`); + console.debug( + `${Date().toLocaleString()}: Refreshed ${pendingCommands.length} browsers (pid ${ + process.pid + }).`, + ); } } diff --git a/tools/saucelabs-daemon/browser.ts b/tools/saucelabs-daemon/browser.ts index e8c172de304..17201ed4743 100644 --- a/tools/saucelabs-daemon/browser.ts +++ b/tools/saucelabs-daemon/browser.ts @@ -20,6 +20,8 @@ export interface Browser { * across the background service and launcher using IPC. */ export function getUniqueId(browser: Browser): string { - let result = Object.keys(browser).sort().map(key => `${key}=${browser[key as keyof Browser]}`); + let result = Object.keys(browser) + .sort() + .map((key) => `${key}=${browser[key as keyof Browser]}`); return result.join(':'); } diff --git a/tools/saucelabs-daemon/ipc-messages.ts b/tools/saucelabs-daemon/ipc-messages.ts index 26184698efc..ca8dbd574d4 100644 --- a/tools/saucelabs-daemon/ipc-messages.ts +++ b/tools/saucelabs-daemon/ipc-messages.ts @@ -9,7 +9,11 @@ /** Message that can be sent to the daemon to start a given test. */ export class StartTestMessage { readonly type = 'start-test'; - constructor(public url: string, public browserId: string, public testDescription: string) {} + constructor( + public url: string, + public browserId: string, + public testDescription: string, + ) {} } /** Message that can be sent to the daemon if a test completed. */ @@ -29,7 +33,7 @@ export class InternalErrorMessage { } /** Type of messages the background service can receive. */ -export type BackgroundServiceReceiveMessages = StartTestMessage|EndTestMessage; +export type BackgroundServiceReceiveMessages = StartTestMessage | EndTestMessage; /** Type of messages the background services can send to clients. */ -export type BackgroundServiceSendMessages = NoAvailableBrowserMessage|InternalErrorMessage; +export type BackgroundServiceSendMessages = NoAvailableBrowserMessage | InternalErrorMessage; diff --git a/tools/saucelabs-daemon/launcher/launcher.ts b/tools/saucelabs-daemon/launcher/launcher.ts index 300749a1224..19235ffa33c 100644 --- a/tools/saucelabs-daemon/launcher/launcher.ts +++ b/tools/saucelabs-daemon/launcher/launcher.ts @@ -13,13 +13,13 @@ import {IPC_PORT} from '../ipc-defaults'; import {BackgroundServiceSendMessages, EndTestMessage, StartTestMessage} from '../ipc-messages'; export function SaucelabsLauncher( - this: any, - args: Browser, - config: unknown, - logger: any, - baseLauncherDecorator: any, - captureTimeoutLauncherDecorator: any, - retryLauncherDecorator: any, + this: any, + args: Browser, + config: unknown, + logger: any, + baseLauncherDecorator: any, + captureTimeoutLauncherDecorator: any, + retryLauncherDecorator: any, ) { // Apply base class mixins. This would be nice to have typed, but this is a low-priority now. baseLauncherDecorator(this); @@ -27,12 +27,13 @@ export function SaucelabsLauncher( retryLauncherDecorator(this); const log = logger.create('SaucelabsLauncher'); - const browserDisplayName = args.browserName + - (args.browserVersion ? ' ' + args.browserVersion : '') + - (args.platformName ? ' (' + args.platformName + ')' : ''); + const browserDisplayName = + args.browserName + + (args.browserVersion ? ' ' + args.browserVersion : '') + + (args.platformName ? ' (' + args.platformName + ')' : ''); const testSuiteDescription = process.env['TEST_TARGET'] ?? ''; - let daemonConnection: Socket|null = null; + let daemonConnection: Socket | null = null; // Setup Browser name that will be printed out by Karma. this.name = browserDisplayName + ' on SauceLabs (daemon)'; @@ -40,11 +41,10 @@ export function SaucelabsLauncher( this.on('start', (pageUrl: string) => { daemonConnection = createConnection({port: IPC_PORT}, () => _startBrowserTest(pageUrl, args)); - daemonConnection.on( - 'data', - b => _processMessage(JSON.parse(b.toString()) as BackgroundServiceSendMessages), + daemonConnection.on('data', (b) => + _processMessage(JSON.parse(b.toString()) as BackgroundServiceSendMessages), ); - daemonConnection.on('error', err => { + daemonConnection.on('error', (err) => { log.error(err); // Notify karma about the failure. @@ -62,8 +62,8 @@ export function SaucelabsLauncher( switch (message.type) { case 'browser-not-ready': log.error( - 'Browser %s is not ready in the Saucelabs background service.', - browserDisplayName, + 'Browser %s is not ready in the Saucelabs background service.', + browserDisplayName, ); this._done('failure'); } @@ -72,7 +72,7 @@ export function SaucelabsLauncher( const _startBrowserTest = (pageUrl: string, browser: Browser) => { log.info('Starting browser %s test in daemon with URL: %s', browserDisplayName, pageUrl); daemonConnection!.write( - JSON.stringify(new StartTestMessage(pageUrl, getUniqueId(browser), testSuiteDescription)), + JSON.stringify(new StartTestMessage(pageUrl, getUniqueId(browser), testSuiteDescription)), ); }; diff --git a/tools/symbol-extractor/cli.ts b/tools/symbol-extractor/cli.ts index 7d917a45838..89cc2bf368b 100644 --- a/tools/symbol-extractor/cli.ts +++ b/tools/symbol-extractor/cli.ts @@ -21,7 +21,7 @@ process.exitCode = main(args) ? 0 : 1; * cli javascriptFilePath.js goldenFilePath.json * ``` */ -function main(argv: [string, string, string]|[string, string]): boolean { +function main(argv: [string, string, string] | [string, string]): boolean { const javascriptFilePath = runfiles.resolveWorkspaceRelative(argv[0]); const goldenFilePath = runfiles.resolveWorkspaceRelative(argv[1]); const doUpdate = argv[2] == '--accept'; diff --git a/tools/symbol-extractor/run_all_symbols_extractor_tests.js b/tools/symbol-extractor/run_all_symbols_extractor_tests.js index 1410c31de6b..157d9af7717 100644 --- a/tools/symbol-extractor/run_all_symbols_extractor_tests.js +++ b/tools/symbol-extractor/run_all_symbols_extractor_tests.js @@ -19,21 +19,25 @@ const USER_COMMAND = argv._[0]; // The shell command to query for all tests. // Bazel targets for testing goldens process.stdout.write('Gathering all symbol extractor targets'); -const ALL_TEST_TARGETS = - spawnSync( - 'yarn', - [ - '-s', 'bazel', 'query', '--output', 'label', - `'kind(nodejs_test, ...) intersect attr("tags", "symbol_extractor", ...)'` - ], - {encoding: 'utf8', shell: true, cwd: path.resolve(__dirname, '../..')}) - .stdout.trim() - .split('\n') - .map(line => line.trim()); +const ALL_TEST_TARGETS = spawnSync( + 'yarn', + [ + '-s', + 'bazel', + 'query', + '--output', + 'label', + `'kind(nodejs_test, ...) intersect attr("tags", "symbol_extractor", ...)'`, + ], + {encoding: 'utf8', shell: true, cwd: path.resolve(__dirname, '../..')}, +) + .stdout.trim() + .split('\n') + .map((line) => line.trim()); process.stdout.clearLine(); process.stdout.cursorTo(0); // Bazel targets for generating goldens -const ALL_ACCEPT_TARGETS = ALL_TEST_TARGETS.map(test => `${test}.accept`); +const ALL_ACCEPT_TARGETS = ALL_TEST_TARGETS.map((test) => `${test}.accept`); /** Run the provided bazel commands on each provided target individually. */ function runBazelCommandOnTargets(command, targets, present) { diff --git a/tools/symbol-extractor/symbol_extractor.ts b/tools/symbol-extractor/symbol_extractor.ts index 37233e6959d..7bac6fb774a 100644 --- a/tools/symbol-extractor/symbol_extractor.ts +++ b/tools/symbol-extractor/symbol_extractor.ts @@ -8,7 +8,6 @@ import ts from 'typescript'; - export interface Symbol { name: string; } @@ -65,8 +64,8 @@ export class SymbolExtractor { classDecl.name && symbols.push({name: stripSuffix(classDecl.name.getText())}); break; default: - // Left for easier debugging. - // console.log('###', ts.SyntaxKind[child.kind], child.getText()); + // Left for easier debugging. + // console.log('###', ts.SyntaxKind[child.kind], child.getText()); } } visitor(source); @@ -74,7 +73,7 @@ export class SymbolExtractor { return symbols; } - static diff(actual: Symbol[], expected: string|((Symbol | string)[])): {[name: string]: number} { + static diff(actual: Symbol[], expected: string | (Symbol | string)[]): {[name: string]: number} { if (typeof expected == 'string') { expected = JSON.parse(expected) as string[]; } @@ -83,7 +82,7 @@ export class SymbolExtractor { // All symbols in the golden file start out with a count corresponding to the number of symbols // with that name. Once they are matched with symbols in the actual output, the count should // even out to 0. - expected.forEach(nameOrSymbol => { + expected.forEach((nameOrSymbol) => { const symbolName = typeof nameOrSymbol == 'string' ? nameOrSymbol : nameOrSymbol.name; diff[symbolName] = (diff[symbolName] || 0) + 1; }); @@ -98,16 +97,18 @@ export class SymbolExtractor { return diff; } - - constructor(private path: string, private contents: string) { + constructor( + private path: string, + private contents: string, + ) { this.actual = SymbolExtractor.parse(path, contents); } - expect(expectedSymbols: (string|Symbol)[]) { + expect(expectedSymbols: (string | Symbol)[]) { expect(SymbolExtractor.diff(this.actual, expectedSymbols)).toEqual({}); } - compareAndPrintError(goldenFilePath: string, expected: string|((Symbol | string)[])): boolean { + compareAndPrintError(goldenFilePath: string, expected: string | (Symbol | string)[]): boolean { let passed = true; const diff = SymbolExtractor.diff(this.actual, expected); Object.keys(diff).forEach((key) => { diff --git a/tools/symbol-extractor/symbol_extractor_spec.ts b/tools/symbol-extractor/symbol_extractor_spec.ts index ddc0b75993b..1da15bc4766 100644 --- a/tools/symbol-extractor/symbol_extractor_spec.ts +++ b/tools/symbol-extractor/symbol_extractor_spec.ts @@ -14,7 +14,8 @@ import {SymbolExtractor} from './symbol_extractor'; describe('scenarios', () => { const symbolExtractorSpecDir = path.dirname( - runfiles.resolve('angular/tools/symbol-extractor/symbol_extractor_spec/empty.json')); + runfiles.resolve('angular/tools/symbol-extractor/symbol_extractor_spec/empty.json'), + ); const scenarioFiles = fs.readdirSync(symbolExtractorSpecDir); for (let i = 0; i < scenarioFiles.length; i++) { const filePath = scenarioFiles[i]; @@ -47,11 +48,14 @@ describe('scenarios', () => { it('should properly capture classes in TypeScript ES2015 class output', () => { const jsFileContent = fs.readFileSync( - runfiles.resolve( - 'angular/tools/symbol-extractor/symbol_extractor_spec/es2015_class_output.mjs'), - 'utf8'); - const jsonFileContent = - fs.readFileSync(path.join(symbolExtractorSpecDir, 'es2015_class_output.json')).toString(); + runfiles.resolve( + 'angular/tools/symbol-extractor/symbol_extractor_spec/es2015_class_output.mjs', + ), + 'utf8', + ); + const jsonFileContent = fs + .readFileSync(path.join(symbolExtractorSpecDir, 'es2015_class_output.json')) + .toString(); const symbols = SymbolExtractor.parse('es2015_class_output', jsFileContent); const diff = SymbolExtractor.diff(symbols, jsonFileContent); expect(diff).toEqual({}); diff --git a/tools/symbol-extractor/symbol_extractor_spec/dont_pick_up_inner_symbols.js b/tools/symbol-extractor/symbol_extractor_spec/dont_pick_up_inner_symbols.js index 6b9d6c540a2..58303381bf3 100644 --- a/tools/symbol-extractor/symbol_extractor_spec/dont_pick_up_inner_symbols.js +++ b/tools/symbol-extractor/symbol_extractor_spec/dont_pick_up_inner_symbols.js @@ -6,14 +6,14 @@ * found in the LICENSE file at https://angular.io/license */ -!function() { +!(function () { function A() { function ignoreA() {} } function B() { let ignoreB = {}; } - !function() { + !function () { let ignoreC = {}; }; -}(); +})(); diff --git a/tools/symbol-extractor/symbol_extractor_spec/drop_trailing_suffix.js b/tools/symbol-extractor/symbol_extractor_spec/drop_trailing_suffix.js index 2de196c43f1..5c8d400b768 100644 --- a/tools/symbol-extractor/symbol_extractor_spec/drop_trailing_suffix.js +++ b/tools/symbol-extractor/symbol_extractor_spec/drop_trailing_suffix.js @@ -6,7 +6,9 @@ * found in the LICENSE file at https://angular.io/license */ -!function() { +!(function () { 'use strict'; - var constant$1 = 1, method$2 = function() {}, clazz$3 = class {}; -}(); + var constant$1 = 1, + method$2 = function () {}, + clazz$3 = class {}; +})(); diff --git a/tools/symbol-extractor/symbol_extractor_spec/empty_iife.js b/tools/symbol-extractor/symbol_extractor_spec/empty_iife.js index e87739ea825..a815252a85c 100644 --- a/tools/symbol-extractor/symbol_extractor_spec/empty_iife.js +++ b/tools/symbol-extractor/symbol_extractor_spec/empty_iife.js @@ -6,4 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -(function() {})(); +(function () {})(); diff --git a/tools/symbol-extractor/symbol_extractor_spec/hello_world_min_debug.js b/tools/symbol-extractor/symbol_extractor_spec/hello_world_min_debug.js index 7b0fd920a2c..19810d8c47b 100644 --- a/tools/symbol-extractor/symbol_extractor_spec/hello_world_min_debug.js +++ b/tools/symbol-extractor/symbol_extractor_spec/hello_world_min_debug.js @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -!function() { +!(function () { 'use strict'; /** *@license @@ -49,9 +49,11 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ 'undefined' != typeof window && window, - 'undefined' != typeof self && 'undefined' != typeof WorkerGlobalScope && - self instanceof WorkerGlobalScope && self, - 'undefined' != typeof global && global; + 'undefined' != typeof self && + 'undefined' != typeof WorkerGlobalScope && + self instanceof WorkerGlobalScope && + self, + 'undefined' != typeof global && global; /** *@license *Copyright Google Inc. All Rights Reserved. @@ -69,46 +71,50 @@ */ Function; var __window$1 = 'undefined' != typeof window && window, - __self$1 = 'undefined' != typeof self && 'undefined' != typeof WorkerGlobalScope && - self instanceof WorkerGlobalScope && self, - __global$1 = 'undefined' != typeof global && global, - _root = __window$1 || __global$1 || __self$1; - !function() { + __self$1 = + 'undefined' != typeof self && + 'undefined' != typeof WorkerGlobalScope && + self instanceof WorkerGlobalScope && + self, + __global$1 = 'undefined' != typeof global && global, + _root = __window$1 || __global$1 || __self$1; + !(function () { if (!_root) throw new Error('RxJS could not find any global context (window, self, global)'); - }(); + })(); Array; - !function() { + !(function () { Object.setPrototypeOf || Array; - }(); + })(); Error; - var RendererStyleFlags2, Symbol$1 = _root.Symbol; - 'function' == typeof Symbol$1 && 'function' == typeof Symbol$1.for && - Symbol$1.for('rxSubscriber'), - function() { - Object.setPrototypeOf || Array; - }(); - !function(context) { - var $$observable, Symbol = _root.Symbol; + var RendererStyleFlags2, + Symbol$1 = _root.Symbol; + 'function' == typeof Symbol$1 && + 'function' == typeof Symbol$1.for && + Symbol$1.for('rxSubscriber'), + (function () { + Object.setPrototypeOf || Array; + })(); + !(function (context) { + var $$observable, + Symbol = _root.Symbol; if ('function' == typeof Symbol) - if (Symbol.observable) - $$observable = Symbol.observable; + if (Symbol.observable) $$observable = Symbol.observable; else { $$observable = Symbol('observable'); Symbol.observable = $$observable; } - else - $$observable = '@@observable'; - }(); - (function() { + else $$observable = '@@observable'; + })(); + (function () { Object.setPrototypeOf || Array; })(), - function() { - Object.setPrototypeOf || Array; - }(); - !function() { + (function () { + Object.setPrototypeOf || Array; + })(); + !(function () { Object.setPrototypeOf || Array; - }(); - (function(root) { + })(); + (function (root) { var Symbol = root.Symbol; if ('function' == typeof Symbol) { Symbol.iterator || (Symbol.iterator = Symbol('iterator polyfill')); @@ -124,37 +130,41 @@ return key; } })(_root), - function() { - Object.setPrototypeOf || Array; - }(); - (function() { + (function () { + Object.setPrototypeOf || Array; + })(); + (function () { Object.setPrototypeOf || Array; })(), - function() { - Object.setPrototypeOf || Array; - }(); - !function() { + (function () { + Object.setPrototypeOf || Array; + })(); + !(function () { Object.setPrototypeOf || Array; - }(); - Error, function() { + })(); + Error, + (function () { + Object.setPrototypeOf || Array; + })(), + (function () { + Object.setPrototypeOf || Array; + })(), + (function () { + Object.setPrototypeOf || Array; + })(); + !(function () { Object.setPrototypeOf || Array; - }(), function() { - Object.setPrototypeOf || Array; - }(), function() { - Object.setPrototypeOf || Array; - }(); - !function() { - Object.setPrototypeOf || Array; - }(); + })(); Object; RendererStyleFlags2 || (RendererStyleFlags2 = {}); - var RendererStyleFlags3, _renderCompCount = 0; + var RendererStyleFlags3, + _renderCompCount = 0; function executeHooks(data, allHooks, checkHooks, creationMode) { var hooksToCall = creationMode ? allHooks : checkHooks; null != hooksToCall && - function(data, arr) { - for (var i = 0; i < arr.length; i += 2) arr[1 | i].call(data[arr[i]]); - } + (function (data, arr) { + for (var i = 0; i < arr.length; i += 2) arr[1 | i].call(data[arr[i]]); + })( /** * @license * Copyright Google LLC All Rights Reserved. @@ -183,13 +193,15 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ - (data, hooksToCall); + data, + hooksToCall, + ); } RendererStyleFlags3 || (RendererStyleFlags3 = {}); var domRendererFactory3 = { - createRenderer: function(hostElement, rendererType) { + createRenderer: function (hostElement, rendererType) { return document; - } + }, }; /** *@license @@ -207,24 +219,24 @@ */ function getNextLNodeWithProjection(node) { var pNextOrParent = node.pNextOrParent; - return pNextOrParent ? 1 == (3 & pNextOrParent.flags) ? null : pNextOrParent : node.next; + return pNextOrParent ? (1 == (3 & pNextOrParent.flags) ? null : pNextOrParent) : node.next; } function getNextOrParentSiblingNode(initialNode, rootNode) { - for (var node = initialNode, nextNode = getNextLNodeWithProjection(node); node && !nextNode;) { + for (var node = initialNode, nextNode = getNextLNodeWithProjection(node); node && !nextNode; ) { if ((node = node.pNextOrParent || node.parent) === rootNode) return null; nextNode = node && getNextLNodeWithProjection(node); } return nextNode; } function findFirstRNode(rootNode) { - for (var node = rootNode; node;) { - var type = 3 & node.flags, nextNode = null; + for (var node = rootNode; node; ) { + var type = 3 & node.flags, + nextNode = null; if (3 === type) return node.native; if (0 === type) { var childContainerData = node.data; nextNode = childContainerData.views.length ? childContainerData.views[0].child : null; - } else - nextNode = 1 === type ? node.data.head : node.child; + } else nextNode = 1 === type ? node.data.head : node.child; node = null === nextNode ? getNextOrParentSiblingNode(node, rootNode) : nextNode; } return null; @@ -233,9 +245,13 @@ return 3 == (3 & parent.flags) && (parent.view !== view || null === parent.data); } function stringify$1(value) { - return 'function' == typeof value ? - value.name || value : - 'string' == typeof value ? value : null == value ? '' : '' + value; + return 'function' == typeof value + ? value.name || value + : 'string' == typeof value + ? value + : null == value + ? '' + : '' + value; } /** *@license @@ -244,8 +260,16 @@ *Use of this source code is governed by an MIT-style license that can be *found in the LICENSE file at https://angular.io/license */ - var renderer, rendererFactory, previousOrParentNode, isParent, tData, currentView, currentQueries, - creationMode, data, bindingIndex; + var renderer, + rendererFactory, + previousOrParentNode, + isParent, + tData, + currentView, + currentQueries, + creationMode, + data, + bindingIndex; currentView = createLView(null, null, createTView()); function enterView(newView, host) { var oldView = currentView; @@ -264,8 +288,11 @@ } function leaveView(newView) { executeHooks( - currentView.data, currentView.tView.viewHooks, currentView.tView.viewCheckHooks, - creationMode); + currentView.data, + currentView.tView.viewHooks, + currentView.tView.viewCheckHooks, + creationMode, + ); currentView.creationMode = !1; currentView.lifecycleStage = 1; currentView.tView.firstCreatePass = !1; @@ -291,52 +318,58 @@ context: context, dynamicViewCount: 0, lifecycleStage: 1, - queries: null + queries: null, }; } function createLNode(index, type, native, state) { - var parent = - isParent ? previousOrParentNode : previousOrParentNode && previousOrParentNode.parent, - queries = - (isParent ? currentQueries : previousOrParentNode && previousOrParentNode.queries) || - parent && parent.queries && parent.queries.child(), - isState = null != state, node = { - flags: type, - native: native, - view: currentView, - parent: parent, - child: null, - next: null, - nodeInjector: parent ? parent.nodeInjector : null, - data: isState ? state : null, - queries: queries, - tNode: null, - pNextOrParent: null - }; + var parent = isParent + ? previousOrParentNode + : previousOrParentNode && previousOrParentNode.parent, + queries = + (isParent ? currentQueries : previousOrParentNode && previousOrParentNode.queries) || + (parent && parent.queries && parent.queries.child()), + isState = null != state, + node = { + flags: type, + native: native, + view: currentView, + parent: parent, + child: null, + next: null, + nodeInjector: parent ? parent.nodeInjector : null, + data: isState ? state : null, + queries: queries, + tNode: null, + pNextOrParent: null, + }; 2 == (2 & type) && isState && (state.node = node); if (null != index) { data[index] = node; - index >= tData.length ? tData[index] = null : node.tNode = tData[index]; + index >= tData.length ? (tData[index] = null) : (node.tNode = tData[index]); if (isParent) { currentQueries = null; - previousOrParentNode.view !== currentView && 2 != (3 & previousOrParentNode.flags) || - (previousOrParentNode.child = node); - } else - previousOrParentNode && (previousOrParentNode.next = node); + (previousOrParentNode.view !== currentView && 2 != (3 & previousOrParentNode.flags)) || + (previousOrParentNode.child = node); + } else previousOrParentNode && (previousOrParentNode.next = node); } previousOrParentNode = node; isParent = !0; return node; } function renderEmbeddedTemplate(viewNode, template, context, renderer) { - var _isParent = isParent, _previousOrParentNode = previousOrParentNode; + var _isParent = isParent, + _previousOrParentNode = previousOrParentNode; try { isParent = !0; previousOrParentNode = null; var cm = !1; if (null == viewNode) { - viewNode = - createLNode(null, 2, null, createLView(-1, renderer, createTView(), template, context)); + viewNode = createLNode( + null, + 2, + null, + createLView(-1, renderer, createTView(), template, context), + ); cm = !0; } enterView(viewNode.data, viewNode); @@ -353,26 +386,31 @@ var oldView = enterView(hostView, node); try { rendererFactory.begin && rendererFactory.begin(); - template ? - template(componentOrContext, creationMode) : - function(directiveIndex, elementIndex) { - !function(currentView, tView, creationMode) { + template + ? template(componentOrContext, creationMode) + : (function (directiveIndex, elementIndex) { + !(function (currentView, tView, creationMode) { if (1 === currentView.lifecycleStage) { executeHooks(currentView.data, tView.initHooks, tView.checkHooks, creationMode); currentView.lifecycleStage = 2; } - }(currentView, currentView.tView, creationMode); - !function(currentView, tView, creationMode) { + })(currentView, currentView.tView, creationMode); + !(function (currentView, tView, creationMode) { if (currentView.lifecycleStage < 3) { executeHooks( - currentView.data, tView.contentHooks, tView.contentCheckHooks, creationMode); + currentView.data, + tView.contentHooks, + tView.contentCheckHooks, + creationMode, + ); currentView.lifecycleStage = 3; } - }(currentView, currentView.tView, creationMode); + })(currentView, currentView.tView, creationMode); var template = tData[1].template; if (null != template) { - var element = data[0], directive = getDirectiveInstance(data[1]), - oldView = enterView(element.data, element); + var element = data[0], + directive = getDirectiveInstance(data[1]), + oldView = enterView(element.data, element); try { template(directive, creationMode); } finally { @@ -380,7 +418,7 @@ leaveView(oldView); } } - }(); + })(); } finally { rendererFactory.end && rendererFactory.end(); leaveView(oldView); @@ -397,16 +435,17 @@ viewHooks: null, viewCheckHooks: null, destroyHooks: null, - objectLiterals: null + objectLiterals: null, }; } function locateHostElement(factory, elementOrSelector) { rendererFactory = factory; var defaultRenderer = factory.createRenderer(null, null); - return 'string' == typeof elementOrSelector ? - defaultRenderer.selectRootElement ? defaultRenderer.selectRootElement(elementOrSelector) : - defaultRenderer.querySelector(elementOrSelector) : - elementOrSelector; + return 'string' == typeof elementOrSelector + ? defaultRenderer.selectRootElement + ? defaultRenderer.selectRootElement(elementOrSelector) + : defaultRenderer.querySelector(elementOrSelector) + : elementOrSelector; } function refreshDynamicChildren() { for (var current = currentView.child; null !== current; current = current.next) @@ -471,41 +510,58 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ - ! - /** - * @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.io/license - */ - function(componentType, opts) { - void 0 === opts && (opts = {}); - var component, rendererFactory = opts.rendererFactory || domRendererFactory3, - componentDef = componentType.ɵcmp; - componentDef.type != componentType && (componentDef.type = componentType); - var hostNode = locateHostElement(rendererFactory, opts.host || componentDef.tag), - oldView = enterView( - createLView( - -1, rendererFactory.createRenderer(hostNode, componentDef.rendererType), - createTView()), - null); - try { - !function(rNode, def) { - !function() { - isParent = !1; - previousOrParentNode = null; - }(); - createLNode(0, 3, rNode, createLView(-1, renderer, function(template) { - return template.ngPrivateData || (template.ngPrivateData = createTView()); - }(def.template))); - }(hostNode, componentDef); - component = getDirectiveInstance(function(index, directive, directiveDef, queryName) { - var instance, flags = previousOrParentNode.flags; - 0 == (4092 & flags) ? flags = 4100 | 3 & flags : flags += 4; + !( + /** + * @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.io/license + */ + (function (componentType, opts) { + void 0 === opts && (opts = {}); + var component, + rendererFactory = opts.rendererFactory || domRendererFactory3, + componentDef = componentType.ɵcmp; + componentDef.type != componentType && (componentDef.type = componentType); + var hostNode = locateHostElement(rendererFactory, opts.host || componentDef.tag), + oldView = enterView( + createLView( + -1, + rendererFactory.createRenderer(hostNode, componentDef.rendererType), + createTView(), + ), + null, + ); + try { + !(function (rNode, def) { + !(function () { + isParent = !1; + previousOrParentNode = null; + })(); + createLNode( + 0, + 3, + rNode, + createLView( + -1, + renderer, + (function (template) { + return template.ngPrivateData || (template.ngPrivateData = createTView()); + })(def.template), + ), + ); + })(hostNode, componentDef); + component = getDirectiveInstance( + (function (index, directive, directiveDef, queryName) { + var instance, + flags = previousOrParentNode.flags; + 0 == (4092 & flags) ? (flags = 4100 | (3 & flags)) : (flags += 4); previousOrParentNode.flags = flags; - Object.defineProperty( - directive, '__ngHostLNode__', {enumerable: !1, value: previousOrParentNode}); + Object.defineProperty(directive, '__ngHostLNode__', { + enumerable: !1, + value: previousOrParentNode, + }); data[1] = instance = directive; if (1 >= tData.length) { tData[1] = directiveDef; @@ -513,56 +569,62 @@ var diPublic = directiveDef.diPublic; diPublic && diPublic(directiveDef); var tNode = previousOrParentNode.tNode; - tNode && tNode.attrs && function(instance, inputs, tNode) { - var directiveIndex = ((4092 & previousOrParentNode.flags) >> 2) - 1, + tNode && + tNode.attrs && + (function (instance, inputs, tNode) { + var directiveIndex = ((4092 & previousOrParentNode.flags) >> 2) - 1, initialInputData = tNode.initialInputs; - (void 0 === initialInputData || directiveIndex >= initialInputData.length) && - (initialInputData = function(directiveIndex, inputs, tNode) { + (void 0 === initialInputData || directiveIndex >= initialInputData.length) && + (initialInputData = (function (directiveIndex, inputs, tNode) { var initialInputData = tNode.initialInputs || (tNode.initialInputs = []); initialInputData[directiveIndex] = null; for (var attrs = tNode.attrs, i = 0; i < attrs.length; i += 2) { var minifiedInputName = inputs[attrs[i]]; void 0 !== minifiedInputName && - (initialInputData[directiveIndex] || - (initialInputData[directiveIndex] = [])) - .push(minifiedInputName, attrs[1 | i]); + ( + initialInputData[directiveIndex] || + (initialInputData[directiveIndex] = []) + ).push(minifiedInputName, attrs[1 | i]); } return initialInputData; - }(directiveIndex, directiveDef.inputs, tNode)); - var initialInputs = initialInputData[directiveIndex]; - if (initialInputs) - for (var i = 0; i < initialInputs.length; i += 2) - instance[initialInputs[i]] = initialInputs[1 | i]; - }(instance, 0, tNode); - ! - /** - * @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.io/license - */ - function(index, onInit, doCheck, tView) { - if (!0 === tView.firstCreatePass) { - null != onInit && (tView.initHooks || (tView.initHooks = [])).push(1, onInit); - if (null != doCheck) { - (tView.initHooks || (tView.initHooks = [])).push(1, doCheck); - (tView.checkHooks || (tView.checkHooks = [])).push(1, doCheck); - } + })(directiveIndex, directiveDef.inputs, tNode)); + var initialInputs = initialInputData[directiveIndex]; + if (initialInputs) + for (var i = 0; i < initialInputs.length; i += 2) + instance[initialInputs[i]] = initialInputs[1 | i]; + })(instance, 0, tNode); + !( + /** + * @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.io/license + */ + (function (index, onInit, doCheck, tView) { + if (!0 === tView.firstCreatePass) { + null != onInit && (tView.initHooks || (tView.initHooks = [])).push(1, onInit); + if (null != doCheck) { + (tView.initHooks || (tView.initHooks = [])).push(1, doCheck); + (tView.checkHooks || (tView.checkHooks = [])).push(1, doCheck); } - }(0, directiveDef.onInit, directiveDef.doCheck, currentView.tView); + } + })(0, directiveDef.onInit, directiveDef.doCheck, currentView.tView) + ); return instance; - }(0, componentDef.n(), componentDef)); - } finally { - leaveView(oldView); - } - opts.features && opts.features.forEach(function(feature) { + })(0, componentDef.n(), componentDef), + ); + } finally { + leaveView(oldView); + } + opts.features && + opts.features.forEach(function (feature) { return feature(component, componentDef); }); - !function(component) { - var hostNode = component.__ngHostLNode__; - renderComponentOrTemplate(hostNode, hostNode.view, component); - } + !(function (component) { + var hostNode = component.__ngHostLNode__; + renderComponentOrTemplate(hostNode, hostNode.view, component); + })( /** * @license * Copyright Google LLC All Rights Reserved. @@ -577,140 +639,160 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ - (component); - }(function() { + component, + ); + })( + (function () { function HelloWorld() { this.name = 'World'; } - HelloWorld.ɵcmp = function(componentDefinition) { - var type = componentDefinition.type, def = { - type: type, - diPublic: null, - n: componentDefinition.factory, - tag: componentDefinition.tag || null, - template: componentDefinition.template || null, - h: componentDefinition.hostBindings || noop$2, - inputs: invertObject(componentDefinition.inputs), - outputs: invertObject(componentDefinition.outputs), - methods: invertObject(componentDefinition.methods), - rendererType: function(type) { - if (type && '$$undefined' === type.id) { - var isFilled = - null != type.encapsulation && type.encapsulation !== ViewEncapsulation.None || - type.styles.length || Object.keys(type.data).length; - type.id = isFilled ? 'c' + _renderCompCount++ : '$$empty'; - } - type && '$$empty' === type.id && (type = null); - return type || null; - }(componentDefinition.rendererType) || - null, - exportAs: componentDefinition.exportAs, - onInit: type.prototype.ngOnInit || null, - doCheck: type.prototype.ngDoCheck || null, - afterContentInit: type.prototype.ngAfterContentInit || null, - afterContentChecked: type.prototype.ngAfterContentChecked || null, - afterViewInit: type.prototype.ngAfterViewInit || null, - afterViewChecked: type.prototype.ngAfterViewChecked || null, - onDestroy: type.prototype.ngOnDestroy || null - }, - feature = componentDefinition.features; - feature && feature.forEach(function(fn) { - return fn(def); - }); + HelloWorld.ɵcmp = (function (componentDefinition) { + var type = componentDefinition.type, + def = { + type: type, + diPublic: null, + n: componentDefinition.factory, + tag: componentDefinition.tag || null, + template: componentDefinition.template || null, + h: componentDefinition.hostBindings || noop$2, + inputs: invertObject(componentDefinition.inputs), + outputs: invertObject(componentDefinition.outputs), + methods: invertObject(componentDefinition.methods), + rendererType: + (function (type) { + if (type && '$$undefined' === type.id) { + var isFilled = + (null != type.encapsulation && + type.encapsulation !== ViewEncapsulation.None) || + type.styles.length || + Object.keys(type.data).length; + type.id = isFilled ? 'c' + _renderCompCount++ : '$$empty'; + } + type && '$$empty' === type.id && (type = null); + return type || null; + })(componentDefinition.rendererType) || null, + exportAs: componentDefinition.exportAs, + onInit: type.prototype.ngOnInit || null, + doCheck: type.prototype.ngDoCheck || null, + afterContentInit: type.prototype.ngAfterContentInit || null, + afterContentChecked: type.prototype.ngAfterContentChecked || null, + afterViewInit: type.prototype.ngAfterViewInit || null, + afterViewChecked: type.prototype.ngAfterViewChecked || null, + onDestroy: type.prototype.ngOnDestroy || null, + }, + feature = componentDefinition.features; + feature && + feature.forEach(function (fn) { + return fn(def); + }); return def; - }({ + })({ type: HelloWorld, tag: 'hello-world', - factory: function() { + factory: function () { return new HelloWorld(); }, - template: function(ctx, cm) { - cm && function(index, value) { - createLNode(0, 3, null); - isParent = !1; - }(); - !function(index, value) { + template: function (ctx, cm) { + cm && + (function (index, value) { + createLNode(0, 3, null); + isParent = !1; + })(); + !(function (index, value) { var existingNode = data[0]; if (existingNode.native) value !== NO_CHANGE && - (renderer.setValue ? - renderer.setValue(existingNode.native, stringify$1(value)) : - existingNode.native.textContent = stringify$1(value)); + (renderer.setValue + ? renderer.setValue(existingNode.native, stringify$1(value)) + : (existingNode.native.textContent = stringify$1(value))); else { - existingNode.native = renderer.createText ? - renderer.createText(stringify$1(value)) : - renderer.createTextNode(stringify$1(value)); - !function(node, currentView) { + existingNode.native = renderer.createText + ? renderer.createText(stringify$1(value)) + : renderer.createTextNode(stringify$1(value)); + !(function (node, currentView) { var parent = node.parent; if (canInsertNativeNode(parent, currentView)) { - var nativeSibling = function(node, stopNode) { - for (var currentNode = node; currentNode && null !== currentNode;) { - var pNextOrParent = currentNode.pNextOrParent; - if (pNextOrParent) { - for (var pNextOrParentType = 3 & pNextOrParent.flags; - 1 !== pNextOrParentType;) { - if (nativeNode = findFirstRNode(pNextOrParent)) return nativeNode; - pNextOrParent = pNextOrParent.pNextOrParent; - } - currentNode = pNextOrParent; - } else { - for (var currentSibling = currentNode.next; currentSibling;) { - var nativeNode; - if (nativeNode = findFirstRNode(currentSibling)) return nativeNode; - currentSibling = currentSibling.next; - } - var parentNode = currentNode.parent; - currentNode = null; - if (parentNode) { - var parentType = 3 & parentNode.flags; - 0 !== parentType && 2 !== parentType || (currentNode = parentNode); + var nativeSibling = (function (node, stopNode) { + for (var currentNode = node; currentNode && null !== currentNode; ) { + var pNextOrParent = currentNode.pNextOrParent; + if (pNextOrParent) { + for ( + var pNextOrParentType = 3 & pNextOrParent.flags; + 1 !== pNextOrParentType; + + ) { + if ((nativeNode = findFirstRNode(pNextOrParent))) return nativeNode; + pNextOrParent = pNextOrParent.pNextOrParent; + } + currentNode = pNextOrParent; + } else { + for (var currentSibling = currentNode.next; currentSibling; ) { + var nativeNode; + if ((nativeNode = findFirstRNode(currentSibling))) return nativeNode; + currentSibling = currentSibling.next; + } + var parentNode = currentNode.parent; + currentNode = null; + if (parentNode) { + var parentType = 3 & parentNode.flags; + (0 !== parentType && 2 !== parentType) || (currentNode = parentNode); + } } } - } - return null; - }(node), renderer = currentView.renderer; - renderer.listen ? - renderer.insertBefore(parent.native, node.native, nativeSibling) : - parent.native.insertBefore(node.native, nativeSibling, !1); + return null; + })(node), + renderer = currentView.renderer; + renderer.listen + ? renderer.insertBefore(parent.native, node.native, nativeSibling) + : parent.native.insertBefore(node.native, nativeSibling, !1); } - } - /** - * @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.io/license - */ - /** - * @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.io/license - */ - (existingNode, currentView); + })( + /** + * @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.io/license + */ + /** + * @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.io/license + */ + existingNode, + currentView, + ); } - }(0, function(prefix, value, suffix) { - return function(value) { - if (creationMode) { - !function() { - null == currentView.bindingStartIndex && + })( + 0, + (function (prefix, value, suffix) { + return (function (value) { + if (creationMode) { + !(function () { + null == currentView.bindingStartIndex && (bindingIndex = currentView.bindingStartIndex = data.length); - }(); - return data[bindingIndex++] = value; - } - var changed = value !== NO_CHANGE && function(a, b) { - return !(a != a && value != value) && a !== value; - }(data[bindingIndex]); - changed && (data[bindingIndex] = value); - bindingIndex++; - return changed ? value : NO_CHANGE; - }(value) === NO_CHANGE ? - NO_CHANGE : - 'Hello ' + stringify$1(value) + '!'; - }(0, ctx.name)); - } + })(); + return (data[bindingIndex++] = value); + } + var changed = + value !== NO_CHANGE && + (function (a, b) { + return !(a != a && value != value) && a !== value; + })(data[bindingIndex]); + changed && (data[bindingIndex] = value); + bindingIndex++; + return changed ? value : NO_CHANGE; + })(value) === NO_CHANGE + ? NO_CHANGE + : 'Hello ' + stringify$1(value) + '!'; + })(0, ctx.name), + ); + }, }); return HelloWorld; - }()); -}(); + })(), + ) + ); +})(); diff --git a/tools/symbol-extractor/symbol_extractor_spec/iife_arrow_function.js b/tools/symbol-extractor/symbol_extractor_spec/iife_arrow_function.js index c88847b8114..325ded65fc4 100644 --- a/tools/symbol-extractor/symbol_extractor_spec/iife_arrow_function.js +++ b/tools/symbol-extractor/symbol_extractor_spec/iife_arrow_function.js @@ -7,5 +7,6 @@ */ (() => { - var Class = function() {}, fn = function() {}; + var Class = function () {}, + fn = function () {}; })(); diff --git a/tools/symbol-extractor/symbol_extractor_spec/simple.js b/tools/symbol-extractor/symbol_extractor_spec/simple.js index 31b9a6e8cdf..b876f5441e0 100644 --- a/tools/symbol-extractor/symbol_extractor_spec/simple.js +++ b/tools/symbol-extractor/symbol_extractor_spec/simple.js @@ -6,6 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -(function() { -var Class = function() {}, fn = function() {}; +(function () { + var Class = function () {}, + fn = function () {}; })(); diff --git a/tools/symbol-extractor/symbol_extractor_spec/two_symbols_per_var.js b/tools/symbol-extractor/symbol_extractor_spec/two_symbols_per_var.js index cd2a785061a..92292881f3f 100644 --- a/tools/symbol-extractor/symbol_extractor_spec/two_symbols_per_var.js +++ b/tools/symbol-extractor/symbol_extractor_spec/two_symbols_per_var.js @@ -6,22 +6,29 @@ * found in the LICENSE file at https://angular.io/license */ -!function() { +!(function () { 'use strict'; // tslint:disable-next-line:no-console console.log('Hello, Alice in Wonderland'); - var A = function() { - function A() {} - return A.prototype.a = function() { - return document.a; - }, A; - }(), B = function() { - function B() {} - return B.prototype.b = function() { - return window.b; - }, B; - }(); + var A = (function () { + function A() {} + return ( + (A.prototype.a = function () { + return document.a; + }), + A + ); + })(), + B = (function () { + function B() {} + return ( + (B.prototype.b = function () { + return window.b; + }), + B + ); + })(); var no_initializer; // tslint:disable-next-line:no-console console.error(new A().a(), new B().b()); -}(); +})(); diff --git a/tools/symbol-extractor/symbol_extractor_spec/var_list.js b/tools/symbol-extractor/symbol_extractor_spec/var_list.js index 7bbd9934630..d35b8b36fc1 100644 --- a/tools/symbol-extractor/symbol_extractor_spec/var_list.js +++ b/tools/symbol-extractor/symbol_extractor_spec/var_list.js @@ -6,7 +6,9 @@ * found in the LICENSE file at https://angular.io/license */ -!function() { +!(function () { 'use strict'; - var constant = 1, method = function() {}, clazz = class {}; -}(); + var constant = 1, + method = function () {}, + clazz = class {}; +})(); diff --git a/tools/testing/browser_tests.init.ts b/tools/testing/browser_tests.init.ts index d3f333592af..7de8a45e9a5 100644 --- a/tools/testing/browser_tests.init.ts +++ b/tools/testing/browser_tests.init.ts @@ -11,11 +11,16 @@ import './zone_base_setup'; import '@angular/compiler'; // For JIT mode. Must be in front of any other @angular/* imports. import {TestBed} from '@angular/core/testing'; -import {BrowserDynamicTestingModule, platformBrowserDynamicTesting} from '@angular/platform-browser-dynamic/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting, +} from '@angular/platform-browser-dynamic/testing'; import {NoopAnimationsModule} from '@angular/platform-browser/animations'; TestBed.initTestEnvironment( - [BrowserDynamicTestingModule, NoopAnimationsModule], platformBrowserDynamicTesting()); + [BrowserDynamicTestingModule, NoopAnimationsModule], + platformBrowserDynamicTesting(), +); (window as any).isNode = false; (window as any).isBrowser = true; diff --git a/tools/testing/node_tests.init.ts b/tools/testing/node_tests.init.ts index e4b14d8c1fc..aacf1f02e17 100644 --- a/tools/testing/node_tests.init.ts +++ b/tools/testing/node_tests.init.ts @@ -15,11 +15,15 @@ import './zone_base_setup'; import '@angular/compiler'; // For JIT mode. Must be in front of any other @angular/* imports. // Init TestBed import {TestBed} from '@angular/core/testing'; -import {ServerTestingModule, platformServerTesting} from '@angular/platform-server/testing/src/server'; +import { + ServerTestingModule, + platformServerTesting, +} from '@angular/platform-server/testing/src/server'; import {DominoAdapter} from '@angular/platform-server/src/domino_adapter'; import domino from '../../packages/platform-server/src/bundled-domino'; TestBed.initTestEnvironment(ServerTestingModule, platformServerTesting()); DominoAdapter.makeCurrent(); -(global as any).document = (DominoAdapter as any).defaultDoc || - ((DominoAdapter as any).defaultDoc = domino.createDocument()); +(global as any).document = + (DominoAdapter as any).defaultDoc || + ((DominoAdapter as any).defaultDoc = domino.createDocument()); diff --git a/tools/tslint/requireInternalWithUnderscoreRule.ts b/tools/tslint/requireInternalWithUnderscoreRule.ts index d7c96b9a3bd..58c0a52345e 100644 --- a/tools/tslint/requireInternalWithUnderscoreRule.ts +++ b/tools/tslint/requireInternalWithUnderscoreRule.ts @@ -45,8 +45,12 @@ class TypedefWalker extends RuleWalker { if (this.hasInternalAnnotation(ranges[i])) return; } } - this.addFailure(this.createFailure( - node.getStart(), node.getWidth(), - `module-private member ${node.name?.getText()} must be annotated @internal`)); + this.addFailure( + this.createFailure( + node.getStart(), + node.getWidth(), + `module-private member ${node.name?.getText()} must be annotated @internal`, + ), + ); } }