Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
}
else if (angularVersion.isGreaterThanOrEqualTo(new semver_1.SemVer('6.0.0-rc.0'))
&& !rxjsVersion.isGreaterThanOrEqualTo(new semver_1.SemVer('5.6.0-forward-compat.0'))
&& !rxjsVersion.isGreaterThanOrEqualTo(new semver_1.SemVer('6.0.0-beta.0'))) {
console.error(core_1.terminal.bold(core_1.terminal.red(core_1.tags.stripIndents `
This project uses version ${rxjsVersion} of RxJs, which is not supported by Angular v6.
The official RxJs version that is supported is 5.6.0-forward-compat.0 and greater.
Please visit the link below to find instructions on how to update RxJs.
https://docs.google.com/document/d/12nlLt71VLKb-z3YaSGzUfx6mJbc34nsMXtByPUN35cg/edit#
` + '\n')));
process.exit(3);
}
else if (angularVersion.isGreaterThanOrEqualTo(new semver_1.SemVer('6.0.0-rc.0'))
&& !rxjsVersion.isGreaterThanOrEqualTo(new semver_1.SemVer('6.0.0-beta.0'))) {
console.warn(core_1.terminal.bold(core_1.terminal.red(core_1.tags.stripIndents `
This project uses a temporary compatibility version of RxJs (${rxjsVersion}).
Please visit the link below to find instructions on how to update RxJs.
https://docs.google.com/document/d/12nlLt71VLKb-z3YaSGzUfx6mJbc34nsMXtByPUN35cg/edit#
` + '\n')));
}
}
static assertTypescriptVersion(projectRoot) {
function validateProjectName(projectName) {
const errorIndex = getRegExpFailPosition(projectName);
const unsupportedProjectNames = ['test', 'ember', 'ember-cli', 'vendor', 'app'];
const packageNameRegex = /^(?:@[a-zA-Z0-9_-]+\/)?[a-zA-Z0-9_-]+$/;
if (errorIndex !== null) {
const firstMessage = core_1.tags.oneLine `
Project name "${projectName}" is not valid. New project names must
start with a letter, and must contain only alphanumeric characters or dashes.
When adding a dash the segment after the dash must also start with a letter.
`;
const msg = core_1.tags.stripIndent `
${firstMessage}
${projectName}
${Array(errorIndex + 1).join(' ') + '^'}
`;
throw new schematics_1.SchematicsException(msg);
}
else if (unsupportedProjectNames.indexOf(projectName) !== -1) {
throw new schematics_1.SchematicsException(`Project name ${JSON.stringify(projectName)} is not a supported name.`);
}
else if (!packageNameRegex.test(projectName)) {
throw new schematics_1.SchematicsException(`Project name ${JSON.stringify(projectName)} is invalid.`);
run(options) {
const level = options.global ? 'global' : 'local';
let config = config_1.getWorkspace(level);
if (options.global && !config) {
try {
if (config_1.migrateLegacyGlobalConfig()) {
config =
config_1.getWorkspace(level);
this.logger.info(core_1.tags.oneLine `
We found a global configuration that was used in Angular CLI 1.
It has been automatically migrated.`);
}
}
catch (_a) { }
}
if (options.value == undefined) {
if (!config) {
this.logger.error('No config found.');
return 1;
}
return this.get(config._workspace, options);
}
else {
return this.set(options);
}
validate(options) {
if (!options._[0]) {
this.logger.error(core_1.tags.oneLine `
The "ng generate" command requires a
schematic name to be specified.
For more details, use "ng help".`);
return false;
}
return true;
}
run(options) {
const changedChunksStats = json.chunks
.filter((chunk) => chunk.rendered)
.map((chunk) => {
const asset = json.assets.filter((x) => x.name == chunk.files[0])[0];
const size = asset ? ` ${formatSize(asset.size)}` : '';
const files = chunk.files.join(', ');
const names = chunk.names ? ` (${chunk.names.join(', ')})` : '';
const initial = y(chunk.entry ? '[entry]' : chunk.initial ? '[initial]' : '');
const flags = ['rendered', 'recorded']
.map(f => f && chunk[f] ? g(` [${f}]`) : '')
.join('');
return `chunk {${y(chunk.id)}} ${g(files)}${names}${size} ${initial}${flags}`;
});
const unchangedChunkNumber = json.chunks.length - changedChunksStats.length;
if (unchangedChunkNumber > 0) {
return '\n' + rs(core_1.tags.stripIndents `
Date: ${w(new Date().toISOString())} - Hash: ${w(json.hash)} - Time: ${w('' + json.time)}ms
${unchangedChunkNumber} unchanged chunks
${changedChunksStats.join('\n')}
`);
}
else {
return '\n' + rs(core_1.tags.stripIndents `
Date: ${w(new Date().toISOString())}
Hash: ${w(json.hash)}
Time: ${w('' + json.time)}ms
${changedChunksStats.join('\n')}
`);
}
}
exports.statsToString = statsToString;
workflow.registry.addSmartDefaultProvider('projectName', () => {
if (this._workspace) {
try {
return this._workspace.getProjectByPath(core_1.normalize(process.cwd()))
|| this._workspace.getDefaultProjectName();
}
catch (e) {
if (e instanceof core_1.experimental.workspace.AmbiguousProjectPathException) {
this.logger.warn(core_1.tags.oneLine `
Two or more projects are using identical roots.
Unable to determine project using current working directory.
Using default workspace project instead.
`);
return this._workspace.getDefaultProjectName();
}
throw e;
}
}
return undefined;
});
if (options.interactive !== false && process.stdout.isTTY) {
function validateProjectName(projectName) {
const errorIndex = getRegExpFailPosition(projectName);
if (errorIndex !== null) {
const firstMessage = core_1.tags.oneLine `
Project name "${projectName}" is not valid. New project names must
start with a letter, and must contain only alphanumeric characters or dashes.
When adding a dash the segment after the dash must also start with a letter.
`;
const msg = core_1.tags.stripIndent `
${firstMessage}
${projectName}
${Array(errorIndex + 1).join(' ') + '^'}
`;
throw new schematics_1.SchematicsException(msg);
}
else if (unsupportedProjectNames.indexOf(projectName) !== -1) {
throw new schematics_1.SchematicsException(`Project name "${projectName}" is not a supported name.`);
}
}
function default_1(options) {
_buildServerConfig(root, projectRoot, options, browserOptions) {
const systemRoot = core_1.getSystemPath(root);
if (options.disableHostCheck) {
this.context.logger.warn(core_1.tags.oneLine `
WARNING: Running a server with --disable-host-check is a security risk.
See https://medium.com/webpack/webpack-dev-server-middleware-security-issues-1489d950874a
for more information.
`);
}
const servePath = this._buildServePath(options, browserOptions);
const config = {
host: options.host,
port: options.port,
headers: { 'Access-Control-Allow-Origin': '*' },
historyApiFallback: {
index: `${servePath}/${path.basename(browserOptions.index)}`,
disableDotRule: true,
htmlAcceptHeaders: ['text/html', 'application/xhtml+xml'],
},
stats: false,
function usage(exitCode = 0) {
logger.info(core_1.tags.stripIndent `
schematics [CollectionName:]SchematicName [options, ...]
By default, if the collection name is not specified, use the internal collection provided
by the Schematics CLI.
Options:
--debug Debug mode. This is true by default if the collection is a relative
path (in that case, turn off with --debug=false).
--dry-run Do not output anything, but instead just show what actions would be
performed. Default to true if debug is also true.
--force Force overwriting files that would otherwise be an error.
--list-schematics List all schematics from the collection, by name.
--verbose Show more information.
--help Show this message.
async validateScope(scope) {
switch (scope === undefined ? this.description.scope : scope) {
case interface_1.CommandScope.OutProject:
if (this.workspace.configFile) {
this.logger.fatal(core_1.tags.oneLine `
The ${this.description.name} command requires to be run outside of a project, but a
project definition was found at "${path.join(this.workspace.root, this.workspace.configFile)}".
`);
throw 1;
}
break;
case interface_1.CommandScope.InProject:
if (!this.workspace.configFile || config_1.getWorkspace('local') === null) {
this.logger.fatal(core_1.tags.oneLine `
The ${this.description.name} command requires to be run in an Angular project, but a
project definition could not be found.
`);
throw 1;
}
break;
case interface_1.CommandScope.Everywhere: