source: trip-planner-front/node_modules/@schematics/angular/utility/find-module.js@ 8d391a1

Last change on this file since 8d391a1 was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago

initial commit

  • Property mode set to 100644
File size: 4.8 KB
Line 
1"use strict";
2/**
3 * @license
4 * Copyright Google LLC All Rights Reserved.
5 *
6 * Use of this source code is governed by an MIT-style license that can be
7 * found in the LICENSE file at https://angular.io/license
8 */
9Object.defineProperty(exports, "__esModule", { value: true });
10exports.buildRelativePath = exports.findModule = exports.findModuleFromOptions = exports.ROUTING_MODULE_EXT = exports.MODULE_EXT = void 0;
11const core_1 = require("@angular-devkit/core");
12exports.MODULE_EXT = '.module.ts';
13exports.ROUTING_MODULE_EXT = '-routing.module.ts';
14/**
15 * Find the module referred by a set of options passed to the schematics.
16 */
17function findModuleFromOptions(host, options) {
18 // eslint-disable-next-line no-prototype-builtins
19 if (options.hasOwnProperty('skipImport') && options.skipImport) {
20 return undefined;
21 }
22 const moduleExt = options.moduleExt || exports.MODULE_EXT;
23 const routingModuleExt = options.routingModuleExt || exports.ROUTING_MODULE_EXT;
24 if (!options.module) {
25 const pathToCheck = (options.path || '') + '/' + options.name;
26 return core_1.normalize(findModule(host, pathToCheck, moduleExt, routingModuleExt));
27 }
28 else {
29 const modulePath = core_1.normalize(`/${options.path}/${options.module}`);
30 const componentPath = core_1.normalize(`/${options.path}/${options.name}`);
31 const moduleBaseName = core_1.normalize(modulePath).split('/').pop();
32 const candidateSet = new Set([core_1.normalize(options.path || '/')]);
33 for (let dir = modulePath; dir != core_1.NormalizedRoot; dir = core_1.dirname(dir)) {
34 candidateSet.add(dir);
35 }
36 for (let dir = componentPath; dir != core_1.NormalizedRoot; dir = core_1.dirname(dir)) {
37 candidateSet.add(dir);
38 }
39 const candidatesDirs = [...candidateSet].sort((a, b) => b.length - a.length);
40 for (const c of candidatesDirs) {
41 const candidateFiles = [
42 '',
43 `${moduleBaseName}.ts`,
44 `${moduleBaseName}${moduleExt}`,
45 ].map((x) => core_1.join(c, x));
46 for (const sc of candidateFiles) {
47 if (host.exists(sc)) {
48 return core_1.normalize(sc);
49 }
50 }
51 }
52 throw new Error(`Specified module '${options.module}' does not exist.\n` +
53 `Looked in the following directories:\n ${candidatesDirs.join('\n ')}`);
54 }
55}
56exports.findModuleFromOptions = findModuleFromOptions;
57/**
58 * Function to find the "closest" module to a generated file's path.
59 */
60function findModule(host, generateDir, moduleExt = exports.MODULE_EXT, routingModuleExt = exports.ROUTING_MODULE_EXT) {
61 let dir = host.getDir('/' + generateDir);
62 let foundRoutingModule = false;
63 while (dir) {
64 const allMatches = dir.subfiles.filter((p) => p.endsWith(moduleExt));
65 const filteredMatches = allMatches.filter((p) => !p.endsWith(routingModuleExt));
66 foundRoutingModule = foundRoutingModule || allMatches.length !== filteredMatches.length;
67 if (filteredMatches.length == 1) {
68 return core_1.join(dir.path, filteredMatches[0]);
69 }
70 else if (filteredMatches.length > 1) {
71 throw new Error('More than one module matches. Use the skip-import option to skip importing ' +
72 'the component into the closest module or use the module option to specify a module.');
73 }
74 dir = dir.parent;
75 }
76 const errorMsg = foundRoutingModule
77 ? 'Could not find a non Routing NgModule.' +
78 `\nModules with suffix '${routingModuleExt}' are strictly reserved for routing.` +
79 '\nUse the skip-import option to skip importing in NgModule.'
80 : 'Could not find an NgModule. Use the skip-import option to skip importing in NgModule.';
81 throw new Error(errorMsg);
82}
83exports.findModule = findModule;
84/**
85 * Build a relative path from one file path to another file path.
86 */
87function buildRelativePath(from, to) {
88 from = core_1.normalize(from);
89 to = core_1.normalize(to);
90 // Convert to arrays.
91 const fromParts = from.split('/');
92 const toParts = to.split('/');
93 // Remove file names (preserving destination)
94 fromParts.pop();
95 const toFileName = toParts.pop();
96 const relativePath = core_1.relative(core_1.normalize(fromParts.join('/') || '/'), core_1.normalize(toParts.join('/') || '/'));
97 let pathPrefix = '';
98 // Set the path prefix for same dir or child dir, parent dir starts with `..`
99 if (!relativePath) {
100 pathPrefix = '.';
101 }
102 else if (!relativePath.startsWith('.')) {
103 pathPrefix = `./`;
104 }
105 if (pathPrefix && !pathPrefix.endsWith('/')) {
106 pathPrefix += '/';
107 }
108 return pathPrefix + (relativePath ? relativePath + '/' : '') + toFileName;
109}
110exports.buildRelativePath = buildRelativePath;
Note: See TracBrowser for help on using the repository browser.