@eventcatalog/linter 0.1.0 → 1.0.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/README.md CHANGED
@@ -207,23 +207,32 @@ module.exports = {
207
207
 
208
208
  ### Available Rules
209
209
 
210
- | Rule Name | Description | Accepted Values | Default |
211
- | --------------------------------- | -------------------------------------------------------------------------- | ---------------------- | -------------- |
212
- | **Schema Validation Rules** |
213
- | `schema/required-fields` | Validates that required fields are present in frontmatter | `error`, `warn`, `off` | `error` |
214
- | `schema/valid-type` | Validates that field types are correct (strings, arrays, objects) | `error`, `warn`, `off` | `error` |
215
- | `schema/valid-semver` | Validates semantic version format (1.0.0, 2.1.3-beta) | `error`, `warn`, `off` | `error` |
216
- | `schema/valid-email` | Validates email address format in user frontmatter | `error`, `warn`, `off` | `error` |
217
- | `schema/validation-error` | General schema validation errors | `error`, `warn`, `off` | `error` |
218
- | **Reference Validation Rules** |
219
- | `refs/owner-exists` | Ensures referenced owners (users/teams) exist | `error`, `warn`, `off` | `error` |
220
- | `refs/valid-version-range` | Validates version references and patterns | `error`, `warn`, `off` | `error` |
221
- | `refs/resource-exists` | Ensures referenced resources exist (always enabled for critical resources) | Always enabled | Always enabled |
222
- | **Best Practice Rules** |
223
- | `best-practices/summary-required` | Requires summary field for better documentation | `error`, `warn`, `off` | `error` |
224
- | `best-practices/owner-required` | Requires at least one owner for accountability | `error`, `warn`, `off` | `error` |
225
-
226
- **Note**: Core resource reference validation (services, domains, entities) is always enabled and cannot be disabled, ensuring referential integrity of your EventCatalog.
210
+ | Rule Name | Description | Accepted Values | Default |
211
+ | ------------------------------------- | ----------------------------------------------------------------- | ---------------------- | ------- |
212
+ | **Schema Validation Rules** |
213
+ | `schema/required-fields` | Validates that required fields are present in frontmatter | `error`, `warn`, `off` | `error` |
214
+ | `schema/valid-type` | Validates that field types are correct (strings, arrays, objects) | `error`, `warn`, `off` | `error` |
215
+ | `schema/valid-semver` | Validates semantic version format (1.0.0, 2.1.3-beta) | `error`, `warn`, `off` | `error` |
216
+ | `schema/valid-email` | Validates email address format in user frontmatter | `error`, `warn`, `off` | `error` |
217
+ | `schema/validation-error` | General schema validation errors | `error`, `warn`, `off` | `error` |
218
+ | **Reference Validation Rules** |
219
+ | `refs/owner-exists` | Ensures referenced owners (users/teams) exist | `error`, `warn`, `off` | `error` |
220
+ | `refs/valid-version-range` | Validates version references and patterns | `error`, `warn`, `off` | `error` |
221
+ | `refs/resource-exists` | Ensures referenced resources exist | `error`, `warn`, `off` | `error` |
222
+ | `refs/channel-exists` | Ensures channels referenced in sends/receives `to`/`from` exist | `error`, `warn`, `off` | `error` |
223
+ | `refs/container-exists` | Ensures containers referenced in `writesTo`/`readsFrom` exist | `error`, `warn`, `off` | `error` |
224
+ | `refs/orphan-messages` | Detects events/commands/queries with no producer and no consumer | `error`, `warn`, `off` | `warn` |
225
+ | **Best Practice Rules** |
226
+ | `best-practices/summary-required` | Requires summary field for better documentation | `error`, `warn`, `off` | `error` |
227
+ | `best-practices/owner-required` | Requires at least one owner for accountability | `error`, `warn`, `off` | `error` |
228
+ | `best-practices/description-required` | Requires markdown body content beyond just frontmatter | `error`, `warn`, `off` | `warn` |
229
+ | `best-practices/schema-required` | Requires `schemaPath` on events, commands, and queries | `error`, `warn`, `off` | `warn` |
230
+ | **Versioning Rules** |
231
+ | `versions/no-deprecated-references` | Warns when referencing a deprecated resource | `error`, `warn`, `off` | `warn` |
232
+ | **Structural Rules** |
233
+ | `structure/duplicate-resource-ids` | Detects duplicate resources with same type, id, and version | `error`, `warn`, `off` | `error` |
234
+
235
+ **Note**: Rules defaulting to `warn` will show warnings but won't fail the linter unless `--fail-on-warning` is used. You can promote them to `error` for stricter validation.
227
236
 
228
237
  ### Configuration Examples
229
238
 
@@ -326,10 +335,20 @@ If no `.eventcatalogrc.js` file is found, the linter uses default rules where al
326
335
  - ✅ Services referenced in domains exist
327
336
  - ✅ Events/Commands/Queries referenced in services exist
328
337
  - ✅ Entities referenced in domains/services exist
338
+ - ✅ Channels referenced in sends/receives `to`/`from` exist
339
+ - ✅ Containers referenced in `writesTo`/`readsFrom` exist
329
340
  - ✅ Users/Teams referenced as owners exist
330
341
  - ✅ Flow steps reference existing services/messages
331
342
  - ✅ Entity properties reference existing entities
332
343
  - ✅ Version-specific references are valid
344
+ - ✅ Orphan messages (no producer and no consumer) are detected
345
+ - ✅ References to deprecated resources are flagged
346
+ - ✅ Duplicate resource IDs (same type, id, and version) are detected
347
+
348
+ ### Documentation Quality
349
+
350
+ - ✅ Resources have markdown body content (not just frontmatter)
351
+ - ✅ Events/Commands/Queries have a `schemaPath` defined
333
352
 
334
353
  ### Example EventCatalog Structure
335
354
 
@@ -641,11 +660,24 @@ The linter provides descriptive rule names in parentheses to help identify and f
641
660
  - `(refs/owner-exists)` - Referenced owner (user/team) doesn't exist
642
661
  - `(refs/valid-version-range)` - Referenced version doesn't exist or invalid pattern
643
662
  - `(refs/resource-exists)` - Referenced resource doesn't exist
663
+ - `(refs/channel-exists)` - Referenced channel in sends/receives to/from doesn't exist
664
+ - `(refs/container-exists)` - Referenced container in writesTo/readsFrom doesn't exist
665
+ - `(refs/orphan-messages)` - Event/command/query has no producer and no consumer
644
666
 
645
667
  ### Best Practice Rules
646
668
 
647
669
  - `(best-practices/summary-required)` - Summary field is missing
648
670
  - `(best-practices/owner-required)` - At least one owner is required
671
+ - `(best-practices/description-required)` - Markdown body content is missing
672
+ - `(best-practices/schema-required)` - schemaPath is missing on event/command/query
673
+
674
+ ### Versioning Rules
675
+
676
+ - `(versions/no-deprecated-references)` - Referencing a deprecated resource
677
+
678
+ ### Structural Rules
679
+
680
+ - `(structure/duplicate-resource-ids)` - Duplicate resource with same type, id, and version
649
681
 
650
682
  ### Parse Errors
651
683
 
package/dist/cli/index.js CHANGED
@@ -27,6 +27,7 @@ program
27
27
  try {
28
28
  // Load configuration
29
29
  const config = (0, config_1.loadConfig)(rootDir);
30
+ const dependencies = (0, config_1.loadEventCatalogConfig)(rootDir);
30
31
  spinner.text = 'Scanning EventCatalog files...';
31
32
  const allFiles = await (0, scanner_1.scanCatalogFiles)(rootDir);
32
33
  // Filter out ignored files
@@ -45,7 +46,7 @@ program
45
46
  spinner.text = 'Parsing frontmatter...';
46
47
  const { parsed, errors: parseErrors } = await (0, parser_1.parseAllFiles)(files);
47
48
  spinner.text = 'Validating catalog...';
48
- const rawValidationErrors = (0, validators_1.validateCatalog)(parsed);
49
+ const rawValidationErrors = (0, validators_1.validateCatalog)(parsed, dependencies);
49
50
  // Apply rule configuration to each file's errors
50
51
  const validationErrors = parsed.flatMap((parsedFile) => {
51
52
  const fileErrors = rawValidationErrors.filter((error) => error.file === parsedFile.file.relativePath);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,14 @@ export interface LinterConfig {
13
13
  ignorePatterns?: string[];
14
14
  overrides?: ConfigOverride[];
15
15
  }
16
+ export declare const DEFAULT_IGNORE_PATTERNS: string[];
16
17
  export declare const DEFAULT_RULES: Record<string, RuleSeverity>;
18
+ export interface DependencyEntry {
19
+ id: string;
20
+ version?: string;
21
+ }
22
+ export type CatalogDependencies = Record<string, DependencyEntry[]>;
23
+ export declare const loadEventCatalogConfig: (rootDir: string) => CatalogDependencies;
17
24
  export declare const loadConfig: (rootDir: string) => LinterConfig;
18
25
  export declare const parseRuleConfig: (rule: RuleSeverity | [RuleSeverity, Record<string, any>]) => RuleConfig;
19
26
  export declare const shouldIgnoreFile: (filePath: string, ignorePatterns: string[]) => boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;AAEpD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;CAC3E;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1E,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;CAC9B;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAYtD,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,SAAS,MAAM,KAAG,YAiC5C,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,MAAM,YAAY,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAG,UAW1F,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,EAAE,gBAAgB,MAAM,EAAE,KAAG,OAgB7E,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,EAAE,QAAQ,YAAY,KAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAwBnG,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,QAAQ,eAAe,EAAE,EAAE,OAAO,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,KAAG,eAAe,EAmB/G,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;AAEpD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;CAC3E;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1E,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;CAC9B;AAED,eAAO,MAAM,uBAAuB,EAAE,MAAM,EAAwB,CAAC;AAErE,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAoBtD,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;AAepE,eAAO,MAAM,sBAAsB,GAAI,SAAS,MAAM,KAAG,mBA+BxD,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,SAAS,MAAM,KAAG,YAiC5C,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,MAAM,YAAY,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAG,UAW1F,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,EAAE,gBAAgB,MAAM,EAAE,KAAG,OAgB7E,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,EAAE,QAAQ,YAAY,KAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAwBnG,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,QAAQ,eAAe,EAAE,EAAE,OAAO,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,KAAG,eAAe,EAmB/G,CAAC"}
@@ -3,29 +3,78 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.applyRuleSeverity = exports.getEffectiveRules = exports.shouldIgnoreFile = exports.parseRuleConfig = exports.loadConfig = exports.DEFAULT_RULES = void 0;
6
+ exports.applyRuleSeverity = exports.getEffectiveRules = exports.shouldIgnoreFile = exports.parseRuleConfig = exports.loadConfig = exports.loadEventCatalogConfig = exports.DEFAULT_RULES = exports.DEFAULT_IGNORE_PATTERNS = void 0;
7
7
  const fs_1 = __importDefault(require("fs"));
8
8
  const path_1 = __importDefault(require("path"));
9
+ exports.DEFAULT_IGNORE_PATTERNS = ['dependencies/**'];
9
10
  exports.DEFAULT_RULES = {
10
11
  'schema/required-fields': 'error',
11
12
  'schema/valid-semver': 'error',
12
13
  'schema/valid-email': 'error',
13
14
  'refs/owner-exists': 'error',
14
15
  'refs/valid-version-range': 'error',
16
+ 'refs/resource-exists': 'error',
17
+ 'refs/channel-exists': 'error',
18
+ 'refs/container-exists': 'error',
19
+ 'refs/orphan-messages': 'warn',
15
20
  'best-practices/summary-required': 'error',
16
21
  'best-practices/owner-required': 'error',
22
+ 'best-practices/description-required': 'warn',
23
+ 'best-practices/schema-required': 'warn',
17
24
  'naming/service-id-format': 'error',
18
25
  'naming/event-id-format': 'error',
19
26
  'versions/consistent-format': 'error',
20
27
  'versions/no-deprecated': 'error',
28
+ 'versions/no-deprecated-references': 'warn',
29
+ 'structure/duplicate-resource-ids': 'error',
21
30
  };
31
+ const PLURAL_TO_SINGULAR = {
32
+ events: 'event',
33
+ commands: 'command',
34
+ queries: 'query',
35
+ services: 'service',
36
+ domains: 'domain',
37
+ entities: 'entity',
38
+ channels: 'channel',
39
+ flows: 'flow',
40
+ users: 'user',
41
+ teams: 'team',
42
+ };
43
+ const loadEventCatalogConfig = (rootDir) => {
44
+ const configPath = path_1.default.join(rootDir, 'eventcatalog.config.js');
45
+ if (!fs_1.default.existsSync(configPath)) {
46
+ return {};
47
+ }
48
+ try {
49
+ delete require.cache[require.resolve(configPath)];
50
+ const config = require(configPath);
51
+ if (!config.dependencies || typeof config.dependencies !== 'object') {
52
+ return {};
53
+ }
54
+ const dependencies = {};
55
+ for (const [pluralKey, entries] of Object.entries(config.dependencies)) {
56
+ const singularType = PLURAL_TO_SINGULAR[pluralKey];
57
+ if (!singularType || !Array.isArray(entries))
58
+ continue;
59
+ dependencies[singularType] = entries
60
+ .filter((entry) => entry && typeof entry.id === 'string')
61
+ .map((entry) => ({ id: entry.id, version: entry.version }));
62
+ }
63
+ return dependencies;
64
+ }
65
+ catch (error) {
66
+ console.warn(`Warning: Could not load eventcatalog.config.js: ${error instanceof Error ? error.message : String(error)}`);
67
+ return {};
68
+ }
69
+ };
70
+ exports.loadEventCatalogConfig = loadEventCatalogConfig;
22
71
  const loadConfig = (rootDir) => {
23
72
  const configPath = path_1.default.join(rootDir, '.eventcatalogrc.js');
24
73
  if (!fs_1.default.existsSync(configPath)) {
25
74
  // Return default config if no config file exists
26
75
  return {
27
76
  rules: exports.DEFAULT_RULES,
28
- ignorePatterns: [],
77
+ ignorePatterns: exports.DEFAULT_IGNORE_PATTERNS,
29
78
  overrides: [],
30
79
  };
31
80
  }
@@ -36,7 +85,7 @@ const loadConfig = (rootDir) => {
36
85
  // Merge with defaults
37
86
  const mergedConfig = {
38
87
  rules: { ...exports.DEFAULT_RULES, ...config.rules },
39
- ignorePatterns: config.ignorePatterns || [],
88
+ ignorePatterns: [...exports.DEFAULT_IGNORE_PATTERNS, ...(config.ignorePatterns || [])],
40
89
  overrides: config.overrides || [],
41
90
  };
42
91
  return mergedConfig;
@@ -45,7 +94,7 @@ const loadConfig = (rootDir) => {
45
94
  console.warn(`Warning: Could not load .eventcatalogrc.js: ${error instanceof Error ? error.message : String(error)}`);
46
95
  return {
47
96
  rules: exports.DEFAULT_RULES,
48
- ignorePatterns: [],
97
+ ignorePatterns: exports.DEFAULT_IGNORE_PATTERNS,
49
98
  overrides: [],
50
99
  };
51
100
  }
@@ -119,6 +168,10 @@ const applyRuleSeverity = (errors, rules) => {
119
168
  };
120
169
  exports.applyRuleSeverity = applyRuleSeverity;
121
170
  const mapErrorToRuleName = (error) => {
171
+ // Use explicit rule if set by the validator
172
+ if (error.rule) {
173
+ return error.rule;
174
+ }
122
175
  // Map validation errors to rule names based on the error type and content
123
176
  if (error.type === 'schema') {
124
177
  // Check field-specific rules first
@@ -147,8 +200,7 @@ const mapErrorToRuleName = (error) => {
147
200
  if (error.message.includes('version')) {
148
201
  return 'refs/valid-version-range';
149
202
  }
150
- // Service, domain, entity, and other references are always validated and not configurable
151
- return 'schema/required-fields'; // Map to a default rule so they remain as errors
203
+ return 'refs/resource-exists';
152
204
  }
153
205
  return 'schema/required-fields';
154
206
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"best-practices-validator.d.ts","sourceRoot":"","sources":["../../src/validators/best-practices-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,eAAO,MAAM,qBAAqB,GAAI,aAAa,UAAU,EAAE,KAAG,eAAe,EAkChF,CAAC"}
1
+ {"version":3,"file":"best-practices-validator.d.ts","sourceRoot":"","sources":["../../src/validators/best-practices-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,eAAO,MAAM,qBAAqB,GAAI,aAAa,UAAU,EAAE,KAAG,eAAe,EAmEhF,CAAC"}
@@ -4,7 +4,7 @@ exports.validateBestPractices = void 0;
4
4
  const validateBestPractices = (parsedFiles) => {
5
5
  const errors = [];
6
6
  for (const parsedFile of parsedFiles) {
7
- const { file, frontmatter } = parsedFile;
7
+ const { file, frontmatter, content } = parsedFile;
8
8
  // Check for required summary
9
9
  if (!frontmatter.summary || (typeof frontmatter.summary === 'string' && frontmatter.summary.trim() === '')) {
10
10
  errors.push({
@@ -17,8 +17,10 @@ const validateBestPractices = (parsedFiles) => {
17
17
  rule: 'best-practices/summary-required',
18
18
  });
19
19
  }
20
- // Check for required owners
21
- if (!frontmatter.owners || !Array.isArray(frontmatter.owners) || frontmatter.owners.length === 0) {
20
+ // Check for required owners (skip users and teams - they are owners, not owned)
21
+ if (file.resourceType !== 'user' &&
22
+ file.resourceType !== 'team' &&
23
+ (!frontmatter.owners || !Array.isArray(frontmatter.owners) || frontmatter.owners.length === 0)) {
22
24
  errors.push({
23
25
  type: 'schema',
24
26
  resource: `${file.resourceType}/${file.resourceId}`,
@@ -29,6 +31,31 @@ const validateBestPractices = (parsedFiles) => {
29
31
  rule: 'best-practices/owner-required',
30
32
  });
31
33
  }
34
+ // Check for required description (markdown body content)
35
+ if (!content || content.trim() === '') {
36
+ errors.push({
37
+ type: 'schema',
38
+ resource: `${file.resourceType}/${file.resourceId}`,
39
+ field: 'description',
40
+ message: 'Resource should have a markdown description (body content) beyond just frontmatter',
41
+ file: file.relativePath,
42
+ severity: 'warning',
43
+ rule: 'best-practices/description-required',
44
+ });
45
+ }
46
+ // Check for required schemaPath on messages (events, commands, queries)
47
+ if ((file.resourceType === 'event' || file.resourceType === 'command' || file.resourceType === 'query') &&
48
+ !frontmatter.schemaPath) {
49
+ errors.push({
50
+ type: 'schema',
51
+ resource: `${file.resourceType}/${file.resourceId}`,
52
+ field: 'schemaPath',
53
+ message: `${file.resourceType} should have a schemaPath defined for consumers to understand the contract`,
54
+ file: file.relativePath,
55
+ severity: 'warning',
56
+ rule: 'best-practices/schema-required',
57
+ });
58
+ }
32
59
  }
33
60
  return errors;
34
61
  };
@@ -1 +1 @@
1
- {"version":3,"file":"best-practices-validator.js","sourceRoot":"","sources":["../../src/validators/best-practices-validator.ts"],"names":[],"mappings":";;;AAGO,MAAM,qBAAqB,GAAG,CAAC,WAAyB,EAAqB,EAAE;IACpF,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC;QAEzC,6BAA6B;QAC7B,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,CAAC,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YAC3G,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnD,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,8CAA8C;gBACvD,IAAI,EAAE,IAAI,CAAC,YAAY;gBACvB,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,iCAAiC;aACxC,CAAC,CAAC;QACL,CAAC;QAED,4BAA4B;QAC5B,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjG,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnD,KAAK,EAAE,QAAQ;gBACf,OAAO,EAAE,gCAAgC;gBACzC,IAAI,EAAE,IAAI,CAAC,YAAY;gBACvB,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,+BAA+B;aACtC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAlCW,QAAA,qBAAqB,yBAkChC"}
1
+ {"version":3,"file":"best-practices-validator.js","sourceRoot":"","sources":["../../src/validators/best-practices-validator.ts"],"names":[],"mappings":";;;AAGO,MAAM,qBAAqB,GAAG,CAAC,WAAyB,EAAqB,EAAE;IACpF,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;QAElD,6BAA6B;QAC7B,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,CAAC,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YAC3G,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnD,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,8CAA8C;gBACvD,IAAI,EAAE,IAAI,CAAC,YAAY;gBACvB,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,iCAAiC;aACxC,CAAC,CAAC;QACL,CAAC;QAED,gFAAgF;QAChF,IACE,IAAI,CAAC,YAAY,KAAK,MAAM;YAC5B,IAAI,CAAC,YAAY,KAAK,MAAM;YAC5B,CAAC,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,EAC9F,CAAC;YACD,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnD,KAAK,EAAE,QAAQ;gBACf,OAAO,EAAE,gCAAgC;gBACzC,IAAI,EAAE,IAAI,CAAC,YAAY;gBACvB,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,+BAA+B;aACtC,CAAC,CAAC;QACL,CAAC;QAED,yDAAyD;QACzD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnD,KAAK,EAAE,aAAa;gBACpB,OAAO,EAAE,oFAAoF;gBAC7F,IAAI,EAAE,IAAI,CAAC,YAAY;gBACvB,QAAQ,EAAE,SAAS;gBACnB,IAAI,EAAE,qCAAqC;aAC5C,CAAC,CAAC;QACL,CAAC;QAED,wEAAwE;QACxE,IACE,CAAC,IAAI,CAAC,YAAY,KAAK,OAAO,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,OAAO,CAAC;YACnG,CAAC,WAAW,CAAC,UAAU,EACvB,CAAC;YACD,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnD,KAAK,EAAE,YAAY;gBACnB,OAAO,EAAE,GAAG,IAAI,CAAC,YAAY,4EAA4E;gBACzG,IAAI,EAAE,IAAI,CAAC,YAAY;gBACvB,QAAQ,EAAE,SAAS;gBACnB,IAAI,EAAE,gCAAgC;aACvC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAnEW,QAAA,qBAAqB,yBAmEhC"}
@@ -3,5 +3,6 @@ export * from './reference-validator';
3
3
  export * from './best-practices-validator';
4
4
  import { ParsedFile } from '../parser';
5
5
  import { ValidationError } from '../types';
6
- export declare const validateCatalog: (parsedFiles: ParsedFile[]) => ValidationError[];
6
+ import { CatalogDependencies } from '../config';
7
+ export declare const validateCatalog: (parsedFiles: ParsedFile[], dependencies?: CatalogDependencies) => ValidationError[];
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validators/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAK3C,eAAO,MAAM,eAAe,GAAI,aAAa,UAAU,EAAE,KAAG,eAAe,EAM1E,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validators/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAUhD,eAAO,MAAM,eAAe,GAAI,aAAa,UAAU,EAAE,EAAE,eAAe,mBAAmB,KAAG,eAAe,EAgB9G,CAAC"}
@@ -21,11 +21,21 @@ __exportStar(require("./best-practices-validator"), exports);
21
21
  const schema_validator_1 = require("./schema-validator");
22
22
  const reference_validator_1 = require("./reference-validator");
23
23
  const best_practices_validator_1 = require("./best-practices-validator");
24
- const validateCatalog = (parsedFiles) => {
24
+ const validateCatalog = (parsedFiles, dependencies) => {
25
25
  const schemaErrors = (0, schema_validator_1.validateAllSchemas)(parsedFiles);
26
- const referenceErrors = (0, reference_validator_1.validateReferences)(parsedFiles);
26
+ const referenceErrors = (0, reference_validator_1.validateReferences)(parsedFiles, dependencies);
27
+ const orphanErrors = (0, reference_validator_1.validateOrphanMessages)(parsedFiles, dependencies);
28
+ const deprecatedRefErrors = (0, reference_validator_1.validateDeprecatedReferences)(parsedFiles);
29
+ const duplicateErrors = (0, reference_validator_1.validateDuplicateResourceIds)(parsedFiles);
27
30
  const bestPracticeErrors = (0, best_practices_validator_1.validateBestPractices)(parsedFiles);
28
- return [...schemaErrors, ...referenceErrors, ...bestPracticeErrors];
31
+ return [
32
+ ...schemaErrors,
33
+ ...referenceErrors,
34
+ ...orphanErrors,
35
+ ...deprecatedRefErrors,
36
+ ...duplicateErrors,
37
+ ...bestPracticeErrors,
38
+ ];
29
39
  };
30
40
  exports.validateCatalog = validateCatalog;
31
41
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,wDAAsC;AACtC,6DAA2C;AAI3C,yDAAwD;AACxD,+DAA2D;AAC3D,yEAAmE;AAE5D,MAAM,eAAe,GAAG,CAAC,WAAyB,EAAqB,EAAE;IAC9E,MAAM,YAAY,GAAG,IAAA,qCAAkB,EAAC,WAAW,CAAC,CAAC;IACrD,MAAM,eAAe,GAAG,IAAA,wCAAkB,EAAC,WAAW,CAAC,CAAC;IACxD,MAAM,kBAAkB,GAAG,IAAA,gDAAqB,EAAC,WAAW,CAAC,CAAC;IAE9D,OAAO,CAAC,GAAG,YAAY,EAAE,GAAG,eAAe,EAAE,GAAG,kBAAkB,CAAC,CAAC;AACtE,CAAC,CAAC;AANW,QAAA,eAAe,mBAM1B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,wDAAsC;AACtC,6DAA2C;AAK3C,yDAAwD;AACxD,+DAK+B;AAC/B,yEAAmE;AAE5D,MAAM,eAAe,GAAG,CAAC,WAAyB,EAAE,YAAkC,EAAqB,EAAE;IAClH,MAAM,YAAY,GAAG,IAAA,qCAAkB,EAAC,WAAW,CAAC,CAAC;IACrD,MAAM,eAAe,GAAG,IAAA,wCAAkB,EAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IACtE,MAAM,YAAY,GAAG,IAAA,4CAAsB,EAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IACvE,MAAM,mBAAmB,GAAG,IAAA,kDAA4B,EAAC,WAAW,CAAC,CAAC;IACtE,MAAM,eAAe,GAAG,IAAA,kDAA4B,EAAC,WAAW,CAAC,CAAC;IAClE,MAAM,kBAAkB,GAAG,IAAA,gDAAqB,EAAC,WAAW,CAAC,CAAC;IAE9D,OAAO;QACL,GAAG,YAAY;QACf,GAAG,eAAe;QAClB,GAAG,YAAY;QACf,GAAG,mBAAmB;QACtB,GAAG,eAAe;QAClB,GAAG,kBAAkB;KACtB,CAAC;AACJ,CAAC,CAAC;AAhBW,QAAA,eAAe,mBAgB1B"}
@@ -1,11 +1,15 @@
1
1
  import { ParsedFile } from '../parser';
2
2
  import { ValidationError } from '../types';
3
+ import { CatalogDependencies } from '../config';
3
4
  interface ResourceIndex {
4
5
  [resourceType: string]: {
5
6
  [resourceId: string]: Set<string>;
6
7
  };
7
8
  }
8
- export declare const buildResourceIndex: (parsedFiles: ParsedFile[]) => ResourceIndex;
9
- export declare const validateReferences: (parsedFiles: ParsedFile[]) => ValidationError[];
9
+ export declare const buildResourceIndex: (parsedFiles: ParsedFile[], dependencies?: CatalogDependencies) => ResourceIndex;
10
+ export declare const validateReferences: (parsedFiles: ParsedFile[], dependencies?: CatalogDependencies) => ValidationError[];
11
+ export declare const validateOrphanMessages: (parsedFiles: ParsedFile[], dependencies?: CatalogDependencies) => ValidationError[];
12
+ export declare const validateDeprecatedReferences: (parsedFiles: ParsedFile[]) => ValidationError[];
13
+ export declare const validateDuplicateResourceIds: (parsedFiles: ParsedFile[]) => ValidationError[];
10
14
  export {};
11
15
  //# sourceMappingURL=reference-validator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reference-validator.d.ts","sourceRoot":"","sources":["../../src/validators/reference-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,eAAe,EAAqB,MAAM,UAAU,CAAC;AAI9D,UAAU,aAAa;IACrB,CAAC,YAAY,EAAE,MAAM,GAAG;QACtB,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;KACnC,CAAC;CACH;AAED,eAAO,MAAM,kBAAkB,GAAI,aAAa,UAAU,EAAE,KAAG,aAiC9D,CAAC;AA+IF,eAAO,MAAM,kBAAkB,GAAI,aAAa,UAAU,EAAE,KAAG,eAAe,EAkC7E,CAAC"}
1
+ {"version":3,"file":"reference-validator.d.ts","sourceRoot":"","sources":["../../src/validators/reference-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,eAAe,EAAqB,MAAM,UAAU,CAAC;AAE9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGhD,UAAU,aAAa;IACrB,CAAC,YAAY,EAAE,MAAM,GAAG;QACtB,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;KACnC,CAAC;CACH;AAED,eAAO,MAAM,kBAAkB,GAAI,aAAa,UAAU,EAAE,EAAE,eAAe,mBAAmB,KAAG,aAgDlG,CAAC;AAwMF,eAAO,MAAM,kBAAkB,GAAI,aAAa,UAAU,EAAE,EAAE,eAAe,mBAAmB,KAAG,eAAe,EAsDjH,CAAC;AAGF,eAAO,MAAM,sBAAsB,GAAI,aAAa,UAAU,EAAE,EAAE,eAAe,mBAAmB,KAAG,eAAe,EA0ErH,CAAC;AAGF,eAAO,MAAM,4BAA4B,GAAI,aAAa,UAAU,EAAE,KAAG,eAAe,EA2DvF,CAAC;AAGF,eAAO,MAAM,4BAA4B,GAAI,aAAa,UAAU,EAAE,KAAG,eAAe,EA2BvF,CAAC"}
@@ -3,9 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.validateReferences = exports.buildResourceIndex = void 0;
6
+ exports.validateDuplicateResourceIds = exports.validateDeprecatedReferences = exports.validateOrphanMessages = exports.validateReferences = exports.buildResourceIndex = void 0;
7
7
  const semver_1 = __importDefault(require("semver"));
8
- const buildResourceIndex = (parsedFiles) => {
8
+ const buildResourceIndex = (parsedFiles, dependencies) => {
9
9
  const index = {};
10
10
  for (const parsedFile of parsedFiles) {
11
11
  const { file, frontmatter } = parsedFile;
@@ -32,6 +32,20 @@ const buildResourceIndex = (parsedFiles) => {
32
32
  index[resourceType][resourceId].add('latest');
33
33
  }
34
34
  }
35
+ // Add dependency entries to the index
36
+ if (dependencies) {
37
+ for (const [resourceType, entries] of Object.entries(dependencies)) {
38
+ if (!index[resourceType]) {
39
+ index[resourceType] = {};
40
+ }
41
+ for (const entry of entries) {
42
+ if (!index[resourceType][entry.id]) {
43
+ index[resourceType][entry.id] = new Set();
44
+ }
45
+ index[resourceType][entry.id].add(entry.version || 'latest');
46
+ }
47
+ }
48
+ }
35
49
  return index;
36
50
  };
37
51
  exports.buildResourceIndex = buildResourceIndex;
@@ -115,6 +129,16 @@ const extractReferences = (parsedFile) => {
115
129
  references.push({ ref, possibleTypes: ['entity'], field: 'entities' });
116
130
  });
117
131
  }
132
+ if (frontmatter.writesTo && Array.isArray(frontmatter.writesTo)) {
133
+ frontmatter.writesTo.forEach((ref) => {
134
+ references.push({ ref, possibleTypes: ['dataStore'], field: 'writesTo' });
135
+ });
136
+ }
137
+ if (frontmatter.readsFrom && Array.isArray(frontmatter.readsFrom)) {
138
+ frontmatter.readsFrom.forEach((ref) => {
139
+ references.push({ ref, possibleTypes: ['dataStore'], field: 'readsFrom' });
140
+ });
141
+ }
118
142
  }
119
143
  if (file.resourceType === 'flow' && frontmatter.steps && Array.isArray(frontmatter.steps)) {
120
144
  frontmatter.steps.forEach((step, index) => {
@@ -153,8 +177,51 @@ const extractReferences = (parsedFile) => {
153
177
  }
154
178
  return references;
155
179
  };
156
- const validateReferences = (parsedFiles) => {
157
- const index = (0, exports.buildResourceIndex)(parsedFiles);
180
+ // Extract channel references from sends/receives to/from arrays
181
+ const extractChannelReferences = (parsedFile) => {
182
+ const { file, frontmatter } = parsedFile;
183
+ const references = [];
184
+ if (file.resourceType !== 'service' && file.resourceType !== 'domain') {
185
+ return references;
186
+ }
187
+ const extractFromPointers = (pointers, parentField) => {
188
+ if (!Array.isArray(pointers))
189
+ return;
190
+ pointers.forEach((pointer, idx) => {
191
+ if (pointer.to && Array.isArray(pointer.to)) {
192
+ pointer.to.forEach((channelRef, cIdx) => {
193
+ if (channelRef && channelRef.id) {
194
+ references.push({
195
+ ref: { id: channelRef.id, version: channelRef.version },
196
+ possibleTypes: ['channel'],
197
+ field: `${parentField}[${idx}].to[${cIdx}]`,
198
+ });
199
+ }
200
+ });
201
+ }
202
+ if (pointer.from && Array.isArray(pointer.from)) {
203
+ pointer.from.forEach((channelRef, cIdx) => {
204
+ if (channelRef && channelRef.id) {
205
+ references.push({
206
+ ref: { id: channelRef.id, version: channelRef.version },
207
+ possibleTypes: ['channel'],
208
+ field: `${parentField}[${idx}].from[${cIdx}]`,
209
+ });
210
+ }
211
+ });
212
+ }
213
+ });
214
+ };
215
+ if (frontmatter.sends && Array.isArray(frontmatter.sends)) {
216
+ extractFromPointers(frontmatter.sends, 'sends');
217
+ }
218
+ if (frontmatter.receives && Array.isArray(frontmatter.receives)) {
219
+ extractFromPointers(frontmatter.receives, 'receives');
220
+ }
221
+ return references;
222
+ };
223
+ const validateReferences = (parsedFiles, dependencies) => {
224
+ const index = (0, exports.buildResourceIndex)(parsedFiles, dependencies);
158
225
  const errors = [];
159
226
  for (const parsedFile of parsedFiles) {
160
227
  const references = extractReferences(parsedFile);
@@ -167,6 +234,9 @@ const validateReferences = (parsedFiles) => {
167
234
  if (field === 'owners') {
168
235
  rule = 'refs/owner-exists';
169
236
  }
237
+ else if (field === 'writesTo' || field === 'readsFrom') {
238
+ rule = 'refs/container-exists';
239
+ }
170
240
  else if (ref.version) {
171
241
  rule = 'refs/valid-version-range';
172
242
  }
@@ -180,8 +250,183 @@ const validateReferences = (parsedFiles) => {
180
250
  });
181
251
  }
182
252
  }
253
+ // Validate channel references from sends/receives to/from
254
+ const channelRefs = extractChannelReferences(parsedFile);
255
+ for (const { ref, possibleTypes, field } of channelRefs) {
256
+ const found = possibleTypes.some((type) => checkResourceExists(ref, type, index));
257
+ if (!found) {
258
+ const versionStr = ref.version ? ` (version: ${ref.version})` : '';
259
+ errors.push({
260
+ type: 'reference',
261
+ resource: `${parsedFile.file.resourceType}/${parsedFile.file.resourceId}`,
262
+ field,
263
+ message: `Referenced channel "${ref.id}"${versionStr} does not exist`,
264
+ file: parsedFile.file.relativePath,
265
+ rule: 'refs/channel-exists',
266
+ });
267
+ }
268
+ }
183
269
  }
184
270
  return errors;
185
271
  };
186
272
  exports.validateReferences = validateReferences;
273
+ // Detect messages (events/commands/queries) with no producer and no consumer
274
+ const validateOrphanMessages = (parsedFiles, dependencies) => {
275
+ const errors = [];
276
+ const messageTypes = ['event', 'command', 'query'];
277
+ // Collect all message IDs
278
+ const messageFiles = parsedFiles.filter((pf) => messageTypes.includes(pf.file.resourceType));
279
+ if (messageFiles.length === 0)
280
+ return errors;
281
+ // Build sets of produced and consumed message IDs
282
+ const producedMessages = new Set();
283
+ const consumedMessages = new Set();
284
+ for (const parsedFile of parsedFiles) {
285
+ const { file, frontmatter } = parsedFile;
286
+ if (file.resourceType === 'service' || file.resourceType === 'domain') {
287
+ if (frontmatter.sends && Array.isArray(frontmatter.sends)) {
288
+ frontmatter.sends.forEach((ref) => {
289
+ if (ref && ref.id)
290
+ producedMessages.add(ref.id);
291
+ });
292
+ }
293
+ if (frontmatter.receives && Array.isArray(frontmatter.receives)) {
294
+ frontmatter.receives.forEach((ref) => {
295
+ if (ref && ref.id)
296
+ consumedMessages.add(ref.id);
297
+ });
298
+ }
299
+ }
300
+ // Also check producers/consumers fields on messages themselves
301
+ if (messageTypes.includes(file.resourceType)) {
302
+ if (frontmatter.producers && Array.isArray(frontmatter.producers) && frontmatter.producers.length > 0) {
303
+ const msgId = frontmatter.id || file.resourceId;
304
+ producedMessages.add(msgId);
305
+ }
306
+ if (frontmatter.consumers && Array.isArray(frontmatter.consumers) && frontmatter.consumers.length > 0) {
307
+ const msgId = frontmatter.id || file.resourceId;
308
+ consumedMessages.add(msgId);
309
+ }
310
+ }
311
+ }
312
+ // Also consider dependency messages as having producers/consumers
313
+ if (dependencies) {
314
+ for (const [type, entries] of Object.entries(dependencies)) {
315
+ if (messageTypes.includes(type)) {
316
+ entries.forEach((entry) => {
317
+ // Dependencies are external, treat them as having both producers and consumers
318
+ producedMessages.add(entry.id);
319
+ consumedMessages.add(entry.id);
320
+ });
321
+ }
322
+ }
323
+ }
324
+ // Check each message for orphan status
325
+ for (const parsedFile of messageFiles) {
326
+ const msgId = parsedFile.frontmatter.id || parsedFile.file.resourceId;
327
+ const isProduced = producedMessages.has(msgId);
328
+ const isConsumed = consumedMessages.has(msgId);
329
+ if (!isProduced && !isConsumed) {
330
+ errors.push({
331
+ type: 'reference',
332
+ resource: `${parsedFile.file.resourceType}/${parsedFile.file.resourceId}`,
333
+ field: 'id',
334
+ message: `${parsedFile.file.resourceType} "${msgId}" has no producer and no consumer`,
335
+ file: parsedFile.file.relativePath,
336
+ rule: 'refs/orphan-messages',
337
+ });
338
+ }
339
+ }
340
+ return errors;
341
+ };
342
+ exports.validateOrphanMessages = validateOrphanMessages;
343
+ // Detect references to deprecated resources
344
+ const validateDeprecatedReferences = (parsedFiles) => {
345
+ const errors = [];
346
+ // Build an index of deprecated resources
347
+ const deprecatedIndex = {};
348
+ for (const parsedFile of parsedFiles) {
349
+ const { file, frontmatter } = parsedFile;
350
+ if (frontmatter.deprecated && frontmatter.deprecated !== false) {
351
+ const resourceId = frontmatter.id || file.resourceId;
352
+ const key = `${file.resourceType}:${resourceId}`;
353
+ if (!deprecatedIndex[key]) {
354
+ deprecatedIndex[key] = new Set();
355
+ }
356
+ if (frontmatter.version && typeof frontmatter.version === 'string') {
357
+ deprecatedIndex[key].add(frontmatter.version);
358
+ }
359
+ else {
360
+ deprecatedIndex[key].add('*'); // All versions deprecated
361
+ }
362
+ }
363
+ }
364
+ if (Object.keys(deprecatedIndex).length === 0)
365
+ return errors;
366
+ const isDeprecated = (type, id, version) => {
367
+ const key = `${type}:${id}`;
368
+ const versions = deprecatedIndex[key];
369
+ if (!versions)
370
+ return false;
371
+ if (versions.has('*'))
372
+ return true;
373
+ if (version && versions.has(version))
374
+ return true;
375
+ // For 'latest' or no version, check if any version is deprecated
376
+ if (!version || version === 'latest')
377
+ return versions.size > 0;
378
+ return false;
379
+ };
380
+ for (const parsedFile of parsedFiles) {
381
+ const references = extractReferences(parsedFile);
382
+ for (const { ref, possibleTypes, field } of references) {
383
+ // Skip owner references for this check
384
+ if (field === 'owners' || field === 'members')
385
+ continue;
386
+ for (const type of possibleTypes) {
387
+ if (isDeprecated(type, ref.id, ref.version)) {
388
+ const versionStr = ref.version ? ` (version: ${ref.version})` : '';
389
+ errors.push({
390
+ type: 'reference',
391
+ resource: `${parsedFile.file.resourceType}/${parsedFile.file.resourceId}`,
392
+ field,
393
+ message: `Referenced ${type} "${ref.id}"${versionStr} is deprecated`,
394
+ file: parsedFile.file.relativePath,
395
+ rule: 'versions/no-deprecated-references',
396
+ });
397
+ break; // Only report once per reference
398
+ }
399
+ }
400
+ }
401
+ }
402
+ return errors;
403
+ };
404
+ exports.validateDeprecatedReferences = validateDeprecatedReferences;
405
+ // Detect duplicate resource IDs (same type, same id, same version)
406
+ const validateDuplicateResourceIds = (parsedFiles) => {
407
+ const errors = [];
408
+ // Track seen resources: key = "type:id:version", value = file path
409
+ const seen = {};
410
+ for (const parsedFile of parsedFiles) {
411
+ const { file, frontmatter } = parsedFile;
412
+ const resourceId = frontmatter.id || file.resourceId;
413
+ const version = frontmatter.version || 'latest';
414
+ const key = `${file.resourceType}:${resourceId}:${version}`;
415
+ if (seen[key]) {
416
+ errors.push({
417
+ type: 'reference',
418
+ resource: `${file.resourceType}/${file.resourceId}`,
419
+ field: 'id',
420
+ message: `Duplicate ${file.resourceType} "${resourceId}" (version: ${version}) — also defined in ${seen[key]}`,
421
+ file: file.relativePath,
422
+ rule: 'structure/duplicate-resource-ids',
423
+ });
424
+ }
425
+ else {
426
+ seen[key] = file.relativePath;
427
+ }
428
+ }
429
+ return errors;
430
+ };
431
+ exports.validateDuplicateResourceIds = validateDuplicateResourceIds;
187
432
  //# sourceMappingURL=reference-validator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reference-validator.js","sourceRoot":"","sources":["../../src/validators/reference-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reference-validator.js","sourceRoot":"","sources":["../../src/validators/reference-validator.ts"],"names":[],"mappings":";;;;;;AAIA,oDAA4B;AAQrB,MAAM,kBAAkB,GAAG,CAAC,WAAyB,EAAE,YAAkC,EAAiB,EAAE;IACjH,MAAM,KAAK,GAAkB,EAAE,CAAC;IAEhC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC;QACzC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QAE9B,qFAAqF;QACrF,4BAA4B;QAC5B,8DAA8D;QAC9D,mEAAmE;QACnE,mGAAmG;QACnG,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACjC,IAAI,WAAW,CAAC,EAAE,IAAI,OAAO,WAAW,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;YACzD,UAAU,GAAG,WAAW,CAAC,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;YACrC,KAAK,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;QAC9C,CAAC;QAED,IAAI,WAAW,CAAC,OAAO,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACnE,KAAK,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,IAAI,YAAY,EAAE,CAAC;QACjB,KAAK,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YACnE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;gBACzB,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;YAC3B,CAAC;YACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;oBACnC,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;gBAC5C,CAAC;gBACD,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAhDW,QAAA,kBAAkB,sBAgD7B;AAEF,MAAM,mBAAmB,GAAG,CAAC,GAAsB,EAAE,YAA0B,EAAE,KAAoB,EAAW,EAAE;IAChH,MAAM,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEvD,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACrD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;IACxE,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAEvD,+BAA+B;IAC/B,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9E,CAAC;IAED,8BAA8B;IAC9B,IAAI,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gEAAgE;IAChE,IAAI,CAAC;QACH,kEAAkE;QAClE,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,IAAI,gBAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAE1F,yEAAyE;QACzE,KAAK,MAAM,gBAAgB,IAAI,cAAc,EAAE,CAAC;YAC9C,IAAI,gBAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,UAAU,CAAC,EAAE,CAAC;gBACnD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,iFAAiF;QACjF,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC/C,KAAK,MAAM,gBAAgB,IAAI,cAAc,EAAE,CAAC;gBAC9C,IAAI,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBACzC,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,2DAA2D;QAC3D,OAAO,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;AACH,CAAC,CAAC;AAQF,MAAM,iBAAiB,GAAG,CAAC,UAAsB,EAAmB,EAAE;IACpE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC;IACzC,MAAM,UAAU,GAAoB,EAAE,CAAC;IAEvC,IAAI,IAAI,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;QACnC,IAAI,WAAW,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAsB,EAAE,EAAE;gBACtD,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;YAC1E,CAAC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,WAAW,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9D,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAsB,EAAE,EAAE;gBACrD,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACxE,CAAC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,WAAW,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAsB,EAAE,EAAE;gBACtD,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACpC,IAAI,WAAW,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1D,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAsB,EAAE,EAAE;gBACnD,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YACzF,CAAC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,WAAW,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAsB,EAAE,EAAE;gBACtD,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;YAC5F,CAAC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,WAAW,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAsB,EAAE,EAAE;gBACtD,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,WAAW,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAsB,EAAE,EAAE;gBACtD,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;YAC5E,CAAC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,WAAW,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;YAClE,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAsB,EAAE,EAAE;gBACvD,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YAC7E,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,YAAY,KAAK,MAAM,IAAI,WAAW,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1F,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAA6B,EAAE,KAAa,EAAE,EAAE;YACzE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,UAAU,CAAC,IAAI,CAAC;oBACd,GAAG,EAAE,IAAI,CAAC,OAA4B;oBACtC,aAAa,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC;oBAC5C,KAAK,EAAE,SAAS,KAAK,WAAW;iBACjC,CAAC,CAAC;YACL,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,OAA4B,EAAE,aAAa,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,KAAK,WAAW,EAAE,CAAC,CAAC;YAC5H,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,WAAW,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;QACtG,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAA6B,EAAE,KAAa,EAAE,EAAE;YAC9E,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,UAAU,CAAC,IAAI,CAAC;oBACd,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,UAAoB,EAAE;oBACtC,aAAa,EAAE,CAAC,QAAQ,CAAC;oBACzB,KAAK,EAAE,cAAc,KAAK,cAAc;iBACzC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5D,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAa,EAAE,EAAE;YAC3C,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5F,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,CAAC,YAAY,KAAK,MAAM,IAAI,WAAW,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9F,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAc,EAAE,EAAE;YAC7C,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF,gEAAgE;AAChE,MAAM,wBAAwB,GAAG,CAAC,UAAsB,EAAmB,EAAE;IAC3E,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC;IACzC,MAAM,UAAU,GAAoB,EAAE,CAAC;IAEvC,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;QACtE,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,mBAAmB,GAAG,CAAC,QAAe,EAAE,WAAmB,EAAE,EAAE;QACnE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,OAAO;QACrC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAY,EAAE,GAAW,EAAE,EAAE;YAC7C,IAAI,OAAO,CAAC,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC5C,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,UAAe,EAAE,IAAY,EAAE,EAAE;oBACnD,IAAI,UAAU,IAAI,UAAU,CAAC,EAAE,EAAE,CAAC;wBAChC,UAAU,CAAC,IAAI,CAAC;4BACd,GAAG,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE;4BACvD,aAAa,EAAE,CAAC,SAAS,CAAC;4BAC1B,KAAK,EAAE,GAAG,WAAW,IAAI,GAAG,QAAQ,IAAI,GAAG;yBAC5C,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YACD,IAAI,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,UAAe,EAAE,IAAY,EAAE,EAAE;oBACrD,IAAI,UAAU,IAAI,UAAU,CAAC,EAAE,EAAE,CAAC;wBAChC,UAAU,CAAC,IAAI,CAAC;4BACd,GAAG,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE;4BACvD,aAAa,EAAE,CAAC,SAAS,CAAC;4BAC1B,KAAK,EAAE,GAAG,WAAW,IAAI,GAAG,UAAU,IAAI,GAAG;yBAC9C,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,IAAI,WAAW,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1D,mBAAmB,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,WAAW,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChE,mBAAmB,CAAC,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEK,MAAM,kBAAkB,GAAG,CAAC,WAAyB,EAAE,YAAkC,EAAqB,EAAE;IACrH,MAAM,KAAK,GAAG,IAAA,0BAAkB,EAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAEjD,KAAK,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,UAAU,EAAE,CAAC;YACvD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YAElF,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnE,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAExF,IAAI,IAAI,GAAG,sBAAsB,CAAC;gBAClC,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACvB,IAAI,GAAG,mBAAmB,CAAC;gBAC7B,CAAC;qBAAM,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;oBACzD,IAAI,GAAG,uBAAuB,CAAC;gBACjC,CAAC;qBAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;oBACvB,IAAI,GAAG,0BAA0B,CAAC;gBACpC,CAAC;gBAED,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,WAAW;oBACjB,QAAQ,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE;oBACzE,KAAK;oBACL,OAAO,EAAE,cAAc,OAAO,KAAK,GAAG,CAAC,EAAE,IAAI,UAAU,iBAAiB;oBACxE,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,YAAY;oBAClC,IAAI;iBACL,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,0DAA0D;QAC1D,MAAM,WAAW,GAAG,wBAAwB,CAAC,UAAU,CAAC,CAAC;QACzD,KAAK,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,WAAW,EAAE,CAAC;YACxD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YAElF,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnE,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,WAAW;oBACjB,QAAQ,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE;oBACzE,KAAK;oBACL,OAAO,EAAE,uBAAuB,GAAG,CAAC,EAAE,IAAI,UAAU,iBAAiB;oBACrE,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,YAAY;oBAClC,IAAI,EAAE,qBAAqB;iBAC5B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAtDW,QAAA,kBAAkB,sBAsD7B;AAEF,6EAA6E;AACtE,MAAM,sBAAsB,GAAG,CAAC,WAAyB,EAAE,YAAkC,EAAqB,EAAE;IACzH,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,MAAM,YAAY,GAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAEnE,0BAA0B;IAC1B,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAE7F,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAE7C,kDAAkD;IAClD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE3C,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC;QAEzC,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;YACtE,IAAI,WAAW,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1D,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAQ,EAAE,EAAE;oBACrC,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE;wBAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAClD,CAAC,CAAC,CAAC;YACL,CAAC;YACD,IAAI,WAAW,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAQ,EAAE,EAAE;oBACxC,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE;wBAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAClD,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,+DAA+D;QAC/D,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7C,IAAI,WAAW,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtG,MAAM,KAAK,GAAI,WAAW,CAAC,EAAa,IAAI,IAAI,CAAC,UAAU,CAAC;gBAC5D,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;YACD,IAAI,WAAW,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtG,MAAM,KAAK,GAAI,WAAW,CAAC,EAAa,IAAI,IAAI,CAAC,UAAU,CAAC;gBAC5D,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAED,kEAAkE;IAClE,IAAI,YAAY,EAAE,CAAC;QACjB,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3D,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAoB,CAAC,EAAE,CAAC;gBAChD,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;oBACxB,+EAA+E;oBAC/E,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBAC/B,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACjC,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE,CAAC;QACtC,MAAM,KAAK,GAAI,UAAU,CAAC,WAAW,CAAC,EAAa,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;QAClF,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAE/C,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,WAAW;gBACjB,QAAQ,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE;gBACzE,KAAK,EAAE,IAAI;gBACX,OAAO,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,KAAK,KAAK,mCAAmC;gBACrF,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,YAAY;gBAClC,IAAI,EAAE,sBAAsB;aAC7B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AA1EW,QAAA,sBAAsB,0BA0EjC;AAEF,4CAA4C;AACrC,MAAM,4BAA4B,GAAG,CAAC,WAAyB,EAAqB,EAAE;IAC3F,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,yCAAyC;IACzC,MAAM,eAAe,GAAgC,EAAE,CAAC;IACxD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC;QACzC,IAAI,WAAW,CAAC,UAAU,IAAI,WAAW,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;YAC/D,MAAM,UAAU,GAAI,WAAW,CAAC,EAAa,IAAI,IAAI,CAAC,UAAU,CAAC;YACjE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,IAAI,UAAU,EAAE,CAAC;YACjD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1B,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;YACnC,CAAC;YACD,IAAI,WAAW,CAAC,OAAO,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACnE,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,0BAA0B;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAE7D,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAU,EAAE,OAAgB,EAAW,EAAE;QAC3E,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5B,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACnC,IAAI,OAAO,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QAClD,iEAAiE;QACjE,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,QAAQ;YAAE,OAAO,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;QAC/D,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAEjD,KAAK,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,UAAU,EAAE,CAAC;YACvD,uCAAuC;YACvC,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS;gBAAE,SAAS;YAExD,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;gBACjC,IAAI,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC5C,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnE,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,WAAW;wBACjB,QAAQ,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE;wBACzE,KAAK;wBACL,OAAO,EAAE,cAAc,IAAI,KAAK,GAAG,CAAC,EAAE,IAAI,UAAU,gBAAgB;wBACpE,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,YAAY;wBAClC,IAAI,EAAE,mCAAmC;qBAC1C,CAAC,CAAC;oBACH,MAAM,CAAC,iCAAiC;gBAC1C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AA3DW,QAAA,4BAA4B,gCA2DvC;AAEF,mEAAmE;AAC5D,MAAM,4BAA4B,GAAG,CAAC,WAAyB,EAAqB,EAAE;IAC3F,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,mEAAmE;IACnE,MAAM,IAAI,GAA2B,EAAE,CAAC;IAExC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC;QACzC,MAAM,UAAU,GAAI,WAAW,CAAC,EAAa,IAAI,IAAI,CAAC,UAAU,CAAC;QACjE,MAAM,OAAO,GAAI,WAAW,CAAC,OAAkB,IAAI,QAAQ,CAAC;QAC5D,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,IAAI,UAAU,IAAI,OAAO,EAAE,CAAC;QAE5D,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,WAAW;gBACjB,QAAQ,EAAE,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnD,KAAK,EAAE,IAAI;gBACX,OAAO,EAAE,aAAa,IAAI,CAAC,YAAY,KAAK,UAAU,eAAe,OAAO,uBAAuB,IAAI,CAAC,GAAG,CAAC,EAAE;gBAC9G,IAAI,EAAE,IAAI,CAAC,YAAY;gBACvB,IAAI,EAAE,kCAAkC;aACzC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AA3BW,QAAA,4BAA4B,gCA2BvC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eventcatalog/linter",
3
- "version": "0.1.0",
3
+ "version": "1.0.0",
4
4
  "description": "A linter for EventCatalog to validate frontmatter and resource references",
5
5
  "repository": {
6
6
  "type": "git",