@o3r/schematics 10.0.0-prerelease.47 → 10.0.0-prerelease.49

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@o3r/schematics",
3
- "version": "10.0.0-prerelease.47",
3
+ "version": "10.0.0-prerelease.49",
4
4
  "description": "Schematics module of the Otter framework",
5
5
  "main": "./src/public_api.js",
6
6
  "typings": "./src/public_api.d.ts",
@@ -25,7 +25,7 @@
25
25
  "@angular-devkit/core": "~17.0.0",
26
26
  "@angular-devkit/schematics": "~17.0.0",
27
27
  "@angular/cli": "~17.0.0",
28
- "@o3r/telemetry": "^10.0.0-prerelease.47",
28
+ "@o3r/telemetry": "^10.0.0-prerelease.49",
29
29
  "@schematics/angular": "~17.0.0",
30
30
  "eslint": "^8.42.0",
31
31
  "rxjs": "^7.8.1",
@@ -71,10 +71,11 @@
71
71
  "@nx/eslint-plugin": "~17.2.0",
72
72
  "@nx/jest": "~17.2.0",
73
73
  "@nx/js": "~17.2.0",
74
- "@o3r/build-helpers": "^10.0.0-prerelease.47",
75
- "@o3r/eslint-plugin": "^10.0.0-prerelease.47",
76
- "@o3r/telemetry": "^10.0.0-prerelease.47",
74
+ "@o3r/build-helpers": "^10.0.0-prerelease.49",
75
+ "@o3r/eslint-plugin": "^10.0.0-prerelease.49",
76
+ "@o3r/telemetry": "^10.0.0-prerelease.49",
77
77
  "@schematics/angular": "~17.0.3",
78
+ "@stylistic/eslint-plugin-ts": "^1.5.4",
78
79
  "@types/jest": "~29.5.2",
79
80
  "@types/node": "^20.0.0",
80
81
  "@types/semver": "^7.3.13",
@@ -1 +1 @@
1
- {"version":3,"file":"angular-workspace.d.ts","sourceRoot":"","sources":["../../../src/interfaces/angular-workspace.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,QAAQ,IAAI,kBAAkB,EAC9B,MAAM,IAAI,iBAAiB,EAC3B,gBAAgB,EACjB,MAAM,0CAA0C,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,SAAS,CAAC;AAEzD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AACD,MAAM,WAAW,aAAa;IAC5B,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,8EAA8E;AAC9E,MAAM,WAAW,eAAe;IAC9B,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,qBAAqB,CAAC,EAAE;QACtB,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC/B,mBAAmB,CAAC,EAAE;QACpB,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC/B,iBAAiB,CAAC,EAAE;QAClB,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC/B,sBAAsB,CAAC,EAAE;QACvB,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC/B,UAAU,CAAC,EAAE;QACX,qBAAqB,CAAC,EAAE,OAAO,CAAC;QAChC,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,eAAe,GAAG;QACxB,2FAA2F;QAC3F,aAAa,CAAC,EAAE,uBAAuB,CAAC;KACzC,CAAC;CACH;AACD,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,aAAa,GAAG,SAAS,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,eAAgB,SAAQ,iBAAiB;IACxD,QAAQ,EAAE;QACN,CAAC,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;KACjC,CAAC;IACF,UAAU,CAAC,EAAE,mBAAmB,CAAC;CAClC"}
1
+ {"version":3,"file":"angular-workspace.d.ts","sourceRoot":"","sources":["../../../src/interfaces/angular-workspace.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,QAAQ,IAAI,kBAAkB,EAC9B,MAAM,IAAI,iBAAiB,EAC3B,gBAAgB,EACjB,MAAM,0CAA0C,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,SAAS,CAAC;AAEzD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AACD,MAAM,WAAW,aAAa;IAC5B,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,8EAA8E;AAC9E,MAAM,WAAW,eAAe;IAC9B,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,qBAAqB,CAAC,EAAE;QACtB,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC/B,mBAAmB,CAAC,EAAE;QACpB,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC/B,iBAAiB,CAAC,EAAE;QAClB,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC/B,sBAAsB,CAAC,EAAE;QACvB,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC/B,UAAU,CAAC,EAAE;QACX,qBAAqB,CAAC,EAAE,OAAO,CAAC;QAChC,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,eAAe,GAAG;QACxB,2FAA2F;QAC3F,aAAa,CAAC,EAAE,uBAAuB,CAAC;KACzC,CAAC;CACH;AACD,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,aAAa,GAAG,SAAS,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,eAAgB,SAAQ,iBAAiB;IACxD,QAAQ,EAAE;QACR,CAAC,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;KAC/B,CAAC;IACF,UAAU,CAAC,EAAE,mBAAmB,CAAC;CAClC"}
@@ -19,6 +19,7 @@ export * from './routes';
19
19
  export * from './sub-entry';
20
20
  export * from './template-property.helper';
21
21
  export * from './update-imports';
22
+ export * from './update-pipes';
22
23
  export * from './builder';
23
24
  export * from './wrapper';
24
25
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utility/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utility/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC"}
@@ -22,6 +22,7 @@ tslib_1.__exportStar(require("./routes"), exports);
22
22
  tslib_1.__exportStar(require("./sub-entry"), exports);
23
23
  tslib_1.__exportStar(require("./template-property.helper"), exports);
24
24
  tslib_1.__exportStar(require("./update-imports"), exports);
25
+ tslib_1.__exportStar(require("./update-pipes"), exports);
25
26
  tslib_1.__exportStar(require("./builder"), exports);
26
27
  tslib_1.__exportStar(require("./wrapper"), exports);
27
28
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utility/index.ts"],"names":[],"mappings":";;;AAAA,gDAAsB;AACtB,uDAA6B;AAC7B,sDAA4B;AAC5B,yDAA+B;AAC/B,wDAA8B;AAC9B,kDAAwB;AACxB,sDAA4B;AAC5B,uDAA6B;AAC7B,sDAA4B;AAC5B,oDAA0B;AAC1B,iDAAuB;AACvB,2DAAiC;AACjC,oDAA0B;AAC1B,qDAA2B;AAC3B,mEAAyC;AACzC,4DAAkC;AAClC,qDAA2B;AAC3B,mDAAyB;AACzB,sDAA4B;AAC5B,qEAA2C;AAC3C,2DAAiC;AACjC,oDAA0B;AAC1B,oDAA0B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utility/index.ts"],"names":[],"mappings":";;;AAAA,gDAAsB;AACtB,uDAA6B;AAC7B,sDAA4B;AAC5B,yDAA+B;AAC/B,wDAA8B;AAC9B,kDAAwB;AACxB,sDAA4B;AAC5B,uDAA6B;AAC7B,sDAA4B;AAC5B,oDAA0B;AAC1B,iDAAuB;AACvB,2DAAiC;AACjC,oDAA0B;AAC1B,qDAA2B;AAC3B,mEAAyC;AACzC,4DAAkC;AAClC,qDAA2B;AAC3B,mDAAyB;AACzB,sDAA4B;AAC5B,qEAA2C;AAC3C,2DAAiC;AACjC,yDAA+B;AAC/B,oDAA0B;AAC1B,oDAA0B"}
@@ -0,0 +1,15 @@
1
+ import { Rule } from '@angular-devkit/schematics';
2
+ /** Dictionary of pipes to be updated */
3
+ export type PipeReplacementInfo = Record<string, {
4
+ new: {
5
+ name: string;
6
+ import?: string;
7
+ };
8
+ import: string;
9
+ }>;
10
+ /**
11
+ * Returns a rule tu update pipes
12
+ * @param pipeReplacementInfo
13
+ */
14
+ export declare const updatePipes: (pipeReplacementInfo: PipeReplacementInfo) => Rule;
15
+ //# sourceMappingURL=update-pipes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-pipes.d.ts","sourceRoot":"","sources":["../../../src/utility/update-pipes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAA0B,MAAM,4BAA4B,CAAC;AAO1E,wCAAwC;AACxC,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAmD7G;;;GAGG;AACH,eAAO,MAAM,WAAW,wBAAyB,mBAAmB,KAAG,IAoDtE,CAAC"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updatePipes = void 0;
4
+ const node_path_1 = require("node:path");
5
+ const ts = require("typescript");
6
+ const ast_1 = require("./ast");
7
+ const component_1 = require("./component");
8
+ const loaders_1 = require("./loaders");
9
+ const applyChanges = (pipeReplacementInfo, ngDecorator, matchers, fileWithImports, templateFile, tree, context) => {
10
+ if (ts.isObjectLiteralExpression(ngDecorator.expression.arguments[0])) {
11
+ const importsProp = ngDecorator.expression.arguments[0].properties.find((prop) => ts.isPropertyAssignment(prop)
12
+ && ts.isIdentifier(prop.name)
13
+ && prop.name.text === 'imports'
14
+ && ts.isArrayLiteralExpression(prop.initializer));
15
+ if (importsProp) {
16
+ matchers.forEach((matcher) => {
17
+ const pipeName = matcher[1];
18
+ const importModuleRegexp = new RegExp(`\\b${pipeReplacementInfo[pipeName].import}\\b`, 'g');
19
+ if (importsProp.initializer.elements.some((element) => importModuleRegexp.test(element.getText()))) {
20
+ if (pipeReplacementInfo[pipeName].new.import) {
21
+ tree.overwrite(fileWithImports, tree.readText(fileWithImports).replaceAll(importModuleRegexp, pipeReplacementInfo[pipeName].new.import));
22
+ }
23
+ tree.overwrite(templateFile, tree.readText(templateFile).replaceAll(new RegExp(`\\|\\s*${pipeName}`, 'g'), `| ${pipeReplacementInfo[pipeName].new.name}`));
24
+ }
25
+ else {
26
+ context.logger.warn(`Deprecated pipe ${pipeName} was found in ${templateFile} `
27
+ + `but no associated import in ${fileWithImports}`
28
+ + `to be able to migrate to the new pipe ${pipeReplacementInfo[pipeName].new.name}.`);
29
+ }
30
+ });
31
+ }
32
+ }
33
+ };
34
+ const isNgModuleDecorator = (decorator) => ts.isCallExpression(decorator.expression)
35
+ && decorator.expression.expression
36
+ && ts.isIdentifier(decorator.expression.expression)
37
+ && decorator.expression.expression.text === 'NgModule';
38
+ /**
39
+ * Returns a rule tu update pipes
40
+ * @param pipeReplacementInfo
41
+ */
42
+ const updatePipes = (pipeReplacementInfo) => (tree, context) => {
43
+ const pipeRegex = new RegExp(`\\|\\s*(${Object.keys(pipeReplacementInfo).join('|')})`, 'g');
44
+ const files = (0, loaders_1.findFilesInTree)(tree.root, (file) => file.endsWith('.html'));
45
+ files.forEach((file) => {
46
+ const matchers = Array.from(file.content.toString().matchAll(pipeRegex)).filter((matcher) => !!pipeReplacementInfo[matcher[1]]);
47
+ if (matchers.length) {
48
+ const directory = (0, node_path_1.dirname)(file.path);
49
+ const baseFileName = (0, node_path_1.basename)(file.path, '.template.html');
50
+ const componentFile = (0, node_path_1.join)(directory, `${baseFileName}.component.ts`);
51
+ const moduleFile = (0, node_path_1.join)(directory, `${baseFileName}.module.ts`);
52
+ let standalone = false;
53
+ if (tree.exists(componentFile)) {
54
+ try {
55
+ const info = (0, component_1.getO3rComponentInfoOrThrowIfNotFound)(tree, componentFile);
56
+ standalone = info.standalone;
57
+ }
58
+ catch { }
59
+ }
60
+ if (standalone) {
61
+ const componentSourceFile = ts.createSourceFile(componentFile, tree.readText(componentFile), ts.ScriptTarget.ES2020, true);
62
+ const [ngClass] = componentSourceFile.statements.filter((statement) => ts.isClassDeclaration(statement)
63
+ && (0, component_1.isNgClassComponent)(statement));
64
+ const [ngDecorator] = ((ngClass && ts.getDecorators(ngClass)) || []).filter(component_1.isNgClassDecorator);
65
+ if (ngDecorator) {
66
+ applyChanges(pipeReplacementInfo, ngDecorator, matchers, componentFile, file.path, tree, context);
67
+ }
68
+ }
69
+ else if (tree.exists(moduleFile)) {
70
+ const moduleSourceFile = ts.createSourceFile(moduleFile, tree.readText(moduleFile), ts.ScriptTarget.ES2020, true);
71
+ const ngModuleClass = moduleSourceFile.statements.find((statement) => ts.isClassDeclaration(statement)
72
+ && !!(ts.getDecorators(statement) || []).find(isNgModuleDecorator));
73
+ const ngDecorator = ((ngModuleClass && ts.getDecorators(ngModuleClass)) || []).find(isNgModuleDecorator);
74
+ if (ngDecorator && (0, ast_1.isDecoratorWithArg)(ngDecorator)) {
75
+ applyChanges(pipeReplacementInfo, ngDecorator, matchers, moduleFile, file.path, tree, context);
76
+ }
77
+ }
78
+ }
79
+ });
80
+ };
81
+ exports.updatePipes = updatePipes;
82
+ //# sourceMappingURL=update-pipes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-pipes.js","sourceRoot":"","sources":["../../../src/utility/update-pipes.ts"],"names":[],"mappings":"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"}