From 8489f87f48a0143bfd265387c3282110cf760283 Mon Sep 17 00:00:00 2001 From: sergey-kras Date: Tue, 20 May 2025 16:35:48 +0500 Subject: [PATCH 01/13] feat: added angular 20 for app --- package-lock.json | 386 +++++++++++++++++- packages/devextreme-cli/package-lock.json | 15 +- .../src/applications/application.angular.js | 5 +- .../devextreme-cli/src/utility/ng-version.js | 1 + .../src/utility/template-creator.js | 2 + ...{__name__.component.html => __name__.html} | 0 ...{__name__.component.scss => __name__.scss} | 0 .../{__name__.component.ts => __name__.ts} | 4 +- .../src/add-layout/index.ts | 38 +- .../src/add-view/index.ts | 56 ++- .../src/install/index.ts | 1 - .../src/utility/angular-version.ts | 18 + .../src/utility/patch.ts | 11 +- 13 files changed, 495 insertions(+), 42 deletions(-) rename packages/devextreme-schematics/src/add-layout/files/src/app/{__name__.component.html => __name__.html} (100%) rename packages/devextreme-schematics/src/add-layout/files/src/app/{__name__.component.scss => __name__.scss} (100%) rename packages/devextreme-schematics/src/add-layout/files/src/app/{__name__.component.ts => __name__.ts} (92%) create mode 100644 packages/devextreme-schematics/src/utility/angular-version.ts diff --git a/package-lock.json b/package-lock.json index 02118673f..da0e675b9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,122 @@ "puppeteer": "^21.11.0" } }, + "node_modules/@angular-devkit/schematics": { + "version": "19.2.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.12.tgz", + "integrity": "sha512-vK5NI/asi1snWFkw02DpmC8tLq6u5ZbUwwXxgALKuVwGl3g1VLzrHrkoSCrcsOO9Nu6GQOPbxax2lR/DICmytg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@angular-devkit/core": "19.2.12", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.17", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/schematics/node_modules/@angular-devkit/core": { + "version": "19.2.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.12.tgz", + "integrity": "sha512-v5pdfZHZ8MTZozfpkhKoPFBpXQW+2GFbTfdyis8FBtevJWCbIsCR3xhodgI4jwzkSEAraN4oVtWvSytdNyBC6A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.2", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^4.0.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/schematics/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@angular-devkit/schematics/node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@angular-devkit/schematics/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@angular-devkit/schematics/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@angular-devkit/schematics/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "engines": { + "node": ">= 8" + } + }, "node_modules/@angular-eslint/schematics": { "version": "0.2.0-beta.1", "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-0.2.0-beta.1.tgz", @@ -145,6 +261,14 @@ "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", "dev": true }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/@lerna/add": { "version": "5.6.2", "resolved": "https://registry.npmjs.org/@lerna/add/-/add-5.6.2.tgz", @@ -1892,6 +2016,43 @@ "node": ">=8" } }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, "node_modules/ansi-colors": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", @@ -3250,6 +3411,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/fast-fifo": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", @@ -3272,6 +3441,24 @@ "node": ">=8.6.0" } }, + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause", + "peer": true + }, "node_modules/fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", @@ -4434,6 +4621,14 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/json-stringify-nice": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", @@ -4741,6 +4936,17 @@ "node": ">=12" } }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -6644,6 +6850,22 @@ } } }, + "node_modules/puppeteer/node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -7013,6 +7235,17 @@ "node": ">=0.10.0" } }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -8257,6 +8490,77 @@ } }, "dependencies": { + "@angular-devkit/schematics": { + "version": "19.2.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.12.tgz", + "integrity": "sha512-vK5NI/asi1snWFkw02DpmC8tLq6u5ZbUwwXxgALKuVwGl3g1VLzrHrkoSCrcsOO9Nu6GQOPbxax2lR/DICmytg==", + "dev": true, + "peer": true, + "requires": { + "@angular-devkit/core": "19.2.12", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.17", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "19.2.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.12.tgz", + "integrity": "sha512-v5pdfZHZ8MTZozfpkhKoPFBpXQW+2GFbTfdyis8FBtevJWCbIsCR3xhodgI4jwzkSEAraN4oVtWvSytdNyBC6A==", + "dev": true, + "peer": true, + "requires": { + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.2", + "rxjs": "7.8.1", + "source-map": "0.7.4" + } + }, + "chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "readdirp": "^4.0.1" + } + }, + "jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "peer": true + }, + "picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "peer": true + }, + "readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "optional": true, + "peer": true + }, + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "peer": true + } + } + }, "@angular-eslint/schematics": { "version": "0.2.0-beta.1", "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-0.2.0-beta.1.tgz", @@ -8362,6 +8666,13 @@ "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", "dev": true }, + "@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "peer": true + }, "@lerna/add": { "version": "5.6.2", "resolved": "https://registry.npmjs.org/@lerna/add/-/add-5.6.2.tgz", @@ -9511,7 +9822,8 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", - "dev": true + "dev": true, + "requires": {} }, "@octokit/plugin-rest-endpoint-methods": { "version": "6.7.0", @@ -9787,6 +10099,29 @@ "indent-string": "^4.0.0" } }, + "ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "peer": true, + "requires": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + } + }, + "ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "dev": true, + "peer": true, + "requires": { + "ajv": "^8.0.0" + } + }, "ansi-colors": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", @@ -10818,6 +11153,13 @@ } } }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "peer": true + }, "fast-fifo": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", @@ -10837,6 +11179,13 @@ "micromatch": "^4.0.4" } }, + "fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "dev": true, + "peer": true + }, "fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", @@ -11733,6 +12082,13 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "peer": true + }, "json-stringify-nice": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", @@ -11981,6 +12337,16 @@ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true }, + "magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "peer": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -13421,6 +13787,14 @@ "js-yaml": "^4.1.0", "parse-json": "^5.2.0" } + }, + "typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "dev": true, + "optional": true, + "peer": true } } }, @@ -13717,6 +14091,13 @@ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "peer": true + }, "resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -14620,7 +15001,8 @@ "version": "8.16.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", - "dev": true + "dev": true, + "requires": {} }, "xtend": { "version": "4.0.2", diff --git a/packages/devextreme-cli/package-lock.json b/packages/devextreme-cli/package-lock.json index f4043a38f..6447cb8e5 100644 --- a/packages/devextreme-cli/package-lock.json +++ b/packages/devextreme-cli/package-lock.json @@ -11025,7 +11025,8 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true + "dev": true, + "requires": {} }, "ajv": { "version": "6.12.6", @@ -11714,7 +11715,8 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", - "dev": true + "dev": true, + "requires": {} }, "deep-is": { "version": "0.1.4", @@ -12204,7 +12206,8 @@ "version": "8.10.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", - "dev": true + "dev": true, + "requires": {} }, "eslint-plugin-angular": { "version": "4.1.0", @@ -12333,7 +12336,8 @@ "version": "4.6.2", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", - "dev": true + "dev": true, + "requires": {} }, "eslint-plugin-unused-imports": { "version": "1.1.5", @@ -14062,7 +14066,8 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true + "dev": true, + "requires": {} }, "jest-regex-util": { "version": "29.6.3", diff --git a/packages/devextreme-cli/src/applications/application.angular.js b/packages/devextreme-cli/src/applications/application.angular.js index 99a638992..802e19053 100644 --- a/packages/devextreme-cli/src/applications/application.angular.js +++ b/packages/devextreme-cli/src/applications/application.angular.js @@ -82,8 +82,11 @@ const bumpAngular = (appPath, versionTag) => { modifyJson(getPackageJsonPath(appPath), ({ dependencies, devDependencies, ...rest }) => { const bump = (section) => { for(const depName in section) { - section[depName] = depName.startsWith('@angular') ? versionTag : section[depName]; + if(depName.startsWith('@angular')) { + section[depName] = versionTag; + } } + return section; }; return { diff --git a/packages/devextreme-cli/src/utility/ng-version.js b/packages/devextreme-cli/src/utility/ng-version.js index 5ad037250..6fb571b17 100644 --- a/packages/devextreme-cli/src/utility/ng-version.js +++ b/packages/devextreme-cli/src/utility/ng-version.js @@ -19,6 +19,7 @@ const getPublicNgVersion = () => { return new semver(version); }; +// here ng version const getNgCliVersion = () => { let ngCliVersion = getLocalNgVersion(); if(!ngCliVersion) { diff --git a/packages/devextreme-cli/src/utility/template-creator.js b/packages/devextreme-cli/src/utility/template-creator.js index 6419b169b..4889c7ddc 100644 --- a/packages/devextreme-cli/src/utility/template-creator.js +++ b/packages/devextreme-cli/src/utility/template-creator.js @@ -15,6 +15,7 @@ const applyTemplateToFile = (filePath, templateOptions) => { return fileContent; }; +// here add page to app const addPageToApp = (pageName, pageDir, templatePagesPath, getCorrectExtension, { getPageFileName = () => pageName } = {}) => { fs.readdirSync(templatePagesPath).forEach((pageItem) => { const pagePath = path.join(pageDir, `${getPageFileName(pageName, pageItem)}${getCorrectExtension(extname(pageItem))}`); @@ -29,6 +30,7 @@ const addPageToApp = (pageName, pageDir, templatePagesPath, getCorrectExtension, }); }; +// here move template files to project const moveTemplateFilesToProject = (templateFolder, appPath, templateOptions, getCorrectPath, pathToFileRelativelyRoot) => { const relativePath = pathToFileRelativelyRoot || ''; const pathToFiles = path.join(templateFolder, relativePath); diff --git a/packages/devextreme-schematics/src/add-layout/files/src/app/__name__.component.html b/packages/devextreme-schematics/src/add-layout/files/src/app/__name__.html similarity index 100% rename from packages/devextreme-schematics/src/add-layout/files/src/app/__name__.component.html rename to packages/devextreme-schematics/src/add-layout/files/src/app/__name__.html diff --git a/packages/devextreme-schematics/src/add-layout/files/src/app/__name__.component.scss b/packages/devextreme-schematics/src/add-layout/files/src/app/__name__.scss similarity index 100% rename from packages/devextreme-schematics/src/add-layout/files/src/app/__name__.component.scss rename to packages/devextreme-schematics/src/add-layout/files/src/app/__name__.scss diff --git a/packages/devextreme-schematics/src/add-layout/files/src/app/__name__.component.ts b/packages/devextreme-schematics/src/add-layout/files/src/app/__name__.ts similarity index 92% rename from packages/devextreme-schematics/src/add-layout/files/src/app/__name__.component.ts rename to packages/devextreme-schematics/src/add-layout/files/src/app/__name__.ts index a3c487677..b47239fe9 100644 --- a/packages/devextreme-schematics/src/add-layout/files/src/app/__name__.component.ts +++ b/packages/devextreme-schematics/src/add-layout/files/src/app/__name__.ts @@ -9,8 +9,8 @@ import { UnauthenticatedContentComponent } from './unauthenticated-content'; @Component({ selector: '<%= prefix %>-root', - templateUrl: './<%= name %>.component.html', - styleUrls: ['./<%= name %>.component.scss'], + templateUrl: './<%= name %>.html', + styleUrls: ['./<%= name %>.scss'], standalone: true, imports: [ RouterModule, diff --git a/packages/devextreme-schematics/src/add-layout/index.ts b/packages/devextreme-schematics/src/add-layout/index.ts index 56eb1e558..8230b202c 100644 --- a/packages/devextreme-schematics/src/add-layout/index.ts +++ b/packages/devextreme-schematics/src/add-layout/index.ts @@ -9,9 +9,9 @@ import { filter, forEach, mergeWith, - callRule, FileEntry, - template + template, + callRule } from '@angular-devkit/schematics'; import { @@ -66,6 +66,7 @@ import { getWorkspace } from '@schematics/angular/utility/workspace'; import { Change } from '@schematics/angular/utility/change'; import { PatchNodePackageInstallTask } from '../utility/patch'; +import { isAngularVersionHigherThan } from '../utility/angular-version'; const projectFilesSource = './files/src'; const workspaceFilesSource = './files'; @@ -161,13 +162,13 @@ function modifyFileRule(path: string, callback: (source: SourceFile) => Change[] } const changes = callback(source); - return applyChanges(host, changes, path); }; } -function updateAppComponent(sourcePath: string, templateOptions: any = {}) { - const appMComponentPath = sourcePath + 'app.component.ts'; +// need here fix ? +function updateAppComponent(host: Tree, sourcePath: string, templateOptions: any = {}) { + const appMComponentPath = sourcePath + (isAngularVersionHigherThan(host, 20) ? 'app.ts' : 'app.component.ts'); const importSetter = (importName: string, path: string, alias: string) => { return (source: SourceFile) => { @@ -188,11 +189,12 @@ function updateAppComponent(sourcePath: string, templateOptions: any = {}) { return chain(rules); } +// need here fix ? function getComponentName(host: Tree, sourcePath: string) { let name = ''; let index = 0; - if (!host.exists(sourcePath + 'app.component.ts')) { + if (!host.exists(sourcePath + 'app.component.ts') && !host.exists(sourcePath + 'app.ts')) { name = 'app'; } @@ -200,7 +202,10 @@ function getComponentName(host: Tree, sourcePath: string) { index++; const componentName = `app${index}`; - if (!host.exists(`${sourcePath}${componentName}.component.ts`)) { + if ( + !host.exists(`${sourcePath}${componentName}.component.ts`) + && !host.exists(`${sourcePath}${componentName}.ts`) + ) { name = componentName; } } @@ -270,10 +275,12 @@ function modifyContentByTemplate( }; } -function updateDevextremeConfig(sourcePath: string = '') { +function updateDevextremeConfig(host: Tree, sourcePath: string = '') { const devextremeConfigPath = '/devextreme.json'; + const postfix = isAngularVersionHigherThan(host, 20) ? 'test' : 'component'; const templateOptions = { - sourcePath + sourcePath, + postfix }; const modifyConfig = (templateContent: string, currentContent: string) => { @@ -302,6 +309,10 @@ const modifyRouting = (host: Tree, routingFilePath: string) => { } }; +function setPostfix(host: Tree, name: string) { + return name + (isAngularVersionHigherThan(host, 20) ? '' : '.component'); +} + export default function(options: any): Rule { return async (host: Tree) => { const project = await getProjectName(host, options.project); @@ -315,13 +326,14 @@ export default function(options: any): Rule { const override = options.resolveConflicts === 'override'; const componentName = override ? 'app' : getComponentName(host, appPath); const pathToCss = sourcePath?.replace(/\/?(\w)+\/?/g, '../'); + const templateOptions = { - name: componentName, + name: setPostfix(host, componentName), layout, title, strings, path: pathToCss, - prefix + prefix, }; const modifyContent = (templateContent: string, currentContent: string, filePath: string) => { @@ -339,8 +351,8 @@ export default function(options: any): Rule { const rules = [ modifyContentByTemplate(sourcePath, projectFilesSource, null, templateOptions, modifyContent), - updateDevextremeConfig(sourcePath), - updateAppComponent(appPath, templateOptions), + updateDevextremeConfig(host, sourcePath), + updateAppComponent(host, appPath, templateOptions), addBuildThemeScript(), () => addCustomThemeStyles(host, options, sourcePath) as any, addViewportToBody(sourcePath), diff --git a/packages/devextreme-schematics/src/add-view/index.ts b/packages/devextreme-schematics/src/add-view/index.ts index eba3a3f53..2b5dd84b2 100644 --- a/packages/devextreme-schematics/src/add-view/index.ts +++ b/packages/devextreme-schematics/src/add-view/index.ts @@ -23,8 +23,9 @@ import { } from '../utility/routing'; import { getSourceFile } from '../utility/source'; +import { getAngularVersion, isAngularVersionHigherThan } from '../utility/angular-version'; -import { strings, basename, normalize, dirname } from '@angular-devkit/core'; +import { strings, basename, normalize, dirname, Path } from '@angular-devkit/core'; import { getProjectName, @@ -106,7 +107,8 @@ export function addViewToRouting(options: any) { const name = options.name.replace(/^pages\//, ''); const componentName = getRouteComponentName(name); - const importChanges = insertImport(source, routingModulePath, componentName, `./pages/${name}/${name}.component`); + const path = isAngularVersionHigherThan(host, 20) ? `./pages/${name}/${name}.ts` : `./pages/${name}/${name}.component.ts`; + const importChanges = insertImport(source, routingModulePath, componentName, path); applyChanges(host, [importChanges], routingModulePath); } return host; @@ -137,38 +139,57 @@ function overwriteModuleContent(options: any, path: string, content: string) { }; } -function addContentToView(options: any) { - const name = strings.dasherize(basename(normalize(options.name))); - const path = `${dirname(options.name)}/${name}`; - const title = humanize(name); - const componentPath = `${path}/${name}.component.html`; +function getComponentFileNames(name: string, angularVersion: number) { + const baseName = strings.dasherize(basename(normalize(name))); + const path = `${dirname(name as Path)}/${baseName}`; + + if (angularVersion >= 20) { + return { + path, + ts: `${path}/${baseName}.ts` as Path, + html: `${path}/${baseName}.html` as Path, + style: `${path}/${baseName}.scss` as Path + }; + } + + return { + path, + ts: `${path}/${baseName}.component.ts` as Path, + html: `${path}/${baseName}.component.html` as Path, + style: `${path}/${baseName}.component.scss` as Path + }; +} + +function addContentToView(options: any, angularVersion: number) { + const { html } = getComponentFileNames(options.name, angularVersion); + const title = humanize(strings.dasherize(basename(normalize(options.name)))); const content = `

${title}

Put your content here
`; - return overwriteModuleContent(options, componentPath, content); + return overwriteModuleContent(options, html, content); } -async function addContentToTS(options: any) { +async function addContentToTS(options: any, angularVersion: number) { + const { ts, html, style } = getComponentFileNames(options.name, angularVersion); const name = strings.dasherize(basename(normalize(options.name))); - const path = `${dirname(options.name)}/${name}`; - const componentPath = `${path}/${name}.component.ts`; + const componentName = strings.classify(basename(normalize(name))); const content = `import { Component } from '@angular/core'; @Component({ selector: 'app-${name}', - templateUrl: './${name}.component.html', - styleUrl: './${name}.component.css', + templateUrl: './${basename(html)}', + styleUrl: './${basename(style)}', standalone: true }) -export class ${strings.classify(basename(normalize(name)))}Component { +export class ${componentName}Component { } `; - return overwriteModuleContent(options, componentPath, content); + return overwriteModuleContent(options, ts, content); } export default function(options: any): Rule { @@ -177,6 +198,7 @@ export default function(options: any): Rule { const project = await getProjectName(host, options.project); const module = getModuleName(addRoute, options.module); const name = getPathForView(options.name); + const angularVersion = getAngularVersion(host); const rules = [externalSchematic('../node_modules/@schematics/angular', 'component', { name, @@ -187,8 +209,8 @@ export default function(options: any): Rule { prefix: options.prefix, standalone: true }), - addContentToView({ name, project }) as any, - addContentToTS({ name, project }) as any + addContentToView({ name, project }, angularVersion) as any, + addContentToTS({ name, project }, angularVersion) as any ]; if (addRoute) { diff --git a/packages/devextreme-schematics/src/install/index.ts b/packages/devextreme-schematics/src/install/index.ts index ef8de914a..6aa76f70e 100644 --- a/packages/devextreme-schematics/src/install/index.ts +++ b/packages/devextreme-schematics/src/install/index.ts @@ -19,7 +19,6 @@ import { getProjectName } from '../utility/project'; import { PatchNodePackageInstallTask } from '../utility/patch'; export default function(options: any): Rule { - return chain([ (host: Tree) => addDevExtremeDependency(host, { dxversion: options.dxversion }), (host: Tree) => addDevExtremeCSS(host, { project: options.project }), diff --git a/packages/devextreme-schematics/src/utility/angular-version.ts b/packages/devextreme-schematics/src/utility/angular-version.ts new file mode 100644 index 000000000..2c79b91eb --- /dev/null +++ b/packages/devextreme-schematics/src/utility/angular-version.ts @@ -0,0 +1,18 @@ +import { Tree } from '@angular-devkit/schematics'; +import { SemVer } from 'semver'; + +export function getAngularVersion(host: Tree): number { + const packageJson = JSON.parse(host.read('package.json')?.toString() || '{}'); + const angularCore = packageJson.dependencies?.['@angular/core']; + + if (angularCore) { + const version = new SemVer(angularCore.replace(/\^|\~/g, '')); + return version.major; + } + + throw new Error('Angular version not found'); +} + +export function isAngularVersionHigherThan(host: Tree, version: number): boolean { + return getAngularVersion(host) >= version; +} diff --git a/packages/devextreme-schematics/src/utility/patch.ts b/packages/devextreme-schematics/src/utility/patch.ts index 90095c631..4324986a1 100644 --- a/packages/devextreme-schematics/src/utility/patch.ts +++ b/packages/devextreme-schematics/src/utility/patch.ts @@ -1,7 +1,16 @@ import { NodePackageInstallTask } from '@angular-devkit/schematics/tasks'; export class PatchNodePackageInstallTask extends NodePackageInstallTask { - toConfiguration = (): any => { + // TODO: remove this patch before merge + constructor() { + super({ + packageManager: 'npm', + packageName: '--legacy-peer-deps', + allowScripts: true, + }); + } + + toConfiguration(): any { const rootConfigurations = super.toConfiguration(); const customOptions = Object.assign({}, rootConfigurations.options, { allowScripts: true }); From 008d2379556a9ec67783ea6383b4671dc1ffecbe Mon Sep 17 00:00:00 2001 From: sergey-kras Date: Tue, 20 May 2025 17:23:06 +0500 Subject: [PATCH 02/13] feat: small fix angular 20 for app --- .../src/add-view/index.ts | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/devextreme-schematics/src/add-view/index.ts b/packages/devextreme-schematics/src/add-view/index.ts index 2b5dd84b2..558189e99 100644 --- a/packages/devextreme-schematics/src/add-view/index.ts +++ b/packages/devextreme-schematics/src/add-view/index.ts @@ -23,7 +23,7 @@ import { } from '../utility/routing'; import { getSourceFile } from '../utility/source'; -import { getAngularVersion, isAngularVersionHigherThan } from '../utility/angular-version'; +import { isAngularVersionHigherThan } from '../utility/angular-version'; import { strings, basename, normalize, dirname, Path } from '@angular-devkit/core'; @@ -107,7 +107,8 @@ export function addViewToRouting(options: any) { const name = options.name.replace(/^pages\//, ''); const componentName = getRouteComponentName(name); - const path = isAngularVersionHigherThan(host, 20) ? `./pages/${name}/${name}.ts` : `./pages/${name}/${name}.component.ts`; + const path = isAngularVersionHigherThan(host, 20) ? `./pages/${name}/${name}.component` : `./pages/${name}/${name}.component.ts`; + const importChanges = insertImport(source, routingModulePath, componentName, path); applyChanges(host, [importChanges], routingModulePath); } @@ -139,11 +140,11 @@ function overwriteModuleContent(options: any, path: string, content: string) { }; } -function getComponentFileNames(name: string, angularVersion: number) { +function getComponentFileNames(name: string, host: Tree) { const baseName = strings.dasherize(basename(normalize(name))); const path = `${dirname(name as Path)}/${baseName}`; - if (angularVersion >= 20) { + if (isAngularVersionHigherThan(host, 20)) { return { path, ts: `${path}/${baseName}.ts` as Path, @@ -160,8 +161,8 @@ function getComponentFileNames(name: string, angularVersion: number) { }; } -function addContentToView(options: any, angularVersion: number) { - const { html } = getComponentFileNames(options.name, angularVersion); +function addContentToView(options: any, host: Tree) { + const { html } = getComponentFileNames(options.name, host); const title = humanize(strings.dasherize(basename(normalize(options.name)))); const content = `

${title}

@@ -172,8 +173,8 @@ function addContentToView(options: any, angularVersion: number) { return overwriteModuleContent(options, html, content); } -async function addContentToTS(options: any, angularVersion: number) { - const { ts, html, style } = getComponentFileNames(options.name, angularVersion); +async function addContentToTS(options: any, host: Tree) { + const { ts, html, style } = getComponentFileNames(options.name, host); const name = strings.dasherize(basename(normalize(options.name))); const componentName = strings.classify(basename(normalize(name))); const content = `import { Component } from '@angular/core'; @@ -198,7 +199,6 @@ export default function(options: any): Rule { const project = await getProjectName(host, options.project); const module = getModuleName(addRoute, options.module); const name = getPathForView(options.name); - const angularVersion = getAngularVersion(host); const rules = [externalSchematic('../node_modules/@schematics/angular', 'component', { name, @@ -209,8 +209,8 @@ export default function(options: any): Rule { prefix: options.prefix, standalone: true }), - addContentToView({ name, project }, angularVersion) as any, - addContentToTS({ name, project }, angularVersion) as any + addContentToView({ name, project }, host) as any, + addContentToTS({ name, project }, host) as any ]; if (addRoute) { From 66ba986bb6123dcf2f06cc58a0584c81d75317d4 Mon Sep 17 00:00:00 2001 From: sergey-kras Date: Tue, 20 May 2025 17:33:23 +0500 Subject: [PATCH 03/13] feat: small fix angular 20 for app --- .../src/add-layout/files/src/app/__name__.ts | 2 +- packages/devextreme-schematics/src/add-view/index.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/devextreme-schematics/src/add-layout/files/src/app/__name__.ts b/packages/devextreme-schematics/src/add-layout/files/src/app/__name__.ts index b47239fe9..ee63e47c6 100644 --- a/packages/devextreme-schematics/src/add-layout/files/src/app/__name__.ts +++ b/packages/devextreme-schematics/src/add-layout/files/src/app/__name__.ts @@ -23,7 +23,7 @@ import { UnauthenticatedContentComponent } from './unauthenticated-content'; ], providers: [] }) -export class <%= strings.classify(name) %>Component { +export class <%= strings.classify(name) %> { @HostBinding('class') get getClass() { const sizeClassName = Object.keys(this.screen.sizes).filter(cl => this.screen.sizes[cl]).join(' '); return `${sizeClassName} app` ; diff --git a/packages/devextreme-schematics/src/add-view/index.ts b/packages/devextreme-schematics/src/add-view/index.ts index 558189e99..0dd7dd8c5 100644 --- a/packages/devextreme-schematics/src/add-view/index.ts +++ b/packages/devextreme-schematics/src/add-view/index.ts @@ -107,7 +107,7 @@ export function addViewToRouting(options: any) { const name = options.name.replace(/^pages\//, ''); const componentName = getRouteComponentName(name); - const path = isAngularVersionHigherThan(host, 20) ? `./pages/${name}/${name}.component` : `./pages/${name}/${name}.component.ts`; + const path = `./pages/${name}/${name}.component`; const importChanges = insertImport(source, routingModulePath, componentName, path); applyChanges(host, [importChanges], routingModulePath); From e2943cd2d2353e5cd407d060aa69ed60b52509fa Mon Sep 17 00:00:00 2001 From: sergey-kras Date: Tue, 20 May 2025 18:14:11 +0500 Subject: [PATCH 04/13] fix: reverted files --- package-lock.json | 386 +----------------- packages/devextreme-cli/package-lock.json | 15 +- .../src/applications/application.angular.js | 5 +- .../devextreme-cli/src/utility/ng-version.js | 1 - .../src/utility/template-creator.js | 2 - .../src/add-layout/index.ts | 2 - 6 files changed, 8 insertions(+), 403 deletions(-) diff --git a/package-lock.json b/package-lock.json index da0e675b9..02118673f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,122 +15,6 @@ "puppeteer": "^21.11.0" } }, - "node_modules/@angular-devkit/schematics": { - "version": "19.2.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.12.tgz", - "integrity": "sha512-vK5NI/asi1snWFkw02DpmC8tLq6u5ZbUwwXxgALKuVwGl3g1VLzrHrkoSCrcsOO9Nu6GQOPbxax2lR/DICmytg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@angular-devkit/core": "19.2.12", - "jsonc-parser": "3.3.1", - "magic-string": "0.30.17", - "ora": "5.4.1", - "rxjs": "7.8.1" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular-devkit/schematics/node_modules/@angular-devkit/core": { - "version": "19.2.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.12.tgz", - "integrity": "sha512-v5pdfZHZ8MTZozfpkhKoPFBpXQW+2GFbTfdyis8FBtevJWCbIsCR3xhodgI4jwzkSEAraN4oVtWvSytdNyBC6A==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "ajv": "8.17.1", - "ajv-formats": "3.0.1", - "jsonc-parser": "3.3.1", - "picomatch": "4.0.2", - "rxjs": "7.8.1", - "source-map": "0.7.4" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^4.0.0" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/schematics/node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@angular-devkit/schematics/node_modules/jsonc-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@angular-devkit/schematics/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@angular-devkit/schematics/node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@angular-devkit/schematics/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/@angular-eslint/schematics": { "version": "0.2.0-beta.1", "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-0.2.0-beta.1.tgz", @@ -261,14 +145,6 @@ "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", "dev": true }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true, - "license": "MIT", - "peer": true - }, "node_modules/@lerna/add": { "version": "5.6.2", "resolved": "https://registry.npmjs.org/@lerna/add/-/add-5.6.2.tgz", @@ -2016,43 +1892,6 @@ "node": ">=8" } }, - "node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", - "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, "node_modules/ansi-colors": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", @@ -3411,14 +3250,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT", - "peer": true - }, "node_modules/fast-fifo": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", @@ -3441,24 +3272,6 @@ "node": ">=8.6.0" } }, - "node_modules/fast-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause", - "peer": true - }, "node_modules/fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", @@ -4621,14 +4434,6 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT", - "peer": true - }, "node_modules/json-stringify-nice": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", @@ -4936,17 +4741,6 @@ "node": ">=12" } }, - "node_modules/magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -6850,22 +6644,6 @@ } } }, - "node_modules/puppeteer/node_modules/typescript": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", - "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, "node_modules/q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -7235,17 +7013,6 @@ "node": ">=0.10.0" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -8490,77 +8257,6 @@ } }, "dependencies": { - "@angular-devkit/schematics": { - "version": "19.2.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.12.tgz", - "integrity": "sha512-vK5NI/asi1snWFkw02DpmC8tLq6u5ZbUwwXxgALKuVwGl3g1VLzrHrkoSCrcsOO9Nu6GQOPbxax2lR/DICmytg==", - "dev": true, - "peer": true, - "requires": { - "@angular-devkit/core": "19.2.12", - "jsonc-parser": "3.3.1", - "magic-string": "0.30.17", - "ora": "5.4.1", - "rxjs": "7.8.1" - }, - "dependencies": { - "@angular-devkit/core": { - "version": "19.2.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.12.tgz", - "integrity": "sha512-v5pdfZHZ8MTZozfpkhKoPFBpXQW+2GFbTfdyis8FBtevJWCbIsCR3xhodgI4jwzkSEAraN4oVtWvSytdNyBC6A==", - "dev": true, - "peer": true, - "requires": { - "ajv": "8.17.1", - "ajv-formats": "3.0.1", - "jsonc-parser": "3.3.1", - "picomatch": "4.0.2", - "rxjs": "7.8.1", - "source-map": "0.7.4" - } - }, - "chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "readdirp": "^4.0.1" - } - }, - "jsonc-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", - "dev": true, - "peer": true - }, - "picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, - "peer": true - }, - "readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "optional": true, - "peer": true - }, - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "peer": true - } - } - }, "@angular-eslint/schematics": { "version": "0.2.0-beta.1", "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-0.2.0-beta.1.tgz", @@ -8666,13 +8362,6 @@ "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", "dev": true }, - "@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true, - "peer": true - }, "@lerna/add": { "version": "5.6.2", "resolved": "https://registry.npmjs.org/@lerna/add/-/add-5.6.2.tgz", @@ -9822,8 +9511,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", - "dev": true, - "requires": {} + "dev": true }, "@octokit/plugin-rest-endpoint-methods": { "version": "6.7.0", @@ -10099,29 +9787,6 @@ "indent-string": "^4.0.0" } }, - "ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, - "peer": true, - "requires": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - } - }, - "ajv-formats": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", - "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", - "dev": true, - "peer": true, - "requires": { - "ajv": "^8.0.0" - } - }, "ansi-colors": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", @@ -11153,13 +10818,6 @@ } } }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "peer": true - }, "fast-fifo": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", @@ -11179,13 +10837,6 @@ "micromatch": "^4.0.4" } }, - "fast-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", - "dev": true, - "peer": true - }, "fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", @@ -12082,13 +11733,6 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "peer": true - }, "json-stringify-nice": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", @@ -12337,16 +11981,6 @@ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true }, - "magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", - "dev": true, - "peer": true, - "requires": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -13787,14 +13421,6 @@ "js-yaml": "^4.1.0", "parse-json": "^5.2.0" } - }, - "typescript": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", - "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", - "dev": true, - "optional": true, - "peer": true } } }, @@ -14091,13 +13717,6 @@ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "peer": true - }, "resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -15001,8 +14620,7 @@ "version": "8.16.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", - "dev": true, - "requires": {} + "dev": true }, "xtend": { "version": "4.0.2", diff --git a/packages/devextreme-cli/package-lock.json b/packages/devextreme-cli/package-lock.json index 6447cb8e5..f4043a38f 100644 --- a/packages/devextreme-cli/package-lock.json +++ b/packages/devextreme-cli/package-lock.json @@ -11025,8 +11025,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} + "dev": true }, "ajv": { "version": "6.12.6", @@ -11715,8 +11714,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", - "dev": true, - "requires": {} + "dev": true }, "deep-is": { "version": "0.1.4", @@ -12206,8 +12204,7 @@ "version": "8.10.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", - "dev": true, - "requires": {} + "dev": true }, "eslint-plugin-angular": { "version": "4.1.0", @@ -12336,8 +12333,7 @@ "version": "4.6.2", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", - "dev": true, - "requires": {} + "dev": true }, "eslint-plugin-unused-imports": { "version": "1.1.5", @@ -14066,8 +14062,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "requires": {} + "dev": true }, "jest-regex-util": { "version": "29.6.3", diff --git a/packages/devextreme-cli/src/applications/application.angular.js b/packages/devextreme-cli/src/applications/application.angular.js index 802e19053..99a638992 100644 --- a/packages/devextreme-cli/src/applications/application.angular.js +++ b/packages/devextreme-cli/src/applications/application.angular.js @@ -82,11 +82,8 @@ const bumpAngular = (appPath, versionTag) => { modifyJson(getPackageJsonPath(appPath), ({ dependencies, devDependencies, ...rest }) => { const bump = (section) => { for(const depName in section) { - if(depName.startsWith('@angular')) { - section[depName] = versionTag; - } + section[depName] = depName.startsWith('@angular') ? versionTag : section[depName]; } - return section; }; return { diff --git a/packages/devextreme-cli/src/utility/ng-version.js b/packages/devextreme-cli/src/utility/ng-version.js index 6fb571b17..5ad037250 100644 --- a/packages/devextreme-cli/src/utility/ng-version.js +++ b/packages/devextreme-cli/src/utility/ng-version.js @@ -19,7 +19,6 @@ const getPublicNgVersion = () => { return new semver(version); }; -// here ng version const getNgCliVersion = () => { let ngCliVersion = getLocalNgVersion(); if(!ngCliVersion) { diff --git a/packages/devextreme-cli/src/utility/template-creator.js b/packages/devextreme-cli/src/utility/template-creator.js index 4889c7ddc..6419b169b 100644 --- a/packages/devextreme-cli/src/utility/template-creator.js +++ b/packages/devextreme-cli/src/utility/template-creator.js @@ -15,7 +15,6 @@ const applyTemplateToFile = (filePath, templateOptions) => { return fileContent; }; -// here add page to app const addPageToApp = (pageName, pageDir, templatePagesPath, getCorrectExtension, { getPageFileName = () => pageName } = {}) => { fs.readdirSync(templatePagesPath).forEach((pageItem) => { const pagePath = path.join(pageDir, `${getPageFileName(pageName, pageItem)}${getCorrectExtension(extname(pageItem))}`); @@ -30,7 +29,6 @@ const addPageToApp = (pageName, pageDir, templatePagesPath, getCorrectExtension, }); }; -// here move template files to project const moveTemplateFilesToProject = (templateFolder, appPath, templateOptions, getCorrectPath, pathToFileRelativelyRoot) => { const relativePath = pathToFileRelativelyRoot || ''; const pathToFiles = path.join(templateFolder, relativePath); diff --git a/packages/devextreme-schematics/src/add-layout/index.ts b/packages/devextreme-schematics/src/add-layout/index.ts index 8230b202c..ddfcfe0aa 100644 --- a/packages/devextreme-schematics/src/add-layout/index.ts +++ b/packages/devextreme-schematics/src/add-layout/index.ts @@ -166,7 +166,6 @@ function modifyFileRule(path: string, callback: (source: SourceFile) => Change[] }; } -// need here fix ? function updateAppComponent(host: Tree, sourcePath: string, templateOptions: any = {}) { const appMComponentPath = sourcePath + (isAngularVersionHigherThan(host, 20) ? 'app.ts' : 'app.component.ts'); @@ -189,7 +188,6 @@ function updateAppComponent(host: Tree, sourcePath: string, templateOptions: any return chain(rules); } -// need here fix ? function getComponentName(host: Tree, sourcePath: string) { let name = ''; let index = 0; From 4c3ff70df309b8b12324d8fad3c77245e5829400 Mon Sep 17 00:00:00 2001 From: sergey-kras Date: Tue, 20 May 2025 18:17:43 +0500 Subject: [PATCH 05/13] fix: small fix --- packages/devextreme-schematics/src/add-layout/index.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/devextreme-schematics/src/add-layout/index.ts b/packages/devextreme-schematics/src/add-layout/index.ts index ddfcfe0aa..bdadcfc2f 100644 --- a/packages/devextreme-schematics/src/add-layout/index.ts +++ b/packages/devextreme-schematics/src/add-layout/index.ts @@ -273,12 +273,10 @@ function modifyContentByTemplate( }; } -function updateDevextremeConfig(host: Tree, sourcePath: string = '') { +function updateDevextremeConfig(sourcePath: string = '') { const devextremeConfigPath = '/devextreme.json'; - const postfix = isAngularVersionHigherThan(host, 20) ? 'test' : 'component'; const templateOptions = { sourcePath, - postfix }; const modifyConfig = (templateContent: string, currentContent: string) => { @@ -349,7 +347,7 @@ export default function(options: any): Rule { const rules = [ modifyContentByTemplate(sourcePath, projectFilesSource, null, templateOptions, modifyContent), - updateDevextremeConfig(host, sourcePath), + updateDevextremeConfig(sourcePath), updateAppComponent(host, appPath, templateOptions), addBuildThemeScript(), () => addCustomThemeStyles(host, options, sourcePath) as any, From 0e835238faa76c8ae2f5a9d2391621facbbc59a3 Mon Sep 17 00:00:00 2001 From: sergey-kras Date: Tue, 20 May 2025 19:05:43 +0500 Subject: [PATCH 06/13] fix: fix build --- .../src/applications/application.angular.js | 2 ++ .../src/add-view/index.ts | 24 ++++++------------- 2 files changed, 9 insertions(+), 17 deletions(-) diff --git a/packages/devextreme-cli/src/applications/application.angular.js b/packages/devextreme-cli/src/applications/application.angular.js index 99a638992..70498c1cb 100644 --- a/packages/devextreme-cli/src/applications/application.angular.js +++ b/packages/devextreme-cli/src/applications/application.angular.js @@ -84,6 +84,8 @@ const bumpAngular = (appPath, versionTag) => { for(const depName in section) { section[depName] = depName.startsWith('@angular') ? versionTag : section[depName]; } + + return section; }; return { diff --git a/packages/devextreme-schematics/src/add-view/index.ts b/packages/devextreme-schematics/src/add-view/index.ts index 0dd7dd8c5..0f2ddfeca 100644 --- a/packages/devextreme-schematics/src/add-view/index.ts +++ b/packages/devextreme-schematics/src/add-view/index.ts @@ -23,7 +23,6 @@ import { } from '../utility/routing'; import { getSourceFile } from '../utility/source'; -import { isAngularVersionHigherThan } from '../utility/angular-version'; import { strings, basename, normalize, dirname, Path } from '@angular-devkit/core'; @@ -140,19 +139,10 @@ function overwriteModuleContent(options: any, path: string, content: string) { }; } -function getComponentFileNames(name: string, host: Tree) { +function getComponentFileNames(name: string) { const baseName = strings.dasherize(basename(normalize(name))); const path = `${dirname(name as Path)}/${baseName}`; - if (isAngularVersionHigherThan(host, 20)) { - return { - path, - ts: `${path}/${baseName}.ts` as Path, - html: `${path}/${baseName}.html` as Path, - style: `${path}/${baseName}.scss` as Path - }; - } - return { path, ts: `${path}/${baseName}.component.ts` as Path, @@ -161,8 +151,8 @@ function getComponentFileNames(name: string, host: Tree) { }; } -function addContentToView(options: any, host: Tree) { - const { html } = getComponentFileNames(options.name, host); +function addContentToView(options: any) { + const { html } = getComponentFileNames(options.name); const title = humanize(strings.dasherize(basename(normalize(options.name)))); const content = `

${title}

@@ -173,8 +163,8 @@ function addContentToView(options: any, host: Tree) { return overwriteModuleContent(options, html, content); } -async function addContentToTS(options: any, host: Tree) { - const { ts, html, style } = getComponentFileNames(options.name, host); +async function addContentToTS(options: any) { + const { ts, html, style } = getComponentFileNames(options.name); const name = strings.dasherize(basename(normalize(options.name))); const componentName = strings.classify(basename(normalize(name))); const content = `import { Component } from '@angular/core'; @@ -209,8 +199,8 @@ export default function(options: any): Rule { prefix: options.prefix, standalone: true }), - addContentToView({ name, project }, host) as any, - addContentToTS({ name, project }, host) as any + addContentToView({ name, project }) as any, + addContentToTS({ name, project }) as any ]; if (addRoute) { From 6da35eec43b6fbe4c9bac37494ab540c58316637 Mon Sep 17 00:00:00 2001 From: sergey-kras Date: Tue, 20 May 2025 19:31:25 +0500 Subject: [PATCH 07/13] fix: fixed tests --- packages/devextreme-schematics/src/add-view/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/devextreme-schematics/src/add-view/index.ts b/packages/devextreme-schematics/src/add-view/index.ts index 0f2ddfeca..494d73bf8 100644 --- a/packages/devextreme-schematics/src/add-view/index.ts +++ b/packages/devextreme-schematics/src/add-view/index.ts @@ -147,7 +147,7 @@ function getComponentFileNames(name: string) { path, ts: `${path}/${baseName}.component.ts` as Path, html: `${path}/${baseName}.component.html` as Path, - style: `${path}/${baseName}.component.scss` as Path + style: `${path}/${baseName}.component.css` as Path }; } From 6c3a23020ac4c2e734f95131d641eeae13f9ff46 Mon Sep 17 00:00:00 2001 From: sergey-kras Date: Wed, 21 May 2025 16:56:35 +0500 Subject: [PATCH 08/13] fix: small fix --- .../src/applications/application.angular.js | 1 - packages/devextreme-schematics/src/add-layout/index.ts | 8 ++++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/devextreme-cli/src/applications/application.angular.js b/packages/devextreme-cli/src/applications/application.angular.js index 70498c1cb..14b5eec85 100644 --- a/packages/devextreme-cli/src/applications/application.angular.js +++ b/packages/devextreme-cli/src/applications/application.angular.js @@ -84,7 +84,6 @@ const bumpAngular = (appPath, versionTag) => { for(const depName in section) { section[depName] = depName.startsWith('@angular') ? versionTag : section[depName]; } - return section; }; diff --git a/packages/devextreme-schematics/src/add-layout/index.ts b/packages/devextreme-schematics/src/add-layout/index.ts index bdadcfc2f..8232f1292 100644 --- a/packages/devextreme-schematics/src/add-layout/index.ts +++ b/packages/devextreme-schematics/src/add-layout/index.ts @@ -9,9 +9,9 @@ import { filter, forEach, mergeWith, + callRule, FileEntry, - template, - callRule + template } from '@angular-devkit/schematics'; import { @@ -276,7 +276,7 @@ function modifyContentByTemplate( function updateDevextremeConfig(sourcePath: string = '') { const devextremeConfigPath = '/devextreme.json'; const templateOptions = { - sourcePath, + sourcePath }; const modifyConfig = (templateContent: string, currentContent: string) => { @@ -329,7 +329,7 @@ export default function(options: any): Rule { title, strings, path: pathToCss, - prefix, + prefix }; const modifyContent = (templateContent: string, currentContent: string, filePath: string) => { From 269c58560631f5d4cd2f25b684c76492701eae34 Mon Sep 17 00:00:00 2001 From: sergey-kras Date: Wed, 21 May 2025 16:57:15 +0500 Subject: [PATCH 09/13] fix: small fix --- packages/devextreme-schematics/src/add-layout/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/devextreme-schematics/src/add-layout/index.ts b/packages/devextreme-schematics/src/add-layout/index.ts index 8232f1292..d63de81be 100644 --- a/packages/devextreme-schematics/src/add-layout/index.ts +++ b/packages/devextreme-schematics/src/add-layout/index.ts @@ -160,7 +160,6 @@ function modifyFileRule(path: string, callback: (source: SourceFile) => Change[] if (!source) { return host; } - const changes = callback(source); return applyChanges(host, changes, path); }; From 3945607018358045b003e9ca24591d6a525b5ac7 Mon Sep 17 00:00:00 2001 From: sergey-kras Date: Wed, 21 May 2025 16:58:11 +0500 Subject: [PATCH 10/13] fix: small fix --- packages/devextreme-schematics/src/add-layout/index.ts | 2 ++ packages/devextreme-schematics/src/install/index.ts | 1 + 2 files changed, 3 insertions(+) diff --git a/packages/devextreme-schematics/src/add-layout/index.ts b/packages/devextreme-schematics/src/add-layout/index.ts index d63de81be..61a36f731 100644 --- a/packages/devextreme-schematics/src/add-layout/index.ts +++ b/packages/devextreme-schematics/src/add-layout/index.ts @@ -160,7 +160,9 @@ function modifyFileRule(path: string, callback: (source: SourceFile) => Change[] if (!source) { return host; } + const changes = callback(source); + return applyChanges(host, changes, path); }; } diff --git a/packages/devextreme-schematics/src/install/index.ts b/packages/devextreme-schematics/src/install/index.ts index 6aa76f70e..ef8de914a 100644 --- a/packages/devextreme-schematics/src/install/index.ts +++ b/packages/devextreme-schematics/src/install/index.ts @@ -19,6 +19,7 @@ import { getProjectName } from '../utility/project'; import { PatchNodePackageInstallTask } from '../utility/patch'; export default function(options: any): Rule { + return chain([ (host: Tree) => addDevExtremeDependency(host, { dxversion: options.dxversion }), (host: Tree) => addDevExtremeCSS(host, { project: options.project }), From 7cb48f67d801c9adc143cd4c9b4954d6041968d3 Mon Sep 17 00:00:00 2001 From: sergey-kras Date: Thu, 22 May 2025 13:01:43 +0500 Subject: [PATCH 11/13] fix: revert refactoring --- .../src/add-view/index.ts | 38 +++++++------------ 1 file changed, 13 insertions(+), 25 deletions(-) diff --git a/packages/devextreme-schematics/src/add-view/index.ts b/packages/devextreme-schematics/src/add-view/index.ts index 494d73bf8..eba3a3f53 100644 --- a/packages/devextreme-schematics/src/add-view/index.ts +++ b/packages/devextreme-schematics/src/add-view/index.ts @@ -24,7 +24,7 @@ import { import { getSourceFile } from '../utility/source'; -import { strings, basename, normalize, dirname, Path } from '@angular-devkit/core'; +import { strings, basename, normalize, dirname } from '@angular-devkit/core'; import { getProjectName, @@ -106,9 +106,7 @@ export function addViewToRouting(options: any) { const name = options.name.replace(/^pages\//, ''); const componentName = getRouteComponentName(name); - const path = `./pages/${name}/${name}.component`; - - const importChanges = insertImport(source, routingModulePath, componentName, path); + const importChanges = insertImport(source, routingModulePath, componentName, `./pages/${name}/${name}.component`); applyChanges(host, [importChanges], routingModulePath); } return host; @@ -139,48 +137,38 @@ function overwriteModuleContent(options: any, path: string, content: string) { }; } -function getComponentFileNames(name: string) { - const baseName = strings.dasherize(basename(normalize(name))); - const path = `${dirname(name as Path)}/${baseName}`; - - return { - path, - ts: `${path}/${baseName}.component.ts` as Path, - html: `${path}/${baseName}.component.html` as Path, - style: `${path}/${baseName}.component.css` as Path - }; -} - function addContentToView(options: any) { - const { html } = getComponentFileNames(options.name); - const title = humanize(strings.dasherize(basename(normalize(options.name)))); + const name = strings.dasherize(basename(normalize(options.name))); + const path = `${dirname(options.name)}/${name}`; + const title = humanize(name); + const componentPath = `${path}/${name}.component.html`; const content = `

${title}

Put your content here
`; - return overwriteModuleContent(options, html, content); + return overwriteModuleContent(options, componentPath, content); } async function addContentToTS(options: any) { - const { ts, html, style } = getComponentFileNames(options.name); const name = strings.dasherize(basename(normalize(options.name))); - const componentName = strings.classify(basename(normalize(name))); + const path = `${dirname(options.name)}/${name}`; + const componentPath = `${path}/${name}.component.ts`; const content = `import { Component } from '@angular/core'; @Component({ selector: 'app-${name}', - templateUrl: './${basename(html)}', - styleUrl: './${basename(style)}', + templateUrl: './${name}.component.html', + styleUrl: './${name}.component.css', standalone: true }) -export class ${componentName}Component { +export class ${strings.classify(basename(normalize(name)))}Component { } `; - return overwriteModuleContent(options, ts, content); + return overwriteModuleContent(options, componentPath, content); } export default function(options: any): Rule { From 2630cbe0e94623535d7cd15f75a947632db04fb3 Mon Sep 17 00:00:00 2001 From: sergey-kras Date: Fri, 23 May 2025 16:56:35 +0500 Subject: [PATCH 12/13] fix: reverted patch --- packages/devextreme-schematics/src/utility/patch.ts | 9 --------- 1 file changed, 9 deletions(-) diff --git a/packages/devextreme-schematics/src/utility/patch.ts b/packages/devextreme-schematics/src/utility/patch.ts index 4324986a1..6944bf953 100644 --- a/packages/devextreme-schematics/src/utility/patch.ts +++ b/packages/devextreme-schematics/src/utility/patch.ts @@ -1,15 +1,6 @@ import { NodePackageInstallTask } from '@angular-devkit/schematics/tasks'; export class PatchNodePackageInstallTask extends NodePackageInstallTask { - // TODO: remove this patch before merge - constructor() { - super({ - packageManager: 'npm', - packageName: '--legacy-peer-deps', - allowScripts: true, - }); - } - toConfiguration(): any { const rootConfigurations = super.toConfiguration(); const customOptions = Object.assign({}, rootConfigurations.options, { allowScripts: true }); From 7d47df80132dbbcf40529d7e8e8ef4c1cd12026f Mon Sep 17 00:00:00 2001 From: sergey-kras Date: Fri, 23 May 2025 16:57:06 +0500 Subject: [PATCH 13/13] fix: reverted patch --- packages/devextreme-schematics/src/utility/patch.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/devextreme-schematics/src/utility/patch.ts b/packages/devextreme-schematics/src/utility/patch.ts index 6944bf953..90095c631 100644 --- a/packages/devextreme-schematics/src/utility/patch.ts +++ b/packages/devextreme-schematics/src/utility/patch.ts @@ -1,7 +1,7 @@ import { NodePackageInstallTask } from '@angular-devkit/schematics/tasks'; export class PatchNodePackageInstallTask extends NodePackageInstallTask { - toConfiguration(): any { + toConfiguration = (): any => { const rootConfigurations = super.toConfiguration(); const customOptions = Object.assign({}, rootConfigurations.options, { allowScripts: true });