Skip to content

Commit aa88b7f

Browse files
committed
feat(plugin): add compatibility matrix generator
- Add generate-compat-matrix.mjs script to generate version compatibility data - Add compat-matrix.config.json as git-versioned source of truth - Output to dist/libs/plugin/compat-matrix.json for CDN access via unpkg Features: - Combined matrix: angular-three + three.js + angular + ngxtension versions - Per-package matrix: each package with its specific peer dependencies - Breaking change detection: auto-updates ranges when min version increases - Supports all semver range formats: >=, ^, ~, with/without upper bounds Usage: - Run after build: node tools/scripts/generate-compat-matrix.mjs - Access via CDN: https://unpkg.com/angular-three-plugin@latest/compat-matrix.json
1 parent a895240 commit aa88b7f

File tree

5 files changed

+495
-1
lines changed

5 files changed

+495
-1
lines changed

nx.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@
202202
"release": {
203203
"projects": ["core", "cannon", "postprocessing", "soba", "rapier", "plugin", "tweakpane", "theatre"],
204204
"version": {
205-
"preVersionCommand": "npm run package",
205+
"preVersionCommand": "pnpm package",
206206
"currentVersionResolver": "git-tag",
207207
"preserveLocalDependencyProtocols": false,
208208
"manifestRootsToUpdate": ["dist/libs/{projectName}"]

package.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
"@tweakpane/core": "^2.0.5",
5252
"@types/jest": "30.0.0",
5353
"@types/node": "20.14.12",
54+
"@types/semver": "^7.7.1",
5455
"@types/three": "^0.182.0",
5556
"@typescript-eslint/utils": "8.50.1",
5657
"@vitest/coverage-v8": "^4.0.16",
@@ -84,6 +85,7 @@
8485
"postprocessing": "^6.38.2",
8586
"prettier": "^3.7.4",
8687
"prettier-plugin-organize-imports": "^4.3.0",
88+
"semver": "^7.7.3",
8789
"storybook": "10.1.10",
8890
"storybook-addon-deep-controls": "^0.10.0",
8991
"tailwindcss": "^4.1.18",
@@ -157,6 +159,9 @@
157159
],
158160
"parallel": true
159161
}
162+
},
163+
"generate-compat": {
164+
"command": "node ./tools/scripts/generate-compat-matrix.mjs"
160165
}
161166
}
162167
},

pnpm-lock.yaml

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tools/compat-matrix.config.json

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
{
2+
"$schema": "https://angular-threejs.github.io/schemas/compat-matrix.schema.json",
3+
"generated": "2026-01-06T00:00:00.000Z",
4+
"description": "Compatibility matrix for angular-three ecosystem packages",
5+
"combined": [
6+
{
7+
"angularThree": ">=4.0.0",
8+
"three": ">=0.157.0 <0.183.0",
9+
"angular": ">=20.0.0 <22.0.0",
10+
"ngxtension": ">=3.0.0"
11+
}
12+
],
13+
"packages": {
14+
"angular-three": {
15+
"displayName": "Core",
16+
"entries": [
17+
{
18+
"version": ">=4.0.0",
19+
"peerDependencies": {
20+
"ngxtension": ">=3.0.0"
21+
}
22+
}
23+
]
24+
},
25+
"angular-three-soba": {
26+
"displayName": "Soba",
27+
"entries": [
28+
{
29+
"version": ">=4.0.0",
30+
"peerDependencies": {
31+
"@monogrid/gainmap-js": "^3.0.0",
32+
"@pmndrs/vanilla": "^1.24.0",
33+
"camera-controls": "^2.8.0",
34+
"hls.js": ">=1.5.0",
35+
"maath": ">=0.10.0 <0.11.0",
36+
"meshline": "^3.1.0",
37+
"stats-gl": ">=2.0.0",
38+
"three-custom-shader-material": ">=5.5.0 <6.5.0",
39+
"three-mesh-bvh": ">=0.5.0 <0.10.0",
40+
"three-stdlib": "^2.0.0",
41+
"troika-three-text": ">=0.47.0 <0.53.0"
42+
}
43+
}
44+
]
45+
},
46+
"angular-three-cannon": {
47+
"displayName": "Cannon",
48+
"entries": [
49+
{
50+
"version": ">=4.0.0",
51+
"peerDependencies": {
52+
"@pmndrs/cannon-worker-api": "^2.0.0",
53+
"cannon-es": ">=0.20.0 <0.21.0",
54+
"cannon-es-debugger": "^1.0.0"
55+
}
56+
}
57+
]
58+
},
59+
"angular-three-rapier": {
60+
"displayName": "Rapier",
61+
"entries": [
62+
{
63+
"version": ">=4.0.0",
64+
"peerDependencies": {
65+
"@dimforge/rapier3d-compat": ">=0.14.0 <0.20.0",
66+
"three-stdlib": "^2.0.0"
67+
}
68+
}
69+
]
70+
},
71+
"angular-three-postprocessing": {
72+
"displayName": "Postprocessing",
73+
"entries": [
74+
{
75+
"version": ">=4.0.0",
76+
"peerDependencies": {
77+
"maath": ">=0.10.0 <0.11.0",
78+
"n8ao": ">=1.9.4 <2.0.0",
79+
"postprocessing": "^6.0.0",
80+
"three-stdlib": "^2.0.0"
81+
}
82+
}
83+
]
84+
},
85+
"angular-three-theatre": {
86+
"displayName": "Theatre",
87+
"entries": [
88+
{
89+
"version": ">=4.0.0",
90+
"peerDependencies": {
91+
"@theatre/core": ">=0.7.0 <0.8.0",
92+
"@theatre/studio": ">=0.7.0 <0.8.0"
93+
}
94+
}
95+
]
96+
},
97+
"angular-three-tweakpane": {
98+
"displayName": "Tweakpane",
99+
"entries": [
100+
{
101+
"version": ">=4.0.0",
102+
"peerDependencies": {
103+
"@tweakpane/core": "^2.0.0",
104+
"tweakpane": "^4.0.0"
105+
}
106+
}
107+
]
108+
}
109+
}
110+
}

0 commit comments

Comments
 (0)