altium-toolkit 1.3.0 → 1.4.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/README.md
CHANGED
|
@@ -39,6 +39,12 @@ missing-image placeholder for those unusable payloads without changing the
|
|
|
39
39
|
frozen native parser or healthy embedded images. See the
|
|
40
40
|
[1.3.0 release notes](docs/release-notes-v1.3.0.md).
|
|
41
41
|
|
|
42
|
+
Version 1.4.0 adopts newly decoded CircuitJSON and native extension graphs at
|
|
43
|
+
the shared validation boundary. Their ordinary nodes retain identity and are
|
|
44
|
+
deeply frozen without a redundant defensive graph copy. Parser parameters,
|
|
45
|
+
document envelopes, extension fields, and return shapes remain unchanged. See
|
|
46
|
+
the [1.4.0 release notes](docs/release-notes-v1.4.0.md).
|
|
47
|
+
|
|
42
48
|
Default `extensions: 'canonical'` keeps compact Altium summary metadata.
|
|
43
49
|
Request the complete native read model with `extensions: 'full'`,
|
|
44
50
|
`preserveRaw: true`, or `extensions: ['altium.native-model']`. Project batches
|
|
@@ -206,6 +212,7 @@ const legacyCircuitJson = AltiumParser.parseArrayBuffer(file.name, arrayBuffer)
|
|
|
206
212
|
- [API](docs/api.md)
|
|
207
213
|
- [Capabilities](docs/capabilities.md)
|
|
208
214
|
- [Migration from 1.1.41](docs/migration.md)
|
|
215
|
+
- [1.4.0 release notes](docs/release-notes-v1.4.0.md)
|
|
209
216
|
- [1.3.0 release notes](docs/release-notes-v1.3.0.md)
|
|
210
217
|
- [1.2.1 release notes](docs/release-notes-v1.2.1.md)
|
|
211
218
|
- [1.2.0 release notes](docs/release-notes-v1.2.0.md)
|
package/docs/api.md
CHANGED
|
@@ -111,6 +111,13 @@ metadata. The complete recovered native read model remains available through
|
|
|
111
111
|
`document.model` and do not require the full native extension.
|
|
112
112
|
`extensions: 'none'` or `extensions: []` returns exactly `extensions: {}`.
|
|
113
113
|
|
|
114
|
+
The convergence builder transfers its newly decoded ordinary CircuitJSON and
|
|
115
|
+
native extension graphs into the shared owned-document validator. Eligible
|
|
116
|
+
graph nodes retain identity and are deeply frozen in place, avoiding a second
|
|
117
|
+
full defensive copy. This is an internal ownership optimization after source
|
|
118
|
+
decoding: raw caller data remains untrusted, and every public parser parameter,
|
|
119
|
+
validation rule, document field, and return shape is unchanged.
|
|
120
|
+
|
|
114
121
|
Canonical `.SchDoc` models preserve native drawing order, ownership, geometry,
|
|
115
122
|
and style as shared `schematic_rect`, `schematic_circle`, `schematic_arc`,
|
|
116
123
|
`schematic_path`, `schematic_text`, `schematic_table`, and
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# altium-toolkit 1.4.0
|
|
2
|
+
|
|
3
|
+
Version 1.4.0 adopts parser-owned CircuitJSON and retained native extension
|
|
4
|
+
graphs through the CircuitJSON Toolkit 1.4 ownership boundary. It removes a
|
|
5
|
+
redundant defensive graph copy from successful document construction without
|
|
6
|
+
weakening validation or immutability.
|
|
7
|
+
|
|
8
|
+
## Owned convergence graphs
|
|
9
|
+
|
|
10
|
+
- The Altium convergence builder uses
|
|
11
|
+
`DocumentResult.createValidatedOwned(fields, runtime?)` for graphs it has
|
|
12
|
+
just constructed and exclusively owns.
|
|
13
|
+
- Ordinary CircuitJSON model and native extension nodes retain their identities
|
|
14
|
+
and are deeply frozen in place. Binary properties continue through the
|
|
15
|
+
shared defensive binary boundary.
|
|
16
|
+
- Raw input remains untrusted and is decoded and validated normally. The owned
|
|
17
|
+
path is applied only after the format parser has produced a new standard
|
|
18
|
+
local graph.
|
|
19
|
+
|
|
20
|
+
## API and compatibility
|
|
21
|
+
|
|
22
|
+
- Parser input, options, progress, cancellation, worker, and project contracts
|
|
23
|
+
are unchanged.
|
|
24
|
+
- Successful parsing returns the same `ecad-toolkit.document.v1` envelope with
|
|
25
|
+
the same `model`, `source`, `extensions`, `assets`, `diagnostics`, and
|
|
26
|
+
`statistics` fields.
|
|
27
|
+
- Canonical, metadata, full native-model, and empty extension selections retain
|
|
28
|
+
their existing behavior and return shapes.
|
|
29
|
+
- No class, method, parameter, package subpath, native extension, or renderer
|
|
30
|
+
behavior is removed or renamed.
|
|
31
|
+
|
|
32
|
+
## Performance verification
|
|
33
|
+
|
|
34
|
+
The shared ownership regressions verify retained identity, deep freeze,
|
|
35
|
+
bounded extension sealing, mutation isolation, binary protection, and direct
|
|
36
|
+
and worker result parity. The Altium parser and packed cross-toolkit suites
|
|
37
|
+
continue to validate the public envelope and renderer contracts.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "altium-toolkit",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "Altium document parsing and non-interactive rendering utilities",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"altium",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"check:features": "node scripts/check-feature-preservation.mjs"
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
|
-
"circuitjson-toolkit": "^1.
|
|
70
|
+
"circuitjson-toolkit": "^1.4.0",
|
|
71
71
|
"fflate": "^0.8.2"
|
|
72
72
|
},
|
|
73
73
|
"devDependencies": {
|
|
@@ -57,7 +57,7 @@ export class AltiumDocumentBuilder {
|
|
|
57
57
|
normalized.options.retainSource === 'reference'
|
|
58
58
|
? { sourceReference: normalized.sourceReference }
|
|
59
59
|
: {}
|
|
60
|
-
return DocumentResult.
|
|
60
|
+
return DocumentResult.createValidatedOwned(
|
|
61
61
|
{
|
|
62
62
|
model,
|
|
63
63
|
source: {
|