@cratis/components.migrator 0.0.0 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +258 -1
- package/compat-manifest.json +305 -0
- package/lib/buttonVariantToneTransform.js +380 -0
- package/lib/changeHandlerTransform.js +380 -0
- package/lib/compatibility.js +164 -0
- package/lib/namespaceMap.js +87 -0
- package/lib/runTransformCli.js +137 -0
- package/lib/transform.js +355 -0
- package/package.json +33 -4
- package/scripts/button-variant-tone.js +13 -0
- package/scripts/change-handler.js +13 -0
- package/scripts/remove-root-namespace-imports.js +14 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Cratis
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,260 @@
|
|
|
1
1
|
# @cratis/components.migrator
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
The Components 4 Migrator updates a Components 3 codebase to the Components 4 public contracts. It moves root namespaces to explicit subpath imports, replaces deprecated Button appearance props, and changes legacy event-wrapper callbacks to semantic value callbacks. The CLI uses syntax-aware codemods internally, but each command is named for the migration it performs, can be run independently, and is idempotent. Components 4 keeps only package-wide provider setup at the root; every component is imported from its explicit subpath (`@cratis/components/Canvas`, for example). The companion `@cratis/eslint-plugin-components` package's `no-root-barrel-import` rule enforces this once a consumer has migrated.
|
|
4
|
+
|
|
5
|
+
> **Publication status:** The install examples target the owner-authorized 4.0.0 npm release. When
|
|
6
|
+
> reading this README from repository source before that release, verify availability with
|
|
7
|
+
> `npm view @cratis/components.migrator@4.0.0 version`; source contributors run the workspace
|
|
8
|
+
> commands from this checkout instead. The Migrator is never an application runtime dependency.
|
|
9
|
+
|
|
10
|
+
The published package is a **CLI-only** tool. Its public surface is the documented `cratis-components-*` executable names (plus `./package.json` for tooling metadata); `lib/`, `scripts/`, and individual transforms are implementation details and are blocked by the package export map. Do not import them from application code or build custom migration APIs on them.
|
|
11
|
+
|
|
12
|
+
## `remove-root-namespace-imports`
|
|
13
|
+
|
|
14
|
+
An idempotent, AST-based codemod built on the TypeScript compiler API. The published CLI
|
|
15
|
+
brings its own `typescript` runtime dependency, so its parser does not depend on the consumer
|
|
16
|
+
application's TypeScript version. It rewrites static `import` declarations and named
|
|
17
|
+
`export … from` re-exports only; it never guesses, and reports every case it will not touch.
|
|
18
|
+
|
|
19
|
+
### What it rewrites
|
|
20
|
+
|
|
21
|
+
| Before | After |
|
|
22
|
+
| --------------------------------------------------- | ----------------------------------------------------------- |
|
|
23
|
+
| `import { Canvas } from '@cratis/components';` | `import * as Canvas from '@cratis/components/Canvas';` |
|
|
24
|
+
| `import type { Canvas } from '@cratis/components';` | `import type * as Canvas from '@cratis/components/Canvas';` |
|
|
25
|
+
| `import { Canvas as C } from '@cratis/components';` | `import * as C from '@cratis/components/Canvas';` |
|
|
26
|
+
| `export { Canvas } from '@cratis/components';` | `export * as Canvas from '@cratis/components/Canvas';` |
|
|
27
|
+
| `export type { Canvas } from '@cratis/components';` | `export type * as Canvas from '@cratis/components/Canvas';` |
|
|
28
|
+
| `export { Canvas as C } from '@cratis/components';` | `export * as C from '@cratis/components/Canvas';` |
|
|
29
|
+
|
|
30
|
+
A named `export … from '@cratis/components'` re-export follows exactly the same rules as an
|
|
31
|
+
import, because the transformation is equally unambiguous in both directions: the exported
|
|
32
|
+
name identifies one specific namespace (or approved setup symbol), so the codemod can
|
|
33
|
+
rewrite it without guessing. Only a **wildcard** re-export of the whole package —
|
|
34
|
+
`export * from '@cratis/components'` or `export * as X from '@cratis/components'` — stays
|
|
35
|
+
unsupported, for the same reason a whole-package namespace import stays unsupported: see
|
|
36
|
+
[What it refuses to guess](#what-it-refuses-to-guess).
|
|
37
|
+
|
|
38
|
+
The historical `CommandStepper` root namespace is a special case: it aliased the complete `CommandDialog` module. The codemod therefore maps it to `@cratis/components/CommandDialog`, preserving the module identity for members retained in Components 4. It cannot restore a removed module export such as the accidental `CommandStepperContent` surface. New code that only needs the standalone component should use `import { CommandStepper } from '@cratis/components/CommandStepper'` (or the equivalent re-export).
|
|
39
|
+
|
|
40
|
+
Multiple namespaces in one import or re-export become one subpath statement per namespace:
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
// Before
|
|
44
|
+
import { Canvas, Common } from '@cratis/components';
|
|
45
|
+
|
|
46
|
+
// After
|
|
47
|
+
import * as Canvas from '@cratis/components/Canvas';
|
|
48
|
+
import * as Common from '@cratis/components/Common';
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
A mixed import or re-export naming both an approved setup symbol and a namespace is split —
|
|
52
|
+
the setup symbol stays at the root, the namespace moves to its subpath:
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
// Before
|
|
56
|
+
import { CratisComponentsProvider, Canvas } from '@cratis/components';
|
|
57
|
+
|
|
58
|
+
// After
|
|
59
|
+
import { CratisComponentsProvider } from '@cratis/components';
|
|
60
|
+
import * as Canvas from '@cratis/components/Canvas';
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Running the codemod again on its own output is a no-op — it only ever matches an import or
|
|
64
|
+
named re-export whose module specifier is exactly `@cratis/components` (or the `--package`
|
|
65
|
+
override), so an already-migrated subpath import or re-export is never revisited.
|
|
66
|
+
|
|
67
|
+
The complete namespace → subpath map, known removed Components 3 compatibility exports, and approved-root-symbol allowlist live in [`lib/namespaceMap.js`](./lib/namespaceMap.js), mirrored by `ESLint/lib/rootNamespaceMap.js`. Contributors must update both packages together when a namespace subpath, removed boundary, or setup symbol changes. The packages share the repository release version; parity specs prevent their migration contracts from drifting.
|
|
68
|
+
|
|
69
|
+
### What it refuses to guess
|
|
70
|
+
|
|
71
|
+
Each of these is left completely untouched, and reported as a diagnostic instead:
|
|
72
|
+
|
|
73
|
+
- A namespace import of the whole package — `import * as Components from '@cratis/components';`.
|
|
74
|
+
Which subpath each later `Components.X` access belongs to cannot be inferred from the
|
|
75
|
+
import alone.
|
|
76
|
+
- A default import — `import Components from '@cratis/components';`. The package has no
|
|
77
|
+
default export.
|
|
78
|
+
- A side-effect-only import — `import '@cratis/components';`. There is no binding to infer a
|
|
79
|
+
subpath from.
|
|
80
|
+
- A named import of a symbol that is neither an approved setup symbol nor a known namespace
|
|
81
|
+
(for example a member like `Button` that only exists _inside_ a namespace, not at the
|
|
82
|
+
root). The whole import statement is left untouched rather than partially migrated.
|
|
83
|
+
- The Components 3.6 `Compatibility` namespace and its direct pass-through exports. They
|
|
84
|
+
are recognized known removals, not unknown symbols: Components 4 has no compatibility
|
|
85
|
+
subpath, so the transform leaves the statement untouched and directs the consumer to
|
|
86
|
+
typed Cratis parts.
|
|
87
|
+
- A TypeScript import assignment — `import Components = require('@cratis/components');`.
|
|
88
|
+
This is the whole package namespace, so later member access is as ambiguous as `import * as`.
|
|
89
|
+
- A dynamic `import('@cratis/components')` or a CommonJS `require('@cratis/components')`,
|
|
90
|
+
anywhere in the file.
|
|
91
|
+
- A wildcard re-export of the whole package — `export * from '@cratis/components';` — or a
|
|
92
|
+
namespace re-export of the whole package — `export * as Components from
|
|
93
|
+
'@cratis/components';`. Both are exactly as ambiguous as a whole-package namespace import:
|
|
94
|
+
which subpath each later access needs cannot be determined from the re-export alone. A
|
|
95
|
+
_named_ re-export (`export { Canvas } from '@cratis/components';`) is not in this list —
|
|
96
|
+
see [What it rewrites](#what-it-rewrites).
|
|
97
|
+
|
|
98
|
+
Existing subpath imports and re-exports (`@cratis/components/Canvas`, …) are never touched —
|
|
99
|
+
narrow subpath consumers are left exactly as they are.
|
|
100
|
+
|
|
101
|
+
### Use
|
|
102
|
+
|
|
103
|
+
The packaged CLI requires Node.js 20 or newer and brings its own TypeScript parser; it does
|
|
104
|
+
not depend on the consumer application's TypeScript version. It scans JavaScript, JSX,
|
|
105
|
+
TypeScript, and TSX sources, including `.mjs`, `.cjs`, `.mts`, and `.cts` variants. Components
|
|
106
|
+
3 has no 3.x Migrator package. Use the Components 4 Migrator bounded to `>=4 <5`; never use
|
|
107
|
+
`latest`.
|
|
108
|
+
|
|
109
|
+
Before any scan or write, the CLI validates its bundled compatibility manifest, checks its own
|
|
110
|
+
version against the declared Migrator range, resolves the configured Components package from the
|
|
111
|
+
invocation directory, and verifies that package is in the supported 3.x migration-source or 4.x
|
|
112
|
+
migration-target window. Missing Components, unsupported versions, stale package metadata, and an
|
|
113
|
+
invalid manifest fail closed. `--help` remains available without Components installed.
|
|
114
|
+
|
|
115
|
+
```sh
|
|
116
|
+
TOOLING_RANGE='^4.0.0' # Shell-safe equivalent of >=4 <5.
|
|
117
|
+
|
|
118
|
+
# Preview what would change, without writing anything:
|
|
119
|
+
npx --package "@cratis/components.migrator@$TOOLING_RANGE" \
|
|
120
|
+
cratis-components-remove-root-namespace-imports --check path/to/app/src
|
|
121
|
+
|
|
122
|
+
# Apply the rewrite:
|
|
123
|
+
npx --package "@cratis/components.migrator@$TOOLING_RANGE" \
|
|
124
|
+
cratis-components-remove-root-namespace-imports path/to/app/src
|
|
125
|
+
|
|
126
|
+
# Contributors to this repository can run the workspace source directly:
|
|
127
|
+
node Migrator/scripts/remove-root-namespace-imports.js --check Source
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
The same bounded package works in pnpm and Yarn 2+ projects:
|
|
131
|
+
|
|
132
|
+
```sh
|
|
133
|
+
pnpm dlx --package "@cratis/components.migrator@$TOOLING_RANGE" \
|
|
134
|
+
cratis-components-remove-root-namespace-imports --check path/to/app/src
|
|
135
|
+
yarn dlx --package "@cratis/components.migrator@$TOOLING_RANGE" \
|
|
136
|
+
cratis-components-remove-root-namespace-imports --check path/to/app/src
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Quote any path containing spaces. Angle-bracket placeholders are intentionally not used in executable examples because `<...>` is shell input-redirection syntax.
|
|
140
|
+
|
|
141
|
+
Exit code is non-zero whenever an unsupported case was found (with `--check` or without —
|
|
142
|
+
those always need a human), and, in `--check` mode only, whenever a supported rewrite has
|
|
143
|
+
not yet been applied. Run `--help` for the full option list.
|
|
144
|
+
|
|
145
|
+
After running the codemod, run the project's own build/lint/test gates — the codemod only
|
|
146
|
+
performs the mechanical import/re-export rewrite; it does not attempt to fix any resulting
|
|
147
|
+
unused import, nor does it know whether a namespace member you use (`Canvas.Foo`) still
|
|
148
|
+
exists at that subpath.
|
|
149
|
+
|
|
150
|
+
## `button-variant-tone`
|
|
151
|
+
|
|
152
|
+
`cratis-components-button-variant-tone` resolves `Button` JSX bindings imported, including aliases and `Common.Button` namespace access, from `@cratis/components/Common`. It applies the runtime's legacy precedence (`link` → `text` → `outlined` → `solid`) and replaces deprecated props:
|
|
153
|
+
|
|
154
|
+
| Deprecated prop | Semantic prop |
|
|
155
|
+
| ------------------------------------- | ------------------- |
|
|
156
|
+
| `text` | `variant='ghost'` |
|
|
157
|
+
| `link` | `variant='link'` |
|
|
158
|
+
| `outlined` | `variant='outline'` |
|
|
159
|
+
| `rounded` | `shape='pill'` |
|
|
160
|
+
| `severity='secondary'` / `'contrast'` | `tone='neutral'` |
|
|
161
|
+
| `severity='info'` / `'help'` | `tone='accent'` |
|
|
162
|
+
| `severity='success'` | `tone='positive'` |
|
|
163
|
+
| `severity='warn'` | `tone='caution'` |
|
|
164
|
+
| `severity='danger'` | `tone='critical'` |
|
|
165
|
+
|
|
166
|
+
A literal `severity='contrast'` also receives `variant='solid'` only when no explicit new variant or stronger true legacy variant applies. A literal new `variant`, `tone`, or `shape` wins and its redundant legacy prop is removed.
|
|
167
|
+
|
|
168
|
+
```tsx
|
|
169
|
+
// Safe rewrite
|
|
170
|
+
<Button outlined rounded severity='warn' />
|
|
171
|
+
// becomes
|
|
172
|
+
<Button variant='outline' shape='pill' tone='caution' />
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
The transform never guesses through JSX spreads, dynamic legacy values, duplicate props, or an unknown new-prop expression that conflicts with a legacy prop. It leaves the uncertain prop group semantically unchanged, reports it, and adds one syntax-safe `TODO(cratis-codemod)` annotation. Subsequent runs do not duplicate that annotation.
|
|
176
|
+
|
|
177
|
+
```tsx
|
|
178
|
+
// Refused and reported
|
|
179
|
+
<Button text={appearance.text} severity={appearance.severity} />
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## `change-handler`
|
|
183
|
+
|
|
184
|
+
`cratis-components-change-handler` resolves affected Components-owned JSX identifiers imported with aliases or namespaces from `@cratis/components/Dropdown`, `@cratis/components/CommandForm`, and `@cratis/components/CommandForm/fields`. It rewrites only a structurally-proven single forwarding callback:
|
|
185
|
+
|
|
186
|
+
```tsx
|
|
187
|
+
// Safe rewrites
|
|
188
|
+
<Dropdown onChange={(event) => setRole(event.value)} />
|
|
189
|
+
<InputTextField onChange={(event) => setName(event.target.value)} />
|
|
190
|
+
<CheckboxField onChange={({ target: { checked } }) => setEnabled(checked)} />
|
|
191
|
+
|
|
192
|
+
// become
|
|
193
|
+
<Dropdown onChange={(value) => setRole(value)} />
|
|
194
|
+
<InputTextField onChange={(value) => setName(value)} />
|
|
195
|
+
<CheckboxField onChange={(value) => setEnabled(value)} />
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
The affected CommandForm fields cover legacy `target`/`currentTarget` `value`, `checked`, and `valueAsNumber` payloads, plus `DropdownField`/`MultiSelectField` `event.value`. Already-semantic callbacks and callback references such as `onChange={setValue}` are unchanged.
|
|
199
|
+
|
|
200
|
+
Multi-statement, multi-use, wrong-payload, destructuring-with-default/rest, and native-event-dependent callbacks are refused, reported, and annotated once:
|
|
201
|
+
|
|
202
|
+
```tsx
|
|
203
|
+
// Refused and reported: the host still depends on the old event object
|
|
204
|
+
<Dropdown
|
|
205
|
+
onChange={(event) => {
|
|
206
|
+
audit(event.originalEvent);
|
|
207
|
+
setRole(event.value);
|
|
208
|
+
}}
|
|
209
|
+
/>
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
## Run the migration sequence
|
|
213
|
+
|
|
214
|
+
Use the bounded Components 4 tooling train for all three commands. The recommended source/target order is:
|
|
215
|
+
|
|
216
|
+
1. With Components 3 (`>=3 <4`) installed, preview and apply the root-import transform. Its subpaths exist in both majors.
|
|
217
|
+
2. Run the Components 3 gates and checkpoint the import-only change.
|
|
218
|
+
3. Upgrade Core to Components 4 (`^4.0.0`).
|
|
219
|
+
4. Preview and apply Button appearance, then change-handler migration; these produce Components 4 source.
|
|
220
|
+
|
|
221
|
+
Preflight also accepts the Components 4 target window so the root transform can be recovered after an upgrade. It accepts no other Core major. Preview every step before applying it:
|
|
222
|
+
|
|
223
|
+
```sh
|
|
224
|
+
TOOLING_RANGE='^4.0.0'
|
|
225
|
+
|
|
226
|
+
npx --package "@cratis/components.migrator@$TOOLING_RANGE" \
|
|
227
|
+
cratis-components-remove-root-namespace-imports --check path/to/app/src
|
|
228
|
+
npx --package "@cratis/components.migrator@$TOOLING_RANGE" \
|
|
229
|
+
cratis-components-remove-root-namespace-imports path/to/app/src
|
|
230
|
+
|
|
231
|
+
npx --package "@cratis/components.migrator@$TOOLING_RANGE" \
|
|
232
|
+
cratis-components-button-variant-tone --check path/to/app/src
|
|
233
|
+
npx --package "@cratis/components.migrator@$TOOLING_RANGE" \
|
|
234
|
+
cratis-components-button-variant-tone path/to/app/src
|
|
235
|
+
|
|
236
|
+
npx --package "@cratis/components.migrator@$TOOLING_RANGE" \
|
|
237
|
+
cratis-components-change-handler --check path/to/app/src
|
|
238
|
+
npx --package "@cratis/components.migrator@$TOOLING_RANGE" \
|
|
239
|
+
cratis-components-change-handler path/to/app/src
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
Never substitute `latest`; keep tooling within `>=4 <5`. Tooling packages share the repository release version with Core, and the bounded range plus bundled manifest preflight enforce the compatible migration windows without exact-patch coupling. Both new CLIs require Node.js 20 or newer, bundle their own TypeScript compiler dependency, scan `.js`, `.jsx`, `.mjs`, `.cjs`, `.ts`, `.tsx`, `.mts`, and `.cts` recursively, support `--package <name>`, and exit nonzero for pending check-mode edits or any refused case. Review every diagnostic and `TODO(cratis-codemod)`, then run the consuming project's formatter, lint, type check, tests, and production build.
|
|
243
|
+
|
|
244
|
+
Contributor source commands are:
|
|
245
|
+
|
|
246
|
+
```sh
|
|
247
|
+
node Migrator/scripts/button-variant-tone.js --check Source
|
|
248
|
+
node Migrator/scripts/change-handler.js --check Source
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### Test
|
|
252
|
+
|
|
253
|
+
```sh
|
|
254
|
+
cd Migrator && yarn test
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
Repository fixtures for every supported and unsupported case live under
|
|
258
|
+
`Migrator/test/fixtures`,
|
|
259
|
+
each as an `input.ts`/`expected.ts` pair (`input.ts` and `expected.ts` are identical for an
|
|
260
|
+
unsupported case, since nothing should change).
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 2,
|
|
3
|
+
"releaseStatus": "publication-authorized",
|
|
4
|
+
"publicationEnabled": true,
|
|
5
|
+
"gaScope": {
|
|
6
|
+
"publicPackages": [
|
|
7
|
+
"@cratis/components",
|
|
8
|
+
"@cratis/eslint-plugin-components",
|
|
9
|
+
"@cratis/components.migrator",
|
|
10
|
+
"@cratis/components.conformance",
|
|
11
|
+
"@cratis/components.mui",
|
|
12
|
+
"@cratis/components.primereact",
|
|
13
|
+
"@cratis/components.primereact10"
|
|
14
|
+
],
|
|
15
|
+
"privateEvidence": [
|
|
16
|
+
{
|
|
17
|
+
"id": "plain",
|
|
18
|
+
"name": "Plain DOM renderer conformance falsification fixture",
|
|
19
|
+
"purpose": "private-conformance-evidence",
|
|
20
|
+
"private": true,
|
|
21
|
+
"published": false
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "storybook",
|
|
25
|
+
"name": "Composed renderer Storybook",
|
|
26
|
+
"purpose": "private-renderer-evidence",
|
|
27
|
+
"private": true,
|
|
28
|
+
"published": false
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
"toolingCompatibility": {
|
|
33
|
+
"componentsCore": ">=4 <5",
|
|
34
|
+
"eslint": ">=4 <5",
|
|
35
|
+
"migrator": ">=4 <5"
|
|
36
|
+
},
|
|
37
|
+
"supportWindows": {
|
|
38
|
+
"components3": {
|
|
39
|
+
"components": ">=3 <4",
|
|
40
|
+
"status": "maintenance-security-critical",
|
|
41
|
+
"migrationRole": "source",
|
|
42
|
+
"migrationTarget": ">=4 <5",
|
|
43
|
+
"tooling": ">=4 <5",
|
|
44
|
+
"eolAt": null,
|
|
45
|
+
"eolApprovedByOwners": false,
|
|
46
|
+
"ownerDecisionPolicy": "Set and approve EOL no later than 12 months after Components 4 GA."
|
|
47
|
+
},
|
|
48
|
+
"components4": {
|
|
49
|
+
"components": ">=4 <5",
|
|
50
|
+
"status": "current",
|
|
51
|
+
"migrationRole": "target",
|
|
52
|
+
"rendererAbi": 1,
|
|
53
|
+
"coreProfile": "core/v1",
|
|
54
|
+
"adapterProfile": "stable-presentation/v1",
|
|
55
|
+
"tooling": {
|
|
56
|
+
"eslint": ">=4 <5",
|
|
57
|
+
"migrator": ">=4 <5"
|
|
58
|
+
},
|
|
59
|
+
"adapters": {
|
|
60
|
+
"@cratis/components.conformance": ">=4 <5",
|
|
61
|
+
"@cratis/components.mui": ">=4 <5",
|
|
62
|
+
"@cratis/components.primereact": ">=4 <5",
|
|
63
|
+
"@cratis/components.primereact10": ">=4 <5"
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"packages": [
|
|
68
|
+
{
|
|
69
|
+
"name": "@cratis/components",
|
|
70
|
+
"role": "core",
|
|
71
|
+
"version": "4.0.0",
|
|
72
|
+
"releaseMajorRange": ">=4 <5",
|
|
73
|
+
"independentRelease": false,
|
|
74
|
+
"private": false,
|
|
75
|
+
"packageAccess": "public",
|
|
76
|
+
"peerDependencies": {
|
|
77
|
+
"@cratis/arc": ">=20.3.1 <23",
|
|
78
|
+
"@cratis/arc.react": ">=20.3.1 <23",
|
|
79
|
+
"@cratis/fundamentals": "^7.10.3",
|
|
80
|
+
"pixi.js": "^8.20.0",
|
|
81
|
+
"react": "^19.0.0",
|
|
82
|
+
"react-dom": "^19.0.0",
|
|
83
|
+
"reflect-metadata": "0.2.2",
|
|
84
|
+
"tsyringe": "4.10.0"
|
|
85
|
+
},
|
|
86
|
+
"upstream": {
|
|
87
|
+
"react": "^19.0.0"
|
|
88
|
+
},
|
|
89
|
+
"rendererAbi": 1,
|
|
90
|
+
"rendererProfile": "core/v1"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"name": "@cratis/eslint-plugin-components",
|
|
94
|
+
"role": "eslint",
|
|
95
|
+
"version": "4.0.0",
|
|
96
|
+
"releaseMajorRange": ">=4 <5",
|
|
97
|
+
"independentRelease": false,
|
|
98
|
+
"private": false,
|
|
99
|
+
"packageAccess": "public",
|
|
100
|
+
"peerDependencies": {
|
|
101
|
+
"eslint": ">=9"
|
|
102
|
+
},
|
|
103
|
+
"upstream": {}
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"name": "@cratis/components.migrator",
|
|
107
|
+
"role": "migrator",
|
|
108
|
+
"version": "4.0.0",
|
|
109
|
+
"releaseMajorRange": ">=4 <5",
|
|
110
|
+
"independentRelease": false,
|
|
111
|
+
"private": false,
|
|
112
|
+
"packageAccess": "public",
|
|
113
|
+
"peerDependencies": {},
|
|
114
|
+
"upstream": {}
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"name": "@cratis/components.conformance",
|
|
118
|
+
"role": "conformance",
|
|
119
|
+
"version": "4.0.0",
|
|
120
|
+
"releaseMajorRange": ">=4 <5",
|
|
121
|
+
"independentRelease": false,
|
|
122
|
+
"private": false,
|
|
123
|
+
"packageAccess": "public",
|
|
124
|
+
"peerDependencies": {
|
|
125
|
+
"@cratis/components": ">=4 <5",
|
|
126
|
+
"react": "^19.0.0",
|
|
127
|
+
"react-dom": "^19.0.0"
|
|
128
|
+
},
|
|
129
|
+
"upstream": {},
|
|
130
|
+
"rendererAbi": 1
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"name": "@cratis/components.mui",
|
|
134
|
+
"role": "renderer-adapter",
|
|
135
|
+
"version": "4.0.0",
|
|
136
|
+
"releaseMajorRange": ">=4 <5",
|
|
137
|
+
"independentRelease": false,
|
|
138
|
+
"private": false,
|
|
139
|
+
"packageAccess": "public",
|
|
140
|
+
"peerDependencies": {
|
|
141
|
+
"@cratis/components": ">=4 <5",
|
|
142
|
+
"@emotion/react": ">=11.5 <12",
|
|
143
|
+
"@emotion/styled": ">=11.11 <12",
|
|
144
|
+
"@mui/material": ">=9 <10",
|
|
145
|
+
"react": "^19.0.0",
|
|
146
|
+
"react-dom": "^19.0.0"
|
|
147
|
+
},
|
|
148
|
+
"upstream": {
|
|
149
|
+
"@emotion/react": ">=11.5 <12",
|
|
150
|
+
"@emotion/styled": ">=11.11 <12",
|
|
151
|
+
"@mui/material": ">=9 <10",
|
|
152
|
+
"react": "^19.0.0",
|
|
153
|
+
"react-dom": "^19.0.0"
|
|
154
|
+
},
|
|
155
|
+
"rendererAbi": 1,
|
|
156
|
+
"rendererProfile": "stable-presentation/v1",
|
|
157
|
+
"verifiedPeers": {
|
|
158
|
+
"minimum": {
|
|
159
|
+
"@cratis/arc": "22.6.2",
|
|
160
|
+
"@cratis/arc.react": "22.6.2",
|
|
161
|
+
"@cratis/fundamentals": "7.18.1",
|
|
162
|
+
"@emotion/react": "11.5.0",
|
|
163
|
+
"@emotion/styled": "11.11.0",
|
|
164
|
+
"@mui/material": "9.0.0",
|
|
165
|
+
"@types/react": "19.0.0",
|
|
166
|
+
"react": "19.0.0",
|
|
167
|
+
"react-dom": "19.0.0",
|
|
168
|
+
"reflect-metadata": "0.2.2",
|
|
169
|
+
"rxjs": "7.8.2",
|
|
170
|
+
"tsyringe": "4.10.0"
|
|
171
|
+
},
|
|
172
|
+
"current": {
|
|
173
|
+
"@cratis/arc": "22.6.2",
|
|
174
|
+
"@cratis/arc.react": "22.6.2",
|
|
175
|
+
"@cratis/fundamentals": "7.18.1",
|
|
176
|
+
"@emotion/react": "11.14.0",
|
|
177
|
+
"@emotion/styled": "11.14.1",
|
|
178
|
+
"@mui/material": "9.4.0",
|
|
179
|
+
"@types/react": "19.2.18",
|
|
180
|
+
"react": "19.2.8",
|
|
181
|
+
"react-dom": "19.2.8",
|
|
182
|
+
"reflect-metadata": "0.2.2",
|
|
183
|
+
"rxjs": "7.8.2",
|
|
184
|
+
"tsyringe": "4.10.0"
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"name": "@cratis/components.primereact",
|
|
190
|
+
"role": "renderer-adapter",
|
|
191
|
+
"version": "4.0.0",
|
|
192
|
+
"releaseMajorRange": ">=4 <5",
|
|
193
|
+
"independentRelease": false,
|
|
194
|
+
"private": false,
|
|
195
|
+
"packageAccess": "public",
|
|
196
|
+
"peerDependencies": {
|
|
197
|
+
"@cratis/components": ">=4 <5",
|
|
198
|
+
"@primereact/core": ">=11 <12",
|
|
199
|
+
"@primereact/ui": ">=11 <12",
|
|
200
|
+
"@primeuix/themes": ">=3 <4",
|
|
201
|
+
"primereact": ">=11 <12",
|
|
202
|
+
"react": "^19.0.0",
|
|
203
|
+
"react-dom": "^19.0.0"
|
|
204
|
+
},
|
|
205
|
+
"upstream": {
|
|
206
|
+
"@primereact/core": ">=11 <12",
|
|
207
|
+
"@primereact/ui": ">=11 <12",
|
|
208
|
+
"@primeuix/themes": ">=3 <4",
|
|
209
|
+
"primereact": ">=11 <12",
|
|
210
|
+
"react": "^19.0.0",
|
|
211
|
+
"react-dom": "^19.0.0"
|
|
212
|
+
},
|
|
213
|
+
"rendererAbi": 1,
|
|
214
|
+
"rendererProfile": "stable-presentation/v1",
|
|
215
|
+
"verifiedPeers": {
|
|
216
|
+
"minimum": {
|
|
217
|
+
"@cratis/arc": "22.6.2",
|
|
218
|
+
"@cratis/arc.react": "22.6.2",
|
|
219
|
+
"@cratis/fundamentals": "7.18.1",
|
|
220
|
+
"@primereact/core": "11.0.0",
|
|
221
|
+
"@primereact/headless": "11.0.0",
|
|
222
|
+
"@primereact/styles": "11.0.0",
|
|
223
|
+
"@primereact/ui": "11.0.0",
|
|
224
|
+
"@primeuix/motion": "1.0.0",
|
|
225
|
+
"@primeuix/themes": "3.0.0",
|
|
226
|
+
"@primeuix/utils": "0.8.0",
|
|
227
|
+
"@types/react": "19.0.0",
|
|
228
|
+
"primereact": "11.0.0",
|
|
229
|
+
"react": "19.0.0",
|
|
230
|
+
"react-dom": "19.0.0",
|
|
231
|
+
"reflect-metadata": "0.2.2",
|
|
232
|
+
"rxjs": "7.8.2",
|
|
233
|
+
"tsyringe": "4.10.0"
|
|
234
|
+
},
|
|
235
|
+
"current": {
|
|
236
|
+
"@cratis/arc": "22.6.2",
|
|
237
|
+
"@cratis/arc.react": "22.6.2",
|
|
238
|
+
"@cratis/fundamentals": "7.18.1",
|
|
239
|
+
"@primereact/core": "11.1.0",
|
|
240
|
+
"@primereact/headless": "11.1.0",
|
|
241
|
+
"@primereact/styles": "11.1.0",
|
|
242
|
+
"@primereact/ui": "11.1.0",
|
|
243
|
+
"@primeuix/motion": "1.0.0",
|
|
244
|
+
"@primeuix/themes": "3.0.0",
|
|
245
|
+
"@primeuix/utils": "0.8.1",
|
|
246
|
+
"@types/react": "19.2.18",
|
|
247
|
+
"primereact": "11.1.0",
|
|
248
|
+
"react": "19.2.8",
|
|
249
|
+
"react-dom": "19.2.8",
|
|
250
|
+
"reflect-metadata": "0.2.2",
|
|
251
|
+
"rxjs": "7.8.2",
|
|
252
|
+
"tsyringe": "4.10.0"
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"name": "@cratis/components.primereact10",
|
|
258
|
+
"role": "renderer-adapter",
|
|
259
|
+
"version": "4.0.0",
|
|
260
|
+
"releaseMajorRange": ">=4 <5",
|
|
261
|
+
"independentRelease": false,
|
|
262
|
+
"private": false,
|
|
263
|
+
"packageAccess": "public",
|
|
264
|
+
"peerDependencies": {
|
|
265
|
+
"@cratis/components": ">=4 <5",
|
|
266
|
+
"primereact": ">=10.9.9 <11",
|
|
267
|
+
"react": "^19.0.0",
|
|
268
|
+
"react-dom": "^19.0.0"
|
|
269
|
+
},
|
|
270
|
+
"upstream": {
|
|
271
|
+
"primereact": ">=10.9.9 <11",
|
|
272
|
+
"react": "^19.0.0",
|
|
273
|
+
"react-dom": "^19.0.0"
|
|
274
|
+
},
|
|
275
|
+
"rendererAbi": 1,
|
|
276
|
+
"rendererProfile": "stable-presentation/v1",
|
|
277
|
+
"verifiedPeers": {
|
|
278
|
+
"minimum": {
|
|
279
|
+
"@cratis/arc": "22.6.2",
|
|
280
|
+
"@cratis/arc.react": "22.6.2",
|
|
281
|
+
"@cratis/fundamentals": "7.18.1",
|
|
282
|
+
"@types/react": "19.0.0",
|
|
283
|
+
"primereact": "10.9.9",
|
|
284
|
+
"react": "19.0.0",
|
|
285
|
+
"react-dom": "19.0.0",
|
|
286
|
+
"reflect-metadata": "0.2.2",
|
|
287
|
+
"rxjs": "7.8.2",
|
|
288
|
+
"tsyringe": "4.10.0"
|
|
289
|
+
},
|
|
290
|
+
"current": {
|
|
291
|
+
"@cratis/arc": "22.6.2",
|
|
292
|
+
"@cratis/arc.react": "22.6.2",
|
|
293
|
+
"@cratis/fundamentals": "7.18.1",
|
|
294
|
+
"@types/react": "19.2.18",
|
|
295
|
+
"primereact": "10.9.9",
|
|
296
|
+
"react": "19.2.8",
|
|
297
|
+
"react-dom": "19.2.8",
|
|
298
|
+
"reflect-metadata": "0.2.2",
|
|
299
|
+
"rxjs": "7.8.2",
|
|
300
|
+
"tsyringe": "4.10.0"
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
]
|
|
305
|
+
}
|