@diagrammo/dgmo 0.47.0 → 0.48.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/advanced.js +11 -11
- package/dist/auto.js +16 -16
- package/dist/auto.mjs +41 -12
- package/dist/block.js +4 -4
- package/dist/{chunk-FNB3PNGF.js → chunk-7DTWEFUE.js} +3 -3
- package/dist/{chunk-2DXMZRWJ.js → chunk-B65G5DNL.js} +8 -1
- package/dist/{chunk-RZCF2VVM.js → chunk-B7JUCQUA.js} +3 -1
- package/dist/{chunk-DU7W62N5.js → chunk-FANX6UJR.js} +3 -3
- package/dist/{chunk-6FZYCKXB.js → chunk-HSH73DP6.js} +2 -2
- package/dist/{chunk-P4RH4OSP.js → chunk-ILKORZ3H.js} +2 -2
- package/dist/{chunk-Y5QGVTVC.js → chunk-JTSMEYIZ.js} +7 -3
- package/dist/{chunk-RCERWOJR.js → chunk-ODZVHU3R.js} +1 -2
- package/dist/{chunk-DZAQBW35.js → chunk-SGZYXELT.js} +3 -7
- package/dist/{chunk-CUVHQHZ7.js → chunk-THXCFRTU.js} +3 -3
- package/dist/{chunk-IH6ZMVQ5.js → chunk-UC7TFHUM.js} +29 -11
- package/dist/{chunk-EMS2SK26.js → chunk-ZBWMSD5N.js} +3 -1
- package/dist/cli.cjs +15 -15
- package/dist/{dgmo-router-DZCIDUO5.js → dgmo-router-X35VLZLM.js} +3 -3
- package/dist/element.js +16 -16
- package/dist/element.mjs +41 -12
- package/dist/{flowchart-renderer-ZAEOL4DX.js → flowchart-renderer-SNDSII4D.js} +2 -2
- package/dist/index.d.ts +4 -2
- package/dist/index.js +4 -4
- package/dist/{parser-FUSKFGZN.js → parser-2EWECDSA.js} +2 -2
- package/dist/{renderer-UWA5XS74.js → renderer-4JHRUBE6.js} +3 -3
- package/dist/{renderer-WZRREQ2P.js → renderer-5MYBMBYO.js} +2 -2
- package/dist/{renderer-TOCOVLHS.js → renderer-B2OMQIQG.js} +3 -3
- package/dist/{renderer-2XQQQ6QR.js → renderer-N43WR5GV.js} +3 -3
- package/dist/{renderer-T7YKC5VP.js → renderer-ZRNG54CW.js} +3 -3
- package/dist/{state-renderer-RFYHSP4K.js → state-renderer-B4DQBM6M.js} +2 -2
- package/package.json +23 -71
- package/dist/advanced.cjs +0 -71648
- package/dist/advanced.d.cts +0 -5719
- package/dist/auto.cjs +0 -70648
- package/dist/auto.d.cts +0 -54
- package/dist/block.cjs +0 -70208
- package/dist/block.d.cts +0 -115
- package/dist/editor.cjs +0 -526
- package/dist/editor.d.cts +0 -26
- package/dist/element.cjs +0 -70530
- package/dist/element.d.cts +0 -62
- package/dist/highlight.cjs +0 -852
- package/dist/highlight.d.cts +0 -49
- package/dist/index.cjs +0 -70491
- package/dist/index.d.cts +0 -160
- package/dist/pert.cjs +0 -325
- package/dist/pert.d.cts +0 -559
- package/dist/themes-1-CuKpeH.d.cts +0 -908
- package/src/advanced.ts +0 -873
- package/src/arc/parser.ts +0 -15
- package/src/arc/renderer.ts +0 -633
- package/src/auto/index.ts +0 -621
- package/src/auto/shared.ts +0 -370
- package/src/auto/styles.ts +0 -73
- package/src/block/layout.ts +0 -198
- package/src/block/parser.ts +0 -427
- package/src/block/renderer.ts +0 -484
- package/src/block/types.ts +0 -67
- package/src/boxes-and-lines/collapse.ts +0 -96
- package/src/boxes-and-lines/focus.ts +0 -257
- package/src/boxes-and-lines/label-placement.ts +0 -339
- package/src/boxes-and-lines/layout-grouped.ts +0 -912
- package/src/boxes-and-lines/layout-layered.ts +0 -722
- package/src/boxes-and-lines/layout-search.ts +0 -1678
- package/src/boxes-and-lines/layout.ts +0 -398
- package/src/boxes-and-lines/parser.ts +0 -1181
- package/src/boxes-and-lines/renderer.ts +0 -1465
- package/src/boxes-and-lines/types.ts +0 -66
- package/src/c4/layout.ts +0 -2441
- package/src/c4/parser.ts +0 -1158
- package/src/c4/renderer.ts +0 -2008
- package/src/c4/types.ts +0 -89
- package/src/chart-type-registry.ts +0 -529
- package/src/chart-types.ts +0 -225
- package/src/chart.ts +0 -685
- package/src/charts-d3/bar.ts +0 -338
- package/src/charts-d3/chord.ts +0 -140
- package/src/charts-d3/function.ts +0 -147
- package/src/charts-d3/funnel.ts +0 -104
- package/src/charts-d3/heatmap.ts +0 -145
- package/src/charts-d3/index.ts +0 -337
- package/src/charts-d3/interactions.ts +0 -477
- package/src/charts-d3/line.ts +0 -344
- package/src/charts-d3/mount.ts +0 -151
- package/src/charts-d3/pie.ts +0 -117
- package/src/charts-d3/polar.ts +0 -89
- package/src/charts-d3/radar.ts +0 -0
- package/src/charts-d3/sankey.ts +0 -0
- package/src/charts-d3/scatter.ts +0 -185
- package/src/charts-d3/shared.ts +0 -208
- package/src/class/layout.ts +0 -326
- package/src/class/parser.ts +0 -635
- package/src/class/renderer.ts +0 -793
- package/src/class/types.ts +0 -58
- package/src/cli-banner.ts +0 -106
- package/src/cli.ts +0 -1080
- package/src/colors-diagnostics.ts +0 -35
- package/src/colors.ts +0 -379
- package/src/completion-types.ts +0 -27
- package/src/completion.ts +0 -2668
- package/src/cycle/layout.ts +0 -1026
- package/src/cycle/parser.ts +0 -387
- package/src/cycle/renderer.ts +0 -653
- package/src/cycle/types.ts +0 -101
- package/src/d3.ts +0 -1434
- package/src/data-chart-parser.ts +0 -1007
- package/src/dgmo-router.ts +0 -296
- package/src/diagnostics-registry.ts +0 -108
- package/src/diagnostics.ts +0 -0
- package/src/dimensions.ts +0 -20
- package/src/directives-registry.ts +0 -396
- package/src/editor/dgmo.grammar +0 -76
- package/src/editor/dgmo.grammar.d.ts +0 -2
- package/src/editor/dgmo.grammar.js +0 -18
- package/src/editor/dgmo.grammar.terms.d.ts +0 -5
- package/src/editor/dgmo.grammar.terms.js +0 -35
- package/src/editor/highlight-api.ts +0 -596
- package/src/editor/highlight.ts +0 -36
- package/src/editor/index.ts +0 -27
- package/src/editor/keywords.ts +0 -128
- package/src/editor/tokens.ts +0 -30
- package/src/element/index.ts +0 -432
- package/src/embed/css.ts +0 -312
- package/src/embed/escape.ts +0 -15
- package/src/embed/index.ts +0 -280
- package/src/er/classify.ts +0 -228
- package/src/er/layout.ts +0 -530
- package/src/er/parser.ts +0 -750
- package/src/er/renderer.ts +0 -725
- package/src/er/types.ts +0 -52
- package/src/error-card.ts +0 -269
- package/src/event-line/diagnostics.ts +0 -117
- package/src/event-line/parser.ts +0 -643
- package/src/event-line/renderer.ts +0 -1742
- package/src/event-line/types.ts +0 -74
- package/src/fonts.ts +0 -3
- package/src/gantt/calculator.ts +0 -979
- package/src/gantt/parser.ts +0 -1641
- package/src/gantt/renderer.ts +0 -3787
- package/src/gantt/resolver.ts +0 -172
- package/src/gantt/types.ts +0 -206
- package/src/graph/diagnostics.ts +0 -64
- package/src/graph/edge-spline.ts +0 -29
- package/src/graph/flowchart-parser.ts +0 -759
- package/src/graph/flowchart-renderer.ts +0 -817
- package/src/graph/layout.ts +0 -472
- package/src/graph/notes.ts +0 -21
- package/src/graph/state-collapse.ts +0 -78
- package/src/graph/state-parser.ts +0 -574
- package/src/graph/state-renderer.ts +0 -653
- package/src/graph/types.ts +0 -65
- package/src/index.ts +0 -261
- package/src/infra/compute.ts +0 -1385
- package/src/infra/layout.ts +0 -888
- package/src/infra/parser.ts +0 -1234
- package/src/infra/renderer.ts +0 -2534
- package/src/infra/roles.ts +0 -75
- package/src/infra/types.ts +0 -216
- package/src/infra/validation.ts +0 -201
- package/src/journey-map/layout.ts +0 -490
- package/src/journey-map/parser.ts +0 -557
- package/src/journey-map/renderer.ts +0 -1580
- package/src/journey-map/types.ts +0 -47
- package/src/kanban/mutations.ts +0 -175
- package/src/kanban/parser.ts +0 -509
- package/src/kanban/renderer.ts +0 -1449
- package/src/kanban/types.ts +0 -39
- package/src/label-layout.ts +0 -368
- package/src/map/colorize.ts +0 -54
- package/src/map/completion.ts +0 -316
- package/src/map/context-labels.ts +0 -609
- package/src/map/data/PROVENANCE.json +0 -1
- package/src/map/data/README.md +0 -40
- package/src/map/data/airport-collisions.json +0 -1
- package/src/map/data/airports.json +0 -1
- package/src/map/data/gazetteer.json +0 -1
- package/src/map/data/lakes.json +0 -1
- package/src/map/data/mountain-ranges.json +0 -1
- package/src/map/data/na-lakes.json +0 -1
- package/src/map/data/na-land.json +0 -1
- package/src/map/data/region-names.json +0 -1
- package/src/map/data/rivers.json +0 -1
- package/src/map/data/types.ts +0 -121
- package/src/map/data/us-states.json +0 -1
- package/src/map/data/water-bodies.json +0 -1
- package/src/map/data/world-coarse.json +0 -1
- package/src/map/data/world-detail.json +0 -1
- package/src/map/diagnostics.ts +0 -134
- package/src/map/dimensions.ts +0 -150
- package/src/map/geo-query.ts +0 -295
- package/src/map/geo.ts +0 -438
- package/src/map/invert.ts +0 -111
- package/src/map/layout.ts +0 -5069
- package/src/map/legend-band.ts +0 -127
- package/src/map/load-data.ts +0 -186
- package/src/map/parser.ts +0 -783
- package/src/map/renderer.ts +0 -1445
- package/src/map/resolved-types.ts +0 -160
- package/src/map/resolver.ts +0 -1146
- package/src/map/types.ts +0 -194
- package/src/mindmap/collapse.ts +0 -67
- package/src/mindmap/layout.ts +0 -649
- package/src/mindmap/parser.ts +0 -430
- package/src/mindmap/renderer.ts +0 -637
- package/src/mindmap/text-wrap.ts +0 -218
- package/src/mindmap/types.ts +0 -56
- package/src/org/collapse.ts +0 -151
- package/src/org/layout.ts +0 -1262
- package/src/org/parser.ts +0 -519
- package/src/org/renderer.ts +0 -866
- package/src/org/resolver.ts +0 -636
- package/src/palettes/atlas.ts +0 -77
- package/src/palettes/blueprint.ts +0 -73
- package/src/palettes/catppuccin.ts +0 -84
- package/src/palettes/color-utils.ts +0 -443
- package/src/palettes/index.ts +0 -67
- package/src/palettes/nord.ts +0 -67
- package/src/palettes/registry.ts +0 -114
- package/src/palettes/slate.ts +0 -73
- package/src/palettes/tidewater.ts +0 -73
- package/src/palettes/tokyo-night.ts +0 -86
- package/src/palettes/types.ts +0 -88
- package/src/pert/analyzer.ts +0 -1183
- package/src/pert/diagnostics.ts +0 -110
- package/src/pert/index.ts +0 -43
- package/src/pert/internal.ts +0 -252
- package/src/pert/layout.ts +0 -971
- package/src/pert/monte-carlo.ts +0 -446
- package/src/pert/parser.ts +0 -1606
- package/src/pert/renderer.ts +0 -4009
- package/src/pert/share-normalize.ts +0 -62
- package/src/pert/types.ts +0 -604
- package/src/pyramid/parser.ts +0 -185
- package/src/pyramid/renderer.ts +0 -768
- package/src/pyramid/types.ts +0 -28
- package/src/quadrant/parser.ts +0 -18
- package/src/quadrant/renderer.ts +0 -638
- package/src/raci/diagnostics.ts +0 -213
- package/src/raci/index.ts +0 -23
- package/src/raci/mutations.ts +0 -321
- package/src/raci/parser.ts +0 -699
- package/src/raci/renderer.ts +0 -1627
- package/src/raci/types.ts +0 -82
- package/src/raci/variants.ts +0 -320
- package/src/render.ts +0 -268
- package/src/ring/parser.ts +0 -212
- package/src/ring/renderer.ts +0 -490
- package/src/ring/types.ts +0 -27
- package/src/sequence/collapse.ts +0 -174
- package/src/sequence/parser.ts +0 -1596
- package/src/sequence/participant-inference.ts +0 -152
- package/src/sequence/renderer.ts +0 -3168
- package/src/sequence/tag-resolution.ts +0 -164
- package/src/sharing.ts +0 -211
- package/src/sitemap/collapse.ts +0 -100
- package/src/sitemap/layout.ts +0 -925
- package/src/sitemap/parser.ts +0 -755
- package/src/sitemap/renderer.ts +0 -828
- package/src/sitemap/types.ts +0 -42
- package/src/slope/parser.ts +0 -18
- package/src/slope/renderer.ts +0 -378
- package/src/swimlane/diagnostics.ts +0 -94
- package/src/swimlane/layout.ts +0 -597
- package/src/swimlane/parser.ts +0 -613
- package/src/swimlane/renderer.ts +0 -681
- package/src/swimlane/types.ts +0 -151
- package/src/tech-radar/interactive.ts +0 -1129
- package/src/tech-radar/layout.ts +0 -197
- package/src/tech-radar/parser.ts +0 -436
- package/src/tech-radar/renderer.ts +0 -1239
- package/src/tech-radar/shared.ts +0 -151
- package/src/tech-radar/types.ts +0 -86
- package/src/themes.ts +0 -22
- package/src/timeline/parser.ts +0 -472
- package/src/timeline/renderer.ts +0 -3024
- package/src/timeline/types.ts +0 -33
- package/src/timeline/viz-parser.ts +0 -21
- package/src/treemap/diagnostics.ts +0 -62
- package/src/treemap/layout-radial.ts +0 -233
- package/src/treemap/layout.ts +0 -189
- package/src/treemap/parser.ts +0 -463
- package/src/treemap/renderer-radial.ts +0 -438
- package/src/treemap/renderer.ts +0 -572
- package/src/treemap/treemap-shared.ts +0 -309
- package/src/treemap/types.ts +0 -60
- package/src/utils/arrow-markers.ts +0 -51
- package/src/utils/arrows-diagnostics.ts +0 -62
- package/src/utils/arrows.ts +0 -227
- package/src/utils/brand.ts +0 -61
- package/src/utils/card.ts +0 -183
- package/src/utils/collapse-engine/tree-edges.ts +0 -115
- package/src/utils/collapse-engine/tree.ts +0 -117
- package/src/utils/d3-helpers.ts +0 -219
- package/src/utils/d3-types.ts +0 -9
- package/src/utils/description-helpers.ts +0 -38
- package/src/utils/duration.ts +0 -312
- package/src/utils/export-container.ts +0 -41
- package/src/utils/expr-eval.ts +0 -27
- package/src/utils/fit-canvas.ts +0 -64
- package/src/utils/hover-styles.ts +0 -673
- package/src/utils/inline-markdown.ts +0 -96
- package/src/utils/legend-constants.ts +0 -48
- package/src/utils/legend-d3.ts +0 -618
- package/src/utils/legend-integration.ts +0 -107
- package/src/utils/legend-layout.ts +0 -776
- package/src/utils/legend-svg.ts +0 -214
- package/src/utils/legend-types.ts +0 -272
- package/src/utils/name-normalize.ts +0 -163
- package/src/utils/note-box/constants.ts +0 -25
- package/src/utils/note-box/index.ts +0 -11
- package/src/utils/note-box/metrics.ts +0 -90
- package/src/utils/note-box/svg.ts +0 -331
- package/src/utils/notes/bounds.ts +0 -30
- package/src/utils/notes/build.ts +0 -131
- package/src/utils/notes/index.ts +0 -18
- package/src/utils/notes/model.ts +0 -19
- package/src/utils/notes/parse.ts +0 -131
- package/src/utils/notes/place.ts +0 -177
- package/src/utils/notes/resolve.ts +0 -88
- package/src/utils/number-format.ts +0 -36
- package/src/utils/parsing.ts +0 -953
- package/src/utils/reserved-key-registry.ts +0 -239
- package/src/utils/safe-href.ts +0 -38
- package/src/utils/scaling.ts +0 -97
- package/src/utils/svg-embed.ts +0 -251
- package/src/utils/tag-groups.ts +0 -607
- package/src/utils/text-measure.ts +0 -122
- package/src/utils/time-ticks.ts +0 -253
- package/src/utils/title-constants.ts +0 -24
- package/src/utils/visual-conventions.ts +0 -61
- package/src/utils/wrapped-desc.ts +0 -87
- package/src/venn/parser.ts +0 -18
- package/src/venn/renderer.ts +0 -1047
- package/src/version-control/diagnostics.ts +0 -67
- package/src/version-control/parser.ts +0 -544
- package/src/version-control/renderer.ts +0 -724
- package/src/version-control/types.ts +0 -100
- package/src/visualizations/parse.ts +0 -1560
- package/src/visualizations/types.ts +0 -262
- package/src/wireframe/layout.ts +0 -479
- package/src/wireframe/parser.ts +0 -1114
- package/src/wireframe/renderer.ts +0 -1318
- package/src/wireframe/types.ts +0 -110
- package/src/wordcloud/parser.ts +0 -18
- package/src/wordcloud/renderer.ts +0 -357
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import type { DiagnosticSpec } from './diagnostics';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Declarative metadata for color diagnostics emitted as inline literals in
|
|
5
|
-
* src/colors.ts. Color parsing is shared by every chart type, so these are
|
|
6
|
-
* GLOBAL (chartType: null). Additive only — colors.ts remains the source of
|
|
7
|
-
* truth for emission; this mirrors the wording + ACTUAL runtime severity.
|
|
8
|
-
*
|
|
9
|
-
* Note: E_INVALID_COLOR is emitted from three sites with slightly different
|
|
10
|
-
* wording (trailing-token, hex/rgb/hsl literal, unknown-name) but a single
|
|
11
|
-
* stable code. All three emit `warning` at runtime despite the `E_` prefix —
|
|
12
|
-
* the library degrades gracefully (keeps the word) while the MCP render gate
|
|
13
|
-
* blocks on the code. The canonical (trailing-token) wording is used below.
|
|
14
|
-
*/
|
|
15
|
-
export const COLOR_DIAGNOSTICS: DiagnosticSpec[] = [
|
|
16
|
-
{
|
|
17
|
-
// src/colors.ts:317/347/359 — makeDgmoError(..., 'warning', INVALID_COLOR_CODE='E_INVALID_COLOR')
|
|
18
|
-
// Runtime: emitted as warning despite E_ prefix
|
|
19
|
-
code: 'E_INVALID_COLOR',
|
|
20
|
-
severity: 'warning',
|
|
21
|
-
chartType: null,
|
|
22
|
-
title: 'Invalid DGMO color',
|
|
23
|
-
message: (p) =>
|
|
24
|
-
`Color "${String(
|
|
25
|
-
p.token ?? p.color ?? ''
|
|
26
|
-
)}" is not a valid DGMO color — DGMO accepts only these 11 named colors: <names> (no hex, no CSS color names).`,
|
|
27
|
-
hint: 'Use one of the 11 named palette colors instead of a hex/rgb()/hsl() or CSS color name.',
|
|
28
|
-
example: `version-control
|
|
29
|
-
main
|
|
30
|
-
Initial commit
|
|
31
|
-
develop from main crimson
|
|
32
|
-
Set up CI
|
|
33
|
-
`,
|
|
34
|
-
},
|
|
35
|
-
];
|
package/src/colors.ts
DELETED
|
@@ -1,379 +0,0 @@
|
|
|
1
|
-
// ============================================================
|
|
2
|
-
// Shared Nord Color Palette
|
|
3
|
-
// ============================================================
|
|
4
|
-
|
|
5
|
-
/** Complete 16-entry Nord palette. */
|
|
6
|
-
export const nord = {
|
|
7
|
-
// Polar Night (dark)
|
|
8
|
-
nord0: '#2e3440',
|
|
9
|
-
nord1: '#3b4252',
|
|
10
|
-
nord2: '#434c5e',
|
|
11
|
-
nord3: '#4c566a',
|
|
12
|
-
// Snow Storm (light)
|
|
13
|
-
nord4: '#d8dee9',
|
|
14
|
-
nord5: '#e5e9f0',
|
|
15
|
-
nord6: '#eceff4',
|
|
16
|
-
// Frost (accent blues)
|
|
17
|
-
nord7: '#8fbcbb',
|
|
18
|
-
nord8: '#88c0d0',
|
|
19
|
-
nord9: '#81a1c1',
|
|
20
|
-
nord10: '#5e81ac',
|
|
21
|
-
// Aurora (colors)
|
|
22
|
-
nord11: '#bf616a', // red
|
|
23
|
-
nord12: '#d08770', // orange
|
|
24
|
-
nord13: '#ebcb8b', // yellow
|
|
25
|
-
nord14: '#a3be8c', // green
|
|
26
|
-
nord15: '#b48ead', // purple
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
/** Color name → Nord hex for inline `(color)` annotations. */
|
|
30
|
-
export const colorNames: Record<string, string> = {
|
|
31
|
-
red: nord.nord11,
|
|
32
|
-
orange: nord.nord12,
|
|
33
|
-
yellow: nord.nord13,
|
|
34
|
-
green: nord.nord14,
|
|
35
|
-
blue: nord.nord10,
|
|
36
|
-
purple: nord.nord15,
|
|
37
|
-
teal: nord.nord7,
|
|
38
|
-
cyan: nord.nord8,
|
|
39
|
-
gray: nord.nord3,
|
|
40
|
-
black: nord.nord0,
|
|
41
|
-
white: nord.nord6,
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* The canonical, closed set of color names accepted by the DGMO language.
|
|
46
|
-
* See `docs/dgmo-language-spec.md` §1.5. Users cannot extend this list —
|
|
47
|
-
* palettes only provide the per-theme hex values for these names.
|
|
48
|
-
*/
|
|
49
|
-
export const RECOGNIZED_COLOR_NAMES = Object.freeze([
|
|
50
|
-
'red',
|
|
51
|
-
'orange',
|
|
52
|
-
'yellow',
|
|
53
|
-
'green',
|
|
54
|
-
'blue',
|
|
55
|
-
'purple',
|
|
56
|
-
'teal',
|
|
57
|
-
'cyan',
|
|
58
|
-
'gray',
|
|
59
|
-
'black',
|
|
60
|
-
'white',
|
|
61
|
-
] as const);
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* The canonical order in which the categorical (non-neutral) color names are
|
|
65
|
-
* auto-assigned: tag/group swatches (`autoTagColorCycle`) and data-chart
|
|
66
|
-
* series colors (`getSeriesColors`) both derive their rotation from this list.
|
|
67
|
-
*
|
|
68
|
-
* Seeded with the RGB primaries (`red, green, blue`) for an unmistakable first
|
|
69
|
-
* three, then each subsequent hue is chosen to fill the widest remaining gap on
|
|
70
|
-
* the color wheel — maximizing contrast between adjacent swatches. Neutrals
|
|
71
|
-
* (`gray`/`black`/`white`) are intentionally excluded so auto-picked colors
|
|
72
|
-
* always read as distinct legend swatches.
|
|
73
|
-
*/
|
|
74
|
-
export const CATEGORICAL_COLOR_ORDER = Object.freeze([
|
|
75
|
-
'red',
|
|
76
|
-
'green',
|
|
77
|
-
'blue',
|
|
78
|
-
'yellow',
|
|
79
|
-
'teal',
|
|
80
|
-
'purple',
|
|
81
|
-
'orange',
|
|
82
|
-
'cyan',
|
|
83
|
-
] as const);
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Returns true iff `name` is one of the 11 recognized DGMO color names.
|
|
87
|
-
*/
|
|
88
|
-
export function isRecognizedColorName(name: string): boolean {
|
|
89
|
-
return Object.prototype.hasOwnProperty.call(colorNames, name.toLowerCase());
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Resolves a recognized color name to its hex value for the active palette
|
|
94
|
-
* (falling back to the built-in Nord defaults). Returns `null` for any
|
|
95
|
-
* unrecognized input — including hex codes, CSS keywords like `pink`,
|
|
96
|
-
* and typos. Callers MUST treat `null` as a parse error and emit a
|
|
97
|
-
* diagnostic; do not silently fall back to the raw input.
|
|
98
|
-
*/
|
|
99
|
-
export function resolveColor(
|
|
100
|
-
color: string,
|
|
101
|
-
palette?: { colors: Record<string, string> }
|
|
102
|
-
): string | null {
|
|
103
|
-
if (!color) return null;
|
|
104
|
-
// Reject hex color codes — only named colors are supported
|
|
105
|
-
if (color.startsWith('#')) return null;
|
|
106
|
-
|
|
107
|
-
const lower = color.toLowerCase();
|
|
108
|
-
if (!isRecognizedColorName(lower)) return null;
|
|
109
|
-
|
|
110
|
-
if (palette) {
|
|
111
|
-
const named = palette.colors[lower];
|
|
112
|
-
if (named) return named;
|
|
113
|
-
}
|
|
114
|
-
return colorNames[lower] ?? null;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
import type { DgmoError } from './diagnostics';
|
|
118
|
-
import { makeDgmoError, suggest } from './diagnostics';
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Stable diagnostic code for "this token is not one of the 11 named palette
|
|
122
|
-
* colors" — covers both hex/CSS literals (emitted as `error`) and unrecognized
|
|
123
|
-
* bare words like `crimson` (emitted as `warning`). Consumers that want to
|
|
124
|
-
* HARD-BLOCK invalid colors regardless of severity (e.g. the MCP render gate)
|
|
125
|
-
* filter on this code rather than re-deriving the rule.
|
|
126
|
-
*/
|
|
127
|
-
export const INVALID_COLOR_CODE = 'E_INVALID_COLOR';
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* CSS / X11 color names that are NOT one of DGMO's 11 — mapped to their hex so
|
|
131
|
-
* a "nearest valid color" hint can be computed. This is the blocklist that lets
|
|
132
|
-
* the trailing-token rule tell an *intended-but-invalid* color (`pink`,
|
|
133
|
-
* `crimson`, `navy`) apart from an ordinary label word (`Zinfandel`, `Blanc`):
|
|
134
|
-
* a lowercase trailing token found here is flagged, anything else stays label
|
|
135
|
-
* text. Our 11 valid names are deliberately excluded. Extend freely — it only
|
|
136
|
-
* sharpens detection. (Case-sensitive lowercase, matching the §1.5 color rule.)
|
|
137
|
-
*/
|
|
138
|
-
export const INVALID_CSS_COLOR_HEX: Readonly<Record<string, string>> =
|
|
139
|
-
Object.freeze({
|
|
140
|
-
pink: '#ffc0cb',
|
|
141
|
-
hotpink: '#ff69b4',
|
|
142
|
-
deeppink: '#ff1493',
|
|
143
|
-
lightpink: '#ffb6c1',
|
|
144
|
-
palevioletred: '#db7093',
|
|
145
|
-
crimson: '#dc143c',
|
|
146
|
-
scarlet: '#ff2400',
|
|
147
|
-
firebrick: '#b22222',
|
|
148
|
-
darkred: '#8b0000',
|
|
149
|
-
maroon: '#800000',
|
|
150
|
-
salmon: '#fa8072',
|
|
151
|
-
lightsalmon: '#ffa07a',
|
|
152
|
-
darksalmon: '#e9967a',
|
|
153
|
-
coral: '#ff7f50',
|
|
154
|
-
lightcoral: '#f08080',
|
|
155
|
-
tomato: '#ff6347',
|
|
156
|
-
orangered: '#ff4500',
|
|
157
|
-
darkorange: '#ff8c00',
|
|
158
|
-
gold: '#ffd700',
|
|
159
|
-
goldenrod: '#daa520',
|
|
160
|
-
darkgoldenrod: '#b8860b',
|
|
161
|
-
khaki: '#f0e68c',
|
|
162
|
-
darkkhaki: '#bdb76b',
|
|
163
|
-
amber: '#ffbf00',
|
|
164
|
-
lavender: '#e6e6fa',
|
|
165
|
-
violet: '#ee82ee',
|
|
166
|
-
magenta: '#ff00ff',
|
|
167
|
-
fuchsia: '#ff00ff',
|
|
168
|
-
orchid: '#da70d6',
|
|
169
|
-
plum: '#dda0dd',
|
|
170
|
-
indigo: '#4b0082',
|
|
171
|
-
navy: '#000080',
|
|
172
|
-
midnightblue: '#191970',
|
|
173
|
-
darkblue: '#00008b',
|
|
174
|
-
mediumblue: '#0000cd',
|
|
175
|
-
royalblue: '#4169e1',
|
|
176
|
-
cornflowerblue: '#6495ed',
|
|
177
|
-
dodgerblue: '#1e90ff',
|
|
178
|
-
deepskyblue: '#00bfff',
|
|
179
|
-
skyblue: '#87ceeb',
|
|
180
|
-
lightskyblue: '#87cefa',
|
|
181
|
-
lightblue: '#add8e6',
|
|
182
|
-
powderblue: '#b0e0e6',
|
|
183
|
-
steelblue: '#4682b4',
|
|
184
|
-
slateblue: '#6a5acd',
|
|
185
|
-
cadetblue: '#5f9ea0',
|
|
186
|
-
turquoise: '#40e0d0',
|
|
187
|
-
aqua: '#00ffff',
|
|
188
|
-
aquamarine: '#7fffd4',
|
|
189
|
-
lime: '#00ff00',
|
|
190
|
-
limegreen: '#32cd32',
|
|
191
|
-
lightgreen: '#90ee90',
|
|
192
|
-
palegreen: '#98fb98',
|
|
193
|
-
seagreen: '#2e8b57',
|
|
194
|
-
mediumseagreen: '#3cb371',
|
|
195
|
-
forestgreen: '#228b22',
|
|
196
|
-
darkgreen: '#006400',
|
|
197
|
-
olive: '#808000',
|
|
198
|
-
olivedrab: '#6b8e23',
|
|
199
|
-
darkolivegreen: '#556b2f',
|
|
200
|
-
chartreuse: '#7fff00',
|
|
201
|
-
lawngreen: '#7cfc00',
|
|
202
|
-
springgreen: '#00ff7f',
|
|
203
|
-
greenyellow: '#adff2f',
|
|
204
|
-
brown: '#a52a2a',
|
|
205
|
-
sienna: '#a0522d',
|
|
206
|
-
chocolate: '#d2691e',
|
|
207
|
-
peru: '#cd853f',
|
|
208
|
-
tan: '#d2b48c',
|
|
209
|
-
beige: '#f5f5dc',
|
|
210
|
-
wheat: '#f5deb3',
|
|
211
|
-
ivory: '#fffff0',
|
|
212
|
-
silver: '#c0c0c0',
|
|
213
|
-
lightgray: '#d3d3d3',
|
|
214
|
-
lightgrey: '#d3d3d3',
|
|
215
|
-
darkgray: '#a9a9a9',
|
|
216
|
-
darkgrey: '#a9a9a9',
|
|
217
|
-
dimgray: '#696969',
|
|
218
|
-
dimgrey: '#696969',
|
|
219
|
-
slategray: '#708090',
|
|
220
|
-
slategrey: '#708090',
|
|
221
|
-
gainsboro: '#dcdcdc',
|
|
222
|
-
grey: '#808080',
|
|
223
|
-
});
|
|
224
|
-
|
|
225
|
-
/**
|
|
226
|
-
* Best-effort nearest recognized color NAME for an unsupported hex value.
|
|
227
|
-
* Matches by HUE (with a low-saturation cutoff routing to black/white/gray),
|
|
228
|
-
* NOT raw RGB distance to the muted palette hexes — vivid LLM colors like a
|
|
229
|
-
* `#3cb44b` green would otherwise snap to `gray` against a desaturated sage.
|
|
230
|
-
* Returns null for non-hex input (CSS function/keyword colors, no RGB to read).
|
|
231
|
-
* Used ONLY to enrich a diagnostic — never to silently accept the value.
|
|
232
|
-
*/
|
|
233
|
-
export function nearestNamedColor(input: string): string | null {
|
|
234
|
-
// CSS color name → resolve to its hex first so hue-matching works on it too.
|
|
235
|
-
const cssHex = INVALID_CSS_COLOR_HEX[input.trim().toLowerCase()];
|
|
236
|
-
if (cssHex) input = cssHex;
|
|
237
|
-
const m = /^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(input.trim());
|
|
238
|
-
if (!m) return null;
|
|
239
|
-
let h = m[1]!.toLowerCase();
|
|
240
|
-
if (h.length === 3)
|
|
241
|
-
h = h
|
|
242
|
-
.split('')
|
|
243
|
-
.map((c) => c + c)
|
|
244
|
-
.join('');
|
|
245
|
-
const r = parseInt(h.slice(0, 2), 16) / 255;
|
|
246
|
-
const g = parseInt(h.slice(2, 4), 16) / 255;
|
|
247
|
-
const b = parseInt(h.slice(4, 6), 16) / 255;
|
|
248
|
-
const max = Math.max(r, g, b);
|
|
249
|
-
const min = Math.min(r, g, b);
|
|
250
|
-
const delta = max - min;
|
|
251
|
-
const l = (max + min) / 2;
|
|
252
|
-
const s = delta === 0 ? 0 : delta / (1 - Math.abs(2 * l - 1));
|
|
253
|
-
// Low chroma → a neutral; pick by lightness.
|
|
254
|
-
if (s < 0.15) {
|
|
255
|
-
if (l < 0.2) return 'black';
|
|
256
|
-
if (l > 0.85) return 'white';
|
|
257
|
-
return 'gray';
|
|
258
|
-
}
|
|
259
|
-
let hue: number;
|
|
260
|
-
if (max === r) hue = 60 * (((g - b) / delta) % 6);
|
|
261
|
-
else if (max === g) hue = 60 * ((b - r) / delta + 2);
|
|
262
|
-
else hue = 60 * ((r - g) / delta + 4);
|
|
263
|
-
if (hue < 0) hue += 360;
|
|
264
|
-
// Canonical hue anchors for the 8 chromatic names (red appears at both 0 and
|
|
265
|
-
// 360 so wrap-around resolves correctly).
|
|
266
|
-
const anchors: readonly [string, number][] = [
|
|
267
|
-
['red', 0],
|
|
268
|
-
['orange', 30],
|
|
269
|
-
['yellow', 55],
|
|
270
|
-
['green', 120],
|
|
271
|
-
['teal', 170],
|
|
272
|
-
['cyan', 190],
|
|
273
|
-
['blue', 225],
|
|
274
|
-
['purple', 285],
|
|
275
|
-
['red', 360],
|
|
276
|
-
];
|
|
277
|
-
let best = 'red';
|
|
278
|
-
let bestD = Infinity;
|
|
279
|
-
for (const [name, deg] of anchors) {
|
|
280
|
-
const d = Math.abs(hue - deg);
|
|
281
|
-
if (d < bestD) {
|
|
282
|
-
bestD = d;
|
|
283
|
-
best = name;
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
return best;
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
/**
|
|
290
|
-
* True iff `token` is an INTENDED-but-invalid color: a hex/`rgb()`/`hsl()`
|
|
291
|
-
* literal, or a known CSS color name that isn't one of DGMO's 11. Lets the
|
|
292
|
-
* trailing-token rule flag `Rosé pink` / `Foo #e6194b` while leaving genuine
|
|
293
|
-
* label words (`Zinfandel`) untouched.
|
|
294
|
-
*/
|
|
295
|
-
export function isInvalidColorToken(token: string): boolean {
|
|
296
|
-
if (/^(#|rgba?\(|hsla?\()/i.test(token)) return true;
|
|
297
|
-
const lower = token.toLowerCase();
|
|
298
|
-
return (
|
|
299
|
-
INVALID_CSS_COLOR_HEX[lower] !== undefined && !isRecognizedColorName(lower)
|
|
300
|
-
);
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
/**
|
|
304
|
-
* Build an `E_INVALID_COLOR` diagnostic for an intended-but-invalid trailing
|
|
305
|
-
* color token, or return null if `token` isn't color-like (so it stays label
|
|
306
|
-
* text). Severity is `warning` so the library degrades gracefully (the value
|
|
307
|
-
* just keeps the word); the MCP render gate blocks on the code regardless.
|
|
308
|
-
* Used by `extractColor` to close the trailing-token "silent swallow" gap.
|
|
309
|
-
*/
|
|
310
|
-
export function invalidColorDiagnostic(
|
|
311
|
-
token: string,
|
|
312
|
-
line: number
|
|
313
|
-
): DgmoError | null {
|
|
314
|
-
if (!isInvalidColorToken(token)) return null;
|
|
315
|
-
const nearest = nearestNamedColor(token);
|
|
316
|
-
const near = nearest ? ` Nearest: ${nearest}.` : '';
|
|
317
|
-
return makeDgmoError(
|
|
318
|
-
line,
|
|
319
|
-
`Color "${token}" is not a valid DGMO color — DGMO accepts only these 11 named colors: ${RECOGNIZED_COLOR_NAMES.join(', ')} (no hex, no CSS color names).${near}`,
|
|
320
|
-
'warning',
|
|
321
|
-
INVALID_COLOR_CODE
|
|
322
|
-
);
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
/**
|
|
326
|
-
* Resolves a color name and pushes a warning diagnostic on failure.
|
|
327
|
-
* Returns the hex string for valid names, or `undefined` for unknown
|
|
328
|
-
* input (after pushing a diagnostic). Use this from parsers that have
|
|
329
|
-
* a diagnostics array and a line number in scope.
|
|
330
|
-
*/
|
|
331
|
-
export function resolveColorWithDiagnostic(
|
|
332
|
-
color: string,
|
|
333
|
-
line: number,
|
|
334
|
-
diagnostics: DgmoError[],
|
|
335
|
-
palette?: { colors: Record<string, string> }
|
|
336
|
-
): string | undefined {
|
|
337
|
-
const resolved = resolveColor(color, palette);
|
|
338
|
-
if (resolved !== null) return resolved;
|
|
339
|
-
// Literal color values (hex `#e6194b`, `rgb(...)`, `hsl(...)`) are NOT part
|
|
340
|
-
// of the DGMO language — only the 11 named palette colors are accepted, so
|
|
341
|
-
// that a single source recolors correctly across every palette and theme.
|
|
342
|
-
// Flag these with a precise error rather than a typo suggestion.
|
|
343
|
-
if (/^(#|rgba?\(|hsla?\()/i.test(color)) {
|
|
344
|
-
const nearest = nearestNamedColor(color);
|
|
345
|
-
const near = nearest ? ` Nearest: ${nearest}.` : '';
|
|
346
|
-
diagnostics.push(
|
|
347
|
-
makeDgmoError(
|
|
348
|
-
line,
|
|
349
|
-
`Color "${color}" is not supported — DGMO does not accept hex or CSS color values. Use a named palette color: ${RECOGNIZED_COLOR_NAMES.join(', ')}.${near}`,
|
|
350
|
-
'error',
|
|
351
|
-
INVALID_COLOR_CODE
|
|
352
|
-
)
|
|
353
|
-
);
|
|
354
|
-
return undefined;
|
|
355
|
-
}
|
|
356
|
-
const hint = suggest(color, RECOGNIZED_COLOR_NAMES as readonly string[]);
|
|
357
|
-
const suggestion = hint ? ` ${hint}` : '';
|
|
358
|
-
diagnostics.push(
|
|
359
|
-
makeDgmoError(
|
|
360
|
-
line,
|
|
361
|
-
`Unknown color "${color}". DGMO accepts only these 11 named colors: ${RECOGNIZED_COLOR_NAMES.join(', ')} (no hex, no CSS color names).${suggestion}`,
|
|
362
|
-
'warning',
|
|
363
|
-
INVALID_COLOR_CODE
|
|
364
|
-
)
|
|
365
|
-
);
|
|
366
|
-
return undefined;
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
/** @deprecated Use getSeriesColors(palette) from '@/lib/palettes' instead. */
|
|
370
|
-
export const seriesColors = [
|
|
371
|
-
nord.nord10, // blue
|
|
372
|
-
nord.nord14, // green
|
|
373
|
-
nord.nord13, // yellow
|
|
374
|
-
nord.nord12, // orange
|
|
375
|
-
nord.nord15, // purple
|
|
376
|
-
nord.nord11, // red
|
|
377
|
-
nord.nord7, // teal
|
|
378
|
-
nord.nord8, // light blue
|
|
379
|
-
];
|
package/src/completion-types.ts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
// ============================================================
|
|
2
|
-
// Completion / symbol-extraction shared types
|
|
3
|
-
// ============================================================
|
|
4
|
-
//
|
|
5
|
-
// Lives in its own leaf module so chart-type parsers (Class, ER,
|
|
6
|
-
// Flowchart, Infra, Pert) can `import type { DiagramSymbols }` here
|
|
7
|
-
// without depending on completion.ts — which itself imports those
|
|
8
|
-
// parsers' extractSymbols() functions, producing a cycle hub.
|
|
9
|
-
//
|
|
10
|
-
// Keep this file dependency-free.
|
|
11
|
-
|
|
12
|
-
// ChartType is just a string — alias for documentation clarity.
|
|
13
|
-
export type ChartType = string;
|
|
14
|
-
|
|
15
|
-
export interface DiagramSymbols {
|
|
16
|
-
kind: ChartType;
|
|
17
|
-
entities: string[]; // table names, node IDs, class names, etc.
|
|
18
|
-
/**
|
|
19
|
-
* Map of alias-literal → canonical entity name, collected from
|
|
20
|
-
* `Name as <alias>` declarations in the document. Editor surfaces
|
|
21
|
-
* both forms in autocomplete; selecting an alias inserts the alias
|
|
22
|
-
* literal (the alias is input convenience, not a display name).
|
|
23
|
-
*/
|
|
24
|
-
aliases?: Record<string, string>;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export type ExtractFn = (docText: string) => DiagramSymbols;
|