diff --git a/.commitlintrc.json b/.commitlintrc.json
index 7b00321..e1d4c0a 100644
--- a/.commitlintrc.json
+++ b/.commitlintrc.json
@@ -2,13 +2,7 @@
"extends": ["@commitlint/config-angular"],
"rules": {
"subject-max-length": [2, "always", 120],
- "scope-enum": [
- 2,
- "always",
- [
- "lib",
- "demo"
- ]],
+ "scope-enum": [2, "always", ["lib", "demo"]],
"type-enum": [
2,
"always",
diff --git a/.eslintrc.json b/.eslintrc.json
index 273c93b..6b1dec1 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -1,8 +1,6 @@
{
"root": true,
- "ignorePatterns": [
- "**/*"
- ],
+ "ignorePatterns": ["**/*"],
"reportUnusedDisableDirectives": true,
"env": {
"browser": true,
@@ -10,16 +8,8 @@
},
"overrides": [
{
- "files": [
- "*.ts"
- ],
- "plugins": [
- "@typescript-eslint",
- "prefer-arrow",
- "import",
- "jsdoc",
- "jasmine"
- ],
+ "files": ["*.ts"],
+ "plugins": ["@typescript-eslint", "prefer-arrow", "import", "jsdoc", "jasmine"],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended-type-checked",
@@ -28,7 +18,8 @@
"plugin:import/errors",
"plugin:import/warnings",
"plugin:import/typescript",
- "plugin:jsdoc/recommended"
+ "plugin:jsdoc/recommended",
+ "prettier"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
@@ -38,16 +29,12 @@
},
"settings": {
"import/parsers": {
- "@typescript-eslint/parser": [
- ".ts"
- ]
+ "@typescript-eslint/parser": [".ts"]
},
"import/resolver": {
"node": true,
"typescript": {
- "project": [
- "./tsconfig.json"
- ]
+ "project": ["./tsconfig.json"]
}
}
},
@@ -58,23 +45,11 @@
"ignoreStatic": true
}
],
- "arrow-parens": [
- "error",
- "as-needed"
- ],
"comma-dangle": "error",
"import/order": [
"error",
{
- "groups": [
- [
- "builtin",
- "external"
- ],
- "parent",
- "sibling",
- "internal"
- ],
+ "groups": [["builtin", "external"], "parent", "sibling", "internal"],
"pathGroups": [
{
"pattern": "@lib/**",
@@ -113,9 +88,7 @@
"jsdoc/require-returns-type": [
"off",
{
- "contexts": [
- "any"
- ]
+ "contexts": ["any"]
}
],
"no-multiple-empty-lines": [
@@ -142,36 +115,23 @@
"classPropertiesAllowed": false
}
],
- "semi": [
- "error",
- "always"
- ]
+ "semi": ["error", "always"]
}
},
{
- "files": [
- "*.spec.ts"
- ],
+ "files": ["*.spec.ts"],
"env": {
"jasmine": true
},
- "plugins": [
- "jasmine"
- ],
- "extends": [
- "plugin:jasmine/recommended"
- ],
+ "plugins": ["jasmine"],
+ "extends": ["plugin:jasmine/recommended"],
"rules": {
"jasmine/missing-expect": "warn"
}
},
{
- "files": [
- "*.json"
- ],
- "extends": [
- "plugin:json/recommended-legacy"
- ],
+ "files": ["*.json"],
+ "extends": ["plugin:json/recommended-legacy"],
"rules": {
"json/*": [
"error",
@@ -182,12 +142,8 @@
}
},
{
- "files": [
- "*.html"
- ],
- "extends": [
- "plugin:@angular-eslint/template/recommended"
- ],
+ "files": ["*.html"],
+ "extends": ["plugin:@angular-eslint/template/recommended"],
"rules": {}
}
]
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index a571136..a017eb4 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -1,39 +1,39 @@
version: 2
updates:
- package-ecosystem: npm
- directory: "/"
+ directory: '/'
schedule:
- interval: "monthly"
+ interval: 'monthly'
cooldown:
default-days: 7
open-pull-requests-limit: 10
ignore:
- - dependency-name: "eslint"
- versions: ["9.x", "10.x"]
- - dependency-name: "eslint-plugin-cypress"
- versions: ["4.x", "5.x", "6.x"]
- - dependency-name: "@angular/*"
- versions: ["18.x", "19.x", "20.x", "21.x", "22.x"]
- - dependency-name: "@angular-devkit/build-angular"
- versions: ["18.x", "19.x", "20.x", "21.x", "22.x"]
- - dependency-name: "@angular-eslint/*"
- versions: ["18.x", "19.x", "20.x", "21.x", "22.x"]
- - dependency-name: "ng-packagr"
- versions: ["18.x", "19.x", "20.x", "21.x", "22.x"]
- - dependency-name: "typescript"
- versions: ["5.5.x", "5.6.x", "5.7.x", "5.8.x", "5.9.x", "6.x", "7.x"]
- - dependency-name: "zone"
- versions: ["0.15.x", "0.16.x"]
- - dependency-name: "cypress"
- versions: ["15.x"]
- - dependency-name: "@cypress/schematic"
- versions: ["4.x", "5.x"]
- - dependency-name: "@cypress/webpack-preprocessor"
- versions: ["7.x"]
+ - dependency-name: 'eslint'
+ versions: ['9.x', '10.x']
+ - dependency-name: 'eslint-plugin-cypress'
+ versions: ['4.x', '5.x', '6.x']
+ - dependency-name: '@angular/*'
+ versions: ['18.x', '19.x', '20.x', '21.x', '22.x']
+ - dependency-name: '@angular-devkit/build-angular'
+ versions: ['18.x', '19.x', '20.x', '21.x', '22.x']
+ - dependency-name: '@angular-eslint/*'
+ versions: ['18.x', '19.x', '20.x', '21.x', '22.x']
+ - dependency-name: 'ng-packagr'
+ versions: ['18.x', '19.x', '20.x', '21.x', '22.x']
+ - dependency-name: 'typescript'
+ versions: ['5.5.x', '5.6.x', '5.7.x', '5.8.x', '5.9.x', '6.x', '7.x']
+ - dependency-name: 'zone'
+ versions: ['0.15.x', '0.16.x']
+ - dependency-name: 'cypress'
+ versions: ['15.x']
+ - dependency-name: '@cypress/schematic'
+ versions: ['4.x', '5.x']
+ - dependency-name: '@cypress/webpack-preprocessor'
+ versions: ['7.x']
- - package-ecosystem: "github-actions"
- directory: "/"
+ - package-ecosystem: 'github-actions'
+ directory: '/'
schedule:
- interval: "monthly"
+ interval: 'monthly'
cooldown:
default-days: 7
diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml
index ef2d66d..2e880c4 100644
--- a/.github/workflows/node.js.yml
+++ b/.github/workflows/node.js.yml
@@ -5,9 +5,9 @@ name: Node.js CI
on:
push:
- branches: ["main"]
+ branches: ['main']
pull_request:
- branches: ["main"]
+ branches: ['main']
workflow_dispatch:
jobs:
@@ -30,7 +30,7 @@ jobs:
uses: actions/setup-node@v6.4.0
with:
node-version: ${{ matrix.node-version }}
- cache: "npm"
+ cache: 'npm'
- run: npm ci
- run: npm run lint
diff --git a/.github/workflows/publish-demo.yml b/.github/workflows/publish-demo.yml
index 477fc64..dc5bfe9 100644
--- a/.github/workflows/publish-demo.yml
+++ b/.github/workflows/publish-demo.yml
@@ -2,7 +2,7 @@ name: publish-demo-to-github-pages
on:
push:
- branches: ["main"]
+ branches: ['main']
workflow_dispatch:
jobs:
@@ -20,8 +20,8 @@ jobs:
- name: Use Node v24
uses: actions/setup-node@v6.4.0
with:
- node-version: "24.x"
- cache: "npm"
+ node-version: '24.x'
+ cache: 'npm'
- name: npm ci and npm run build files for ghpages
run: |
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 0000000..1053b8f
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,6 @@
+{
+ "singleQuote": true,
+ "tabWidth": 2,
+ "trailingComma": "none",
+ "printWidth": 100
+}
diff --git a/.stylelintrc b/.stylelintrc
index 8f9573d..3569106 100644
--- a/.stylelintrc
+++ b/.stylelintrc
@@ -1,15 +1,12 @@
{
- "extends": [
- "stylelint-config-standard",
- "stylelint-config-recommended-scss"
+ "extends": ["stylelint-config-standard", "stylelint-config-recommended-scss"],
+ "rules": {
+ "value-keyword-case": [
+ "lower",
+ {
+ "ignoreKeywords": ["/A\\d00/"]
+ }
],
- "rules": {
- "value-keyword-case": [
- "lower",
- {
- "ignoreKeywords": [ "/A\\d00/" ]
- }
- ],
- "declaration-property-value-no-unknown": null
- }
+ "declaration-property-value-no-unknown": null
+ }
}
diff --git a/.unimportedrc.json b/.unimportedrc.json
index 240c8dd..12f04c2 100644
--- a/.unimportedrc.json
+++ b/.unimportedrc.json
@@ -34,13 +34,6 @@
"projects/mat-datatable-lib/src/directives/datatable-sort/wrapped-error-message.ts",
"projects/mat-datatable-lib/src/lib/mocking-data/mock-data.simple.ts"
],
- "ignoreUnused": [
- "@angular/compiler",
- "material-icons",
- "roboto-fontface",
- "tslib"
- ],
- "ignoreUnresolved": [
- "mat-datatable"
- ]
+ "ignoreUnused": ["@angular/compiler", "material-icons", "roboto-fontface", "tslib"],
+ "ignoreUnresolved": ["mat-datatable"]
}
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e1e9bd1..99f3523 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,76 +4,68 @@ All notable changes to this project will be documented in this file. See [commit
## [17.2.13](https://github.com/BePo65/mat-datatable/compare/v17.2.12...v17.2.13) (2026-04-03)
-
### Bug Fixes
-* update packages to fix github dependabot security warning ([fb6b1bb](https://github.com/BePo65/mat-datatable/commit/fb6b1bb50a57120e8c706a3d1e823f7c80a63e9d))
-* update packages to fix github dependabot security warning ([e59b4df](https://github.com/BePo65/mat-datatable/commit/e59b4df18ca09ef61ff86c591abfe4569f5d3d18))
-* update packages to fix github dependabot security warnings ([9980c84](https://github.com/BePo65/mat-datatable/commit/9980c840772838b52699abbaec90a8ef420febfc))
+- update packages to fix github dependabot security warning ([fb6b1bb](https://github.com/BePo65/mat-datatable/commit/fb6b1bb50a57120e8c706a3d1e823f7c80a63e9d))
+- update packages to fix github dependabot security warning ([e59b4df](https://github.com/BePo65/mat-datatable/commit/e59b4df18ca09ef61ff86c591abfe4569f5d3d18))
+- update packages to fix github dependabot security warnings ([9980c84](https://github.com/BePo65/mat-datatable/commit/9980c840772838b52699abbaec90a8ef420febfc))
## [17.2.12](https://github.com/BePo65/mat-datatable/compare/v17.2.11...v17.2.12) (2025-10-25)
-
### Bug Fixes
-* update packages to latest versions ([3e82442](https://github.com/BePo65/mat-datatable/commit/3e82442debaee05f97af67906b2046872d2e5c25))
+- update packages to latest versions ([3e82442](https://github.com/BePo65/mat-datatable/commit/3e82442debaee05f97af67906b2046872d2e5c25))
## [17.2.11](https://github.com/BePo65/mat-datatable/compare/v17.2.10...v17.2.11) (2025-10-04)
## [17.2.10](https://github.com/BePo65/mat-datatable/compare/v17.2.9...v17.2.10) (2025-10-03)
-
### Bug Fixes
-* update packages to fix github dependabot security warning ([17b0331](https://github.com/BePo65/mat-datatable/commit/17b0331f1fc7340356ba51bc087494c25330ecf5))
-* update packages to fix github dependabot security warning ([30e8433](https://github.com/BePo65/mat-datatable/commit/30e8433ee9ee5bcf6e7de29bb36bd43373d97917))
-* update packages to fix github dependabot security warning ([ae52d6c](https://github.com/BePo65/mat-datatable/commit/ae52d6c74ac53b4b215cd3e9f277eb0b240aec25))
-* update packages to fix github security warnings ([8ddc68f](https://github.com/BePo65/mat-datatable/commit/8ddc68fb65e72158569d64af8ae0188895ee1e24))
+- update packages to fix github dependabot security warning ([17b0331](https://github.com/BePo65/mat-datatable/commit/17b0331f1fc7340356ba51bc087494c25330ecf5))
+- update packages to fix github dependabot security warning ([30e8433](https://github.com/BePo65/mat-datatable/commit/30e8433ee9ee5bcf6e7de29bb36bd43373d97917))
+- update packages to fix github dependabot security warning ([ae52d6c](https://github.com/BePo65/mat-datatable/commit/ae52d6c74ac53b4b215cd3e9f277eb0b240aec25))
+- update packages to fix github security warnings ([8ddc68f](https://github.com/BePo65/mat-datatable/commit/8ddc68fb65e72158569d64af8ae0188895ee1e24))
## [17.2.9](https://github.com/BePo65/mat-datatable/compare/v17.2.8...v17.2.9) (2025-07-02)
-
### Bug Fixes
-* update packages to security issues ([f792ee4](https://github.com/BePo65/mat-datatable/commit/f792ee492d58968b904c85862c68adbd954f882b))
+- update packages to security issues ([f792ee4](https://github.com/BePo65/mat-datatable/commit/f792ee492d58968b904c85862c68adbd954f882b))
## [17.2.8](https://github.com/BePo65/mat-datatable/compare/v17.2.7...v17.2.8) (2025-05-03)
-
### Bug Fixes
-* update packages to fix github dependabot security warning ([4acbd0b](https://github.com/BePo65/mat-datatable/commit/4acbd0bee40a01e574b4b7f0e91bda70f14c4764))
-* update packages to fix github dependabot security warning ([dd52c3a](https://github.com/BePo65/mat-datatable/commit/dd52c3a04a675ae8f1d6911d01c4bc190b4d8824))
-* update packages to fix github dependabot security warning ([06d4934](https://github.com/BePo65/mat-datatable/commit/06d493450718ac79d266cd807af109e20f20dd8a))
-* update packages to fix github dependabot security warning ([df9facb](https://github.com/BePo65/mat-datatable/commit/df9facb7cae2f37731fe6c6aece51368c619767b))
-* update packages to fix github dependabot security warnings ([90160a6](https://github.com/BePo65/mat-datatable/commit/90160a691c0f80871a8a558b1cabff5244bac3b0))
-* update packages to fix github dependabot security warnings ([97e0d3e](https://github.com/BePo65/mat-datatable/commit/97e0d3e83de751d8720a396b72c920f0a27ebb96))
+- update packages to fix github dependabot security warning ([4acbd0b](https://github.com/BePo65/mat-datatable/commit/4acbd0bee40a01e574b4b7f0e91bda70f14c4764))
+- update packages to fix github dependabot security warning ([dd52c3a](https://github.com/BePo65/mat-datatable/commit/dd52c3a04a675ae8f1d6911d01c4bc190b4d8824))
+- update packages to fix github dependabot security warning ([06d4934](https://github.com/BePo65/mat-datatable/commit/06d493450718ac79d266cd807af109e20f20dd8a))
+- update packages to fix github dependabot security warning ([df9facb](https://github.com/BePo65/mat-datatable/commit/df9facb7cae2f37731fe6c6aece51368c619767b))
+- update packages to fix github dependabot security warnings ([90160a6](https://github.com/BePo65/mat-datatable/commit/90160a691c0f80871a8a558b1cabff5244bac3b0))
+- update packages to fix github dependabot security warnings ([97e0d3e](https://github.com/BePo65/mat-datatable/commit/97e0d3e83de751d8720a396b72c920f0a27ebb96))
## [17.2.7](https://github.com/BePo65/mat-datatable/compare/v17.2.6...v17.2.7) (2024-12-10)
-
### Bug Fixes
-* update packages to fix github dependabot security warnings ([682c4fb](https://github.com/BePo65/mat-datatable/commit/682c4fb762a86b4805881a7be0a41bc8ff476a0f))
-* update packages to fix github dependabot security warnings ([aca6b75](https://github.com/BePo65/mat-datatable/commit/aca6b750e679e77e24958d78cee1466a043458e7))
-* update packages to fix github dependabot security warnings ([4c5f840](https://github.com/BePo65/mat-datatable/commit/4c5f84004fe0ffeada49ca268d28083e9a3fa094))
-* update packages to fix github dependabot security warnings ([a8d81e1](https://github.com/BePo65/mat-datatable/commit/a8d81e186eedca49af7c9980ad8e0fd1c5ad4df3))
+- update packages to fix github dependabot security warnings ([682c4fb](https://github.com/BePo65/mat-datatable/commit/682c4fb762a86b4805881a7be0a41bc8ff476a0f))
+- update packages to fix github dependabot security warnings ([aca6b75](https://github.com/BePo65/mat-datatable/commit/aca6b750e679e77e24958d78cee1466a043458e7))
+- update packages to fix github dependabot security warnings ([4c5f840](https://github.com/BePo65/mat-datatable/commit/4c5f84004fe0ffeada49ca268d28083e9a3fa094))
+- update packages to fix github dependabot security warnings ([a8d81e1](https://github.com/BePo65/mat-datatable/commit/a8d81e186eedca49af7c9980ad8e0fd1c5ad4df3))
## [17.2.6](https://github.com/BePo65/mat-datatable/compare/v17.2.5...v17.2.6) (2024-09-26)
-
### Bug Fixes
-* update packages to fix github dependabot security warning ([6244b0f](https://github.com/BePo65/mat-datatable/commit/6244b0f7cbede2caedcd0391d9f44d5f7a779201))
-* update packages to fix github dependabot security warnings ([1fda0e1](https://github.com/BePo65/mat-datatable/commit/1fda0e18b12d87268297c38185a09f91f1e4ba6a))
+- update packages to fix github dependabot security warning ([6244b0f](https://github.com/BePo65/mat-datatable/commit/6244b0f7cbede2caedcd0391d9f44d5f7a779201))
+- update packages to fix github dependabot security warnings ([1fda0e1](https://github.com/BePo65/mat-datatable/commit/1fda0e18b12d87268297c38185a09f91f1e4ba6a))
## [17.2.5](https://github.com/BePo65/mat-datatable/compare/v17.2.4...v17.2.5) (2024-08-14)
-
### Bug Fixes
-* fix linting errors ([6d824f8](https://github.com/BePo65/mat-datatable/commit/6d824f810d9cccc584db9df03aa5166e140fb2f0))
-* update packages to fix github dependabot security warning ([f8b9990](https://github.com/BePo65/mat-datatable/commit/f8b999023f1243c56e0dd92ea554226f57e88a5a))
+- fix linting errors ([6d824f8](https://github.com/BePo65/mat-datatable/commit/6d824f810d9cccc584db9df03aa5166e140fb2f0))
+- update packages to fix github dependabot security warning ([f8b9990](https://github.com/BePo65/mat-datatable/commit/f8b999023f1243c56e0dd92ea554226f57e88a5a))
## [17.2.4](https://github.com/BePo65/mat-datatable/compare/v17.2.3...v17.2.4) (2024-07-02)
@@ -85,63 +77,56 @@ All notable changes to this project will be documented in this file. See [commit
## [17.2.0](https://github.com/BePo65/mat-datatable/compare/v17.1.1...v17.2.0) (2024-03-06)
-
### Features
-* fix problems with using the mat-datatable theme ([81fbc7a](https://github.com/BePo65/mat-datatable/commit/81fbc7a00bf4def71a3bcaed37c584fecb42629e))
-* **lib:** make theme an export of library ([42ee128](https://github.com/BePo65/mat-datatable/commit/42ee128d016eaf8c568324d38e31c1c6923e8066))
-
+- fix problems with using the mat-datatable theme ([81fbc7a](https://github.com/BePo65/mat-datatable/commit/81fbc7a00bf4def71a3bcaed37c584fecb42629e))
+- **lib:** make theme an export of library ([42ee128](https://github.com/BePo65/mat-datatable/commit/42ee128d016eaf8c568324d38e31c1c6923e8066))
### Bug Fixes
-* remove scope from library ([28b1b59](https://github.com/BePo65/mat-datatable/commit/28b1b59c3b5908088de8cded9ba7e7e06a39084f))
+- remove scope from library ([28b1b59](https://github.com/BePo65/mat-datatable/commit/28b1b59c3b5908088de8cded9ba7e7e06a39084f))
## [17.1.1](https://github.com/BePo65/mat-datatable/compare/v17.1.0...v17.1.1) (2024-03-05)
## [17.1.0](https://github.com/BePo65/mat-datatable/compare/v17.0.1...v17.1.0) (2024-03-05)
-
### Features
-* update app and lib to standalone ([917fd2a](https://github.com/BePo65/mat-datatable/commit/917fd2ae46e94f8aaebf033cb1dd44153cad6de9))
+- update app and lib to standalone ([917fd2a](https://github.com/BePo65/mat-datatable/commit/917fd2ae46e94f8aaebf033cb1dd44153cad6de9))
## [17.0.1](https://github.com/BePo65/mat-datatable/compare/v17.0.0...v17.0.1) (2024-03-02)
## [17.0.0](https://github.com/BePo65/mat-datatable/compare/v16.0.0...v17.0.0) (2024-03-02)
-
### ⚠ BREAKING CHANGES
-* tha project now requires angular v17
+- tha project now requires angular v17
### Features
-* update to angular v17 ([dbe1ae8](https://github.com/BePo65/mat-datatable/commit/dbe1ae8fe06a5335d65babe6a420c230f73d3baa))
+- update to angular v17 ([dbe1ae8](https://github.com/BePo65/mat-datatable/commit/dbe1ae8fe06a5335d65babe6a420c230f73d3baa))
## [16.0.0](https://github.com/BePo65/mat-datatable/compare/v15.0.0...v16.0.0) (2024-03-02)
-
### ⚠ BREAKING CHANGES
-* tha project now requires angular v16
+- tha project now requires angular v16
### Features
-* update to angular v16 ([5ecb525](https://github.com/BePo65/mat-datatable/commit/5ecb5253eaa1f226bf4d97c01ad4be311d81a3c2))
+- update to angular v16 ([5ecb525](https://github.com/BePo65/mat-datatable/commit/5ecb5253eaa1f226bf4d97c01ad4be311d81a3c2))
## [15.0.0](https://github.com/BePo65/mat-datatable/compare/v0.0.0...v15.0.0) (2024-03-01)
-
### Features
-* **demo:** add link to source on github to header of demo page ([a01ea22](https://github.com/BePo65/mat-datatable/commit/a01ea22aa116a973bdf8f3ec71a7ebe88c435b47))
-
+- **demo:** add link to source on github to header of demo page ([a01ea22](https://github.com/BePo65/mat-datatable/commit/a01ea22aa116a973bdf8f3ec71a7ebe88c435b47))
### Bug Fixes
-* **demo:** remove base tag from index.html to fix error 404 ([eecdfa5](https://github.com/BePo65/mat-datatable/commit/eecdfa5b85ec061f8c8aa5ae77b9c2cb7b60e9bf))
-* **demo:** remove routing from demo (was not used anyway) ([91d8a09](https://github.com/BePo65/mat-datatable/commit/91d8a09ca71c4a10d9bd41cc8e2110900117743b))
-* make missing icon in show/hide button visible ([96dd315](https://github.com/BePo65/mat-datatable/commit/96dd3159024bc510fbeda0ea63118843cbcf362a)), closes [github.com/angular/components/issues/14959#issuecomment-481797135](https://github.com/github.com/angular/components/issues/14959/issues/issuecomment-481797135)
+- **demo:** remove base tag from index.html to fix error 404 ([eecdfa5](https://github.com/BePo65/mat-datatable/commit/eecdfa5b85ec061f8c8aa5ae77b9c2cb7b60e9bf))
+- **demo:** remove routing from demo (was not used anyway) ([91d8a09](https://github.com/BePo65/mat-datatable/commit/91d8a09ca71c4a10d9bd41cc8e2110900117743b))
+- make missing icon in show/hide button visible ([96dd315](https://github.com/BePo65/mat-datatable/commit/96dd3159024bc510fbeda0ea63118843cbcf362a)), closes [github.com/angular/components/issues/14959#issuecomment-481797135](https://github.com/github.com/angular/components/issues/14959/issues/issuecomment-481797135)
## 0.0.0 (2024-02-26)
diff --git a/README.md b/README.md
index 407a76e..5212984 100644
--- a/README.md
+++ b/README.md
@@ -55,19 +55,21 @@ A simple data table with virtual scrolling using Angular Material.
+
## About The Project
This project extends 'angular material table' so that it can be used as a replacement for [ngx-datatable](https://github.com/swimlane/ngx-datatable) in one of my projects. Unluckily ngx-datatable seems to be dead as it is still on angular v12 and an update to a more recent angular version is not in sight.
Mat-Datatable implements a table with virtual scrolling, sorting and filtering. Only a minimal set of the functionality of ngx-datatable is implemented.
-
+
Try out the [live demo](https://bepo65.github.io/mat-datatable/).
(back to top)
+
## Getting Started
To use this package in your project just follow these simple steps.
@@ -78,41 +80,73 @@ The package can be used in Angular apps with Angular Material installed.
### Installation
-Install the package from npmjs
- ```sh
- npm install @bepo65/mat-datatable
- ```
+Install the package from npmjs:
+
+```sh
+npm install mat-datatable
+```
### Embed Mat-Datatable In Your Project
-Configure your angular application module (e.g: app.module.ts):
+Use the component as a standalone Angular component. Some properties of mat-datatable must be configured in the component class (for example in app.component.ts):
+
```ts
-...
-import { MatDatatableModule } from 'mat-datatable';
-
-@NgModule({
- ...
- imports: [
- ...
- MatDatatableModule
- ]
+import { Component } from '@angular/core';
+import { MatDatatableComponent, MatColumnDefinition } from 'mat-datatable';
+
+@Component({
+ selector: 'app-root',
+ standalone: true,
+ imports: [MatDatatableComponent],
+ templateUrl: './app.component.html',
+ styleUrls: ['./app.component.scss']
})
+export class AppComponent {
+ protected dataStore = new MyTableDataStore();
+
+ protected columnDefinitions: MatColumnDefinition[] = [
+ {
+ columnId: 'id',
+ header: 'ID',
+ cell: (row) => ({ type: 'string', text: row.id.toString() })
+ },
+ {
+ columnId: 'name',
+ sortable: true,
+ resizable: true,
+ header: 'Name',
+ cell: (row) => ({ type: 'string', text: row.name })
+ }
+ ];
+
+ protected displayedColumns: string[] = ['id', 'name'];
+}
```
-Add Mat-Datatable to your html file (e.g: app.component.html):
+The `cell` callback returns a typed content descriptor, so you can render plain strings, mailto links or images without changing the table API:
+
+```ts
+cell: (row) => ({ type: 'mailtoLink', text: row.email, url: `mailto:${row.email}` });
+```
+
+Add Mat-Datatable to your HTML file (for example app.component.html):
+
```html
-
- loading...
+ [trackBy]="trackBy"
+ [withFooter]="true"
+ >
+ Loading...
```
-The height of the element containing the mat-datatable must be set explicitly (e.g: app.component.scss):
+The height of the element containing the mat-datatable must be set explicitly (for example app.component.scss):
+
```css
.content-table {
height: 400px;
@@ -121,35 +155,16 @@ The height of the element containing the mat-datatable must be set explicitly (e
}
```
-Some properties of mat-datatable must be configured in the component class (e,g, app.component.ts):
-```ts
-export class AppComponent {
- ...
- protected dataStore = new MyTableDataStore();
- protected columnDefinitions: MatColumnDefinition[] = [
- {
- columnId: 'id',
- header: 'ID',
- cell: (row: DemoTableItem) => row?.userId?.toString(),
- footer: 'id'
- },
- {
- columnId: 'name',
- sortable: true,
- resizable: true,
- header: 'Name',
- cell: (row: DemoTableItem) => row?.firstName,
- footer: 'name'
- }
-
- ];
- protected displayedColumns: string[] = ['id', 'name'];
+The `cell` callback returns a typed content descriptor, so you can render plain strings, mailto links or images without changing the table API:
+```ts
+cell: (row) => ({ type: 'mailtoLink', text: row.email, url: `mailto:${row.email}` });
```
(back to top)
+
## Used Assets
The component is based on Angular Material and uses [Google Fonts](https://fonts.google.com/specimen/Roboto) and the [Google Material Icons](https://google.github.io/material-design-icons/#icon-font-for-the-web) font.
@@ -158,6 +173,7 @@ Both fonts are part of the project and not fetched via https.
(back to top)
+
## Mat-Datatable Demo
Demo project to show all features of Mat-Datatable.
@@ -173,114 +189,68 @@ Navigate to http://localhost:4200
(back to top)
+
## API Reference
-`import { MatDatatable } from '@bepo65/mat-datatable';`
+```ts
+import {
+ MatDatatableComponent,
+ MatColumnDefinition,
+ CellValueString,
+ CellValueImage,
+ CellValueMailTo,
+ MatSortDefinition,
+ DataStoreProvider,
+ FieldFilterDefinition,
+ RowSelectionType
+} from 'mat-datatable';
+```
### Classes
-#### **MatDatatable**
+#### MatDatatableComponent
-Component to create an angular material table based datatable.
-The component is generic; the given type is used to define the object for the row data.
+Standalone Angular component for rendering a virtualized Material table. The component is generic so the row type can be provided with the template parameter.
-##### **Properties**
+##### Inputs
-| Name | Description |
-| ------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `@Input() columnDefinitions: MatColumnDefinition[]` | The definition of the columns used in the table. The order of the definitions needs not to correspond to the order of the columns in the table. Default value: `[]`. |
-| | |
-
-| Name | Description |
-| ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `@Input() displayedColumns: string[]` | A list with the names of the columns in the table. The array contains the 'columnId' of the corresponding column definition. Default value: `[]`. |
-| | |
-
-| Name | Description |
-| --------------------------------------------- | --------------------------------------------------- |
-| `@Input() rowSelectionMode: RowSelectionType` | The type of row selection. Default value: `'none'`. |
-| | |
-
-| Name | Description |
-| -------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `@Input() dataStoreProvider: DataStoreProvider` | An object that connects the mat-datatable with the data source. The object must be the instance of a class implementing the DataStoreProvider interface. Default value: `new EmptyDataStoreProvider`. |
-| | |
-
-| Name | Description |
-| ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
-| `@Input() trackBy(): TrackByFunction` | A function that returns a value that identifies a single row. Default value: `(index: number, item: T) => JSON.stringify(item)`. |
-| | |
-
-| Name | Description |
-| ------------------- | ---------------------------------------------------------- |
-| withFooter: boolean | Whether the table has a footer row. Default value: `true`. |
-| | |
-
-| Name | Description |
-| ------------------------------------- | ------------------------------ |
-| `@Output() rowClick: EventEmitter` | Emitted when a row is clicked. |
-| | |
-
-| Name | Description |
-| ----------------------------------------------- | ----------------------------------------------- |
-| @Output() rowSelectionChange: EventEmitter | Emitted when the list of selected rows changes. |
-| | |
-
-| Name | Description |
-| --------------------------------------------------------- | ----------------------------------------- |
-| `@Output() sortChange: EventEmitter` | Emitted when the sort definition changes. |
-| | |
-
-| Name | Description |
-| ---------------------------------------------- | -------------------------------------------------------- |
-| `firstVisibleIndexChanged: Observable` | Emitted when the index of the first visible row changes. |
-| | |
-
-| Name | Description |
-| -------------------------------------- | ------------------------------------------------------------------------------------------------------ |
-| `totalRowsChanged: Observable` | Emitted when the total number of rows in the datastore changes (does not depend on any active filter). |
-| | |
-
-| Name | Description |
-| ----------------------------------------- | ------------------------------------------------- |
-| `filteredRowsChanged: Observable` | Emitted when the number of filtered rows changes. |
-| | |
-
-| Name | Description |
-| ------------------------------ | ------------------------ |
-| `activatedRow: T \| undefined` | Marks a row as 'active'. |
-| | |
-
-| Name | Description |
-| ------------------- | ------------------------- |
-| `selectedRows: T[]` | Marks rows as 'selected'. |
-| | |
-
-| Name | Description |
-| -------------------------------------- | ---------------------------------------- |
-| `sortDefinitions: MatSortDefinition[]` | Gets / sets the current sort definition. |
-| | |
-
-| Name | Description |
-| ----------------------------------------------- | ------------------------------------------ |
-| `filterDefinitions: FieldFilterDefinition[]` | Gets / sets the current filter definition. |
-| | |
+| Name | Description |
+| --------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
+| `columnDefinitions: MatColumnDefinition[]` | Column definitions for the table. The order of the definitions does not need to match the visible column order. |
+| `displayedColumns: string[]` | List of visible column IDs in the order they should be rendered. |
+| `rowSelectionMode: RowSelectionType` | Controls row selection behaviour. Supported values are `none`, `single` and `multi`. |
+| `dataStoreProvider: DataStoreProvider` | Data source implementation for the table. |
+| `trackBy: TrackByFunction` | Optional row identity function. |
+| `withFooter: boolean` | Enables the footer row. |
-##### **Methods**
+##### Outputs
+
+| Name | Description |
+| ----------------------------------------------- | ------------------------------------------------ |
+| `rowClick: EventEmitter` | Emitted when a row is clicked. |
+| `rowSelectionChange: EventEmitter` | Emitted when the current selection changes. |
+| `sortChange: EventEmitter` | Emitted when the active sort definition changes. |
-| | |
-| -------------- | ----------------------------------------------- |
-| `scrollToRow` | Scrolls to the given row. |
-| **Parameters** |
-| row: T | Row to show on the top of the current viewport. |
-| | |
+##### Properties
-| | |
-| ------------- | ------------------------------ |
-| `reloadTable` | Reloads the rows of the table. |
-| | |
+| Name | Description |
+| ----------------------------------------------- | ------------------------------------------------ |
+| `activatedRow: T \| undefined` | Marks a row as active. |
+| `selectedRows: T[]` | Contains the current selection. |
+| `sortDefinitions: MatSortDefinition[]` | Gets or sets the current sort definition. |
+| `filterDefinitions: FieldFilterDefinition[]` | Gets or sets the active filter definition. |
+| `firstVisibleIndexChanged: Observable` | Emits the index of the first visible row. |
+| `totalRowsChanged: Observable` | Emits the total number of rows in the datastore. |
+| `filteredRowsChanged: Observable` | Emits the number of rows after filtering. |
+
+##### Methods
+
+| Name | Description |
+| --------------------- | ------------------------------------------------------ |
+| `scrollToRow(row: T)` | Scrolls the viewport so the given row becomes visible. |
+| `reloadTable()` | Reloads the table from its datastore. |
@@ -288,84 +258,81 @@ The component is generic; the given type is used to define the object for the ro
#### DataStoreProvider
-Interface for a component that fetches data from the datastore respecting sorting and filtering.
-The component is generic; the given type is used to define the object for the row data.
+Interface for a component that fetches data from the datastore while respecting sorting and filtering.
-##### **Methods**
+##### Methods
+
+| Name | Description |
+| ----------------------------------------- | ----------------------------------- |
+| `getPagedData(rowsRange, sorts, filters)` | Fetches the requested page of data. |
-| | |
-| ----------------------------------- | ----------------------------------------------------------------- |
-| `getPagedData` | Fetches data from the datastore respecting sorting and filtering. |
-| **Parameters** |
-| rowsRange: RequestRowsRange | The range of rows to fetch. |
-| sorts: FieldSortDefinition[] | The sort definitions to use. |
-| filters: FieldFilterDefinition[] | The filter definitions to use. |
-| **Returns** |
-| Observable> | Emitting fetched data from the datastore. |
-| | |
+| **Parameters** | |
+| ----------------------------------- | ------------------------------ |
+| rowsRange: RequestRowsRange | The range of rows to fetch. |
+| sorts: FieldSortDefinition[] | The sort definitions to use. |
+| filters: FieldFilterDefinition[] | The filter definitions to use. |
+
+| **Return value** | |
+| ------------------- | ----------------------------------------- |
+| Observable> | Emitting fetched data from the datastore. |
#### MatColumnDefinition
Interface for the definition of a single table column.
-##### **Properties**
+##### Properties
-| Name | Description |
-| ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
-| `columnId: string` | The ID of the column. |
-| `sortable: boolean` | Whether this column can be used for sorting. By default a column is not sortable. |
-| `resizable: boolean` | Whether this column can be resized. By default a column is not resizable. |
-| `header: string` | The text in the header row of a column. |
-| `headerAlignment: ColumnAlignmentType` | The alignment of the header row of a column. |
-| `cell: (element: TRowData) => string` | The function to get the content of a cell. |
-| `cellAlignment: ColumnAlignmentType` | The alignment of a data row in a column. |
-| `width: string` | The width of the column. |
-| `tooltip: (element: TRowData) => string` | The function to get the tooltip for a cell. |
-| `showAsMailtoLink: boolean` | Whether this cell should be shown a 'mailto' link. By default a column is not shown as mailto link. |
-| `showAsSingleLine: boolean` | Whether this cell should be truncated to a single line. By default multiline text in a column is not shown as a single line. |
-| `footer: string` | The text in the footer row of a column. |
-| `footerAlignment: ColumnAlignmentType` | The alignment of the footer row of a column. |
-| `footerColumnSpan: number` | The number of columns a footer should span. By default a footer spans 1 column. |
-| | |
+| Name | Description |
+| ----------------------------------------------- | ------------------------------------------------------ |
+| `columnId: string` | The unique ID of the column. |
+| `sortable?: boolean` | Enables sorting for the column. |
+| `resizable?: boolean` | Enables resizing of the column. |
+| `header: string` | The text shown in the header row. |
+| `headerAlignment?: ColumnAlignmentType` | Header alignment. |
+| `cell: (element: TRowData) => CellContentValue` | Returns the rendered cell content for the current row. |
+| `cellAlignment?: ColumnAlignmentType` | Alignment of the cell content. |
+| `width?: string` | Optional column width, for example `8em`. |
+| `tooltip?: (element: TRowData) => string` | Optional tooltip callback. |
+| `showAsSingleLine?: boolean` | Truncates the content to a single line. |
+| `footer?: string` | Optional footer text. |
+| `footerAlignment?: ColumnAlignmentType` | Footer alignment. |
+| `footerColumnSpan?: number` | Optional number of columns the footer should span. |
#### MatSortDefinition
-Interface for the definition of the sorting of 1 table column.
+Interface for the definition of sorting for one column.
-##### **Properties**
+##### Properties
-| Name | Description |
-| -------------------------- | ------------------------------------------------ |
-| `columnId: string` | The 'columnId' of the column to use for sorting. |
-| `direction: SortDirection` | The direction used to sort the column. |
-| | |
+| Name | Description |
+| -------------------------- | ------------------------------------- |
+| `columnId: string` | The `columnId` of the column to sort. |
+| `direction: SortDirection` | The sort direction. |
#### RequestRowsRange
-Interface defining the properties of a requests for a range of rows.
+Interface defining the properties of a request for a range of rows.
-##### **Properties**
+##### Properties
| Name | Description |
| ----------------------- | ------------------------------------- |
| `startRowIndex: number` | The index of the first row to return. |
| `numberOfRows: number` | The number of rows to return. |
-| | |
#### Page
Interface defining the properties of a page of rows returned from the datastore.
-##### **Properties**
+##### Properties
-| Name | Description |
-| ----------------------- | ------------------------------------------------ |
-| `content:T[]` | The array of the requested rows. |
-| `startRowIndex` | The index of the first row returned. |
-| `returnedElements` | The number of rows in 'content'. |
-| `totalElements` | The number of rows in the unfiltered data store. |
-| `totalFilteredElements` | The number of rows after filtering. |
-| | |
+| Name | Description |
+| ------------------------------- | ----------------------------------------------- |
+| `content: T[]` | The array of requested rows. |
+| `startRowIndex: number` | The index of the first row returned. |
+| `returnedElements: number` | The number of rows in `content`. |
+| `totalElements: number` | The number of rows in the unfiltered datastore. |
+| `totalFilteredElements: number` | The number of rows after filtering. |
@@ -373,68 +340,146 @@ Interface defining the properties of a page of rows returned from the datastore.
#### ColumnAlignmentType
-The alignment of the content of a column
+```ts
+type ColumnAlignmentType = 'left' | 'center' | 'right';
+```
+
+#### ColumnDisplayType
-| |
-| --------------------------------------------------------- |
-| type ColumnAlignmentType = "left" \| "center" \| "right"; |
-| |
+How the column should be rendered (as text, mail-to link or as image).
+
+```ts
+type ColumnDisplayType = 'string' | 'mailtoLink' | 'image';
+```
+
+#### CellValueString
+
+Type for a literal object containing the values to be used to render a cell as plain text.
+
+```ts
+interface CellValueString extends CellValueBase {
+ type: 'string';
+ text: string;
+}
+```
+
+##### Properties
+
+| Name | Description |
+| ---------------- | ---------------------------------------------- |
+| `type: 'string'` | Indicates that the cell content is plain text. |
+| `text: string` | The text displayed in the cell. |
+
+#### CellValueMailTo
+
+Type for a literal object containing the values to be used to render a cell as a mail-to link.
+
+```ts
+interface CellValueMailTo extends CellValueBase {
+ type: 'mailtoLink';
+ url: string;
+ text: string;
+}
+```
+
+##### Properties
+
+| Name | Description |
+| -------------------- | ------------------------------------------------------ |
+| `type: 'mailtoLink'` | Indicates that the cell content is rendered as a link. |
+| `url: string` | The mail address or URL used for the link target. |
+| `text: string` | The visible text shown for the link. |
+
+#### CellValueImage
+
+Type for a literal object containing the values to be used to render a cell as an image.
+
+```ts
+interface CellValueImage extends CellValueBase {
+ type: 'image';
+ url: string;
+ altText: string;
+ title?: string;
+}
+```
+
+##### Properties
+
+| Name | Description |
+| ----------------- | -------------------------------------------------------- |
+| `type: 'image'` | Indicates that the cell content is rendered as an image. |
+| `url: string` | The URL of the image to display. |
+| `altText: string` | The alternative text for the image. |
+| `title?: string` | An optional title shown for the image. |
+
+#### CellContentValue
+
+Type of the literal object returned by the function of type CellContentDefType.
+
+```ts
+type CellContentValue = CellValueString | CellValueMailTo | CellValueImage;
+```
+
+#### CellContentDefType
+
+Type of the function of the field `cell` of the MatColumnDefinition.
+
+```ts
+type CellContentDefType = (element: TRowData) => CellContentValue;
+```
#### FieldFilterDefinition
-The definition of a parameter filtering for the column identified by the given 'fieldName'.
+The definition of a parameter for filtering the displayed data using the column identified by the given 'fieldName'.
-| |
-| ------------------------------------------------------------------------------------------------------------------ |
-| type FieldFilterDefinition = StrictUnion\<(FieldFilterDefinitionSimple\ \| FieldFilterDefinitionRange\)>; |
-| |
+```ts
+type FieldFilterDefinition = StrictUnion<
+ FieldFilterDefinitionSimple | FieldFilterDefinitionRange
+>;
+```
#### FieldFilterDefinitionRange
-The definition of a parameter filtering for a range of values.
-
-| |
-| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| type FieldFilterDefinitionSimple = {
fieldName: keyof T
valueFrom: string \| number \| Date
valueTo: string \| number \| Date
}; |
-| |
+```ts
+type FieldFilterDefinitionRange = {
+ fieldName: keyof T;
+ valueFrom: string | number | Date;
+ valueTo: string | number | Date;
+};
+```
#### FieldFilterDefinitionSimple
-The definition of a parameter filtering for a single value.
-
-| |
-| ------------------------------------------------------------------------------------------------------------------------------ |
-| type FieldFilterDefinitionSimple = {
fieldName: keyof T
value: string \| number \| Date
}; |
-| |
+```ts
+type FieldFilterDefinitionSimple = {
+ fieldName: keyof T;
+ value: string | number | Date;
+};
+```
#### FieldSortDefinition
-The definition of a single sort parameter.
-
-| |
-| -------------------------------------------------------------------------------------------------------------------------- |
-| type FieldSortDefinition = {
fieldName: keyof T
sortDirection: SortDirectionAscDesc
}; |
-| |
+```ts
+type FieldSortDefinition = {
+ fieldName: keyof T;
+ sortDirection: SortDirectionAscDesc;
+};
+```
#### RowSelectionType
-How many rows can be selected.
-
-| |
-| ------------------------------------------------------ |
-| type RowSelectionType = 'none' \| 'single' \| 'multi'; |
-| |
+```ts
+type RowSelectionType = 'none' | 'single' | 'multi';
+```
#### SortDirectionAscDesc
-The direction of a sort.
-
-| |
-| ------------------------------------- |
-| type SortDirection = 'asc' \| 'desc'; |
-| |
+```ts
+type SortDirectionAscDesc = 'asc' | 'desc';
+```
+
## API Testing Harnesses
`import { MatDatatableHarness } from '@bepo65/mat-datatable/testing';`
@@ -445,7 +490,7 @@ The direction of a sort.
-#### **_MatRowCellHarnessBase** extends [ContentContainerComponentHarness\](https://material.angular.io/cdk/test-harnesses/api#ContentContainerComponentHarness)
+#### **\_MatRowCellHarnessBase** extends [ContentContainerComponentHarness\](https://material.angular.io/cdk/test-harnesses/api#ContentContainerComponentHarness)
##### **Methods**
@@ -482,7 +527,7 @@ The direction of a sort.
-#### **_MatRowHarnessBase** extends [ComponentHarness](https://material.angular.io/cdk/test-harnesses/api#ComponentHarness)
+#### **\_MatRowHarnessBase** extends [ComponentHarness](https://material.angular.io/cdk/test-harnesses/api#ComponentHarness)
Abstract class used as base for harnesses that interact with a mat-datatable row.
@@ -1018,6 +1063,7 @@ A set of criteria that can be used to filter a list of row harness instances.
(back to top)
+
## Roadmap
See the [open issues](https://github.com/BePo65/mat-datatable/issues) for a full list of proposed features (and known issues).
@@ -1025,13 +1071,15 @@ See the [open issues](https://github.com/BePo65/mat-datatable/issues) for a full
(back to top)
+
## Hints On Possible Extensions
-+ to make footer turn on / off dynamically it is not sufficient to wrap the footer cell and row definitions in ng-container. Details see [stackoverflow](https://stackoverflow.com/questions/63644938/angular-material-mat-table-dynamic-footer-header-rowdef/63648914#63648914). The demo uses [ngx-rerender](https://www.npmjs.com/package/ngx-rerender).
+- to make footer turn on / off dynamically it is not sufficient to wrap the footer cell and row definitions in ng-container. Details see [stackoverflow](https://stackoverflow.com/questions/63644938/angular-material-mat-table-dynamic-footer-header-rowdef/63648914#63648914). The demo uses [ngx-rerender](https://www.npmjs.com/package/ngx-rerender).
(back to top)
+
## Contributing
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.
@@ -1046,15 +1094,18 @@ Don't forget to give the project a star! Thanks again!
5. Open a Pull Request
### Changelog
+
The project uses 'standard-version' to create the changelog. To enable this system, commit messages are linted before commits are executed by git.
To enable this system you have to run the following scripts in your local repository home directory:
+
```
npx husky install
npx husky add .husky/commit-msg "npx --no -- commitlint --edit $1"
```
**The structure of commit messages is**:
+
```
@@ -1064,30 +1115,33 @@ npx husky add .husky/commit-msg "npx --no -- commitlint --edit $1"
```
**header**
+
```
():
```
-
+
type and scope
- - build: Changes that affect the build system or external dependencies (example scope: npm)
- - docs: Documentation only changes
- - feat: A new feature
- - fix: A bug fix
- - perf: A code change that improves performance
- - refactor: A code change that neither fixes a bug nor adds a feature
- - test: Adding missing tests or correcting existing tests (example scopes: demo, lib, e2e)
+
+- build: Changes that affect the build system or external dependencies (example scope: npm)
+- docs: Documentation only changes
+- feat: A new feature
+- fix: A bug fix
+- perf: A code change that improves performance
+- refactor: A code change that neither fixes a bug nor adds a feature
+- test: Adding missing tests or correcting existing tests (example scopes: demo, lib, e2e)
**footer**
+
```
BREAKING CHANGE: ... (requires MAJOR in Semantic Versioning)
```
For details of the commit messages format see [Contributing to Angular](https://github.com/angular/angular/blob/master/CONTRIBUTING.md#commit).
-
(back to top)
+
## License
Copyright © 2025 [Bernhard Pottler](https://github.com/BePo65).
@@ -1099,7 +1153,9 @@ This project uses the fonts '[Roboto](https://fonts.google.com/specimen/Roboto/a
(back to top)
-## Hints
+
+## Hints on dependencies
+
As `eslint` V9 requires a fundamental change to the configuration files, the update will be done in a later version.
As a consequence the package `eslint-plugin-cypress` cannot be updated to a version 4.x or 5.x (as this version has a peerDependency of eslint >= 9).
diff --git a/angular.json b/angular.json
index 67aaa39..b55834c 100644
--- a/angular.json
+++ b/angular.json
@@ -20,18 +20,14 @@
"outputPath": "dist/mat-datatable-demo",
"index": "projects/mat-datatable-demo/src/index.html",
"main": "projects/mat-datatable-demo/src/main.ts",
- "polyfills": [
- "zone.js"
- ],
+ "polyfills": ["zone.js"],
"tsConfig": "projects/mat-datatable-demo/tsconfig.app.json",
"inlineStyleLanguage": "scss",
"assets": [
"projects/mat-datatable-demo/src/favicon.ico",
"projects/mat-datatable-demo/src/assets"
],
- "styles": [
- "projects/mat-datatable-demo/src/styles.scss"
- ],
+ "styles": ["projects/mat-datatable-demo/src/styles.scss"],
"scripts": []
},
"configurations": {
@@ -82,10 +78,7 @@
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
- "polyfills": [
- "zone.js",
- "zone.js/testing"
- ],
+ "polyfills": ["zone.js", "zone.js/testing"],
"tsConfig": "projects/mat-datatable-demo/tsconfig.spec.json",
"karmaConfig": "projects/mat-datatable-demo/karma.conf.js",
"inlineStyleLanguage": "scss",
@@ -93,9 +86,7 @@
"projects/mat-datatable-demo/src/favicon.ico",
"projects/mat-datatable-demo/src/assets"
],
- "styles": [
- "projects/mat-datatable-demo/src/styles.scss"
- ],
+ "styles": ["projects/mat-datatable-demo/src/styles.scss"],
"scripts": []
}
},
@@ -137,10 +128,7 @@
"options": {
"tsConfig": "projects/mat-datatable-lib/tsconfig.spec.json",
"karmaConfig": "projects/mat-datatable-lib/karma.conf.js",
- "polyfills": [
- "zone.js",
- "zone.js/testing"
- ]
+ "polyfills": ["zone.js", "zone.js/testing"]
}
},
"lint": {
diff --git a/assets/screenshot.jpg b/assets/screenshot.jpg
index 321a63d..835b7f6 100644
Binary files a/assets/screenshot.jpg and b/assets/screenshot.jpg differ
diff --git a/backlog.md b/backlog.md
index f08c23e..28cbf5b 100644
--- a/backlog.md
+++ b/backlog.md
@@ -1,6 +1,6 @@
-* Change fonts to @fontsource/roboto and @fontsource/material-icons
-* Add prettier
-* set new selector for TableItemSizeDirective (today it uses the selector used by virtual-scroll-viewport)
-* use @SkipSelf or @Optional instead of default providers (see https://medium.com/@matsal.dev/angular-short-explanation-of-skip-skipself-optional-decorators-69c0c20b25c4)
-* Migrate to new build system
-* Add ssr
+- Change fonts to @fontsource/roboto and @fontsource/material-icons
+- Add prettier
+- set new selector for TableItemSizeDirective (today it uses the selector used by virtual-scroll-viewport)
+- use @SkipSelf or @Optional instead of default providers (see https://medium.com/@matsal.dev/angular-short-explanation-of-skip-skipself-optional-decorators-69c0c20b25c4)
+- Migrate to new build system
+- Add ssr
diff --git a/package-lock.json b/package-lock.json
index 91b4c48..f54a605 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -34,7 +34,7 @@
"@angular/cli": "~17.3.17",
"@angular/compiler-cli": "^17.3.12",
"@angular/platform-browser-dynamic": "^17.3.12",
- "@commitlint/cli": "^21.2.0",
+ "@commitlint/cli": "^21.2.1",
"@commitlint/config-angular": "^21.2.0",
"@cypress/schematic": "^3.0.0",
"@cypress/webpack-preprocessor": "^6.0.4",
@@ -47,11 +47,12 @@
"cypress": "^14.5.4",
"del-cli": "^7.0.0",
"eslint": "^8.57.1",
+ "eslint-config-prettier": "^10.1.8",
"eslint-import-resolver-typescript": "^4.4.5",
"eslint-plugin-cypress": "^3.6.0",
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-jasmine": "^4.2.2",
- "eslint-plugin-jsdoc": "^63.0.12",
+ "eslint-plugin-jsdoc": "^63.0.13",
"eslint-plugin-json": "^4.0.1",
"eslint-plugin-prefer-arrow": "^1.2.3",
"husky": "^9.1.7",
@@ -62,6 +63,7 @@
"karma-jasmine": "~5.1.0",
"karma-jasmine-html-reporter": "^2.2.0",
"ng-packagr": "^17.3.0",
+ "prettier": "^3.9.5",
"start-server-and-test": "^3.0.11",
"stylelint": "^17.14.0",
"stylelint-config-recommended-scss": "^17.0.1",
@@ -3100,9 +3102,9 @@
}
},
"node_modules/@commitlint/cli": {
- "version": "21.2.0",
- "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-21.2.0.tgz",
- "integrity": "sha512-4GLVIhUaT3c3GBlQ0GB80/5H3xXdn/Tgw4lrsuoOQVDu2wl4Xw0GuzSar8xZKSMv4H3xaKaQXmvH91GmdyYBZA==",
+ "version": "21.2.1",
+ "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-21.2.1.tgz",
+ "integrity": "sha512-blsZGe29hJ72VGEFVl72IVYX+1vsfINpjA9yWQA6i7OKD/McGEOXg08sKIRKjFk4JvzhV/9n0l3i6NooPLTNfg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3110,7 +3112,7 @@
"@commitlint/format": "^21.2.0",
"@commitlint/lint": "^21.2.0",
"@commitlint/load": "^21.2.0",
- "@commitlint/read": "^21.2.0",
+ "@commitlint/read": "^21.2.1",
"@commitlint/types": "^21.2.0",
"tinyexec": "^1.0.0",
"yargs": "^18.0.0"
@@ -3416,15 +3418,15 @@
}
},
"node_modules/@commitlint/read": {
- "version": "21.2.0",
- "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-21.2.0.tgz",
- "integrity": "sha512-ELx8Ovh/JoAw5lpvDgxc6Y0We9skf2IPI2RFN+gnYgDGjRdMSF8zeodxhZmcclLWzfUIF7hXLOa8gOlllYcvBA==",
+ "version": "21.2.1",
+ "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-21.2.1.tgz",
+ "integrity": "sha512-hUW7EJQnNTL0vPOmVMNK4CrnrNBN0nN+JJHReFkdHO5y4iyHeEmTBwuC15OCqUTjxWo7idnH1LftfpWVIaPWIA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@commitlint/top-level": "^21.2.0",
"@commitlint/types": "^21.2.0",
- "git-raw-commits": "^5.0.0",
+ "@conventional-changelog/git-client": "^3.0.0",
"tinyexec": "^1.0.0"
},
"engines": {
@@ -3501,6 +3503,33 @@
"node": ">=22.12.0"
}
},
+ "node_modules/@conventional-changelog/git-client": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@conventional-changelog/git-client/-/git-client-3.1.0.tgz",
+ "integrity": "sha512-Tqa/gHco2WJWa740NRjOrfKVvzIqxkZpecb8bemaQ8sKM5PXb1UK4uTyTb/1wIqNuOVaDOFxyBdhTIQZn6gdjQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@simple-libs/child-process-utils": "^2.0.0",
+ "@simple-libs/stream-utils": "^2.0.0",
+ "semver": "^7.5.2"
+ },
+ "engines": {
+ "node": ">=22"
+ },
+ "peerDependencies": {
+ "conventional-commits-filter": "^6.0.1",
+ "conventional-commits-parser": "^7.0.1"
+ },
+ "peerDependenciesMeta": {
+ "conventional-commits-filter": {
+ "optional": true
+ },
+ "conventional-commits-parser": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@conventional-changelog/template": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@conventional-changelog/template/-/template-1.2.1.tgz",
@@ -4312,9 +4341,9 @@
"license": "MIT"
},
"node_modules/@eslint/eslintrc/node_modules/brace-expansion": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz",
- "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==",
+ "version": "1.1.16",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.16.tgz",
+ "integrity": "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4453,9 +4482,9 @@
"license": "MIT"
},
"node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz",
- "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==",
+ "version": "1.1.16",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.16.tgz",
+ "integrity": "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5836,9 +5865,9 @@
"license": "MIT"
},
"node_modules/@npmcli/package-json/node_modules/brace-expansion": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz",
- "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.2.tgz",
+ "integrity": "sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6205,6 +6234,9 @@
"arm"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -6219,6 +6251,9 @@
"arm"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -6233,6 +6268,9 @@
"arm64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -6247,6 +6285,9 @@
"arm64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -6261,6 +6302,9 @@
"loong64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -6275,6 +6319,9 @@
"loong64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -6289,6 +6336,9 @@
"ppc64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -6303,6 +6353,9 @@
"ppc64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -6317,6 +6370,9 @@
"riscv64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -6331,6 +6387,9 @@
"riscv64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -6345,6 +6404,9 @@
"s390x"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -6359,6 +6421,9 @@
"x64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -6373,6 +6438,9 @@
"x64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -6598,29 +6666,16 @@
}
},
"node_modules/@simple-libs/child-process-utils": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@simple-libs/child-process-utils/-/child-process-utils-1.0.2.tgz",
- "integrity": "sha512-/4R8QKnd/8agJynkNdJmNw2MBxuFTRcNFnE5Sg/G+jkSsV8/UBgULMzhizWWW42p8L5H7flImV2ATi79Ove2Tw==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@simple-libs/child-process-utils/-/child-process-utils-2.0.0.tgz",
+ "integrity": "sha512-dvNoRKLijXnD0XoJAz94pbNuB5GQgDr55UhpSPhffDkTT0Cmcqh9jSCOtwfT2d4H6MI9E7c4SgtMuJXZ6F3c6A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@simple-libs/stream-utils": "^1.2.0"
+ "@simple-libs/stream-utils": "^2.0.0"
},
"engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://ko-fi.com/dangreen"
- }
- },
- "node_modules/@simple-libs/child-process-utils/node_modules/@simple-libs/stream-utils": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@simple-libs/stream-utils/-/stream-utils-1.2.0.tgz",
- "integrity": "sha512-KxXvfapcixpz6rVEB6HPjOUZT22yN6v0vI0urQSk1L8MlEWPDFCZkhw2xmkyoTGYeFw7tWTZd7e3lVzRZRN/EA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
+ "node": ">=22"
},
"funding": {
"url": "https://ko-fi.com/dangreen"
@@ -6711,9 +6766,9 @@
"license": "MIT"
},
"node_modules/@tufjs/models/node_modules/brace-expansion": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz",
- "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.2.tgz",
+ "integrity": "sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6820,9 +6875,9 @@
}
},
"node_modules/@types/express-serve-static-core": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz",
- "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==",
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.2.tgz",
+ "integrity": "sha512-d3KvEXBSo/lOAMc2u6fkyDHBvetBHeqD7wm/AcXfLpSOQwlmG9D/aQ0SFswVjv05p7ullQS7Mjohj6/VdbZuTg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6833,9 +6888,9 @@
}
},
"node_modules/@types/express/node_modules/@types/express-serve-static-core": {
- "version": "4.19.8",
- "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz",
- "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==",
+ "version": "4.19.9",
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.9.tgz",
+ "integrity": "sha512-QP2ESEe/ImWY0HDwNAnK9PvEffUyhLTnWkk7KXzHfyeWAnlrDe1fN77bXl6ia8KT3wPlmA7t9/VPRpnf4Ex9sg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6898,13 +6953,13 @@
"license": "MIT"
},
"node_modules/@types/node": {
- "version": "20.10.0",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.0.tgz",
- "integrity": "sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ==",
+ "version": "20.19.43",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.43.tgz",
+ "integrity": "sha512-6oYBAi5ikg4Pl+kGsoYtawUMBT2zZMCvPNF7pVLnHZfd1zf38DRiWn/gT01RYCdUqkv7Fhr+C9ot4/tb+2sVvA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "undici-types": "~5.26.4"
+ "undici-types": "~6.21.0"
}
},
"node_modules/@types/node-forge": {
@@ -7119,9 +7174,9 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": {
- "version": "7.0.5",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
- "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.6.tgz",
+ "integrity": "sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -7307,9 +7362,9 @@
"license": "MIT"
},
"node_modules/@typescript-eslint/type-utils/node_modules/brace-expansion": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz",
- "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.2.tgz",
+ "integrity": "sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7541,9 +7596,9 @@
"license": "MIT"
},
"node_modules/@typescript-eslint/utils/node_modules/brace-expansion": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz",
- "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.2.tgz",
+ "integrity": "sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7642,9 +7697,9 @@
}
},
"node_modules/@ungap/structured-clone": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.2.tgz",
- "integrity": "sha512-5jsZFwgR5rTdKwidH9Qmat75RKwqfpKlWWB1frDkljN127mwqBu8K0PYo7/hFpF03IEJpfVPpCQDY/eDx3iHvA==",
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.3.tgz",
+ "integrity": "sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==",
"dev": true,
"license": "ISC"
},
@@ -7754,6 +7809,9 @@
"arm64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -7768,6 +7826,9 @@
"arm64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -7782,6 +7843,9 @@
"loong64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -7796,6 +7860,9 @@
"loong64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -7810,6 +7877,9 @@
"ppc64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -7824,6 +7894,9 @@
"riscv64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -7838,6 +7911,9 @@
"riscv64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -7852,6 +7928,9 @@
"s390x"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -7866,6 +7945,9 @@
"x64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -7880,6 +7962,9 @@
"x64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -8508,6 +8593,19 @@
"sprintf-js": "~1.0.2"
}
},
+ "node_modules/argue-cli": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/argue-cli/-/argue-cli-3.1.0.tgz",
+ "integrity": "sha512-DhBpBfXL4SS2uC0N922MMajKR3CdrTG0u2or1PNYgXMsrSzViJrbtvT0nCLlLGUI0plam/ZZCs7aAauHtW9thw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=22"
+ },
+ "funding": {
+ "url": "https://ko-fi.com/dangreen"
+ }
+ },
"node_modules/aria-query": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
@@ -9007,9 +9105,9 @@
}
},
"node_modules/baseline-browser-mapping": {
- "version": "2.10.42",
- "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.42.tgz",
- "integrity": "sha512-c/jurFrDLyui7o1J86yLkRu4LMsTYcBohveus7/I2Hzdn9KIP2bdJPTue/lR1KH46enoPbD77GKeSYNdyPoD3Q==",
+ "version": "2.10.43",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.43.tgz",
+ "integrity": "sha512-AjYpR78kDWAY3Efj+cDTFH9t9SCoL7OoTp1BOb0mQV7S+6CiLwnWM3FyxhJtdPufDFKzmCSFoUncKjWgJEZTCQ==",
"dev": true,
"license": "Apache-2.0",
"bin": {
@@ -9086,9 +9184,9 @@
"license": "MIT"
},
"node_modules/body-parser": {
- "version": "1.20.5",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.5.tgz",
- "integrity": "sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==",
+ "version": "1.20.6",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.6.tgz",
+ "integrity": "sha512-p5tAzS57i5MV9fZFDj9LeIiTZEufbSe2eDozP+ElheSUq1m74CRq1jI4mYNDdVs9vQztXFLuk/Gd6BWTdwRJ5g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9145,9 +9243,9 @@
}
},
"node_modules/bonjour-service": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.4.2.tgz",
- "integrity": "sha512-lMskhnsW70yWHr4PhPeh2rvaIkLSaDpp+nmtbXBZaNKTXwxL73QOkW6HhbzqTImXjevn9TreGT4GACGBCGP9nQ==",
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.4.3.tgz",
+ "integrity": "sha512-2Kd5UYlFUVgAKMTyuBLl6w49wqfOnbxHqmuH0oCl/n7TfAikR0zoowNOP5BU4dfXmm+Vr9JyEN370auSMx+CNg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9189,9 +9287,9 @@
}
},
"node_modules/browserslist": {
- "version": "4.28.5",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.5.tgz",
- "integrity": "sha512-Cu2E6QejHWzuDMTkuwgpABFgDfZrXLQq5V13YOACZx4mFAG4IwGTbTfHPMr4WtxlHoXSM8FIuRwYYCz5XiabaQ==",
+ "version": "4.28.6",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.6.tgz",
+ "integrity": "sha512-FQBYNK15VMslhLHpA7+n+n1GOlF1kId2xcCg7/j95f24AOF6VDYMNH4mFxF7KuaTdv627faazpOAjFzMrfJOUw==",
"dev": true,
"funding": [
{
@@ -9210,9 +9308,9 @@
"license": "MIT",
"dependencies": {
"baseline-browser-mapping": "^2.10.42",
- "caniuse-lite": "^1.0.30001800",
- "electron-to-chromium": "^1.5.387",
- "node-releases": "^2.0.50",
+ "caniuse-lite": "^1.0.30001803",
+ "electron-to-chromium": "^1.5.389",
+ "node-releases": "^2.0.51",
"update-browserslist-db": "^1.2.3"
},
"bin": {
@@ -9306,9 +9404,9 @@
"license": "MIT"
},
"node_modules/cacache/node_modules/brace-expansion": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz",
- "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.2.tgz",
+ "integrity": "sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9499,9 +9597,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001802",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001802.tgz",
- "integrity": "sha512-vmv8ub2xwTNmljSKf82mtCk5JH7hC+YgzLj3P5zotvA0tPQ9016tdNNOG8WRca1IxOnhSsivB+J0z5FeE5LOUw==",
+ "version": "1.0.30001805",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001805.tgz",
+ "integrity": "sha512-52noaS3DubycKSXaU30TwPGIp+POyQSUVa5jBEq3vkRkY0kjyb3LQgvhU6WGyCcyXqVLWO0Cw0Q6BSdD0kUfVA==",
"dev": true,
"funding": [
{
@@ -10230,25 +10328,6 @@
"node": ">=14"
}
},
- "node_modules/conventional-changelog-core/node_modules/git-raw-commits": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-3.0.0.tgz",
- "integrity": "sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw==",
- "deprecated": "Deprecated and no longer maintained. Use @conventional-changelog/git-client instead.",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "dargs": "^7.0.0",
- "meow": "^8.1.2",
- "split2": "^3.2.2"
- },
- "bin": {
- "git-raw-commits": "cli.js"
- },
- "engines": {
- "node": ">=14"
- }
- },
"node_modules/conventional-changelog-ember": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-3.0.0.tgz",
@@ -10339,6 +10418,20 @@
"node": ">=14"
}
},
+ "node_modules/conventional-changelog-writer/node_modules/conventional-commits-filter": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-3.0.0.tgz",
+ "integrity": "sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "lodash.ismatch": "^4.4.0",
+ "modify-values": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
"node_modules/conventional-changelog/node_modules/conventional-changelog-angular": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-6.0.0.tgz",
@@ -10366,28 +10459,24 @@
}
},
"node_modules/conventional-commits-filter": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-3.0.0.tgz",
- "integrity": "sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q==",
- "dev": true,
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-6.0.1.tgz",
+ "integrity": "sha512-cs+LadpH7Kpw0M3k8wurk+sOVVDAENA0iK4OBOrkL94j5lEVYRJ4j3zd2bhY9qgzyrPqthdcYT3axzRN7AliMg==",
+ "extraneous": true,
"license": "MIT",
- "dependencies": {
- "lodash.ismatch": "^4.4.0",
- "modify-values": "^1.0.1"
- },
"engines": {
- "node": ">=14"
+ "node": ">=22"
}
},
"node_modules/conventional-commits-parser": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-7.0.1.tgz",
- "integrity": "sha512-6VtskFpPsNkGVk/TY2RnV/MEdKfvCPBtQZN9x8jh9+k5RWBQ+tiaWn5UFCzTr0Dd88iKx7xghxbjBRp5uIzp3g==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-7.1.0.tgz",
+ "integrity": "sha512-DPp6hkUjvwIivxbkrTiLXeRswNv1A/4GFA2X6scXma0AMa9632V3TwxmrlkUIEtUktiM3Ln+RrSH2xlP3/jUTw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@simple-libs/stream-utils": "^2.0.0",
- "meow": "^14.0.0"
+ "argue-cli": "^3.1.0"
},
"bin": {
"conventional-commits-parser": "dist/cli/index.js"
@@ -10396,19 +10485,6 @@
"node": ">=22"
}
},
- "node_modules/conventional-commits-parser/node_modules/meow": {
- "version": "14.1.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-14.1.0.tgz",
- "integrity": "sha512-EDYo6VlmtnumlcBCbh1gLJ//9jvM/ndXHfVXIFrZVr6fGcwTUyCTFNTLCKuY3ffbK8L/+3Mzqnd58RojiZqHVw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/conventional-recommended-bump": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-7.0.1.tgz",
@@ -10431,39 +10507,34 @@
"node": ">=14"
}
},
- "node_modules/conventional-recommended-bump/node_modules/conventional-commits-parser": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-4.0.0.tgz",
- "integrity": "sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==",
+ "node_modules/conventional-recommended-bump/node_modules/conventional-commits-filter": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-3.0.0.tgz",
+ "integrity": "sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "is-text-path": "^1.0.1",
- "JSONStream": "^1.3.5",
- "meow": "^8.1.2",
- "split2": "^3.2.2"
- },
- "bin": {
- "conventional-commits-parser": "cli.js"
+ "lodash.ismatch": "^4.4.0",
+ "modify-values": "^1.0.1"
},
"engines": {
"node": ">=14"
}
},
- "node_modules/conventional-recommended-bump/node_modules/git-raw-commits": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-3.0.0.tgz",
- "integrity": "sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw==",
- "deprecated": "Deprecated and no longer maintained. Use @conventional-changelog/git-client instead.",
+ "node_modules/conventional-recommended-bump/node_modules/conventional-commits-parser": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-4.0.0.tgz",
+ "integrity": "sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "dargs": "^7.0.0",
+ "is-text-path": "^1.0.1",
+ "JSONStream": "^1.3.5",
"meow": "^8.1.2",
"split2": "^3.2.2"
},
"bin": {
- "git-raw-commits": "cli.js"
+ "conventional-commits-parser": "cli.js"
},
"engines": {
"node": ">=14"
@@ -10756,9 +10827,9 @@
}
},
"node_modules/cpy-cli/node_modules/ignore": {
- "version": "7.0.5",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
- "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.6.tgz",
+ "integrity": "sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -10817,9 +10888,9 @@
}
},
"node_modules/cpy/node_modules/ignore": {
- "version": "7.0.5",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
- "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.6.tgz",
+ "integrity": "sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -11619,9 +11690,9 @@
}
},
"node_modules/del/node_modules/ignore": {
- "version": "7.0.5",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
- "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.6.tgz",
+ "integrity": "sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -11885,9 +11956,9 @@
"license": "MIT"
},
"node_modules/dotgitignore/node_modules/brace-expansion": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz",
- "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==",
+ "version": "1.1.16",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.16.tgz",
+ "integrity": "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -12015,9 +12086,9 @@
"license": "MIT"
},
"node_modules/electron-to-chromium": {
- "version": "1.5.388",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.388.tgz",
- "integrity": "sha512-Pl/aJaqOOxYxda3vcx1IKSJimwYXHDkEnGn0F+kG2EE68dDtx2uCinaS+Vih8Z91B9t8CSAbiF/HKyWcnXjhzw==",
+ "version": "1.5.389",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.389.tgz",
+ "integrity": "sha512-cEto7aeOqBfU1D+c5py5pE+ooscKE75JifxLBdFUZsqAxRS6y7kebtxAZvICszSl05gPjYHDTjY+lXpyGvpJbg==",
"dev": true,
"license": "ISC"
},
@@ -12322,9 +12393,9 @@
}
},
"node_modules/es-module-lexer": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.0.tgz",
- "integrity": "sha512-KLdwQm2NvGLDkQDCGvmiQrhkd0JbMzXthwQAUgWjQuQdBLFa3eiBP5arXZyA+f8x+x7OXgud6bq2rxjGtHV2tw==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.1.tgz",
+ "integrity": "sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==",
"dev": true,
"license": "MIT",
"peer": true
@@ -12540,6 +12611,22 @@
"url": "https://opencollective.com/eslint"
}
},
+ "node_modules/eslint-config-prettier": {
+ "version": "10.1.8",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz",
+ "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "eslint-config-prettier": "bin/cli.js"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint-config-prettier"
+ },
+ "peerDependencies": {
+ "eslint": ">=7.0.0"
+ }
+ },
"node_modules/eslint-import-context": {
"version": "0.1.9",
"resolved": "https://registry.npmjs.org/eslint-import-context/-/eslint-import-context-0.1.9.tgz",
@@ -12729,9 +12816,9 @@
"license": "MIT"
},
"node_modules/eslint-plugin-import/node_modules/brace-expansion": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz",
- "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==",
+ "version": "1.1.16",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.16.tgz",
+ "integrity": "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -12797,9 +12884,9 @@
}
},
"node_modules/eslint-plugin-jsdoc": {
- "version": "63.0.12",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-63.0.12.tgz",
- "integrity": "sha512-99VfBHyoLlF9n5w9wh+jLWDBzCgYd3tfw3M/aynAd+H2ylGHWLbde/GPTuo/5az3jMAN0fH7QzCYvEOY6u+Ypg==",
+ "version": "63.0.13",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-63.0.13.tgz",
+ "integrity": "sha512-ahG1kWA8jYNwaQJtzJlnF+v4Gb9w5r+WL98gp+L8qjLN9ErpL5sevGuemN+fCYsU3Np27F36KmDc8UPi1ml/dg==",
"dev": true,
"license": "BSD-3-Clause",
"dependencies": {
@@ -12984,9 +13071,9 @@
"license": "MIT"
},
"node_modules/eslint/node_modules/brace-expansion": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz",
- "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==",
+ "version": "1.1.16",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.16.tgz",
+ "integrity": "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -13548,9 +13635,9 @@
"license": "MIT"
},
"node_modules/fast-xml-builder": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.2.1.tgz",
- "integrity": "sha512-tPb5TTWfgfVx5BNSi2xV0eLr89POeXXn0dXIsCJ9m1narrWxeIyx6je9d7Rce/3NyXLbvuQmLkxq+RuxMWejvw==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.3.0.tgz",
+ "integrity": "sha512-F74cZEdCvuw9P41GAC3rod4X04jjWGM1JPEv/GWSqFTWLsdyMSBMBMlm9Hk3GLBgLBbdBNY8yee0pQh2RBVESQ==",
"dev": true,
"funding": [
{
@@ -13560,14 +13647,14 @@
],
"license": "MIT",
"dependencies": {
- "path-expression-matcher": "^1.5.0",
- "xml-naming": "^0.1.0"
+ "path-expression-matcher": "^1.6.2",
+ "xml-naming": "^0.3.0"
}
},
"node_modules/fast-xml-parser": {
- "version": "5.9.3",
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.9.3.tgz",
- "integrity": "sha512-brCNCeScma/kqa54J4PIDriSSSLssRkuYaUCpvHJulGc3HGI/xxKUCTDcYkAdqJsyb//ydpbxecjC3hB9+tb/g==",
+ "version": "5.10.0",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.10.0.tgz",
+ "integrity": "sha512-SLhnTEqE5QpJHq/6zl9bsmImEP2adv+y6Wy+cJa7nVTRzQh1OZfCe9k29M5xN74LWnu0xa1zrUrq3KnOKl92Fg==",
"dev": true,
"funding": [
{
@@ -13579,10 +13666,10 @@
"dependencies": {
"@nodable/entities": "^2.2.0",
"fast-xml-builder": "^1.2.0",
- "is-unsafe": "^1.0.1",
- "path-expression-matcher": "^1.5.0",
+ "is-unsafe": "^2.0.0",
+ "path-expression-matcher": "^1.6.2",
"strnum": "^2.4.1",
- "xml-naming": "^0.1.0"
+ "xml-naming": "^0.3.0"
},
"bin": {
"fxparser": "src/cli/cli.js"
@@ -14327,105 +14414,22 @@
}
},
"node_modules/git-raw-commits": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-5.0.1.tgz",
- "integrity": "sha512-Y+csSm2GD/PCSh6Isd/WiMjNAydu0VBiG9J7EdQsNA5P9uXvLayqjmTsNlK5Gs9IhblFZqOU0yid5Il5JPoLiQ==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-3.0.0.tgz",
+ "integrity": "sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw==",
"deprecated": "Deprecated and no longer maintained. Use @conventional-changelog/git-client instead.",
"dev": true,
"license": "MIT",
"dependencies": {
- "@conventional-changelog/git-client": "^2.6.0",
- "meow": "^13.0.0"
- },
- "bin": {
- "git-raw-commits": "src/cli.js"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/git-raw-commits/node_modules/@conventional-changelog/git-client": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/@conventional-changelog/git-client/-/git-client-2.7.0.tgz",
- "integrity": "sha512-j7A8/LBEQ+3rugMzPXoKYzyUPpw/0CBQCyvtTR7Lmu4olG4yRC/Tfkq79Mr3yuPs0SUitlO2HwGP3gitMJnRFw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@simple-libs/child-process-utils": "^1.0.0",
- "@simple-libs/stream-utils": "^1.2.0",
- "semver": "^7.5.2"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "conventional-commits-filter": "^5.0.0",
- "conventional-commits-parser": "^6.4.0"
- },
- "peerDependenciesMeta": {
- "conventional-commits-filter": {
- "optional": true
- },
- "conventional-commits-parser": {
- "optional": true
- }
- }
- },
- "node_modules/git-raw-commits/node_modules/@simple-libs/stream-utils": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@simple-libs/stream-utils/-/stream-utils-1.2.0.tgz",
- "integrity": "sha512-KxXvfapcixpz6rVEB6HPjOUZT22yN6v0vI0urQSk1L8MlEWPDFCZkhw2xmkyoTGYeFw7tWTZd7e3lVzRZRN/EA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://ko-fi.com/dangreen"
- }
- },
- "node_modules/git-raw-commits/node_modules/conventional-commits-filter": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-5.0.0.tgz",
- "integrity": "sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/git-raw-commits/node_modules/conventional-commits-parser": {
- "version": "6.4.0",
- "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.4.0.tgz",
- "integrity": "sha512-tvRg7FIBNlyPzjdG8wWRlPHQJJHI7DylhtRGeU9Lq+JuoPh5BKpPRX83ZdLrvXuOSu5Eo/e7SzOQhU4Hd2Miuw==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@simple-libs/stream-utils": "^1.2.0",
- "meow": "^13.0.0"
+ "dargs": "^7.0.0",
+ "meow": "^8.1.2",
+ "split2": "^3.2.2"
},
"bin": {
- "conventional-commits-parser": "dist/cli/index.js"
+ "git-raw-commits": "cli.js"
},
"engines": {
- "node": ">=18"
- }
- },
- "node_modules/git-raw-commits/node_modules/meow": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
- "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=14"
}
},
"node_modules/git-remote-origin-url": {
@@ -14527,9 +14531,9 @@
"license": "MIT"
},
"node_modules/glob/node_modules/brace-expansion": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz",
- "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==",
+ "version": "1.1.16",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.16.tgz",
+ "integrity": "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -15335,9 +15339,9 @@
"license": "MIT"
},
"node_modules/ignore-walk/node_modules/brace-expansion": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz",
- "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.2.tgz",
+ "integrity": "sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -16141,9 +16145,9 @@
}
},
"node_modules/is-unsafe": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-unsafe/-/is-unsafe-1.0.1.tgz",
- "integrity": "sha512-CLK2+VdgERgD96EYm5lUQssZYlRg2tkZnbsxZoacmSiRxiFJ4Nk4SzjCl+Ur+v3kXIY9dTIdb3IH22y1mZ56LA==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-unsafe/-/is-unsafe-2.0.0.tgz",
+ "integrity": "sha512-2LdV822R+wmI86unXA93WCFpL6g+av8ynWk0nrHyJqGop5VoocYsSLFgN8jrfalT6iGeLNM4KXuVSsULP53kEA==",
"dev": true,
"funding": [
{
@@ -16750,9 +16754,9 @@
"license": "MIT"
},
"node_modules/karma-coverage/node_modules/brace-expansion": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz",
- "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==",
+ "version": "1.1.16",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.16.tgz",
+ "integrity": "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -16842,9 +16846,9 @@
"license": "MIT"
},
"node_modules/karma/node_modules/brace-expansion": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz",
- "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==",
+ "version": "1.1.16",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.16.tgz",
+ "integrity": "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -18146,9 +18150,9 @@
"peer": true
},
"node_modules/minimizer-webpack-plugin/node_modules/terser": {
- "version": "5.48.0",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.48.0.tgz",
- "integrity": "sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q==",
+ "version": "5.49.0",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.49.0.tgz",
+ "integrity": "sha512-SNiDnXyHSrxVcIOtVbULzcTmniUiwcV7Nwdyj1twVubeTmbjoa8p69KKDpfkdoOavuM4/GRm1+ykI8qqnavHoA==",
"dev": true,
"license": "BSD-2-Clause",
"peer": true,
@@ -18716,9 +18720,9 @@
"license": "MIT"
},
"node_modules/node-gyp/node_modules/brace-expansion": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz",
- "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.2.tgz",
+ "integrity": "sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -18800,9 +18804,9 @@
}
},
"node_modules/node-releases": {
- "version": "2.0.50",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.50.tgz",
- "integrity": "sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg==",
+ "version": "2.0.51",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.51.tgz",
+ "integrity": "sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -19680,9 +19684,9 @@
}
},
"node_modules/path-expression-matcher": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.6.1.tgz",
- "integrity": "sha512-h7bxdzhHk8Knyc4Tj+jMaa7fEEoUJy7p1qtbVgkYg1Uhpe5Np5VuGXCRZnkZvU+Q42M1vStt0ifa3ueykRJPmQ==",
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.6.2.tgz",
+ "integrity": "sha512-enSlaiat05iasnzmgNxRj8reFdj3puY2QpNgP1aPIaVfT6nn9ICuPoFlKHk8EN22HcwewshO+mN2DGbkCEOtqQ==",
"dev": true,
"funding": [
{
@@ -20142,6 +20146,22 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/prettier": {
+ "version": "3.9.5",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.9.5.tgz",
+ "integrity": "sha512-/FVl766LpUfB5vXgCYOYa0MeV/441Ia99AeICQIQFTY/Nw0roZwULcXpku5i1/m5kt/baz+s4Zogspd839HSMg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "prettier": "bin/prettier.cjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
"node_modules/pretty-bytes": {
"version": "5.6.0",
"resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz",
@@ -20416,9 +20436,9 @@
"license": "MIT"
},
"node_modules/read-package-json/node_modules/brace-expansion": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz",
- "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.2.tgz",
+ "integrity": "sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -21631,9 +21651,9 @@
}
},
"node_modules/shell-quote": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.9.0.tgz",
- "integrity": "sha512-Iov+JwFv/2HcTpcwNMKd8+IWNb8tboQJNQTkAY/LLVK7gGH9jy+LGkVqPxfekHl+yMmiqXszdGWXgkfml7hjqA==",
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.10.0.tgz",
+ "integrity": "sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -22716,9 +22736,9 @@
}
},
"node_modules/stylelint/node_modules/ignore": {
- "version": "7.0.5",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
- "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.6.tgz",
+ "integrity": "sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -22739,9 +22759,9 @@
}
},
"node_modules/stylelint/node_modules/postcss": {
- "version": "8.5.16",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.16.tgz",
- "integrity": "sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==",
+ "version": "8.5.17",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.17.tgz",
+ "integrity": "sha512-J7EF+8X+CzRPaJPOv9Ck2wNWJvGnnl3PcNPAdGg6GTLjyVpyQ0yATMSXRFRV01BviT/9Gwuc3rjEyJbDJG9a4w==",
"dev": true,
"funding": [
{
@@ -22768,9 +22788,9 @@
}
},
"node_modules/stylelint/node_modules/string-width": {
- "version": "8.2.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.1.tgz",
- "integrity": "sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==",
+ "version": "8.2.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.2.tgz",
+ "integrity": "sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -23133,9 +23153,9 @@
"license": "MIT"
},
"node_modules/terser-webpack-plugin/node_modules/terser": {
- "version": "5.48.0",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.48.0.tgz",
- "integrity": "sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q==",
+ "version": "5.49.0",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.49.0.tgz",
+ "integrity": "sha512-SNiDnXyHSrxVcIOtVbULzcTmniUiwcV7Nwdyj1twVubeTmbjoa8p69KKDpfkdoOavuM4/GRm1+ykI8qqnavHoA==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -23181,9 +23201,9 @@
"license": "MIT"
},
"node_modules/test-exclude/node_modules/brace-expansion": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz",
- "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==",
+ "version": "1.1.16",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.16.tgz",
+ "integrity": "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -23726,9 +23746,9 @@
}
},
"node_modules/undici-types": {
- "version": "5.26.5",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
- "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
+ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
"dev": true,
"license": "MIT"
},
@@ -24510,9 +24530,9 @@
}
},
"node_modules/vite/node_modules/postcss": {
- "version": "8.5.16",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.16.tgz",
- "integrity": "sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==",
+ "version": "8.5.17",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.17.tgz",
+ "integrity": "sha512-J7EF+8X+CzRPaJPOv9Ck2wNWJvGnnl3PcNPAdGg6GTLjyVpyQ0yATMSXRFRV01BviT/9Gwuc3rjEyJbDJG9a4w==",
"dev": true,
"funding": [
{
@@ -25218,9 +25238,9 @@
}
},
"node_modules/xml-naming": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/xml-naming/-/xml-naming-0.1.0.tgz",
- "integrity": "sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==",
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/xml-naming/-/xml-naming-0.3.0.tgz",
+ "integrity": "sha512-ghig2TBE/H11aOVgmahA3MhimvkBr6JIYknH/Dhdk10nXwdbIqBJsbfMxpvFPG8bAw77gN29aQWvKpmVoPlvPQ==",
"dev": true,
"funding": [
{
diff --git a/package.json b/package.json
index 26d0e9a..9ac9dd5 100644
--- a/package.json
+++ b/package.json
@@ -64,7 +64,7 @@
"@angular/cli": "~17.3.17",
"@angular/compiler-cli": "^17.3.12",
"@angular/platform-browser-dynamic": "^17.3.12",
- "@commitlint/cli": "^21.2.0",
+ "@commitlint/cli": "^21.2.1",
"@commitlint/config-angular": "^21.2.0",
"@cypress/schematic": "^3.0.0",
"@cypress/webpack-preprocessor": "^6.0.4",
@@ -77,11 +77,12 @@
"cypress": "^14.5.4",
"del-cli": "^7.0.0",
"eslint": "^8.57.1",
+ "eslint-config-prettier": "^10.1.8",
"eslint-import-resolver-typescript": "^4.4.5",
"eslint-plugin-cypress": "^3.6.0",
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-jasmine": "^4.2.2",
- "eslint-plugin-jsdoc": "^63.0.12",
+ "eslint-plugin-jsdoc": "^63.0.13",
"eslint-plugin-json": "^4.0.1",
"eslint-plugin-prefer-arrow": "^1.2.3",
"husky": "^9.1.7",
@@ -92,6 +93,7 @@
"karma-jasmine": "~5.1.0",
"karma-jasmine-html-reporter": "^2.2.0",
"ng-packagr": "^17.3.0",
+ "prettier": "^3.9.5",
"start-server-and-test": "^3.0.11",
"stylelint": "^17.14.0",
"stylelint-config-recommended-scss": "^17.0.1",
diff --git a/projects/.prettierignore b/projects/.prettierignore
new file mode 100644
index 0000000..28bfa3e
--- /dev/null
+++ b/projects/.prettierignore
@@ -0,0 +1,5 @@
+/.angular
+/.nx
+/coverage
+/dist
+node_modules
diff --git a/projects/mat-datatable-demo/.eslintrc.json b/projects/mat-datatable-demo/.eslintrc.json
index 5766e55..b743fb6 100644
--- a/projects/mat-datatable-demo/.eslintrc.json
+++ b/projects/mat-datatable-demo/.eslintrc.json
@@ -1,14 +1,9 @@
{
"extends": "../../.eslintrc.json",
- "ignorePatterns": [
- "!**/*",
- "**/.angular/**"
- ],
+ "ignorePatterns": ["!**/*", "**/.angular/**"],
"overrides": [
{
- "files": [
- "*.ts"
- ],
+ "files": ["*.ts"],
"excludedFiles": "cypress.config.ts",
"rules": {
"@angular-eslint/directive-selector": [
@@ -30,9 +25,7 @@
}
},
{
- "files": [
- "cypress.config.ts"
- ],
+ "files": ["cypress.config.ts"],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"project": "projects/mat-datatable-demo/cypress/tsconfig.json",
@@ -41,16 +34,12 @@
},
"settings": {
"import/parsers": {
- "@typescript-eslint/parser": [
- ".ts"
- ]
+ "@typescript-eslint/parser": [".ts"]
},
"import/resolver": {
"node": true,
"typescript": {
- "project": [
- "projects/mat-datatable-demo/cypress/tsconfig.json"
- ]
+ "project": ["projects/mat-datatable-demo/cypress/tsconfig.json"]
}
}
},
@@ -61,18 +50,12 @@
"ignoreStatic": true
}
],
- "arrow-parens": [
- "error",
- "as-needed"
- ],
"comma-dangle": "error",
"jsdoc/require-param-type": "off",
"jsdoc/require-returns-type": [
"off",
{
- "contexts": [
- "any"
- ]
+ "contexts": ["any"]
}
],
"no-multiple-empty-lines": [
@@ -99,10 +82,7 @@
"classPropertiesAllowed": false
}
],
- "semi": [
- "error",
- "always"
- ]
+ "semi": ["error", "always"]
}
}
]
diff --git a/projects/mat-datatable-demo/cypress/e2e/app.e2e.cy.ts b/projects/mat-datatable-demo/cypress/e2e/app.e2e.cy.ts
index adf7579..ea7f9ea 100644
--- a/projects/mat-datatable-demo/cypress/e2e/app.e2e.cy.ts
+++ b/projects/mat-datatable-demo/cypress/e2e/app.e2e.cy.ts
@@ -4,40 +4,31 @@ describe('Test demo page', () => {
});
it('contains the main components', () => {
- cy.get('.page-title')
- .should('have.text', 'Mat-Datatable-Demo');
+ cy.get('.page-title').should('have.text', 'Mat-Datatable-Demo');
cy.get('#mat-mdc-slide-toggle-1-button')
.should('be.visible')
.should('have.class', 'mdc-switch--selected');
- cy.get('#mat-mdc-slide-toggle-1-button')
- .invoke('attr', 'aria-checked')
- .should('eq', 'true');
+ cy.get('#mat-mdc-slide-toggle-1-button').invoke('attr', 'aria-checked').should('eq', 'true');
- cy.get('.content-table')
- .should('be.visible');
+ cy.get('.content-table').should('be.visible');
- cy.get('.content-table .mat-mdc-footer-cell').should($elements => {
- expect($elements).to.have.length(3);
+ cy.get('.content-table .mat-mdc-footer-cell').should(($elements) => {
+ expect($elements).to.have.length(4); // 4 cells in row
expect($elements.eq(0)).to.contain('filtered 103 / total 103');
});
- cy.get('#test-buttons')
- .should('be.visible');
+ cy.get('#test-buttons').should('be.visible');
- cy.get('.toggle-buttons-pane-button')
- .should('be.visible');
+ cy.get('.toggle-buttons-pane-button').should('be.visible');
});
it('should hide the buttons pane on click to hide-button', () => {
- cy.get('#test-buttons')
- .should('be.visible');
+ cy.get('#test-buttons').should('be.visible');
- cy.get('.toggle-buttons-pane-button')
- .click();
+ cy.get('.toggle-buttons-pane-button').click();
- cy.get('#test-buttons')
- .should('not.exist');
+ cy.get('#test-buttons').should('not.exist');
});
});
diff --git a/projects/mat-datatable-demo/cypress/support/component-index.html b/projects/mat-datatable-demo/cypress/support/component-index.html
index ac6e79f..faf3b5f 100644
--- a/projects/mat-datatable-demo/cypress/support/component-index.html
+++ b/projects/mat-datatable-demo/cypress/support/component-index.html
@@ -1,12 +1,12 @@
-
+
-
-
-
+
+
+
Components App
-
\ No newline at end of file
+