@ggts-sh/spec 0.43.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.
Files changed (679) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +75 -0
  3. package/dist/artifact.d.ts +11 -0
  4. package/dist/artifact.d.ts.map +1 -0
  5. package/dist/artifact.js +71 -0
  6. package/dist/artifact.js.map +1 -0
  7. package/dist/builder-core.d.ts +100 -0
  8. package/dist/builder-core.d.ts.map +1 -0
  9. package/dist/builder-core.js +176 -0
  10. package/dist/builder-core.js.map +1 -0
  11. package/dist/builder-data.d.ts +36 -0
  12. package/dist/builder-data.d.ts.map +1 -0
  13. package/dist/builder-data.js +123 -0
  14. package/dist/builder-data.js.map +1 -0
  15. package/dist/builder-geoms.d.ts +128 -0
  16. package/dist/builder-geoms.d.ts.map +1 -0
  17. package/dist/builder-geoms.js +221 -0
  18. package/dist/builder-geoms.js.map +1 -0
  19. package/dist/builder-options.d.ts +323 -0
  20. package/dist/builder-options.d.ts.map +1 -0
  21. package/dist/builder-options.js +2 -0
  22. package/dist/builder-options.js.map +1 -0
  23. package/dist/builder-scales.d.ts +160 -0
  24. package/dist/builder-scales.d.ts.map +1 -0
  25. package/dist/builder-scales.js +322 -0
  26. package/dist/builder-scales.js.map +1 -0
  27. package/dist/builder.d.ts +242 -0
  28. package/dist/builder.d.ts.map +1 -0
  29. package/dist/builder.js +42 -0
  30. package/dist/builder.js.map +1 -0
  31. package/dist/capabilities-data.d.ts +72 -0
  32. package/dist/capabilities-data.d.ts.map +1 -0
  33. package/dist/capabilities-data.js +337 -0
  34. package/dist/capabilities-data.js.map +1 -0
  35. package/dist/capabilities-helpers.d.ts +31 -0
  36. package/dist/capabilities-helpers.d.ts.map +1 -0
  37. package/dist/capabilities-helpers.js +41 -0
  38. package/dist/capabilities-helpers.js.map +1 -0
  39. package/dist/capabilities.d.ts +22 -0
  40. package/dist/capabilities.d.ts.map +1 -0
  41. package/dist/capabilities.js +154 -0
  42. package/dist/capabilities.js.map +1 -0
  43. package/dist/coord-helpers.d.ts +102 -0
  44. package/dist/coord-helpers.d.ts.map +1 -0
  45. package/dist/coord-helpers.js +90 -0
  46. package/dist/coord-helpers.js.map +1 -0
  47. package/dist/coord-reference-build.d.ts +50 -0
  48. package/dist/coord-reference-build.d.ts.map +1 -0
  49. package/dist/coord-reference-build.js +211 -0
  50. package/dist/coord-reference-build.js.map +1 -0
  51. package/dist/coord-reference.d.ts +52 -0
  52. package/dist/coord-reference.d.ts.map +1 -0
  53. package/dist/coord-reference.js +27 -0
  54. package/dist/coord-reference.js.map +1 -0
  55. package/dist/error-catalog.d.ts +258 -0
  56. package/dist/error-catalog.d.ts.map +1 -0
  57. package/dist/error-catalog.js +235 -0
  58. package/dist/error-catalog.js.map +1 -0
  59. package/dist/error-prose-shared.d.ts +100 -0
  60. package/dist/error-prose-shared.d.ts.map +1 -0
  61. package/dist/error-prose-shared.js +95 -0
  62. package/dist/error-prose-shared.js.map +1 -0
  63. package/dist/errors.d.ts +39 -0
  64. package/dist/errors.d.ts.map +1 -0
  65. package/dist/errors.js +52 -0
  66. package/dist/errors.js.map +1 -0
  67. package/dist/generated/coord-reference-data.d.ts +189 -0
  68. package/dist/generated/coord-reference-data.d.ts.map +1 -0
  69. package/dist/generated/coord-reference-data.js +212 -0
  70. package/dist/generated/coord-reference-data.js.map +1 -0
  71. package/dist/generated/geom-param-keys.d.ts +58 -0
  72. package/dist/generated/geom-param-keys.d.ts.map +1 -0
  73. package/dist/generated/geom-param-keys.js +223 -0
  74. package/dist/generated/geom-param-keys.js.map +1 -0
  75. package/dist/generated/geom-reference-data.d.ts +2377 -0
  76. package/dist/generated/geom-reference-data.d.ts.map +1 -0
  77. package/dist/generated/geom-reference-data.js +2790 -0
  78. package/dist/generated/geom-reference-data.js.map +1 -0
  79. package/dist/generated/guide-reference-data.d.ts +219 -0
  80. package/dist/generated/guide-reference-data.d.ts.map +1 -0
  81. package/dist/generated/guide-reference-data.js +253 -0
  82. package/dist/generated/guide-reference-data.js.map +1 -0
  83. package/dist/generated/plot-spec-validator.d.ts +2 -0
  84. package/dist/generated/plot-spec-validator.d.ts.map +1 -0
  85. package/dist/generated/plot-spec-validator.js +6274 -0
  86. package/dist/generated/plot-spec-validator.js.map +1 -0
  87. package/dist/generated/position-reference-data.d.ts +82 -0
  88. package/dist/generated/position-reference-data.d.ts.map +1 -0
  89. package/dist/generated/position-reference-data.js +181 -0
  90. package/dist/generated/position-reference-data.js.map +1 -0
  91. package/dist/generated/scale-reference-data.d.ts +8366 -0
  92. package/dist/generated/scale-reference-data.d.ts.map +1 -0
  93. package/dist/generated/scale-reference-data.js +9821 -0
  94. package/dist/generated/scale-reference-data.js.map +1 -0
  95. package/dist/generated/stat-reference-data.d.ts +241 -0
  96. package/dist/generated/stat-reference-data.d.ts.map +1 -0
  97. package/dist/generated/stat-reference-data.js +311 -0
  98. package/dist/generated/stat-reference-data.js.map +1 -0
  99. package/dist/geom-params-build.d.ts +3 -0
  100. package/dist/geom-params-build.d.ts.map +1 -0
  101. package/dist/geom-params-build.js +80 -0
  102. package/dist/geom-params-build.js.map +1 -0
  103. package/dist/geom-params.d.ts +13 -0
  104. package/dist/geom-params.d.ts.map +1 -0
  105. package/dist/geom-params.js +7 -0
  106. package/dist/geom-params.js.map +1 -0
  107. package/dist/geom-reference-build.d.ts +29 -0
  108. package/dist/geom-reference-build.d.ts.map +1 -0
  109. package/dist/geom-reference-build.js +221 -0
  110. package/dist/geom-reference-build.js.map +1 -0
  111. package/dist/geom-reference.d.ts +52 -0
  112. package/dist/geom-reference.d.ts.map +1 -0
  113. package/dist/geom-reference.js +72 -0
  114. package/dist/geom-reference.js.map +1 -0
  115. package/dist/guide-helpers.d.ts +20 -0
  116. package/dist/guide-helpers.d.ts.map +1 -0
  117. package/dist/guide-helpers.js +25 -0
  118. package/dist/guide-helpers.js.map +1 -0
  119. package/dist/guide-reference-build.d.ts +42 -0
  120. package/dist/guide-reference-build.d.ts.map +1 -0
  121. package/dist/guide-reference-build.js +180 -0
  122. package/dist/guide-reference-build.js.map +1 -0
  123. package/dist/guide-reference.d.ts +48 -0
  124. package/dist/guide-reference.d.ts.map +1 -0
  125. package/dist/guide-reference.js +32 -0
  126. package/dist/guide-reference.js.map +1 -0
  127. package/dist/hue-grey-palettes.d.ts +15 -0
  128. package/dist/hue-grey-palettes.d.ts.map +1 -0
  129. package/dist/hue-grey-palettes.js +77 -0
  130. package/dist/hue-grey-palettes.js.map +1 -0
  131. package/dist/index.d.ts +364 -0
  132. package/dist/index.d.ts.map +1 -0
  133. package/dist/index.js +225 -0
  134. package/dist/index.js.map +1 -0
  135. package/dist/lint-catalog.d.ts +47 -0
  136. package/dist/lint-catalog.d.ts.map +1 -0
  137. package/dist/lint-catalog.js +39 -0
  138. package/dist/lint-catalog.js.map +1 -0
  139. package/dist/lint-layer-rules.d.ts +18 -0
  140. package/dist/lint-layer-rules.d.ts.map +1 -0
  141. package/dist/lint-layer-rules.js +145 -0
  142. package/dist/lint-layer-rules.js.map +1 -0
  143. package/dist/lint-scale-rules.d.ts +8 -0
  144. package/dist/lint-scale-rules.d.ts.map +1 -0
  145. package/dist/lint-scale-rules.js +254 -0
  146. package/dist/lint-scale-rules.js.map +1 -0
  147. package/dist/lint.d.ts +62 -0
  148. package/dist/lint.d.ts.map +1 -0
  149. package/dist/lint.js +57 -0
  150. package/dist/lint.js.map +1 -0
  151. package/dist/normalize-coord.d.ts +8 -0
  152. package/dist/normalize-coord.d.ts.map +1 -0
  153. package/dist/normalize-coord.js +123 -0
  154. package/dist/normalize-coord.js.map +1 -0
  155. package/dist/normalize-input-layers-marks.d.ts +208 -0
  156. package/dist/normalize-input-layers-marks.d.ts.map +1 -0
  157. package/dist/normalize-input-layers-marks.js +2 -0
  158. package/dist/normalize-input-layers-marks.js.map +1 -0
  159. package/dist/normalize-input-layers-special.d.ts +131 -0
  160. package/dist/normalize-input-layers-special.d.ts.map +1 -0
  161. package/dist/normalize-input-layers-special.js +2 -0
  162. package/dist/normalize-input-layers-special.js.map +1 -0
  163. package/dist/normalize-input.d.ts +81 -0
  164. package/dist/normalize-input.d.ts.map +1 -0
  165. package/dist/normalize-input.js +2 -0
  166. package/dist/normalize-input.js.map +1 -0
  167. package/dist/normalize-paint.d.ts +8 -0
  168. package/dist/normalize-paint.d.ts.map +1 -0
  169. package/dist/normalize-paint.js +83 -0
  170. package/dist/normalize-paint.js.map +1 -0
  171. package/dist/normalize-scales.d.ts +7 -0
  172. package/dist/normalize-scales.d.ts.map +1 -0
  173. package/dist/normalize-scales.js +90 -0
  174. package/dist/normalize-scales.js.map +1 -0
  175. package/dist/normalize.d.ts +46 -0
  176. package/dist/normalize.d.ts.map +1 -0
  177. package/dist/normalize.js +279 -0
  178. package/dist/normalize.js.map +1 -0
  179. package/dist/paint-helpers.d.ts +45 -0
  180. package/dist/paint-helpers.d.ts.map +1 -0
  181. package/dist/paint-helpers.js +48 -0
  182. package/dist/paint-helpers.js.map +1 -0
  183. package/dist/pipeline-error-catalog.d.ts +319 -0
  184. package/dist/pipeline-error-catalog.d.ts.map +1 -0
  185. package/dist/pipeline-error-catalog.js +260 -0
  186. package/dist/pipeline-error-catalog.js.map +1 -0
  187. package/dist/portability-check.d.ts +35 -0
  188. package/dist/portability-check.d.ts.map +1 -0
  189. package/dist/portability-check.js +121 -0
  190. package/dist/portability-check.js.map +1 -0
  191. package/dist/portability-lossy.d.ts +19 -0
  192. package/dist/portability-lossy.d.ts.map +1 -0
  193. package/dist/portability-lossy.js +65 -0
  194. package/dist/portability-lossy.js.map +1 -0
  195. package/dist/portability.d.ts +23 -0
  196. package/dist/portability.d.ts.map +1 -0
  197. package/dist/portability.js +23 -0
  198. package/dist/portability.js.map +1 -0
  199. package/dist/portable-builder.d.ts +215 -0
  200. package/dist/portable-builder.d.ts.map +1 -0
  201. package/dist/portable-builder.js +27 -0
  202. package/dist/portable-builder.js.map +1 -0
  203. package/dist/portable-entry.d.ts +16 -0
  204. package/dist/portable-entry.d.ts.map +1 -0
  205. package/dist/portable-entry.js +14 -0
  206. package/dist/portable-entry.js.map +1 -0
  207. package/dist/position-reference-build.d.ts +29 -0
  208. package/dist/position-reference-build.d.ts.map +1 -0
  209. package/dist/position-reference-build.js +115 -0
  210. package/dist/position-reference-build.js.map +1 -0
  211. package/dist/position-reference.d.ts +34 -0
  212. package/dist/position-reference.d.ts.map +1 -0
  213. package/dist/position-reference.js +19 -0
  214. package/dist/position-reference.js.map +1 -0
  215. package/dist/runtime.d.ts +139 -0
  216. package/dist/runtime.d.ts.map +1 -0
  217. package/dist/runtime.js +2 -0
  218. package/dist/runtime.js.map +1 -0
  219. package/dist/scale-color-helpers.d.ts +121 -0
  220. package/dist/scale-color-helpers.d.ts.map +1 -0
  221. package/dist/scale-color-helpers.js +188 -0
  222. package/dist/scale-color-helpers.js.map +1 -0
  223. package/dist/scale-color-hue-grey.d.ts +52 -0
  224. package/dist/scale-color-hue-grey.d.ts.map +1 -0
  225. package/dist/scale-color-hue-grey.js +60 -0
  226. package/dist/scale-color-hue-grey.js.map +1 -0
  227. package/dist/scale-color-stops.d.ts +85 -0
  228. package/dist/scale-color-stops.d.ts.map +1 -0
  229. package/dist/scale-color-stops.js +87 -0
  230. package/dist/scale-color-stops.js.map +1 -0
  231. package/dist/scale-color-viridis.d.ts +52 -0
  232. package/dist/scale-color-viridis.d.ts.map +1 -0
  233. package/dist/scale-color-viridis.js +68 -0
  234. package/dist/scale-color-viridis.js.map +1 -0
  235. package/dist/scale-helpers.d.ts +20 -0
  236. package/dist/scale-helpers.d.ts.map +1 -0
  237. package/dist/scale-helpers.js +20 -0
  238. package/dist/scale-helpers.js.map +1 -0
  239. package/dist/scale-multi-helpers.d.ts +61 -0
  240. package/dist/scale-multi-helpers.d.ts.map +1 -0
  241. package/dist/scale-multi-helpers.js +147 -0
  242. package/dist/scale-multi-helpers.js.map +1 -0
  243. package/dist/scale-position-helpers.d.ts +81 -0
  244. package/dist/scale-position-helpers.d.ts.map +1 -0
  245. package/dist/scale-position-helpers.js +133 -0
  246. package/dist/scale-position-helpers.js.map +1 -0
  247. package/dist/scale-reference-build.d.ts +50 -0
  248. package/dist/scale-reference-build.d.ts.map +1 -0
  249. package/dist/scale-reference-build.js +147 -0
  250. package/dist/scale-reference-build.js.map +1 -0
  251. package/dist/scale-reference-classify-color.d.ts +11 -0
  252. package/dist/scale-reference-classify-color.d.ts.map +1 -0
  253. package/dist/scale-reference-classify-color.js +292 -0
  254. package/dist/scale-reference-classify-color.js.map +1 -0
  255. package/dist/scale-reference-classify-position.d.ts +10 -0
  256. package/dist/scale-reference-classify-position.d.ts.map +1 -0
  257. package/dist/scale-reference-classify-position.js +137 -0
  258. package/dist/scale-reference-classify-position.js.map +1 -0
  259. package/dist/scale-reference-classify-style.d.ts +10 -0
  260. package/dist/scale-reference-classify-style.d.ts.map +1 -0
  261. package/dist/scale-reference-classify-style.js +194 -0
  262. package/dist/scale-reference-classify-style.js.map +1 -0
  263. package/dist/scale-reference-classify-support.d.ts +37 -0
  264. package/dist/scale-reference-classify-support.d.ts.map +1 -0
  265. package/dist/scale-reference-classify-support.js +206 -0
  266. package/dist/scale-reference-classify-support.js.map +1 -0
  267. package/dist/scale-reference.d.ts +80 -0
  268. package/dist/scale-reference.d.ts.map +1 -0
  269. package/dist/scale-reference.js +85 -0
  270. package/dist/scale-reference.js.map +1 -0
  271. package/dist/scale-style-helpers.d.ts +158 -0
  272. package/dist/scale-style-helpers.d.ts.map +1 -0
  273. package/dist/scale-style-helpers.js +197 -0
  274. package/dist/scale-style-helpers.js.map +1 -0
  275. package/dist/schema-catalog.d.ts +62 -0
  276. package/dist/schema-catalog.d.ts.map +1 -0
  277. package/dist/schema-catalog.js +208 -0
  278. package/dist/schema-catalog.js.map +1 -0
  279. package/dist/schema-declarations.d.ts +1585 -0
  280. package/dist/schema-declarations.d.ts.map +1 -0
  281. package/dist/schema-declarations.js +51 -0
  282. package/dist/schema-declarations.js.map +1 -0
  283. package/dist/schema-decls-data.d.ts +58 -0
  284. package/dist/schema-decls-data.d.ts.map +1 -0
  285. package/dist/schema-decls-data.js +151 -0
  286. package/dist/schema-decls-data.js.map +1 -0
  287. package/dist/schema-decls-guides-theme.d.ts +166 -0
  288. package/dist/schema-decls-guides-theme.d.ts.map +1 -0
  289. package/dist/schema-decls-guides-theme.js +251 -0
  290. package/dist/schema-decls-guides-theme.js.map +1 -0
  291. package/dist/schema-decls-layers-col-boxplot.d.ts +118 -0
  292. package/dist/schema-decls-layers-col-boxplot.d.ts.map +1 -0
  293. package/dist/schema-decls-layers-col-boxplot.js +239 -0
  294. package/dist/schema-decls-layers-col-boxplot.js.map +1 -0
  295. package/dist/schema-decls-layers-count-pointrange.d.ts +89 -0
  296. package/dist/schema-decls-layers-count-pointrange.d.ts.map +1 -0
  297. package/dist/schema-decls-layers-count-pointrange.js +190 -0
  298. package/dist/schema-decls-layers-count-pointrange.js.map +1 -0
  299. package/dist/schema-decls-layers-crossbar-jitter.d.ts +129 -0
  300. package/dist/schema-decls-layers-crossbar-jitter.d.ts.map +1 -0
  301. package/dist/schema-decls-layers-crossbar-jitter.js +255 -0
  302. package/dist/schema-decls-layers-crossbar-jitter.js.map +1 -0
  303. package/dist/schema-decls-layers-point-path.d.ts +49 -0
  304. package/dist/schema-decls-layers-point-path.d.ts.map +1 -0
  305. package/dist/schema-decls-layers-point-path.js +156 -0
  306. package/dist/schema-decls-layers-point-path.js.map +1 -0
  307. package/dist/schema-decls-layers-sf-blank.d.ts +89 -0
  308. package/dist/schema-decls-layers-sf-blank.d.ts.map +1 -0
  309. package/dist/schema-decls-layers-sf-blank.js +254 -0
  310. package/dist/schema-decls-layers-sf-blank.js.map +1 -0
  311. package/dist/schema-decls-layers-text-map.d.ts +80 -0
  312. package/dist/schema-decls-layers-text-map.d.ts.map +1 -0
  313. package/dist/schema-decls-layers-text-map.js +151 -0
  314. package/dist/schema-decls-layers-text-map.js.map +1 -0
  315. package/dist/schema-decls-paint.d.ts +39 -0
  316. package/dist/schema-decls-paint.d.ts.map +1 -0
  317. package/dist/schema-decls-paint.js +95 -0
  318. package/dist/schema-decls-paint.js.map +1 -0
  319. package/dist/schema-decls-params-area-abline.d.ts +85 -0
  320. package/dist/schema-decls-params-area-abline.d.ts.map +1 -0
  321. package/dist/schema-decls-params-area-abline.js +259 -0
  322. package/dist/schema-decls-params-area-abline.js.map +1 -0
  323. package/dist/schema-decls-params-col-contour.d.ts +61 -0
  324. package/dist/schema-decls-params-col-contour.d.ts.map +1 -0
  325. package/dist/schema-decls-params-col-contour.js +202 -0
  326. package/dist/schema-decls-params-col-contour.js.map +1 -0
  327. package/dist/schema-decls-params-curve-label.d.ts +64 -0
  328. package/dist/schema-decls-params-curve-label.d.ts.map +1 -0
  329. package/dist/schema-decls-params-curve-label.js +204 -0
  330. package/dist/schema-decls-params-curve-label.js.map +1 -0
  331. package/dist/schema-decls-params-errorbar-position.d.ts +83 -0
  332. package/dist/schema-decls-params-errorbar-position.d.ts.map +1 -0
  333. package/dist/schema-decls-params-errorbar-position.js +264 -0
  334. package/dist/schema-decls-params-errorbar-position.js.map +1 -0
  335. package/dist/schema-decls-params-point-path.d.ts +61 -0
  336. package/dist/schema-decls-params-point-path.d.ts.map +1 -0
  337. package/dist/schema-decls-params-point-path.js +240 -0
  338. package/dist/schema-decls-params-point-path.js.map +1 -0
  339. package/dist/schema-decls-params-violin-summary.d.ts +78 -0
  340. package/dist/schema-decls-params-violin-summary.d.ts.map +1 -0
  341. package/dist/schema-decls-params-violin-summary.js +272 -0
  342. package/dist/schema-decls-params-violin-summary.js.map +1 -0
  343. package/dist/schema-decls-plot.d.ts +80 -0
  344. package/dist/schema-decls-plot.d.ts.map +1 -0
  345. package/dist/schema-decls-plot.js +222 -0
  346. package/dist/schema-decls-plot.js.map +1 -0
  347. package/dist/schema-decls-scales-guides.d.ts +291 -0
  348. package/dist/schema-decls-scales-guides.d.ts.map +1 -0
  349. package/dist/schema-decls-scales-guides.js +189 -0
  350. package/dist/schema-decls-scales-guides.js.map +1 -0
  351. package/dist/schema-decls-scales.d.ts +124 -0
  352. package/dist/schema-decls-scales.d.ts.map +1 -0
  353. package/dist/schema-decls-scales.js +279 -0
  354. package/dist/schema-decls-scales.js.map +1 -0
  355. package/dist/schema-imports.d.ts +1679 -0
  356. package/dist/schema-imports.d.ts.map +1 -0
  357. package/dist/schema-imports.js +104 -0
  358. package/dist/schema-imports.js.map +1 -0
  359. package/dist/schema-name-schemas.d.ts +18 -0
  360. package/dist/schema-name-schemas.d.ts.map +1 -0
  361. package/dist/schema-name-schemas.js +13 -0
  362. package/dist/schema-name-schemas.js.map +1 -0
  363. package/dist/schema-names.d.ts +53 -0
  364. package/dist/schema-names.d.ts.map +1 -0
  365. package/dist/schema-names.js +229 -0
  366. package/dist/schema-names.js.map +1 -0
  367. package/dist/schema-types.d.ts +336 -0
  368. package/dist/schema-types.d.ts.map +1 -0
  369. package/dist/schema-types.js +10 -0
  370. package/dist/schema-types.js.map +1 -0
  371. package/dist/schema.d.ts +38 -0
  372. package/dist/schema.d.ts.map +1 -0
  373. package/dist/schema.js +34 -0
  374. package/dist/schema.js.map +1 -0
  375. package/dist/stat-reference-build.d.ts +24 -0
  376. package/dist/stat-reference-build.d.ts.map +1 -0
  377. package/dist/stat-reference-build.js +86 -0
  378. package/dist/stat-reference-build.js.map +1 -0
  379. package/dist/stat-reference.d.ts +33 -0
  380. package/dist/stat-reference.d.ts.map +1 -0
  381. package/dist/stat-reference.js +19 -0
  382. package/dist/stat-reference.js.map +1 -0
  383. package/dist/structural-gate.d.ts +15 -0
  384. package/dist/structural-gate.d.ts.map +1 -0
  385. package/dist/structural-gate.js +34 -0
  386. package/dist/structural-gate.js.map +1 -0
  387. package/dist/temporal-column.d.ts +33 -0
  388. package/dist/temporal-column.d.ts.map +1 -0
  389. package/dist/temporal-column.js +247 -0
  390. package/dist/temporal-column.js.map +1 -0
  391. package/dist/temporal-guides.d.ts +11 -0
  392. package/dist/temporal-guides.d.ts.map +1 -0
  393. package/dist/temporal-guides.js +11 -0
  394. package/dist/temporal-guides.js.map +1 -0
  395. package/dist/temporal-interval-schema.d.ts +9 -0
  396. package/dist/temporal-interval-schema.d.ts.map +1 -0
  397. package/dist/temporal-interval-schema.js +25 -0
  398. package/dist/temporal-interval-schema.js.map +1 -0
  399. package/dist/temporal-interval.d.ts +29 -0
  400. package/dist/temporal-interval.d.ts.map +1 -0
  401. package/dist/temporal-interval.js +122 -0
  402. package/dist/temporal-interval.js.map +1 -0
  403. package/dist/temporal-parse-core.d.ts +96 -0
  404. package/dist/temporal-parse-core.d.ts.map +1 -0
  405. package/dist/temporal-parse-core.js +235 -0
  406. package/dist/temporal-parse-core.js.map +1 -0
  407. package/dist/temporal-parse-format.d.ts +13 -0
  408. package/dist/temporal-parse-format.d.ts.map +1 -0
  409. package/dist/temporal-parse-format.js +180 -0
  410. package/dist/temporal-parse-format.js.map +1 -0
  411. package/dist/temporal-parse-schema.d.ts +11 -0
  412. package/dist/temporal-parse-schema.d.ts.map +1 -0
  413. package/dist/temporal-parse-schema.js +23 -0
  414. package/dist/temporal-parse-schema.js.map +1 -0
  415. package/dist/temporal-parse.d.ts +18 -0
  416. package/dist/temporal-parse.d.ts.map +1 -0
  417. package/dist/temporal-parse.js +183 -0
  418. package/dist/temporal-parse.js.map +1 -0
  419. package/dist/temporal-polyfill.d.ts +3 -0
  420. package/dist/temporal-polyfill.d.ts.map +1 -0
  421. package/dist/temporal-polyfill.js +25 -0
  422. package/dist/temporal-polyfill.js.map +1 -0
  423. package/dist/temporal-ticks.d.ts +20 -0
  424. package/dist/temporal-ticks.d.ts.map +1 -0
  425. package/dist/temporal-ticks.js +246 -0
  426. package/dist/temporal-ticks.js.map +1 -0
  427. package/dist/temporal.d.ts +109 -0
  428. package/dist/temporal.d.ts.map +1 -0
  429. package/dist/temporal.js +73 -0
  430. package/dist/temporal.js.map +1 -0
  431. package/dist/validate-data-checks-color-temporal.d.ts +58 -0
  432. package/dist/validate-data-checks-color-temporal.d.ts.map +1 -0
  433. package/dist/validate-data-checks-color-temporal.js +168 -0
  434. package/dist/validate-data-checks-color-temporal.js.map +1 -0
  435. package/dist/validate-data-checks-color.d.ts +28 -0
  436. package/dist/validate-data-checks-color.d.ts.map +1 -0
  437. package/dist/validate-data-checks-color.js +296 -0
  438. package/dist/validate-data-checks-color.js.map +1 -0
  439. package/dist/validate-data-checks-layer.d.ts +37 -0
  440. package/dist/validate-data-checks-layer.d.ts.map +1 -0
  441. package/dist/validate-data-checks-layer.js +343 -0
  442. package/dist/validate-data-checks-layer.js.map +1 -0
  443. package/dist/validate-data-checks-position.d.ts +45 -0
  444. package/dist/validate-data-checks-position.d.ts.map +1 -0
  445. package/dist/validate-data-checks-position.js +204 -0
  446. package/dist/validate-data-checks-position.js.map +1 -0
  447. package/dist/validate-data-checks-style-finite.d.ts +24 -0
  448. package/dist/validate-data-checks-style-finite.d.ts.map +1 -0
  449. package/dist/validate-data-checks-style-finite.js +40 -0
  450. package/dist/validate-data-checks-style-finite.js.map +1 -0
  451. package/dist/validate-data-checks-style-numeric.d.ts +26 -0
  452. package/dist/validate-data-checks-style-numeric.d.ts.map +1 -0
  453. package/dist/validate-data-checks-style-numeric.js +327 -0
  454. package/dist/validate-data-checks-style-numeric.js.map +1 -0
  455. package/dist/validate-data-checks-style.d.ts +14 -0
  456. package/dist/validate-data-checks-style.d.ts.map +1 -0
  457. package/dist/validate-data-checks-style.js +14 -0
  458. package/dist/validate-data-checks-style.js.map +1 -0
  459. package/dist/validate-data-checks-temporal.d.ts +57 -0
  460. package/dist/validate-data-checks-temporal.d.ts.map +1 -0
  461. package/dist/validate-data-checks-temporal.js +83 -0
  462. package/dist/validate-data-checks-temporal.js.map +1 -0
  463. package/dist/validate-data-checks.d.ts +31 -0
  464. package/dist/validate-data-checks.d.ts.map +1 -0
  465. package/dist/validate-data-checks.js +110 -0
  466. package/dist/validate-data-checks.js.map +1 -0
  467. package/dist/validate-data-evidence.d.ts +69 -0
  468. package/dist/validate-data-evidence.d.ts.map +1 -0
  469. package/dist/validate-data-evidence.js +329 -0
  470. package/dist/validate-data-evidence.js.map +1 -0
  471. package/dist/validate-data.d.ts +73 -0
  472. package/dist/validate-data.d.ts.map +1 -0
  473. package/dist/validate-data.js +30 -0
  474. package/dist/validate-data.js.map +1 -0
  475. package/dist/validate-map-errors.d.ts +32 -0
  476. package/dist/validate-map-errors.d.ts.map +1 -0
  477. package/dist/validate-map-errors.js +76 -0
  478. package/dist/validate-map-errors.js.map +1 -0
  479. package/dist/validate-map-forms.d.ts +43 -0
  480. package/dist/validate-map-forms.d.ts.map +1 -0
  481. package/dist/validate-map-forms.js +125 -0
  482. package/dist/validate-map-forms.js.map +1 -0
  483. package/dist/validate-map-path-keywords.d.ts +11 -0
  484. package/dist/validate-map-path-keywords.d.ts.map +1 -0
  485. package/dist/validate-map-path-keywords.js +95 -0
  486. package/dist/validate-map-path-keywords.js.map +1 -0
  487. package/dist/validate-map-path-unions.d.ts +27 -0
  488. package/dist/validate-map-path-unions.d.ts.map +1 -0
  489. package/dist/validate-map-path-unions.js +200 -0
  490. package/dist/validate-map-path-unions.js.map +1 -0
  491. package/dist/validate-schema-shape.d.ts +69 -0
  492. package/dist/validate-schema-shape.d.ts.map +1 -0
  493. package/dist/validate-schema-shape.js +156 -0
  494. package/dist/validate-schema-shape.js.map +1 -0
  495. package/dist/validate-schema-walk.d.ts +34 -0
  496. package/dist/validate-schema-walk.d.ts.map +1 -0
  497. package/dist/validate-schema-walk.js +216 -0
  498. package/dist/validate-schema-walk.js.map +1 -0
  499. package/dist/validate-structure-facet.d.ts +8 -0
  500. package/dist/validate-structure-facet.d.ts.map +1 -0
  501. package/dist/validate-structure-facet.js +67 -0
  502. package/dist/validate-structure-facet.js.map +1 -0
  503. package/dist/validate-structure-layer-computed-y.d.ts +14 -0
  504. package/dist/validate-structure-layer-computed-y.d.ts.map +1 -0
  505. package/dist/validate-structure-layer-computed-y.js +70 -0
  506. package/dist/validate-structure-layer-computed-y.js.map +1 -0
  507. package/dist/validate-structure-layer-ribbon.d.ts +8 -0
  508. package/dist/validate-structure-layer-ribbon.d.ts.map +1 -0
  509. package/dist/validate-structure-layer-ribbon.js +36 -0
  510. package/dist/validate-structure-layer-ribbon.js.map +1 -0
  511. package/dist/validate-structure-layer-rule.d.ts +14 -0
  512. package/dist/validate-structure-layer-rule.d.ts.map +1 -0
  513. package/dist/validate-structure-layer-rule.js +90 -0
  514. package/dist/validate-structure-layer-rule.js.map +1 -0
  515. package/dist/validate-structure-layer-shared.d.ts +12 -0
  516. package/dist/validate-structure-layer-shared.d.ts.map +1 -0
  517. package/dist/validate-structure-layer-shared.js +17 -0
  518. package/dist/validate-structure-layer-shared.js.map +1 -0
  519. package/dist/validate-structure-layers.d.ts +12 -0
  520. package/dist/validate-structure-layers.d.ts.map +1 -0
  521. package/dist/validate-structure-layers.js +292 -0
  522. package/dist/validate-structure-layers.js.map +1 -0
  523. package/dist/validate-structure-paint.d.ts +12 -0
  524. package/dist/validate-structure-paint.d.ts.map +1 -0
  525. package/dist/validate-structure-paint.js +87 -0
  526. package/dist/validate-structure-paint.js.map +1 -0
  527. package/dist/validate-structure-scales.d.ts +10 -0
  528. package/dist/validate-structure-scales.d.ts.map +1 -0
  529. package/dist/validate-structure-scales.js +242 -0
  530. package/dist/validate-structure-scales.js.map +1 -0
  531. package/dist/validate-structure-style-bins.d.ts +17 -0
  532. package/dist/validate-structure-style-bins.d.ts.map +1 -0
  533. package/dist/validate-structure-style-bins.js +150 -0
  534. package/dist/validate-structure-style-bins.js.map +1 -0
  535. package/dist/validate-structure.d.ts +16 -0
  536. package/dist/validate-structure.d.ts.map +1 -0
  537. package/dist/validate-structure.js +16 -0
  538. package/dist/validate-structure.js.map +1 -0
  539. package/dist/validate.d.ts +24 -0
  540. package/dist/validate.d.ts.map +1 -0
  541. package/dist/validate.js +178 -0
  542. package/dist/validate.js.map +1 -0
  543. package/package.json +59 -0
  544. package/schema/v0.json +9618 -0
  545. package/src/artifact.ts +81 -0
  546. package/src/builder-core.ts +276 -0
  547. package/src/builder-data.ts +156 -0
  548. package/src/builder-geoms.ts +290 -0
  549. package/src/builder-options.ts +428 -0
  550. package/src/builder-scales.ts +443 -0
  551. package/src/builder.ts +125 -0
  552. package/src/capabilities-data.ts +336 -0
  553. package/src/capabilities-helpers.ts +54 -0
  554. package/src/capabilities.ts +159 -0
  555. package/src/coord-helpers.ts +177 -0
  556. package/src/coord-reference-build.ts +283 -0
  557. package/src/coord-reference.ts +75 -0
  558. package/src/error-catalog.ts +253 -0
  559. package/src/error-prose-shared.ts +106 -0
  560. package/src/errors.ts +87 -0
  561. package/src/generated/coord-reference-data.ts +235 -0
  562. package/src/generated/geom-param-keys.ts +222 -0
  563. package/src/generated/geom-reference-data.ts +3024 -0
  564. package/src/generated/guide-reference-data.ts +284 -0
  565. package/src/generated/plot-spec-validator.ts +7335 -0
  566. package/src/generated/position-reference-data.ts +191 -0
  567. package/src/generated/scale-reference-data.ts +10665 -0
  568. package/src/generated/stat-reference-data.ts +339 -0
  569. package/src/geom-params-build.ts +92 -0
  570. package/src/geom-params.ts +14 -0
  571. package/src/geom-reference-build.ts +292 -0
  572. package/src/geom-reference.ts +127 -0
  573. package/src/guide-helpers.ts +44 -0
  574. package/src/guide-reference-build.ts +249 -0
  575. package/src/guide-reference.ts +76 -0
  576. package/src/hue-grey-palettes.ts +82 -0
  577. package/src/index.ts +400 -0
  578. package/src/lint-catalog.ts +57 -0
  579. package/src/lint-layer-rules.ts +175 -0
  580. package/src/lint-scale-rules.ts +285 -0
  581. package/src/lint.ts +126 -0
  582. package/src/normalize-coord.ts +126 -0
  583. package/src/normalize-input-layers-marks.ts +276 -0
  584. package/src/normalize-input-layers-special.ts +252 -0
  585. package/src/normalize-input.ts +154 -0
  586. package/src/normalize-paint.ts +98 -0
  587. package/src/normalize-scales.ts +108 -0
  588. package/src/normalize.ts +403 -0
  589. package/src/paint-helpers.ts +98 -0
  590. package/src/pipeline-error-catalog.ts +278 -0
  591. package/src/portability-check.ts +155 -0
  592. package/src/portability-lossy.ts +81 -0
  593. package/src/portability.ts +31 -0
  594. package/src/portable-builder.ts +35 -0
  595. package/src/portable-entry.ts +37 -0
  596. package/src/position-reference-build.ts +164 -0
  597. package/src/position-reference.ts +41 -0
  598. package/src/runtime.ts +198 -0
  599. package/src/scale-color-helpers.ts +263 -0
  600. package/src/scale-color-hue-grey.ts +95 -0
  601. package/src/scale-color-stops.ts +177 -0
  602. package/src/scale-color-viridis.ts +99 -0
  603. package/src/scale-helpers.ts +264 -0
  604. package/src/scale-multi-helpers.ts +220 -0
  605. package/src/scale-position-helpers.ts +231 -0
  606. package/src/scale-reference-build.ts +222 -0
  607. package/src/scale-reference-classify-color.ts +334 -0
  608. package/src/scale-reference-classify-position.ts +164 -0
  609. package/src/scale-reference-classify-style.ts +229 -0
  610. package/src/scale-reference-classify-support.ts +298 -0
  611. package/src/scale-reference.ts +165 -0
  612. package/src/scale-style-helpers.ts +316 -0
  613. package/src/schema-catalog.ts +222 -0
  614. package/src/schema-declarations.ts +51 -0
  615. package/src/schema-decls-data.ts +272 -0
  616. package/src/schema-decls-guides-theme.ts +395 -0
  617. package/src/schema-decls-layers-col-boxplot.ts +410 -0
  618. package/src/schema-decls-layers-count-pointrange.ts +321 -0
  619. package/src/schema-decls-layers-crossbar-jitter.ts +443 -0
  620. package/src/schema-decls-layers-point-path.ts +246 -0
  621. package/src/schema-decls-layers-sf-blank.ts +408 -0
  622. package/src/schema-decls-layers-text-map.ts +259 -0
  623. package/src/schema-decls-paint.ts +124 -0
  624. package/src/schema-decls-params-area-abline.ts +440 -0
  625. package/src/schema-decls-params-col-contour.ts +333 -0
  626. package/src/schema-decls-params-curve-label.ts +343 -0
  627. package/src/schema-decls-params-errorbar-position.ts +446 -0
  628. package/src/schema-decls-params-point-path.ts +394 -0
  629. package/src/schema-decls-params-violin-summary.ts +447 -0
  630. package/src/schema-decls-plot.ts +385 -0
  631. package/src/schema-decls-scales-guides.ts +233 -0
  632. package/src/schema-decls-scales.ts +432 -0
  633. package/src/schema-imports.ts +116 -0
  634. package/src/schema-name-schemas.ts +37 -0
  635. package/src/schema-names.ts +243 -0
  636. package/src/schema-types.ts +400 -0
  637. package/src/schema.ts +287 -0
  638. package/src/stat-reference-build.ts +145 -0
  639. package/src/stat-reference.ts +38 -0
  640. package/src/structural-gate.ts +42 -0
  641. package/src/temporal-column.ts +323 -0
  642. package/src/temporal-guides.ts +32 -0
  643. package/src/temporal-interval-schema.ts +40 -0
  644. package/src/temporal-interval.ts +151 -0
  645. package/src/temporal-parse-core.ts +331 -0
  646. package/src/temporal-parse-format.ts +222 -0
  647. package/src/temporal-parse-schema.ts +38 -0
  648. package/src/temporal-parse.ts +259 -0
  649. package/src/temporal-polyfill.ts +27 -0
  650. package/src/temporal-ticks.ts +312 -0
  651. package/src/temporal.ts +112 -0
  652. package/src/validate-data-checks-color-temporal.ts +261 -0
  653. package/src/validate-data-checks-color.ts +395 -0
  654. package/src/validate-data-checks-layer.ts +492 -0
  655. package/src/validate-data-checks-position.ts +275 -0
  656. package/src/validate-data-checks-style-finite.ts +55 -0
  657. package/src/validate-data-checks-style-numeric.ts +455 -0
  658. package/src/validate-data-checks-style.ts +13 -0
  659. package/src/validate-data-checks-temporal.ts +129 -0
  660. package/src/validate-data-checks.ts +157 -0
  661. package/src/validate-data-evidence.ts +419 -0
  662. package/src/validate-data.ts +114 -0
  663. package/src/validate-map-errors.ts +126 -0
  664. package/src/validate-map-forms.ts +148 -0
  665. package/src/validate-map-path-keywords.ts +129 -0
  666. package/src/validate-map-path-unions.ts +281 -0
  667. package/src/validate-schema-shape.ts +232 -0
  668. package/src/validate-schema-walk.ts +219 -0
  669. package/src/validate-structure-facet.ts +76 -0
  670. package/src/validate-structure-layer-computed-y.ts +94 -0
  671. package/src/validate-structure-layer-ribbon.ts +61 -0
  672. package/src/validate-structure-layer-rule.ts +98 -0
  673. package/src/validate-structure-layer-shared.ts +29 -0
  674. package/src/validate-structure-layers.ts +395 -0
  675. package/src/validate-structure-paint.ts +101 -0
  676. package/src/validate-structure-scales.ts +278 -0
  677. package/src/validate-structure-style-bins.ts +167 -0
  678. package/src/validate-structure.ts +16 -0
  679. package/src/validate.ts +212 -0
@@ -0,0 +1,319 @@
1
+ /**
2
+ * Pipeline error catalog — structured errors thrown as
3
+ * `PipelineError { code, path, message }`. Pure data owned by @ggts-sh/spec
4
+ * (#987) so docs and agents have one prose source. Re-exported from
5
+ * @ggts-sh/core diagnostics for existing imports.
6
+ *
7
+ * Dual-channel codes (also emitable by validate) pull prose from
8
+ * error-prose-shared.ts — do not inline summary/fix for those keys.
9
+ */
10
+ /** One render-time error catalog entry. */
11
+ export interface PipelineErrorCatalogEntry {
12
+ summary: string;
13
+ fix: string;
14
+ }
15
+ /** Structured errors thrown as `PipelineError { code, path, message }`. */
16
+ export declare const PIPELINE_ERROR_CATALOG: {
17
+ readonly "guide-aesthetic-incompatible": {
18
+ readonly summary: "A guide variant is incompatible with its aesthetic or trained scale family.";
19
+ readonly fix: "Use axis for x/y, legend for discrete/style scales, colorbar for sequential color, or colorsteps for binned color.";
20
+ };
21
+ readonly "guide-layout-overflow": {
22
+ readonly summary: "A guide configured with collision: error cannot fit its authored label.";
23
+ readonly fix: "Use collision: \"ellipsis\" for long labels; increase the chart size, reduce categories, or suppress an oversized guide.";
24
+ };
25
+ readonly "no-data": {
26
+ readonly summary: "A layer has neither plot-level data nor its own layer.data.";
27
+ readonly fix: "Set spec.data and/or layer.data ({values}, {columns}, or {name}), or pass named data via RunOptions.data.";
28
+ };
29
+ readonly "dataset-collision": {
30
+ readonly summary: "A dataset name is defined in both spec.datasets and RunOptions.data.";
31
+ readonly fix: "Rename one of them, or pass allowOverride: true to let the runtime data win.";
32
+ };
33
+ readonly "unknown-dataset": {
34
+ readonly summary: "A {\"name\": ...} data ref names a dataset that is not defined anywhere.";
35
+ readonly fix: "Define it in spec.datasets or RunOptions.data (the message lists the available names).";
36
+ };
37
+ readonly "unknown-field": {
38
+ readonly summary: "A channel maps a field that does not exist in the data.";
39
+ readonly fix: "Map the channel to one of the available fields (the error lists them, with a did-you-mean).";
40
+ };
41
+ readonly "all-null-column": {
42
+ readonly summary: "A mapped column contains only null values.";
43
+ readonly fix: "Map the channel to a column with actual values, or fix the data.";
44
+ };
45
+ readonly "missing-channel": {
46
+ readonly summary: "A geom is missing a required aesthetic channel at render time.";
47
+ readonly fix: "Map the named channel in the layer's aes or the plot-level aes.";
48
+ };
49
+ readonly "unknown-stat-column": {
50
+ readonly summary: "A { stat } channel names a column the layer's stat does not generate.";
51
+ readonly fix: "Use one of the columns the stat generates (the error lists them), or change the layer's stat.";
52
+ };
53
+ readonly "channel-type-mismatch": {
54
+ readonly summary: "A mapped field's type is incompatible with the layer's geom/stat (e.g. a nominal x on smooth/bin/density, a continuous x on boxplot).";
55
+ readonly fix: "Map a field of the type the geom/stat needs, or switch to a geom that fits the field (the message suggests one).";
56
+ };
57
+ readonly "computed-y-mapped": {
58
+ readonly summary: "A layer whose stat computes y (count, bin, density) maps aes.y to a data field.";
59
+ readonly fix: "Unset y with null — or, for pre-computed bar heights, switch the layer to geom \"col\".";
60
+ };
61
+ readonly "bin-center-and-boundary": {
62
+ readonly summary: "A bin-stat layer sets BOTH params.center and params.boundary.";
63
+ readonly fix: "Keep one bin-grid alignment parameter and remove the other.";
64
+ };
65
+ readonly "rule-form-ambiguous": {
66
+ readonly summary: "A rule layer mixes the annotation form (params.xintercept/yintercept) with mapped aes.x/aes.y.";
67
+ readonly fix: "Use fixed intercepts OR a data mapping, never both (unset the other with null).";
68
+ };
69
+ readonly "rule-form-missing": {
70
+ readonly summary: "A rule layer has neither intercept params nor a mapped aes.x/aes.y — nothing to draw.";
71
+ readonly fix: "Set params.yintercept/xintercept (annotation) or map aes.x/aes.y (data-driven).";
72
+ };
73
+ readonly "rule-both-axes": {
74
+ readonly summary: "A data-driven rule layer maps BOTH aes.x and aes.y (pick one direction).";
75
+ readonly fix: "Keep one direction (vertical: map x; horizontal: map y) and unset the other with null.";
76
+ };
77
+ readonly "ribbon-orientation-ambiguous": {
78
+ readonly summary: "A ribbon layer maps both x-orientation (x+ymin+ymax) and y-orientation (y+xmin+xmax) contracts without params.orientation.";
79
+ readonly fix: "Set params.orientation to \"x\" or \"y\", or map only one complete interval contract.";
80
+ };
81
+ readonly "ribbon-inverted-bounds": {
82
+ readonly summary: "A ribbon layer has one or more rows where the lower bound exceeds the upper bound.";
83
+ readonly fix: "Swap or correct ymin/ymax (or xmin/xmax) so lower ≤ upper on every finite row.";
84
+ };
85
+ readonly "facet-form-ambiguous": {
86
+ readonly summary: "A facet sets BOTH the wrap form and the rows/cols grid form.";
87
+ readonly fix: "Keep facet.wrap (and drop rows/cols), or keep rows/cols (and drop wrap).";
88
+ };
89
+ readonly "facet-form-missing": {
90
+ readonly summary: "A facet sets neither wrap nor rows/cols — nothing to partition by.";
91
+ readonly fix: "Set facet.wrap (wrap form) or facet.rows/facet.cols (grid form).";
92
+ };
93
+ readonly "invalid-scale-domain": {
94
+ readonly summary: "An explicit scale domain is malformed for its scale type.";
95
+ readonly fix: "Provide a two-element [min, max] for continuous scales (values of the field's type).";
96
+ };
97
+ readonly "invalid-scale-breaks": {
98
+ readonly summary: "One or more explicit scale breaks do not match the scale's parser.";
99
+ readonly fix: "Use numeric breaks for numeric scales or values matching the temporal parse option.";
100
+ };
101
+ readonly "invalid-temporal-labels": {
102
+ readonly summary: "A temporal dateLabels string uses an unsupported or incomplete token.";
103
+ readonly fix: "Use only the documented closed dateLabels token grammar.";
104
+ };
105
+ readonly "invalid-temporal-locale": {
106
+ readonly summary: "A temporal scale locale is not a valid supported BCP 47 locale.";
107
+ readonly fix: "Use a canonical BCP 47 locale such as en-US, en-GB, fr-FR, or ja-JP.";
108
+ };
109
+ readonly "temporal-parse-failed": {
110
+ readonly summary: "An explicit temporal parser rejected one or more source values.";
111
+ readonly fix: "Correct the rejected values, choose the matching parser, or explicitly opt into censoring.";
112
+ };
113
+ readonly "temporal-break-limit": {
114
+ readonly summary: "An explicit temporal interval would generate more bounded ticks than allowed.";
115
+ readonly fix: "Choose a coarser calendar interval.";
116
+ };
117
+ readonly "temporal-break-progression": {
118
+ readonly summary: "Calendar interval progression failed to advance monotonically.";
119
+ readonly fix: "Choose another timezone, disambiguation policy, or interval and report the failing case.";
120
+ };
121
+ readonly "invalid-scale-transform": {
122
+ readonly summary: "The scale transform registry was asked for an unknown transform key.";
123
+ readonly fix: "Use a supported transform (identity, log10, sqrt). This indicates malformed runtime input.";
124
+ };
125
+ readonly "scale-transform-domain": {
126
+ readonly summary: "An explicit scale domain falls outside the transform's valid range (log10 <= 0, sqrt < 0).";
127
+ readonly fix: "Restrict the domain to the transform's valid range, or use the identity transform.";
128
+ };
129
+ readonly "scale-type-transform-conflict": {
130
+ readonly summary: "A scale declares an incompatible type/family with its transform (temporal/discrete/manual/identity with a non-identity transform, or type: \"log\" with a non-log10 transform).";
131
+ readonly fix: "Use identity for temporal/discrete/manual/identity scales; for base-10 log use type: \"linear\" with transform: \"log10\"; or choose a quantitative family that admits the transform.";
132
+ };
133
+ readonly "scale-zero-invalid-for-transform": {
134
+ readonly summary: "zero: true was requested under a transform with no valid image for semantic zero (log10).";
135
+ readonly fix: "Remove zero: true; log10 positions use the transformed-space origin (semantic 1), never log10(0).";
136
+ };
137
+ readonly "coord-transform-domain": {
138
+ readonly summary: "A post-stat coordinate transform cannot project its trained or explicit viewport domain.";
139
+ readonly fix: "Choose coordinate limits inside the transform domain, or use the identity coordinate transform.";
140
+ };
141
+ readonly "coord-transform-temporal": {
142
+ readonly summary: "A non-identity coordinate transform was requested for a temporal axis.";
143
+ readonly fix: "Keep temporal coordinates on identity; use identity coordinate limits/reverse for a viewport.";
144
+ };
145
+ readonly "coord-transform-continuous": {
146
+ readonly summary: "A quantitative coordinate transform or numeric limits were requested for a band axis.";
147
+ readonly fix: "Use identity coordinates for categories, or configure a continuous quantitative scale.";
148
+ };
149
+ readonly "coord-fixed-free-scales": {
150
+ readonly summary: "Fixed-aspect coordinates cannot represent free positional facet scales truthfully.";
151
+ readonly fix: "Use facet.scales = \"fixed\", or remove coord_fixed / coord_sf.";
152
+ };
153
+ readonly "coord-fixed-invalid-aspect": {
154
+ readonly summary: "A fixed-aspect target or fitted data rectangle is non-finite or non-positive after chrome is allocated.";
155
+ readonly fix: "Use a moderate finite ratio and non-degenerate positional domains, or enlarge the plot allocation.";
156
+ };
157
+ readonly "binned-scale-requires-continuous": {
158
+ readonly summary: "A type: \"binned\" scale is bound to a discrete or temporal field.";
159
+ readonly fix: "Map a quantitative field, or use type: \"band\"/\"time\" instead of \"binned\".";
160
+ };
161
+ readonly "binned-scale-break-limit": {
162
+ readonly summary: "A binned scale's automatic or explicit breaks would exceed MAX_BINNED_BREAKS (64).";
163
+ readonly fix: "Supply fewer explicit breaks, or widen them so automatic binning stays under the limit.";
164
+ };
165
+ readonly "palette-exhausted": {
166
+ readonly summary: "A discrete color scale with onExhaust: \"error\" ran out of palette entries (the default \"cycle\" only warns).";
167
+ readonly fix: "Provide a larger range, set an explicit domain, or accept cycling by removing onExhaust.";
168
+ };
169
+ readonly "color-temporal-parse": {
170
+ readonly summary: "A temporal color/fill scale could not parse the complete mapped column.";
171
+ readonly fix: "Set the exact parse order, correct the rejected values, or explicitly choose parseFailure: censor.";
172
+ };
173
+ readonly "color-temporal-kind": {
174
+ readonly summary: "A temporal color/fill scale requested date or datetime precision that the data does not have.";
175
+ readonly fix: "Use the matching date/datetime helper or correct the source precision.";
176
+ };
177
+ readonly "color-manual-domain-range": {
178
+ readonly summary: "A manual color/fill scale has a different number of domain values and range colors.";
179
+ readonly fix: "Provide exactly one range color for every domain value.";
180
+ };
181
+ readonly "color-binned-breaks": {
182
+ readonly summary: "Binned color/fill boundaries are invalid, unparseable, duplicated, or unordered.";
183
+ readonly fix: "Provide 2–65 strictly increasing boundaries valid for the parser and transform.";
184
+ };
185
+ readonly "color-binned-empty": {
186
+ readonly summary: "A binned color/fill scale has no values inside its parser/transform domain.";
187
+ readonly fix: "Correct the mapped values, parser, or transform, or provide a valid explicit domain.";
188
+ };
189
+ readonly "color-binned-domain": {
190
+ readonly summary: "A binned color/fill domain is degenerate or invalid for its transform.";
191
+ readonly fix: "Provide two distinct domain endpoints valid for identity, log10, or sqrt.";
192
+ };
193
+ readonly "color-domain-invalid": {
194
+ readonly summary: "A sequential color/fill domain does not contain exactly two parseable values.";
195
+ readonly fix: "Provide a two-value semantic domain matching the mapped field and parser.";
196
+ };
197
+ readonly "color-transform-empty": {
198
+ readonly summary: "Every mapped color/fill value is invalid for the requested transform.";
199
+ readonly fix: "Correct the mapped data or choose a transform whose domain contains the values.";
200
+ };
201
+ readonly "color-domain-transform": {
202
+ readonly summary: "A sequential color/fill domain is invalid for its requested transform.";
203
+ readonly fix: "Use positive endpoints for log10, non-negative endpoints for sqrt, or identity.";
204
+ };
205
+ readonly "unsupported-aesthetic-scale": {
206
+ readonly summary: "A finite shape/linetype aesthetic was configured as a continuous scale.";
207
+ readonly fix: "Use a binned scale for quantitative values or an ordinal scale for categories.";
208
+ };
209
+ readonly "unsupported-geom-aesthetic": {
210
+ readonly summary: "A mapped style aesthetic is not consumed by the selected geom.";
211
+ readonly fix: "Remove the mapping or move it to one of the compatible geoms listed in the error.";
212
+ };
213
+ readonly "unsupported-annotation-style": {
214
+ readonly summary: "A fixed-intercept annotation rule maps a style to a field or after-stat column, but it has no data rows to map.";
215
+ readonly fix: "Use a constant style value (optionally { value, scale: true }) on the annotation rule.";
216
+ };
217
+ readonly "tile-nonpositive-size": {
218
+ readonly summary: "A tile layer has a non-positive or non-finite width/height.";
219
+ readonly fix: "Map a positive width/height or set params.width / params.height to a positive number.";
220
+ };
221
+ readonly "raster-duplicate-cells": {
222
+ readonly summary: "A raster layer has duplicate (x, y) coordinates.";
223
+ readonly fix: "Aggregate to one value per cell, or use geom \"tile\" for overlapping cells.";
224
+ };
225
+ readonly "unsupported-param": {
226
+ readonly summary: "A layer param value is not supported by this runtime.";
227
+ readonly fix: "Use a documented supported value for the param (see the error message).";
228
+ };
229
+ readonly "invalid-aesthetic-constant": {
230
+ readonly summary: "A literal style constant is outside the aesthetic's supported output domain.";
231
+ readonly fix: "Use a positive size/linewidth, alpha in [0,1], or a documented shape/linetype name.";
232
+ };
233
+ readonly "style-temporal-parse": {
234
+ readonly summary: "A temporal numeric style scale could not parse the complete mapped column.";
235
+ readonly fix: "Set the exact parser, correct the rejected values, or explicitly choose censoring.";
236
+ };
237
+ readonly "style-temporal-kind": {
238
+ readonly summary: "A temporal numeric style scale requested the wrong date/datetime precision.";
239
+ readonly fix: "Use the matching date/datetime helper or correct the source precision.";
240
+ };
241
+ readonly "style-manual-domain-range": {
242
+ readonly summary: "A manual style scale has different domain and range lengths.";
243
+ readonly fix: "Provide exactly one output style for every domain value.";
244
+ };
245
+ readonly "style-palette-exhausted": {
246
+ readonly summary: "A finite style scale needs more distinguishable outputs than its range provides.";
247
+ readonly fix: "Provide a larger range, reduce categories/bins, or deliberately opt into cycling.";
248
+ };
249
+ readonly "style-domain-empty": {
250
+ readonly summary: "No finite values can train the requested numeric or binned style scale.";
251
+ readonly fix: "Correct the mapped values or provide a valid explicit domain.";
252
+ };
253
+ readonly "style-domain-invalid": {
254
+ readonly summary: "An explicit style domain is malformed or contradicts its binned boundaries.";
255
+ readonly fix: "Provide two finite semantic endpoints matching the first and last boundaries.";
256
+ };
257
+ readonly "style-range-invalid": {
258
+ readonly summary: "A numeric sequential/binned style range has fewer than two endpoints.";
259
+ readonly fix: "Provide at least two valid output values in the aesthetic's supported bounds.";
260
+ };
261
+ readonly "style-binned-breaks": {
262
+ readonly summary: "Binned style boundaries are missing, non-finite, duplicated, or unordered.";
263
+ readonly fix: "Provide 2–65 strictly increasing numeric boundaries.";
264
+ };
265
+ readonly "stat-channel-unsupported": {
266
+ readonly summary: "A { stat } style mapping names an output the selected stat does not publish.";
267
+ readonly fix: "Use a generated output listed for that stat or map the original field instead.";
268
+ };
269
+ readonly "manual-fun-required": {
270
+ readonly summary: "A layer uses stat manual without params.fun.";
271
+ readonly fix: "Set params.fun to one of first|last|mean|median|min|max|sum (portable named registry; #814).";
272
+ };
273
+ readonly "manual-fun-unknown": {
274
+ readonly summary: "A layer uses stat manual with an unregistered params.fun (defense for unvalidated specs).";
275
+ readonly fix: "Use a registered name: first, last, mean, median, min, max, sum.";
276
+ };
277
+ readonly "unknown-theme": {
278
+ readonly summary: "spec.theme names a theme that is not registered.";
279
+ readonly fix: "Use a registered name (default, light, dark, minimal) or a theme object.";
280
+ };
281
+ readonly "renderer-failure": {
282
+ readonly summary: "The SVG renderer threw while drawing a scene (never blank output — failure policy).";
283
+ readonly fix: "This is a ggts bug; the message carries the underlying error. Please report it.";
284
+ };
285
+ readonly "max-marks-exceeded": {
286
+ readonly summary: "renderToSVGString refused to render more marks than its maxMarks safety limit.";
287
+ readonly fix: "Raise options.maxMarks deliberately, reduce the data, or render interactively (canvas).";
288
+ };
289
+ readonly "sf-geometry-missing": {
290
+ readonly summary: "geom_sf data is missing the geometry column.";
291
+ readonly fix: "Provide a column of GeoJSON Geometry JSON strings (default field \"geometry\", or params.geometry).";
292
+ };
293
+ readonly "sf-geometry-invalid": {
294
+ readonly summary: "A geom_sf geometry cell could not be parsed as drawable GeoJSON Geometry.";
295
+ readonly fix: "Use valid GeoJSON Geometry JSON strings with finite coordinates.";
296
+ };
297
+ readonly "sf-geometry-unsupported": {
298
+ readonly summary: "geom_sf received a GeoJSON type outside the v1 point/line/polygon families.";
299
+ readonly fix: "Use Point/MultiPoint, LineString/MultiLineString, Polygon/MultiPolygon, or GeometryCollection of those families (no CRS).";
300
+ };
301
+ readonly "sf-geometry-mixed": {
302
+ readonly summary: "One geom_sf layer mixes geometry families (point vs line vs polygon).";
303
+ readonly fix: "Split mixed types into separate geom_sf layers (v1 is single-family per layer).";
304
+ };
305
+ readonly "map-data-required": {
306
+ readonly summary: "geom_map was used without params.map.";
307
+ readonly fix: "Pass params.map as { values }, { columns }, or { name } against spec.datasets.";
308
+ };
309
+ readonly "map-coords-missing": {
310
+ readonly summary: "Map data is missing long/lat or x/y coordinate columns.";
311
+ readonly fix: "Provide \"long\"+\"lat\" or \"x\"+\"y\" columns in the fortified map table.";
312
+ };
313
+ readonly "map-id-column-missing": {
314
+ readonly summary: "Map data is missing a region join column.";
315
+ readonly fix: "Set params.mapId or include a \"region\" / \"id\" column in the map table.";
316
+ };
317
+ };
318
+ export type PipelineErrorCode = keyof typeof PIPELINE_ERROR_CATALOG;
319
+ //# sourceMappingURL=pipeline-error-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline-error-catalog.d.ts","sourceRoot":"","sources":["../src/pipeline-error-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,2CAA2C;AAC3C,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,2EAA2E;AAC3E,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgQ2B,CAAC;AAE/D,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,sBAAsB,CAAC"}
@@ -0,0 +1,260 @@
1
+ /**
2
+ * Pipeline error catalog — structured errors thrown as
3
+ * `PipelineError { code, path, message }`. Pure data owned by @ggts-sh/spec
4
+ * (#987) so docs and agents have one prose source. Re-exported from
5
+ * @ggts-sh/core diagnostics for existing imports.
6
+ *
7
+ * Dual-channel codes (also emitable by validate) pull prose from
8
+ * error-prose-shared.ts — do not inline summary/fix for those keys.
9
+ */
10
+ import { DUAL_ERROR_PROSE } from "./error-prose-shared.js";
11
+ /** Structured errors thrown as `PipelineError { code, path, message }`. */
12
+ export const PIPELINE_ERROR_CATALOG = {
13
+ "guide-aesthetic-incompatible": DUAL_ERROR_PROSE["guide-aesthetic-incompatible"],
14
+ "guide-layout-overflow": {
15
+ summary: "A guide configured with collision: error cannot fit its authored label.",
16
+ fix: 'Use collision: "ellipsis" for long labels; increase the chart size, reduce categories, or suppress an oversized guide.',
17
+ },
18
+ "no-data": {
19
+ summary: "A layer has neither plot-level data nor its own layer.data.",
20
+ fix: "Set spec.data and/or layer.data ({values}, {columns}, or {name}), or pass named data via RunOptions.data.",
21
+ },
22
+ "dataset-collision": {
23
+ summary: "A dataset name is defined in both spec.datasets and RunOptions.data.",
24
+ fix: "Rename one of them, or pass allowOverride: true to let the runtime data win.",
25
+ },
26
+ "unknown-dataset": {
27
+ summary: 'A {"name": ...} data ref names a dataset that is not defined anywhere.',
28
+ fix: "Define it in spec.datasets or RunOptions.data (the message lists the available names).",
29
+ },
30
+ "unknown-field": DUAL_ERROR_PROSE["unknown-field"],
31
+ "all-null-column": DUAL_ERROR_PROSE["all-null-column"],
32
+ "missing-channel": {
33
+ summary: "A geom is missing a required aesthetic channel at render time.",
34
+ fix: "Map the named channel in the layer's aes or the plot-level aes.",
35
+ },
36
+ "unknown-stat-column": DUAL_ERROR_PROSE["unknown-stat-column"],
37
+ "channel-type-mismatch": DUAL_ERROR_PROSE["channel-type-mismatch"],
38
+ "computed-y-mapped": DUAL_ERROR_PROSE["computed-y-mapped"],
39
+ "bin-center-and-boundary": DUAL_ERROR_PROSE["bin-center-and-boundary"],
40
+ "rule-form-ambiguous": DUAL_ERROR_PROSE["rule-form-ambiguous"],
41
+ "rule-form-missing": DUAL_ERROR_PROSE["rule-form-missing"],
42
+ "rule-both-axes": DUAL_ERROR_PROSE["rule-both-axes"],
43
+ "ribbon-orientation-ambiguous": DUAL_ERROR_PROSE["ribbon-orientation-ambiguous"],
44
+ "ribbon-inverted-bounds": {
45
+ summary: "A ribbon layer has one or more rows where the lower bound exceeds the upper bound.",
46
+ fix: "Swap or correct ymin/ymax (or xmin/xmax) so lower ≤ upper on every finite row.",
47
+ },
48
+ "facet-form-ambiguous": DUAL_ERROR_PROSE["facet-form-ambiguous"],
49
+ "facet-form-missing": DUAL_ERROR_PROSE["facet-form-missing"],
50
+ "invalid-scale-domain": {
51
+ summary: "An explicit scale domain is malformed for its scale type.",
52
+ fix: "Provide a two-element [min, max] for continuous scales (values of the field's type).",
53
+ },
54
+ "invalid-scale-breaks": {
55
+ summary: "One or more explicit scale breaks do not match the scale's parser.",
56
+ fix: "Use numeric breaks for numeric scales or values matching the temporal parse option.",
57
+ },
58
+ "invalid-temporal-labels": {
59
+ summary: "A temporal dateLabels string uses an unsupported or incomplete token.",
60
+ fix: "Use only the documented closed dateLabels token grammar.",
61
+ },
62
+ "invalid-temporal-locale": {
63
+ summary: "A temporal scale locale is not a valid supported BCP 47 locale.",
64
+ fix: "Use a canonical BCP 47 locale such as en-US, en-GB, fr-FR, or ja-JP.",
65
+ },
66
+ "temporal-parse-failed": {
67
+ summary: "An explicit temporal parser rejected one or more source values.",
68
+ fix: "Correct the rejected values, choose the matching parser, or explicitly opt into censoring.",
69
+ },
70
+ "temporal-break-limit": {
71
+ summary: "An explicit temporal interval would generate more bounded ticks than allowed.",
72
+ fix: "Choose a coarser calendar interval.",
73
+ },
74
+ "temporal-break-progression": {
75
+ summary: "Calendar interval progression failed to advance monotonically.",
76
+ fix: "Choose another timezone, disambiguation policy, or interval and report the failing case.",
77
+ },
78
+ "invalid-scale-transform": {
79
+ summary: "The scale transform registry was asked for an unknown transform key.",
80
+ fix: "Use a supported transform (identity, log10, sqrt). This indicates malformed runtime input.",
81
+ },
82
+ "scale-transform-domain": {
83
+ summary: "An explicit scale domain falls outside the transform's valid range (log10 <= 0, sqrt < 0).",
84
+ fix: "Restrict the domain to the transform's valid range, or use the identity transform.",
85
+ },
86
+ "scale-type-transform-conflict": DUAL_ERROR_PROSE["scale-type-transform-conflict"],
87
+ "scale-zero-invalid-for-transform": {
88
+ summary: "zero: true was requested under a transform with no valid image for semantic zero (log10).",
89
+ fix: "Remove zero: true; log10 positions use the transformed-space origin (semantic 1), never log10(0).",
90
+ },
91
+ "coord-transform-domain": {
92
+ summary: "A post-stat coordinate transform cannot project its trained or explicit viewport domain.",
93
+ fix: "Choose coordinate limits inside the transform domain, or use the identity coordinate transform.",
94
+ },
95
+ "coord-transform-temporal": {
96
+ summary: "A non-identity coordinate transform was requested for a temporal axis.",
97
+ fix: "Keep temporal coordinates on identity; use identity coordinate limits/reverse for a viewport.",
98
+ },
99
+ "coord-transform-continuous": {
100
+ summary: "A quantitative coordinate transform or numeric limits were requested for a band axis.",
101
+ fix: "Use identity coordinates for categories, or configure a continuous quantitative scale.",
102
+ },
103
+ "coord-fixed-free-scales": DUAL_ERROR_PROSE["coord-fixed-free-scales"],
104
+ "coord-fixed-invalid-aspect": {
105
+ summary: "A fixed-aspect target or fitted data rectangle is non-finite or non-positive after chrome is allocated.",
106
+ fix: "Use a moderate finite ratio and non-degenerate positional domains, or enlarge the plot allocation.",
107
+ },
108
+ "binned-scale-requires-continuous": {
109
+ summary: 'A type: "binned" scale is bound to a discrete or temporal field.',
110
+ fix: 'Map a quantitative field, or use type: "band"/"time" instead of "binned".',
111
+ },
112
+ "binned-scale-break-limit": {
113
+ summary: "A binned scale's automatic or explicit breaks would exceed MAX_BINNED_BREAKS (64).",
114
+ fix: "Supply fewer explicit breaks, or widen them so automatic binning stays under the limit.",
115
+ },
116
+ "palette-exhausted": {
117
+ summary: 'A discrete color scale with onExhaust: "error" ran out of palette entries (the default "cycle" only warns).',
118
+ fix: "Provide a larger range, set an explicit domain, or accept cycling by removing onExhaust.",
119
+ },
120
+ "color-temporal-parse": {
121
+ summary: "A temporal color/fill scale could not parse the complete mapped column.",
122
+ fix: "Set the exact parse order, correct the rejected values, or explicitly choose parseFailure: censor.",
123
+ },
124
+ "color-temporal-kind": {
125
+ summary: "A temporal color/fill scale requested date or datetime precision that the data does not have.",
126
+ fix: "Use the matching date/datetime helper or correct the source precision.",
127
+ },
128
+ "color-manual-domain-range": DUAL_ERROR_PROSE["color-manual-domain-range"],
129
+ "color-binned-breaks": {
130
+ summary: "Binned color/fill boundaries are invalid, unparseable, duplicated, or unordered.",
131
+ fix: "Provide 2–65 strictly increasing boundaries valid for the parser and transform.",
132
+ },
133
+ "color-binned-empty": {
134
+ summary: "A binned color/fill scale has no values inside its parser/transform domain.",
135
+ fix: "Correct the mapped values, parser, or transform, or provide a valid explicit domain.",
136
+ },
137
+ "color-binned-domain": {
138
+ summary: "A binned color/fill domain is degenerate or invalid for its transform.",
139
+ fix: "Provide two distinct domain endpoints valid for identity, log10, or sqrt.",
140
+ },
141
+ "color-domain-invalid": {
142
+ summary: "A sequential color/fill domain does not contain exactly two parseable values.",
143
+ fix: "Provide a two-value semantic domain matching the mapped field and parser.",
144
+ },
145
+ "color-transform-empty": {
146
+ summary: "Every mapped color/fill value is invalid for the requested transform.",
147
+ fix: "Correct the mapped data or choose a transform whose domain contains the values.",
148
+ },
149
+ "color-domain-transform": {
150
+ summary: "A sequential color/fill domain is invalid for its requested transform.",
151
+ fix: "Use positive endpoints for log10, non-negative endpoints for sqrt, or identity.",
152
+ },
153
+ "unsupported-aesthetic-scale": {
154
+ summary: "A finite shape/linetype aesthetic was configured as a continuous scale.",
155
+ fix: "Use a binned scale for quantitative values or an ordinal scale for categories.",
156
+ },
157
+ "unsupported-geom-aesthetic": DUAL_ERROR_PROSE["unsupported-geom-aesthetic"],
158
+ "unsupported-annotation-style": {
159
+ summary: "A fixed-intercept annotation rule maps a style to a field or after-stat column, but it has no data rows to map.",
160
+ fix: "Use a constant style value (optionally { value, scale: true }) on the annotation rule.",
161
+ },
162
+ "tile-nonpositive-size": {
163
+ summary: "A tile layer has a non-positive or non-finite width/height.",
164
+ fix: "Map a positive width/height or set params.width / params.height to a positive number.",
165
+ },
166
+ "raster-duplicate-cells": {
167
+ summary: "A raster layer has duplicate (x, y) coordinates.",
168
+ fix: 'Aggregate to one value per cell, or use geom "tile" for overlapping cells.',
169
+ },
170
+ "unsupported-param": {
171
+ summary: "A layer param value is not supported by this runtime.",
172
+ fix: "Use a documented supported value for the param (see the error message).",
173
+ },
174
+ "invalid-aesthetic-constant": {
175
+ summary: "A literal style constant is outside the aesthetic's supported output domain.",
176
+ fix: "Use a positive size/linewidth, alpha in [0,1], or a documented shape/linetype name.",
177
+ },
178
+ "style-temporal-parse": {
179
+ summary: "A temporal numeric style scale could not parse the complete mapped column.",
180
+ fix: "Set the exact parser, correct the rejected values, or explicitly choose censoring.",
181
+ },
182
+ "style-temporal-kind": {
183
+ summary: "A temporal numeric style scale requested the wrong date/datetime precision.",
184
+ fix: "Use the matching date/datetime helper or correct the source precision.",
185
+ },
186
+ "style-manual-domain-range": {
187
+ summary: "A manual style scale has different domain and range lengths.",
188
+ fix: "Provide exactly one output style for every domain value.",
189
+ },
190
+ "style-palette-exhausted": {
191
+ summary: "A finite style scale needs more distinguishable outputs than its range provides.",
192
+ fix: "Provide a larger range, reduce categories/bins, or deliberately opt into cycling.",
193
+ },
194
+ "style-domain-empty": {
195
+ summary: "No finite values can train the requested numeric or binned style scale.",
196
+ fix: "Correct the mapped values or provide a valid explicit domain.",
197
+ },
198
+ "style-domain-invalid": {
199
+ summary: "An explicit style domain is malformed or contradicts its binned boundaries.",
200
+ fix: "Provide two finite semantic endpoints matching the first and last boundaries.",
201
+ },
202
+ "style-range-invalid": {
203
+ summary: "A numeric sequential/binned style range has fewer than two endpoints.",
204
+ fix: "Provide at least two valid output values in the aesthetic's supported bounds.",
205
+ },
206
+ "style-binned-breaks": {
207
+ summary: "Binned style boundaries are missing, non-finite, duplicated, or unordered.",
208
+ fix: "Provide 2–65 strictly increasing numeric boundaries.",
209
+ },
210
+ "stat-channel-unsupported": {
211
+ summary: "A { stat } style mapping names an output the selected stat does not publish.",
212
+ fix: "Use a generated output listed for that stat or map the original field instead.",
213
+ },
214
+ "manual-fun-required": DUAL_ERROR_PROSE["manual-fun-required"],
215
+ "manual-fun-unknown": {
216
+ summary: "A layer uses stat manual with an unregistered params.fun (defense for unvalidated specs).",
217
+ fix: "Use a registered name: first, last, mean, median, min, max, sum.",
218
+ },
219
+ "unknown-theme": {
220
+ summary: "spec.theme names a theme that is not registered.",
221
+ fix: "Use a registered name (default, light, dark, minimal) or a theme object.",
222
+ },
223
+ "renderer-failure": {
224
+ summary: "The SVG renderer threw while drawing a scene (never blank output — failure policy).",
225
+ fix: "This is a ggts bug; the message carries the underlying error. Please report it.",
226
+ },
227
+ "max-marks-exceeded": {
228
+ summary: "renderToSVGString refused to render more marks than its maxMarks safety limit.",
229
+ fix: "Raise options.maxMarks deliberately, reduce the data, or render interactively (canvas).",
230
+ },
231
+ "sf-geometry-missing": {
232
+ summary: "geom_sf data is missing the geometry column.",
233
+ fix: 'Provide a column of GeoJSON Geometry JSON strings (default field "geometry", or params.geometry).',
234
+ },
235
+ "sf-geometry-invalid": {
236
+ summary: "A geom_sf geometry cell could not be parsed as drawable GeoJSON Geometry.",
237
+ fix: "Use valid GeoJSON Geometry JSON strings with finite coordinates.",
238
+ },
239
+ "sf-geometry-unsupported": {
240
+ summary: "geom_sf received a GeoJSON type outside the v1 point/line/polygon families.",
241
+ fix: "Use Point/MultiPoint, LineString/MultiLineString, Polygon/MultiPolygon, or GeometryCollection of those families (no CRS).",
242
+ },
243
+ "sf-geometry-mixed": {
244
+ summary: "One geom_sf layer mixes geometry families (point vs line vs polygon).",
245
+ fix: "Split mixed types into separate geom_sf layers (v1 is single-family per layer).",
246
+ },
247
+ "map-data-required": {
248
+ summary: "geom_map was used without params.map.",
249
+ fix: "Pass params.map as { values }, { columns }, or { name } against spec.datasets.",
250
+ },
251
+ "map-coords-missing": {
252
+ summary: "Map data is missing long/lat or x/y coordinate columns.",
253
+ fix: 'Provide "long"+"lat" or "x"+"y" columns in the fortified map table.',
254
+ },
255
+ "map-id-column-missing": {
256
+ summary: "Map data is missing a region join column.",
257
+ fix: 'Set params.mapId or include a "region" / "id" column in the map table.',
258
+ },
259
+ };
260
+ //# sourceMappingURL=pipeline-error-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline-error-catalog.js","sourceRoot":"","sources":["../src/pipeline-error-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Strict PortableSpec checks: walk for unserializable values, isPortable,
3
+ * toPortable (rejecting). Lossy tooling conversion: portability-lossy.ts.
4
+ * Public facade: portability.ts.
5
+ */
6
+ import type { PortableSpec } from "./schema.js";
7
+ import type { RuntimeSpec } from "./runtime.js";
8
+ /** Any strictly-JSON value (what a PortableSpec is made of). */
9
+ export type JSONValue = string | number | boolean | null | JSONValue[] | {
10
+ [key: string]: JSONValue;
11
+ };
12
+ export interface PortabilityIssue {
13
+ /** JSON-pointer-ish path to the offending value (e.g. "/aes/x/fn"). */
14
+ path: string;
15
+ /** Why the value cannot travel as JSON. */
16
+ reason: string;
17
+ }
18
+ /** @internal Shared by strict walk and lossy clone. */
19
+ export declare function isPlainObject(value: unknown): value is Record<string, unknown>;
20
+ /** Every reason `value` fails to be strictly-JSON, with paths. Empty = portable. */
21
+ export declare function portabilityIssues(value: unknown): PortabilityIssue[];
22
+ /** True when `spec` contains only strictly-JSON values (narrowing type guard). */
23
+ export declare function isPortable(spec: RuntimeSpec | PortableSpec): spec is PortableSpec;
24
+ /** Thrown by toPortable(): lists EVERY unserializable path, not just the first. */
25
+ export declare class UnportableSpecError extends Error {
26
+ readonly issues: readonly PortabilityIssue[];
27
+ constructor(issues: readonly PortabilityIssue[]);
28
+ }
29
+ /**
30
+ * Convert a RuntimeSpec to a PortableSpec, REJECTING (UnportableSpecError,
31
+ * with every offending path) if anything unserializable is present.
32
+ * Returns a structurally-shared-nothing deep copy.
33
+ */
34
+ export declare function toPortable(spec: RuntimeSpec): PortableSpec;
35
+ //# sourceMappingURL=portability-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portability-check.d.ts","sourceRoot":"","sources":["../src/portability-check.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,gEAAgE;AAChE,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,EAAE,GACX;IACE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B,CAAC;AAEN,MAAM,WAAW,gBAAgB;IAC/B,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,uDAAuD;AACvD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAI9E;AAqFD,oFAAoF;AACpF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,EAAE,CAIpE;AAED,kFAAkF;AAClF,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,GAAG,IAAI,IAAI,YAAY,CAIjF;AAED,mFAAmF;AACnF,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;gBAEjC,MAAM,EAAE,SAAS,gBAAgB,EAAE;CAShD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,CAI1D"}