From 4828e9a13df5c87d97c3fcc3be0783f677e67f86 Mon Sep 17 00:00:00 2001 From: Alexander M Date: Tue, 2 Jul 2024 10:22:07 +0300 Subject: [PATCH 1/7] Adding schema to template dependency 13.2.x --- packages/core/types/TemplateDependency.ts | 3 +++ packages/core/typescript/TypeScriptFileUpdate.ts | 10 +++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/core/types/TemplateDependency.ts b/packages/core/types/TemplateDependency.ts index 8012b4150..01bd07dbf 100644 --- a/packages/core/types/TemplateDependency.ts +++ b/packages/core/types/TemplateDependency.ts @@ -9,6 +9,9 @@ export interface TemplateDependency { /** Add an identifier into `ngModule` provides metadata */ provide?: string | string[]; + /** Add an identifier into `ngModule` schema metadata */ + schema?: string | string[]; + /** The package/path(TBD) to import the dependency from */ from?: string; diff --git a/packages/core/typescript/TypeScriptFileUpdate.ts b/packages/core/typescript/TypeScriptFileUpdate.ts index 943c68e21..9b2a1af53 100644 --- a/packages/core/typescript/TypeScriptFileUpdate.ts +++ b/packages/core/typescript/TypeScriptFileUpdate.ts @@ -25,6 +25,7 @@ export class TypeScriptFileUpdate { declarations: string[], imports: Array<{ name: string, root: boolean, standalone?: boolean }>, providers: string[], + schemas: string[], exports: string[] }; @@ -141,13 +142,14 @@ export class TypeScriptFileUpdate { declare: this.asArray(dep.declare, variables), import: this.asArray(dep.import, variables), provide: this.asArray(dep.provide, variables), + schema: this.asArray(dep.schema, variables), // tslint:disable-next-line:object-literal-sort-keys export: this.asArray(dep.export, variables) }; if (dep.from) { // request import - const identifiers = [...copy.import, ...copy.declare, ...copy.provide]; + const identifiers = [...copy.import, ...copy.declare, ...copy.provide, ...copy.schema]; this.requestImport(identifiers, Util.applyConfigTransformation(dep.from, variables)); } const imports = copy.import @@ -163,6 +165,10 @@ export class TypeScriptFileUpdate { .filter(x => !this.ngMetaEdits.providers.find(p => p === x)); this.ngMetaEdits.providers.push(...providers); + const schemas = copy.schema + .filter(x => !this.ngMetaEdits.schemas.find(s => s === x)); + this.ngMetaEdits.schemas.push(...schemas); + const exportsArr = copy.export .filter(x => !this.ngMetaEdits.exports.find(p => p === x)); this.ngMetaEdits.exports.push(...exportsArr); @@ -249,6 +255,7 @@ export class TypeScriptFileUpdate { declarations: [], imports: [], providers: [], + schemas: [], exports: [] }; this.createdStringLiterals = []; @@ -557,6 +564,7 @@ export class TypeScriptFileUpdate { break; case "declarations": case "providers": + case "schemas": case "exports": arrayExpr = ts.factory.createArrayLiteralExpression( this.ngMetaEdits[prop].map(x => ts.factory.createIdentifier(x)) From dad34a7a5a9300522005d9a8afe4c42a554e7e77 Mon Sep 17 00:00:00 2001 From: Alexander M Date: Thu, 4 Jul 2024 11:11:23 +0300 Subject: [PATCH 2/7] Adding support for Reveal dashboard for Standalone --- .../core/typescript/TypeScriptFileUpdate.ts | 38 ++++++++++++++----- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/packages/core/typescript/TypeScriptFileUpdate.ts b/packages/core/typescript/TypeScriptFileUpdate.ts index 9b2a1af53..cd80e41af 100644 --- a/packages/core/typescript/TypeScriptFileUpdate.ts +++ b/packages/core/typescript/TypeScriptFileUpdate.ts @@ -25,7 +25,7 @@ export class TypeScriptFileUpdate { declarations: string[], imports: Array<{ name: string, root: boolean, standalone?: boolean }>, providers: string[], - schemas: string[], + schemas: Array<{ name: string, root: boolean, standalone?: boolean }>, exports: string[] }; @@ -53,8 +53,8 @@ export class TypeScriptFileUpdate { } // should we support both standalone and module-based components in the same app? - if (this.ngMetaEdits.imports.some(x => x.standalone)) { - transforms.push(this.componentMetaTransformer); + if (this.ngMetaEdits.imports.some(x => x.standalone) || (this.ngMetaEdits.schemas.some(x => x.standalone))) { + transforms.push(this.componentMetaTransformer); } else if (Object.keys(this.ngMetaEdits).filter(x => this.ngMetaEdits[x].length).length) { transforms.push(this.ngModuleTransformer); } @@ -166,7 +166,8 @@ export class TypeScriptFileUpdate { this.ngMetaEdits.providers.push(...providers); const schemas = copy.schema - .filter(x => !this.ngMetaEdits.schemas.find(s => s === x)); + .map(x => ({ name: x, root: dep.root })) + .filter(x => !this.ngMetaEdits.schemas.find(s => s.name === x.name)); this.ngMetaEdits.schemas.push(...schemas); const exportsArr = copy.export @@ -180,7 +181,8 @@ export class TypeScriptFileUpdate { public addStandaloneImport(dep: TemplateDependency, variables?: { [key: string]: string }) { const copy = { import: this.asArray(dep.import, variables), - provide: this.asArray(dep.provide, variables) + provide: this.asArray(dep.provide, variables), + schema: this.asArray(dep.schema, variables) }; if (dep.from) { // request import @@ -192,6 +194,11 @@ export class TypeScriptFileUpdate { .map(x => ({ name: x, root: dep.root, standalone: true })) .filter(x => !this.ngMetaEdits.imports.find(i => i.name === x.name)); this.ngMetaEdits.imports.push(...imports); + + const schemas = copy.schema + .map(x => ({ name: x, root: dep.root, standalone: true})) + .filter(x => !this.ngMetaEdits.schemas.find(i => i.name === x.name)); + this.ngMetaEdits.schemas.push(...schemas); } /** @@ -627,18 +634,29 @@ export class TypeScriptFileUpdate { (context: ts.TransformationContext) => (rootNode: T) => { const visitComponent: ts.Visitor = (node: ts.Node): ts.Node => { let importsExpr = null; + let schemasExpr = null; const prop = "imports"; + const schemasProp = "schemas"; if (node.kind === ts.SyntaxKind.ObjectLiteralExpression && node.parent && node.parent.kind === ts.SyntaxKind.CallExpression) { const obj = (node as ts.ObjectLiteralExpression); const objProperties = ts.visitNodes(obj.properties, visitor); const newProps = []; - const importDeps = this.ngMetaEdits.imports; - importsExpr = ts.factory.createArrayLiteralExpression( - importDeps.map(x => TsUtils.createIdentifier(x.name)) - ); - newProps.push(ts.factory.createPropertyAssignment(prop, importsExpr)); + if (this.ngMetaEdits.imports.some(x => x.standalone)) { + const importDeps = this.ngMetaEdits.imports; + importsExpr = ts.factory.createArrayLiteralExpression( + importDeps.map(x => TsUtils.createIdentifier(x.name)) + ); + newProps.push(ts.factory.createPropertyAssignment(prop, importsExpr)); + } + if (this.ngMetaEdits.schemas.some(x => x.standalone)) { + const schemaDeps = this.ngMetaEdits.schemas; + schemasExpr = ts.factory.createArrayLiteralExpression( + schemaDeps.map(x => TsUtils.createIdentifier(x.name)) + ); + newProps.push(ts.factory.createPropertyAssignment(schemasProp, schemasExpr)); + } return context.factory.updateObjectLiteralExpression(obj, [ ...objProperties, ...newProps From e2e9f04a0ad11c854b2773fdb860b2e78723ac7f Mon Sep 17 00:00:00 2001 From: lipata Date: Thu, 4 Jul 2024 19:49:57 +0300 Subject: [PATCH 3/7] chore: release 13.2.4-beta.1 --- packages/cli/package.json | 6 +++--- packages/core/package.json | 2 +- packages/igx-templates/package.json | 4 ++-- packages/ng-schematics/package.json | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 7f469e1ea..faa5dcf0c 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "igniteui-cli", - "version": "13.2.2", + "version": "13.2.4-beta.1", "description": "CLI tool for creating Ignite UI projects", "keywords": [ "CLI", @@ -78,8 +78,8 @@ "all": true }, "dependencies": { - "@igniteui/angular-templates": "~17.2.1322", - "@igniteui/cli-core": "~13.2.2", + "@igniteui/angular-templates": "~17.2.1324-beta.1", + "@igniteui/cli-core": "~13.2.4-beta.1", "chalk": "^2.3.2", "fs-extra": "^3.0.1", "glob": "^7.1.2", diff --git a/packages/core/package.json b/packages/core/package.json index 110e2100a..8020fd690 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@igniteui/cli-core", - "version": "13.2.2", + "version": "13.2.4-beta.1", "description": "Base types and functionality for Ignite UI CLI", "repository": { "type": "git", diff --git a/packages/igx-templates/package.json b/packages/igx-templates/package.json index 1667f1ef0..c17db5b76 100644 --- a/packages/igx-templates/package.json +++ b/packages/igx-templates/package.json @@ -1,6 +1,6 @@ { "name": "@igniteui/angular-templates", - "version": "17.2.1322", + "version": "17.2.1324-beta.1", "description": "Templates for Ignite UI for Angular projects and components", "repository": { "type": "git", @@ -12,7 +12,7 @@ "author": "Infragistics", "license": "MIT", "dependencies": { - "@igniteui/cli-core": "~13.2.2", + "@igniteui/cli-core": "~13.2.4-beta.1", "typescript": "~5.4.3" } } diff --git a/packages/ng-schematics/package.json b/packages/ng-schematics/package.json index 9aaff405d..6fb75d12b 100644 --- a/packages/ng-schematics/package.json +++ b/packages/ng-schematics/package.json @@ -1,6 +1,6 @@ { "name": "@igniteui/angular-schematics", - "version": "17.2.1322", + "version": "17.2.1324-beta.1", "description": "Ignite UI for Angular Schematics for ng new and ng generate", "repository": { "type": "git", @@ -20,8 +20,8 @@ "dependencies": { "@angular-devkit/core": "~14.0.0", "@angular-devkit/schematics": "~14.0.0", - "@igniteui/angular-templates": "~17.2.1322", - "@igniteui/cli-core": "~13.2.2", + "@igniteui/angular-templates": "~17.2.1324-beta.1", + "@igniteui/cli-core": "~13.2.4-beta.1", "@schematics/angular": "~14.0.0", "rxjs": "^6.6.3" }, From cb324b5dbc5392711e34334f2dc82ad0c6f92974 Mon Sep 17 00:00:00 2001 From: Alexander M Date: Fri, 5 Jul 2024 12:59:09 +0300 Subject: [PATCH 4/7] Add missing import for Standalone --- packages/core/typescript/TypeScriptFileUpdate.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/typescript/TypeScriptFileUpdate.ts b/packages/core/typescript/TypeScriptFileUpdate.ts index cd80e41af..e40aa46c9 100644 --- a/packages/core/typescript/TypeScriptFileUpdate.ts +++ b/packages/core/typescript/TypeScriptFileUpdate.ts @@ -186,7 +186,7 @@ export class TypeScriptFileUpdate { }; if (dep.from) { // request import - const identifiers = [...copy.import, ...copy.provide]; + const identifiers = [...copy.import, ...copy.provide, ...copy.schema]; this.requestImport(identifiers, Util.applyConfigTransformation(dep.from, variables)); } From 1956243ab0244bfeb94c8843a6b3522e9293228f Mon Sep 17 00:00:00 2001 From: Alexander M Date: Fri, 5 Jul 2024 13:02:23 +0300 Subject: [PATCH 5/7] chore: release 13.2.4-beta.2 --- packages/cli/package.json | 6 +++--- packages/core/package.json | 2 +- packages/igx-templates/package.json | 4 ++-- packages/ng-schematics/package.json | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index faa5dcf0c..a7303a07a 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "igniteui-cli", - "version": "13.2.4-beta.1", + "version": "13.2.4-beta.2", "description": "CLI tool for creating Ignite UI projects", "keywords": [ "CLI", @@ -78,8 +78,8 @@ "all": true }, "dependencies": { - "@igniteui/angular-templates": "~17.2.1324-beta.1", - "@igniteui/cli-core": "~13.2.4-beta.1", + "@igniteui/angular-templates": "~17.2.1324-beta.2", + "@igniteui/cli-core": "~13.2.4-beta.2", "chalk": "^2.3.2", "fs-extra": "^3.0.1", "glob": "^7.1.2", diff --git a/packages/core/package.json b/packages/core/package.json index 8020fd690..da87d4907 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@igniteui/cli-core", - "version": "13.2.4-beta.1", + "version": "13.2.4-beta.2", "description": "Base types and functionality for Ignite UI CLI", "repository": { "type": "git", diff --git a/packages/igx-templates/package.json b/packages/igx-templates/package.json index c17db5b76..8ded2fbac 100644 --- a/packages/igx-templates/package.json +++ b/packages/igx-templates/package.json @@ -1,6 +1,6 @@ { "name": "@igniteui/angular-templates", - "version": "17.2.1324-beta.1", + "version": "17.2.1324-beta.2", "description": "Templates for Ignite UI for Angular projects and components", "repository": { "type": "git", @@ -12,7 +12,7 @@ "author": "Infragistics", "license": "MIT", "dependencies": { - "@igniteui/cli-core": "~13.2.4-beta.1", + "@igniteui/cli-core": "~13.2.4-beta.2", "typescript": "~5.4.3" } } diff --git a/packages/ng-schematics/package.json b/packages/ng-schematics/package.json index 6fb75d12b..2ba5a7af7 100644 --- a/packages/ng-schematics/package.json +++ b/packages/ng-schematics/package.json @@ -1,6 +1,6 @@ { "name": "@igniteui/angular-schematics", - "version": "17.2.1324-beta.1", + "version": "17.2.1324-beta.2", "description": "Ignite UI for Angular Schematics for ng new and ng generate", "repository": { "type": "git", @@ -20,8 +20,8 @@ "dependencies": { "@angular-devkit/core": "~14.0.0", "@angular-devkit/schematics": "~14.0.0", - "@igniteui/angular-templates": "~17.2.1324-beta.1", - "@igniteui/cli-core": "~13.2.4-beta.1", + "@igniteui/angular-templates": "~17.2.1324-beta.2", + "@igniteui/cli-core": "~13.2.4-beta.2", "@schematics/angular": "~14.0.0", "rxjs": "^6.6.3" }, From 3b4fd9dd8cd13aa7daf6aa44ab271768197ee63f Mon Sep 17 00:00:00 2001 From: jackofdiamond5 Date: Tue, 9 Jul 2024 16:14:42 +0300 Subject: [PATCH 6/7] refactor(tsfu): update transformers to include schemas meta --- .../core/typescript/TypeScriptFileUpdate.ts | 62 ++++++++----------- 1 file changed, 27 insertions(+), 35 deletions(-) diff --git a/packages/core/typescript/TypeScriptFileUpdate.ts b/packages/core/typescript/TypeScriptFileUpdate.ts index e40aa46c9..4fab9e3aa 100644 --- a/packages/core/typescript/TypeScriptFileUpdate.ts +++ b/packages/core/typescript/TypeScriptFileUpdate.ts @@ -25,7 +25,7 @@ export class TypeScriptFileUpdate { declarations: string[], imports: Array<{ name: string, root: boolean, standalone?: boolean }>, providers: string[], - schemas: Array<{ name: string, root: boolean, standalone?: boolean }>, + schemas: Array<{ name: string, standalone?: boolean }>, exports: string[] }; @@ -561,24 +561,19 @@ export class TypeScriptFileUpdate { const objProperties = ts.visitNodes(obj.properties, visitor); const newProps = []; for (const prop of missingProperties) { - let arrayExpr; - switch (prop) { - case "imports": - const importDeps = this.ngMetaEdits.imports; - arrayExpr = ts.factory.createArrayLiteralExpression( - importDeps.map(x => TsUtils.createIdentifier(x.name, x.root ? "forRoot" : "")) - ); - break; - case "declarations": - case "providers": - case "schemas": - case "exports": - arrayExpr = ts.factory.createArrayLiteralExpression( - this.ngMetaEdits[prop].map(x => ts.factory.createIdentifier(x)) - ); - break; + if (this.ngMetaEdits[prop].length) { + const expr = ts.factory.createArrayLiteralExpression( + this.ngMetaEdits[prop].map(x => { + if (typeof x === "string") { + return TsUtils.createIdentifier(x); + } + if (typeof x === "object" && "name" in x) { + return TsUtils.createIdentifier(x.name, x.root ? "forRoot" : "") + } + }) + ); + newProps.push(ts.factory.createPropertyAssignment(prop, expr)); } - newProps.push(ts.factory.createPropertyAssignment(prop, arrayExpr)); } return ts.factory.updateObjectLiteralExpression(obj, [ @@ -600,6 +595,11 @@ export class TypeScriptFileUpdate { .filter(x => alreadyImported.indexOf(x.name) === -1) .map(x => TsUtils.createIdentifier(x.name, x.root ? "forRoot" : "")); break; + case "schemas": + identifiers = this.ngMetaEdits.schemas + .filter(x => alreadyImported.indexOf(x.name) === -1) + .map(x => TsUtils.createIdentifier(x.name)); + break; case "declarations": case "providers": case "exports": @@ -633,29 +633,21 @@ export class TypeScriptFileUpdate { protected componentMetaTransformer: ts.TransformerFactory = (context: ts.TransformationContext) => (rootNode: T) => { const visitComponent: ts.Visitor = (node: ts.Node): ts.Node => { - let importsExpr = null; - let schemasExpr = null; - const prop = "imports"; - const schemasProp = "schemas"; + const properties = Object.keys(this.ngMetaEdits); if (node.kind === ts.SyntaxKind.ObjectLiteralExpression && node.parent && node.parent.kind === ts.SyntaxKind.CallExpression) { const obj = (node as ts.ObjectLiteralExpression); const objProperties = ts.visitNodes(obj.properties, visitor); const newProps = []; - if (this.ngMetaEdits.imports.some(x => x.standalone)) { - const importDeps = this.ngMetaEdits.imports; - importsExpr = ts.factory.createArrayLiteralExpression( - importDeps.map(x => TsUtils.createIdentifier(x.name)) - ); - newProps.push(ts.factory.createPropertyAssignment(prop, importsExpr)); - } - if (this.ngMetaEdits.schemas.some(x => x.standalone)) { - const schemaDeps = this.ngMetaEdits.schemas; - schemasExpr = ts.factory.createArrayLiteralExpression( - schemaDeps.map(x => TsUtils.createIdentifier(x.name)) - ); - newProps.push(ts.factory.createPropertyAssignment(schemasProp, schemasExpr)); + const missingProperties = properties.filter(x => !obj.properties.find(o => o.name.getText() === x)); + for (const prop of missingProperties) { + if (this.ngMetaEdits[prop].length) { + const expr = ts.factory.createArrayLiteralExpression( + this.ngMetaEdits[prop].map(x => TsUtils.createIdentifier(x.name)) + ); + newProps.push(ts.factory.createPropertyAssignment(prop, expr)); + } } return context.factory.updateObjectLiteralExpression(obj, [ ...objProperties, From 41a6bdcaa0fe2e3739ab12b71d3fbbc228356a38 Mon Sep 17 00:00:00 2001 From: jackofdiamond5 Date: Tue, 9 Jul 2024 16:21:18 +0300 Subject: [PATCH 7/7] release 13.2.4-beta.3 --- packages/cli/package.json | 6 +++--- packages/core/package.json | 2 +- packages/igx-templates/package.json | 4 ++-- packages/ng-schematics/package.json | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index a7303a07a..fae00a256 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "igniteui-cli", - "version": "13.2.4-beta.2", + "version": "13.2.4-beta.3", "description": "CLI tool for creating Ignite UI projects", "keywords": [ "CLI", @@ -78,8 +78,8 @@ "all": true }, "dependencies": { - "@igniteui/angular-templates": "~17.2.1324-beta.2", - "@igniteui/cli-core": "~13.2.4-beta.2", + "@igniteui/angular-templates": "~17.2.1324-beta.3", + "@igniteui/cli-core": "~13.2.4-beta.3", "chalk": "^2.3.2", "fs-extra": "^3.0.1", "glob": "^7.1.2", diff --git a/packages/core/package.json b/packages/core/package.json index da87d4907..2a913b981 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@igniteui/cli-core", - "version": "13.2.4-beta.2", + "version": "13.2.4-beta.3", "description": "Base types and functionality for Ignite UI CLI", "repository": { "type": "git", diff --git a/packages/igx-templates/package.json b/packages/igx-templates/package.json index 8ded2fbac..96a5509d0 100644 --- a/packages/igx-templates/package.json +++ b/packages/igx-templates/package.json @@ -1,6 +1,6 @@ { "name": "@igniteui/angular-templates", - "version": "17.2.1324-beta.2", + "version": "17.2.1324-beta.3", "description": "Templates for Ignite UI for Angular projects and components", "repository": { "type": "git", @@ -12,7 +12,7 @@ "author": "Infragistics", "license": "MIT", "dependencies": { - "@igniteui/cli-core": "~13.2.4-beta.2", + "@igniteui/cli-core": "~13.2.4-beta.3", "typescript": "~5.4.3" } } diff --git a/packages/ng-schematics/package.json b/packages/ng-schematics/package.json index 2ba5a7af7..ea82c59a2 100644 --- a/packages/ng-schematics/package.json +++ b/packages/ng-schematics/package.json @@ -1,6 +1,6 @@ { "name": "@igniteui/angular-schematics", - "version": "17.2.1324-beta.2", + "version": "17.2.1324-beta.3", "description": "Ignite UI for Angular Schematics for ng new and ng generate", "repository": { "type": "git", @@ -20,8 +20,8 @@ "dependencies": { "@angular-devkit/core": "~14.0.0", "@angular-devkit/schematics": "~14.0.0", - "@igniteui/angular-templates": "~17.2.1324-beta.2", - "@igniteui/cli-core": "~13.2.4-beta.2", + "@igniteui/angular-templates": "~17.2.1324-beta.3", + "@igniteui/cli-core": "~13.2.4-beta.3", "@schematics/angular": "~14.0.0", "rxjs": "^6.6.3" },