Updated the files.
This commit is contained in:
parent
1553e6b971
commit
753967d4f5
23418 changed files with 3784666 additions and 0 deletions
21
my-app/node_modules/@schematics/angular/LICENSE
generated
vendored
Executable file
21
my-app/node_modules/@schematics/angular/LICENSE
generated
vendored
Executable file
|
@ -0,0 +1,21 @@
|
|||
The MIT License
|
||||
|
||||
Copyright (c) 2017 Google, Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
31
my-app/node_modules/@schematics/angular/README.md
generated
vendored
Executable file
31
my-app/node_modules/@schematics/angular/README.md
generated
vendored
Executable file
|
@ -0,0 +1,31 @@
|
|||
# @schematics/angular
|
||||
|
||||
This package contains a collection of [schematics](/packages/angular_devkit/schematics/README.md)
|
||||
for generating an Angular application.
|
||||
|
||||
## Schematics
|
||||
|
||||
| Name | Description |
|
||||
| -------------- | ----------------------------------------------------------------------------------------------------- |
|
||||
| app-shell | Generates an app shell for running a server-side version of an app |
|
||||
| application | Generates a new basic app definition in the "projects" subfolder of the workspace |
|
||||
| class | Creates a new, generic class definition in the given project |
|
||||
| component | Creates a new, generic component definition in the given project |
|
||||
| directive | Creates a new, generic directive definition in the given project |
|
||||
| enum | Generates a new, generic enum definition in the given project |
|
||||
| guard | Generates a new, generic route guard definition in the given project |
|
||||
| interceptor | Creates a new, generic interceptor definition in the given project |
|
||||
| interface | Creates a new, generic interface definition in the given project |
|
||||
| library | Creates a new, generic library project in the current workspace |
|
||||
| module | Creates a new, generic NgModule definition in the given project |
|
||||
| ng-new | Creates a new project by combining the workspace and application schematics |
|
||||
| pipe | Creates a new, generic pipe definition in the given project |
|
||||
| resolver | Creates a new, generic resolver definition in the given project |
|
||||
| service | Creates a new, generic service definition in the given project |
|
||||
| service-worker | Pass this schematic to the "run" command to create a service worker |
|
||||
| web-worker | Creates a new, generic web worker definition in the given project |
|
||||
| workspace | Initializes an empty workspace and adds the necessary dependencies required by an Angular application |
|
||||
|
||||
## Disclaimer
|
||||
|
||||
While the schematics when executed via the Angular CLI and their associated options are considered stable, the programmatic APIs are not considered officially supported and are not subject to the breaking change guarantees of SemVer.
|
10
my-app/node_modules/@schematics/angular/app-shell/index.d.ts
generated
vendored
Executable file
10
my-app/node_modules/@schematics/angular/app-shell/index.d.ts
generated
vendored
Executable file
|
@ -0,0 +1,10 @@
|
|||
/**
|
||||
* @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
|
||||
*/
|
||||
import { Rule } from '@angular-devkit/schematics';
|
||||
import { Schema as AppShellOptions } from './schema';
|
||||
export default function (options: AppShellOptions): Rule;
|
318
my-app/node_modules/@schematics/angular/app-shell/index.js
generated
vendored
Executable file
318
my-app/node_modules/@schematics/angular/app-shell/index.js
generated
vendored
Executable file
|
@ -0,0 +1,318 @@
|
|||
"use strict";
|
||||
/**
|
||||
* @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
|
||||
*/
|
||||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
var desc = Object.getOwnPropertyDescriptor(m, k);
|
||||
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
||||
desc = { enumerable: true, get: function() { return m[k]; } };
|
||||
}
|
||||
Object.defineProperty(o, k2, desc);
|
||||
}) : (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
o[k2] = m[k];
|
||||
}));
|
||||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||||
}) : function(o, v) {
|
||||
o["default"] = v;
|
||||
});
|
||||
var __importStar = (this && this.__importStar) || function (mod) {
|
||||
if (mod && mod.__esModule) return mod;
|
||||
var result = {};
|
||||
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||
__setModuleDefault(result, mod);
|
||||
return result;
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const core_1 = require("@angular-devkit/core");
|
||||
const schematics_1 = require("@angular-devkit/schematics");
|
||||
const standalone_1 = require("../private/standalone");
|
||||
const ts = __importStar(require("../third_party/github.com/Microsoft/TypeScript/lib/typescript"));
|
||||
const ast_utils_1 = require("../utility/ast-utils");
|
||||
const change_1 = require("../utility/change");
|
||||
const ng_ast_utils_1 = require("../utility/ng-ast-utils");
|
||||
const util_1 = require("../utility/standalone/util");
|
||||
const workspace_1 = require("../utility/workspace");
|
||||
const workspace_models_1 = require("../utility/workspace-models");
|
||||
const APP_SHELL_ROUTE = 'shell';
|
||||
function getSourceFile(host, path) {
|
||||
const content = host.readText(path);
|
||||
const source = ts.createSourceFile(path, content, ts.ScriptTarget.Latest, true);
|
||||
return source;
|
||||
}
|
||||
function getServerModulePath(host, sourceRoot, mainPath) {
|
||||
const mainSource = getSourceFile(host, (0, core_1.join)((0, core_1.normalize)(sourceRoot), mainPath));
|
||||
const allNodes = (0, ast_utils_1.getSourceNodes)(mainSource);
|
||||
const expNode = allNodes.find((node) => ts.isExportDeclaration(node));
|
||||
if (!expNode) {
|
||||
return null;
|
||||
}
|
||||
const relativePath = expNode.moduleSpecifier;
|
||||
const modulePath = (0, core_1.normalize)(`/${sourceRoot}/${relativePath.text}.ts`);
|
||||
return modulePath;
|
||||
}
|
||||
function getComponentTemplateInfo(host, componentPath) {
|
||||
const compSource = getSourceFile(host, componentPath);
|
||||
const compMetadata = (0, ast_utils_1.getDecoratorMetadata)(compSource, 'Component', '@angular/core')[0];
|
||||
return {
|
||||
templateProp: getMetadataProperty(compMetadata, 'template'),
|
||||
templateUrlProp: getMetadataProperty(compMetadata, 'templateUrl'),
|
||||
};
|
||||
}
|
||||
function getComponentTemplate(host, compPath, tmplInfo) {
|
||||
let template = '';
|
||||
if (tmplInfo.templateProp) {
|
||||
template = tmplInfo.templateProp.getFullText();
|
||||
}
|
||||
else if (tmplInfo.templateUrlProp) {
|
||||
const templateUrl = tmplInfo.templateUrlProp.initializer.text;
|
||||
const dir = (0, core_1.dirname)((0, core_1.normalize)(compPath));
|
||||
const templatePath = (0, core_1.join)(dir, templateUrl);
|
||||
try {
|
||||
template = host.readText(templatePath);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
return template;
|
||||
}
|
||||
function getBootstrapComponentPath(host, mainPath) {
|
||||
const mainSource = getSourceFile(host, mainPath);
|
||||
const bootstrapAppCall = (0, standalone_1.findBootstrapApplicationCall)(mainSource);
|
||||
let bootstrappingFilePath;
|
||||
let bootstrappingSource;
|
||||
let componentName;
|
||||
if (bootstrapAppCall) {
|
||||
// Standalone Application
|
||||
componentName = bootstrapAppCall.arguments[0].getText();
|
||||
bootstrappingFilePath = mainPath;
|
||||
bootstrappingSource = mainSource;
|
||||
}
|
||||
else {
|
||||
// NgModule Application
|
||||
const modulePath = (0, ng_ast_utils_1.getAppModulePath)(host, mainPath);
|
||||
const moduleSource = getSourceFile(host, modulePath);
|
||||
const metadataNode = (0, ast_utils_1.getDecoratorMetadata)(moduleSource, 'NgModule', '@angular/core')[0];
|
||||
const bootstrapProperty = getMetadataProperty(metadataNode, 'bootstrap');
|
||||
const arrLiteral = bootstrapProperty.initializer;
|
||||
componentName = arrLiteral.elements[0].getText();
|
||||
bootstrappingSource = moduleSource;
|
||||
bootstrappingFilePath = modulePath;
|
||||
}
|
||||
const componentRelativeFilePath = (0, ast_utils_1.getSourceNodes)(bootstrappingSource)
|
||||
.filter(ts.isImportDeclaration)
|
||||
.filter((imp) => {
|
||||
return (0, ast_utils_1.findNode)(imp, ts.SyntaxKind.Identifier, componentName);
|
||||
})
|
||||
.map((imp) => {
|
||||
const pathStringLiteral = imp.moduleSpecifier;
|
||||
return pathStringLiteral.text;
|
||||
})[0];
|
||||
return (0, core_1.join)((0, core_1.dirname)((0, core_1.normalize)(bootstrappingFilePath)), componentRelativeFilePath + '.ts');
|
||||
}
|
||||
// end helper functions.
|
||||
function validateProject(mainPath) {
|
||||
return (host) => {
|
||||
const routerOutletCheckRegex = /<router-outlet.*?>([\s\S]*?)(?:<\/router-outlet>)?/;
|
||||
const componentPath = getBootstrapComponentPath(host, mainPath);
|
||||
const tmpl = getComponentTemplateInfo(host, componentPath);
|
||||
const template = getComponentTemplate(host, componentPath, tmpl);
|
||||
if (!routerOutletCheckRegex.test(template)) {
|
||||
throw new schematics_1.SchematicsException(`Prerequisite for application shell is to define a router-outlet in your root component.`);
|
||||
}
|
||||
};
|
||||
}
|
||||
function addAppShellConfigToWorkspace(options) {
|
||||
return (host, context) => {
|
||||
return (0, workspace_1.updateWorkspace)((workspace) => {
|
||||
const project = workspace.projects.get(options.project);
|
||||
if (!project) {
|
||||
return;
|
||||
}
|
||||
const buildTarget = project.targets.get('build');
|
||||
if (buildTarget?.builder === workspace_models_1.Builders.Application) {
|
||||
// Application builder configuration.
|
||||
const prodConfig = buildTarget.configurations?.production;
|
||||
if (!prodConfig) {
|
||||
throw new schematics_1.SchematicsException(`A "production" configuration is not defined for the "build" builder.`);
|
||||
}
|
||||
prodConfig.appShell = true;
|
||||
return;
|
||||
}
|
||||
// Webpack based builders configuration.
|
||||
// Validation of targets is handled already in the main function.
|
||||
// Duplicate keys means that we have configurations in both server and build builders.
|
||||
const serverConfigKeys = project.targets.get('server')?.configurations ?? {};
|
||||
const buildConfigKeys = project.targets.get('build')?.configurations ?? {};
|
||||
const configurationNames = Object.keys({
|
||||
...serverConfigKeys,
|
||||
...buildConfigKeys,
|
||||
});
|
||||
const configurations = {};
|
||||
for (const key of configurationNames) {
|
||||
if (!serverConfigKeys[key]) {
|
||||
context.logger.warn(`Skipped adding "${key}" configuration to "app-shell" target as it's missing from "server" target.`);
|
||||
continue;
|
||||
}
|
||||
if (!buildConfigKeys[key]) {
|
||||
context.logger.warn(`Skipped adding "${key}" configuration to "app-shell" target as it's missing from "build" target.`);
|
||||
continue;
|
||||
}
|
||||
configurations[key] = {
|
||||
browserTarget: `${options.project}:build:${key}`,
|
||||
serverTarget: `${options.project}:server:${key}`,
|
||||
};
|
||||
}
|
||||
project.targets.add({
|
||||
name: 'app-shell',
|
||||
builder: workspace_models_1.Builders.AppShell,
|
||||
defaultConfiguration: configurations['production'] ? 'production' : undefined,
|
||||
options: {
|
||||
route: APP_SHELL_ROUTE,
|
||||
},
|
||||
configurations,
|
||||
});
|
||||
});
|
||||
};
|
||||
}
|
||||
function addRouterModule(mainPath) {
|
||||
return (host) => {
|
||||
const modulePath = (0, ng_ast_utils_1.getAppModulePath)(host, mainPath);
|
||||
const moduleSource = getSourceFile(host, modulePath);
|
||||
const changes = (0, ast_utils_1.addImportToModule)(moduleSource, modulePath, 'RouterModule', '@angular/router');
|
||||
const recorder = host.beginUpdate(modulePath);
|
||||
(0, change_1.applyToUpdateRecorder)(recorder, changes);
|
||||
host.commitUpdate(recorder);
|
||||
return host;
|
||||
};
|
||||
}
|
||||
function getMetadataProperty(metadata, propertyName) {
|
||||
const properties = metadata.properties;
|
||||
const property = properties.filter(ts.isPropertyAssignment).filter((prop) => {
|
||||
const name = prop.name;
|
||||
switch (name.kind) {
|
||||
case ts.SyntaxKind.Identifier:
|
||||
return name.getText() === propertyName;
|
||||
case ts.SyntaxKind.StringLiteral:
|
||||
return name.text === propertyName;
|
||||
}
|
||||
return false;
|
||||
})[0];
|
||||
return property;
|
||||
}
|
||||
function addServerRoutes(options) {
|
||||
return async (host) => {
|
||||
// The workspace gets updated so this needs to be reloaded
|
||||
const workspace = await (0, workspace_1.getWorkspace)(host);
|
||||
const project = workspace.projects.get(options.project);
|
||||
if (!project) {
|
||||
throw new schematics_1.SchematicsException(`Invalid project name (${options.project})`);
|
||||
}
|
||||
const modulePath = getServerModulePath(host, project.sourceRoot || 'src', 'main.server.ts');
|
||||
if (modulePath === null) {
|
||||
throw new schematics_1.SchematicsException('Server module not found.');
|
||||
}
|
||||
let moduleSource = getSourceFile(host, modulePath);
|
||||
if (!(0, ast_utils_1.isImported)(moduleSource, 'Routes', '@angular/router')) {
|
||||
const recorder = host.beginUpdate(modulePath);
|
||||
const routesChange = (0, ast_utils_1.insertImport)(moduleSource, modulePath, 'Routes', '@angular/router');
|
||||
if (routesChange) {
|
||||
(0, change_1.applyToUpdateRecorder)(recorder, [routesChange]);
|
||||
}
|
||||
const imports = (0, ast_utils_1.getSourceNodes)(moduleSource)
|
||||
.filter((node) => node.kind === ts.SyntaxKind.ImportDeclaration)
|
||||
.sort((a, b) => a.getStart() - b.getStart());
|
||||
const insertPosition = imports[imports.length - 1].getEnd();
|
||||
const routeText = `\n\nconst routes: Routes = [ { path: '${APP_SHELL_ROUTE}', component: AppShellComponent }];`;
|
||||
recorder.insertRight(insertPosition, routeText);
|
||||
host.commitUpdate(recorder);
|
||||
}
|
||||
moduleSource = getSourceFile(host, modulePath);
|
||||
if (!(0, ast_utils_1.isImported)(moduleSource, 'RouterModule', '@angular/router')) {
|
||||
const recorder = host.beginUpdate(modulePath);
|
||||
const routerModuleChange = (0, ast_utils_1.insertImport)(moduleSource, modulePath, 'RouterModule', '@angular/router');
|
||||
if (routerModuleChange) {
|
||||
(0, change_1.applyToUpdateRecorder)(recorder, [routerModuleChange]);
|
||||
}
|
||||
const metadataChange = (0, ast_utils_1.addSymbolToNgModuleMetadata)(moduleSource, modulePath, 'imports', 'RouterModule.forRoot(routes)');
|
||||
if (metadataChange) {
|
||||
(0, change_1.applyToUpdateRecorder)(recorder, metadataChange);
|
||||
}
|
||||
host.commitUpdate(recorder);
|
||||
}
|
||||
};
|
||||
}
|
||||
function addStandaloneServerRoute(options) {
|
||||
return async (host) => {
|
||||
const workspace = await (0, workspace_1.getWorkspace)(host);
|
||||
const project = workspace.projects.get(options.project);
|
||||
if (!project) {
|
||||
throw new schematics_1.SchematicsException(`Project name "${options.project}" doesn't not exist.`);
|
||||
}
|
||||
const configFilePath = (0, core_1.join)((0, core_1.normalize)(project.sourceRoot ?? 'src'), 'app/app.config.server.ts');
|
||||
if (!host.exists(configFilePath)) {
|
||||
throw new schematics_1.SchematicsException(`Cannot find "${configFilePath}".`);
|
||||
}
|
||||
let configSourceFile = getSourceFile(host, configFilePath);
|
||||
if (!(0, ast_utils_1.isImported)(configSourceFile, 'ROUTES', '@angular/router')) {
|
||||
const routesChange = (0, ast_utils_1.insertImport)(configSourceFile, configFilePath, 'ROUTES', '@angular/router');
|
||||
const recorder = host.beginUpdate(configFilePath);
|
||||
if (routesChange) {
|
||||
(0, change_1.applyToUpdateRecorder)(recorder, [routesChange]);
|
||||
host.commitUpdate(recorder);
|
||||
}
|
||||
}
|
||||
configSourceFile = getSourceFile(host, configFilePath);
|
||||
const providersLiteral = (0, ast_utils_1.findNodes)(configSourceFile, ts.isPropertyAssignment).find((n) => ts.isArrayLiteralExpression(n.initializer) && n.name.getText() === 'providers')?.initializer;
|
||||
if (!providersLiteral) {
|
||||
throw new schematics_1.SchematicsException(`Cannot find the "providers" configuration in "${configFilePath}".`);
|
||||
}
|
||||
// Add route to providers literal.
|
||||
const newProvidersLiteral = ts.factory.updateArrayLiteralExpression(providersLiteral, [
|
||||
...providersLiteral.elements,
|
||||
ts.factory.createObjectLiteralExpression([
|
||||
ts.factory.createPropertyAssignment('provide', ts.factory.createIdentifier('ROUTES')),
|
||||
ts.factory.createPropertyAssignment('multi', ts.factory.createIdentifier('true')),
|
||||
ts.factory.createPropertyAssignment('useValue', ts.factory.createArrayLiteralExpression([
|
||||
ts.factory.createObjectLiteralExpression([
|
||||
ts.factory.createPropertyAssignment('path', ts.factory.createIdentifier(`'${APP_SHELL_ROUTE}'`)),
|
||||
ts.factory.createPropertyAssignment('component', ts.factory.createIdentifier('AppShellComponent')),
|
||||
], true),
|
||||
], true)),
|
||||
], true),
|
||||
]);
|
||||
const recorder = host.beginUpdate(configFilePath);
|
||||
recorder.remove(providersLiteral.getStart(), providersLiteral.getWidth());
|
||||
const printer = ts.createPrinter();
|
||||
recorder.insertRight(providersLiteral.getStart(), printer.printNode(ts.EmitHint.Unspecified, newProvidersLiteral, configSourceFile));
|
||||
// Add AppShellComponent import
|
||||
const appShellImportChange = (0, ast_utils_1.insertImport)(configSourceFile, configFilePath, 'AppShellComponent', './app-shell/app-shell.component');
|
||||
(0, change_1.applyToUpdateRecorder)(recorder, [appShellImportChange]);
|
||||
host.commitUpdate(recorder);
|
||||
};
|
||||
}
|
||||
function default_1(options) {
|
||||
return async (tree) => {
|
||||
const browserEntryPoint = await (0, util_1.getMainFilePath)(tree, options.project);
|
||||
const isStandalone = (0, ng_ast_utils_1.isStandaloneApp)(tree, browserEntryPoint);
|
||||
return (0, schematics_1.chain)([
|
||||
validateProject(browserEntryPoint),
|
||||
(0, schematics_1.schematic)('server', options),
|
||||
addAppShellConfigToWorkspace(options),
|
||||
isStandalone ? (0, schematics_1.noop)() : addRouterModule(browserEntryPoint),
|
||||
isStandalone ? addStandaloneServerRoute(options) : addServerRoutes(options),
|
||||
(0, schematics_1.schematic)('component', {
|
||||
name: 'app-shell',
|
||||
module: 'app.module.server.ts',
|
||||
project: options.project,
|
||||
standalone: isStandalone,
|
||||
}),
|
||||
]);
|
||||
};
|
||||
}
|
||||
exports.default = default_1;
|
9
my-app/node_modules/@schematics/angular/app-shell/schema.d.ts
generated
vendored
Executable file
9
my-app/node_modules/@schematics/angular/app-shell/schema.d.ts
generated
vendored
Executable file
|
@ -0,0 +1,9 @@
|
|||
/**
|
||||
* Generates an application shell for running a server-side version of an app.
|
||||
*/
|
||||
export interface Schema {
|
||||
/**
|
||||
* The name of the related client app.
|
||||
*/
|
||||
project: string;
|
||||
}
|
4
my-app/node_modules/@schematics/angular/app-shell/schema.js
generated
vendored
Executable file
4
my-app/node_modules/@schematics/angular/app-shell/schema.js
generated
vendored
Executable file
|
@ -0,0 +1,4 @@
|
|||
"use strict";
|
||||
// THIS FILE IS AUTOMATICALLY GENERATED. TO UPDATE THIS FILE YOU NEED TO CHANGE THE
|
||||
// CORRESPONDING JSON SCHEMA FILE, THEN RUN devkit-admin build (or bazel build ...).
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
18
my-app/node_modules/@schematics/angular/app-shell/schema.json
generated
vendored
Executable file
18
my-app/node_modules/@schematics/angular/app-shell/schema.json
generated
vendored
Executable file
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema",
|
||||
"$id": "SchematicsAngularAppShell",
|
||||
"title": "Angular AppShell Options Schema",
|
||||
"type": "object",
|
||||
"description": "Generates an application shell for running a server-side version of an app.",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"project": {
|
||||
"type": "string",
|
||||
"description": "The name of the related client app.",
|
||||
"$default": {
|
||||
"$source": "projectName"
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["project"]
|
||||
}
|
336
my-app/node_modules/@schematics/angular/application/files/common-files/src/app/app.component.html.template
generated
vendored
Executable file
336
my-app/node_modules/@schematics/angular/application/files/common-files/src/app/app.component.html.template
generated
vendored
Executable file
|
@ -0,0 +1,336 @@
|
|||
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
|
||||
<!-- * * * * * * * * * * * The content below * * * * * * * * * * * -->
|
||||
<!-- * * * * * * * * * * is only a placeholder * * * * * * * * * * -->
|
||||
<!-- * * * * * * * * * * and can be replaced. * * * * * * * * * * -->
|
||||
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
|
||||
<!-- * * * * * * * * * Delete the template below * * * * * * * * * -->
|
||||
<!-- * * * * * * * to get started with your project! * * * * * * * -->
|
||||
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
|
||||
|
||||
<style>
|
||||
:host {
|
||||
--bright-blue: oklch(51.01% 0.274 263.83);
|
||||
--electric-violet: oklch(53.18% 0.28 296.97);
|
||||
--french-violet: oklch(47.66% 0.246 305.88);
|
||||
--vivid-pink: oklch(69.02% 0.277 332.77);
|
||||
--hot-red: oklch(61.42% 0.238 15.34);
|
||||
--orange-red: oklch(63.32% 0.24 31.68);
|
||||
|
||||
--gray-900: oklch(19.37% 0.006 300.98);
|
||||
--gray-700: oklch(36.98% 0.014 302.71);
|
||||
--gray-400: oklch(70.9% 0.015 304.04);
|
||||
|
||||
--red-to-pink-to-purple-vertical-gradient: linear-gradient(
|
||||
180deg,
|
||||
var(--orange-red) 0%,
|
||||
var(--vivid-pink) 50%,
|
||||
var(--electric-violet) 100%
|
||||
);
|
||||
|
||||
--red-to-pink-to-purple-horizontal-gradient: linear-gradient(
|
||||
90deg,
|
||||
var(--orange-red) 0%,
|
||||
var(--vivid-pink) 50%,
|
||||
var(--electric-violet) 100%
|
||||
);
|
||||
|
||||
--pill-accent: var(--bright-blue);
|
||||
|
||||
font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
|
||||
Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
|
||||
"Segoe UI Symbol";
|
||||
box-sizing: border-box;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 3.125rem;
|
||||
color: var(--gray-900);
|
||||
font-weight: 500;
|
||||
line-height: 100%;
|
||||
letter-spacing: -0.125rem;
|
||||
margin: 0;
|
||||
font-family: "Inter Tight", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
|
||||
Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
|
||||
"Segoe UI Symbol";
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 0;
|
||||
color: var(--gray-700);
|
||||
}
|
||||
|
||||
main {
|
||||
width: 100%;
|
||||
min-height: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding: 1rem;
|
||||
box-sizing: inherit;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.angular-logo {
|
||||
max-width: 9.2rem;
|
||||
}
|
||||
|
||||
.content {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
width: 100%;
|
||||
max-width: 700px;
|
||||
margin-bottom: 3rem;
|
||||
}
|
||||
|
||||
.content h1 {
|
||||
margin-top: 1.75rem;
|
||||
}
|
||||
|
||||
.content p {
|
||||
margin-top: 1.5rem;
|
||||
}
|
||||
|
||||
.divider {
|
||||
width: 1px;
|
||||
background: var(--red-to-pink-to-purple-vertical-gradient);
|
||||
margin-inline: 0.5rem;
|
||||
}
|
||||
|
||||
.pill-group {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: start;
|
||||
flex-wrap: wrap;
|
||||
gap: 1.25rem;
|
||||
}
|
||||
|
||||
.pill {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
--pill-accent: var(--bright-blue);
|
||||
background: color-mix(in srgb, var(--pill-accent) 5%, transparent);
|
||||
color: var(--pill-accent);
|
||||
padding-inline: 0.75rem;
|
||||
padding-block: 0.375rem;
|
||||
border-radius: 2.75rem;
|
||||
border: 0;
|
||||
transition: background 0.3s ease;
|
||||
font-family: var(--inter-font);
|
||||
font-size: 0.875rem;
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
line-height: 1.4rem;
|
||||
letter-spacing: -0.00875rem;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.pill:hover {
|
||||
background: color-mix(in srgb, var(--pill-accent) 15%, transparent);
|
||||
}
|
||||
|
||||
.pill-group .pill:nth-child(6n + 1) {
|
||||
--pill-accent: var(--bright-blue);
|
||||
}
|
||||
.pill-group .pill:nth-child(6n + 2) {
|
||||
--pill-accent: var(--french-violet);
|
||||
}
|
||||
.pill-group .pill:nth-child(6n + 3),
|
||||
.pill-group .pill:nth-child(6n + 4),
|
||||
.pill-group .pill:nth-child(6n + 5) {
|
||||
--pill-accent: var(--hot-red);
|
||||
}
|
||||
|
||||
.pill-group svg {
|
||||
margin-inline-start: 0.25rem;
|
||||
}
|
||||
|
||||
.social-links {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.73rem;
|
||||
margin-top: 1.5rem;
|
||||
}
|
||||
|
||||
.social-links path {
|
||||
transition: fill 0.3s ease;
|
||||
fill: var(--gray-400);
|
||||
}
|
||||
|
||||
.social-links a:hover svg path {
|
||||
fill: var(--gray-900);
|
||||
}
|
||||
|
||||
@media screen and (max-width: 650px) {
|
||||
.content {
|
||||
flex-direction: column;
|
||||
width: max-content;
|
||||
}
|
||||
|
||||
.divider {
|
||||
height: 1px;
|
||||
width: 100%;
|
||||
background: var(--red-to-pink-to-purple-horizontal-gradient);
|
||||
margin-block: 1.5rem;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<main class="main">
|
||||
<div class="content">
|
||||
<div class="left-side">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 982 239"
|
||||
fill="none"
|
||||
class="angular-logo"
|
||||
>
|
||||
<g clip-path="url(#a)">
|
||||
<path
|
||||
fill="url(#b)"
|
||||
d="M388.676 191.625h30.849L363.31 31.828h-35.758l-56.215 159.797h30.848l13.174-39.356h60.061l13.256 39.356Zm-65.461-62.675 21.602-64.311h1.227l21.602 64.311h-44.431Zm126.831-7.527v70.202h-28.23V71.839h27.002v20.374h1.392c2.782-6.71 7.2-12.028 13.255-15.956 6.056-3.927 13.584-5.89 22.503-5.89 8.264 0 15.465 1.8 21.684 5.318 6.137 3.518 10.964 8.673 14.319 15.382 3.437 6.71 5.074 14.81 4.992 24.383v76.175h-28.23v-71.92c0-8.019-2.046-14.237-6.219-18.819-4.173-4.5-9.819-6.791-17.102-6.791-4.91 0-9.328 1.063-13.174 3.272-3.846 2.128-6.792 5.237-9.001 9.328-2.046 4.009-3.191 8.918-3.191 14.728ZM589.233 239c-10.147 0-18.82-1.391-26.103-4.091-7.282-2.7-13.092-6.382-17.511-10.964-4.418-4.582-7.528-9.655-9.164-15.219l25.448-6.136c1.145 2.372 2.782 4.663 4.991 6.954 2.209 2.291 5.155 4.255 8.837 5.81 3.683 1.554 8.428 2.291 14.074 2.291 8.019 0 14.647-1.964 19.884-5.81 5.237-3.845 7.856-10.227 7.856-19.064v-22.665h-1.391c-1.473 2.946-3.601 5.892-6.383 9.001-2.782 3.109-6.464 5.645-10.965 7.691-4.582 2.046-10.228 3.109-17.101 3.109-9.165 0-17.511-2.209-25.039-6.545-7.446-4.337-13.42-10.883-17.757-19.474-4.418-8.673-6.628-19.473-6.628-32.565 0-13.091 2.21-24.301 6.628-33.383 4.419-9.082 10.311-15.955 17.839-20.7 7.528-4.746 15.874-7.037 25.039-7.037 7.037 0 12.846 1.145 17.347 3.518 4.582 2.373 8.182 5.236 10.883 8.51 2.7 3.272 4.746 6.382 6.137 9.327h1.554v-19.8h27.821v121.749c0 10.228-2.454 18.737-7.364 25.447-4.91 6.709-11.538 11.7-20.048 15.055-8.509 3.355-18.165 4.991-28.884 4.991Zm.245-71.266c5.974 0 11.047-1.473 15.302-4.337 4.173-2.945 7.446-7.118 9.573-12.519 2.21-5.482 3.274-12.027 3.274-19.637 0-7.609-1.064-14.155-3.274-19.8-2.127-5.646-5.318-10.064-9.491-13.255-4.174-3.11-9.329-4.746-15.384-4.746s-11.537 1.636-15.792 4.91c-4.173 3.272-7.365 7.772-9.492 13.418-2.128 5.727-3.191 12.191-3.191 19.392 0 7.2 1.063 13.745 3.273 19.228 2.127 5.482 5.318 9.736 9.573 12.764 4.174 3.027 9.41 4.582 15.629 4.582Zm141.56-26.51V71.839h28.23v119.786h-27.412v-21.273h-1.227c-2.7 6.709-7.119 12.191-13.338 16.446-6.137 4.255-13.747 6.382-22.748 6.382-7.855 0-14.81-1.718-20.783-5.237-5.974-3.518-10.72-8.591-14.075-15.382-3.355-6.709-5.073-14.891-5.073-24.464V71.839h28.312v71.921c0 7.609 2.046 13.664 6.219 18.083 4.173 4.5 9.655 6.709 16.365 6.709 4.173 0 8.183-.982 12.111-3.028 3.927-2.045 7.118-5.072 9.655-9.082 2.537-4.091 3.764-9.164 3.764-15.218Zm65.707-109.395v159.796h-28.23V31.828h28.23Zm44.841 162.169c-7.61 0-14.402-1.391-20.457-4.091-6.055-2.7-10.883-6.791-14.32-12.109-3.518-5.319-5.237-11.946-5.237-19.801 0-6.791 1.228-12.355 3.765-16.773 2.536-4.419 5.891-7.937 10.228-10.637 4.337-2.618 9.164-4.664 14.647-6.055 5.4-1.391 11.046-2.373 16.856-3.027 7.037-.737 12.683-1.391 17.102-1.964 4.337-.573 7.528-1.555 9.574-2.782 1.963-1.309 3.027-3.273 3.027-5.973v-.491c0-5.891-1.718-10.391-5.237-13.664-3.518-3.191-8.51-4.828-15.056-4.828-6.955 0-12.356 1.473-16.447 4.5-4.009 3.028-6.71 6.546-8.183 10.719l-26.348-3.764c2.046-7.282 5.483-13.336 10.31-18.328 4.746-4.909 10.638-8.59 17.511-11.045 6.955-2.455 14.565-3.682 22.912-3.682 5.809 0 11.537.654 17.265 2.045s10.965 3.6 15.711 6.71c4.746 3.109 8.51 7.282 11.455 12.6 2.864 5.318 4.337 11.946 4.337 19.883v80.184h-27.166v-16.446h-.9c-1.719 3.355-4.092 6.464-7.201 9.328-3.109 2.864-6.955 5.237-11.619 6.955-4.828 1.718-10.229 2.536-16.529 2.536Zm7.364-20.701c5.646 0 10.556-1.145 14.729-3.354 4.173-2.291 7.364-5.237 9.655-9.001 2.292-3.763 3.355-7.854 3.355-12.273v-14.155c-.9.737-2.373 1.391-4.5 2.046-2.128.654-4.419 1.145-7.037 1.636-2.619.491-5.155.9-7.692 1.227-2.537.328-4.746.655-6.628.901-4.173.572-8.019 1.472-11.292 2.781-3.355 1.31-5.973 3.11-7.855 5.401-1.964 2.291-2.864 5.318-2.864 8.918 0 5.237 1.882 9.164 5.728 11.782 3.682 2.782 8.51 4.091 14.401 4.091Zm64.643 18.328V71.839h27.412v19.965h1.227c2.21-6.955 5.974-12.274 11.292-16.038 5.319-3.763 11.456-5.645 18.329-5.645 1.555 0 3.355.082 5.237.163 1.964.164 3.601.328 4.91.573v25.938c-1.227-.41-3.109-.819-5.646-1.146a58.814 58.814 0 0 0-7.446-.49c-5.155 0-9.738 1.145-13.829 3.354-4.091 2.209-7.282 5.236-9.655 9.164-2.373 3.927-3.519 8.427-3.519 13.5v70.448h-28.312ZM222.077 39.192l-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z"
|
||||
/>
|
||||
<path
|
||||
fill="url(#c)"
|
||||
d="M388.676 191.625h30.849L363.31 31.828h-35.758l-56.215 159.797h30.848l13.174-39.356h60.061l13.256 39.356Zm-65.461-62.675 21.602-64.311h1.227l21.602 64.311h-44.431Zm126.831-7.527v70.202h-28.23V71.839h27.002v20.374h1.392c2.782-6.71 7.2-12.028 13.255-15.956 6.056-3.927 13.584-5.89 22.503-5.89 8.264 0 15.465 1.8 21.684 5.318 6.137 3.518 10.964 8.673 14.319 15.382 3.437 6.71 5.074 14.81 4.992 24.383v76.175h-28.23v-71.92c0-8.019-2.046-14.237-6.219-18.819-4.173-4.5-9.819-6.791-17.102-6.791-4.91 0-9.328 1.063-13.174 3.272-3.846 2.128-6.792 5.237-9.001 9.328-2.046 4.009-3.191 8.918-3.191 14.728ZM589.233 239c-10.147 0-18.82-1.391-26.103-4.091-7.282-2.7-13.092-6.382-17.511-10.964-4.418-4.582-7.528-9.655-9.164-15.219l25.448-6.136c1.145 2.372 2.782 4.663 4.991 6.954 2.209 2.291 5.155 4.255 8.837 5.81 3.683 1.554 8.428 2.291 14.074 2.291 8.019 0 14.647-1.964 19.884-5.81 5.237-3.845 7.856-10.227 7.856-19.064v-22.665h-1.391c-1.473 2.946-3.601 5.892-6.383 9.001-2.782 3.109-6.464 5.645-10.965 7.691-4.582 2.046-10.228 3.109-17.101 3.109-9.165 0-17.511-2.209-25.039-6.545-7.446-4.337-13.42-10.883-17.757-19.474-4.418-8.673-6.628-19.473-6.628-32.565 0-13.091 2.21-24.301 6.628-33.383 4.419-9.082 10.311-15.955 17.839-20.7 7.528-4.746 15.874-7.037 25.039-7.037 7.037 0 12.846 1.145 17.347 3.518 4.582 2.373 8.182 5.236 10.883 8.51 2.7 3.272 4.746 6.382 6.137 9.327h1.554v-19.8h27.821v121.749c0 10.228-2.454 18.737-7.364 25.447-4.91 6.709-11.538 11.7-20.048 15.055-8.509 3.355-18.165 4.991-28.884 4.991Zm.245-71.266c5.974 0 11.047-1.473 15.302-4.337 4.173-2.945 7.446-7.118 9.573-12.519 2.21-5.482 3.274-12.027 3.274-19.637 0-7.609-1.064-14.155-3.274-19.8-2.127-5.646-5.318-10.064-9.491-13.255-4.174-3.11-9.329-4.746-15.384-4.746s-11.537 1.636-15.792 4.91c-4.173 3.272-7.365 7.772-9.492 13.418-2.128 5.727-3.191 12.191-3.191 19.392 0 7.2 1.063 13.745 3.273 19.228 2.127 5.482 5.318 9.736 9.573 12.764 4.174 3.027 9.41 4.582 15.629 4.582Zm141.56-26.51V71.839h28.23v119.786h-27.412v-21.273h-1.227c-2.7 6.709-7.119 12.191-13.338 16.446-6.137 4.255-13.747 6.382-22.748 6.382-7.855 0-14.81-1.718-20.783-5.237-5.974-3.518-10.72-8.591-14.075-15.382-3.355-6.709-5.073-14.891-5.073-24.464V71.839h28.312v71.921c0 7.609 2.046 13.664 6.219 18.083 4.173 4.5 9.655 6.709 16.365 6.709 4.173 0 8.183-.982 12.111-3.028 3.927-2.045 7.118-5.072 9.655-9.082 2.537-4.091 3.764-9.164 3.764-15.218Zm65.707-109.395v159.796h-28.23V31.828h28.23Zm44.841 162.169c-7.61 0-14.402-1.391-20.457-4.091-6.055-2.7-10.883-6.791-14.32-12.109-3.518-5.319-5.237-11.946-5.237-19.801 0-6.791 1.228-12.355 3.765-16.773 2.536-4.419 5.891-7.937 10.228-10.637 4.337-2.618 9.164-4.664 14.647-6.055 5.4-1.391 11.046-2.373 16.856-3.027 7.037-.737 12.683-1.391 17.102-1.964 4.337-.573 7.528-1.555 9.574-2.782 1.963-1.309 3.027-3.273 3.027-5.973v-.491c0-5.891-1.718-10.391-5.237-13.664-3.518-3.191-8.51-4.828-15.056-4.828-6.955 0-12.356 1.473-16.447 4.5-4.009 3.028-6.71 6.546-8.183 10.719l-26.348-3.764c2.046-7.282 5.483-13.336 10.31-18.328 4.746-4.909 10.638-8.59 17.511-11.045 6.955-2.455 14.565-3.682 22.912-3.682 5.809 0 11.537.654 17.265 2.045s10.965 3.6 15.711 6.71c4.746 3.109 8.51 7.282 11.455 12.6 2.864 5.318 4.337 11.946 4.337 19.883v80.184h-27.166v-16.446h-.9c-1.719 3.355-4.092 6.464-7.201 9.328-3.109 2.864-6.955 5.237-11.619 6.955-4.828 1.718-10.229 2.536-16.529 2.536Zm7.364-20.701c5.646 0 10.556-1.145 14.729-3.354 4.173-2.291 7.364-5.237 9.655-9.001 2.292-3.763 3.355-7.854 3.355-12.273v-14.155c-.9.737-2.373 1.391-4.5 2.046-2.128.654-4.419 1.145-7.037 1.636-2.619.491-5.155.9-7.692 1.227-2.537.328-4.746.655-6.628.901-4.173.572-8.019 1.472-11.292 2.781-3.355 1.31-5.973 3.11-7.855 5.401-1.964 2.291-2.864 5.318-2.864 8.918 0 5.237 1.882 9.164 5.728 11.782 3.682 2.782 8.51 4.091 14.401 4.091Zm64.643 18.328V71.839h27.412v19.965h1.227c2.21-6.955 5.974-12.274 11.292-16.038 5.319-3.763 11.456-5.645 18.329-5.645 1.555 0 3.355.082 5.237.163 1.964.164 3.601.328 4.91.573v25.938c-1.227-.41-3.109-.819-5.646-1.146a58.814 58.814 0 0 0-7.446-.49c-5.155 0-9.738 1.145-13.829 3.354-4.091 2.209-7.282 5.236-9.655 9.164-2.373 3.927-3.519 8.427-3.519 13.5v70.448h-28.312ZM222.077 39.192l-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z"
|
||||
/>
|
||||
</g>
|
||||
<defs>
|
||||
<radialGradient
|
||||
id="c"
|
||||
cx="0"
|
||||
cy="0"
|
||||
r="1"
|
||||
gradientTransform="rotate(118.122 171.182 60.81) scale(205.794)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
>
|
||||
<stop stop-color="#FF41F8" />
|
||||
<stop offset=".707" stop-color="#FF41F8" stop-opacity=".5" />
|
||||
<stop offset="1" stop-color="#FF41F8" stop-opacity="0" />
|
||||
</radialGradient>
|
||||
<linearGradient
|
||||
id="b"
|
||||
x1="0"
|
||||
x2="982"
|
||||
y1="192"
|
||||
y2="192"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
>
|
||||
<stop stop-color="#F0060B" />
|
||||
<stop offset="0" stop-color="#F0070C" />
|
||||
<stop offset=".526" stop-color="#CC26D5" />
|
||||
<stop offset="1" stop-color="#7702FF" />
|
||||
</linearGradient>
|
||||
<clipPath id="a"><path fill="#fff" d="M0 0h982v239H0z" /></clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
<h1>Hello, {{ title }}</h1>
|
||||
<p>Congratulations! Your app is running. 🎉</p>
|
||||
</div>
|
||||
<div class="divider" role="separator" aria-label="Divider"></div>
|
||||
<div class="right-side">
|
||||
<div class="pill-group">
|
||||
@for (item of [
|
||||
{ title: 'Explore the Docs', link: 'https://angular.dev' },
|
||||
{ title: 'Learn with Tutorials', link: 'https://angular.dev/tutorials' },
|
||||
{ title: 'CLI Docs', link: 'https://angular.dev/tools/cli' },
|
||||
{ title: 'Angular Language Service', link: 'https://angular.dev/tools/language-service' },
|
||||
{ title: 'Angular DevTools', link: 'https://angular.dev/tools/devtools' },
|
||||
]; track item.title) {
|
||||
<a
|
||||
class="pill"
|
||||
[href]="item.link"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
>
|
||||
<span>{{ item.title }}</span>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
height="14"
|
||||
viewBox="0 -960 960 960"
|
||||
width="14"
|
||||
fill="currentColor"
|
||||
>
|
||||
<path
|
||||
d="M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h280v80H200v560h560v-280h80v280q0 33-23.5 56.5T760-120H200Zm188-212-56-56 372-372H560v-80h280v280h-80v-144L388-332Z"
|
||||
/>
|
||||
</svg>
|
||||
</a>
|
||||
}
|
||||
</div>
|
||||
<div class="social-links">
|
||||
<a
|
||||
href="https://github.com/angular/angular"
|
||||
aria-label="Github"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
>
|
||||
<svg
|
||||
width="25"
|
||||
height="24"
|
||||
viewBox="0 0 25 24"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
alt="Github"
|
||||
>
|
||||
<path
|
||||
d="M12.3047 0C5.50634 0 0 5.50942 0 12.3047C0 17.7423 3.52529 22.3535 8.41332 23.9787C9.02856 24.0946 9.25414 23.7142 9.25414 23.3871C9.25414 23.0949 9.24389 22.3207 9.23876 21.2953C5.81601 22.0377 5.09414 19.6444 5.09414 19.6444C4.53427 18.2243 3.72524 17.8449 3.72524 17.8449C2.61064 17.082 3.81137 17.0973 3.81137 17.0973C5.04697 17.1835 5.69604 18.3647 5.69604 18.3647C6.79321 20.2463 8.57636 19.7029 9.27978 19.3881C9.39052 18.5924 9.70736 18.0499 10.0591 17.7423C7.32641 17.4347 4.45429 16.3765 4.45429 11.6618C4.45429 10.3185 4.9311 9.22133 5.72065 8.36C5.58222 8.04931 5.16694 6.79833 5.82831 5.10337C5.82831 5.10337 6.85883 4.77319 9.2121 6.36459C10.1965 6.09082 11.2424 5.95546 12.2883 5.94931C13.3342 5.95546 14.3801 6.09082 15.3644 6.36459C17.7023 4.77319 18.7328 5.10337 18.7328 5.10337C19.3942 6.79833 18.9789 8.04931 18.8559 8.36C19.6403 9.22133 20.1171 10.3185 20.1171 11.6618C20.1171 16.3888 17.2409 17.4296 14.5031 17.7321C14.9338 18.1012 15.3337 18.8559 15.3337 20.0084C15.3337 21.6552 15.3183 22.978 15.3183 23.3779C15.3183 23.7009 15.5336 24.0854 16.1642 23.9623C21.0871 22.3484 24.6094 17.7341 24.6094 12.3047C24.6094 5.50942 19.0999 0 12.3047 0Z"
|
||||
/>
|
||||
</svg>
|
||||
</a>
|
||||
<a
|
||||
href="https://twitter.com/angular"
|
||||
aria-label="Twitter"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
>
|
||||
<svg
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
alt="Twitter"
|
||||
>
|
||||
<path
|
||||
d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"
|
||||
/>
|
||||
</svg>
|
||||
</a>
|
||||
<a
|
||||
href="https://www.youtube.com/channel/UCbn1OgGei-DV7aSRo_HaAiw"
|
||||
aria-label="Youtube"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
>
|
||||
<svg
|
||||
width="29"
|
||||
height="20"
|
||||
viewBox="0 0 29 20"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
alt="Youtube"
|
||||
>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M27.4896 1.52422C27.9301 1.96749 28.2463 2.51866 28.4068 3.12258C29.0004 5.35161 29.0004 10 29.0004 10C29.0004 10 29.0004 14.6484 28.4068 16.8774C28.2463 17.4813 27.9301 18.0325 27.4896 18.4758C27.0492 18.9191 26.5 19.2389 25.8972 19.4032C23.6778 20 14.8068 20 14.8068 20C14.8068 20 5.93586 20 3.71651 19.4032C3.11363 19.2389 2.56449 18.9191 2.12405 18.4758C1.68361 18.0325 1.36732 17.4813 1.20683 16.8774C0.613281 14.6484 0.613281 10 0.613281 10C0.613281 10 0.613281 5.35161 1.20683 3.12258C1.36732 2.51866 1.68361 1.96749 2.12405 1.52422C2.56449 1.08095 3.11363 0.76113 3.71651 0.596774C5.93586 0 14.8068 0 14.8068 0C14.8068 0 23.6778 0 25.8972 0.596774C26.5 0.76113 27.0492 1.08095 27.4896 1.52422ZM19.3229 10L11.9036 5.77905V14.221L19.3229 10Z"
|
||||
/>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
|
||||
<!-- * * * * * * * * * * * The content above * * * * * * * * * * * * -->
|
||||
<!-- * * * * * * * * * * is only a placeholder * * * * * * * * * * * -->
|
||||
<!-- * * * * * * * * * * and can be replaced. * * * * * * * * * * * -->
|
||||
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
|
||||
<!-- * * * * * * * * * * End of Placeholder * * * * * * * * * * * * -->
|
||||
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
|
||||
|
||||
<% if (routing) { %>
|
||||
<router-outlet /><% } %>
|
0
my-app/node_modules/@schematics/angular/application/files/common-files/src/assets/.gitkeep.template
generated
vendored
Executable file
0
my-app/node_modules/@schematics/angular/application/files/common-files/src/assets/.gitkeep.template
generated
vendored
Executable file
BIN
my-app/node_modules/@schematics/angular/application/files/common-files/src/favicon.ico.template
generated
vendored
Executable file
BIN
my-app/node_modules/@schematics/angular/application/files/common-files/src/favicon.ico.template
generated
vendored
Executable file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
13
my-app/node_modules/@schematics/angular/application/files/common-files/src/index.html.template
generated
vendored
Executable file
13
my-app/node_modules/@schematics/angular/application/files/common-files/src/index.html.template
generated
vendored
Executable file
|
@ -0,0 +1,13 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title><%= utils.classify(name) %></title>
|
||||
<base href="/">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="icon" type="image/x-icon" href="favicon.ico">
|
||||
</head>
|
||||
<body>
|
||||
<<%= selector %>></<%= selector %>>
|
||||
</body>
|
||||
</html>
|
1
my-app/node_modules/@schematics/angular/application/files/common-files/src/styles.__style__.template
generated
vendored
Executable file
1
my-app/node_modules/@schematics/angular/application/files/common-files/src/styles.__style__.template
generated
vendored
Executable file
|
@ -0,0 +1 @@
|
|||
/* You can add global styles to this file, and also import other style files */
|
14
my-app/node_modules/@schematics/angular/application/files/common-files/tsconfig.app.json.template
generated
vendored
Executable file
14
my-app/node_modules/@schematics/angular/application/files/common-files/tsconfig.app.json.template
generated
vendored
Executable file
|
@ -0,0 +1,14 @@
|
|||
/* To learn more about this file see: https://angular.io/config/tsconfig. */
|
||||
{
|
||||
"extends": "<%= relativePathToWorkspaceRoot %>/tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "<%= relativePathToWorkspaceRoot %>/out-tsc/app",
|
||||
"types": []
|
||||
},
|
||||
"files": [
|
||||
"src/main.ts"
|
||||
],
|
||||
"include": [
|
||||
"src/**/*.d.ts"
|
||||
]
|
||||
}
|
14
my-app/node_modules/@schematics/angular/application/files/common-files/tsconfig.spec.json.template
generated
vendored
Executable file
14
my-app/node_modules/@schematics/angular/application/files/common-files/tsconfig.spec.json.template
generated
vendored
Executable file
|
@ -0,0 +1,14 @@
|
|||
/* To learn more about this file see: https://angular.io/config/tsconfig. */
|
||||
{
|
||||
"extends": "<%= relativePathToWorkspaceRoot %>/tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "<%= relativePathToWorkspaceRoot %>/out-tsc/spec",
|
||||
"types": [
|
||||
"jasmine"
|
||||
]
|
||||
},
|
||||
"include": [
|
||||
"src/**/*.spec.ts",
|
||||
"src/**/*.d.ts"
|
||||
]
|
||||
}
|
35
my-app/node_modules/@schematics/angular/application/files/module-files/src/app/app.component.spec.ts.template
generated
vendored
Executable file
35
my-app/node_modules/@schematics/angular/application/files/module-files/src/app/app.component.spec.ts.template
generated
vendored
Executable file
|
@ -0,0 +1,35 @@
|
|||
import { TestBed } from '@angular/core/testing';<% if (routing) { %>
|
||||
import { RouterTestingModule } from '@angular/router/testing';<% } %>
|
||||
import { AppComponent } from './app.component';
|
||||
|
||||
describe('AppComponent', () => {
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({<% if (routing) { %>
|
||||
imports: [
|
||||
RouterTestingModule
|
||||
],<% } %>
|
||||
declarations: [
|
||||
AppComponent
|
||||
],
|
||||
}).compileComponents();
|
||||
});
|
||||
|
||||
it('should create the app', () => {
|
||||
const fixture = TestBed.createComponent(AppComponent);
|
||||
const app = fixture.componentInstance;
|
||||
expect(app).toBeTruthy();
|
||||
});
|
||||
|
||||
it(`should have as title '<%= name %>'`, () => {
|
||||
const fixture = TestBed.createComponent(AppComponent);
|
||||
const app = fixture.componentInstance;
|
||||
expect(app.title).toEqual('<%= name %>');
|
||||
});
|
||||
|
||||
it('should render title', () => {
|
||||
const fixture = TestBed.createComponent(AppComponent);
|
||||
fixture.detectChanges();
|
||||
const compiled = fixture.nativeElement as HTMLElement;
|
||||
expect(compiled.querySelector('h1')?.textContent).toContain('Hello, <%= name %>');
|
||||
});
|
||||
});
|
18
my-app/node_modules/@schematics/angular/application/files/module-files/src/app/app.component.ts.template
generated
vendored
Executable file
18
my-app/node_modules/@schematics/angular/application/files/module-files/src/app/app.component.ts.template
generated
vendored
Executable file
|
@ -0,0 +1,18 @@
|
|||
import { Component } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: '<%= selector %>',<% if(inlineTemplate) { %>
|
||||
template: `
|
||||
<h1>Welcome to {{title}}!</h1>
|
||||
|
||||
<% if (routing) {
|
||||
%><router-outlet /><%
|
||||
} %>
|
||||
`,<% } else { %>
|
||||
templateUrl: './app.component.html',<% } if(inlineStyle) { %>
|
||||
styles: []<% } else { %>
|
||||
styleUrl: './app.component.<%= style %>'<% } %>
|
||||
})
|
||||
export class AppComponent {
|
||||
title = '<%= name %>';
|
||||
}
|
18
my-app/node_modules/@schematics/angular/application/files/module-files/src/app/app.module.ts.template
generated
vendored
Executable file
18
my-app/node_modules/@schematics/angular/application/files/module-files/src/app/app.module.ts.template
generated
vendored
Executable file
|
@ -0,0 +1,18 @@
|
|||
import { NgModule } from '@angular/core';
|
||||
import { BrowserModule } from '@angular/platform-browser';
|
||||
<% if (routing) { %>
|
||||
import { AppRoutingModule } from './app-routing.module';<% } %>
|
||||
import { AppComponent } from './app.component';
|
||||
|
||||
@NgModule({
|
||||
declarations: [
|
||||
AppComponent
|
||||
],
|
||||
imports: [
|
||||
BrowserModule<% if (routing) { %>,
|
||||
AppRoutingModule<% } %>
|
||||
],
|
||||
providers: [],
|
||||
bootstrap: [AppComponent]
|
||||
})
|
||||
export class AppModule { }
|
13
my-app/node_modules/@schematics/angular/application/files/module-files/src/main.ts.template
generated
vendored
Executable file
13
my-app/node_modules/@schematics/angular/application/files/module-files/src/main.ts.template
generated
vendored
Executable file
|
@ -0,0 +1,13 @@
|
|||
<% if(!!viewEncapsulation) { %>import { ViewEncapsulation } from '@angular/core';
|
||||
<% }%>import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
||||
|
||||
import { AppModule } from './app/app.module';
|
||||
|
||||
<% if(!!viewEncapsulation) { %>
|
||||
platformBrowserDynamic().bootstrapModule(AppModule, {
|
||||
defaultEncapsulation: ViewEncapsulation.<%= viewEncapsulation %>
|
||||
})
|
||||
.catch(err => console.error(err));<% } else { %>
|
||||
platformBrowserDynamic().bootstrapModule(AppModule)
|
||||
.catch(err => console.error(err));
|
||||
<% } %>
|
29
my-app/node_modules/@schematics/angular/application/files/standalone-files/src/app/app.component.spec.ts.template
generated
vendored
Executable file
29
my-app/node_modules/@schematics/angular/application/files/standalone-files/src/app/app.component.spec.ts.template
generated
vendored
Executable file
|
@ -0,0 +1,29 @@
|
|||
import { TestBed } from '@angular/core/testing';
|
||||
import { AppComponent } from './app.component';
|
||||
|
||||
describe('AppComponent', () => {
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
imports: [AppComponent],
|
||||
}).compileComponents();
|
||||
});
|
||||
|
||||
it('should create the app', () => {
|
||||
const fixture = TestBed.createComponent(AppComponent);
|
||||
const app = fixture.componentInstance;
|
||||
expect(app).toBeTruthy();
|
||||
});
|
||||
|
||||
it(`should have the '<%= name %>' title`, () => {
|
||||
const fixture = TestBed.createComponent(AppComponent);
|
||||
const app = fixture.componentInstance;
|
||||
expect(app.title).toEqual('<%= name %>');
|
||||
});
|
||||
|
||||
it('should render title', () => {
|
||||
const fixture = TestBed.createComponent(AppComponent);
|
||||
fixture.detectChanges();
|
||||
const compiled = fixture.nativeElement as HTMLElement;
|
||||
expect(compiled.querySelector('h1')?.textContent).toContain('Hello, <%= name %>');
|
||||
});
|
||||
});
|
21
my-app/node_modules/@schematics/angular/application/files/standalone-files/src/app/app.component.ts.template
generated
vendored
Executable file
21
my-app/node_modules/@schematics/angular/application/files/standalone-files/src/app/app.component.ts.template
generated
vendored
Executable file
|
@ -0,0 +1,21 @@
|
|||
import { Component } from '@angular/core';<% if(routing) { %>
|
||||
import { RouterOutlet } from '@angular/router';<% } %>
|
||||
|
||||
@Component({
|
||||
selector: '<%= selector %>',
|
||||
standalone: true,
|
||||
imports: [<% if(routing) { %>RouterOutlet<% } %>],<% if(inlineTemplate) { %>
|
||||
template: `
|
||||
<h1>Welcome to {{title}}!</h1>
|
||||
|
||||
<% if (routing) {
|
||||
%><router-outlet /><%
|
||||
} %>
|
||||
`,<% } else { %>
|
||||
templateUrl: './app.component.html',<% } if(inlineStyle) { %>
|
||||
styles: [],<% } else { %>
|
||||
styleUrl: './app.component.<%= style %>'<% } %>
|
||||
})
|
||||
export class AppComponent {
|
||||
title = '<%= name %>';
|
||||
}
|
8
my-app/node_modules/@schematics/angular/application/files/standalone-files/src/app/app.config.ts.template
generated
vendored
Executable file
8
my-app/node_modules/@schematics/angular/application/files/standalone-files/src/app/app.config.ts.template
generated
vendored
Executable file
|
@ -0,0 +1,8 @@
|
|||
import { ApplicationConfig } from '@angular/core';<% if (routing) { %>
|
||||
import { provideRouter } from '@angular/router';
|
||||
|
||||
import { routes } from './app.routes';<% } %>
|
||||
|
||||
export const appConfig: ApplicationConfig = {
|
||||
providers: [<% if (routing) { %>provideRouter(routes)<% } %>]
|
||||
};
|
3
my-app/node_modules/@schematics/angular/application/files/standalone-files/src/app/app.routes.ts.template
generated
vendored
Executable file
3
my-app/node_modules/@schematics/angular/application/files/standalone-files/src/app/app.routes.ts.template
generated
vendored
Executable file
|
@ -0,0 +1,3 @@
|
|||
import { Routes } from '@angular/router';
|
||||
|
||||
export const routes: Routes = [];
|
6
my-app/node_modules/@schematics/angular/application/files/standalone-files/src/main.ts.template
generated
vendored
Executable file
6
my-app/node_modules/@schematics/angular/application/files/standalone-files/src/main.ts.template
generated
vendored
Executable file
|
@ -0,0 +1,6 @@
|
|||
import { bootstrapApplication } from '@angular/platform-browser';
|
||||
import { appConfig } from './app/app.config';
|
||||
import { AppComponent } from './app/app.component';
|
||||
|
||||
bootstrapApplication(AppComponent, appConfig)
|
||||
.catch((err) => console.error(err));
|
10
my-app/node_modules/@schematics/angular/application/index.d.ts
generated
vendored
Executable file
10
my-app/node_modules/@schematics/angular/application/index.d.ts
generated
vendored
Executable file
|
@ -0,0 +1,10 @@
|
|||
/**
|
||||
* @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
|
||||
*/
|
||||
import { Rule } from '@angular-devkit/schematics';
|
||||
import { Schema as ApplicationOptions } from './schema';
|
||||
export default function (options: ApplicationOptions): Rule;
|
300
my-app/node_modules/@schematics/angular/application/index.js
generated
vendored
Executable file
300
my-app/node_modules/@schematics/angular/application/index.js
generated
vendored
Executable file
|
@ -0,0 +1,300 @@
|
|||
"use strict";
|
||||
/**
|
||||
* @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
|
||||
*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const core_1 = require("@angular-devkit/core");
|
||||
const schematics_1 = require("@angular-devkit/schematics");
|
||||
const tasks_1 = require("@angular-devkit/schematics/tasks");
|
||||
const dependencies_1 = require("../utility/dependencies");
|
||||
const latest_versions_1 = require("../utility/latest-versions");
|
||||
const paths_1 = require("../utility/paths");
|
||||
const workspace_1 = require("../utility/workspace");
|
||||
const workspace_models_1 = require("../utility/workspace-models");
|
||||
const schema_1 = require("./schema");
|
||||
function default_1(options) {
|
||||
return async (host, context) => {
|
||||
const { appDir, appRootSelector, componentOptions, folderName, sourceDir } = await getAppOptions(host, options);
|
||||
return (0, schematics_1.chain)([
|
||||
addAppToWorkspaceFile(options, appDir, folderName),
|
||||
options.standalone
|
||||
? (0, schematics_1.noop)()
|
||||
: (0, schematics_1.schematic)('module', {
|
||||
name: 'app',
|
||||
commonModule: false,
|
||||
flat: true,
|
||||
routing: options.routing,
|
||||
routingScope: 'Root',
|
||||
path: sourceDir,
|
||||
project: options.name,
|
||||
}),
|
||||
(0, schematics_1.schematic)('component', {
|
||||
name: 'app',
|
||||
selector: appRootSelector,
|
||||
flat: true,
|
||||
path: sourceDir,
|
||||
skipImport: true,
|
||||
project: options.name,
|
||||
...componentOptions,
|
||||
}),
|
||||
(0, schematics_1.mergeWith)((0, schematics_1.apply)((0, schematics_1.url)(options.standalone ? './files/standalone-files' : './files/module-files'), [
|
||||
options.routing ? (0, schematics_1.noop)() : (0, schematics_1.filter)((path) => !path.endsWith('app.routes.ts.template')),
|
||||
componentOptions.skipTests
|
||||
? (0, schematics_1.filter)((path) => !path.endsWith('.spec.ts.template'))
|
||||
: (0, schematics_1.noop)(),
|
||||
(0, schematics_1.applyTemplates)({
|
||||
utils: schematics_1.strings,
|
||||
...options,
|
||||
...componentOptions,
|
||||
selector: appRootSelector,
|
||||
relativePathToWorkspaceRoot: (0, paths_1.relativePathToWorkspaceRoot)(appDir),
|
||||
appName: options.name,
|
||||
folderName,
|
||||
}),
|
||||
(0, schematics_1.move)(appDir),
|
||||
]), schematics_1.MergeStrategy.Overwrite),
|
||||
(0, schematics_1.mergeWith)((0, schematics_1.apply)((0, schematics_1.url)('./files/common-files'), [
|
||||
options.minimal
|
||||
? (0, schematics_1.filter)((path) => !path.endsWith('tsconfig.spec.json.template'))
|
||||
: (0, schematics_1.noop)(),
|
||||
componentOptions.inlineTemplate
|
||||
? (0, schematics_1.filter)((path) => !path.endsWith('component.html.template'))
|
||||
: (0, schematics_1.noop)(),
|
||||
(0, schematics_1.applyTemplates)({
|
||||
utils: schematics_1.strings,
|
||||
...options,
|
||||
selector: appRootSelector,
|
||||
relativePathToWorkspaceRoot: (0, paths_1.relativePathToWorkspaceRoot)(appDir),
|
||||
appName: options.name,
|
||||
folderName,
|
||||
}),
|
||||
(0, schematics_1.move)(appDir),
|
||||
]), schematics_1.MergeStrategy.Overwrite),
|
||||
options.ssr
|
||||
? (0, schematics_1.schematic)('ssr', {
|
||||
project: options.name,
|
||||
skipInstall: true,
|
||||
})
|
||||
: (0, schematics_1.noop)(),
|
||||
options.skipPackageJson ? (0, schematics_1.noop)() : addDependenciesToPackageJson(options),
|
||||
]);
|
||||
};
|
||||
}
|
||||
exports.default = default_1;
|
||||
function addDependenciesToPackageJson(options) {
|
||||
return (host, context) => {
|
||||
[
|
||||
{
|
||||
type: dependencies_1.NodeDependencyType.Dev,
|
||||
name: '@angular/compiler-cli',
|
||||
version: latest_versions_1.latestVersions.Angular,
|
||||
},
|
||||
{
|
||||
type: dependencies_1.NodeDependencyType.Dev,
|
||||
name: '@angular-devkit/build-angular',
|
||||
version: latest_versions_1.latestVersions.DevkitBuildAngular,
|
||||
},
|
||||
{
|
||||
type: dependencies_1.NodeDependencyType.Dev,
|
||||
name: 'typescript',
|
||||
version: latest_versions_1.latestVersions['typescript'],
|
||||
},
|
||||
].forEach((dependency) => (0, dependencies_1.addPackageJsonDependency)(host, dependency));
|
||||
if (!options.skipInstall) {
|
||||
context.addTask(new tasks_1.NodePackageInstallTask());
|
||||
}
|
||||
return host;
|
||||
};
|
||||
}
|
||||
function addAppToWorkspaceFile(options, appDir, folderName) {
|
||||
let projectRoot = appDir;
|
||||
if (projectRoot) {
|
||||
projectRoot += '/';
|
||||
}
|
||||
const schematics = {};
|
||||
if (options.inlineTemplate ||
|
||||
options.inlineStyle ||
|
||||
options.minimal ||
|
||||
options.style !== schema_1.Style.Css) {
|
||||
const componentSchematicsOptions = {};
|
||||
if (options.inlineTemplate ?? options.minimal) {
|
||||
componentSchematicsOptions.inlineTemplate = true;
|
||||
}
|
||||
if (options.inlineStyle ?? options.minimal) {
|
||||
componentSchematicsOptions.inlineStyle = true;
|
||||
}
|
||||
if (options.style && options.style !== schema_1.Style.Css) {
|
||||
componentSchematicsOptions.style = options.style;
|
||||
}
|
||||
schematics['@schematics/angular:component'] = componentSchematicsOptions;
|
||||
}
|
||||
if (options.skipTests || options.minimal) {
|
||||
const schematicsWithTests = [
|
||||
'class',
|
||||
'component',
|
||||
'directive',
|
||||
'guard',
|
||||
'interceptor',
|
||||
'pipe',
|
||||
'resolver',
|
||||
'service',
|
||||
];
|
||||
schematicsWithTests.forEach((type) => {
|
||||
(schematics[`@schematics/angular:${type}`] ??= {}).skipTests = true;
|
||||
});
|
||||
}
|
||||
if (!options.standalone) {
|
||||
const schematicsWithStandalone = ['component', 'directive', 'pipe'];
|
||||
schematicsWithStandalone.forEach((type) => {
|
||||
(schematics[`@schematics/angular:${type}`] ??= {}).standalone = false;
|
||||
});
|
||||
}
|
||||
const sourceRoot = (0, core_1.join)((0, core_1.normalize)(projectRoot), 'src');
|
||||
let budgets = [];
|
||||
if (options.strict) {
|
||||
budgets = [
|
||||
{
|
||||
type: 'initial',
|
||||
maximumWarning: '500kb',
|
||||
maximumError: '1mb',
|
||||
},
|
||||
{
|
||||
type: 'anyComponentStyle',
|
||||
maximumWarning: '2kb',
|
||||
maximumError: '4kb',
|
||||
},
|
||||
];
|
||||
}
|
||||
else {
|
||||
budgets = [
|
||||
{
|
||||
type: 'initial',
|
||||
maximumWarning: '2mb',
|
||||
maximumError: '5mb',
|
||||
},
|
||||
{
|
||||
type: 'anyComponentStyle',
|
||||
maximumWarning: '6kb',
|
||||
maximumError: '10kb',
|
||||
},
|
||||
];
|
||||
}
|
||||
const inlineStyleLanguage = options?.style !== schema_1.Style.Css ? options.style : undefined;
|
||||
const project = {
|
||||
root: (0, core_1.normalize)(projectRoot),
|
||||
sourceRoot,
|
||||
projectType: workspace_models_1.ProjectType.Application,
|
||||
prefix: options.prefix || 'app',
|
||||
schematics,
|
||||
targets: {
|
||||
build: {
|
||||
builder: workspace_models_1.Builders.Application,
|
||||
defaultConfiguration: 'production',
|
||||
options: {
|
||||
outputPath: `dist/${folderName}`,
|
||||
index: `${sourceRoot}/index.html`,
|
||||
browser: `${sourceRoot}/main.ts`,
|
||||
polyfills: ['zone.js'],
|
||||
tsConfig: `${projectRoot}tsconfig.app.json`,
|
||||
inlineStyleLanguage,
|
||||
assets: [`${sourceRoot}/favicon.ico`, `${sourceRoot}/assets`],
|
||||
styles: [`${sourceRoot}/styles.${options.style}`],
|
||||
scripts: [],
|
||||
},
|
||||
configurations: {
|
||||
production: {
|
||||
budgets,
|
||||
outputHashing: 'all',
|
||||
},
|
||||
development: {
|
||||
optimization: false,
|
||||
extractLicenses: false,
|
||||
sourceMap: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
serve: {
|
||||
builder: workspace_models_1.Builders.DevServer,
|
||||
defaultConfiguration: 'development',
|
||||
options: {},
|
||||
configurations: {
|
||||
production: {
|
||||
buildTarget: `${options.name}:build:production`,
|
||||
},
|
||||
development: {
|
||||
buildTarget: `${options.name}:build:development`,
|
||||
},
|
||||
},
|
||||
},
|
||||
'extract-i18n': {
|
||||
builder: workspace_models_1.Builders.ExtractI18n,
|
||||
options: {
|
||||
buildTarget: `${options.name}:build`,
|
||||
},
|
||||
},
|
||||
test: options.minimal
|
||||
? undefined
|
||||
: {
|
||||
builder: workspace_models_1.Builders.Karma,
|
||||
options: {
|
||||
polyfills: ['zone.js', 'zone.js/testing'],
|
||||
tsConfig: `${projectRoot}tsconfig.spec.json`,
|
||||
inlineStyleLanguage,
|
||||
assets: [`${sourceRoot}/favicon.ico`, `${sourceRoot}/assets`],
|
||||
styles: [`${sourceRoot}/styles.${options.style}`],
|
||||
scripts: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
return (0, workspace_1.updateWorkspace)((workspace) => {
|
||||
workspace.projects.add({
|
||||
name: options.name,
|
||||
...project,
|
||||
});
|
||||
});
|
||||
}
|
||||
async function getAppOptions(host, options) {
|
||||
const appRootSelector = `${options.prefix}-root`;
|
||||
const componentOptions = getComponentOptions(options);
|
||||
const workspace = await (0, workspace_1.getWorkspace)(host);
|
||||
const newProjectRoot = workspace.extensions.newProjectRoot || '';
|
||||
// If scoped project (i.e. "@foo/bar"), convert dir to "foo/bar".
|
||||
let folderName = options.name.startsWith('@') ? options.name.slice(1) : options.name;
|
||||
if (/[A-Z]/.test(folderName)) {
|
||||
folderName = schematics_1.strings.dasherize(folderName);
|
||||
}
|
||||
const appDir = options.projectRoot === undefined
|
||||
? (0, core_1.join)((0, core_1.normalize)(newProjectRoot), folderName)
|
||||
: (0, core_1.normalize)(options.projectRoot);
|
||||
const sourceDir = `${appDir}/src/app`;
|
||||
return {
|
||||
appDir,
|
||||
appRootSelector,
|
||||
componentOptions,
|
||||
folderName,
|
||||
sourceDir,
|
||||
};
|
||||
}
|
||||
function getComponentOptions(options) {
|
||||
const componentOptions = !options.minimal
|
||||
? {
|
||||
inlineStyle: options.inlineStyle,
|
||||
inlineTemplate: options.inlineTemplate,
|
||||
skipTests: options.skipTests,
|
||||
style: options.style,
|
||||
viewEncapsulation: options.viewEncapsulation,
|
||||
}
|
||||
: {
|
||||
inlineStyle: options.inlineStyle ?? true,
|
||||
inlineTemplate: options.inlineTemplate ?? true,
|
||||
skipTests: true,
|
||||
style: options.style,
|
||||
viewEncapsulation: options.viewEncapsulation,
|
||||
};
|
||||
return componentOptions;
|
||||
}
|
87
my-app/node_modules/@schematics/angular/application/schema.d.ts
generated
vendored
Executable file
87
my-app/node_modules/@schematics/angular/application/schema.d.ts
generated
vendored
Executable file
|
@ -0,0 +1,87 @@
|
|||
/**
|
||||
* Generates a new basic application definition in the "projects" subfolder of the workspace.
|
||||
*/
|
||||
export interface Schema {
|
||||
/**
|
||||
* Include styles inline in the root component.ts file. Only CSS styles can be included
|
||||
* inline. Default is false, meaning that an external styles file is created and referenced
|
||||
* in the root component.ts file.
|
||||
*/
|
||||
inlineStyle?: boolean;
|
||||
/**
|
||||
* Include template inline in the root component.ts file. Default is false, meaning that an
|
||||
* external template file is created and referenced in the root component.ts file.
|
||||
*/
|
||||
inlineTemplate?: boolean;
|
||||
/**
|
||||
* Create a bare-bones project without any testing frameworks. (Use for learning purposes
|
||||
* only.)
|
||||
*/
|
||||
minimal?: boolean;
|
||||
/**
|
||||
* The name of the new application.
|
||||
*/
|
||||
name: string;
|
||||
/**
|
||||
* A prefix to apply to generated selectors.
|
||||
*/
|
||||
prefix?: string;
|
||||
/**
|
||||
* The root directory of the new application.
|
||||
*/
|
||||
projectRoot?: string;
|
||||
/**
|
||||
* Creates an application with routing enabled.
|
||||
*/
|
||||
routing?: boolean;
|
||||
/**
|
||||
* Skip installing dependency packages.
|
||||
*/
|
||||
skipInstall?: boolean;
|
||||
/**
|
||||
* Do not add dependencies to the "package.json" file.
|
||||
*/
|
||||
skipPackageJson?: boolean;
|
||||
/**
|
||||
* Do not create "spec.ts" test files for the application.
|
||||
*/
|
||||
skipTests?: boolean;
|
||||
/**
|
||||
* Creates an application with Server-Side Rendering (SSR) and Static Site Generation
|
||||
* (SSG/Prerendering) enabled.
|
||||
*/
|
||||
ssr?: boolean;
|
||||
/**
|
||||
* Creates an application based upon the standalone API, without NgModules.
|
||||
*/
|
||||
standalone?: boolean;
|
||||
/**
|
||||
* Creates an application with stricter bundle budgets settings.
|
||||
*/
|
||||
strict?: boolean;
|
||||
/**
|
||||
* The file extension or preprocessor to use for style files.
|
||||
*/
|
||||
style?: Style;
|
||||
/**
|
||||
* The view encapsulation strategy to use in the new application.
|
||||
*/
|
||||
viewEncapsulation?: ViewEncapsulation;
|
||||
}
|
||||
/**
|
||||
* The file extension or preprocessor to use for style files.
|
||||
*/
|
||||
export declare enum Style {
|
||||
Css = "css",
|
||||
Less = "less",
|
||||
Sass = "sass",
|
||||
Scss = "scss"
|
||||
}
|
||||
/**
|
||||
* The view encapsulation strategy to use in the new application.
|
||||
*/
|
||||
export declare enum ViewEncapsulation {
|
||||
Emulated = "Emulated",
|
||||
None = "None",
|
||||
ShadowDom = "ShadowDom"
|
||||
}
|
24
my-app/node_modules/@schematics/angular/application/schema.js
generated
vendored
Executable file
24
my-app/node_modules/@schematics/angular/application/schema.js
generated
vendored
Executable file
|
@ -0,0 +1,24 @@
|
|||
"use strict";
|
||||
// THIS FILE IS AUTOMATICALLY GENERATED. TO UPDATE THIS FILE YOU NEED TO CHANGE THE
|
||||
// CORRESPONDING JSON SCHEMA FILE, THEN RUN devkit-admin build (or bazel build ...).
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.ViewEncapsulation = exports.Style = void 0;
|
||||
/**
|
||||
* The file extension or preprocessor to use for style files.
|
||||
*/
|
||||
var Style;
|
||||
(function (Style) {
|
||||
Style["Css"] = "css";
|
||||
Style["Less"] = "less";
|
||||
Style["Sass"] = "sass";
|
||||
Style["Scss"] = "scss";
|
||||
})(Style || (exports.Style = Style = {}));
|
||||
/**
|
||||
* The view encapsulation strategy to use in the new application.
|
||||
*/
|
||||
var ViewEncapsulation;
|
||||
(function (ViewEncapsulation) {
|
||||
ViewEncapsulation["Emulated"] = "Emulated";
|
||||
ViewEncapsulation["None"] = "None";
|
||||
ViewEncapsulation["ShadowDom"] = "ShadowDom";
|
||||
})(ViewEncapsulation || (exports.ViewEncapsulation = ViewEncapsulation = {}));
|
120
my-app/node_modules/@schematics/angular/application/schema.json
generated
vendored
Executable file
120
my-app/node_modules/@schematics/angular/application/schema.json
generated
vendored
Executable file
|
@ -0,0 +1,120 @@
|
|||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema",
|
||||
"$id": "SchematicsAngularApp",
|
||||
"title": "Angular Application Options Schema",
|
||||
"type": "object",
|
||||
"description": "Generates a new basic application definition in the \"projects\" subfolder of the workspace.",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"projectRoot": {
|
||||
"description": "The root directory of the new application.",
|
||||
"type": "string"
|
||||
},
|
||||
"name": {
|
||||
"description": "The name of the new application.",
|
||||
"type": "string",
|
||||
"pattern": "^(?:@[a-zA-Z0-9-*~][a-zA-Z0-9-*._~]*/)?[a-zA-Z0-9-~][a-zA-Z0-9-._~]*$",
|
||||
"$default": {
|
||||
"$source": "argv",
|
||||
"index": 0
|
||||
},
|
||||
"x-prompt": "What name would you like to use for the application?"
|
||||
},
|
||||
"inlineStyle": {
|
||||
"description": "Include styles inline in the root component.ts file. Only CSS styles can be included inline. Default is false, meaning that an external styles file is created and referenced in the root component.ts file.",
|
||||
"type": "boolean",
|
||||
"alias": "s",
|
||||
"x-user-analytics": "ep.ng_inline_style"
|
||||
},
|
||||
"inlineTemplate": {
|
||||
"description": "Include template inline in the root component.ts file. Default is false, meaning that an external template file is created and referenced in the root component.ts file. ",
|
||||
"type": "boolean",
|
||||
"alias": "t",
|
||||
"x-user-analytics": "ep.ng_inline_template"
|
||||
},
|
||||
"viewEncapsulation": {
|
||||
"description": "The view encapsulation strategy to use in the new application.",
|
||||
"enum": ["Emulated", "None", "ShadowDom"],
|
||||
"type": "string"
|
||||
},
|
||||
"routing": {
|
||||
"type": "boolean",
|
||||
"description": "Creates an application with routing enabled.",
|
||||
"default": true,
|
||||
"x-user-analytics": "ep.ng_routing"
|
||||
},
|
||||
"prefix": {
|
||||
"type": "string",
|
||||
"format": "html-selector",
|
||||
"description": "A prefix to apply to generated selectors.",
|
||||
"default": "app",
|
||||
"alias": "p"
|
||||
},
|
||||
"style": {
|
||||
"description": "The file extension or preprocessor to use for style files.",
|
||||
"type": "string",
|
||||
"default": "css",
|
||||
"enum": ["css", "scss", "sass", "less"],
|
||||
"x-prompt": {
|
||||
"message": "Which stylesheet format would you like to use?",
|
||||
"type": "list",
|
||||
"items": [
|
||||
{ "value": "css", "label": "CSS" },
|
||||
{
|
||||
"value": "scss",
|
||||
"label": "SCSS [ https://sass-lang.com/documentation/syntax#scss ]"
|
||||
},
|
||||
{
|
||||
"value": "sass",
|
||||
"label": "Sass [ https://sass-lang.com/documentation/syntax#the-indented-syntax ]"
|
||||
},
|
||||
{
|
||||
"value": "less",
|
||||
"label": "Less [ http://lesscss.org ]"
|
||||
}
|
||||
]
|
||||
},
|
||||
"x-user-analytics": "ep.ng_style"
|
||||
},
|
||||
"skipTests": {
|
||||
"description": "Do not create \"spec.ts\" test files for the application.",
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"alias": "S"
|
||||
},
|
||||
"skipPackageJson": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Do not add dependencies to the \"package.json\" file."
|
||||
},
|
||||
"minimal": {
|
||||
"description": "Create a bare-bones project without any testing frameworks. (Use for learning purposes only.)",
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"skipInstall": {
|
||||
"description": "Skip installing dependency packages.",
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"strict": {
|
||||
"description": "Creates an application with stricter bundle budgets settings.",
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"standalone": {
|
||||
"description": "Creates an application based upon the standalone API, without NgModules.",
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"x-user-analytics": "ep.ng_standalone"
|
||||
},
|
||||
"ssr": {
|
||||
"description": "Creates an application with Server-Side Rendering (SSR) and Static Site Generation (SSG/Prerendering) enabled.",
|
||||
"x-prompt": "Do you want to enable Server-Side Rendering (SSR) and Static Site Generation (SSG/Prerendering)?",
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"x-user-analytics": "ep.ng_ssr"
|
||||
}
|
||||
},
|
||||
"required": ["name"]
|
||||
}
|
7
my-app/node_modules/@schematics/angular/class/files/__name@dasherize____type__.spec.ts.template
generated
vendored
Executable file
7
my-app/node_modules/@schematics/angular/class/files/__name@dasherize____type__.spec.ts.template
generated
vendored
Executable file
|
@ -0,0 +1,7 @@
|
|||
import { <%= classify(name) %> } from './<%= dasherize(name) %><%= type %>';
|
||||
|
||||
describe('<%= classify(name) %>', () => {
|
||||
it('should create an instance', () => {
|
||||
expect(new <%= classify(name) %>()).toBeTruthy();
|
||||
});
|
||||
});
|
2
my-app/node_modules/@schematics/angular/class/files/__name@dasherize____type__.ts.template
generated
vendored
Executable file
2
my-app/node_modules/@schematics/angular/class/files/__name@dasherize____type__.ts.template
generated
vendored
Executable file
|
@ -0,0 +1,2 @@
|
|||
export class <%= classify(name) %> {
|
||||
}
|
10
my-app/node_modules/@schematics/angular/class/index.d.ts
generated
vendored
Executable file
10
my-app/node_modules/@schematics/angular/class/index.d.ts
generated
vendored
Executable file
|
@ -0,0 +1,10 @@
|
|||
/**
|
||||
* @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
|
||||
*/
|
||||
import { Rule } from '@angular-devkit/schematics';
|
||||
import { Schema as ClassOptions } from './schema';
|
||||
export default function (options: ClassOptions): Rule;
|
15
my-app/node_modules/@schematics/angular/class/index.js
generated
vendored
Executable file
15
my-app/node_modules/@schematics/angular/class/index.js
generated
vendored
Executable file
|
@ -0,0 +1,15 @@
|
|||
"use strict";
|
||||
/**
|
||||
* @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
|
||||
*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const generate_from_files_1 = require("../utility/generate-from-files");
|
||||
function default_1(options) {
|
||||
options.type = options.type ? `.${options.type}` : '';
|
||||
return (0, generate_from_files_1.generateFromFiles)(options);
|
||||
}
|
||||
exports.default = default_1;
|
25
my-app/node_modules/@schematics/angular/class/schema.d.ts
generated
vendored
Executable file
25
my-app/node_modules/@schematics/angular/class/schema.d.ts
generated
vendored
Executable file
|
@ -0,0 +1,25 @@
|
|||
/**
|
||||
* Creates a new, generic class definition in the given project.
|
||||
*/
|
||||
export interface Schema {
|
||||
/**
|
||||
* The name of the new class.
|
||||
*/
|
||||
name: string;
|
||||
/**
|
||||
* The path at which to create the class, relative to the workspace root.
|
||||
*/
|
||||
path?: string;
|
||||
/**
|
||||
* The name of the project.
|
||||
*/
|
||||
project: string;
|
||||
/**
|
||||
* Do not create "spec.ts" test files for the new class.
|
||||
*/
|
||||
skipTests?: boolean;
|
||||
/**
|
||||
* Adds a developer-defined type to the filename, in the format "name.type.ts".
|
||||
*/
|
||||
type?: string;
|
||||
}
|
4
my-app/node_modules/@schematics/angular/class/schema.js
generated
vendored
Executable file
4
my-app/node_modules/@schematics/angular/class/schema.js
generated
vendored
Executable file
|
@ -0,0 +1,4 @@
|
|||
"use strict";
|
||||
// THIS FILE IS AUTOMATICALLY GENERATED. TO UPDATE THIS FILE YOU NEED TO CHANGE THE
|
||||
// CORRESPONDING JSON SCHEMA FILE, THEN RUN devkit-admin build (or bazel build ...).
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
45
my-app/node_modules/@schematics/angular/class/schema.json
generated
vendored
Executable file
45
my-app/node_modules/@schematics/angular/class/schema.json
generated
vendored
Executable file
|
@ -0,0 +1,45 @@
|
|||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema",
|
||||
"$id": "SchematicsAngularClass",
|
||||
"title": "Angular Class Options Schema",
|
||||
"type": "object",
|
||||
"description": "Creates a new, generic class definition in the given project.",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "The name of the new class.",
|
||||
"$default": {
|
||||
"$source": "argv",
|
||||
"index": 0
|
||||
},
|
||||
"x-prompt": "What name would you like to use for the class?"
|
||||
},
|
||||
"path": {
|
||||
"type": "string",
|
||||
"format": "path",
|
||||
"$default": {
|
||||
"$source": "workingDirectory"
|
||||
},
|
||||
"description": "The path at which to create the class, relative to the workspace root.",
|
||||
"visible": false
|
||||
},
|
||||
"project": {
|
||||
"type": "string",
|
||||
"description": "The name of the project.",
|
||||
"$default": {
|
||||
"$source": "projectName"
|
||||
}
|
||||
},
|
||||
"skipTests": {
|
||||
"type": "boolean",
|
||||
"description": "Do not create \"spec.ts\" test files for the new class.",
|
||||
"default": false
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"description": "Adds a developer-defined type to the filename, in the format \"name.type.ts\"."
|
||||
}
|
||||
},
|
||||
"required": ["name", "project"]
|
||||
}
|
136
my-app/node_modules/@schematics/angular/collection.json
generated
vendored
Executable file
136
my-app/node_modules/@schematics/angular/collection.json
generated
vendored
Executable file
|
@ -0,0 +1,136 @@
|
|||
{
|
||||
"schematics": {
|
||||
"ng-new": {
|
||||
"factory": "./ng-new",
|
||||
"schema": "./ng-new/schema.json",
|
||||
"description": "Create an Angular workspace.",
|
||||
"hidden": true
|
||||
},
|
||||
"workspace": {
|
||||
"factory": "./workspace",
|
||||
"schema": "./workspace/schema.json",
|
||||
"description": "Create an Angular workspace.",
|
||||
"hidden": true
|
||||
},
|
||||
"service-worker": {
|
||||
"factory": "./service-worker",
|
||||
"description": "Initializes a service worker setup.",
|
||||
"schema": "./service-worker/schema.json"
|
||||
},
|
||||
"application": {
|
||||
"aliases": ["app"],
|
||||
"factory": "./application",
|
||||
"schema": "./application/schema.json",
|
||||
"description": "Create an Angular application."
|
||||
},
|
||||
"e2e": {
|
||||
"factory": "./e2e",
|
||||
"schema": "./e2e/schema.json",
|
||||
"description": "Create an Angular e2e application.",
|
||||
"hidden": true
|
||||
},
|
||||
"class": {
|
||||
"aliases": ["cl"],
|
||||
"factory": "./class",
|
||||
"description": "Create a class.",
|
||||
"schema": "./class/schema.json"
|
||||
},
|
||||
"component": {
|
||||
"aliases": ["c"],
|
||||
"factory": "./component",
|
||||
"description": "Create an Angular component.",
|
||||
"schema": "./component/schema.json"
|
||||
},
|
||||
"directive": {
|
||||
"aliases": ["d"],
|
||||
"factory": "./directive",
|
||||
"description": "Create an Angular directive.",
|
||||
"schema": "./directive/schema.json"
|
||||
},
|
||||
"enum": {
|
||||
"aliases": ["e"],
|
||||
"factory": "./enum",
|
||||
"description": "Create an enumeration.",
|
||||
"schema": "./enum/schema.json"
|
||||
},
|
||||
"guard": {
|
||||
"aliases": ["g"],
|
||||
"factory": "./guard",
|
||||
"description": "Create a guard.",
|
||||
"schema": "./guard/schema.json"
|
||||
},
|
||||
"resolver": {
|
||||
"aliases": ["r"],
|
||||
"factory": "./resolver",
|
||||
"description": "Create a resolver.",
|
||||
"schema": "./resolver/schema.json"
|
||||
},
|
||||
"interceptor": {
|
||||
"factory": "./interceptor",
|
||||
"description": "Create an interceptor.",
|
||||
"schema": "./interceptor/schema.json"
|
||||
},
|
||||
"interface": {
|
||||
"aliases": ["i"],
|
||||
"factory": "./interface",
|
||||
"description": "Create an interface.",
|
||||
"schema": "./interface/schema.json"
|
||||
},
|
||||
"module": {
|
||||
"aliases": ["m"],
|
||||
"factory": "./module",
|
||||
"description": "Create an Angular module.",
|
||||
"schema": "./module/schema.json"
|
||||
},
|
||||
"pipe": {
|
||||
"aliases": ["p"],
|
||||
"factory": "./pipe",
|
||||
"description": "Create an Angular pipe.",
|
||||
"schema": "./pipe/schema.json"
|
||||
},
|
||||
"service": {
|
||||
"aliases": ["s"],
|
||||
"factory": "./service",
|
||||
"description": "Create an Angular service.",
|
||||
"schema": "./service/schema.json"
|
||||
},
|
||||
"server": {
|
||||
"factory": "./server",
|
||||
"description": "Create an Angular server app.",
|
||||
"schema": "./server/schema.json",
|
||||
"hidden": true
|
||||
},
|
||||
"ssr": {
|
||||
"factory": "./ssr",
|
||||
"description": "Adds SSR to an Angular app.",
|
||||
"schema": "./ssr/schema.json",
|
||||
"hidden": true
|
||||
},
|
||||
"app-shell": {
|
||||
"factory": "./app-shell",
|
||||
"description": "Create an application shell.",
|
||||
"schema": "./app-shell/schema.json"
|
||||
},
|
||||
"library": {
|
||||
"aliases": ["lib"],
|
||||
"factory": "./library",
|
||||
"schema": "./library/schema.json",
|
||||
"description": "Generate a library project for Angular."
|
||||
},
|
||||
"web-worker": {
|
||||
"factory": "./web-worker",
|
||||
"schema": "./web-worker/schema.json",
|
||||
"description": "Create a Web Worker."
|
||||
},
|
||||
"environments": {
|
||||
"factory": "./environments",
|
||||
"schema": "./environments/schema.json",
|
||||
"description": "Generate project environment files."
|
||||
},
|
||||
"config": {
|
||||
"factory": "./config",
|
||||
"schema": "./config/schema.json",
|
||||
"description": "Generates a configuration file."
|
||||
}
|
||||
}
|
||||
}
|
6
my-app/node_modules/@schematics/angular/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.__style__.template
generated
vendored
Executable file
6
my-app/node_modules/@schematics/angular/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.__style__.template
generated
vendored
Executable file
|
@ -0,0 +1,6 @@
|
|||
<% if(displayBlock){ if(style != 'sass') { %>:host {
|
||||
display: block;
|
||||
}
|
||||
<% } else { %>\:host
|
||||
display: block;
|
||||
<% }} %>
|
1
my-app/node_modules/@schematics/angular/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.html.template
generated
vendored
Executable file
1
my-app/node_modules/@schematics/angular/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.html.template
generated
vendored
Executable file
|
@ -0,0 +1 @@
|
|||
<p><%= dasherize(name) %> works!</p>
|
23
my-app/node_modules/@schematics/angular/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.spec.ts.template
generated
vendored
Executable file
23
my-app/node_modules/@schematics/angular/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.spec.ts.template
generated
vendored
Executable file
|
@ -0,0 +1,23 @@
|
|||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { <%= classify(name) %><%= classify(type) %> } from './<%= dasherize(name) %><%= type ? '.' + dasherize(type): '' %>';
|
||||
|
||||
describe('<%= classify(name) %><%= classify(type) %>', () => {
|
||||
let component: <%= classify(name) %><%= classify(type) %>;
|
||||
let fixture: ComponentFixture<<%= classify(name) %><%= classify(type) %>>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
<%= standalone ? 'imports' : 'declarations' %>: [<%= classify(name) %><%= classify(type) %>]
|
||||
})
|
||||
.compileComponents();
|
||||
|
||||
fixture = TestBed.createComponent(<%= classify(name) %><%= classify(type) %>);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
24
my-app/node_modules/@schematics/angular/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.ts.template
generated
vendored
Executable file
24
my-app/node_modules/@schematics/angular/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.ts.template
generated
vendored
Executable file
|
@ -0,0 +1,24 @@
|
|||
import { <% if(changeDetection !== 'Default') { %>ChangeDetectionStrategy, <% }%>Component<% if(!!viewEncapsulation) { %>, ViewEncapsulation<% }%> } from '@angular/core';
|
||||
|
||||
@Component({<% if(!skipSelector) {%>
|
||||
selector: '<%= selector %>',<%}%><% if(standalone) {%>
|
||||
standalone: true,
|
||||
imports: [],<%}%><% if(inlineTemplate) { %>
|
||||
template: `
|
||||
<p>
|
||||
<%= dasherize(name) %> works!
|
||||
</p>
|
||||
`<% } else { %>
|
||||
templateUrl: './<%= dasherize(name) %><%= type ? '.' + dasherize(type): '' %>.html'<% } if(inlineStyle) { %>,
|
||||
styles: `<% if(displayBlock){ %>
|
||||
:host {
|
||||
display: block;
|
||||
}
|
||||
<% } %>`<% } else if (style !== 'none') { %>,
|
||||
styleUrl: './<%= dasherize(name) %><%= type ? '.' + dasherize(type): '' %>.<%= style %>'<% } %><% if(!!viewEncapsulation) { %>,
|
||||
encapsulation: ViewEncapsulation.<%= viewEncapsulation %><% } if (changeDetection !== 'Default') { %>,
|
||||
changeDetection: ChangeDetectionStrategy.<%= changeDetection %><% } %>
|
||||
})
|
||||
export class <%= classify(name) %><%= classify(type) %> {
|
||||
|
||||
}
|
10
my-app/node_modules/@schematics/angular/component/index.d.ts
generated
vendored
Executable file
10
my-app/node_modules/@schematics/angular/component/index.d.ts
generated
vendored
Executable file
|
@ -0,0 +1,10 @@
|
|||
/**
|
||||
* @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
|
||||
*/
|
||||
import { Rule } from '@angular-devkit/schematics';
|
||||
import { Schema as ComponentOptions } from './schema';
|
||||
export default function (options: ComponentOptions): Rule;
|
75
my-app/node_modules/@schematics/angular/component/index.js
generated
vendored
Executable file
75
my-app/node_modules/@schematics/angular/component/index.js
generated
vendored
Executable file
|
@ -0,0 +1,75 @@
|
|||
"use strict";
|
||||
/**
|
||||
* @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
|
||||
*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const schematics_1 = require("@angular-devkit/schematics");
|
||||
const add_declaration_to_ng_module_1 = require("../utility/add-declaration-to-ng-module");
|
||||
const find_module_1 = require("../utility/find-module");
|
||||
const parse_name_1 = require("../utility/parse-name");
|
||||
const validation_1 = require("../utility/validation");
|
||||
const workspace_1 = require("../utility/workspace");
|
||||
const schema_1 = require("./schema");
|
||||
function buildSelector(options, projectPrefix) {
|
||||
let selector = schematics_1.strings.dasherize(options.name);
|
||||
if (options.prefix) {
|
||||
selector = `${options.prefix}-${selector}`;
|
||||
}
|
||||
else if (options.prefix === undefined && projectPrefix) {
|
||||
selector = `${projectPrefix}-${selector}`;
|
||||
}
|
||||
return selector;
|
||||
}
|
||||
function default_1(options) {
|
||||
return async (host) => {
|
||||
const workspace = await (0, workspace_1.getWorkspace)(host);
|
||||
const project = workspace.projects.get(options.project);
|
||||
if (!project) {
|
||||
throw new schematics_1.SchematicsException(`Project "${options.project}" does not exist.`);
|
||||
}
|
||||
if (options.path === undefined) {
|
||||
options.path = (0, workspace_1.buildDefaultPath)(project);
|
||||
}
|
||||
options.module = (0, find_module_1.findModuleFromOptions)(host, options);
|
||||
const parsedPath = (0, parse_name_1.parseName)(options.path, options.name);
|
||||
options.name = parsedPath.name;
|
||||
options.path = parsedPath.path;
|
||||
options.selector =
|
||||
options.selector || buildSelector(options, (project && project.prefix) || '');
|
||||
(0, validation_1.validateHtmlSelector)(options.selector);
|
||||
const skipStyleFile = options.inlineStyle || options.style === schema_1.Style.None;
|
||||
const templateSource = (0, schematics_1.apply)((0, schematics_1.url)('./files'), [
|
||||
options.skipTests ? (0, schematics_1.filter)((path) => !path.endsWith('.spec.ts.template')) : (0, schematics_1.noop)(),
|
||||
skipStyleFile ? (0, schematics_1.filter)((path) => !path.endsWith('.__style__.template')) : (0, schematics_1.noop)(),
|
||||
options.inlineTemplate ? (0, schematics_1.filter)((path) => !path.endsWith('.html.template')) : (0, schematics_1.noop)(),
|
||||
(0, schematics_1.applyTemplates)({
|
||||
...schematics_1.strings,
|
||||
'if-flat': (s) => (options.flat ? '' : s),
|
||||
...options,
|
||||
}),
|
||||
!options.type
|
||||
? (0, schematics_1.forEach)(((file) => {
|
||||
return file.path.includes('..')
|
||||
? {
|
||||
content: file.content,
|
||||
path: file.path.replace('..', '.'),
|
||||
}
|
||||
: file;
|
||||
}))
|
||||
: (0, schematics_1.noop)(),
|
||||
(0, schematics_1.move)(parsedPath.path),
|
||||
]);
|
||||
return (0, schematics_1.chain)([
|
||||
(0, add_declaration_to_ng_module_1.addDeclarationToNgModule)({
|
||||
type: 'component',
|
||||
...options,
|
||||
}),
|
||||
(0, schematics_1.mergeWith)(templateSource),
|
||||
]);
|
||||
};
|
||||
}
|
||||
exports.default = default_1;
|
111
my-app/node_modules/@schematics/angular/component/schema.d.ts
generated
vendored
Executable file
111
my-app/node_modules/@schematics/angular/component/schema.d.ts
generated
vendored
Executable file
|
@ -0,0 +1,111 @@
|
|||
/**
|
||||
* Creates a new, generic component definition in the given project.
|
||||
*/
|
||||
export interface Schema {
|
||||
/**
|
||||
* The change detection strategy to use in the new component.
|
||||
*/
|
||||
changeDetection?: ChangeDetection;
|
||||
/**
|
||||
* Specifies if the style will contain `:host { display: block; }`.
|
||||
*/
|
||||
displayBlock?: boolean;
|
||||
/**
|
||||
* The declaring NgModule exports this component.
|
||||
*/
|
||||
export?: boolean;
|
||||
/**
|
||||
* Create the new files at the top level of the current project.
|
||||
*/
|
||||
flat?: boolean;
|
||||
/**
|
||||
* Include styles inline in the component.ts file. Only CSS styles can be included inline.
|
||||
* By default, an external styles file is created and referenced in the component.ts file.
|
||||
*/
|
||||
inlineStyle?: boolean;
|
||||
/**
|
||||
* Include template inline in the component.ts file. By default, an external template file
|
||||
* is created and referenced in the component.ts file.
|
||||
*/
|
||||
inlineTemplate?: boolean;
|
||||
/**
|
||||
* The declaring NgModule.
|
||||
*/
|
||||
module?: string;
|
||||
/**
|
||||
* The name of the component.
|
||||
*/
|
||||
name: string;
|
||||
/**
|
||||
* The path at which to create the component file, relative to the current workspace.
|
||||
* Default is a folder with the same name as the component in the project root.
|
||||
*/
|
||||
path?: string;
|
||||
/**
|
||||
* The prefix to apply to the generated component selector.
|
||||
*/
|
||||
prefix?: string;
|
||||
/**
|
||||
* The name of the project.
|
||||
*/
|
||||
project: string;
|
||||
/**
|
||||
* The HTML selector to use for this component.
|
||||
*/
|
||||
selector?: string;
|
||||
/**
|
||||
* Do not import this component into the owning NgModule.
|
||||
*/
|
||||
skipImport?: boolean;
|
||||
/**
|
||||
* Specifies if the component should have a selector or not.
|
||||
*/
|
||||
skipSelector?: boolean;
|
||||
/**
|
||||
* Do not create "spec.ts" test files for the new component.
|
||||
*/
|
||||
skipTests?: boolean;
|
||||
/**
|
||||
* Whether the generated component is standalone.
|
||||
*/
|
||||
standalone?: boolean;
|
||||
/**
|
||||
* The file extension or preprocessor to use for style files, or 'none' to skip generating
|
||||
* the style file.
|
||||
*/
|
||||
style?: Style;
|
||||
/**
|
||||
* Adds a developer-defined type to the filename, in the format "name.type.ts".
|
||||
*/
|
||||
type?: string;
|
||||
/**
|
||||
* The view encapsulation strategy to use in the new component.
|
||||
*/
|
||||
viewEncapsulation?: ViewEncapsulation;
|
||||
}
|
||||
/**
|
||||
* The change detection strategy to use in the new component.
|
||||
*/
|
||||
export declare enum ChangeDetection {
|
||||
Default = "Default",
|
||||
OnPush = "OnPush"
|
||||
}
|
||||
/**
|
||||
* The file extension or preprocessor to use for style files, or 'none' to skip generating
|
||||
* the style file.
|
||||
*/
|
||||
export declare enum Style {
|
||||
Css = "css",
|
||||
Less = "less",
|
||||
None = "none",
|
||||
Sass = "sass",
|
||||
Scss = "scss"
|
||||
}
|
||||
/**
|
||||
* The view encapsulation strategy to use in the new component.
|
||||
*/
|
||||
export declare enum ViewEncapsulation {
|
||||
Emulated = "Emulated",
|
||||
None = "None",
|
||||
ShadowDom = "ShadowDom"
|
||||
}
|
34
my-app/node_modules/@schematics/angular/component/schema.js
generated
vendored
Executable file
34
my-app/node_modules/@schematics/angular/component/schema.js
generated
vendored
Executable file
|
@ -0,0 +1,34 @@
|
|||
"use strict";
|
||||
// THIS FILE IS AUTOMATICALLY GENERATED. TO UPDATE THIS FILE YOU NEED TO CHANGE THE
|
||||
// CORRESPONDING JSON SCHEMA FILE, THEN RUN devkit-admin build (or bazel build ...).
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.ViewEncapsulation = exports.Style = exports.ChangeDetection = void 0;
|
||||
/**
|
||||
* The change detection strategy to use in the new component.
|
||||
*/
|
||||
var ChangeDetection;
|
||||
(function (ChangeDetection) {
|
||||
ChangeDetection["Default"] = "Default";
|
||||
ChangeDetection["OnPush"] = "OnPush";
|
||||
})(ChangeDetection || (exports.ChangeDetection = ChangeDetection = {}));
|
||||
/**
|
||||
* The file extension or preprocessor to use for style files, or 'none' to skip generating
|
||||
* the style file.
|
||||
*/
|
||||
var Style;
|
||||
(function (Style) {
|
||||
Style["Css"] = "css";
|
||||
Style["Less"] = "less";
|
||||
Style["None"] = "none";
|
||||
Style["Sass"] = "sass";
|
||||
Style["Scss"] = "scss";
|
||||
})(Style || (exports.Style = Style = {}));
|
||||
/**
|
||||
* The view encapsulation strategy to use in the new component.
|
||||
*/
|
||||
var ViewEncapsulation;
|
||||
(function (ViewEncapsulation) {
|
||||
ViewEncapsulation["Emulated"] = "Emulated";
|
||||
ViewEncapsulation["None"] = "None";
|
||||
ViewEncapsulation["ShadowDom"] = "ShadowDom";
|
||||
})(ViewEncapsulation || (exports.ViewEncapsulation = ViewEncapsulation = {}));
|
136
my-app/node_modules/@schematics/angular/component/schema.json
generated
vendored
Executable file
136
my-app/node_modules/@schematics/angular/component/schema.json
generated
vendored
Executable file
|
@ -0,0 +1,136 @@
|
|||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema",
|
||||
"$id": "SchematicsAngularComponent",
|
||||
"title": "Angular Component Options Schema",
|
||||
"type": "object",
|
||||
"description": "Creates a new, generic component definition in the given project.",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"path": {
|
||||
"type": "string",
|
||||
"format": "path",
|
||||
"$default": {
|
||||
"$source": "workingDirectory"
|
||||
},
|
||||
"description": "The path at which to create the component file, relative to the current workspace. Default is a folder with the same name as the component in the project root.",
|
||||
"visible": false
|
||||
},
|
||||
"project": {
|
||||
"type": "string",
|
||||
"description": "The name of the project.",
|
||||
"$default": {
|
||||
"$source": "projectName"
|
||||
}
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "The name of the component.",
|
||||
"$default": {
|
||||
"$source": "argv",
|
||||
"index": 0
|
||||
},
|
||||
"x-prompt": "What name would you like to use for the component?"
|
||||
},
|
||||
"displayBlock": {
|
||||
"description": "Specifies if the style will contain `:host { display: block; }`.",
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"alias": "b"
|
||||
},
|
||||
"inlineStyle": {
|
||||
"description": "Include styles inline in the component.ts file. Only CSS styles can be included inline. By default, an external styles file is created and referenced in the component.ts file.",
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"alias": "s",
|
||||
"x-user-analytics": "ep.ng_inline_style"
|
||||
},
|
||||
"inlineTemplate": {
|
||||
"description": "Include template inline in the component.ts file. By default, an external template file is created and referenced in the component.ts file.",
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"alias": "t",
|
||||
"x-user-analytics": "ep.ng_inline_template"
|
||||
},
|
||||
"standalone": {
|
||||
"description": "Whether the generated component is standalone.",
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"x-user-analytics": "ep.ng_standalone"
|
||||
},
|
||||
"viewEncapsulation": {
|
||||
"description": "The view encapsulation strategy to use in the new component.",
|
||||
"enum": ["Emulated", "None", "ShadowDom"],
|
||||
"type": "string",
|
||||
"alias": "v"
|
||||
},
|
||||
"changeDetection": {
|
||||
"description": "The change detection strategy to use in the new component.",
|
||||
"enum": ["Default", "OnPush"],
|
||||
"type": "string",
|
||||
"default": "Default",
|
||||
"alias": "c"
|
||||
},
|
||||
"prefix": {
|
||||
"type": "string",
|
||||
"description": "The prefix to apply to the generated component selector.",
|
||||
"alias": "p",
|
||||
"oneOf": [
|
||||
{
|
||||
"maxLength": 0
|
||||
},
|
||||
{
|
||||
"minLength": 1,
|
||||
"format": "html-selector"
|
||||
}
|
||||
]
|
||||
},
|
||||
"style": {
|
||||
"description": "The file extension or preprocessor to use for style files, or 'none' to skip generating the style file.",
|
||||
"type": "string",
|
||||
"default": "css",
|
||||
"enum": ["css", "scss", "sass", "less", "none"],
|
||||
"x-user-analytics": "ep.ng_style"
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"description": "Adds a developer-defined type to the filename, in the format \"name.type.ts\".",
|
||||
"default": "Component"
|
||||
},
|
||||
"skipTests": {
|
||||
"type": "boolean",
|
||||
"description": "Do not create \"spec.ts\" test files for the new component.",
|
||||
"default": false
|
||||
},
|
||||
"flat": {
|
||||
"type": "boolean",
|
||||
"description": "Create the new files at the top level of the current project.",
|
||||
"default": false
|
||||
},
|
||||
"skipImport": {
|
||||
"type": "boolean",
|
||||
"description": "Do not import this component into the owning NgModule.",
|
||||
"default": false
|
||||
},
|
||||
"selector": {
|
||||
"type": "string",
|
||||
"format": "html-selector",
|
||||
"description": "The HTML selector to use for this component."
|
||||
},
|
||||
"skipSelector": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Specifies if the component should have a selector or not."
|
||||
},
|
||||
"module": {
|
||||
"type": "string",
|
||||
"description": "The declaring NgModule.",
|
||||
"alias": "m"
|
||||
},
|
||||
"export": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "The declaring NgModule exports this component."
|
||||
}
|
||||
},
|
||||
"required": ["name", "project"]
|
||||
}
|
16
my-app/node_modules/@schematics/angular/config/files/.browserslistrc.template
generated
vendored
Executable file
16
my-app/node_modules/@schematics/angular/config/files/.browserslistrc.template
generated
vendored
Executable file
|
@ -0,0 +1,16 @@
|
|||
# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
|
||||
# For additional information regarding the format and rule options, please see:
|
||||
# https://github.com/browserslist/browserslist#queries
|
||||
|
||||
# For the full list of supported browsers by the Angular framework, please see:
|
||||
# https://angular.io/guide/browser-support
|
||||
|
||||
# You can see what browsers were selected by your queries by running:
|
||||
# npx browserslist
|
||||
|
||||
last 2 Chrome versions
|
||||
last 1 Firefox version
|
||||
last 2 Edge major versions
|
||||
last 2 Safari major versions
|
||||
last 2 iOS major versions
|
||||
Firefox ESR
|
39
my-app/node_modules/@schematics/angular/config/files/karma.conf.js.template
generated
vendored
Executable file
39
my-app/node_modules/@schematics/angular/config/files/karma.conf.js.template
generated
vendored
Executable file
|
@ -0,0 +1,39 @@
|
|||
// Karma configuration file, see link for more information
|
||||
// https://karma-runner.github.io/1.0/config/configuration-file.html
|
||||
|
||||
module.exports = function (config) {
|
||||
config.set({
|
||||
basePath: '',
|
||||
frameworks: ['jasmine', '@angular-devkit/build-angular'],
|
||||
plugins: [
|
||||
require('karma-jasmine'),
|
||||
require('karma-chrome-launcher'),
|
||||
require('karma-jasmine-html-reporter'),
|
||||
require('karma-coverage'),
|
||||
require('@angular-devkit/build-angular/plugins/karma')
|
||||
],
|
||||
client: {
|
||||
jasmine: {
|
||||
// you can add configuration options for Jasmine here
|
||||
// the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
|
||||
// for example, you can disable the random execution with `random: false`
|
||||
// or set a specific seed with `seed: 4321`
|
||||
},
|
||||
clearContext: false // leave Jasmine Spec Runner output visible in browser
|
||||
},
|
||||
jasmineHtmlReporter: {
|
||||
suppressAll: true // removes the duplicated traces
|
||||
},
|
||||
coverageReporter: {
|
||||
dir: require('path').join(__dirname, '<%= relativePathToWorkspaceRoot %>/coverage/<%= folderName %>'),
|
||||
subdir: '.',
|
||||
reporters: [
|
||||
{ type: 'html' },
|
||||
{ type: 'text-summary' }
|
||||
]
|
||||
},
|
||||
reporters: ['progress', 'kjhtml'],
|
||||
browsers: ['Chrome'],
|
||||
restartOnFileChange: true
|
||||
});
|
||||
};
|
10
my-app/node_modules/@schematics/angular/config/index.d.ts
generated
vendored
Executable file
10
my-app/node_modules/@schematics/angular/config/index.d.ts
generated
vendored
Executable file
|
@ -0,0 +1,10 @@
|
|||
/**
|
||||
* @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
|
||||
*/
|
||||
import { Rule } from '@angular-devkit/schematics';
|
||||
import { Schema as ConfigOptions } from './schema';
|
||||
export default function (options: ConfigOptions): Rule;
|
70
my-app/node_modules/@schematics/angular/config/index.js
generated
vendored
Executable file
70
my-app/node_modules/@schematics/angular/config/index.js
generated
vendored
Executable file
|
@ -0,0 +1,70 @@
|
|||
"use strict";
|
||||
/**
|
||||
* @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
|
||||
*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const schematics_1 = require("@angular-devkit/schematics");
|
||||
const utility_1 = require("@schematics/angular/utility");
|
||||
const path_1 = require("path");
|
||||
const paths_1 = require("../utility/paths");
|
||||
const schema_1 = require("./schema");
|
||||
function default_1(options) {
|
||||
switch (options.type) {
|
||||
case schema_1.Type.Karma:
|
||||
return addKarmaConfig(options);
|
||||
case schema_1.Type.Browserslist:
|
||||
return addBrowserslistConfig(options);
|
||||
default:
|
||||
throw new schematics_1.SchematicsException(`"${options.type}" is an unknown configuration file type.`);
|
||||
}
|
||||
}
|
||||
exports.default = default_1;
|
||||
function addBrowserslistConfig(options) {
|
||||
return async (host) => {
|
||||
const workspace = await (0, utility_1.readWorkspace)(host);
|
||||
const project = workspace.projects.get(options.project);
|
||||
if (!project) {
|
||||
throw new schematics_1.SchematicsException(`Project name "${options.project}" doesn't not exist.`);
|
||||
}
|
||||
return (0, schematics_1.mergeWith)((0, schematics_1.apply)((0, schematics_1.url)('./files'), [
|
||||
(0, schematics_1.filter)((p) => p.endsWith('.browserslistrc.template')),
|
||||
(0, schematics_1.applyTemplates)({}),
|
||||
(0, schematics_1.move)(project.root),
|
||||
]));
|
||||
};
|
||||
}
|
||||
function addKarmaConfig(options) {
|
||||
return (0, utility_1.updateWorkspace)((workspace) => {
|
||||
const project = workspace.projects.get(options.project);
|
||||
if (!project) {
|
||||
throw new schematics_1.SchematicsException(`Project name "${options.project}" doesn't not exist.`);
|
||||
}
|
||||
const testTarget = project.targets.get('test');
|
||||
if (!testTarget) {
|
||||
throw new schematics_1.SchematicsException(`No "test" target found for project "${options.project}".` +
|
||||
' A "test" target is required to generate a karma configuration.');
|
||||
}
|
||||
if (testTarget.builder !== utility_1.AngularBuilder.Karma) {
|
||||
throw new schematics_1.SchematicsException(`Cannot add a karma configuration as builder for "test" target in project does not use "${utility_1.AngularBuilder.Karma}".`);
|
||||
}
|
||||
testTarget.options ??= {};
|
||||
testTarget.options.karmaConfig = path_1.posix.join(project.root, 'karma.conf.js');
|
||||
// If scoped project (i.e. "@foo/bar"), convert dir to "foo/bar".
|
||||
let folderName = options.project.startsWith('@') ? options.project.slice(1) : options.project;
|
||||
if (/[A-Z]/.test(folderName)) {
|
||||
folderName = schematics_1.strings.dasherize(folderName);
|
||||
}
|
||||
return (0, schematics_1.mergeWith)((0, schematics_1.apply)((0, schematics_1.url)('./files'), [
|
||||
(0, schematics_1.filter)((p) => p.endsWith('karma.conf.js.template')),
|
||||
(0, schematics_1.applyTemplates)({
|
||||
relativePathToWorkspaceRoot: (0, paths_1.relativePathToWorkspaceRoot)(project.root),
|
||||
folderName,
|
||||
}),
|
||||
(0, schematics_1.move)(project.root),
|
||||
]));
|
||||
});
|
||||
}
|
20
my-app/node_modules/@schematics/angular/config/schema.d.ts
generated
vendored
Executable file
20
my-app/node_modules/@schematics/angular/config/schema.d.ts
generated
vendored
Executable file
|
@ -0,0 +1,20 @@
|
|||
/**
|
||||
* Generates a configuration file in the given project.
|
||||
*/
|
||||
export interface Schema {
|
||||
/**
|
||||
* The name of the project.
|
||||
*/
|
||||
project: string;
|
||||
/**
|
||||
* Specifies which type of configuration file to create.
|
||||
*/
|
||||
type: Type;
|
||||
}
|
||||
/**
|
||||
* Specifies which type of configuration file to create.
|
||||
*/
|
||||
export declare enum Type {
|
||||
Browserslist = "browserslist",
|
||||
Karma = "karma"
|
||||
}
|
13
my-app/node_modules/@schematics/angular/config/schema.js
generated
vendored
Executable file
13
my-app/node_modules/@schematics/angular/config/schema.js
generated
vendored
Executable file
|
@ -0,0 +1,13 @@
|
|||
"use strict";
|
||||
// THIS FILE IS AUTOMATICALLY GENERATED. TO UPDATE THIS FILE YOU NEED TO CHANGE THE
|
||||
// CORRESPONDING JSON SCHEMA FILE, THEN RUN devkit-admin build (or bazel build ...).
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.Type = void 0;
|
||||
/**
|
||||
* Specifies which type of configuration file to create.
|
||||
*/
|
||||
var Type;
|
||||
(function (Type) {
|
||||
Type["Browserslist"] = "browserslist";
|
||||
Type["Karma"] = "karma";
|
||||
})(Type || (exports.Type = Type = {}));
|
28
my-app/node_modules/@schematics/angular/config/schema.json
generated
vendored
Executable file
28
my-app/node_modules/@schematics/angular/config/schema.json
generated
vendored
Executable file
|
@ -0,0 +1,28 @@
|
|||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema",
|
||||
"$id": "SchematicsAngularConfig",
|
||||
"title": "Angular Config File Options Schema",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"description": "Generates a configuration file in the given project.",
|
||||
"properties": {
|
||||
"project": {
|
||||
"type": "string",
|
||||
"description": "The name of the project.",
|
||||
"$default": {
|
||||
"$source": "projectName"
|
||||
}
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"description": "Specifies which type of configuration file to create.",
|
||||
"enum": ["karma", "browserslist"],
|
||||
"x-prompt": "Which type of configuration file would you like to create?",
|
||||
"$default": {
|
||||
"$source": "argv",
|
||||
"index": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["project", "type"]
|
||||
}
|
8
my-app/node_modules/@schematics/angular/directive/files/__name@dasherize@if-flat__/__name@dasherize__.directive.spec.ts.template
generated
vendored
Executable file
8
my-app/node_modules/@schematics/angular/directive/files/__name@dasherize@if-flat__/__name@dasherize__.directive.spec.ts.template
generated
vendored
Executable file
|
@ -0,0 +1,8 @@
|
|||
import { <%= classify(name) %>Directive } from './<%= dasherize(name) %>.directive';
|
||||
|
||||
describe('<%= classify(name) %>Directive', () => {
|
||||
it('should create an instance', () => {
|
||||
const directive = new <%= classify(name) %>Directive();
|
||||
expect(directive).toBeTruthy();
|
||||
});
|
||||
});
|
11
my-app/node_modules/@schematics/angular/directive/files/__name@dasherize@if-flat__/__name@dasherize__.directive.ts.template
generated
vendored
Executable file
11
my-app/node_modules/@schematics/angular/directive/files/__name@dasherize@if-flat__/__name@dasherize__.directive.ts.template
generated
vendored
Executable file
|
@ -0,0 +1,11 @@
|
|||
import { Directive } from '@angular/core';
|
||||
|
||||
@Directive({
|
||||
selector: '[<%= selector %>]'<% if(standalone) {%>,
|
||||
standalone: true<%}%>
|
||||
})
|
||||
export class <%= classify(name) %>Directive {
|
||||
|
||||
constructor() { }
|
||||
|
||||
}
|
10
my-app/node_modules/@schematics/angular/directive/index.d.ts
generated
vendored
Executable file
10
my-app/node_modules/@schematics/angular/directive/index.d.ts
generated
vendored
Executable file
|
@ -0,0 +1,10 @@
|
|||
/**
|
||||
* @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
|
||||
*/
|
||||
import { Rule } from '@angular-devkit/schematics';
|
||||
import { Schema as DirectiveOptions } from './schema';
|
||||
export default function (options: DirectiveOptions): Rule;
|
60
my-app/node_modules/@schematics/angular/directive/index.js
generated
vendored
Executable file
60
my-app/node_modules/@schematics/angular/directive/index.js
generated
vendored
Executable file
|
@ -0,0 +1,60 @@
|
|||
"use strict";
|
||||
/**
|
||||
* @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
|
||||
*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const schematics_1 = require("@angular-devkit/schematics");
|
||||
const add_declaration_to_ng_module_1 = require("../utility/add-declaration-to-ng-module");
|
||||
const find_module_1 = require("../utility/find-module");
|
||||
const parse_name_1 = require("../utility/parse-name");
|
||||
const validation_1 = require("../utility/validation");
|
||||
const workspace_1 = require("../utility/workspace");
|
||||
function buildSelector(options, projectPrefix) {
|
||||
let selector = options.name;
|
||||
if (options.prefix) {
|
||||
selector = `${options.prefix}-${selector}`;
|
||||
}
|
||||
else if (options.prefix === undefined && projectPrefix) {
|
||||
selector = `${projectPrefix}-${selector}`;
|
||||
}
|
||||
return schematics_1.strings.camelize(selector);
|
||||
}
|
||||
function default_1(options) {
|
||||
return async (host) => {
|
||||
const workspace = await (0, workspace_1.getWorkspace)(host);
|
||||
const project = workspace.projects.get(options.project);
|
||||
if (!project) {
|
||||
throw new schematics_1.SchematicsException(`Project "${options.project}" does not exist.`);
|
||||
}
|
||||
if (options.path === undefined) {
|
||||
options.path = (0, workspace_1.buildDefaultPath)(project);
|
||||
}
|
||||
options.module = (0, find_module_1.findModuleFromOptions)(host, options);
|
||||
const parsedPath = (0, parse_name_1.parseName)(options.path, options.name);
|
||||
options.name = parsedPath.name;
|
||||
options.path = parsedPath.path;
|
||||
options.selector = options.selector || buildSelector(options, project.prefix || '');
|
||||
(0, validation_1.validateHtmlSelector)(options.selector);
|
||||
const templateSource = (0, schematics_1.apply)((0, schematics_1.url)('./files'), [
|
||||
options.skipTests ? (0, schematics_1.filter)((path) => !path.endsWith('.spec.ts.template')) : (0, schematics_1.noop)(),
|
||||
(0, schematics_1.applyTemplates)({
|
||||
...schematics_1.strings,
|
||||
'if-flat': (s) => (options.flat ? '' : s),
|
||||
...options,
|
||||
}),
|
||||
(0, schematics_1.move)(parsedPath.path),
|
||||
]);
|
||||
return (0, schematics_1.chain)([
|
||||
(0, add_declaration_to_ng_module_1.addDeclarationToNgModule)({
|
||||
type: 'directive',
|
||||
...options,
|
||||
}),
|
||||
(0, schematics_1.mergeWith)(templateSource),
|
||||
]);
|
||||
};
|
||||
}
|
||||
exports.default = default_1;
|
50
my-app/node_modules/@schematics/angular/directive/schema.d.ts
generated
vendored
Executable file
50
my-app/node_modules/@schematics/angular/directive/schema.d.ts
generated
vendored
Executable file
|
@ -0,0 +1,50 @@
|
|||
/**
|
||||
* Creates a new, generic directive definition in the given project.
|
||||
*/
|
||||
export interface Schema {
|
||||
/**
|
||||
* The declaring NgModule exports this directive.
|
||||
*/
|
||||
export?: boolean;
|
||||
/**
|
||||
* When true (the default), creates the new files at the top level of the current project.
|
||||
*/
|
||||
flat?: boolean;
|
||||
/**
|
||||
* The declaring NgModule.
|
||||
*/
|
||||
module?: string;
|
||||
/**
|
||||
* The name of the new directive.
|
||||
*/
|
||||
name: string;
|
||||
/**
|
||||
* The path at which to create the interface that defines the directive, relative to the
|
||||
* workspace root.
|
||||
*/
|
||||
path?: string;
|
||||
/**
|
||||
* A prefix to apply to generated selectors.
|
||||
*/
|
||||
prefix?: string;
|
||||
/**
|
||||
* The name of the project.
|
||||
*/
|
||||
project: string;
|
||||
/**
|
||||
* The HTML selector to use for this directive.
|
||||
*/
|
||||
selector?: string;
|
||||
/**
|
||||
* Do not import this directive into the owning NgModule.
|
||||
*/
|
||||
skipImport?: boolean;
|
||||
/**
|
||||
* Do not create "spec.ts" test files for the new class.
|
||||
*/
|
||||
skipTests?: boolean;
|
||||
/**
|
||||
* Whether the generated directive is standalone.
|
||||
*/
|
||||
standalone?: boolean;
|
||||
}
|
4
my-app/node_modules/@schematics/angular/directive/schema.js
generated
vendored
Executable file
4
my-app/node_modules/@schematics/angular/directive/schema.js
generated
vendored
Executable file
|
@ -0,0 +1,4 @@
|
|||
"use strict";
|
||||
// THIS FILE IS AUTOMATICALLY GENERATED. TO UPDATE THIS FILE YOU NEED TO CHANGE THE
|
||||
// CORRESPONDING JSON SCHEMA FILE, THEN RUN devkit-admin build (or bazel build ...).
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
86
my-app/node_modules/@schematics/angular/directive/schema.json
generated
vendored
Executable file
86
my-app/node_modules/@schematics/angular/directive/schema.json
generated
vendored
Executable file
|
@ -0,0 +1,86 @@
|
|||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema",
|
||||
"$id": "SchematicsAngularDirective",
|
||||
"title": "Angular Directive Options Schema",
|
||||
"type": "object",
|
||||
"description": "Creates a new, generic directive definition in the given project.",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "The name of the new directive.",
|
||||
"$default": {
|
||||
"$source": "argv",
|
||||
"index": 0
|
||||
},
|
||||
"x-prompt": "What name would you like to use for the directive?"
|
||||
},
|
||||
"path": {
|
||||
"type": "string",
|
||||
"format": "path",
|
||||
"$default": {
|
||||
"$source": "workingDirectory"
|
||||
},
|
||||
"description": "The path at which to create the interface that defines the directive, relative to the workspace root.",
|
||||
"visible": false
|
||||
},
|
||||
"project": {
|
||||
"type": "string",
|
||||
"description": "The name of the project.",
|
||||
"$default": {
|
||||
"$source": "projectName"
|
||||
}
|
||||
},
|
||||
"prefix": {
|
||||
"type": "string",
|
||||
"description": "A prefix to apply to generated selectors.",
|
||||
"alias": "p",
|
||||
"oneOf": [
|
||||
{
|
||||
"maxLength": 0
|
||||
},
|
||||
{
|
||||
"minLength": 1,
|
||||
"format": "html-selector"
|
||||
}
|
||||
]
|
||||
},
|
||||
"skipTests": {
|
||||
"type": "boolean",
|
||||
"description": "Do not create \"spec.ts\" test files for the new class.",
|
||||
"default": false
|
||||
},
|
||||
"skipImport": {
|
||||
"type": "boolean",
|
||||
"description": "Do not import this directive into the owning NgModule.",
|
||||
"default": false
|
||||
},
|
||||
"selector": {
|
||||
"type": "string",
|
||||
"format": "html-selector",
|
||||
"description": "The HTML selector to use for this directive."
|
||||
},
|
||||
"standalone": {
|
||||
"description": "Whether the generated directive is standalone.",
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"x-user-analytics": "ep.ng_standalone"
|
||||
},
|
||||
"flat": {
|
||||
"type": "boolean",
|
||||
"description": "When true (the default), creates the new files at the top level of the current project.",
|
||||
"default": true
|
||||
},
|
||||
"module": {
|
||||
"type": "string",
|
||||
"description": "The declaring NgModule.",
|
||||
"alias": "m"
|
||||
},
|
||||
"export": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "The declaring NgModule exports this directive."
|
||||
}
|
||||
},
|
||||
"required": ["name", "project"]
|
||||
}
|
37
my-app/node_modules/@schematics/angular/e2e/files/protractor.conf.js.template
generated
vendored
Executable file
37
my-app/node_modules/@schematics/angular/e2e/files/protractor.conf.js.template
generated
vendored
Executable file
|
@ -0,0 +1,37 @@
|
|||
// @ts-check
|
||||
// Protractor configuration file, see link for more information
|
||||
// https://github.com/angular/protractor/blob/master/lib/config.ts
|
||||
|
||||
const { SpecReporter, StacktraceOption } = require('jasmine-spec-reporter');
|
||||
|
||||
/**
|
||||
* @type { import("protractor").Config }
|
||||
*/
|
||||
exports.config = {
|
||||
allScriptsTimeout: 11000,
|
||||
specs: [
|
||||
'./src/**/*.e2e-spec.ts'
|
||||
],
|
||||
capabilities: {
|
||||
browserName: 'chrome'
|
||||
},
|
||||
directConnect: true,
|
||||
SELENIUM_PROMISE_MANAGER: false,
|
||||
baseUrl: 'http://localhost:4200/',
|
||||
framework: 'jasmine',
|
||||
jasmineNodeOpts: {
|
||||
showColors: true,
|
||||
defaultTimeoutInterval: 30000,
|
||||
print: function() {}
|
||||
},
|
||||
onPrepare() {
|
||||
require('ts-node').register({
|
||||
project: require('path').join(__dirname, './tsconfig.json')
|
||||
});
|
||||
jasmine.getEnv().addReporter(new SpecReporter({
|
||||
spec: {
|
||||
displayStacktrace: StacktraceOption.PRETTY
|
||||
}
|
||||
}));
|
||||
}
|
||||
};
|
23
my-app/node_modules/@schematics/angular/e2e/files/src/app.e2e-spec.ts.template
generated
vendored
Executable file
23
my-app/node_modules/@schematics/angular/e2e/files/src/app.e2e-spec.ts.template
generated
vendored
Executable file
|
@ -0,0 +1,23 @@
|
|||
import { browser, logging } from 'protractor';
|
||||
import { AppPage } from './app.po';
|
||||
|
||||
describe('workspace-project App', () => {
|
||||
let page: AppPage;
|
||||
|
||||
beforeEach(() => {
|
||||
page = new AppPage();
|
||||
});
|
||||
|
||||
it('should display welcome message', async () => {
|
||||
await page.navigateTo();
|
||||
expect(await page.getTitleText()).toEqual('Hello, <%= relatedAppName %>');
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
// Assert that there are no errors emitted from the browser
|
||||
const logs = await browser.manage().logs().get(logging.Type.BROWSER);
|
||||
expect(logs).not.toContain(jasmine.objectContaining({
|
||||
level: logging.Level.SEVERE,
|
||||
} as logging.Entry));
|
||||
});
|
||||
});
|
11
my-app/node_modules/@schematics/angular/e2e/files/src/app.po.ts.template
generated
vendored
Executable file
11
my-app/node_modules/@schematics/angular/e2e/files/src/app.po.ts.template
generated
vendored
Executable file
|
@ -0,0 +1,11 @@
|
|||
import { browser, by, element } from 'protractor';
|
||||
|
||||
export class AppPage {
|
||||
async navigateTo(): Promise<unknown> {
|
||||
return browser.get(browser.baseUrl);
|
||||
}
|
||||
|
||||
async getTitleText(): Promise<string> {
|
||||
return element(by.css('h1')).getText();
|
||||
}
|
||||
}
|
13
my-app/node_modules/@schematics/angular/e2e/files/tsconfig.json.template
generated
vendored
Executable file
13
my-app/node_modules/@schematics/angular/e2e/files/tsconfig.json.template
generated
vendored
Executable file
|
@ -0,0 +1,13 @@
|
|||
/* To learn more about this file see: https://angular.io/config/tsconfig. */
|
||||
{
|
||||
"extends": "<%= relativePathToWorkspaceRoot %>/tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "<%= relativePathToWorkspaceRoot %>/out-tsc/e2e",
|
||||
"module": "commonjs",
|
||||
"target": "es2019",
|
||||
"types": [
|
||||
"jasmine",
|
||||
"node"
|
||||
]
|
||||
}
|
||||
}
|
10
my-app/node_modules/@schematics/angular/e2e/index.d.ts
generated
vendored
Executable file
10
my-app/node_modules/@schematics/angular/e2e/index.d.ts
generated
vendored
Executable file
|
@ -0,0 +1,10 @@
|
|||
/**
|
||||
* @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
|
||||
*/
|
||||
import { Rule } from '@angular-devkit/schematics';
|
||||
import { Schema as E2eOptions } from './schema';
|
||||
export default function (options: E2eOptions): Rule;
|
77
my-app/node_modules/@schematics/angular/e2e/index.js
generated
vendored
Executable file
77
my-app/node_modules/@schematics/angular/e2e/index.js
generated
vendored
Executable file
|
@ -0,0 +1,77 @@
|
|||
"use strict";
|
||||
/**
|
||||
* @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
|
||||
*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const schematics_1 = require("@angular-devkit/schematics");
|
||||
const utility_1 = require("@schematics/angular/utility");
|
||||
const path_1 = require("path");
|
||||
const json_file_1 = require("../utility/json-file");
|
||||
const latest_versions_1 = require("../utility/latest-versions");
|
||||
/**
|
||||
* The list of development dependencies used by the E2E protractor-based builder.
|
||||
* The versions are sourced from the latest versions `../utility/latest-versions/package.json`
|
||||
* file which is automatically updated via renovate.
|
||||
*/
|
||||
const E2E_DEV_DEPENDENCIES = Object.freeze([
|
||||
'protractor',
|
||||
'jasmine-spec-reporter',
|
||||
'ts-node',
|
||||
'@types/node',
|
||||
]);
|
||||
function addScriptsToPackageJson() {
|
||||
return (host) => {
|
||||
const pkgJson = new json_file_1.JSONFile(host, 'package.json');
|
||||
const e2eScriptPath = ['scripts', 'e2e'];
|
||||
if (!pkgJson.get(e2eScriptPath)) {
|
||||
pkgJson.modify(e2eScriptPath, 'ng e2e', false);
|
||||
}
|
||||
};
|
||||
}
|
||||
function default_1(options) {
|
||||
const { relatedAppName } = options;
|
||||
return (0, utility_1.updateWorkspace)((workspace) => {
|
||||
const project = workspace.projects.get(relatedAppName);
|
||||
if (!project) {
|
||||
throw new schematics_1.SchematicsException(`Project name "${relatedAppName}" doesn't not exist.`);
|
||||
}
|
||||
const e2eRootPath = path_1.posix.join(project.root, 'e2e');
|
||||
project.targets.add({
|
||||
name: 'e2e',
|
||||
builder: utility_1.AngularBuilder.Protractor,
|
||||
defaultConfiguration: 'development',
|
||||
options: {
|
||||
protractorConfig: path_1.posix.join(e2eRootPath, 'protractor.conf.js'),
|
||||
},
|
||||
configurations: {
|
||||
production: {
|
||||
devServerTarget: `${relatedAppName}:serve:production`,
|
||||
},
|
||||
development: {
|
||||
devServerTarget: `${relatedAppName}:serve:development`,
|
||||
},
|
||||
},
|
||||
});
|
||||
return (0, schematics_1.chain)([
|
||||
(0, schematics_1.mergeWith)((0, schematics_1.apply)((0, schematics_1.url)('./files'), [
|
||||
(0, schematics_1.applyTemplates)({
|
||||
utils: schematics_1.strings,
|
||||
...options,
|
||||
relativePathToWorkspaceRoot: path_1.posix.relative(path_1.posix.join('/', e2eRootPath), '/'),
|
||||
}),
|
||||
(0, schematics_1.move)(e2eRootPath),
|
||||
])),
|
||||
(0, utility_1.addRootProvider)(relatedAppName, ({ code, external }) => code `${external('provideProtractorTestingSupport', '@angular/platform-browser')}()`),
|
||||
...E2E_DEV_DEPENDENCIES.map((name) => (0, utility_1.addDependency)(name, latest_versions_1.latestVersions[name], {
|
||||
type: utility_1.DependencyType.Dev,
|
||||
existing: utility_1.ExistingBehavior.Skip,
|
||||
})),
|
||||
addScriptsToPackageJson(),
|
||||
]);
|
||||
});
|
||||
}
|
||||
exports.default = default_1;
|
13
my-app/node_modules/@schematics/angular/e2e/schema.d.ts
generated
vendored
Executable file
13
my-app/node_modules/@schematics/angular/e2e/schema.d.ts
generated
vendored
Executable file
|
@ -0,0 +1,13 @@
|
|||
/**
|
||||
* Generates a new, generic end-to-end test definition in the given project.
|
||||
*/
|
||||
export interface Schema {
|
||||
/**
|
||||
* The name of the application being tested.
|
||||
*/
|
||||
relatedAppName: string;
|
||||
/**
|
||||
* The HTML selector for the root component of the test app.
|
||||
*/
|
||||
rootSelector?: string;
|
||||
}
|
4
my-app/node_modules/@schematics/angular/e2e/schema.js
generated
vendored
Executable file
4
my-app/node_modules/@schematics/angular/e2e/schema.js
generated
vendored
Executable file
|
@ -0,0 +1,4 @@
|
|||
"use strict";
|
||||
// THIS FILE IS AUTOMATICALLY GENERATED. TO UPDATE THIS FILE YOU NEED TO CHANGE THE
|
||||
// CORRESPONDING JSON SCHEMA FILE, THEN RUN devkit-admin build (or bazel build ...).
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
20
my-app/node_modules/@schematics/angular/e2e/schema.json
generated
vendored
Executable file
20
my-app/node_modules/@schematics/angular/e2e/schema.json
generated
vendored
Executable file
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema",
|
||||
"$id": "SchematicsAngularE2eApp",
|
||||
"title": "Angular e2e Application Options Schema",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"description": "Generates a new, generic end-to-end test definition in the given project.",
|
||||
"properties": {
|
||||
"rootSelector": {
|
||||
"description": "The HTML selector for the root component of the test app.",
|
||||
"type": "string",
|
||||
"default": "app-root"
|
||||
},
|
||||
"relatedAppName": {
|
||||
"description": "The name of the application being tested.",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": ["relatedAppName"]
|
||||
}
|
2
my-app/node_modules/@schematics/angular/enum/files/__name@dasherize____type__.ts.template
generated
vendored
Executable file
2
my-app/node_modules/@schematics/angular/enum/files/__name@dasherize____type__.ts.template
generated
vendored
Executable file
|
@ -0,0 +1,2 @@
|
|||
export enum <%= classify(name) %> {
|
||||
}
|
10
my-app/node_modules/@schematics/angular/enum/index.d.ts
generated
vendored
Executable file
10
my-app/node_modules/@schematics/angular/enum/index.d.ts
generated
vendored
Executable file
|
@ -0,0 +1,10 @@
|
|||
/**
|
||||
* @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
|
||||
*/
|
||||
import { Rule } from '@angular-devkit/schematics';
|
||||
import { Schema as EnumOptions } from './schema';
|
||||
export default function (options: EnumOptions): Rule;
|
15
my-app/node_modules/@schematics/angular/enum/index.js
generated
vendored
Executable file
15
my-app/node_modules/@schematics/angular/enum/index.js
generated
vendored
Executable file
|
@ -0,0 +1,15 @@
|
|||
"use strict";
|
||||
/**
|
||||
* @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
|
||||
*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const generate_from_files_1 = require("../utility/generate-from-files");
|
||||
function default_1(options) {
|
||||
options.type = options.type ? `.${options.type}` : '';
|
||||
return (0, generate_from_files_1.generateFromFiles)(options);
|
||||
}
|
||||
exports.default = default_1;
|
22
my-app/node_modules/@schematics/angular/enum/schema.d.ts
generated
vendored
Executable file
22
my-app/node_modules/@schematics/angular/enum/schema.d.ts
generated
vendored
Executable file
|
@ -0,0 +1,22 @@
|
|||
/**
|
||||
* Generates a new, generic enum definition in the given project.
|
||||
*/
|
||||
export interface Schema {
|
||||
/**
|
||||
* The name of the enum.
|
||||
*/
|
||||
name: string;
|
||||
/**
|
||||
* The path at which to create the enum definition, relative to the current workspace.
|
||||
*/
|
||||
path?: string;
|
||||
/**
|
||||
* The name of the project in which to create the enum. Default is the configured default
|
||||
* project for the workspace.
|
||||
*/
|
||||
project: string;
|
||||
/**
|
||||
* Adds a developer-defined type to the filename, in the format "name.type.ts".
|
||||
*/
|
||||
type?: string;
|
||||
}
|
4
my-app/node_modules/@schematics/angular/enum/schema.js
generated
vendored
Executable file
4
my-app/node_modules/@schematics/angular/enum/schema.js
generated
vendored
Executable file
|
@ -0,0 +1,4 @@
|
|||
"use strict";
|
||||
// THIS FILE IS AUTOMATICALLY GENERATED. TO UPDATE THIS FILE YOU NEED TO CHANGE THE
|
||||
// CORRESPONDING JSON SCHEMA FILE, THEN RUN devkit-admin build (or bazel build ...).
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
40
my-app/node_modules/@schematics/angular/enum/schema.json
generated
vendored
Executable file
40
my-app/node_modules/@schematics/angular/enum/schema.json
generated
vendored
Executable file
|
@ -0,0 +1,40 @@
|
|||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema",
|
||||
"$id": "SchematicsAngularEnum",
|
||||
"title": "Angular Enum Options Schema",
|
||||
"type": "object",
|
||||
"description": "Generates a new, generic enum definition in the given project.",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "The name of the enum.",
|
||||
"$default": {
|
||||
"$source": "argv",
|
||||
"index": 0
|
||||
},
|
||||
"x-prompt": "What name would you like to use for the enum?"
|
||||
},
|
||||
"path": {
|
||||
"type": "string",
|
||||
"format": "path",
|
||||
"$default": {
|
||||
"$source": "workingDirectory"
|
||||
},
|
||||
"description": "The path at which to create the enum definition, relative to the current workspace.",
|
||||
"visible": false
|
||||
},
|
||||
"project": {
|
||||
"type": "string",
|
||||
"description": "The name of the project in which to create the enum. Default is the configured default project for the workspace.",
|
||||
"$default": {
|
||||
"$source": "projectName"
|
||||
}
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"description": "Adds a developer-defined type to the filename, in the format \"name.type.ts\"."
|
||||
}
|
||||
},
|
||||
"required": ["name", "project"]
|
||||
}
|
10
my-app/node_modules/@schematics/angular/environments/index.d.ts
generated
vendored
Executable file
10
my-app/node_modules/@schematics/angular/environments/index.d.ts
generated
vendored
Executable file
|
@ -0,0 +1,10 @@
|
|||
/**
|
||||
* @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
|
||||
*/
|
||||
import { Rule } from '@angular-devkit/schematics';
|
||||
import { Schema as EnvironmentOptions } from './schema';
|
||||
export default function (options: EnvironmentOptions): Rule;
|
105
my-app/node_modules/@schematics/angular/environments/index.js
generated
vendored
Executable file
105
my-app/node_modules/@schematics/angular/environments/index.js
generated
vendored
Executable file
|
@ -0,0 +1,105 @@
|
|||
"use strict";
|
||||
/**
|
||||
* @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
|
||||
*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const schematics_1 = require("@angular-devkit/schematics");
|
||||
const utility_1 = require("@schematics/angular/utility");
|
||||
const path_1 = require("path");
|
||||
const ENVIRONMENTS_DIRECTORY = 'environments';
|
||||
const ENVIRONMENT_FILE_CONTENT = 'export const environment = {};\n';
|
||||
function default_1(options) {
|
||||
return (0, utility_1.updateWorkspace)((workspace) => {
|
||||
const project = workspace.projects.get(options.project);
|
||||
if (!project) {
|
||||
throw new schematics_1.SchematicsException(`Project name "${options.project}" doesn't not exist.`);
|
||||
}
|
||||
const type = project.extensions['projectType'];
|
||||
if (type !== 'application') {
|
||||
return log('error', 'Only application project types are support by this schematic.' + type
|
||||
? ` Project "${options.project}" has a "projectType" of "${type}".`
|
||||
: ` Project "${options.project}" has no "projectType" defined.`);
|
||||
}
|
||||
const buildTarget = project.targets.get('build');
|
||||
if (!buildTarget) {
|
||||
return log('error', `No "build" target found for project "${options.project}".` +
|
||||
' A "build" target is required to generate environment files.');
|
||||
}
|
||||
const serverTarget = project.targets.get('server');
|
||||
const sourceRoot = project.sourceRoot ?? path_1.posix.join(project.root, 'src');
|
||||
// The generator needs to be iterated prior to returning to ensure all workspace changes that occur
|
||||
// within the generator are present for `updateWorkspace` when it writes the workspace file.
|
||||
return (0, schematics_1.chain)([
|
||||
...generateConfigurationEnvironments(buildTarget, serverTarget, sourceRoot, options.project),
|
||||
]);
|
||||
});
|
||||
}
|
||||
exports.default = default_1;
|
||||
function createIfMissing(path) {
|
||||
return (tree, context) => {
|
||||
if (tree.exists(path)) {
|
||||
context.logger.info(`Skipping creation of already existing environment file "${path}".`);
|
||||
}
|
||||
else {
|
||||
tree.create(path, ENVIRONMENT_FILE_CONTENT);
|
||||
}
|
||||
};
|
||||
}
|
||||
function log(type, text) {
|
||||
return (_, context) => context.logger[type](text);
|
||||
}
|
||||
function* generateConfigurationEnvironments(buildTarget, serverTarget, sourceRoot, projectName) {
|
||||
if (buildTarget.builder !== utility_1.AngularBuilder.Browser &&
|
||||
buildTarget.builder !== utility_1.AngularBuilder.BrowserEsbuild &&
|
||||
buildTarget.builder !== utility_1.AngularBuilder.Application) {
|
||||
yield log('warn', `"build" target found for project "${projectName}" has a third-party builder "${buildTarget.builder}".` +
|
||||
' The generated project options may not be compatible with this builder.');
|
||||
}
|
||||
if (serverTarget && serverTarget.builder !== utility_1.AngularBuilder.Server) {
|
||||
yield log('warn', `"server" target found for project "${projectName}" has a third-party builder "${buildTarget.builder}".` +
|
||||
' The generated project options may not be compatible with this builder.');
|
||||
}
|
||||
// Create default environment file
|
||||
const defaultFilePath = path_1.posix.join(sourceRoot, ENVIRONMENTS_DIRECTORY, 'environment.ts');
|
||||
yield createIfMissing(defaultFilePath);
|
||||
const configurationEntries = [
|
||||
...Object.entries(buildTarget.configurations ?? {}),
|
||||
...Object.entries(serverTarget?.configurations ?? {}),
|
||||
];
|
||||
const addedFiles = new Set();
|
||||
for (const [name, configurationOptions] of configurationEntries) {
|
||||
if (!configurationOptions) {
|
||||
// Invalid configuration
|
||||
continue;
|
||||
}
|
||||
// Default configuration will use the default environment file
|
||||
if (name === buildTarget.defaultConfiguration) {
|
||||
continue;
|
||||
}
|
||||
const configurationFilePath = path_1.posix.join(sourceRoot, ENVIRONMENTS_DIRECTORY, `environment.${name}.ts`);
|
||||
// Add file replacement option entry for the configuration environment file
|
||||
const replacements = (configurationOptions['fileReplacements'] ??= []);
|
||||
const existing = replacements.find((value) => value.replace === defaultFilePath);
|
||||
if (existing) {
|
||||
if (existing.with === configurationFilePath) {
|
||||
yield log('info', `Skipping addition of already existing file replacements option for "${defaultFilePath}" to "${configurationFilePath}".`);
|
||||
}
|
||||
else {
|
||||
yield log('warn', `Configuration "${name}" has a file replacements option for "${defaultFilePath}" but with a different replacement.` +
|
||||
` Expected "${configurationFilePath}" but found "${existing.with}". This may result in unexpected build behavior.`);
|
||||
}
|
||||
}
|
||||
else {
|
||||
replacements.push({ replace: defaultFilePath, with: configurationFilePath });
|
||||
}
|
||||
// Create configuration specific environment file if not already added
|
||||
if (!addedFiles.has(configurationFilePath)) {
|
||||
addedFiles.add(configurationFilePath);
|
||||
yield createIfMissing(configurationFilePath);
|
||||
}
|
||||
}
|
||||
}
|
9
my-app/node_modules/@schematics/angular/environments/schema.d.ts
generated
vendored
Executable file
9
my-app/node_modules/@schematics/angular/environments/schema.d.ts
generated
vendored
Executable file
|
@ -0,0 +1,9 @@
|
|||
/**
|
||||
* Generates and configures environment files for a project.
|
||||
*/
|
||||
export interface Schema {
|
||||
/**
|
||||
* The name of the project.
|
||||
*/
|
||||
project: string;
|
||||
}
|
4
my-app/node_modules/@schematics/angular/environments/schema.js
generated
vendored
Executable file
4
my-app/node_modules/@schematics/angular/environments/schema.js
generated
vendored
Executable file
|
@ -0,0 +1,4 @@
|
|||
"use strict";
|
||||
// THIS FILE IS AUTOMATICALLY GENERATED. TO UPDATE THIS FILE YOU NEED TO CHANGE THE
|
||||
// CORRESPONDING JSON SCHEMA FILE, THEN RUN devkit-admin build (or bazel build ...).
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
18
my-app/node_modules/@schematics/angular/environments/schema.json
generated
vendored
Executable file
18
my-app/node_modules/@schematics/angular/environments/schema.json
generated
vendored
Executable file
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema",
|
||||
"$id": "SchematicsAngularEnvironment",
|
||||
"title": "Angular Environments Options Schema",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"description": "Generates and configures environment files for a project.",
|
||||
"properties": {
|
||||
"project": {
|
||||
"type": "string",
|
||||
"description": "The name of the project.",
|
||||
"$default": {
|
||||
"$source": "projectName"
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["project"]
|
||||
}
|
16
my-app/node_modules/@schematics/angular/guard/implements-files/__name@dasherize__.guard.spec.ts.template
generated
vendored
Executable file
16
my-app/node_modules/@schematics/angular/guard/implements-files/__name@dasherize__.guard.spec.ts.template
generated
vendored
Executable file
|
@ -0,0 +1,16 @@
|
|||
import { TestBed } from '@angular/core/testing';
|
||||
|
||||
import { <%= classify(name) %>Guard } from './<%= dasherize(name) %>.guard';
|
||||
|
||||
describe('<%= classify(name) %>Guard', () => {
|
||||
let guard: <%= classify(name) %>Guard;
|
||||
|
||||
beforeEach(() => {
|
||||
TestBed.configureTestingModule({});
|
||||
guard = TestBed.inject(<%= classify(name) %>Guard);
|
||||
});
|
||||
|
||||
it('should be created', () => {
|
||||
expect(guard).toBeTruthy();
|
||||
});
|
||||
});
|
31
my-app/node_modules/@schematics/angular/guard/implements-files/__name@dasherize__.guard.ts.template
generated
vendored
Executable file
31
my-app/node_modules/@schematics/angular/guard/implements-files/__name@dasherize__.guard.ts.template
generated
vendored
Executable file
|
@ -0,0 +1,31 @@
|
|||
import { Injectable } from '@angular/core';
|
||||
import { <%= routerImports %> } from '@angular/router';
|
||||
import { Observable } from 'rxjs';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class <%= classify(name) %>Guard implements <%= implementations %> {
|
||||
<% if (implements.includes('CanActivate')) { %>canActivate(
|
||||
route: ActivatedRouteSnapshot,
|
||||
state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
|
||||
return true;
|
||||
}
|
||||
<% } %><% if (implements.includes('CanActivateChild')) { %>canActivateChild(
|
||||
childRoute: ActivatedRouteSnapshot,
|
||||
state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
|
||||
return true;
|
||||
}
|
||||
<% } %><% if (implements.includes('CanDeactivate')) { %>canDeactivate(
|
||||
component: unknown,
|
||||
currentRoute: ActivatedRouteSnapshot,
|
||||
currentState: RouterStateSnapshot,
|
||||
nextState?: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
|
||||
return true;
|
||||
}
|
||||
<% } %><% if (implements.includes('CanMatch')) { %>canMatch(
|
||||
route: Route,
|
||||
segments: UrlSegment[]): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
|
||||
return true;
|
||||
}<% } %>
|
||||
}
|
10
my-app/node_modules/@schematics/angular/guard/index.d.ts
generated
vendored
Executable file
10
my-app/node_modules/@schematics/angular/guard/index.d.ts
generated
vendored
Executable file
|
@ -0,0 +1,10 @@
|
|||
/**
|
||||
* @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
|
||||
*/
|
||||
import { Rule } from '@angular-devkit/schematics';
|
||||
import { Schema as GuardOptions } from './schema';
|
||||
export default function (options: GuardOptions): Rule;
|
47
my-app/node_modules/@schematics/angular/guard/index.js
generated
vendored
Executable file
47
my-app/node_modules/@schematics/angular/guard/index.js
generated
vendored
Executable file
|
@ -0,0 +1,47 @@
|
|||
"use strict";
|
||||
/**
|
||||
* @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
|
||||
*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const schematics_1 = require("@angular-devkit/schematics");
|
||||
const generate_from_files_1 = require("../utility/generate-from-files");
|
||||
const schema_1 = require("./schema");
|
||||
function default_1(options) {
|
||||
if (!options.implements) {
|
||||
throw new schematics_1.SchematicsException('Option "implements" is required.');
|
||||
}
|
||||
if (options.implements.length > 1 && options.functional) {
|
||||
throw new schematics_1.SchematicsException('Can only specify one value for implements when generating a functional guard.');
|
||||
}
|
||||
if (options.functional) {
|
||||
const guardType = options.implements[0] + 'Fn';
|
||||
return (0, generate_from_files_1.generateFromFiles)({ ...options, templateFilesDirectory: './type-files' }, { guardType });
|
||||
}
|
||||
else {
|
||||
const implementations = options.implements
|
||||
.map((implement) => (implement === 'CanDeactivate' ? 'CanDeactivate<unknown>' : implement))
|
||||
.join(', ');
|
||||
const commonRouterNameImports = ['ActivatedRouteSnapshot', 'RouterStateSnapshot'];
|
||||
const routerNamedImports = [...options.implements, 'UrlTree'];
|
||||
if (options.implements.includes(schema_1.Implement.CanMatch)) {
|
||||
routerNamedImports.push('Route', 'UrlSegment');
|
||||
if (options.implements.length > 1) {
|
||||
routerNamedImports.push(...commonRouterNameImports);
|
||||
}
|
||||
}
|
||||
else {
|
||||
routerNamedImports.push(...commonRouterNameImports);
|
||||
}
|
||||
routerNamedImports.sort();
|
||||
const routerImports = routerNamedImports.join(', ');
|
||||
return (0, generate_from_files_1.generateFromFiles)({ ...options, templateFilesDirectory: './implements-files' }, {
|
||||
implementations,
|
||||
routerImports,
|
||||
});
|
||||
}
|
||||
}
|
||||
exports.default = default_1;
|
40
my-app/node_modules/@schematics/angular/guard/schema.d.ts
generated
vendored
Executable file
40
my-app/node_modules/@schematics/angular/guard/schema.d.ts
generated
vendored
Executable file
|
@ -0,0 +1,40 @@
|
|||
/**
|
||||
* Generates a new, generic route guard definition in the given project.
|
||||
*/
|
||||
export interface Schema {
|
||||
/**
|
||||
* When true (the default), creates the new files at the top level of the current project.
|
||||
*/
|
||||
flat?: boolean;
|
||||
/**
|
||||
* Specifies whether to generate a guard as a function.
|
||||
*/
|
||||
functional?: boolean;
|
||||
/**
|
||||
* Specifies which type of guard to create.
|
||||
*/
|
||||
implements?: Implement[];
|
||||
/**
|
||||
* The name of the new route guard.
|
||||
*/
|
||||
name: string;
|
||||
/**
|
||||
* The path at which to create the interface that defines the guard, relative to the current
|
||||
* workspace.
|
||||
*/
|
||||
path?: string;
|
||||
/**
|
||||
* The name of the project.
|
||||
*/
|
||||
project: string;
|
||||
/**
|
||||
* Do not create "spec.ts" test files for the new guard.
|
||||
*/
|
||||
skipTests?: boolean;
|
||||
}
|
||||
export declare enum Implement {
|
||||
CanActivate = "CanActivate",
|
||||
CanActivateChild = "CanActivateChild",
|
||||
CanDeactivate = "CanDeactivate",
|
||||
CanMatch = "CanMatch"
|
||||
}
|
12
my-app/node_modules/@schematics/angular/guard/schema.js
generated
vendored
Executable file
12
my-app/node_modules/@schematics/angular/guard/schema.js
generated
vendored
Executable file
|
@ -0,0 +1,12 @@
|
|||
"use strict";
|
||||
// THIS FILE IS AUTOMATICALLY GENERATED. TO UPDATE THIS FILE YOU NEED TO CHANGE THE
|
||||
// CORRESPONDING JSON SCHEMA FILE, THEN RUN devkit-admin build (or bazel build ...).
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.Implement = void 0;
|
||||
var Implement;
|
||||
(function (Implement) {
|
||||
Implement["CanActivate"] = "CanActivate";
|
||||
Implement["CanActivateChild"] = "CanActivateChild";
|
||||
Implement["CanDeactivate"] = "CanDeactivate";
|
||||
Implement["CanMatch"] = "CanMatch";
|
||||
})(Implement || (exports.Implement = Implement = {}));
|
64
my-app/node_modules/@schematics/angular/guard/schema.json
generated
vendored
Executable file
64
my-app/node_modules/@schematics/angular/guard/schema.json
generated
vendored
Executable file
|
@ -0,0 +1,64 @@
|
|||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema",
|
||||
"$id": "SchematicsAngularGuard",
|
||||
"title": "Angular Guard Options Schema",
|
||||
"type": "object",
|
||||
"description": "Generates a new, generic route guard definition in the given project.",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "The name of the new route guard.",
|
||||
"$default": {
|
||||
"$source": "argv",
|
||||
"index": 0
|
||||
},
|
||||
"x-prompt": "What name would you like to use for the guard?"
|
||||
},
|
||||
"skipTests": {
|
||||
"type": "boolean",
|
||||
"description": "Do not create \"spec.ts\" test files for the new guard.",
|
||||
"default": false
|
||||
},
|
||||
"flat": {
|
||||
"type": "boolean",
|
||||
"description": "When true (the default), creates the new files at the top level of the current project.",
|
||||
"default": true
|
||||
},
|
||||
"path": {
|
||||
"type": "string",
|
||||
"format": "path",
|
||||
"$default": {
|
||||
"$source": "workingDirectory"
|
||||
},
|
||||
"description": "The path at which to create the interface that defines the guard, relative to the current workspace.",
|
||||
"visible": false
|
||||
},
|
||||
"project": {
|
||||
"type": "string",
|
||||
"description": "The name of the project.",
|
||||
"$default": {
|
||||
"$source": "projectName"
|
||||
}
|
||||
},
|
||||
"functional": {
|
||||
"type": "boolean",
|
||||
"description": "Specifies whether to generate a guard as a function.",
|
||||
"default": true
|
||||
},
|
||||
"implements": {
|
||||
"alias": "guardType",
|
||||
"type": "array",
|
||||
"description": "Specifies which type of guard to create.",
|
||||
"uniqueItems": true,
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"enum": ["CanActivate", "CanActivateChild", "CanDeactivate", "CanMatch"],
|
||||
"type": "string"
|
||||
},
|
||||
"default": ["CanActivate"],
|
||||
"x-prompt": "Which type of guard would you like to create?"
|
||||
}
|
||||
},
|
||||
"required": ["name", "project"]
|
||||
}
|
17
my-app/node_modules/@schematics/angular/guard/type-files/__name@dasherize__.guard.spec.ts.template
generated
vendored
Executable file
17
my-app/node_modules/@schematics/angular/guard/type-files/__name@dasherize__.guard.spec.ts.template
generated
vendored
Executable file
|
@ -0,0 +1,17 @@
|
|||
import { TestBed } from '@angular/core/testing';
|
||||
import { <%= guardType %> } from '@angular/router';
|
||||
|
||||
import { <%= camelize(name) %>Guard } from './<%= dasherize(name) %>.guard';
|
||||
|
||||
describe('<%= camelize(name) %>Guard', () => {
|
||||
const executeGuard: <%= guardType %> = (...guardParameters) =>
|
||||
TestBed.runInInjectionContext(() => <%= camelize(name) %>Guard(...guardParameters));
|
||||
|
||||
beforeEach(() => {
|
||||
TestBed.configureTestingModule({});
|
||||
});
|
||||
|
||||
it('should be created', () => {
|
||||
expect(executeGuard).toBeTruthy();
|
||||
});
|
||||
});
|
9
my-app/node_modules/@schematics/angular/guard/type-files/__name@dasherize__.guard.ts.template
generated
vendored
Executable file
9
my-app/node_modules/@schematics/angular/guard/type-files/__name@dasherize__.guard.ts.template
generated
vendored
Executable file
|
@ -0,0 +1,9 @@
|
|||
import { <%= guardType %> } from '@angular/router';
|
||||
|
||||
export const <%= camelize(name) %>Guard: <%= guardType %><% if (guardType === 'CanDeactivateFn') { %><unknown><% } %> = <%
|
||||
if (guardType === 'CanMatchFn') { %>(route, segments)<% }
|
||||
%><% if (guardType === 'CanActivateFn') { %>(route, state)<% }
|
||||
%><% if (guardType === 'CanActivateChildFn') { %>(childRoute, state)<% }
|
||||
%><% if (guardType === 'CanDeactivateFn') { %>(component, currentRoute, currentState, nextState)<% } %> => {
|
||||
return true;
|
||||
};
|
16
my-app/node_modules/@schematics/angular/interceptor/class-files/__name@dasherize@if-flat__/__name@dasherize__.interceptor.spec.ts.template
generated
vendored
Executable file
16
my-app/node_modules/@schematics/angular/interceptor/class-files/__name@dasherize@if-flat__/__name@dasherize__.interceptor.spec.ts.template
generated
vendored
Executable file
|
@ -0,0 +1,16 @@
|
|||
import { TestBed } from '@angular/core/testing';
|
||||
|
||||
import { <%= classify(name) %>Interceptor } from './<%= dasherize(name) %>.interceptor';
|
||||
|
||||
describe('<%= classify(name) %>Interceptor', () => {
|
||||
beforeEach(() => TestBed.configureTestingModule({
|
||||
providers: [
|
||||
<%= classify(name) %>Interceptor
|
||||
]
|
||||
}));
|
||||
|
||||
it('should be created', () => {
|
||||
const interceptor: <%= classify(name) %>Interceptor = TestBed.inject(<%= classify(name) %>Interceptor);
|
||||
expect(interceptor).toBeTruthy();
|
||||
});
|
||||
});
|
18
my-app/node_modules/@schematics/angular/interceptor/class-files/__name@dasherize@if-flat__/__name@dasherize__.interceptor.ts.template
generated
vendored
Executable file
18
my-app/node_modules/@schematics/angular/interceptor/class-files/__name@dasherize@if-flat__/__name@dasherize__.interceptor.ts.template
generated
vendored
Executable file
|
@ -0,0 +1,18 @@
|
|||
import { Injectable } from '@angular/core';
|
||||
import {
|
||||
HttpRequest,
|
||||
HttpHandler,
|
||||
HttpEvent,
|
||||
HttpInterceptor
|
||||
} from '@angular/common/http';
|
||||
import { Observable } from 'rxjs';
|
||||
|
||||
@Injectable()
|
||||
export class <%= classify(name) %>Interceptor implements HttpInterceptor {
|
||||
|
||||
constructor() {}
|
||||
|
||||
intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {
|
||||
return next.handle(request);
|
||||
}
|
||||
}
|
17
my-app/node_modules/@schematics/angular/interceptor/functional-files/__name@dasherize@if-flat__/__name@dasherize__.interceptor.spec.ts.template
generated
vendored
Executable file
17
my-app/node_modules/@schematics/angular/interceptor/functional-files/__name@dasherize@if-flat__/__name@dasherize__.interceptor.spec.ts.template
generated
vendored
Executable file
|
@ -0,0 +1,17 @@
|
|||
import { TestBed } from '@angular/core/testing';
|
||||
import { HttpInterceptorFn } from '@angular/common/http';
|
||||
|
||||
import { <%= camelize(name) %>Interceptor } from './<%= dasherize(name) %>.interceptor';
|
||||
|
||||
describe('<%= camelize(name) %>Interceptor', () => {
|
||||
const interceptor: HttpInterceptorFn = (req, next) =>
|
||||
TestBed.runInInjectionContext(() => <%= camelize(name) %>Interceptor(req, next));
|
||||
|
||||
beforeEach(() => {
|
||||
TestBed.configureTestingModule({});
|
||||
});
|
||||
|
||||
it('should be created', () => {
|
||||
expect(interceptor).toBeTruthy();
|
||||
});
|
||||
});
|
5
my-app/node_modules/@schematics/angular/interceptor/functional-files/__name@dasherize@if-flat__/__name@dasherize__.interceptor.ts.template
generated
vendored
Executable file
5
my-app/node_modules/@schematics/angular/interceptor/functional-files/__name@dasherize@if-flat__/__name@dasherize__.interceptor.ts.template
generated
vendored
Executable file
|
@ -0,0 +1,5 @@
|
|||
import { HttpInterceptorFn } from '@angular/common/http';
|
||||
|
||||
export const <%= camelize(name) %>Interceptor: HttpInterceptorFn = (req, next) => {
|
||||
return next(req);
|
||||
};
|
10
my-app/node_modules/@schematics/angular/interceptor/index.d.ts
generated
vendored
Executable file
10
my-app/node_modules/@schematics/angular/interceptor/index.d.ts
generated
vendored
Executable file
|
@ -0,0 +1,10 @@
|
|||
/**
|
||||
* @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
|
||||
*/
|
||||
import { Rule } from '@angular-devkit/schematics';
|
||||
import { Schema as InterceptorOptions } from './schema';
|
||||
export default function (options: InterceptorOptions): Rule;
|
22
my-app/node_modules/@schematics/angular/interceptor/index.js
generated
vendored
Executable file
22
my-app/node_modules/@schematics/angular/interceptor/index.js
generated
vendored
Executable file
|
@ -0,0 +1,22 @@
|
|||
"use strict";
|
||||
/**
|
||||
* @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
|
||||
*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const generate_from_files_1 = require("../utility/generate-from-files");
|
||||
function default_1(options) {
|
||||
// This schematic uses an older method to implement the flat option
|
||||
const flat = options.flat;
|
||||
options.flat = true;
|
||||
const extraTemplateValues = {
|
||||
'if-flat': (s) => (flat ? '' : s),
|
||||
};
|
||||
return options.functional
|
||||
? (0, generate_from_files_1.generateFromFiles)({ ...options, templateFilesDirectory: './functional-files' }, extraTemplateValues)
|
||||
: (0, generate_from_files_1.generateFromFiles)({ ...options, templateFilesDirectory: './class-files' }, extraTemplateValues);
|
||||
}
|
||||
exports.default = default_1;
|
29
my-app/node_modules/@schematics/angular/interceptor/schema.d.ts
generated
vendored
Executable file
29
my-app/node_modules/@schematics/angular/interceptor/schema.d.ts
generated
vendored
Executable file
|
@ -0,0 +1,29 @@
|
|||
/**
|
||||
* Creates a new, generic interceptor definition in the given project.
|
||||
*/
|
||||
export interface Schema {
|
||||
/**
|
||||
* When true (the default), creates files at the top level of the project.
|
||||
*/
|
||||
flat?: boolean;
|
||||
/**
|
||||
* Creates the interceptor as a `HttpInterceptorFn`.
|
||||
*/
|
||||
functional?: boolean;
|
||||
/**
|
||||
* The name of the interceptor.
|
||||
*/
|
||||
name: string;
|
||||
/**
|
||||
* The path at which to create the interceptor, relative to the workspace root.
|
||||
*/
|
||||
path?: string;
|
||||
/**
|
||||
* The name of the project.
|
||||
*/
|
||||
project: string;
|
||||
/**
|
||||
* Do not create "spec.ts" test files for the new interceptor.
|
||||
*/
|
||||
skipTests?: boolean;
|
||||
}
|
4
my-app/node_modules/@schematics/angular/interceptor/schema.js
generated
vendored
Executable file
4
my-app/node_modules/@schematics/angular/interceptor/schema.js
generated
vendored
Executable file
|
@ -0,0 +1,4 @@
|
|||
"use strict";
|
||||
// THIS FILE IS AUTOMATICALLY GENERATED. TO UPDATE THIS FILE YOU NEED TO CHANGE THE
|
||||
// CORRESPONDING JSON SCHEMA FILE, THEN RUN devkit-admin build (or bazel build ...).
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
51
my-app/node_modules/@schematics/angular/interceptor/schema.json
generated
vendored
Executable file
51
my-app/node_modules/@schematics/angular/interceptor/schema.json
generated
vendored
Executable file
|
@ -0,0 +1,51 @@
|
|||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema",
|
||||
"$id": "SchematicsAngularInterceptor",
|
||||
"title": "Angular Interceptor Options Schema",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"description": "Creates a new, generic interceptor definition in the given project.",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "The name of the interceptor.",
|
||||
"$default": {
|
||||
"$source": "argv",
|
||||
"index": 0
|
||||
},
|
||||
"x-prompt": "What name would you like to use for the interceptor?"
|
||||
},
|
||||
"path": {
|
||||
"type": "string",
|
||||
"format": "path",
|
||||
"$default": {
|
||||
"$source": "workingDirectory"
|
||||
},
|
||||
"description": "The path at which to create the interceptor, relative to the workspace root.",
|
||||
"visible": false
|
||||
},
|
||||
"project": {
|
||||
"type": "string",
|
||||
"description": "The name of the project.",
|
||||
"$default": {
|
||||
"$source": "projectName"
|
||||
}
|
||||
},
|
||||
"flat": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "When true (the default), creates files at the top level of the project."
|
||||
},
|
||||
"skipTests": {
|
||||
"type": "boolean",
|
||||
"description": "Do not create \"spec.ts\" test files for the new interceptor.",
|
||||
"default": false
|
||||
},
|
||||
"functional": {
|
||||
"type": "boolean",
|
||||
"description": "Creates the interceptor as a `HttpInterceptorFn`.",
|
||||
"default": true
|
||||
}
|
||||
},
|
||||
"required": ["name", "project"]
|
||||
}
|
2
my-app/node_modules/@schematics/angular/interface/files/__name@dasherize____type__.ts.template
generated
vendored
Executable file
2
my-app/node_modules/@schematics/angular/interface/files/__name@dasherize____type__.ts.template
generated
vendored
Executable file
|
@ -0,0 +1,2 @@
|
|||
export interface <%= prefix %><%= classify(name) %> {
|
||||
}
|
10
my-app/node_modules/@schematics/angular/interface/index.d.ts
generated
vendored
Executable file
10
my-app/node_modules/@schematics/angular/interface/index.d.ts
generated
vendored
Executable file
|
@ -0,0 +1,10 @@
|
|||
/**
|
||||
* @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
|
||||
*/
|
||||
import { Rule } from '@angular-devkit/schematics';
|
||||
import { Schema as InterfaceOptions } from './schema';
|
||||
export default function (options: InterfaceOptions): Rule;
|
15
my-app/node_modules/@schematics/angular/interface/index.js
generated
vendored
Executable file
15
my-app/node_modules/@schematics/angular/interface/index.js
generated
vendored
Executable file
|
@ -0,0 +1,15 @@
|
|||
"use strict";
|
||||
/**
|
||||
* @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
|
||||
*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const generate_from_files_1 = require("../utility/generate-from-files");
|
||||
function default_1(options) {
|
||||
options.type = options.type ? `.${options.type}` : '';
|
||||
return (0, generate_from_files_1.generateFromFiles)(options);
|
||||
}
|
||||
exports.default = default_1;
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue