@principled/cairn 1.0.0-beta

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 (313) hide show
  1. package/README.md +182 -0
  2. package/dist/analysis/analyzer.d.ts +13 -0
  3. package/dist/analysis/analyzer.d.ts.map +1 -0
  4. package/dist/analysis/analyzer.js +47 -0
  5. package/dist/analysis/analyzer.js.map +1 -0
  6. package/dist/analysis/embedding-provider.d.ts +12 -0
  7. package/dist/analysis/embedding-provider.d.ts.map +1 -0
  8. package/dist/analysis/embedding-provider.js +21 -0
  9. package/dist/analysis/embedding-provider.js.map +1 -0
  10. package/dist/analysis/index.d.ts +4 -0
  11. package/dist/analysis/index.d.ts.map +1 -0
  12. package/dist/analysis/index.js +4 -0
  13. package/dist/analysis/index.js.map +1 -0
  14. package/dist/analysis/stub-provider.d.ts +12 -0
  15. package/dist/analysis/stub-provider.d.ts.map +1 -0
  16. package/dist/analysis/stub-provider.js +30 -0
  17. package/dist/analysis/stub-provider.js.map +1 -0
  18. package/dist/catalog/catalog.d.ts +40 -0
  19. package/dist/catalog/catalog.d.ts.map +1 -0
  20. package/dist/catalog/catalog.js +118 -0
  21. package/dist/catalog/catalog.js.map +1 -0
  22. package/dist/catalog/category-merger.d.ts +25 -0
  23. package/dist/catalog/category-merger.d.ts.map +1 -0
  24. package/dist/catalog/category-merger.js +75 -0
  25. package/dist/catalog/category-merger.js.map +1 -0
  26. package/dist/catalog/index.d.ts +4 -0
  27. package/dist/catalog/index.d.ts.map +1 -0
  28. package/dist/catalog/index.js +4 -0
  29. package/dist/catalog/index.js.map +1 -0
  30. package/dist/catalog/post-merge-validation.d.ts +7 -0
  31. package/dist/catalog/post-merge-validation.d.ts.map +1 -0
  32. package/dist/catalog/post-merge-validation.js +59 -0
  33. package/dist/catalog/post-merge-validation.js.map +1 -0
  34. package/dist/cli/commands/add.d.ts +3 -0
  35. package/dist/cli/commands/add.d.ts.map +1 -0
  36. package/dist/cli/commands/add.js +107 -0
  37. package/dist/cli/commands/add.js.map +1 -0
  38. package/dist/cli/commands/analyze.d.ts +3 -0
  39. package/dist/cli/commands/analyze.d.ts.map +1 -0
  40. package/dist/cli/commands/analyze.js +44 -0
  41. package/dist/cli/commands/analyze.js.map +1 -0
  42. package/dist/cli/commands/diff.d.ts +3 -0
  43. package/dist/cli/commands/diff.d.ts.map +1 -0
  44. package/dist/cli/commands/diff.js +69 -0
  45. package/dist/cli/commands/diff.js.map +1 -0
  46. package/dist/cli/commands/edit.d.ts +3 -0
  47. package/dist/cli/commands/edit.d.ts.map +1 -0
  48. package/dist/cli/commands/edit.js +93 -0
  49. package/dist/cli/commands/edit.js.map +1 -0
  50. package/dist/cli/commands/export.d.ts +3 -0
  51. package/dist/cli/commands/export.d.ts.map +1 -0
  52. package/dist/cli/commands/export.js +46 -0
  53. package/dist/cli/commands/export.js.map +1 -0
  54. package/dist/cli/commands/init.d.ts +3 -0
  55. package/dist/cli/commands/init.d.ts.map +1 -0
  56. package/dist/cli/commands/init.js +21 -0
  57. package/dist/cli/commands/init.js.map +1 -0
  58. package/dist/cli/commands/inspect.d.ts +3 -0
  59. package/dist/cli/commands/inspect.d.ts.map +1 -0
  60. package/dist/cli/commands/inspect.js +153 -0
  61. package/dist/cli/commands/inspect.js.map +1 -0
  62. package/dist/cli/commands/query.d.ts +3 -0
  63. package/dist/cli/commands/query.d.ts.map +1 -0
  64. package/dist/cli/commands/query.js +77 -0
  65. package/dist/cli/commands/query.js.map +1 -0
  66. package/dist/cli/commands/review.d.ts +3 -0
  67. package/dist/cli/commands/review.d.ts.map +1 -0
  68. package/dist/cli/commands/review.js +118 -0
  69. package/dist/cli/commands/review.js.map +1 -0
  70. package/dist/cli/commands/validate.d.ts +3 -0
  71. package/dist/cli/commands/validate.d.ts.map +1 -0
  72. package/dist/cli/commands/validate.js +125 -0
  73. package/dist/cli/commands/validate.js.map +1 -0
  74. package/dist/cli/helpers.d.ts +24 -0
  75. package/dist/cli/helpers.d.ts.map +1 -0
  76. package/dist/cli/helpers.js +152 -0
  77. package/dist/cli/helpers.js.map +1 -0
  78. package/dist/cli/index.d.ts +3 -0
  79. package/dist/cli/index.d.ts.map +1 -0
  80. package/dist/cli/index.js +34 -0
  81. package/dist/cli/index.js.map +1 -0
  82. package/dist/config/index.d.ts +5 -0
  83. package/dist/config/index.d.ts.map +1 -0
  84. package/dist/config/index.js +3 -0
  85. package/dist/config/index.js.map +1 -0
  86. package/dist/config/loader.d.ts +45 -0
  87. package/dist/config/loader.d.ts.map +1 -0
  88. package/dist/config/loader.js +201 -0
  89. package/dist/config/loader.js.map +1 -0
  90. package/dist/config/schema.d.ts +37 -0
  91. package/dist/config/schema.d.ts.map +1 -0
  92. package/dist/config/schema.js +42 -0
  93. package/dist/config/schema.js.map +1 -0
  94. package/dist/data/data/defaults.yaml +101 -0
  95. package/dist/data/defaults.yaml +101 -0
  96. package/dist/errors.d.ts +45 -0
  97. package/dist/errors.d.ts.map +1 -0
  98. package/dist/errors.js +84 -0
  99. package/dist/errors.js.map +1 -0
  100. package/dist/exporters/base.d.ts +17 -0
  101. package/dist/exporters/base.d.ts.map +1 -0
  102. package/dist/exporters/base.js +7 -0
  103. package/dist/exporters/base.js.map +1 -0
  104. package/dist/exporters/csv-exporter.d.ts +13 -0
  105. package/dist/exporters/csv-exporter.d.ts.map +1 -0
  106. package/dist/exporters/csv-exporter.js +73 -0
  107. package/dist/exporters/csv-exporter.js.map +1 -0
  108. package/dist/exporters/dot-exporter.d.ts +12 -0
  109. package/dist/exporters/dot-exporter.d.ts.map +1 -0
  110. package/dist/exporters/dot-exporter.js +72 -0
  111. package/dist/exporters/dot-exporter.js.map +1 -0
  112. package/dist/exporters/index.d.ts +8 -0
  113. package/dist/exporters/index.d.ts.map +1 -0
  114. package/dist/exporters/index.js +8 -0
  115. package/dist/exporters/index.js.map +1 -0
  116. package/dist/exporters/json-exporter.d.ts +14 -0
  117. package/dist/exporters/json-exporter.d.ts.map +1 -0
  118. package/dist/exporters/json-exporter.js +41 -0
  119. package/dist/exporters/json-exporter.js.map +1 -0
  120. package/dist/exporters/markdown-exporter.d.ts +14 -0
  121. package/dist/exporters/markdown-exporter.d.ts.map +1 -0
  122. package/dist/exporters/markdown-exporter.js +65 -0
  123. package/dist/exporters/markdown-exporter.js.map +1 -0
  124. package/dist/exporters/registry.d.ts +4 -0
  125. package/dist/exporters/registry.d.ts.map +1 -0
  126. package/dist/exporters/registry.js +20 -0
  127. package/dist/exporters/registry.js.map +1 -0
  128. package/dist/exporters/sqlite-exporter.d.ts +10 -0
  129. package/dist/exporters/sqlite-exporter.d.ts.map +1 -0
  130. package/dist/exporters/sqlite-exporter.js +20 -0
  131. package/dist/exporters/sqlite-exporter.js.map +1 -0
  132. package/dist/index.d.ts +13 -0
  133. package/dist/index.d.ts.map +1 -0
  134. package/dist/index.js +14 -0
  135. package/dist/index.js.map +1 -0
  136. package/dist/inheritance/alias-resolver.d.ts +21 -0
  137. package/dist/inheritance/alias-resolver.d.ts.map +1 -0
  138. package/dist/inheritance/alias-resolver.js +40 -0
  139. package/dist/inheritance/alias-resolver.js.map +1 -0
  140. package/dist/inheritance/index.d.ts +9 -0
  141. package/dist/inheritance/index.d.ts.map +1 -0
  142. package/dist/inheritance/index.js +5 -0
  143. package/dist/inheritance/index.js.map +1 -0
  144. package/dist/inheritance/inheritance-resolver.d.ts +37 -0
  145. package/dist/inheritance/inheritance-resolver.d.ts.map +1 -0
  146. package/dist/inheritance/inheritance-resolver.js +164 -0
  147. package/dist/inheritance/inheritance-resolver.js.map +1 -0
  148. package/dist/inheritance/reference-parser.d.ts +27 -0
  149. package/dist/inheritance/reference-parser.d.ts.map +1 -0
  150. package/dist/inheritance/reference-parser.js +74 -0
  151. package/dist/inheritance/reference-parser.js.map +1 -0
  152. package/dist/inheritance/source-resolver.d.ts +29 -0
  153. package/dist/inheritance/source-resolver.d.ts.map +1 -0
  154. package/dist/inheritance/source-resolver.js +87 -0
  155. package/dist/inheritance/source-resolver.js.map +1 -0
  156. package/dist/model/category-registry.d.ts +48 -0
  157. package/dist/model/category-registry.d.ts.map +1 -0
  158. package/dist/model/category-registry.js +83 -0
  159. package/dist/model/category-registry.js.map +1 -0
  160. package/dist/model/document-meta.d.ts +38 -0
  161. package/dist/model/document-meta.d.ts.map +1 -0
  162. package/dist/model/document-meta.js +62 -0
  163. package/dist/model/document-meta.js.map +1 -0
  164. package/dist/model/document-parser.d.ts +17 -0
  165. package/dist/model/document-parser.d.ts.map +1 -0
  166. package/dist/model/document-parser.js +66 -0
  167. package/dist/model/document-parser.js.map +1 -0
  168. package/dist/model/document.d.ts +27 -0
  169. package/dist/model/document.d.ts.map +1 -0
  170. package/dist/model/document.js +42 -0
  171. package/dist/model/document.js.map +1 -0
  172. package/dist/model/element.d.ts +51 -0
  173. package/dist/model/element.d.ts.map +1 -0
  174. package/dist/model/element.js +78 -0
  175. package/dist/model/element.js.map +1 -0
  176. package/dist/model/graph.d.ts +42 -0
  177. package/dist/model/graph.d.ts.map +1 -0
  178. package/dist/model/graph.js +177 -0
  179. package/dist/model/graph.js.map +1 -0
  180. package/dist/model/index.d.ts +8 -0
  181. package/dist/model/index.d.ts.map +1 -0
  182. package/dist/model/index.js +7 -0
  183. package/dist/model/index.js.map +1 -0
  184. package/dist/parsers/base.d.ts +28 -0
  185. package/dist/parsers/base.d.ts.map +1 -0
  186. package/dist/parsers/base.js +19 -0
  187. package/dist/parsers/base.js.map +1 -0
  188. package/dist/parsers/index.d.ts +6 -0
  189. package/dist/parsers/index.d.ts.map +1 -0
  190. package/dist/parsers/index.js +6 -0
  191. package/dist/parsers/index.js.map +1 -0
  192. package/dist/parsers/markdown-parser.d.ts +12 -0
  193. package/dist/parsers/markdown-parser.d.ts.map +1 -0
  194. package/dist/parsers/markdown-parser.js +37 -0
  195. package/dist/parsers/markdown-parser.js.map +1 -0
  196. package/dist/parsers/registry.d.ts +11 -0
  197. package/dist/parsers/registry.d.ts.map +1 -0
  198. package/dist/parsers/registry.js +21 -0
  199. package/dist/parsers/registry.js.map +1 -0
  200. package/dist/parsers/typescript-parser.d.ts +12 -0
  201. package/dist/parsers/typescript-parser.d.ts.map +1 -0
  202. package/dist/parsers/typescript-parser.js +74 -0
  203. package/dist/parsers/typescript-parser.js.map +1 -0
  204. package/dist/parsers/yaml-parser.d.ts +12 -0
  205. package/dist/parsers/yaml-parser.d.ts.map +1 -0
  206. package/dist/parsers/yaml-parser.js +30 -0
  207. package/dist/parsers/yaml-parser.js.map +1 -0
  208. package/dist/provenance/index.d.ts +5 -0
  209. package/dist/provenance/index.d.ts.map +1 -0
  210. package/dist/provenance/index.js +4 -0
  211. package/dist/provenance/index.js.map +1 -0
  212. package/dist/provenance/review-hash.d.ts +11 -0
  213. package/dist/provenance/review-hash.d.ts.map +1 -0
  214. package/dist/provenance/review-hash.js +18 -0
  215. package/dist/provenance/review-hash.js.map +1 -0
  216. package/dist/provenance/schemas.d.ts +36 -0
  217. package/dist/provenance/schemas.d.ts.map +1 -0
  218. package/dist/provenance/schemas.js +26 -0
  219. package/dist/provenance/schemas.js.map +1 -0
  220. package/dist/provenance/staleness.d.ts +12 -0
  221. package/dist/provenance/staleness.d.ts.map +1 -0
  222. package/dist/provenance/staleness.js +46 -0
  223. package/dist/provenance/staleness.js.map +1 -0
  224. package/dist/refs/git-diff-tracer.d.ts +35 -0
  225. package/dist/refs/git-diff-tracer.d.ts.map +1 -0
  226. package/dist/refs/git-diff-tracer.js +143 -0
  227. package/dist/refs/git-diff-tracer.js.map +1 -0
  228. package/dist/schema/build-schema.d.ts +15 -0
  229. package/dist/schema/build-schema.d.ts.map +1 -0
  230. package/dist/schema/build-schema.js +83 -0
  231. package/dist/schema/build-schema.js.map +1 -0
  232. package/dist/schema/category-definition.d.ts +41 -0
  233. package/dist/schema/category-definition.d.ts.map +1 -0
  234. package/dist/schema/category-definition.js +22 -0
  235. package/dist/schema/category-definition.js.map +1 -0
  236. package/dist/schema/combined-schema.d.ts +17 -0
  237. package/dist/schema/combined-schema.d.ts.map +1 -0
  238. package/dist/schema/combined-schema.js +23 -0
  239. package/dist/schema/combined-schema.js.map +1 -0
  240. package/dist/schema/datetime.d.ts +11 -0
  241. package/dist/schema/datetime.d.ts.map +1 -0
  242. package/dist/schema/datetime.js +81 -0
  243. package/dist/schema/datetime.js.map +1 -0
  244. package/dist/schema/defaults-loader.d.ts +21 -0
  245. package/dist/schema/defaults-loader.d.ts.map +1 -0
  246. package/dist/schema/defaults-loader.js +55 -0
  247. package/dist/schema/defaults-loader.js.map +1 -0
  248. package/dist/schema/field-schema.d.ts +23 -0
  249. package/dist/schema/field-schema.d.ts.map +1 -0
  250. package/dist/schema/field-schema.js +18 -0
  251. package/dist/schema/field-schema.js.map +1 -0
  252. package/dist/schema/index.d.ts +17 -0
  253. package/dist/schema/index.d.ts.map +1 -0
  254. package/dist/schema/index.js +17 -0
  255. package/dist/schema/index.js.map +1 -0
  256. package/dist/schema/reserved-fields.d.ts +32 -0
  257. package/dist/schema/reserved-fields.d.ts.map +1 -0
  258. package/dist/schema/reserved-fields.js +42 -0
  259. package/dist/schema/reserved-fields.js.map +1 -0
  260. package/dist/schema/types.d.ts +7 -0
  261. package/dist/schema/types.d.ts.map +1 -0
  262. package/dist/schema/types.js +9 -0
  263. package/dist/schema/types.js.map +1 -0
  264. package/dist/utils/logger.d.ts +7 -0
  265. package/dist/utils/logger.d.ts.map +1 -0
  266. package/dist/utils/logger.js +16 -0
  267. package/dist/utils/logger.js.map +1 -0
  268. package/dist/utils/project-root.d.ts +14 -0
  269. package/dist/utils/project-root.d.ts.map +1 -0
  270. package/dist/utils/project-root.js +48 -0
  271. package/dist/utils/project-root.js.map +1 -0
  272. package/dist/validation/diagnostic.d.ts +23 -0
  273. package/dist/validation/diagnostic.d.ts.map +1 -0
  274. package/dist/validation/diagnostic.js +5 -0
  275. package/dist/validation/diagnostic.js.map +1 -0
  276. package/dist/validation/index.d.ts +6 -0
  277. package/dist/validation/index.d.ts.map +1 -0
  278. package/dist/validation/index.js +4 -0
  279. package/dist/validation/index.js.map +1 -0
  280. package/dist/validation/passes/coverage-pass.d.ts +10 -0
  281. package/dist/validation/passes/coverage-pass.d.ts.map +1 -0
  282. package/dist/validation/passes/coverage-pass.js +99 -0
  283. package/dist/validation/passes/coverage-pass.js.map +1 -0
  284. package/dist/validation/passes/index.d.ts +6 -0
  285. package/dist/validation/passes/index.d.ts.map +1 -0
  286. package/dist/validation/passes/index.js +19 -0
  287. package/dist/validation/passes/index.js.map +1 -0
  288. package/dist/validation/passes/schema-pass.d.ts +12 -0
  289. package/dist/validation/passes/schema-pass.d.ts.map +1 -0
  290. package/dist/validation/passes/schema-pass.js +38 -0
  291. package/dist/validation/passes/schema-pass.js.map +1 -0
  292. package/dist/validation/passes/semantic-pass.d.ts +8 -0
  293. package/dist/validation/passes/semantic-pass.d.ts.map +1 -0
  294. package/dist/validation/passes/semantic-pass.js +126 -0
  295. package/dist/validation/passes/semantic-pass.js.map +1 -0
  296. package/dist/validation/passes/structural-pass.d.ts +8 -0
  297. package/dist/validation/passes/structural-pass.d.ts.map +1 -0
  298. package/dist/validation/passes/structural-pass.js +150 -0
  299. package/dist/validation/passes/structural-pass.js.map +1 -0
  300. package/dist/validation/passes/traceability-pass.d.ts +9 -0
  301. package/dist/validation/passes/traceability-pass.d.ts.map +1 -0
  302. package/dist/validation/passes/traceability-pass.js +87 -0
  303. package/dist/validation/passes/traceability-pass.js.map +1 -0
  304. package/dist/validation/passes/user-rules-pass.d.ts +9 -0
  305. package/dist/validation/passes/user-rules-pass.d.ts.map +1 -0
  306. package/dist/validation/passes/user-rules-pass.js +72 -0
  307. package/dist/validation/passes/user-rules-pass.js.map +1 -0
  308. package/dist/validation/runner.d.ts +17 -0
  309. package/dist/validation/runner.d.ts.map +1 -0
  310. package/dist/validation/runner.js +33 -0
  311. package/dist/validation/runner.js.map +1 -0
  312. package/package.json +43 -0
  313. package/src/data/defaults.yaml +101 -0
@@ -0,0 +1,101 @@
1
+ # GVP v1 Built-in Category Definitions
2
+ # Per DEC-9.4: loaded through same pipeline as user files (dogfooding)
3
+
4
+ _all:
5
+ field_schemas:
6
+ priority:
7
+ type: number
8
+ required: false
9
+ refs:
10
+ type: list
11
+ required: false
12
+ items:
13
+ type: model
14
+ fields:
15
+ file:
16
+ type: string
17
+ required: true
18
+ identifier:
19
+ type: string
20
+ required: true
21
+ role:
22
+ type: enum
23
+ values: ["defines", "implements", "uses", "extends"]
24
+ required: true
25
+
26
+ categories:
27
+ goal:
28
+ yaml_key: goals
29
+ id_prefix: G
30
+ primary_field: statement
31
+ is_root: true
32
+ color: "#4CAF50"
33
+
34
+ value:
35
+ yaml_key: values
36
+ id_prefix: V
37
+ primary_field: statement
38
+ is_root: true
39
+ color: "#2196F3"
40
+
41
+ constraint:
42
+ yaml_key: constraints
43
+ id_prefix: C
44
+ primary_field: impact
45
+ is_root: true
46
+ color: "#FF9800"
47
+
48
+ principle:
49
+ yaml_key: principles
50
+ id_prefix: P
51
+ primary_field: statement
52
+ mapping_rules:
53
+ - [goal, value]
54
+ color: "#9C27B0"
55
+
56
+ rule:
57
+ yaml_key: rules
58
+ id_prefix: R
59
+ primary_field: statement
60
+ mapping_rules:
61
+ - [goal, value]
62
+ color: "#F44336"
63
+
64
+ heuristic:
65
+ yaml_key: heuristics
66
+ id_prefix: H
67
+ primary_field: statement
68
+ mapping_rules:
69
+ - [goal, value]
70
+ - [principle]
71
+ - [rule]
72
+ color: "#00BCD4"
73
+
74
+ decision:
75
+ yaml_key: decisions
76
+ id_prefix: D
77
+ primary_field: rationale
78
+ mapping_rules:
79
+ - [goal, value]
80
+ field_schemas:
81
+ considered:
82
+ type: dict
83
+ required: false
84
+ values:
85
+ type: model
86
+ fields:
87
+ rationale:
88
+ type: string
89
+ required: true
90
+ description:
91
+ type: string
92
+ required: false
93
+ color: "#795548"
94
+
95
+ milestone:
96
+ yaml_key: milestones
97
+ id_prefix: M
98
+ primary_field: description
99
+ mapping_rules:
100
+ - [goal, value]
101
+ color: "#607D8B"
@@ -0,0 +1,101 @@
1
+ # GVP v1 Built-in Category Definitions
2
+ # Per DEC-9.4: loaded through same pipeline as user files (dogfooding)
3
+
4
+ _all:
5
+ field_schemas:
6
+ priority:
7
+ type: number
8
+ required: false
9
+ refs:
10
+ type: list
11
+ required: false
12
+ items:
13
+ type: model
14
+ fields:
15
+ file:
16
+ type: string
17
+ required: true
18
+ identifier:
19
+ type: string
20
+ required: true
21
+ role:
22
+ type: enum
23
+ values: ["defines", "implements", "uses", "extends"]
24
+ required: true
25
+
26
+ categories:
27
+ goal:
28
+ yaml_key: goals
29
+ id_prefix: G
30
+ primary_field: statement
31
+ is_root: true
32
+ color: "#4CAF50"
33
+
34
+ value:
35
+ yaml_key: values
36
+ id_prefix: V
37
+ primary_field: statement
38
+ is_root: true
39
+ color: "#2196F3"
40
+
41
+ constraint:
42
+ yaml_key: constraints
43
+ id_prefix: C
44
+ primary_field: impact
45
+ is_root: true
46
+ color: "#FF9800"
47
+
48
+ principle:
49
+ yaml_key: principles
50
+ id_prefix: P
51
+ primary_field: statement
52
+ mapping_rules:
53
+ - [goal, value]
54
+ color: "#9C27B0"
55
+
56
+ rule:
57
+ yaml_key: rules
58
+ id_prefix: R
59
+ primary_field: statement
60
+ mapping_rules:
61
+ - [goal, value]
62
+ color: "#F44336"
63
+
64
+ heuristic:
65
+ yaml_key: heuristics
66
+ id_prefix: H
67
+ primary_field: statement
68
+ mapping_rules:
69
+ - [goal, value]
70
+ - [principle]
71
+ - [rule]
72
+ color: "#00BCD4"
73
+
74
+ decision:
75
+ yaml_key: decisions
76
+ id_prefix: D
77
+ primary_field: rationale
78
+ mapping_rules:
79
+ - [goal, value]
80
+ field_schemas:
81
+ considered:
82
+ type: dict
83
+ required: false
84
+ values:
85
+ type: model
86
+ fields:
87
+ rationale:
88
+ type: string
89
+ required: true
90
+ description:
91
+ type: string
92
+ required: false
93
+ color: "#795548"
94
+
95
+ milestone:
96
+ yaml_key: milestones
97
+ id_prefix: M
98
+ primary_field: description
99
+ mapping_rules:
100
+ - [goal, value]
101
+ color: "#607D8B"
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Base error for all GVP errors.
3
+ * Hierarchy: GVPError -> domain errors -> specific errors
4
+ * Per DEC-5.3: catch at any granularity.
5
+ */
6
+ export declare class GVPError extends Error {
7
+ constructor(message: string);
8
+ }
9
+ export declare class SchemaError extends GVPError {
10
+ constructor(message: string);
11
+ }
12
+ export declare class InheritanceError extends GVPError {
13
+ constructor(message: string);
14
+ }
15
+ export declare class ConfigError extends GVPError {
16
+ constructor(message: string);
17
+ }
18
+ export declare class ValidationError extends GVPError {
19
+ constructor(message: string);
20
+ }
21
+ export declare class ProvenanceError extends GVPError {
22
+ constructor(message: string);
23
+ }
24
+ export declare class SourceResolutionError extends InheritanceError {
25
+ constructor(message: string);
26
+ }
27
+ export declare class CatalogError extends GVPError {
28
+ constructor(message: string);
29
+ }
30
+ export declare class DuplicateIdPrefixError extends CatalogError {
31
+ constructor(message: string);
32
+ }
33
+ export declare class DuplicateYamlKeyError extends CatalogError {
34
+ constructor(message: string);
35
+ }
36
+ export declare class InvalidMappingRuleRefError extends CatalogError {
37
+ constructor(message: string);
38
+ }
39
+ export declare class CircularInheritanceError extends InheritanceError {
40
+ constructor(message: string);
41
+ }
42
+ export declare class MissingMappingRulesError extends CatalogError {
43
+ constructor(message: string);
44
+ }
45
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,KAAK;gBACrB,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,WAAY,SAAQ,QAAQ;gBAC3B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,gBAAiB,SAAQ,QAAQ;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,WAAY,SAAQ,QAAQ;gBAC3B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,eAAgB,SAAQ,QAAQ;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,eAAgB,SAAQ,QAAQ;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,qBAAsB,SAAQ,gBAAgB;gBAC7C,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,YAAa,SAAQ,QAAQ;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,sBAAuB,SAAQ,YAAY;gBAC1C,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,qBAAsB,SAAQ,YAAY;gBACzC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,0BAA2B,SAAQ,YAAY;gBAC9C,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,wBAAyB,SAAQ,gBAAgB;gBAChD,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,wBAAyB,SAAQ,YAAY;gBAC5C,OAAO,EAAE,MAAM;CAI5B"}
package/dist/errors.js ADDED
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Base error for all GVP errors.
3
+ * Hierarchy: GVPError -> domain errors -> specific errors
4
+ * Per DEC-5.3: catch at any granularity.
5
+ */
6
+ export class GVPError extends Error {
7
+ constructor(message) {
8
+ super(message);
9
+ this.name = 'GVPError';
10
+ }
11
+ }
12
+ export class SchemaError extends GVPError {
13
+ constructor(message) {
14
+ super(message);
15
+ this.name = 'SchemaError';
16
+ }
17
+ }
18
+ export class InheritanceError extends GVPError {
19
+ constructor(message) {
20
+ super(message);
21
+ this.name = 'InheritanceError';
22
+ }
23
+ }
24
+ export class ConfigError extends GVPError {
25
+ constructor(message) {
26
+ super(message);
27
+ this.name = 'ConfigError';
28
+ }
29
+ }
30
+ export class ValidationError extends GVPError {
31
+ constructor(message) {
32
+ super(message);
33
+ this.name = 'ValidationError';
34
+ }
35
+ }
36
+ export class ProvenanceError extends GVPError {
37
+ constructor(message) {
38
+ super(message);
39
+ this.name = 'ProvenanceError';
40
+ }
41
+ }
42
+ export class SourceResolutionError extends InheritanceError {
43
+ constructor(message) {
44
+ super(message);
45
+ this.name = 'SourceResolutionError';
46
+ }
47
+ }
48
+ export class CatalogError extends GVPError {
49
+ constructor(message) {
50
+ super(message);
51
+ this.name = 'CatalogError';
52
+ }
53
+ }
54
+ export class DuplicateIdPrefixError extends CatalogError {
55
+ constructor(message) {
56
+ super(message);
57
+ this.name = 'DuplicateIdPrefixError';
58
+ }
59
+ }
60
+ export class DuplicateYamlKeyError extends CatalogError {
61
+ constructor(message) {
62
+ super(message);
63
+ this.name = 'DuplicateYamlKeyError';
64
+ }
65
+ }
66
+ export class InvalidMappingRuleRefError extends CatalogError {
67
+ constructor(message) {
68
+ super(message);
69
+ this.name = 'InvalidMappingRuleRefError';
70
+ }
71
+ }
72
+ export class CircularInheritanceError extends InheritanceError {
73
+ constructor(message) {
74
+ super(message);
75
+ this.name = 'CircularInheritanceError';
76
+ }
77
+ }
78
+ export class MissingMappingRulesError extends CatalogError {
79
+ constructor(message) {
80
+ super(message);
81
+ this.name = 'MissingMappingRulesError';
82
+ }
83
+ }
84
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IACjC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,QAAQ;IACvC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,QAAQ;IAC5C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,QAAQ;IACvC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,gBAAgB;IACzD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,QAAQ;IACxC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,YAAY;IACtD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,YAAY;IACrD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED,MAAM,OAAO,0BAA2B,SAAQ,YAAY;IAC1D,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC3C,CAAC;CACF;AAED,MAAM,OAAO,wBAAyB,SAAQ,gBAAgB;IAC5D,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAED,MAAM,OAAO,wBAAyB,SAAQ,YAAY;IACxD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import { z } from 'zod';
2
+ import type { Catalog } from '../catalog/catalog.js';
3
+ export interface ExportOptions {
4
+ outputDir?: string;
5
+ includeDeprecated?: boolean;
6
+ }
7
+ /**
8
+ * Abstract base class for exporters (DEC-7.8).
9
+ * Each exporter declares key, name, optionsSchema, and export().
10
+ */
11
+ export declare abstract class Exporter {
12
+ abstract readonly key: string;
13
+ abstract readonly name: string;
14
+ abstract readonly optionsSchema: z.ZodType;
15
+ abstract export(catalog: Catalog, options?: ExportOptions): string;
16
+ }
17
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/exporters/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;GAGG;AACH,8BAAsB,QAAQ;IAC5B,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC;IAE3C,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM;CACnE"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Abstract base class for exporters (DEC-7.8).
3
+ * Each exporter declares key, name, optionsSchema, and export().
4
+ */
5
+ export class Exporter {
6
+ }
7
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/exporters/base.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,MAAM,OAAgB,QAAQ;CAM7B"}
@@ -0,0 +1,13 @@
1
+ import { z } from 'zod';
2
+ import type { Catalog } from '../catalog/catalog.js';
3
+ import { Exporter, type ExportOptions } from './base.js';
4
+ /**
5
+ * CSV exporter with reserved fields fixed + dynamic fields appended (DEC-7.3).
6
+ */
7
+ export declare class CsvExporter extends Exporter {
8
+ readonly key = "csv";
9
+ readonly name = "CSV";
10
+ readonly optionsSchema: z.ZodOptional<z.ZodObject<{}, z.core.$strip>>;
11
+ export(catalog: Catalog, options?: ExportOptions): string;
12
+ }
13
+ //# sourceMappingURL=csv-exporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csv-exporter.d.ts","sourceRoot":"","sources":["../../src/exporters/csv-exporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAGzD;;GAEG;AACH,qBAAa,WAAY,SAAQ,QAAQ;IACvC,QAAQ,CAAC,GAAG,SAAS;IACrB,QAAQ,CAAC,IAAI,SAAS;IACtB,QAAQ,CAAC,aAAa,gDAA2B;IAEjD,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM;CA+C1D"}
@@ -0,0 +1,73 @@
1
+ import { z } from 'zod';
2
+ import { Exporter } from './base.js';
3
+ import { RESERVED_FIELD_NAMES } from '../schema/reserved-fields.js';
4
+ /**
5
+ * CSV exporter with reserved fields fixed + dynamic fields appended (DEC-7.3).
6
+ */
7
+ export class CsvExporter extends Exporter {
8
+ key = 'csv';
9
+ name = 'CSV';
10
+ optionsSchema = z.object({}).optional();
11
+ export(catalog, options) {
12
+ const includeDeprecated = options?.includeDeprecated ?? false;
13
+ const elements = catalog.getAllElements()
14
+ .filter(e => includeDeprecated || e.status !== 'deprecated');
15
+ if (elements.length === 0)
16
+ return '';
17
+ // Fixed columns: reserved fields in stable order
18
+ const fixedColumns = [
19
+ 'qualified_id', 'id', 'document', 'category',
20
+ 'name', 'status', 'tags', 'maps_to', 'priority',
21
+ ];
22
+ // Dynamic columns: collect all unique dynamic field names across all elements
23
+ const dynamicColumns = new Set();
24
+ for (const el of elements) {
25
+ for (const key of Object.keys(el.data)) {
26
+ if (!RESERVED_FIELD_NAMES.has(key) && !fixedColumns.includes(key)) {
27
+ dynamicColumns.add(key);
28
+ }
29
+ }
30
+ }
31
+ const sortedDynamic = [...dynamicColumns].sort();
32
+ const allColumns = [...fixedColumns, ...sortedDynamic];
33
+ // Header row
34
+ const rows = [allColumns.join(',')];
35
+ // Data rows
36
+ for (const el of elements) {
37
+ const values = allColumns.map(col => {
38
+ let val;
39
+ switch (col) {
40
+ case 'qualified_id':
41
+ val = el.toLibraryId();
42
+ break;
43
+ case 'document':
44
+ val = el.documentPath;
45
+ break;
46
+ case 'category':
47
+ val = el.categoryName;
48
+ break;
49
+ case 'tags':
50
+ val = el.tags.join(';');
51
+ break;
52
+ case 'maps_to':
53
+ val = el.maps_to.join(';');
54
+ break;
55
+ default: val = el.data[col] ?? el.get(col) ?? '';
56
+ }
57
+ return csvEscape(val);
58
+ });
59
+ rows.push(values.join(','));
60
+ }
61
+ return rows.join('\n');
62
+ }
63
+ }
64
+ function csvEscape(value) {
65
+ if (value === undefined || value === null)
66
+ return '';
67
+ const str = typeof value === 'object' ? JSON.stringify(value) : String(value);
68
+ if (str.includes(',') || str.includes('"') || str.includes('\n')) {
69
+ return `"${str.replace(/"/g, '""')}"`;
70
+ }
71
+ return str;
72
+ }
73
+ //# sourceMappingURL=csv-exporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csv-exporter.js","sourceRoot":"","sources":["../../src/exporters/csv-exporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { z } from 'zod';
2
+ import type { Catalog } from '../catalog/catalog.js';
3
+ import { Exporter, type ExportOptions } from './base.js';
4
+ export declare class DotExporter extends Exporter {
5
+ readonly key = "dot";
6
+ readonly name = "Graphviz DOT";
7
+ readonly optionsSchema: z.ZodOptional<z.ZodObject<{
8
+ tier: z.ZodOptional<z.ZodNumber>;
9
+ }, z.core.$strip>>;
10
+ export(catalog: Catalog, options?: ExportOptions): string;
11
+ }
12
+ //# sourceMappingURL=dot-exporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dot-exporter.d.ts","sourceRoot":"","sources":["../../src/exporters/dot-exporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAEzD,qBAAa,WAAY,SAAQ,QAAQ;IACvC,QAAQ,CAAC,GAAG,SAAS;IACrB,QAAQ,CAAC,IAAI,kBAAkB;IAC/B,QAAQ,CAAC,aAAa;;uBAIR;IAEd,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM;CAqE1D"}
@@ -0,0 +1,72 @@
1
+ import { z } from 'zod';
2
+ import { Exporter } from './base.js';
3
+ export class DotExporter extends Exporter {
4
+ key = 'dot';
5
+ name = 'Graphviz DOT';
6
+ optionsSchema = z
7
+ .object({
8
+ tier: z.number().optional(),
9
+ })
10
+ .optional();
11
+ export(catalog, options) {
12
+ const includeDeprecated = options?.includeDeprecated ?? false;
13
+ const elements = catalog
14
+ .getAllElements()
15
+ .filter((e) => includeDeprecated || e.status === 'active');
16
+ // Generate DOT format (basic implementation — PNG rendering deferred until WASM dep available)
17
+ const lines = ['digraph gvp {', ' rankdir=BT;'];
18
+ // Nodes
19
+ for (const el of elements) {
20
+ const nodeId = el.toLibraryId().replace(/:/g, '__').replace(/-/g, '_');
21
+ const catDef = catalog.registry.getByName(el.categoryName);
22
+ const color = catDef?.color ?? '#CCCCCC';
23
+ lines.push(` ${nodeId} [label="${el.id}: ${el.name}" style=filled fillcolor="${color}"];`);
24
+ }
25
+ // Edges
26
+ for (const el of elements) {
27
+ const fromId = el.toLibraryId().replace(/:/g, '__').replace(/-/g, '_');
28
+ for (const ref of el.maps_to) {
29
+ const target = elements.find((e) => e.toLibraryId() === ref || e.hashKey() === ref);
30
+ if (target) {
31
+ const toId = target
32
+ .toLibraryId()
33
+ .replace(/:/g, '__')
34
+ .replace(/-/g, '_');
35
+ lines.push(` ${fromId} -> ${toId};`);
36
+ }
37
+ }
38
+ }
39
+ // Tier-based rank=same grouping (R8)
40
+ const tiers = new Map();
41
+ for (const el of elements) {
42
+ const catDef = catalog.registry.getByName(el.categoryName);
43
+ const exportOpts = catDef?.export_options?.dot;
44
+ if (exportOpts?.tier !== undefined) {
45
+ const nodeId = el.toLibraryId().replace(/:/g, '__').replace(/-/g, '_');
46
+ if (!tiers.has(exportOpts.tier))
47
+ tiers.set(exportOpts.tier, []);
48
+ tiers.get(exportOpts.tier).push(nodeId);
49
+ }
50
+ }
51
+ for (const [, nodes] of [...tiers.entries()].sort((a, b) => a[0] - b[0])) {
52
+ lines.push(` {rank=same; ${nodes.join('; ')};}`);
53
+ }
54
+ // Subgraph grouping per document
55
+ for (const doc of catalog.documents) {
56
+ const docElements = elements.filter(e => e.documentPath === doc.documentPath);
57
+ if (docElements.length > 0) {
58
+ const clusterId = doc.documentPath.replace(/[^a-zA-Z0-9]/g, '_');
59
+ lines.push(` subgraph cluster_${clusterId} {`);
60
+ lines.push(` label="${doc.name}";`);
61
+ for (const el of docElements) {
62
+ const nodeId = el.toLibraryId().replace(/:/g, '__').replace(/-/g, '_');
63
+ lines.push(` ${nodeId};`);
64
+ }
65
+ lines.push(' }');
66
+ }
67
+ }
68
+ lines.push('}');
69
+ return lines.join('\n');
70
+ }
71
+ }
72
+ //# sourceMappingURL=dot-exporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dot-exporter.js","sourceRoot":"","sources":["../../src/exporters/dot-exporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export { Exporter, type ExportOptions } from './base.js';
2
+ export { JsonExporter } from './json-exporter.js';
3
+ export { CsvExporter } from './csv-exporter.js';
4
+ export { MarkdownExporter } from './markdown-exporter.js';
5
+ export { DotExporter } from './dot-exporter.js';
6
+ export { SqliteExporter } from './sqlite-exporter.js';
7
+ export { createExporterRegistry } from './registry.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/exporters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,8 @@
1
+ export { Exporter } from './base.js';
2
+ export { JsonExporter } from './json-exporter.js';
3
+ export { CsvExporter } from './csv-exporter.js';
4
+ export { MarkdownExporter } from './markdown-exporter.js';
5
+ export { DotExporter } from './dot-exporter.js';
6
+ export { SqliteExporter } from './sqlite-exporter.js';
7
+ export { createExporterRegistry } from './registry.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/exporters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAsB,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { z } from 'zod';
2
+ import type { Catalog } from '../catalog/catalog.js';
3
+ import { Exporter, type ExportOptions } from './base.js';
4
+ /**
5
+ * Lossless JSON exporter (DEC-7.7, DEC-7.10).
6
+ * Includes all documents, elements, categories, and tags.
7
+ */
8
+ export declare class JsonExporter extends Exporter {
9
+ readonly key = "json";
10
+ readonly name = "JSON";
11
+ readonly optionsSchema: z.ZodOptional<z.ZodObject<{}, z.core.$strip>>;
12
+ export(catalog: Catalog, options?: ExportOptions): string;
13
+ }
14
+ //# sourceMappingURL=json-exporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-exporter.d.ts","sourceRoot":"","sources":["../../src/exporters/json-exporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAEzD;;;GAGG;AACH,qBAAa,YAAa,SAAQ,QAAQ;IACxC,QAAQ,CAAC,GAAG,UAAU;IACtB,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,aAAa,gDAA2B;IAEjD,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM;CA+B1D"}
@@ -0,0 +1,41 @@
1
+ import { z } from 'zod';
2
+ import { Exporter } from './base.js';
3
+ /**
4
+ * Lossless JSON exporter (DEC-7.7, DEC-7.10).
5
+ * Includes all documents, elements, categories, and tags.
6
+ */
7
+ export class JsonExporter extends Exporter {
8
+ key = 'json';
9
+ name = 'JSON';
10
+ optionsSchema = z.object({}).optional();
11
+ export(catalog, options) {
12
+ const includeDeprecated = options?.includeDeprecated ?? false;
13
+ const output = {
14
+ documents: catalog.documents.map(doc => ({
15
+ name: doc.name,
16
+ documentPath: doc.documentPath,
17
+ source: doc.source,
18
+ meta: {
19
+ ...doc.meta,
20
+ // Ensure lossless fields are always present (DEC-7.10)
21
+ inherits: doc.meta.inherits ?? null,
22
+ defaults: doc.meta.defaults ?? null,
23
+ definitions: doc.meta.definitions ?? null,
24
+ scope: doc.meta.scope ?? null,
25
+ },
26
+ elements: doc.getAllElements()
27
+ .filter(e => includeDeprecated || e.status !== 'deprecated')
28
+ .map(e => ({
29
+ ...e.data,
30
+ _category: e.categoryName,
31
+ _libraryId: e.toLibraryId(),
32
+ _canonicalId: e.toCanonicalId(),
33
+ })),
34
+ })),
35
+ categories: catalog.registry.categories,
36
+ tags: catalog.getTags(),
37
+ };
38
+ return JSON.stringify(output, null, 2);
39
+ }
40
+ }
41
+ //# sourceMappingURL=json-exporter.js.map