@energycap/components 0.39.16-schematics.20240426-1446 → 0.39.16-schematics.20240430-1745

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@energycap/components",
3
- "version": "0.39.16-schematics.20240426-1446",
3
+ "version": "0.39.16-schematics.20240430-1745",
4
4
  "schematics": "./schematics/collection.json",
5
5
  "dependencies": {
6
6
  "tslib": "^2.0.0"
@@ -3,7 +3,8 @@
3
3
  "schematics": {
4
4
  "rxjs-7-upgrade": {
5
5
  "description": "Upgrade your project to RxJS 7",
6
- "factory": "./ng-generate/rxjs-7-upgrade/index#rxjs7Upgrade"
6
+ "factory": "./rxjs-7-upgrade/index#rxjs7Upgrade",
7
+ "schema": "./rxjs-7-upgrade/schema.json"
7
8
  }
8
9
  }
9
10
  }
@@ -0,0 +1,3 @@
1
+ import { Rule } from '@angular-devkit/schematics';
2
+ import { Schema as RxJSUpgradeSchema } from './schema';
3
+ export declare function rxjs7Upgrade(options: RxJSUpgradeSchema): Rule;
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.rxjs7Upgrade = void 0;
13
+ const ast_utils_1 = require("@schematics/angular/utility/ast-utils");
14
+ const change_1 = require("@schematics/angular/utility/change");
15
+ const path_1 = require("path");
16
+ const ts = require("typescript");
17
+ const typescript_1 = require("../utilities/typescript");
18
+ const workspace_1 = require("../utilities/workspace");
19
+ function rxjs7Upgrade(options) {
20
+ return (tree) => __awaiter(this, void 0, void 0, function* () {
21
+ const path = options.path || '/';
22
+ const workspace = yield (0, workspace_1.getWorkspace)(path, tree);
23
+ // Get all tsconfig paths from the workspace, including test tsconfigs
24
+ const tsConfigPaths = (0, workspace_1.getTsConfigPaths)(workspace, tree);
25
+ // The base path in the file system for the path argument, replacing all backslashes with forward slashes (for cross-system compatibility).
26
+ // The absolute file system path is needed for the typescript compiler to resolve files correctly.
27
+ const basePath = process.cwd().replace(/\\/g, path);
28
+ tsConfigPaths.forEach(tsConfigPath => {
29
+ const program = (0, typescript_1.createTsProgram)(tree, tsConfigPath, basePath);
30
+ const checker = program.getTypeChecker();
31
+ for (const sourceFile of program.getSourceFiles()) {
32
+ // Skip declaration files and external library files
33
+ if (sourceFile.isDeclarationFile || program.isSourceFileFromExternalLibrary(sourceFile)) {
34
+ continue;
35
+ }
36
+ const observableSymbols = ['Observable', 'Subject', 'BehaviorSubject', 'ReplaySubject', 'AsyncSubject'];
37
+ const toPromiseCalls = (0, ast_utils_1.findNodes)(sourceFile, ts.isCallExpression, undefined, true).filter(node => {
38
+ if (ts.isPropertyAccessExpression(node.expression) && node.expression.name.text === 'toPromise') {
39
+ const symbol = checker.getTypeAtLocation(node.expression.expression).symbol;
40
+ return symbol && observableSymbols.includes(symbol.name);
41
+ }
42
+ return false;
43
+ });
44
+ if (toPromiseCalls.length) {
45
+ const fileToEdit = (0, path_1.relative)(basePath, sourceFile.fileName);
46
+ const recorder = tree.beginUpdate(fileToEdit);
47
+ const changes = [];
48
+ const printer = ts.createPrinter();
49
+ // Add import for lastValueFrom
50
+ changes.push((0, ast_utils_1.insertImport)(sourceFile, fileToEdit, 'lastValueFrom', 'rxjs'));
51
+ // Replace toPromise calls with lastValueFrom
52
+ toPromiseCalls.forEach(node => {
53
+ if (ts.isPropertyAccessExpression(node.expression)) {
54
+ const newCallExpression = ts.factory.createCallExpression(ts.factory.createIdentifier('lastValueFrom'), undefined, [node.expression.expression]);
55
+ const newNodeText = printer.printNode(ts.EmitHint.Unspecified, newCallExpression, sourceFile);
56
+ const change = new change_1.ReplaceChange(fileToEdit, node.getStart(), node.getText(), newNodeText);
57
+ changes.push(change);
58
+ }
59
+ });
60
+ (0, change_1.applyToUpdateRecorder)(recorder, changes);
61
+ tree.commitUpdate(recorder);
62
+ }
63
+ }
64
+ });
65
+ });
66
+ }
67
+ exports.rxjs7Upgrade = rxjs7Upgrade;
68
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../projects/components/schematics/rxjs-7-upgrade/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export interface Schema {
2
+ /** Path to the angular workspace. */
3
+ path?: string;
4
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../projects/components/schematics/rxjs-7-upgrade/schema.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "EnergyCAP.RxJS7UpgradeSchema",
4
+ "title": "RxJS 7 Upgrade Schema",
5
+ "type": "object",
6
+ "properties": {
7
+ "path": {
8
+ "type": "string",
9
+ "format": "path",
10
+ "description": "The path to complete the upgrade.",
11
+ "visible": false
12
+ }
13
+ }
14
+ }
@@ -0,0 +1,7 @@
1
+ import { Tree } from '@angular-devkit/schematics';
2
+ import * as ts from 'typescript';
3
+ /** Parses the TSConfig file to be used in the TS Compiler Program. */
4
+ export declare function parseTsConfig(absoluteTsConfigPath: string): ts.ParsedCommandLine;
5
+ /** Creates a file host to be used with with a TS Compiler program. */
6
+ export declare function createTsCompilerHost(tree: Tree, options: ts.CompilerOptions, basePath: string): ts.CompilerHost;
7
+ export declare function createTsProgram(tree: Tree, tsConfigPath: string, basePath: string): ts.Program;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createTsProgram = exports.createTsCompilerHost = exports.parseTsConfig = void 0;
4
+ const path_1 = require("path");
5
+ const ts = require("typescript");
6
+ /** Parses the TSConfig file to be used in the TS Compiler Program. */
7
+ function parseTsConfig(absoluteTsConfigPath) {
8
+ const { config } = ts.readConfigFile(absoluteTsConfigPath, ts.sys.readFile);
9
+ const parseHost = {
10
+ useCaseSensitiveFileNames: ts.sys.useCaseSensitiveFileNames,
11
+ fileExists: ts.sys.fileExists,
12
+ readFile: ts.sys.readFile,
13
+ readDirectory: ts.sys.readDirectory
14
+ };
15
+ return ts.parseJsonConfigFileContent(config, parseHost, (0, path_1.dirname)(absoluteTsConfigPath), {});
16
+ }
17
+ exports.parseTsConfig = parseTsConfig;
18
+ /** Creates a file host to be used with with a TS Compiler program. */
19
+ function createTsCompilerHost(tree, options, basePath) {
20
+ const host = ts.createCompilerHost(options);
21
+ // Read files from the virtual tree to prevent conflicting changes between project migrations
22
+ host.readFile = (fileName) => {
23
+ var _a;
24
+ // The angular schematic tree reads files using paths relative to the project root
25
+ const filePath = (0, path_1.relative)(basePath, fileName);
26
+ const result = (_a = tree.read(filePath)) === null || _a === void 0 ? void 0 : _a.toString();
27
+ // Remove BOM header to prevent TSC parsing errors
28
+ return result === null || result === void 0 ? void 0 : result.replace(/^\uFEFF/, '');
29
+ };
30
+ return host;
31
+ }
32
+ exports.createTsCompilerHost = createTsCompilerHost;
33
+ function createTsProgram(tree, tsConfigPath, basePath) {
34
+ // Resolve the absolute file system path to the TSConfig file. This is needed for the TS Compiler to resolve files correctly.
35
+ const absoluteTsConfigPath = (0, path_1.resolve)(basePath, tsConfigPath);
36
+ const parsed = parseTsConfig(absoluteTsConfigPath);
37
+ const options = Object.assign(Object.assign({}, parsed.options), { skipLibCheck: true, skipDefaultLibCheck: true });
38
+ const host = createTsCompilerHost(tree, options, basePath);
39
+ return ts.createProgram(parsed.fileNames, options, host);
40
+ }
41
+ exports.createTsProgram = createTsProgram;
42
+ //# sourceMappingURL=typescript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../../projects/components/schematics/utilities/typescript.ts"],"names":[],"mappings":";;;AACA,+BAAkD;AAClD,iCAAiC;AAEjC,sEAAsE;AACtE,SAAgB,aAAa,CAAC,oBAA4B;IACxD,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,oBAAoB,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5E,MAAM,SAAS,GAAG;QAChB,yBAAyB,EAAE,EAAE,CAAC,GAAG,CAAC,yBAAyB;QAC3D,UAAU,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU;QAC7B,QAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ;QACzB,aAAa,EAAE,EAAE,CAAC,GAAG,CAAC,aAAa;KACpC,CAAC;IAEF,OAAO,EAAE,CAAC,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,IAAA,cAAO,EAAC,oBAAoB,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7F,CAAC;AAVD,sCAUC;AAED,sEAAsE;AACtE,SAAgB,oBAAoB,CAAC,IAAU,EAAE,OAA2B,EAAE,QAAgB;IAC5F,MAAM,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5C,6FAA6F;IAC7F,IAAI,CAAC,QAAQ,GAAG,CAAC,QAAgB,EAAE,EAAE;;QACnC,kFAAkF;QAClF,MAAM,QAAQ,GAAG,IAAA,eAAQ,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,0CAAE,QAAQ,EAAE,CAAC;QAC/C,kDAAkD;QAClD,OAAO,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC;AAXD,oDAWC;AAGD,SAAgB,eAAe,CAAC,IAAU,EAAE,YAAoB,EAAE,QAAgB;IAChF,6HAA6H;IAC7H,MAAM,oBAAoB,GAAG,IAAA,cAAO,EAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC;IACnD,MAAM,OAAO,mCAAQ,MAAM,CAAC,OAAO,KAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,GAAE,CAAC;IACrF,MAAM,IAAI,GAAG,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC3D,OAAO,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAC3D,CAAC;AAPD,0CAOC"}
@@ -0,0 +1,8 @@
1
+ import { workspaces } from '@angular-devkit/core';
2
+ import { Tree } from '@angular-devkit/schematics';
3
+ /** Creates a file host to be used with Angular-Devkit's workspace utilities */
4
+ export declare function createWorkspaceHost(tree: Tree): workspaces.WorkspaceHost;
5
+ /** Returns the Angular workspace definition for the given path. The path must be a directory containing an angular.json or .angular.json file. */
6
+ export declare function getWorkspace(path: string, tree: Tree): Promise<workspaces.WorkspaceDefinition>;
7
+ /** Returns all tsconfig paths from the angular workspace, including testing tsconfigs. */
8
+ export declare function getTsConfigPaths(workspace: workspaces.WorkspaceDefinition, tree: Tree): string[];
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.getTsConfigPaths = exports.getWorkspace = exports.createWorkspaceHost = void 0;
13
+ const core_1 = require("@angular-devkit/core");
14
+ const workspace_1 = require("@schematics/angular/utility/workspace");
15
+ /** Creates a file host to be used with Angular-Devkit's workspace utilities */
16
+ function createWorkspaceHost(tree) {
17
+ return {
18
+ readFile(path) {
19
+ return __awaiter(this, void 0, void 0, function* () {
20
+ const data = tree.read(path);
21
+ if (!data) {
22
+ throw new Error(`File not found: ${path}`);
23
+ }
24
+ return core_1.virtualFs.fileBufferToString(data);
25
+ });
26
+ },
27
+ writeFile(path, data) {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ return tree.overwrite(path, data);
30
+ });
31
+ },
32
+ isDirectory(path) {
33
+ return __awaiter(this, void 0, void 0, function* () {
34
+ return !tree.exists(path) && tree.getDir(path).subfiles.length > 0;
35
+ });
36
+ },
37
+ isFile(path) {
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ return tree.exists(path);
40
+ });
41
+ }
42
+ };
43
+ }
44
+ exports.createWorkspaceHost = createWorkspaceHost;
45
+ /** Returns the Angular workspace definition for the given path. The path must be a directory containing an angular.json or .angular.json file. */
46
+ function getWorkspace(path, tree) {
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ const host = createWorkspaceHost(tree);
49
+ const { workspace } = yield core_1.workspaces.readWorkspace(path, host);
50
+ return workspace;
51
+ });
52
+ }
53
+ exports.getWorkspace = getWorkspace;
54
+ /** Returns all tsconfig paths from the angular workspace, including testing tsconfigs. */
55
+ function getTsConfigPaths(workspace, tree) {
56
+ const buildPaths = new Set();
57
+ const testPaths = new Set();
58
+ for (const [name, target] of (0, workspace_1.allWorkspaceTargets)(workspace)) {
59
+ if (name !== 'build' && name !== 'test') {
60
+ continue;
61
+ }
62
+ for (const [, options] of (0, workspace_1.allTargetOptions)(target)) {
63
+ if (options.tsConfig && typeof options.tsConfig === 'string' && tree.exists(options.tsConfig)) {
64
+ const normalizedPath = (0, core_1.normalize)(options.tsConfig);
65
+ name === 'build' ? buildPaths.add(normalizedPath) : testPaths.add(normalizedPath);
66
+ }
67
+ }
68
+ }
69
+ return [...buildPaths, ...testPaths];
70
+ }
71
+ exports.getTsConfigPaths = getTsConfigPaths;
72
+ //# sourceMappingURL=workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../../projects/components/schematics/utilities/workspace.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+CAAwE;AAExE,qEAA8F;AAE9F,+EAA+E;AAC/E,SAAgB,mBAAmB,CAAC,IAAU;IAC5C,OAAO;QACC,QAAQ,CAAC,IAAY;;gBACzB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7B,IAAI,CAAC,IAAI,EAAE;oBACT,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;iBAC5C;gBACD,OAAO,gBAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC5C,CAAC;SAAA;QACK,SAAS,CAAC,IAAY,EAAE,IAAY;;gBACxC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACpC,CAAC;SAAA;QACK,WAAW,CAAC,IAAY;;gBAC5B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YACrE,CAAC;SAAA;QACK,MAAM,CAAC,IAAY;;gBACvB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;SAAA;KACF,CAAA;AACH,CAAC;AAnBD,kDAmBC;AAED,kJAAkJ;AAClJ,SAAsB,YAAY,CAAC,IAAY,EAAE,IAAU;;QACzD,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,iBAAU,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjE,OAAO,SAAS,CAAC;IACnB,CAAC;CAAA;AAJD,oCAIC;AAED,0FAA0F;AAC1F,SAAgB,gBAAgB,CAAC,SAAyC,EAAE,IAAU;IACpF,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAEpC,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAA,+BAAmB,EAAC,SAAS,CAAC,EAAE;QAC3D,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,EAAE;YACvC,SAAS;SACV;QAED,KAAK,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,IAAA,4BAAgB,EAAC,MAAM,CAAC,EAAE;YAClD,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAC7F,MAAM,cAAc,GAAG,IAAA,gBAAS,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACnD,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;aACnF;SACF;KACF;IAED,OAAO,CAAC,GAAG,UAAU,EAAE,GAAG,SAAS,CAAC,CAAC;AACvC,CAAC;AAlBD,4CAkBC"}
@@ -1,2 +0,0 @@
1
- import { Rule } from '@angular-devkit/schematics';
2
- export declare function rxjs7Upgrade(): Rule;
@@ -1,140 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.rxjs7Upgrade = void 0;
13
- const core_1 = require("@angular-devkit/core");
14
- const ast_utils_1 = require("@schematics/angular/utility/ast-utils");
15
- const change_1 = require("@schematics/angular/utility/change");
16
- const workspace_1 = require("@schematics/angular/utility/workspace");
17
- const path_1 = require("path");
18
- const ts = require("typescript");
19
- function rxjs7Upgrade() {
20
- return (tree) => __awaiter(this, void 0, void 0, function* () {
21
- const workspaceHost = createWorkspaceHost(tree);
22
- const { workspace } = yield core_1.workspaces.readWorkspace('/', workspaceHost);
23
- // Get all tsconfig paths from the workspace, including test tsconfigs
24
- const tsConfigPaths = getTsConfigPaths(workspace, tree);
25
- // The base path in the file system for the workspace. This is needed for the typescript compiler to resolve files correctly.
26
- const basePath = process.cwd().replace(/\\/g, '/');
27
- tsConfigPaths.forEach(tsConfigPath => {
28
- const program = createTsProgram(tree, tsConfigPath, basePath);
29
- const checker = program.getTypeChecker();
30
- for (const sourceFile of program.getSourceFiles()) {
31
- // Skip declaration files and external library files
32
- if (sourceFile.isDeclarationFile || program.isSourceFileFromExternalLibrary(sourceFile)) {
33
- continue;
34
- }
35
- const observables = ['Observable', 'Subject', 'BehaviorSubject', 'ReplaySubject', 'AsyncSubject'];
36
- const toPromiseCalls = (0, ast_utils_1.findNodes)(sourceFile, ts.isCallExpression, undefined, true).filter(node => {
37
- if (ts.isPropertyAccessExpression(node.expression) && node.expression.name.text === 'toPromise') {
38
- const symbol = checker.getTypeAtLocation(node.expression.expression).symbol;
39
- return symbol && observables.includes(symbol.name);
40
- }
41
- return false;
42
- });
43
- if (toPromiseCalls.length) {
44
- const fileToEdit = (0, path_1.relative)(basePath, sourceFile.fileName);
45
- const recorder = tree.beginUpdate(fileToEdit);
46
- const changes = [];
47
- const printer = ts.createPrinter();
48
- // Add import for lastValueFrom
49
- changes.push((0, ast_utils_1.insertImport)(sourceFile, fileToEdit, 'lastValueFrom', 'rxjs'));
50
- // Replace toPromise calls with lastValueFrom
51
- toPromiseCalls.forEach(node => {
52
- if (ts.isPropertyAccessExpression(node.expression)) {
53
- const newCallExpression = ts.factory.createCallExpression(ts.factory.createIdentifier('lastValueFrom'), undefined, [node.expression.expression]);
54
- const newNodeText = printer.printNode(ts.EmitHint.Unspecified, newCallExpression, sourceFile);
55
- const change = new change_1.ReplaceChange(fileToEdit, node.getStart(), node.getText(), newNodeText);
56
- changes.push(change);
57
- }
58
- });
59
- (0, change_1.applyToUpdateRecorder)(recorder, changes);
60
- tree.commitUpdate(recorder);
61
- }
62
- }
63
- });
64
- });
65
- }
66
- exports.rxjs7Upgrade = rxjs7Upgrade;
67
- function createWorkspaceHost(tree) {
68
- return {
69
- readFile(path) {
70
- return __awaiter(this, void 0, void 0, function* () {
71
- const data = tree.read(path);
72
- if (!data) {
73
- throw new Error(`File not found: ${path}`);
74
- }
75
- return core_1.virtualFs.fileBufferToString(data);
76
- });
77
- },
78
- writeFile(path, data) {
79
- return __awaiter(this, void 0, void 0, function* () {
80
- return tree.overwrite(path, data);
81
- });
82
- },
83
- isDirectory(path) {
84
- return __awaiter(this, void 0, void 0, function* () {
85
- return !tree.exists(path) && tree.getDir(path).subfiles.length > 0;
86
- });
87
- },
88
- isFile(path) {
89
- return __awaiter(this, void 0, void 0, function* () {
90
- return tree.exists(path);
91
- });
92
- }
93
- };
94
- }
95
- function getTsConfigPaths(workspace, tree) {
96
- const buildPaths = new Set();
97
- const testPaths = new Set();
98
- for (const [name, target] of (0, workspace_1.allWorkspaceTargets)(workspace)) {
99
- if (name !== 'build' && name !== 'test') {
100
- continue;
101
- }
102
- for (const [, options] of (0, workspace_1.allTargetOptions)(target)) {
103
- if (options.tsConfig && typeof options.tsConfig === 'string' && tree.exists(options.tsConfig)) {
104
- const normalizedPath = (0, core_1.normalize)(options.tsConfig);
105
- name === 'build' ? buildPaths.add(normalizedPath) : testPaths.add(normalizedPath);
106
- }
107
- }
108
- }
109
- return [...buildPaths, ...testPaths];
110
- }
111
- function createTsProgram(tree, tsConfigPath, basePath) {
112
- tsConfigPath = (0, path_1.resolve)(basePath, tsConfigPath);
113
- const parsed = parseTsConfig(tsConfigPath, (0, path_1.dirname)(tsConfigPath));
114
- const options = Object.assign(Object.assign({}, parsed.options), { skipLibCheck: true, skipDefaultLibCheck: true });
115
- const host = createTsCompilerHost(tree, options, basePath);
116
- return ts.createProgram(parsed.fileNames, options, host);
117
- }
118
- function parseTsConfig(tsConfigPath, basePath) {
119
- const { config } = ts.readConfigFile(tsConfigPath, ts.sys.readFile);
120
- const parseHost = {
121
- useCaseSensitiveFileNames: ts.sys.useCaseSensitiveFileNames,
122
- fileExists: ts.sys.fileExists,
123
- readFile: ts.sys.readFile,
124
- readDirectory: ts.sys.readDirectory
125
- };
126
- return ts.parseJsonConfigFileContent(config, parseHost, basePath, {});
127
- }
128
- function createTsCompilerHost(tree, options, basePath) {
129
- const host = ts.createCompilerHost(options);
130
- // Read files from the virtual tree to prevent conflicting changes between project migrations
131
- host.readFile = (fileName) => {
132
- var _a;
133
- const relativePath = (0, path_1.relative)(basePath, fileName);
134
- const result = (_a = tree.read(relativePath)) === null || _a === void 0 ? void 0 : _a.toString();
135
- // Remove BOM header to prevent TSC parsing errors
136
- return result === null || result === void 0 ? void 0 : result.replace(/^\uFEFF/, '');
137
- };
138
- return host;
139
- }
140
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../projects/components/schematics/ng-generate/rxjs-7-upgrade/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+CAAwE;AAExE,qEAAgF;AAChF,+DAAkG;AAClG,qEAA8F;AAC9F,+BAAkD;AAClD,iCAAiC;AAEjC,SAAgB,YAAY;IAC1B,OAAO,CAAO,IAAU,EAAE,EAAE;QAC1B,MAAM,aAAa,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,iBAAU,CAAC,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAEzE,sEAAsE;QACtE,MAAM,aAAa,GAAG,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACxD,6HAA6H;QAC7H,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAEnD,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YACnC,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;YAEzC,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,cAAc,EAAE,EAAE;gBACjD,oDAAoD;gBACpD,IAAI,UAAU,CAAC,iBAAiB,IAAI,OAAO,CAAC,+BAA+B,CAAC,UAAU,CAAC,EAAE;oBACvF,SAAS;iBACV;gBAED,MAAM,WAAW,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;gBAElG,MAAM,cAAc,GAAG,IAAA,qBAAS,EAAC,UAAU,EAAE,EAAE,CAAC,gBAAgB,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;oBAC/F,IAAI,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;wBAC/F,MAAM,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;wBAC5E,OAAO,MAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;qBACpD;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC,CAAC,CAAC;gBAEH,IAAI,cAAc,CAAC,MAAM,EAAE;oBACzB,MAAM,UAAU,GAAG,IAAA,eAAQ,EAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;oBAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;oBAC9C,MAAM,OAAO,GAAa,EAAE,CAAC;oBAC7B,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC;oBAEnC,+BAA+B;oBAC/B,OAAO,CAAC,IAAI,CAAC,IAAA,wBAAY,EAAC,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;oBAE5E,6CAA6C;oBAC7C,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;wBAC5B,IAAI,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;4BAClD,MAAM,iBAAiB,GAAG,EAAE,CAAC,OAAO,CAAC,oBAAoB,CACvD,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAC5C,SAAS,EACT,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAC7B,CAAC;4BACF,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;4BAC9F,MAAM,MAAM,GAAG,IAAI,sBAAa,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;4BAC3F,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;yBACtB;oBACH,CAAC,CAAC,CAAC;oBAEH,IAAA,8BAAqB,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;oBACzC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;iBAC7B;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAA,CAAA;AACH,CAAC;AA3DD,oCA2DC;AAED,SAAS,mBAAmB,CAAC,IAAU;IACrC,OAAO;QACC,QAAQ,CAAC,IAAY;;gBACzB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7B,IAAI,CAAC,IAAI,EAAE;oBACT,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;iBAC5C;gBACD,OAAO,gBAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC5C,CAAC;SAAA;QACK,SAAS,CAAC,IAAY,EAAE,IAAY;;gBACxC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACpC,CAAC;SAAA;QACK,WAAW,CAAC,IAAY;;gBAC5B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YACrE,CAAC;SAAA;QACK,MAAM,CAAC,IAAY;;gBACvB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;SAAA;KACF,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,SAAyC,EAAE,IAAU;IAC7E,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAEpC,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAA,+BAAmB,EAAC,SAAS,CAAC,EAAE;QAC3D,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,EAAE;YACvC,SAAS;SACV;QAED,KAAK,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,IAAA,4BAAgB,EAAC,MAAM,CAAC,EAAE;YAClD,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAC7F,MAAM,cAAc,GAAG,IAAA,gBAAS,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACnD,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;aACnF;SACF;KACF;IAED,OAAO,CAAC,GAAG,UAAU,EAAE,GAAG,SAAS,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,eAAe,CAAC,IAAU,EAAE,YAAoB,EAAE,QAAgB;IACzE,YAAY,GAAG,IAAA,cAAO,EAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,EAAE,IAAA,cAAO,EAAC,YAAY,CAAC,CAAC,CAAC;IAClE,MAAM,OAAO,mCAAQ,MAAM,CAAC,OAAO,KAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,GAAE,CAAC;IACrF,MAAM,IAAI,GAAG,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC3D,OAAO,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,aAAa,CAAC,YAAoB,EAAE,QAAgB;IAC3D,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,YAAY,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpE,MAAM,SAAS,GAAG;QAChB,yBAAyB,EAAE,EAAE,CAAC,GAAG,CAAC,yBAAyB;QAC3D,UAAU,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU;QAC7B,QAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ;QACzB,aAAa,EAAE,EAAE,CAAC,GAAG,CAAC,aAAa;KACpC,CAAC;IAEF,OAAO,EAAE,CAAC,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAU,EAAE,OAA2B,EAAE,QAAgB;IACrF,MAAM,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5C,6FAA6F;IAC7F,IAAI,CAAC,QAAQ,GAAG,CAAC,QAAgB,EAAE,EAAE;;QACnC,MAAM,YAAY,GAAG,IAAA,eAAQ,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,0CAAE,QAAQ,EAAE,CAAC;QACnD,kDAAkD;QAClD,OAAO,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC"}