@nowline/renderer 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/stage.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { type NowlineFile, type NowlineServices, type RawDiagnostic, type ResolveDiagnostic, type ResolveResult, type WavePlan } from '@nowline/core';
1
+ import { type IncludePolicy, type NowlineFile, type NowlineServices, type RawDiagnostic, type ResolveDiagnostic, type ResolveResult, type WavePlan } from '@nowline/core';
2
2
  import { type LayoutOptions, type PositionedRoadmap, type RoadmapSchedule } from '@nowline/layout';
3
3
  import { type LangiumDocument, type LangiumSharedCoreServices } from 'langium';
4
4
  import { type LoadedLogo } from './logo.js';
@@ -27,6 +27,8 @@ export interface StageInputs {
27
27
  * caller to report. Omitted: every include error counts.
28
28
  */
29
29
  isToleratedIncludeError?: (diagnostic: ResolveDiagnostic) => boolean;
30
+ /** Where includes may be read from (`resolveIncludes`). Omitted: anywhere. */
31
+ includePolicy?: IncludePolicy;
30
32
  }
31
33
  export type StageResult = {
32
34
  kind: 'invalid';
@@ -1 +1 @@
1
- {"version":3,"file":"stage.d.ts","sourceRoot":"","sources":["../src/stage.ts"],"names":[],"mappings":"AAOA,OAAO,EAIH,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAElB,KAAK,QAAQ,EAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EACH,KAAK,aAAa,EAElB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EAGvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,yBAAyB,EAAO,MAAM,SAAS,CAAC;AACpF,OAAO,EAAE,KAAK,UAAU,EAAY,MAAM,WAAW,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,qFAAqF;AACrF,MAAM,MAAM,WAAW,GAAG,IAAI,CAC1B,aAAa,EACb,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,YAAY,CACxD,CAAC;AAKF,MAAM,WAAW,WAAW;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,QAAQ,EAAE;QAAE,MAAM,EAAE,yBAAyB,CAAC;QAAC,OAAO,EAAE,eAAe,CAAA;KAAE,CAAC;IAC1E,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACjD,gFAAgF;IAChF,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,wEAAwE;IACxE,QAAQ,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;IACxC,MAAM,EAAE,WAAW,CAAC;IACpB;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,CAAC,UAAU,EAAE,iBAAiB,KAAK,OAAO,CAAC;CACxE;AAED,MAAM,MAAM,WAAW,GACjB;IACI,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;IACvC,sEAAsE;IACtE,WAAW,EAAE,aAAa,EAAE,CAAC;CAChC,GACD;IACI,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;IACvC,iFAAiF;IACjF,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,uFAAuF;IACvF,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,wFAAwF;IACxF,QAAQ,EAAE,aAAa,CAAC;CAC3B,GACD;IACI,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;IACvC,GAAG,EAAE,WAAW,CAAC;IACjB,QAAQ,EAAE,aAAa,CAAC;IACxB,mCAAmC;IACnC,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,wEAAwE;IACxE,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,gFAAgF;IAChF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,kFAAkF;IAClF,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB;;;;OAIG;IACH,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,iBAAiB,CAAC;IACzB,sFAAsF;IACtF,MAAM,EAAE,WAAW,CAAC;CACvB,CAAC;AAER,uEAAuE;AACvE,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAC;AAyBrE;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAyD5E"}
1
+ {"version":3,"file":"stage.d.ts","sourceRoot":"","sources":["../src/stage.ts"],"names":[],"mappings":"AAOA,OAAO,EAGH,KAAK,aAAa,EAElB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAElB,KAAK,QAAQ,EAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EACH,KAAK,aAAa,EAElB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EAGvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,yBAAyB,EAAO,MAAM,SAAS,CAAC;AACpF,OAAO,EAAE,KAAK,UAAU,EAAY,MAAM,WAAW,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,qFAAqF;AACrF,MAAM,MAAM,WAAW,GAAG,IAAI,CAC1B,aAAa,EACb,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,YAAY,CACxD,CAAC;AAKF,MAAM,WAAW,WAAW;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,QAAQ,EAAE;QAAE,MAAM,EAAE,yBAAyB,CAAC;QAAC,OAAO,EAAE,eAAe,CAAA;KAAE,CAAC;IAC1E,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACjD,gFAAgF;IAChF,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,wEAAwE;IACxE,QAAQ,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;IACxC,MAAM,EAAE,WAAW,CAAC;IACpB;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,CAAC,UAAU,EAAE,iBAAiB,KAAK,OAAO,CAAC;IACrE,8EAA8E;IAC9E,aAAa,CAAC,EAAE,aAAa,CAAC;CACjC;AAED,MAAM,MAAM,WAAW,GACjB;IACI,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;IACvC,sEAAsE;IACtE,WAAW,EAAE,aAAa,EAAE,CAAC;CAChC,GACD;IACI,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;IACvC,iFAAiF;IACjF,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,uFAAuF;IACvF,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,wFAAwF;IACxF,QAAQ,EAAE,aAAa,CAAC;CAC3B,GACD;IACI,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;IACvC,GAAG,EAAE,WAAW,CAAC;IACjB,QAAQ,EAAE,aAAa,CAAC;IACxB,mCAAmC;IACnC,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,wEAAwE;IACxE,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,gFAAgF;IAChF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,kFAAkF;IAClF,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB;;;;OAIG;IACH,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,iBAAiB,CAAC;IACzB,sFAAsF;IACtF,MAAM,EAAE,WAAW,CAAC;CACvB,CAAC;AAER,uEAAuE;AACvE,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAC;AAyBrE;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CA4D5E"}
package/dist/stage.js CHANGED
@@ -42,12 +42,15 @@ export async function stageRoadmap(inputs) {
42
42
  const resolved = await resolveIncludes(ast, inputs.sourcePath, {
43
43
  services: inputs.services.Nowline,
44
44
  readFile: inputs.readSource,
45
+ includePolicy: inputs.includePolicy,
45
46
  });
46
47
  // An uncoded include error is more fundamental than the wave-rule
47
48
  // errors: the first one wins and hides the routed diagnostics.
48
49
  const isTolerated = inputs.isToleratedIncludeError ?? (() => false);
49
- const errors = resolved.diagnostics.filter((d) => d.severity === 'error' && !isTolerated(d));
50
- const routed = resolved.diagnostics.filter(isRoutedResolveDiagnostic);
50
+ const isCounted = (d) => d.severity !== 'error' || !isTolerated(d);
51
+ const errors = resolved.diagnostics.filter((d) => d.severity === 'error' && isCounted(d));
52
+ // A tolerated error is coded (NL.E0203) but stays the caller's to report.
53
+ const routed = resolved.diagnostics.filter((d) => isRoutedResolveDiagnostic(d) && isCounted(d));
51
54
  const legacy = errors.find((d) => !isRoutedResolveDiagnostic(d));
52
55
  if (legacy) {
53
56
  return { kind: 'include-error', document, legacy, routed: [], resolved };
package/dist/stage.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"stage.js","sourceRoot":"","sources":["../src/stage.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,uEAAuE;AACvE,2EAA2E;AAC3E,0CAA0C;AAC1C,4EAA4E;AAC5E,oBAAoB;AAEpB,OAAO,EACH,aAAa,EACb,0BAA0B,EAC1B,yBAAyB,EAMzB,eAAe,GAElB,MAAM,eAAe,CAAC;AACvB,OAAO,EAEH,aAAa,EAGb,cAAc,EACd,eAAe,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAwD,GAAG,EAAE,MAAM,SAAS,CAAC;AACpF,OAAO,EAAmB,QAAQ,EAAE,MAAM,WAAW,CAAC;AAStD,4CAA4C;AAC5C,MAAM,cAAc,GAAG,CAAC,CAAC;AAmEzB,IAAI,eAAe,GAAG,CAAC,CAAC;AAExB,SAAS,QAAQ;IACb,mEAAmE;IACnE,qBAAqB;IACrB,OAAO,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,eAAe,UAAU,CAAC,CAAC;AACrE,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,MAAmB;IAC5C,IAAI,MAAM,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC,QAAQ,CAAC;IAC5C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC7C,MAAM,QAAQ,GAAG,SAAS,CAAC,sBAAsB,CAAC,UAAU,CACxD,MAAM,CAAC,MAAM,EACb,QAAQ,EAAE,CACb,CAAC;IACF,MAAM,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAkB;IACzC,OAAO,GAAG,CAAC,MAAM,KAAK,YAAY,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,KAAK,cAAc,CAAC;AACrF,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAmB;IAClD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAI,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACtC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;IACtD,CAAC;IAED,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC;IACvC,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE;QAC3D,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO;QACjC,QAAQ,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAC,CAAC;IAEH,kEAAkE;IAClE,+DAA+D;IAC/D,MAAM,WAAW,GAAG,MAAM,CAAC,uBAAuB,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,IAAI,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;IAC7E,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACjE,CAAC;IAED,qEAAqE;IACrE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,EAAE,CAC/E,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CACzB,CAAC;IACF,sEAAsE;IACtE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;IAClE,MAAM,MAAM,GAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IACxE,oEAAoE;IACpE,yDAAyD;IACzD,yCAAyC;IACzC,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;IAC7C,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE;QACvC,GAAG,MAAM;QACT,QAAQ;QACR,IAAI,EAAE,IAAI,EAAE,UAAU;KACzB,CAAC,CAAC;IACH,OAAO;QACH,IAAI,EAAE,QAAQ;QACd,QAAQ;QACR,GAAG;QACH,QAAQ;QACR,MAAM;QACN,IAAI;QACJ,QAAQ;QACR,IAAI;QACJ,QAAQ;QACR,KAAK;QACL,MAAM;KACT,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"stage.js","sourceRoot":"","sources":["../src/stage.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nowline/renderer",
3
- "version": "0.10.0",
3
+ "version": "0.11.0",
4
4
  "description": "Nowline renderer — draws a laid-out roadmap as an SVG image.",
5
5
  "license": "Apache-2.0",
6
6
  "engines": {
@@ -22,8 +22,8 @@
22
22
  "src/"
23
23
  ],
24
24
  "dependencies": {
25
- "@nowline/core": "0.10.0",
26
- "@nowline/layout": "0.10.0",
25
+ "@nowline/core": "0.11.0",
26
+ "@nowline/layout": "0.11.0",
27
27
  "langium": "~4.4.0"
28
28
  },
29
29
  "devDependencies": {
package/src/stage.ts CHANGED
@@ -8,6 +8,7 @@
8
8
  import {
9
9
  buildWavePlan,
10
10
  collectDocumentDiagnostics,
11
+ type IncludePolicy,
11
12
  isRoutedResolveDiagnostic,
12
13
  type NowlineFile,
13
14
  type NowlineServices,
@@ -57,6 +58,8 @@ export interface StageInputs {
57
58
  * caller to report. Omitted: every include error counts.
58
59
  */
59
60
  isToleratedIncludeError?: (diagnostic: ResolveDiagnostic) => boolean;
61
+ /** Where includes may be read from (`resolveIncludes`). Omitted: anywhere. */
62
+ includePolicy?: IncludePolicy;
60
63
  }
61
64
 
62
65
  export type StageResult =
@@ -142,13 +145,16 @@ export async function stageRoadmap(inputs: StageInputs): Promise<StageResult> {
142
145
  const resolved = await resolveIncludes(ast, inputs.sourcePath, {
143
146
  services: inputs.services.Nowline,
144
147
  readFile: inputs.readSource,
148
+ includePolicy: inputs.includePolicy,
145
149
  });
146
150
 
147
151
  // An uncoded include error is more fundamental than the wave-rule
148
152
  // errors: the first one wins and hides the routed diagnostics.
149
153
  const isTolerated = inputs.isToleratedIncludeError ?? (() => false);
150
- const errors = resolved.diagnostics.filter((d) => d.severity === 'error' && !isTolerated(d));
151
- const routed = resolved.diagnostics.filter(isRoutedResolveDiagnostic);
154
+ const isCounted = (d: ResolveDiagnostic): boolean => d.severity !== 'error' || !isTolerated(d);
155
+ const errors = resolved.diagnostics.filter((d) => d.severity === 'error' && isCounted(d));
156
+ // A tolerated error is coded (NL.E0203) but stays the caller's to report.
157
+ const routed = resolved.diagnostics.filter((d) => isRoutedResolveDiagnostic(d) && isCounted(d));
152
158
  const legacy = errors.find((d) => !isRoutedResolveDiagnostic(d));
153
159
  if (legacy) {
154
160
  return { kind: 'include-error', document, legacy, routed: [], resolved };