@principal-ai/principal-view-core 0.27.2 → 0.28.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/events/EventsCanvasValidator.d.ts +13 -0
- package/dist/events/EventsCanvasValidator.d.ts.map +1 -1
- package/dist/events/EventsCanvasValidator.js +70 -0
- package/dist/events/EventsCanvasValidator.js.map +1 -1
- package/dist/events/NamespacePathIndex.d.ts +61 -0
- package/dist/events/NamespacePathIndex.d.ts.map +1 -0
- package/dist/events/NamespacePathIndex.js +74 -0
- package/dist/events/NamespacePathIndex.js.map +1 -0
- package/dist/events/OtelEventPathsValidator.d.ts +75 -0
- package/dist/events/OtelEventPathsValidator.d.ts.map +1 -0
- package/dist/events/OtelEventPathsValidator.js +126 -0
- package/dist/events/OtelEventPathsValidator.js.map +1 -0
- package/dist/events/index.d.ts +4 -0
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +5 -1
- package/dist/events/index.js.map +1 -1
- package/dist/events/path-helpers.d.ts +33 -0
- package/dist/events/path-helpers.d.ts.map +1 -0
- package/dist/events/path-helpers.js +59 -0
- package/dist/events/path-helpers.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/node.d.ts +2 -2
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +3 -1
- package/dist/node.js.map +1 -1
- package/package.json +1 -1
- package/src/events/EventsCanvasValidator.test.ts +190 -0
- package/src/events/EventsCanvasValidator.ts +86 -0
- package/src/events/NamespacePathIndex.test.ts +97 -0
- package/src/events/NamespacePathIndex.ts +100 -0
- package/src/events/OtelEventPathsValidator.test.ts +243 -0
- package/src/events/OtelEventPathsValidator.ts +191 -0
- package/src/events/index.ts +13 -0
- package/src/events/path-helpers.ts +53 -0
- package/src/index.ts +9 -1
- package/src/node.ts +14 -1
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Path helpers shared across events-canvas validators.
|
|
4
|
+
*
|
|
5
|
+
* Paths declared in canvases (namespace `paths`, `otel.files`, etc.) are
|
|
6
|
+
* always repo-relative. These helpers give a consistent notion of
|
|
7
|
+
* canonicalization and prefix-based containment so that separate validators
|
|
8
|
+
* don't drift.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.pathsOverlap = exports.pathCovers = exports.isPathDescendant = exports.normalizePath = void 0;
|
|
12
|
+
/**
|
|
13
|
+
* Canonicalize a declared path for comparison.
|
|
14
|
+
* Strips leading `./`, trailing slashes, and collapses duplicate slashes.
|
|
15
|
+
*/
|
|
16
|
+
function normalizePath(p) {
|
|
17
|
+
return p
|
|
18
|
+
.replace(/^\.\//, '')
|
|
19
|
+
.replace(/\/+$/, '')
|
|
20
|
+
.replace(/\/+/g, '/');
|
|
21
|
+
}
|
|
22
|
+
exports.normalizePath = normalizePath;
|
|
23
|
+
/**
|
|
24
|
+
* True when `child` is strictly nested under `parent` (not equal).
|
|
25
|
+
* Both inputs should already be normalized.
|
|
26
|
+
*/
|
|
27
|
+
function isPathDescendant(child, parent) {
|
|
28
|
+
return child.startsWith(parent + '/');
|
|
29
|
+
}
|
|
30
|
+
exports.isPathDescendant = isPathDescendant;
|
|
31
|
+
/**
|
|
32
|
+
* True when `filepath` is covered by `declaredPath` — either equal to it
|
|
33
|
+
* (file match) or nested under it (folder match). Inputs are normalized
|
|
34
|
+
* internally so callers can pass raw canvas values.
|
|
35
|
+
*/
|
|
36
|
+
function pathCovers(declaredPath, filepath) {
|
|
37
|
+
const d = normalizePath(declaredPath);
|
|
38
|
+
const f = normalizePath(filepath);
|
|
39
|
+
return d === f || isPathDescendant(f, d);
|
|
40
|
+
}
|
|
41
|
+
exports.pathCovers = pathCovers;
|
|
42
|
+
/**
|
|
43
|
+
* Classify the relationship between two declared paths.
|
|
44
|
+
* - 'none': disjoint — no overlap
|
|
45
|
+
* - 'partition': one is strictly a parent of the other — valid nested-namespace case
|
|
46
|
+
* (longest-prefix wins at runtime, parent/child partition the tree)
|
|
47
|
+
* - 'conflict': identical, or overlap that isn't a clean parent-child partition
|
|
48
|
+
*/
|
|
49
|
+
function pathsOverlap(a, b) {
|
|
50
|
+
const na = normalizePath(a);
|
|
51
|
+
const nb = normalizePath(b);
|
|
52
|
+
if (na === nb)
|
|
53
|
+
return 'conflict';
|
|
54
|
+
if (isPathDescendant(na, nb) || isPathDescendant(nb, na))
|
|
55
|
+
return 'partition';
|
|
56
|
+
return 'none';
|
|
57
|
+
}
|
|
58
|
+
exports.pathsOverlap = pathsOverlap;
|
|
59
|
+
//# sourceMappingURL=path-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-helpers.js","sourceRoot":"","sources":["../../src/events/path-helpers.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH;;;GAGG;AACH,SAAgB,aAAa,CAAC,CAAS;IACrC,OAAO,CAAC;SACL,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACpB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;SACnB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC1B,CAAC;AALD,sCAKC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,KAAa,EAAE,MAAc;IAC5D,OAAO,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;AACxC,CAAC;AAFD,4CAEC;AAED;;;;GAIG;AACH,SAAgB,UAAU,CAAC,YAAoB,EAAE,QAAgB;IAC/D,MAAM,CAAC,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IACtC,MAAM,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAClC,OAAO,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC;AAJD,gCAIC;AAED;;;;;;GAMG;AACH,SAAgB,YAAY,CAAC,CAAS,EAAE,CAAS;IAC/C,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,UAAU,CAAC;IACjC,IAAI,gBAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,gBAAgB,CAAC,EAAE,EAAE,EAAE,CAAC;QAAE,OAAO,WAAW,CAAC;IAC7E,OAAO,MAAM,CAAC;AAChB,CAAC;AAND,oCAMC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -48,8 +48,8 @@ export type { DiscoveredCanvas, DiscoveredTestTrace, DiscoveredWorkflow, Discove
|
|
|
48
48
|
export { buildCanvasFileManifest, buildWorkflowFileManifest, buildStoryboardFileManifest, } from './discovery/CanvasFileManifest';
|
|
49
49
|
export { ScopesCanvasValidator, DEFAULT_SCOPE_COLOR, DRAFT_NODE_COLOR, getScopeNames, getScopeDefinition, getScopeColor, normalizeScopes, buildScopeColorMap, getAllScopeNames, } from './scopes';
|
|
50
50
|
export type { ScopesCanvasValidationContext, ScopesCanvasValidationResult, ScopesCanvasViolation, NormalizedScope, } from './scopes';
|
|
51
|
-
export { EventsCanvasValidator } from './events';
|
|
52
|
-
export type { EventNamespaceNode, EventsCanvasValidationContext, EventsCanvasViolation, EventsCanvasValidationResult, } from './events';
|
|
51
|
+
export { EventsCanvasValidator, NamespacePathIndex, OtelEventPathsValidator } from './events';
|
|
52
|
+
export type { EventNamespaceNode, EventsCanvasValidationContext, EventsCanvasViolation, EventsCanvasValidationResult, NamespacePathEntry, NamespacePathMatch, EventsCanvasInput, OtelCanvasInput, OtelEventPathsValidationContext, OtelEventPathsValidationResult, OtelEventPathsViolation, OtelEventPathsRuleId, } from './events';
|
|
53
53
|
export { DEFAULT_SPAN_COLOR, extractSpanConvention, extractSpanConventions, buildSpanColorMap, buildSpanColorMapFromCanvases, matchSpanPattern, getSpanColor, resolveEventSpanColor, } from './spans';
|
|
54
54
|
export type { NormalizedSpanConvention } from './spans';
|
|
55
55
|
export { ExecutionValidator, createExecutionValidator } from './execution/ExecutionValidator';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
*/
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
exports.createInMemoryVersionRegistry = exports.InMemoryVersionRegistry = exports.isWarnSeverity = exports.isErrorSeverity = exports.getSpanDuration = exports.parseNanoTime = exports.flattenResourceAttributes = exports.getAttributeValue = exports.findAttribute = exports.getAttributeStringValue = exports.TraceOrchestrator = exports.CompositeRegistry = exports.LocalRegistry = exports.RemoteRegistry = exports.OtlpTraceParser = exports.getWorkflowRootSpan = exports.getEventSpan = exports.getEventTemplateString = exports.isEventTemplate = exports.deriveEdgesFromSequence = exports.extractEventSpans = exports.setNestedValue = exports.getNestedValue = exports.computeAggregates = exports.hasEventMatching = exports.getRequiredEvents = exports.selectScenario = exports.ParsedTemplate = exports.parseTemplate = exports.renderEventTemplate = exports.renderWorkflow = exports.getConfigNameFromFilename = exports.isYamlFile = exports.parseYaml = exports.CanvasConverter = exports.resolveCanvasColor = exports.CANVAS_COLOR_PRESETS = exports.getOtelNodeIdentifier = exports.isOtelNode = exports.isOtelBoundaryNode = exports.isOtelResourceNode = exports.isOtelScopeNode = exports.isOtelSpanConventionNode = exports.isOtelEventNode = exports.isStandardCanvasNode = exports.hasPVExtension = exports.isGroupNode = exports.isLinkNode = exports.isFileNode = exports.isTextNode = void 0;
|
|
14
|
-
exports.
|
|
15
|
-
exports.InMemoryFileSystemAdapter = exports.getAllNodeIds = exports.findNodesMatchingEventPattern = exports.resolveWorkflowNodeIds = exports.resolveScenarioNodeIds = exports.getNodeEventName = void 0;
|
|
14
|
+
exports.LibraryDiscovery = exports.validateLibraryStructure = exports.LibraryLoader = exports.EventRecorderService = exports.SessionManager = exports.PathBasedEventProcessor = exports.analyzeCoverage = exports.createDashboardValidator = exports.DashboardValidator = exports.createExecutionValidator = exports.ExecutionValidator = exports.resolveEventSpanColor = exports.getSpanColor = exports.matchSpanPattern = exports.buildSpanColorMapFromCanvases = exports.buildSpanColorMap = exports.extractSpanConventions = exports.extractSpanConvention = exports.DEFAULT_SPAN_COLOR = exports.OtelEventPathsValidator = exports.NamespacePathIndex = exports.EventsCanvasValidator = exports.getAllScopeNames = exports.buildScopeColorMap = exports.normalizeScopes = exports.getScopeColor = exports.getScopeDefinition = exports.getScopeNames = exports.DRAFT_NODE_COLOR = exports.DEFAULT_SCOPE_COLOR = exports.ScopesCanvasValidator = exports.buildStoryboardFileManifest = exports.buildWorkflowFileManifest = exports.buildCanvasFileManifest = exports.CanvasDiscovery = exports.SpanMatcher = exports.getScopeMatchSummary = exports.scopeHasMatches = exports.getScopeWithMostSpans = exports.getSpanCountForScope = exports.findScopeByName = exports.getUnmatchedScopes = exports.getPartialMatchedScopes = exports.getMatchedScopes = exports.getAllScopes = exports.getPrimaryScope = exports.getScopeFromUnmatchedSpan = exports.getScopeFromStoryboardMatch = exports.getScopeFromScenarioMatch = exports.groupSpansByTrace = void 0;
|
|
15
|
+
exports.InMemoryFileSystemAdapter = exports.getAllNodeIds = exports.findNodesMatchingEventPattern = exports.resolveWorkflowNodeIds = exports.resolveScenarioNodeIds = exports.getNodeEventName = exports.buildEventNodeMap = exports.buildStoryboardContext = void 0;
|
|
16
16
|
// Import canvas utility functions to re-export (avoids export-from syntax that breaks with exports field)
|
|
17
17
|
const canvas_1 = require("./types/canvas");
|
|
18
18
|
Object.defineProperty(exports, "isTextNode", { enumerable: true, get: function () { return canvas_1.isTextNode; } });
|
|
@@ -129,6 +129,8 @@ Object.defineProperty(exports, "getAllScopeNames", { enumerable: true, get: func
|
|
|
129
129
|
// Export events module (event namespace canvas validation)
|
|
130
130
|
var events_1 = require("./events");
|
|
131
131
|
Object.defineProperty(exports, "EventsCanvasValidator", { enumerable: true, get: function () { return events_1.EventsCanvasValidator; } });
|
|
132
|
+
Object.defineProperty(exports, "NamespacePathIndex", { enumerable: true, get: function () { return events_1.NamespacePathIndex; } });
|
|
133
|
+
Object.defineProperty(exports, "OtelEventPathsValidator", { enumerable: true, get: function () { return events_1.OtelEventPathsValidator; } });
|
|
132
134
|
// Export spans module (span conventions + span color utilities)
|
|
133
135
|
var spans_1 = require("./spans");
|
|
134
136
|
Object.defineProperty(exports, "DEFAULT_SPAN_COLOR", { enumerable: true, get: function () { return spans_1.DEFAULT_SPAN_COLOR; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/node.d.ts
CHANGED
|
@@ -59,6 +59,6 @@ export { ExecutionLoader, createExecutionLoader } from './execution/ExecutionLoa
|
|
|
59
59
|
export type { ExecutionFile, ExecutionLoadResult, } from './execution/ExecutionLoader';
|
|
60
60
|
export { ScopesCanvasValidator, DEFAULT_SCOPE_COLOR, DRAFT_NODE_COLOR, getScopeNames, getScopeDefinition, getScopeColor, normalizeScopes, buildScopeColorMap, getAllScopeNames, } from './scopes';
|
|
61
61
|
export type { ScopesCanvasValidationContext, ScopesCanvasValidationResult, ScopesCanvasViolation, NormalizedScope, } from './scopes';
|
|
62
|
-
export { EventsCanvasValidator, ScopeEventsValidator } from './events';
|
|
63
|
-
export type { EventsCanvasValidationContext, EventsCanvasValidationResult, EventsCanvasViolation, ScopeEventsValidationContext, ScopeEventsValidationResult, ScopeEventsViolation, } from './events';
|
|
62
|
+
export { EventsCanvasValidator, ScopeEventsValidator, NamespacePathIndex, OtelEventPathsValidator, } from './events';
|
|
63
|
+
export type { EventsCanvasValidationContext, EventsCanvasValidationResult, EventsCanvasViolation, ScopeEventsValidationContext, ScopeEventsValidationResult, ScopeEventsViolation, NamespacePathEntry, NamespacePathMatch, EventsCanvasInput, OtelCanvasInput, OtelEventPathsValidationContext, OtelEventPathsValidationResult, OtelEventPathsViolation, OtelEventPathsRuleId, } from './events';
|
|
64
64
|
//# sourceMappingURL=node.d.ts.map
|
package/dist/node.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
|
package/dist/node.js
CHANGED
|
@@ -26,7 +26,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
26
26
|
};
|
|
27
27
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
28
|
exports.getScopeDefinition = exports.getScopeNames = exports.DRAFT_NODE_COLOR = exports.DEFAULT_SCOPE_COLOR = exports.ScopesCanvasValidator = exports.createExecutionLoader = exports.ExecutionLoader = exports.createDashboardValidator = exports.DashboardValidator = exports.createExecutionValidator = exports.ExecutionValidator = exports.LibraryDiscovery = exports.CanvasDiscovery = exports.WorkflowValidator = exports.createWorkflowValidator = exports.setNestedValue = exports.getNestedValue = exports.computeAggregates = exports.hasEventMatching = exports.getRequiredEvents = exports.selectScenario = exports.ParsedTemplate = exports.parseTemplate = exports.renderWorkflow = exports.InMemoryFileSystemAdapter = exports.EventRegistry = exports.LibraryLoader = exports.getConfigNameFromFilename = exports.isYamlFile = exports.parseYaml = exports.ConfigurationLoader = exports.EventRecorderService = exports.SessionManager = exports.traceToCanvasJson = exports.traceToCanvas = exports.generatorRegistry = exports.TypeScriptGenerator = exports.generateTypes = exports.analyzeCoverage = exports.EventValidationError = exports.createValidatedEmitter = exports.EventValidator = exports.CanvasConverter = exports.GraphConverter = exports.PathMatcher = exports.PathBasedEventProcessor = exports.GraphInstrumentationHelper = exports.ConfigurationValidator = exports.ValidationEngine = exports.EventProcessor = void 0;
|
|
29
|
-
exports.ScopeEventsValidator = exports.EventsCanvasValidator = exports.getAllScopeNames = exports.buildScopeColorMap = exports.normalizeScopes = exports.getScopeColor = void 0;
|
|
29
|
+
exports.OtelEventPathsValidator = exports.NamespacePathIndex = exports.ScopeEventsValidator = exports.EventsCanvasValidator = exports.getAllScopeNames = exports.buildScopeColorMap = exports.normalizeScopes = exports.getScopeColor = void 0;
|
|
30
30
|
// Export all types (safe in all environments)
|
|
31
31
|
__exportStar(require("./types"), exports);
|
|
32
32
|
// Export core classes (Node.js processing)
|
|
@@ -137,4 +137,6 @@ Object.defineProperty(exports, "getAllScopeNames", { enumerable: true, get: func
|
|
|
137
137
|
var events_1 = require("./events");
|
|
138
138
|
Object.defineProperty(exports, "EventsCanvasValidator", { enumerable: true, get: function () { return events_1.EventsCanvasValidator; } });
|
|
139
139
|
Object.defineProperty(exports, "ScopeEventsValidator", { enumerable: true, get: function () { return events_1.ScopeEventsValidator; } });
|
|
140
|
+
Object.defineProperty(exports, "NamespacePathIndex", { enumerable: true, get: function () { return events_1.NamespacePathIndex; } });
|
|
141
|
+
Object.defineProperty(exports, "OtelEventPathsValidator", { enumerable: true, get: function () { return events_1.OtelEventPathsValidator; } });
|
|
140
142
|
//# sourceMappingURL=node.js.map
|
package/dist/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;;;;;;;;;;;;;;;;AAEH,8CAA8C;AAC9C,0CAAwB;AAExB,2CAA2C;AAC3C,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AAGvB,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AAEzB,mEAAkE;AAAzD,gIAAA,sBAAsB,OAAA;AAM/B,iBAAiB;AACjB,mFAAkF;AAAzE,wIAAA,0BAA0B,OAAA;AAEnC,iDAAiD;AACjD,qEAAoE;AAA3D,kIAAA,uBAAuB,OAAA;AAGhC,wBAAwB;AACxB,mDAAkD;AAAzC,0GAAA,WAAW,OAAA;AACpB,yDAAwD;AAA/C,gHAAA,cAAc,OAAA;AAEvB,oCAAoC;AACpC,iDAA+B;AAC/B,2DAA0D;AAAjD,kHAAA,eAAe,OAAA;AAGxB,oCAAoC;AACpC,+DAA2G;AAAlG,iHAAA,cAAc,OAAA;AAAE,yHAAA,sBAAsB,OAAA;AAAE,uHAAA,oBAAoB,OAAA;AAGrE,6EAA6E;AAC7E,iDAAuD;AAA9C,2GAAA,eAAe,OAAA;AAOxB,iEAAiE;AACjE,2DAAiG;AAAxF,+GAAA,aAAa,OAAA;AAAE,qHAAA,mBAAmB,OAAA;AAAE,mHAAA,iBAAiB,OAAA;AAG9D,oCAAoC;AACpC,uDAAyE;AAAhE,8GAAA,aAAa,OAAA;AAAE,kHAAA,iBAAiB,OAAA;AAQzC,qDAAqD;AACrD,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AAYvB,gCAAgC;AAChC,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAqB7B,4DAA4D;AAC5D,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAE5B,iDAAsF;AAA7E,uGAAA,SAAS,OAAA;AAAE,wGAAA,UAAU,OAAA;AAAE,uHAAA,yBAAyB,OAAA;AAGzD,gEAAgE;AAChE,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AAEtB,wDAAwD;AACxD,0DAAyD;AAAhD,8GAAA,aAAa,OAAA;AAKtB,+EAAiF;AAAxE,mIAAA,yBAAyB,OAAA;AAElC,kEAAkE;AAClE,0CAAwB;AAExB,4EAA4E;AAC5E,uCAYoB;AAXlB,0GAAA,cAAc,OAAA;AACd,yGAAA,aAAa,OAAA;AACb,0GAAA,cAAc,OAAA;AACd,0GAAA,cAAc,OAAA;AACd,6GAAA,iBAAiB,OAAA;AACjB,4GAAA,gBAAgB,OAAA;AAChB,6GAAA,iBAAiB,OAAA;AACjB,0GAAA,cAAc,OAAA;AACd,0GAAA,cAAc,OAAA;AACd,mHAAA,uBAAuB,OAAA;AACvB,6GAAA,iBAAiB,OAAA;AAoBnB,oDAAoD;AACpD,+DAA8D;AAArD,kHAAA,eAAe,OAAA;AAaxB,2BAA2B;AAC3B,iEAAgE;AAAvD,oHAAA,gBAAgB,OAAA;AAQzB,8BAA8B;AAC9B,qEAA8F;AAArF,wHAAA,kBAAkB,OAAA;AAAE,8HAAA,wBAAwB,OAAA;AAOrD,8BAA8B;AAC9B,yCAA2E;AAAlE,+GAAA,kBAAkB,OAAA;AAAE,qHAAA,wBAAwB,OAAA;AAOrD,wDAAwD;AACxD,+DAAqF;AAA5E,kHAAA,eAAe,OAAA;AAAE,wHAAA,qBAAqB,OAAA;AAM/C,6DAA6D;AAC7D,mCAUkB;AAThB,+GAAA,qBAAqB,OAAA;AACrB,6GAAA,mBAAmB,OAAA;AACnB,0GAAA,gBAAgB,OAAA;AAChB,uGAAA,aAAa,OAAA;AACb,4GAAA,kBAAkB,OAAA;AAClB,uGAAA,aAAa,OAAA;AACb,yGAAA,eAAe,OAAA;AACf,4GAAA,kBAAkB,OAAA;AAClB,0GAAA,gBAAgB,OAAA;AASlB,2CAA2C;AAC3C,
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { describe, expect, test, beforeAll, afterAll } from 'bun:test';
|
|
2
|
+
import { mkdtempSync, mkdirSync, rmSync } from 'fs';
|
|
3
|
+
import { tmpdir } from 'os';
|
|
4
|
+
import { join } from 'path';
|
|
5
|
+
import { EventsCanvasValidator } from './EventsCanvasValidator';
|
|
6
|
+
import type { ExtendedCanvas } from '../types/canvas';
|
|
7
|
+
|
|
8
|
+
let testRoot: string;
|
|
9
|
+
|
|
10
|
+
beforeAll(() => {
|
|
11
|
+
testRoot = mkdtempSync(join(tmpdir(), 'events-canvas-validator-'));
|
|
12
|
+
mkdirSync(join(testRoot, 'src/events'), { recursive: true });
|
|
13
|
+
mkdirSync(join(testRoot, 'src/workflow/scenarios'), { recursive: true });
|
|
14
|
+
mkdirSync(join(testRoot, 'src/trace'), { recursive: true });
|
|
15
|
+
mkdirSync(join(testRoot, 'src/generated/events'), { recursive: true });
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
afterAll(() => {
|
|
19
|
+
rmSync(testRoot, { recursive: true, force: true });
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
function namespaceNode(
|
|
23
|
+
id: string,
|
|
24
|
+
name: string,
|
|
25
|
+
opts: { paths?: string[]; eventNames?: string[] } = {},
|
|
26
|
+
): any {
|
|
27
|
+
const eventNames = opts.eventNames ?? [`${name}.happened`];
|
|
28
|
+
return {
|
|
29
|
+
id,
|
|
30
|
+
type: 'event-namespace',
|
|
31
|
+
x: 0,
|
|
32
|
+
y: 0,
|
|
33
|
+
width: 100,
|
|
34
|
+
height: 100,
|
|
35
|
+
namespace: {
|
|
36
|
+
name,
|
|
37
|
+
description: `${name} description`,
|
|
38
|
+
paths: opts.paths,
|
|
39
|
+
events: eventNames.map((n) => ({
|
|
40
|
+
name: n,
|
|
41
|
+
severity: 'INFO',
|
|
42
|
+
description: `desc for ${n}`,
|
|
43
|
+
})),
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function canvas(nodes: any[]): ExtendedCanvas {
|
|
49
|
+
return { nodes, edges: [] } as unknown as ExtendedCanvas;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
async function runValidator(nodes: any[]) {
|
|
53
|
+
const validator = new EventsCanvasValidator();
|
|
54
|
+
return validator.validate({
|
|
55
|
+
eventsCanvas: canvas(nodes),
|
|
56
|
+
eventsCanvasPath: 'test.events.canvas',
|
|
57
|
+
basePath: testRoot,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function rules(result: { violations: Array<{ ruleId: string }> }, ruleId: string) {
|
|
62
|
+
return result.violations.filter((v) => v.ruleId === ruleId);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
describe('EventsCanvasValidator — paths field', () => {
|
|
66
|
+
test('namespace without paths: no path-related violations (opt-in, backward compatible)', async () => {
|
|
67
|
+
const result = await runValidator([namespaceNode('events', 'events')]);
|
|
68
|
+
|
|
69
|
+
expect(rules(result, 'events-namespace-multiple-paths')).toHaveLength(0);
|
|
70
|
+
expect(rules(result, 'events-namespace-paths-missing')).toHaveLength(0);
|
|
71
|
+
expect(rules(result, 'events-namespace-paths-overlap')).toHaveLength(0);
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
test('namespace with one existing path: no path-related violations', async () => {
|
|
75
|
+
const result = await runValidator([
|
|
76
|
+
namespaceNode('events', 'events', { paths: ['src/events'] }),
|
|
77
|
+
]);
|
|
78
|
+
|
|
79
|
+
expect(rules(result, 'events-namespace-multiple-paths')).toHaveLength(0);
|
|
80
|
+
expect(rules(result, 'events-namespace-paths-missing')).toHaveLength(0);
|
|
81
|
+
expect(rules(result, 'events-namespace-paths-overlap')).toHaveLength(0);
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
test('namespace with missing path: warns events-namespace-paths-missing', async () => {
|
|
85
|
+
const result = await runValidator([
|
|
86
|
+
namespaceNode('events', 'events', { paths: ['src/does-not-exist'] }),
|
|
87
|
+
]);
|
|
88
|
+
|
|
89
|
+
const missing = rules(result, 'events-namespace-paths-missing');
|
|
90
|
+
expect(missing).toHaveLength(1);
|
|
91
|
+
expect(missing[0].severity).toBe('warn');
|
|
92
|
+
expect(missing[0].message).toContain('src/does-not-exist');
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
test('namespace with multiple paths: warns events-namespace-multiple-paths', async () => {
|
|
96
|
+
const result = await runValidator([
|
|
97
|
+
namespaceNode('events', 'events', {
|
|
98
|
+
paths: ['src/events', 'src/generated/events'],
|
|
99
|
+
}),
|
|
100
|
+
]);
|
|
101
|
+
|
|
102
|
+
const multi = rules(result, 'events-namespace-multiple-paths');
|
|
103
|
+
expect(multi).toHaveLength(1);
|
|
104
|
+
expect(multi[0].severity).toBe('warn');
|
|
105
|
+
expect(multi[0].message).toContain('2 paths');
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
test('two namespaces declaring identical paths: errors events-namespace-paths-overlap', async () => {
|
|
109
|
+
const result = await runValidator([
|
|
110
|
+
namespaceNode('a', 'alpha', {
|
|
111
|
+
paths: ['src/events'],
|
|
112
|
+
eventNames: ['alpha.happened'],
|
|
113
|
+
}),
|
|
114
|
+
namespaceNode('b', 'beta', {
|
|
115
|
+
paths: ['src/events'],
|
|
116
|
+
eventNames: ['beta.happened'],
|
|
117
|
+
}),
|
|
118
|
+
]);
|
|
119
|
+
|
|
120
|
+
const overlap = rules(result, 'events-namespace-paths-overlap');
|
|
121
|
+
expect(overlap).toHaveLength(1);
|
|
122
|
+
expect(overlap[0].severity).toBe('error');
|
|
123
|
+
expect(result.valid).toBe(false);
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
test('parent-child partition (workflow / workflow.scenarios): no overlap error', async () => {
|
|
127
|
+
const result = await runValidator([
|
|
128
|
+
namespaceNode('workflow', 'workflow', {
|
|
129
|
+
paths: ['src/workflow'],
|
|
130
|
+
eventNames: ['workflow.happened'],
|
|
131
|
+
}),
|
|
132
|
+
namespaceNode('workflow.scenarios', 'workflow.scenarios', {
|
|
133
|
+
paths: ['src/workflow/scenarios'],
|
|
134
|
+
eventNames: ['workflow.scenarios.matched'],
|
|
135
|
+
}),
|
|
136
|
+
]);
|
|
137
|
+
|
|
138
|
+
expect(rules(result, 'events-namespace-paths-overlap')).toHaveLength(0);
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
test('disjoint sibling paths: no overlap error', async () => {
|
|
142
|
+
const result = await runValidator([
|
|
143
|
+
namespaceNode('events', 'events', {
|
|
144
|
+
paths: ['src/events'],
|
|
145
|
+
eventNames: ['events.happened'],
|
|
146
|
+
}),
|
|
147
|
+
namespaceNode('trace', 'trace', {
|
|
148
|
+
paths: ['src/trace'],
|
|
149
|
+
eventNames: ['trace.happened'],
|
|
150
|
+
}),
|
|
151
|
+
]);
|
|
152
|
+
|
|
153
|
+
expect(rules(result, 'events-namespace-paths-overlap')).toHaveLength(0);
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
test('path normalization: trailing slashes and "./" prefix compared equivalently', async () => {
|
|
157
|
+
const result = await runValidator([
|
|
158
|
+
namespaceNode('a', 'alpha', {
|
|
159
|
+
paths: ['src/events/'],
|
|
160
|
+
eventNames: ['alpha.happened'],
|
|
161
|
+
}),
|
|
162
|
+
namespaceNode('b', 'beta', {
|
|
163
|
+
paths: ['./src/events'],
|
|
164
|
+
eventNames: ['beta.happened'],
|
|
165
|
+
}),
|
|
166
|
+
]);
|
|
167
|
+
|
|
168
|
+
expect(rules(result, 'events-namespace-paths-overlap')).toHaveLength(1);
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
test('similar-prefix paths that are not parent/child: no overlap error', async () => {
|
|
172
|
+
// src/foo and src/foobar share a prefix but neither is a descendant of the other.
|
|
173
|
+
// These should not trigger the overlap rule.
|
|
174
|
+
mkdirSync(join(testRoot, 'src/foo'), { recursive: true });
|
|
175
|
+
mkdirSync(join(testRoot, 'src/foobar'), { recursive: true });
|
|
176
|
+
|
|
177
|
+
const result = await runValidator([
|
|
178
|
+
namespaceNode('a', 'foo', {
|
|
179
|
+
paths: ['src/foo'],
|
|
180
|
+
eventNames: ['foo.happened'],
|
|
181
|
+
}),
|
|
182
|
+
namespaceNode('b', 'foobar', {
|
|
183
|
+
paths: ['src/foobar'],
|
|
184
|
+
eventNames: ['foobar.happened'],
|
|
185
|
+
}),
|
|
186
|
+
]);
|
|
187
|
+
|
|
188
|
+
expect(rules(result, 'events-namespace-paths-overlap')).toHaveLength(0);
|
|
189
|
+
});
|
|
190
|
+
});
|
|
@@ -6,6 +6,9 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import type { ExtendedCanvas, ExtendedCanvasNode } from '../types/canvas';
|
|
9
|
+
import { existsSync } from 'fs';
|
|
10
|
+
import { resolve } from 'path';
|
|
11
|
+
import { pathsOverlap } from './path-helpers';
|
|
9
12
|
|
|
10
13
|
/**
|
|
11
14
|
* Event namespace node structure
|
|
@@ -16,6 +19,19 @@ export interface EventNamespaceNode {
|
|
|
16
19
|
namespace: {
|
|
17
20
|
name: string;
|
|
18
21
|
description: string;
|
|
22
|
+
/**
|
|
23
|
+
* Optional source paths that define this component's code location.
|
|
24
|
+
* Each entry may be a folder (covers all descendants) or a specific file.
|
|
25
|
+
* When present, events in this namespace may only be emitted from files
|
|
26
|
+
* covered by one of these paths. Namespaces without `paths` remain
|
|
27
|
+
* unenforced — enforcement is opt-in per namespace.
|
|
28
|
+
*
|
|
29
|
+
* Multiple entries are valid for cases like generated code, platform-split
|
|
30
|
+
* implementations, or migration periods. The validator warns when
|
|
31
|
+
* `paths.length > 1` to prompt authors to confirm the multi-location
|
|
32
|
+
* is intentional.
|
|
33
|
+
*/
|
|
34
|
+
paths?: string[];
|
|
19
35
|
events: Array<{
|
|
20
36
|
name: string;
|
|
21
37
|
severity?: 'INFO' | 'WARN' | 'ERROR';
|
|
@@ -328,6 +344,76 @@ export class EventsCanvasValidator {
|
|
|
328
344
|
}
|
|
329
345
|
}
|
|
330
346
|
|
|
347
|
+
// Validate namespace paths (optional field — enforcement is opt-in per namespace).
|
|
348
|
+
// Collects declared paths across namespaces to check for cross-namespace overlap.
|
|
349
|
+
const declaredPaths: Array<{ namespace: string; nodeId: string; path: string }> = [];
|
|
350
|
+
for (const node of eventsCanvas.nodes || []) {
|
|
351
|
+
if (!this.isEventNamespaceNode(node)) continue;
|
|
352
|
+
const namespaceNode = node as EventNamespaceNode;
|
|
353
|
+
const paths = namespaceNode.namespace.paths;
|
|
354
|
+
if (!paths || paths.length === 0) continue;
|
|
355
|
+
|
|
356
|
+
// Warn when a namespace declares more than one path — prompt author to
|
|
357
|
+
// confirm the multi-location is intentional (generated code, platform
|
|
358
|
+
// splits, migration) rather than an accidental sprawl.
|
|
359
|
+
if (paths.length > 1) {
|
|
360
|
+
violations.push({
|
|
361
|
+
ruleId: 'events-namespace-multiple-paths',
|
|
362
|
+
severity: 'warn',
|
|
363
|
+
file: eventsCanvasPath || '.principal-views/cli.events.canvas',
|
|
364
|
+
path: `nodes[id="${namespaceNode.id}"].namespace.paths`,
|
|
365
|
+
message: `Namespace "${namespaceNode.namespace.name}" declares ${paths.length} paths`,
|
|
366
|
+
impact: 'Multiple paths can indicate legitimate cases (generated code, platform splits, migration) but often signal that the namespace should be split',
|
|
367
|
+
suggestion: 'Confirm the multi-location is intentional. Otherwise consider splitting the namespace or grouping the code under a single parent folder.',
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
for (const p of paths) {
|
|
372
|
+
declaredPaths.push({
|
|
373
|
+
namespace: namespaceNode.namespace.name,
|
|
374
|
+
nodeId: namespaceNode.id,
|
|
375
|
+
path: p,
|
|
376
|
+
});
|
|
377
|
+
|
|
378
|
+
// Warn when a declared path does not exist relative to the repo root.
|
|
379
|
+
const resolved = resolve(basePath, p);
|
|
380
|
+
if (!existsSync(resolved)) {
|
|
381
|
+
violations.push({
|
|
382
|
+
ruleId: 'events-namespace-paths-missing',
|
|
383
|
+
severity: 'warn',
|
|
384
|
+
file: eventsCanvasPath || '.principal-views/cli.events.canvas',
|
|
385
|
+
path: `nodes[id="${namespaceNode.id}"].namespace.paths`,
|
|
386
|
+
message: `Path "${p}" declared by namespace "${namespaceNode.namespace.name}" does not exist`,
|
|
387
|
+
impact: 'Events emitted under this namespace cannot be validated against a real code location',
|
|
388
|
+
suggestion: 'Verify the path exists relative to the repository root, or remove it from the namespace declaration.',
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
// Cross-namespace overlap check. Parent-child nesting is a valid partition
|
|
395
|
+
// (longest-prefix wins at runtime); any other overlap makes namespace
|
|
396
|
+
// ownership of a file ambiguous.
|
|
397
|
+
for (let i = 0; i < declaredPaths.length; i++) {
|
|
398
|
+
for (let j = i + 1; j < declaredPaths.length; j++) {
|
|
399
|
+
const a = declaredPaths[i];
|
|
400
|
+
const b = declaredPaths[j];
|
|
401
|
+
if (a.namespace === b.namespace) continue;
|
|
402
|
+
|
|
403
|
+
const relationship = pathsOverlap(a.path, b.path);
|
|
404
|
+
if (relationship === 'conflict') {
|
|
405
|
+
violations.push({
|
|
406
|
+
ruleId: 'events-namespace-paths-overlap',
|
|
407
|
+
severity: 'error',
|
|
408
|
+
file: eventsCanvasPath || '.principal-views/cli.events.canvas',
|
|
409
|
+
message: `Paths overlap between namespaces "${a.namespace}" ("${a.path}") and "${b.namespace}" ("${b.path}")`,
|
|
410
|
+
impact: 'A file covered by two namespaces makes namespace ownership ambiguous',
|
|
411
|
+
suggestion: 'Separate the paths so they are disjoint, or restructure as parent/child namespaces (e.g., "workflow" covering "src/workflow" and "workflow.scenarios" covering "src/workflow/scenarios").',
|
|
412
|
+
});
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
|
|
331
417
|
metrics.totalNamespaces = extractedNamespaces.size;
|
|
332
418
|
|
|
333
419
|
const errors = violations.filter(v => v.severity === 'error');
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { describe, expect, test } from 'bun:test';
|
|
2
|
+
import { NamespacePathIndex } from './NamespacePathIndex';
|
|
3
|
+
|
|
4
|
+
function makeIndex(entries: Array<{ scope: string; namespace: string; paths: string[] }>) {
|
|
5
|
+
const idx = new NamespacePathIndex();
|
|
6
|
+
idx.addAll(entries);
|
|
7
|
+
return idx;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
describe('NamespacePathIndex.resolve', () => {
|
|
11
|
+
test('empty index resolves to null', () => {
|
|
12
|
+
const idx = new NamespacePathIndex();
|
|
13
|
+
expect(idx.resolve('scope', 'src/foo.ts')).toBeNull();
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
test('matches file nested under a declared folder path', () => {
|
|
17
|
+
const idx = makeIndex([{ scope: 's', namespace: 'events', paths: ['src/events'] }]);
|
|
18
|
+
const match = idx.resolve('s', 'src/events/foo.ts');
|
|
19
|
+
expect(match?.entry.namespace).toBe('events');
|
|
20
|
+
expect(match?.matchedPath).toBe('src/events');
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
test('returns null when no path covers the file', () => {
|
|
24
|
+
const idx = makeIndex([{ scope: 's', namespace: 'events', paths: ['src/events'] }]);
|
|
25
|
+
expect(idx.resolve('s', 'src/other/foo.ts')).toBeNull();
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
test('scope isolation: match in scope A is not returned when querying scope B', () => {
|
|
29
|
+
const idx = makeIndex([{ scope: 'A', namespace: 'events', paths: ['src/events'] }]);
|
|
30
|
+
expect(idx.resolve('B', 'src/events/foo.ts')).toBeNull();
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
test('longest-prefix wins: nested child namespace beats parent', () => {
|
|
34
|
+
const idx = makeIndex([
|
|
35
|
+
{ scope: 's', namespace: 'workflow', paths: ['src/workflow'] },
|
|
36
|
+
{ scope: 's', namespace: 'workflow.scenarios', paths: ['src/workflow/scenarios'] },
|
|
37
|
+
]);
|
|
38
|
+
|
|
39
|
+
// Parent-only subtree → parent wins
|
|
40
|
+
expect(idx.resolve('s', 'src/workflow/orchestrator.ts')?.entry.namespace).toBe('workflow');
|
|
41
|
+
// Child subtree → child wins (longer prefix)
|
|
42
|
+
expect(idx.resolve('s', 'src/workflow/scenarios/matcher.ts')?.entry.namespace).toBe(
|
|
43
|
+
'workflow.scenarios',
|
|
44
|
+
);
|
|
45
|
+
// Deeper under child → still child (inherited)
|
|
46
|
+
expect(idx.resolve('s', 'src/workflow/scenarios/helpers/fmt.ts')?.entry.namespace).toBe(
|
|
47
|
+
'workflow.scenarios',
|
|
48
|
+
);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
test('exact-file path matches when declared as a file', () => {
|
|
52
|
+
const idx = makeIndex([{ scope: 's', namespace: 'retry', paths: ['src/utils/retry.ts'] }]);
|
|
53
|
+
expect(idx.resolve('s', 'src/utils/retry.ts')?.entry.namespace).toBe('retry');
|
|
54
|
+
// Not a folder, so unrelated files don't match
|
|
55
|
+
expect(idx.resolve('s', 'src/utils/other.ts')).toBeNull();
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
test('normalization: trailing slash and ./ prefix are equivalent', () => {
|
|
59
|
+
const idx = makeIndex([{ scope: 's', namespace: 'events', paths: ['src/events/'] }]);
|
|
60
|
+
expect(idx.resolve('s', './src/events/foo.ts')?.entry.namespace).toBe('events');
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
test('similar-prefix paths are not mistaken for nesting', () => {
|
|
64
|
+
const idx = makeIndex([
|
|
65
|
+
{ scope: 's', namespace: 'foo', paths: ['src/foo'] },
|
|
66
|
+
{ scope: 's', namespace: 'foobar', paths: ['src/foobar'] },
|
|
67
|
+
]);
|
|
68
|
+
expect(idx.resolve('s', 'src/foobar/x.ts')?.entry.namespace).toBe('foobar');
|
|
69
|
+
expect(idx.resolve('s', 'src/foo/x.ts')?.entry.namespace).toBe('foo');
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
describe('NamespacePathIndex.getEntry', () => {
|
|
74
|
+
test('returns null when (scope, namespace) not registered', () => {
|
|
75
|
+
const idx = makeIndex([{ scope: 's', namespace: 'events', paths: ['src/events'] }]);
|
|
76
|
+
expect(idx.getEntry('s', 'workflow')).toBeNull();
|
|
77
|
+
expect(idx.getEntry('other', 'events')).toBeNull();
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
test('returns the entry when present', () => {
|
|
81
|
+
const idx = makeIndex([{ scope: 's', namespace: 'events', paths: ['src/events'] }]);
|
|
82
|
+
expect(idx.getEntry('s', 'events')?.paths).toEqual(['src/events']);
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
describe('NamespacePathIndex.getScopeEntries / getScopes', () => {
|
|
87
|
+
test('returns only entries for the requested scope', () => {
|
|
88
|
+
const idx = makeIndex([
|
|
89
|
+
{ scope: 'A', namespace: 'a1', paths: ['src/a1'] },
|
|
90
|
+
{ scope: 'A', namespace: 'a2', paths: ['src/a2'] },
|
|
91
|
+
{ scope: 'B', namespace: 'b1', paths: ['src/b1'] },
|
|
92
|
+
]);
|
|
93
|
+
expect(idx.getScopeEntries('A')).toHaveLength(2);
|
|
94
|
+
expect(idx.getScopeEntries('B')).toHaveLength(1);
|
|
95
|
+
expect(idx.getScopes().sort()).toEqual(['A', 'B']);
|
|
96
|
+
});
|
|
97
|
+
});
|