@angular/cdk
Version:
Angular Material Component Development Kit
89 lines • 4.7 kB
JavaScript
/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.dev/license
*/
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getDefaultComponentOptions = getDefaultComponentOptions;
exports.isStandaloneSchematic = isStandaloneSchematic;
const core_1 = require("@angular-devkit/core");
const schema_1 = require("@schematics/angular/component/schema");
const ng_ast_utils_1 = require("@schematics/angular/utility/ng-ast-utils");
const project_main_file_1 = require("./project-main-file");
const workspace_1 = require("@schematics/angular/utility/workspace");
const get_project_1 = require("./get-project");
/**
* Returns the default options for the `@schematics/angular:component` schematic which would
* have been specified at project initialization (ng new or ng init).
*
* This is necessary because the Angular CLI only exposes the default values for the "--style",
* "--inlineStyle", "--skipTests" and "--inlineTemplate" options to the "component" schematic.
*/
function getDefaultComponentOptions(project) {
// Note: Not all options which are available when running "ng new" will be stored in the
// workspace config. List of options which will be available in the configuration:
// angular/angular-cli/blob/main/packages/schematics/angular/application/index.ts#L109-L131
let skipTests = getDefaultComponentOption(project, ['skipTests'], null);
// In case "skipTests" is not set explicitly, also look for the "spec" option. The "spec"
// option has been deprecated but can be still used in older Angular CLI projects.
// See: https://github.com/angular/angular-cli/commit/a12a4e02a4689b5bdbc6e740c0d9865afb55671a
if (skipTests === null) {
skipTests = !getDefaultComponentOption(project, ['spec'], true);
}
return {
style: getDefaultComponentOption(project, ['style', 'styleext'], schema_1.Style.Css),
inlineStyle: getDefaultComponentOption(project, ['inlineStyle'], false),
inlineTemplate: getDefaultComponentOption(project, ['inlineTemplate'], false),
skipTests: skipTests,
};
}
/** Determines whether the schematic is configured to be standalone. */
function isStandaloneSchematic(host, options) {
return __awaiter(this, void 0, void 0, function* () {
var _a;
if (options.standalone != null) {
return options.standalone;
}
// If the `--standalone` flag isn't passed and there isn't a default, infer based on the project.
const workspace = yield (0, workspace_1.getWorkspace)(host);
const project = (0, get_project_1.getProjectFromWorkspace)(workspace, options.project);
// Legacy projects might not have a `build` target, but they're likely
// not on an Angular version that supports standalone either.
if (!((_a = project.targets) === null || _a === void 0 ? void 0 : _a.has('build'))) {
return false;
}
return (0, ng_ast_utils_1.isStandaloneApp)(host, (0, project_main_file_1.getProjectMainFile)(project));
});
}
/**
* Gets the default value for the specified option. The default options will be determined
* by looking at the stored schematic options for `@schematics/angular:component` in the
* CLI workspace configuration.
*/
function getDefaultComponentOption(project, optionNames, fallbackValue) {
const schematicOptions = (0, core_1.isJsonObject)(project.extensions['schematics'] || null)
? project.extensions['schematics']
: null;
const defaultSchematic = schematicOptions
? schematicOptions['@schematics/angular:component']
: null;
for (const optionName of optionNames) {
if (defaultSchematic && defaultSchematic[optionName] != null) {
return defaultSchematic[optionName];
}
}
return fallbackValue;
}
//# sourceMappingURL=schematic-options.js.map
;