altium-toolkit 1.1.3 → 1.1.23

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.
Files changed (125) hide show
  1. package/README.md +34 -5
  2. package/docs/api.md +171 -23
  3. package/docs/model-format.md +192 -20
  4. package/docs/schemas/altium_toolkit/embedded_assets_a1.schema.json +56 -0
  5. package/docs/schemas/altium_toolkit/fixture_coverage_matrix_a1.schema.json +89 -0
  6. package/docs/schemas/altium_toolkit/geometry_bounds_a1.schema.json +86 -0
  7. package/docs/schemas/altium_toolkit/library_catalog_a1.schema.json +65 -0
  8. package/docs/schemas/altium_toolkit/library_diff_a1.schema.json +54 -0
  9. package/docs/schemas/altium_toolkit/library_inspection_a1.schema.json +94 -0
  10. package/docs/schemas/altium_toolkit/library_qa_a1.schema.json +4 -0
  11. package/docs/schemas/altium_toolkit/native_stream_inventory_a1.schema.json +66 -0
  12. package/docs/schemas/altium_toolkit/normalized_model_a1.schema.json +513 -3
  13. package/docs/schemas/altium_toolkit/parameter_record_inventory_a1.schema.json +84 -0
  14. package/docs/schemas/altium_toolkit/parser_diagnostics_a1.schema.json +63 -0
  15. package/docs/schemas/altium_toolkit/parser_value_verification_a1.schema.json +74 -0
  16. package/docs/schemas/altium_toolkit/pcb_class_report_a1.schema.json +79 -0
  17. package/docs/schemas/altium_toolkit/pcb_inspection_a1.schema.json +65 -0
  18. package/docs/schemas/altium_toolkit/pcb_net_membership_a1.schema.json +98 -0
  19. package/docs/schemas/altium_toolkit/project_bundle_a1.schema.json +3 -0
  20. package/docs/schemas/altium_toolkit/project_hierarchy_a1.schema.json +79 -0
  21. package/docs/schemas/altium_toolkit/unsupported_features_a1.schema.json +212 -0
  22. package/docs/testing.md +7 -0
  23. package/examples/README.md +21 -0
  24. package/examples/cli-utils.mjs +148 -0
  25. package/examples/corpus-smoke.mjs +523 -0
  26. package/examples/extract-bom.mjs +47 -0
  27. package/examples/generate-pnp.mjs +59 -0
  28. package/examples/inspect-board.mjs +70 -0
  29. package/examples/inspect-schematic.mjs +406 -0
  30. package/examples/library-catalog.mjs +115 -0
  31. package/examples/net-report.mjs +61 -0
  32. package/examples/validate-library.mjs +59 -0
  33. package/package.json +1 -1
  34. package/spec/library-scope.md +5 -0
  35. package/src/core/BinaryReader.mjs +213 -2
  36. package/src/core/altium/AltiumLibraryBatchExporter.mjs +206 -0
  37. package/src/core/altium/AltiumLibraryRecordBuilder.mjs +293 -0
  38. package/src/core/altium/AltiumParser.mjs +357 -16
  39. package/src/core/altium/AltiumPcbLibExporter.mjs +101 -0
  40. package/src/core/altium/AltiumSchLibExporter.mjs +57 -0
  41. package/src/core/altium/AltiumUnits.mjs +205 -0
  42. package/src/core/altium/AsciiRecordParser.mjs +52 -11
  43. package/src/core/altium/EmbeddedAssetReportBuilder.mjs +383 -0
  44. package/src/core/altium/FixtureCoverageMatrixBuilder.mjs +304 -0
  45. package/src/core/altium/GeometryBoundsReportBuilder.mjs +935 -0
  46. package/src/core/altium/LibraryCatalogArtifactBuilder.mjs +296 -0
  47. package/src/core/altium/LibraryDiffReportBuilder.mjs +260 -0
  48. package/src/core/altium/LibraryInspectionReportBuilder.mjs +156 -0
  49. package/src/core/altium/LibraryQaReportBuilder.mjs +374 -1
  50. package/src/core/altium/NativeStreamInventoryBuilder.mjs +177 -0
  51. package/src/core/altium/NormalizedModelSchema.mjs +3 -31
  52. package/src/core/altium/ParameterCollection.mjs +431 -0
  53. package/src/core/altium/ParameterRecordInventoryBuilder.mjs +274 -0
  54. package/src/core/altium/ParserCompatibilityFuzzer.mjs +106 -2
  55. package/src/core/altium/ParserDiagnosticNormalizer.mjs +213 -0
  56. package/src/core/altium/ParserErrors.mjs +90 -0
  57. package/src/core/altium/ParserFieldCoverageReportBuilder.mjs +656 -0
  58. package/src/core/altium/ParserUtils.mjs +24 -0
  59. package/src/core/altium/ParserValueVerificationReportBuilder.mjs +323 -0
  60. package/src/core/altium/PcbClassReportBuilder.mjs +366 -0
  61. package/src/core/altium/PcbComponentKindPolicy.mjs +9 -9
  62. package/src/core/altium/PcbEmbeddedModelExtractor.mjs +22 -3
  63. package/src/core/altium/PcbInspectionReportBuilder.mjs +313 -0
  64. package/src/core/altium/PcbLayerGroups.mjs +308 -0
  65. package/src/core/altium/PcbLayerStackCustomDataParser.mjs +183 -0
  66. package/src/core/altium/PcbLayerStackInterchangeParser.mjs +473 -4
  67. package/src/core/altium/PcbLayerStackReadModelBuilder.mjs +83 -15
  68. package/src/core/altium/PcbLayerStackSourceMetadataParser.mjs +74 -4
  69. package/src/core/altium/PcbLibModelParser.mjs +20 -4
  70. package/src/core/altium/PcbLibStreamExtractor.mjs +49 -6
  71. package/src/core/altium/PcbModelParser.mjs +223 -4
  72. package/src/core/altium/PcbNetMembershipReportBuilder.mjs +270 -0
  73. package/src/core/altium/PcbOutlineRecovery.mjs +94 -0
  74. package/src/core/altium/PcbStreamExtractor.mjs +130 -6
  75. package/src/core/altium/PcbTrackPrimitiveParser.mjs +66 -2
  76. package/src/core/altium/ProjectDesignBundleBuilder.mjs +15 -0
  77. package/src/core/altium/ProjectHierarchyReportBuilder.mjs +660 -0
  78. package/src/core/altium/ProjectNetlistExporter.mjs +2 -0
  79. package/src/core/altium/RawDataPreservationReportBuilder.mjs +348 -0
  80. package/src/core/altium/SchLibModelParser.mjs +840 -0
  81. package/src/core/altium/SchLibStreamExtractor.mjs +586 -0
  82. package/src/core/altium/SchematicBusEntryParser.mjs +3 -2
  83. package/src/core/altium/SchematicCodeSymbolParser.mjs +663 -0
  84. package/src/core/altium/SchematicConnectivityQaBuilder.mjs +177 -2
  85. package/src/core/altium/SchematicDirectiveParser.mjs +5 -17
  86. package/src/core/altium/SchematicDisplayModeCatalogParser.mjs +10 -1
  87. package/src/core/altium/SchematicFieldCoverageReportBuilder.mjs +549 -0
  88. package/src/core/altium/SchematicHarnessParser.mjs +9 -3
  89. package/src/core/altium/SchematicHyperlinkParser.mjs +122 -0
  90. package/src/core/altium/SchematicNetlistBuilder.mjs +271 -8
  91. package/src/core/altium/SchematicNoErcSymbolResolver.mjs +36 -0
  92. package/src/core/altium/SchematicOwnershipGraphParser.mjs +102 -3
  93. package/src/core/altium/SchematicPinParser.mjs +99 -65
  94. package/src/core/altium/SchematicPrimitiveParser.mjs +125 -22
  95. package/src/core/altium/SchematicQaReportBuilder.mjs +2 -0
  96. package/src/core/altium/SchematicRecordStreamParser.mjs +183 -0
  97. package/src/core/altium/SchematicRecordTypeRegistry.mjs +6 -1
  98. package/src/core/altium/SchematicSheetParser.mjs +8 -2
  99. package/src/core/altium/SchematicStreamExtractor.mjs +107 -21
  100. package/src/core/altium/SchematicTextOrientationResolver.mjs +76 -0
  101. package/src/core/altium/SchematicTextParser.mjs +28 -12
  102. package/src/core/altium/SchematicTextRunParser.mjs +81 -0
  103. package/src/core/altium/SchematicThumbnailParser.mjs +425 -0
  104. package/src/core/altium/SourceBundleExporter.mjs +156 -0
  105. package/src/core/altium/SourceComponentBundleNormalizer.mjs +295 -0
  106. package/src/core/altium/SourceComponentClient.mjs +239 -0
  107. package/src/core/altium/UnsupportedFeatureReportBuilder.mjs +380 -0
  108. package/src/core/ole/OleCompoundDocumentWriter.mjs +449 -0
  109. package/src/parser.mjs +43 -1
  110. package/src/renderers.mjs +1 -0
  111. package/src/styles/altium-renderers.css +6 -6
  112. package/src/ui/PcbArcUtils.mjs +19 -2
  113. package/src/ui/PcbScene3dBuilder.mjs +202 -20
  114. package/src/ui/PcbScene3dModelRegistry.mjs +28 -18
  115. package/src/ui/PcbScene3dPlacementSideResolver.mjs +48 -6
  116. package/src/ui/SchematicColorResolver.mjs +185 -0
  117. package/src/ui/SchematicDirectiveRenderer.mjs +133 -22
  118. package/src/ui/SchematicLineColorResolver.mjs +88 -0
  119. package/src/ui/SchematicNoteRenderer.mjs +5 -1
  120. package/src/ui/SchematicOwnerPinLabelLayout.mjs +269 -8
  121. package/src/ui/SchematicOwnerPinMarkerLineThemer.mjs +155 -0
  122. package/src/ui/SchematicPinSvgRenderer.mjs +229 -62
  123. package/src/ui/SchematicShapeRenderer.mjs +86 -17
  124. package/src/ui/SchematicSvgRenderer.mjs +980 -58
  125. package/src/ui/SchematicTypography.mjs +4 -3
@@ -23,6 +23,7 @@
23
23
  "schematic",
24
24
  "pcb",
25
25
  "pcb-library",
26
+ "schematic-library",
26
27
  "project",
27
28
  "project-script",
28
29
  "project-annotation",
@@ -36,6 +37,7 @@
36
37
  "SchDoc",
37
38
  "PcbDoc",
38
39
  "PcbLib",
40
+ "SchLib",
39
41
  "PrjPcb",
40
42
  "PrjScr",
41
43
  "Annotation",
@@ -63,10 +65,22 @@
63
65
  "type": "string"
64
66
  },
65
67
  "severity": {
66
- "enum": ["info", "warning"]
68
+ "enum": ["info", "warning", "error"]
67
69
  },
68
70
  "message": {
69
71
  "type": "string"
72
+ },
73
+ "fileName": {
74
+ "type": "string"
75
+ },
76
+ "sourceStream": {
77
+ "type": "string"
78
+ },
79
+ "recordType": {
80
+ "type": ["number", "string"]
81
+ },
82
+ "errorKind": {
83
+ "type": "string"
70
84
  }
71
85
  },
72
86
  "additionalProperties": true
@@ -81,12 +95,36 @@
81
95
  "$ref": "#/$defs/schematicRecordType"
82
96
  }
83
97
  },
98
+ "nets": {
99
+ "type": "array",
100
+ "items": {
101
+ "$ref": "#/$defs/schematicNet"
102
+ }
103
+ },
84
104
  "images": {
85
105
  "type": "array",
86
106
  "items": {
87
107
  "$ref": "#/$defs/schematicImage"
88
108
  }
89
109
  },
110
+ "thumbnails": {
111
+ "type": "array",
112
+ "items": {
113
+ "$ref": "#/$defs/schematicThumbnail"
114
+ }
115
+ },
116
+ "hyperlinks": {
117
+ "type": "array",
118
+ "items": {
119
+ "$ref": "#/$defs/schematicHyperlink"
120
+ }
121
+ },
122
+ "opaqueRecords": {
123
+ "$ref": "#/$defs/opaqueRecords"
124
+ },
125
+ "nativeStreams": {
126
+ "$ref": "#/$defs/nativeStreamInventory"
127
+ },
90
128
  "roundedRectangles": {
91
129
  "type": "array",
92
130
  "items": {
@@ -104,6 +142,15 @@
104
142
  "renderDiagnostics": {
105
143
  "$ref": "#/$defs/schematicRenderDiagnostics"
106
144
  },
145
+ "qa": {
146
+ "type": "object",
147
+ "properties": {
148
+ "fieldCoverage": {
149
+ "$ref": "#/$defs/schematicFieldCoverage"
150
+ }
151
+ },
152
+ "additionalProperties": true
153
+ },
107
154
  "directiveSemantics": {
108
155
  "type": "object",
109
156
  "properties": {
@@ -200,6 +247,20 @@
200
247
  "$ref": "#/$defs/pcbDifferentialPairClass"
201
248
  }
202
249
  },
250
+ "embeddedBoards": {
251
+ "type": "array",
252
+ "items": {
253
+ "type": "object",
254
+ "additionalProperties": true
255
+ }
256
+ },
257
+ "rooms": {
258
+ "type": "array",
259
+ "items": {
260
+ "type": "object",
261
+ "additionalProperties": true
262
+ }
263
+ },
203
264
  "pickPlace": {
204
265
  "$ref": "#/$defs/pickPlaceModel"
205
266
  },
@@ -218,6 +279,9 @@
218
279
  "rawRecords": {
219
280
  "$ref": "#/$defs/rawRecords"
220
281
  },
282
+ "nativeStreams": {
283
+ "$ref": "#/$defs/nativeStreamInventory"
284
+ },
221
285
  "layerSubstacks": {
222
286
  "$ref": "#/$defs/layerSubstacks"
223
287
  },
@@ -315,6 +379,52 @@
315
379
  },
316
380
  "parityReport": {
317
381
  "$ref": "#/$defs/pcbLibraryParityReport"
382
+ },
383
+ "nativeStreams": {
384
+ "$ref": "#/$defs/nativeStreamInventory"
385
+ }
386
+ },
387
+ "additionalProperties": true
388
+ },
389
+ "schematicLibrary": {
390
+ "type": "object",
391
+ "properties": {
392
+ "libraryHeader": {
393
+ "type": "object",
394
+ "additionalProperties": true
395
+ },
396
+ "sectionKeys": {
397
+ "type": "array",
398
+ "items": {
399
+ "type": "object",
400
+ "additionalProperties": true
401
+ }
402
+ },
403
+ "symbols": {
404
+ "type": "array",
405
+ "items": {
406
+ "type": "object",
407
+ "additionalProperties": true
408
+ }
409
+ },
410
+ "indexes": {
411
+ "$ref": "#/$defs/libraryIndexes"
412
+ },
413
+ "renderManifest": {
414
+ "$ref": "#/$defs/libraryRenderManifest"
415
+ },
416
+ "embeddedFiles": {
417
+ "type": "object",
418
+ "additionalProperties": true
419
+ },
420
+ "opaqueRecords": {
421
+ "$ref": "#/$defs/opaqueRecords"
422
+ },
423
+ "nativeStreams": {
424
+ "$ref": "#/$defs/nativeStreamInventory"
425
+ },
426
+ "qa": {
427
+ "$ref": "#/$defs/libraryQaReport"
318
428
  }
319
429
  },
320
430
  "additionalProperties": true
@@ -386,6 +496,9 @@
386
496
  "schematic_hierarchy": {
387
497
  "$ref": "#/$defs/schematicHierarchy"
388
498
  },
499
+ "schematicHierarchyReport": {
500
+ "$ref": "#/$defs/projectHierarchyReport"
501
+ },
389
502
  "nets": {
390
503
  "type": "array",
391
504
  "items": {
@@ -460,6 +573,17 @@
460
573
  }
461
574
  }
462
575
  },
576
+ {
577
+ "required": ["schematicLibrary"],
578
+ "properties": {
579
+ "kind": {
580
+ "const": "schematic-library"
581
+ },
582
+ "fileType": {
583
+ "const": "SchLib"
584
+ }
585
+ }
586
+ },
463
587
  {
464
588
  "required": ["project"],
465
589
  "properties": {
@@ -549,6 +673,27 @@
549
673
  },
550
674
  "additionalProperties": true
551
675
  },
676
+ "nativeStreamInventory": {
677
+ "type": "object",
678
+ "required": ["schema", "summary", "streams"],
679
+ "properties": {
680
+ "schema": {
681
+ "const": "altium-toolkit.native-stream-inventory.a1"
682
+ },
683
+ "summary": {
684
+ "type": "object",
685
+ "additionalProperties": true
686
+ },
687
+ "streams": {
688
+ "type": "array",
689
+ "items": {
690
+ "type": "object",
691
+ "additionalProperties": true
692
+ }
693
+ }
694
+ },
695
+ "additionalProperties": true
696
+ },
552
697
  "projectDocumentGraph": {
553
698
  "type": "object",
554
699
  "required": ["schema", "summary", "documents", "groups", "indexes"],
@@ -809,6 +954,160 @@
809
954
  },
810
955
  "additionalProperties": true
811
956
  },
957
+ "schematicFieldCoverage": {
958
+ "type": "object",
959
+ "required": ["schema", "summary", "recordTypes"],
960
+ "properties": {
961
+ "schema": {
962
+ "const": "altium-toolkit.schematic.field-coverage.a1"
963
+ },
964
+ "summary": {
965
+ "type": "object",
966
+ "properties": {
967
+ "recordTypeCount": {
968
+ "type": "integer",
969
+ "minimum": 0
970
+ },
971
+ "unrecognizedFieldCount": {
972
+ "type": "integer",
973
+ "minimum": 0
974
+ },
975
+ "unrecognizedOccurrenceCount": {
976
+ "type": "integer",
977
+ "minimum": 0
978
+ }
979
+ },
980
+ "additionalProperties": true
981
+ },
982
+ "recordTypes": {
983
+ "type": "array",
984
+ "items": {
985
+ "type": "object",
986
+ "required": [
987
+ "recordType",
988
+ "name",
989
+ "family",
990
+ "supported",
991
+ "recordCount",
992
+ "unrecognizedFields"
993
+ ],
994
+ "properties": {
995
+ "recordType": {
996
+ "type": "integer"
997
+ },
998
+ "name": {
999
+ "type": "string"
1000
+ },
1001
+ "family": {
1002
+ "type": "string"
1003
+ },
1004
+ "supported": {
1005
+ "type": "boolean"
1006
+ },
1007
+ "recordCount": {
1008
+ "type": "integer",
1009
+ "minimum": 0
1010
+ },
1011
+ "unrecognizedFields": {
1012
+ "type": "array",
1013
+ "items": {
1014
+ "type": "object",
1015
+ "required": ["name", "count", "recordKeys"],
1016
+ "properties": {
1017
+ "name": {
1018
+ "type": "string"
1019
+ },
1020
+ "count": {
1021
+ "type": "integer",
1022
+ "minimum": 1
1023
+ },
1024
+ "recordKeys": {
1025
+ "type": "array",
1026
+ "items": {
1027
+ "type": "string"
1028
+ }
1029
+ }
1030
+ },
1031
+ "additionalProperties": true
1032
+ }
1033
+ }
1034
+ },
1035
+ "additionalProperties": true
1036
+ }
1037
+ }
1038
+ },
1039
+ "additionalProperties": true
1040
+ },
1041
+ "schematicHyperlink": {
1042
+ "type": "object",
1043
+ "required": ["key", "recordKey"],
1044
+ "properties": {
1045
+ "key": {
1046
+ "type": "string"
1047
+ },
1048
+ "recordKey": {
1049
+ "type": "string"
1050
+ },
1051
+ "indexInSheet": {
1052
+ "type": "number"
1053
+ },
1054
+ "ownerIndex": {
1055
+ "type": "string"
1056
+ },
1057
+ "ownerPartId": {
1058
+ "type": "number"
1059
+ },
1060
+ "uniqueId": {
1061
+ "type": "string"
1062
+ },
1063
+ "text": {
1064
+ "type": "string"
1065
+ },
1066
+ "url": {
1067
+ "type": "string"
1068
+ },
1069
+ "x": {
1070
+ "type": "number"
1071
+ },
1072
+ "y": {
1073
+ "type": "number"
1074
+ },
1075
+ "fontId": {
1076
+ "type": "string"
1077
+ },
1078
+ "fontSize": {
1079
+ "type": "number"
1080
+ },
1081
+ "fontFamily": {
1082
+ "type": "string"
1083
+ },
1084
+ "fontWeight": {
1085
+ "type": "number"
1086
+ },
1087
+ "fontStyle": {
1088
+ "type": "string"
1089
+ },
1090
+ "color": {
1091
+ "type": "string"
1092
+ },
1093
+ "areaColor": {
1094
+ "type": "string"
1095
+ },
1096
+ "orientation": {
1097
+ "type": "number"
1098
+ },
1099
+ "rotation": {
1100
+ "type": "number"
1101
+ },
1102
+ "justification": {
1103
+ "type": "number"
1104
+ },
1105
+ "isNotAccessible": {
1106
+ "type": "boolean"
1107
+ }
1108
+ },
1109
+ "additionalProperties": true
1110
+ },
812
1111
  "schematicImage": {
813
1112
  "type": "object",
814
1113
  "required": [
@@ -870,6 +1169,42 @@
870
1169
  },
871
1170
  "additionalProperties": true
872
1171
  },
1172
+ "schematicThumbnail": {
1173
+ "type": "object",
1174
+ "required": [
1175
+ "kind",
1176
+ "width",
1177
+ "height",
1178
+ "mimeType",
1179
+ "dataBase64",
1180
+ "sourceStream",
1181
+ "pixelFormat"
1182
+ ],
1183
+ "properties": {
1184
+ "kind": {
1185
+ "type": "string"
1186
+ },
1187
+ "width": {
1188
+ "type": "number"
1189
+ },
1190
+ "height": {
1191
+ "type": "number"
1192
+ },
1193
+ "mimeType": {
1194
+ "type": "string"
1195
+ },
1196
+ "dataBase64": {
1197
+ "type": "string"
1198
+ },
1199
+ "sourceStream": {
1200
+ "type": "string"
1201
+ },
1202
+ "pixelFormat": {
1203
+ "type": "string"
1204
+ }
1205
+ },
1206
+ "additionalProperties": true
1207
+ },
873
1208
  "holeTolerance": {
874
1209
  "type": "object",
875
1210
  "properties": {
@@ -1465,6 +1800,46 @@
1465
1800
  "additionalProperties": true
1466
1801
  }
1467
1802
  },
1803
+ "opaqueRecords": {
1804
+ "type": "array",
1805
+ "items": {
1806
+ "type": "object",
1807
+ "required": [
1808
+ "source",
1809
+ "frameType",
1810
+ "recordIndex",
1811
+ "byteLength",
1812
+ "rawBase64"
1813
+ ],
1814
+ "properties": {
1815
+ "source": {
1816
+ "type": "string"
1817
+ },
1818
+ "sourceStorage": {
1819
+ "type": "string"
1820
+ },
1821
+ "sourceStream": {
1822
+ "type": "string"
1823
+ },
1824
+ "frameType": {
1825
+ "type": "number"
1826
+ },
1827
+ "typeId": {
1828
+ "type": ["number", "null"]
1829
+ },
1830
+ "recordIndex": {
1831
+ "type": "number"
1832
+ },
1833
+ "byteLength": {
1834
+ "type": "number"
1835
+ },
1836
+ "rawBase64": {
1837
+ "type": "string"
1838
+ }
1839
+ },
1840
+ "additionalProperties": true
1841
+ }
1842
+ },
1468
1843
  "pcbComponent": {
1469
1844
  "type": "object",
1470
1845
  "required": [
@@ -1548,7 +1923,7 @@
1548
1923
  "displayName",
1549
1924
  "includeInBom",
1550
1925
  "includeInNetlist",
1551
- "includeInPnp"
1926
+ "includeInPlacement"
1552
1927
  ],
1553
1928
  "properties": {
1554
1929
  "value": {
@@ -1566,7 +1941,7 @@
1566
1941
  "includeInNetlist": {
1567
1942
  "type": "boolean"
1568
1943
  },
1569
- "includeInPnp": {
1944
+ "includeInPlacement": {
1570
1945
  "type": "boolean"
1571
1946
  }
1572
1947
  },
@@ -2479,6 +2854,85 @@
2479
2854
  },
2480
2855
  "additionalProperties": true
2481
2856
  },
2857
+ "projectHierarchyReport": {
2858
+ "type": "object",
2859
+ "required": [
2860
+ "schema",
2861
+ "summary",
2862
+ "hierarchyMode",
2863
+ "sheets",
2864
+ "links",
2865
+ "roots",
2866
+ "diagnostics"
2867
+ ],
2868
+ "properties": {
2869
+ "schema": {
2870
+ "const": "altium-toolkit.project.hierarchy.a1"
2871
+ },
2872
+ "summary": {
2873
+ "type": "object",
2874
+ "additionalProperties": true
2875
+ },
2876
+ "hierarchyMode": {
2877
+ "type": "object",
2878
+ "additionalProperties": true
2879
+ },
2880
+ "sheets": {
2881
+ "type": "array"
2882
+ },
2883
+ "links": {
2884
+ "type": "array"
2885
+ },
2886
+ "roots": {
2887
+ "type": "array"
2888
+ },
2889
+ "diagnostics": {
2890
+ "type": "array"
2891
+ }
2892
+ },
2893
+ "additionalProperties": true
2894
+ },
2895
+ "schematicNet": {
2896
+ "type": "object",
2897
+ "required": ["name"],
2898
+ "properties": {
2899
+ "name": {
2900
+ "type": "string"
2901
+ },
2902
+ "autoName": {
2903
+ "type": "string"
2904
+ },
2905
+ "autoNameSource": {
2906
+ "type": "string",
2907
+ "enum": [
2908
+ "component-pin",
2909
+ "component-pin-name",
2910
+ "owner-pin",
2911
+ "owner-pin-name",
2912
+ "pin-name"
2913
+ ]
2914
+ },
2915
+ "aliasCandidates": {
2916
+ "type": "array",
2917
+ "items": {
2918
+ "type": "string"
2919
+ }
2920
+ },
2921
+ "pins": {
2922
+ "type": "array",
2923
+ "items": {
2924
+ "type": "object",
2925
+ "properties": {
2926
+ "componentDesignator": {
2927
+ "type": "string"
2928
+ }
2929
+ },
2930
+ "additionalProperties": true
2931
+ }
2932
+ }
2933
+ },
2934
+ "additionalProperties": true
2935
+ },
2482
2936
  "designBundleNet": {
2483
2937
  "type": "object",
2484
2938
  "required": ["bundleIndex", "name", "schematic", "pcb", "pins"],
@@ -2835,12 +3289,68 @@
2835
3289
  "libraryIndexes": {
2836
3290
  "type": "object",
2837
3291
  "properties": {
3292
+ "symbolsByName": {
3293
+ "type": "object"
3294
+ },
2838
3295
  "footprintsByName": {
2839
3296
  "type": "object"
2840
3297
  }
2841
3298
  },
2842
3299
  "additionalProperties": true
2843
3300
  },
3301
+ "libraryQaReport": {
3302
+ "type": "object",
3303
+ "properties": {
3304
+ "schema": {
3305
+ "const": "altium-toolkit.library.qa.a1"
3306
+ },
3307
+ "summary": {
3308
+ "type": "object",
3309
+ "additionalProperties": true
3310
+ },
3311
+ "duplicates": {
3312
+ "type": "object",
3313
+ "additionalProperties": true
3314
+ },
3315
+ "staleImplementations": {
3316
+ "type": "array",
3317
+ "items": {
3318
+ "type": "object",
3319
+ "additionalProperties": true
3320
+ }
3321
+ },
3322
+ "missingModels": {
3323
+ "type": "array",
3324
+ "items": {
3325
+ "type": "object",
3326
+ "additionalProperties": true
3327
+ }
3328
+ },
3329
+ "multipartMismatches": {
3330
+ "type": "array",
3331
+ "items": {
3332
+ "type": "object",
3333
+ "additionalProperties": true
3334
+ }
3335
+ },
3336
+ "mergePlan": {
3337
+ "type": "object",
3338
+ "additionalProperties": true
3339
+ },
3340
+ "libraryLint": {
3341
+ "type": "object",
3342
+ "additionalProperties": true
3343
+ },
3344
+ "issues": {
3345
+ "type": "array",
3346
+ "items": {
3347
+ "type": "object",
3348
+ "additionalProperties": true
3349
+ }
3350
+ }
3351
+ },
3352
+ "additionalProperties": true
3353
+ },
2844
3354
  "integratedLibraryIndexes": {
2845
3355
  "type": "object",
2846
3356
  "properties": {