@cisco_open/linting-orchestrator 1.0.0-rc.4
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/LICENSE +201 -0
- package/NOTICE +5 -0
- package/README.md +43 -0
- package/build/cli/api-client.d.ts +170 -0
- package/build/cli/api-client.d.ts.map +1 -0
- package/build/cli/api-client.js +284 -0
- package/build/cli/api-client.js.map +1 -0
- package/build/cli/commands/agents.d.ts +7 -0
- package/build/cli/commands/agents.d.ts.map +1 -0
- package/build/cli/commands/agents.js +694 -0
- package/build/cli/commands/agents.js.map +1 -0
- package/build/cli/commands/completion.d.ts +9 -0
- package/build/cli/commands/completion.d.ts.map +1 -0
- package/build/cli/commands/completion.js +177 -0
- package/build/cli/commands/completion.js.map +1 -0
- package/build/cli/commands/config.d.ts +10 -0
- package/build/cli/commands/config.d.ts.map +1 -0
- package/build/cli/commands/config.js +284 -0
- package/build/cli/commands/config.js.map +1 -0
- package/build/cli/commands/health.d.ts +11 -0
- package/build/cli/commands/health.d.ts.map +1 -0
- package/build/cli/commands/health.js +38 -0
- package/build/cli/commands/health.js.map +1 -0
- package/build/cli/commands/help.d.ts +6 -0
- package/build/cli/commands/help.d.ts.map +1 -0
- package/build/cli/commands/help.js +20 -0
- package/build/cli/commands/help.js.map +1 -0
- package/build/cli/commands/history.d.ts +11 -0
- package/build/cli/commands/history.d.ts.map +1 -0
- package/build/cli/commands/history.js +50 -0
- package/build/cli/commands/history.js.map +1 -0
- package/build/cli/commands/jobs.d.ts +12 -0
- package/build/cli/commands/jobs.d.ts.map +1 -0
- package/build/cli/commands/jobs.js +84 -0
- package/build/cli/commands/jobs.js.map +1 -0
- package/build/cli/commands/lint.d.ts +15 -0
- package/build/cli/commands/lint.d.ts.map +1 -0
- package/build/cli/commands/lint.js +384 -0
- package/build/cli/commands/lint.js.map +1 -0
- package/build/cli/commands/ps.d.ts +8 -0
- package/build/cli/commands/ps.d.ts.map +1 -0
- package/build/cli/commands/ps.js +74 -0
- package/build/cli/commands/ps.js.map +1 -0
- package/build/cli/commands/reproduce.d.ts +9 -0
- package/build/cli/commands/reproduce.d.ts.map +1 -0
- package/build/cli/commands/reproduce.js +31 -0
- package/build/cli/commands/reproduce.js.map +1 -0
- package/build/cli/commands/reset.d.ts +5 -0
- package/build/cli/commands/reset.d.ts.map +1 -0
- package/build/cli/commands/reset.js +13 -0
- package/build/cli/commands/reset.js.map +1 -0
- package/build/cli/commands/results.d.ts +13 -0
- package/build/cli/commands/results.d.ts.map +1 -0
- package/build/cli/commands/results.js +129 -0
- package/build/cli/commands/results.js.map +1 -0
- package/build/cli/commands/rulesets/check.d.ts +12 -0
- package/build/cli/commands/rulesets/check.d.ts.map +1 -0
- package/build/cli/commands/rulesets/check.js +226 -0
- package/build/cli/commands/rulesets/check.js.map +1 -0
- package/build/cli/commands/rulesets/index.d.ts +5 -0
- package/build/cli/commands/rulesets/index.d.ts.map +1 -0
- package/build/cli/commands/rulesets/index.js +6 -0
- package/build/cli/commands/rulesets/index.js.map +1 -0
- package/build/cli/commands/rulesets/view.d.ts +16 -0
- package/build/cli/commands/rulesets/view.d.ts.map +1 -0
- package/build/cli/commands/rulesets/view.js +100 -0
- package/build/cli/commands/rulesets/view.js.map +1 -0
- package/build/cli/commands/start.d.ts +16 -0
- package/build/cli/commands/start.d.ts.map +1 -0
- package/build/cli/commands/start.js +167 -0
- package/build/cli/commands/start.js.map +1 -0
- package/build/cli/commands/status.d.ts +9 -0
- package/build/cli/commands/status.d.ts.map +1 -0
- package/build/cli/commands/status.js +46 -0
- package/build/cli/commands/status.js.map +1 -0
- package/build/cli/commands/stop.d.ts +11 -0
- package/build/cli/commands/stop.d.ts.map +1 -0
- package/build/cli/commands/stop.js +78 -0
- package/build/cli/commands/stop.js.map +1 -0
- package/build/cli/config-manager.d.ts +134 -0
- package/build/cli/config-manager.d.ts.map +1 -0
- package/build/cli/config-manager.js +288 -0
- package/build/cli/config-manager.js.map +1 -0
- package/build/cli/formatters.d.ts +62 -0
- package/build/cli/formatters.d.ts.map +1 -0
- package/build/cli/formatters.js +715 -0
- package/build/cli/formatters.js.map +1 -0
- package/build/cli/history-manager.d.ts +97 -0
- package/build/cli/history-manager.d.ts.map +1 -0
- package/build/cli/history-manager.js +201 -0
- package/build/cli/history-manager.js.map +1 -0
- package/build/cli/index.d.ts +16 -0
- package/build/cli/index.d.ts.map +1 -0
- package/build/cli/index.js +335 -0
- package/build/cli/index.js.map +1 -0
- package/build/cli/list-rulesets.d.ts +15 -0
- package/build/cli/list-rulesets.d.ts.map +1 -0
- package/build/cli/list-rulesets.js +193 -0
- package/build/cli/list-rulesets.js.map +1 -0
- package/build/cli/utils/connection-error.d.ts +9 -0
- package/build/cli/utils/connection-error.d.ts.map +1 -0
- package/build/cli/utils/connection-error.js +30 -0
- package/build/cli/utils/connection-error.js.map +1 -0
- package/build/cli/utils/embedded-server.d.ts +21 -0
- package/build/cli/utils/embedded-server.d.ts.map +1 -0
- package/build/cli/utils/embedded-server.js +61 -0
- package/build/cli/utils/embedded-server.js.map +1 -0
- package/build/cli/utils/mode-validator.d.ts +13 -0
- package/build/cli/utils/mode-validator.d.ts.map +1 -0
- package/build/cli/utils/mode-validator.js +31 -0
- package/build/cli/utils/mode-validator.js.map +1 -0
- package/build/cli/utils/port-checker.d.ts +20 -0
- package/build/cli/utils/port-checker.d.ts.map +1 -0
- package/build/cli/utils/port-checker.js +49 -0
- package/build/cli/utils/port-checker.js.map +1 -0
- package/build/config.d.ts +57 -0
- package/build/config.d.ts.map +1 -0
- package/build/config.js +527 -0
- package/build/config.js.map +1 -0
- package/build/document-accessor.d.ts +79 -0
- package/build/document-accessor.d.ts.map +1 -0
- package/build/document-accessor.js +148 -0
- package/build/document-accessor.js.map +1 -0
- package/build/formatters/reproduce-markdown.d.ts +14 -0
- package/build/formatters/reproduce-markdown.d.ts.map +1 -0
- package/build/formatters/reproduce-markdown.js +182 -0
- package/build/formatters/reproduce-markdown.js.map +1 -0
- package/build/formatters/sarif-builder.d.ts +86 -0
- package/build/formatters/sarif-builder.d.ts.map +1 -0
- package/build/formatters/sarif-builder.js +276 -0
- package/build/formatters/sarif-builder.js.map +1 -0
- package/build/index.d.ts +3 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +174 -0
- package/build/index.js.map +1 -0
- package/build/logger.d.ts +38 -0
- package/build/logger.d.ts.map +1 -0
- package/build/logger.js +105 -0
- package/build/logger.js.map +1 -0
- package/build/mock-server.d.ts +2 -0
- package/build/mock-server.d.ts.map +1 -0
- package/build/mock-server.js +290 -0
- package/build/mock-server.js.map +1 -0
- package/build/orchestrator.d.ts +149 -0
- package/build/orchestrator.d.ts.map +1 -0
- package/build/orchestrator.js +874 -0
- package/build/orchestrator.js.map +1 -0
- package/build/ruleset-loader.d.ts +79 -0
- package/build/ruleset-loader.d.ts.map +1 -0
- package/build/ruleset-loader.js +514 -0
- package/build/ruleset-loader.js.map +1 -0
- package/build/schemas.d.ts +2568 -0
- package/build/schemas.d.ts.map +1 -0
- package/build/schemas.js +674 -0
- package/build/schemas.js.map +1 -0
- package/build/server.d.ts +39 -0
- package/build/server.d.ts.map +1 -0
- package/build/server.js +834 -0
- package/build/server.js.map +1 -0
- package/build/storage/memory-storage.d.ts +190 -0
- package/build/storage/memory-storage.d.ts.map +1 -0
- package/build/storage/memory-storage.js +629 -0
- package/build/storage/memory-storage.js.map +1 -0
- package/build/storage/redis-storage.d.ts +134 -0
- package/build/storage/redis-storage.d.ts.map +1 -0
- package/build/storage/redis-storage.js +236 -0
- package/build/storage/redis-storage.js.map +1 -0
- package/build/storage/storage-adapter.d.ts +189 -0
- package/build/storage/storage-adapter.d.ts.map +1 -0
- package/build/storage/storage-adapter.js +36 -0
- package/build/storage/storage-adapter.js.map +1 -0
- package/build/types.d.ts +981 -0
- package/build/types.d.ts.map +1 -0
- package/build/types.js +5 -0
- package/build/types.js.map +1 -0
- package/build/utils/version.d.ts +40 -0
- package/build/utils/version.d.ts.map +1 -0
- package/build/utils/version.js +94 -0
- package/build/utils/version.js.map +1 -0
- package/build/validation.d.ts +95 -0
- package/build/validation.d.ts.map +1 -0
- package/build/validation.js +150 -0
- package/build/validation.js.map +1 -0
- package/build/worker-pool.d.ts +137 -0
- package/build/worker-pool.d.ts.map +1 -0
- package/build/worker-pool.js +549 -0
- package/build/worker-pool.js.map +1 -0
- package/build/worker.d.ts +2 -0
- package/build/worker.d.ts.map +1 -0
- package/build/worker.js +427 -0
- package/build/worker.js.map +1 -0
- package/package.json +110 -0
- package/rulesets/CHANGELOG.md +25 -0
- package/rulesets/config/rulesets.yaml +96 -0
- package/rulesets/sources/README.md +47 -0
- package/rulesets/sources/example/oas-recommended/v1.0.0/ruleset.yaml +6 -0
- package/rulesets/sources/example/oas-recommended/v2.0.0/ruleset.yaml +14 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { RulesetMetadata, RulesetVersion, RulesetSourceMetadata } from './types.js';
|
|
2
|
+
export interface RulesetLoaderConfig {
|
|
3
|
+
configPath: string;
|
|
4
|
+
sourcesBasePath: string;
|
|
5
|
+
enableCache?: boolean;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* RulesetLoader - Manages loading and caching of Spectral rulesets
|
|
9
|
+
*/
|
|
10
|
+
export declare class RulesetLoader {
|
|
11
|
+
private config;
|
|
12
|
+
private cache;
|
|
13
|
+
private loaderConfig;
|
|
14
|
+
constructor(config: RulesetLoaderConfig);
|
|
15
|
+
/**
|
|
16
|
+
* Initialize the loader by loading the configuration file
|
|
17
|
+
*/
|
|
18
|
+
initialize(): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Get a specific ruleset version
|
|
21
|
+
* @param name Ruleset name
|
|
22
|
+
* @param version Ruleset version (optional, uses default if not specified)
|
|
23
|
+
*/
|
|
24
|
+
loadVersion(name: string, version?: string): Promise<RulesetVersion>;
|
|
25
|
+
/**
|
|
26
|
+
* Load a specific ruleset version from filesystem
|
|
27
|
+
*/
|
|
28
|
+
private loadRulesetVersion;
|
|
29
|
+
/**
|
|
30
|
+
* Resolve an installed npm package's version by reading its package.json.
|
|
31
|
+
* Returns undefined if the package cannot be located.
|
|
32
|
+
*/
|
|
33
|
+
private resolvePackageVersion;
|
|
34
|
+
/**
|
|
35
|
+
* Extract rule definitions from a Spectral ruleset
|
|
36
|
+
*/
|
|
37
|
+
private extractRules;
|
|
38
|
+
/**
|
|
39
|
+
* Map Spectral severity to our severity type
|
|
40
|
+
*/
|
|
41
|
+
private mapSeverity;
|
|
42
|
+
/**
|
|
43
|
+
* Get default version for a ruleset
|
|
44
|
+
*/
|
|
45
|
+
getDefaultVersion(name: string): string | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Get source metadata for a specific ruleset version.
|
|
48
|
+
* Used to generate Spectral CLI reproduction instructions.
|
|
49
|
+
*/
|
|
50
|
+
getSourceMetadata(rulesetName: string, version: string): Promise<RulesetSourceMetadata | null>;
|
|
51
|
+
/**
|
|
52
|
+
* List all available rulesets
|
|
53
|
+
*/
|
|
54
|
+
listRulesets(): RulesetMetadata[];
|
|
55
|
+
/**
|
|
56
|
+
* List all available rulesets with rule counts (loads default versions)
|
|
57
|
+
*/
|
|
58
|
+
listRulesetsWithCounts(): Promise<RulesetMetadata[]>;
|
|
59
|
+
/**
|
|
60
|
+
* List all versions for a specific ruleset
|
|
61
|
+
*/
|
|
62
|
+
listVersions(name: string): string[];
|
|
63
|
+
/**
|
|
64
|
+
* Get ruleset metadata without loading the full ruleset
|
|
65
|
+
*/
|
|
66
|
+
getMetadata(name: string): RulesetMetadata;
|
|
67
|
+
/**
|
|
68
|
+
* Clear the cache (useful for testing or reloading)
|
|
69
|
+
*/
|
|
70
|
+
clearCache(): void;
|
|
71
|
+
/**
|
|
72
|
+
* Get cache statistics
|
|
73
|
+
*/
|
|
74
|
+
getCacheStats(): {
|
|
75
|
+
size: number;
|
|
76
|
+
keys: string[];
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=ruleset-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ruleset-loader.d.ts","sourceRoot":"","sources":["../src/ruleset-loader.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAIV,eAAe,EACf,cAAc,EAEd,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,KAAK,CAA0C;IACvD,OAAO,CAAC,YAAY,CAAsB;gBAE9B,MAAM,EAAE,mBAAmB;IAOvC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAcjC;;;;OAIG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IA2C1E;;OAEG;YACW,kBAAkB;IAwKhC;;;OAGG;YACW,qBAAqB;IAcnC;;OAEG;IACH,OAAO,CAAC,YAAY;IA8CpB;;OAEG;IACH,OAAO,CAAC,WAAW;IAsBnB;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAQnD;;;OAGG;IACG,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAgDpG;;OAEG;IACH,YAAY,IAAI,eAAe,EAAE;IAuBjC;;OAEG;IACG,sBAAsB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IA6C1D;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAapC;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe;IA0B1C;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,aAAa,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE;CAMlD"}
|
|
@@ -0,0 +1,514 @@
|
|
|
1
|
+
// Copyright 2026 Cisco Systems, Inc. and its affiliates
|
|
2
|
+
//
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
/**
|
|
5
|
+
* RulesetLoader - Loads and manages Spectral rulesets from configuration
|
|
6
|
+
*
|
|
7
|
+
* Responsibilities:
|
|
8
|
+
* - Load rulesets.yaml configuration
|
|
9
|
+
* - Resolve source repository paths
|
|
10
|
+
* - Parse Spectral ruleset files (YAML/JS)
|
|
11
|
+
* - Extract rule definitions
|
|
12
|
+
* - Cache loaded rulesets for performance
|
|
13
|
+
* - Provide ruleset metadata and rule listings
|
|
14
|
+
*/
|
|
15
|
+
import * as fs from 'fs/promises';
|
|
16
|
+
import * as os from 'os';
|
|
17
|
+
import * as path from 'path';
|
|
18
|
+
import { pathToFileURL } from 'url';
|
|
19
|
+
import { parse as parseYAML } from 'yaml';
|
|
20
|
+
// @ts-ignore - ESM export resolution issue with TypeScript
|
|
21
|
+
import { bundleAndLoadRuleset } from '@stoplight/spectral-ruleset-bundler/with-loader';
|
|
22
|
+
import spectralCore from '@stoplight/spectral-core';
|
|
23
|
+
const { Ruleset } = spectralCore;
|
|
24
|
+
/**
|
|
25
|
+
* RulesetLoader - Manages loading and caching of Spectral rulesets
|
|
26
|
+
*/
|
|
27
|
+
export class RulesetLoader {
|
|
28
|
+
config = null;
|
|
29
|
+
cache = new Map();
|
|
30
|
+
loaderConfig;
|
|
31
|
+
constructor(config) {
|
|
32
|
+
this.loaderConfig = {
|
|
33
|
+
enableCache: true,
|
|
34
|
+
...config,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Initialize the loader by loading the configuration file
|
|
39
|
+
*/
|
|
40
|
+
async initialize() {
|
|
41
|
+
const configContent = await fs.readFile(this.loaderConfig.configPath, 'utf-8');
|
|
42
|
+
try {
|
|
43
|
+
this.config = parseYAML(configContent);
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
47
|
+
throw new Error(`Failed to parse rulesets configuration: ${msg}`);
|
|
48
|
+
}
|
|
49
|
+
if (!this.config || !this.config.rulesets) {
|
|
50
|
+
throw new Error('Invalid rulesets configuration: missing rulesets array');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get a specific ruleset version
|
|
55
|
+
* @param name Ruleset name
|
|
56
|
+
* @param version Ruleset version (optional, uses default if not specified)
|
|
57
|
+
*/
|
|
58
|
+
async loadVersion(name, version) {
|
|
59
|
+
if (!this.config) {
|
|
60
|
+
throw new Error('RulesetLoader not initialized. Call initialize() first.');
|
|
61
|
+
}
|
|
62
|
+
// Find ruleset configuration
|
|
63
|
+
const rulesetConfig = this.config.rulesets.find(r => r.name === name);
|
|
64
|
+
if (!rulesetConfig) {
|
|
65
|
+
throw new Error(`Ruleset '${name}' not found in configuration`);
|
|
66
|
+
}
|
|
67
|
+
// Determine version to load
|
|
68
|
+
const versionToLoad = version || this.getDefaultVersion(name);
|
|
69
|
+
if (!versionToLoad) {
|
|
70
|
+
throw new Error(`No default version configured for ruleset '${name}'`);
|
|
71
|
+
}
|
|
72
|
+
// Check cache
|
|
73
|
+
const cacheKey = `${name}:${versionToLoad}`;
|
|
74
|
+
if (this.loaderConfig.enableCache && this.cache.has(cacheKey)) {
|
|
75
|
+
return this.cache.get(cacheKey);
|
|
76
|
+
}
|
|
77
|
+
// Find version configuration
|
|
78
|
+
const versionConfig = rulesetConfig.versions.find(v => v.version === versionToLoad);
|
|
79
|
+
if (!versionConfig) {
|
|
80
|
+
throw new Error(`Version '${versionToLoad}' not found for ruleset '${name}'. ` +
|
|
81
|
+
`Available versions: ${rulesetConfig.versions.map(v => v.version).join(', ')}`);
|
|
82
|
+
}
|
|
83
|
+
// Load the ruleset
|
|
84
|
+
const rulesetVersion = await this.loadRulesetVersion(rulesetConfig, versionConfig);
|
|
85
|
+
// Cache it
|
|
86
|
+
if (this.loaderConfig.enableCache) {
|
|
87
|
+
this.cache.set(cacheKey, rulesetVersion);
|
|
88
|
+
}
|
|
89
|
+
return rulesetVersion;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Load a specific ruleset version from filesystem
|
|
93
|
+
*/
|
|
94
|
+
async loadRulesetVersion(rulesetConfig, versionConfig) {
|
|
95
|
+
const isEmbedded = rulesetConfig.origin === 'embedded';
|
|
96
|
+
// Validate config:
|
|
97
|
+
// embedded: entrypoint must be a `spectral:*` token
|
|
98
|
+
// else: absolutePath OR (sourceRepo + sourceVersion + entrypoint) required
|
|
99
|
+
if (isEmbedded) {
|
|
100
|
+
if (!versionConfig.entrypoint?.startsWith('spectral:')) {
|
|
101
|
+
throw new Error(`Ruleset '${rulesetConfig.name}' version '${versionConfig.version}': ` +
|
|
102
|
+
`origin 'embedded' requires entrypoint to be a Spectral built-in token ` +
|
|
103
|
+
`(e.g. 'spectral:oas'), got: '${versionConfig.entrypoint}'`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
else if (!versionConfig.absolutePath && (!versionConfig.sourceRepo || !versionConfig.sourceVersion)) {
|
|
107
|
+
throw new Error(`Ruleset '${rulesetConfig.name}' version '${versionConfig.version}': ` +
|
|
108
|
+
`either absolutePath or all of sourceRepo, sourceVersion, and entrypoint must be set`);
|
|
109
|
+
}
|
|
110
|
+
// Resolve source path (ensure absolute path)
|
|
111
|
+
// embedded: write a tiny shim file that `extends` the built-in token,
|
|
112
|
+
// so the bundler's normal token-resolution path handles it.
|
|
113
|
+
let sourcePath;
|
|
114
|
+
let cleanupShim = null;
|
|
115
|
+
if (isEmbedded) {
|
|
116
|
+
const shimDir = await fs.mkdtemp(path.join(os.tmpdir(), 'spectify-embedded-'));
|
|
117
|
+
sourcePath = path.join(shimDir, `${rulesetConfig.name}.yaml`);
|
|
118
|
+
await fs.writeFile(sourcePath, `extends: ${versionConfig.entrypoint}\n`, 'utf8');
|
|
119
|
+
cleanupShim = async () => { await fs.rm(shimDir, { recursive: true, force: true }); };
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
sourcePath = versionConfig.absolutePath
|
|
123
|
+
? path.resolve(versionConfig.absolutePath)
|
|
124
|
+
: path.resolve(this.loaderConfig.sourcesBasePath, versionConfig.sourceRepo, versionConfig.sourceVersion, versionConfig.entrypoint);
|
|
125
|
+
// Check if file exists
|
|
126
|
+
try {
|
|
127
|
+
await fs.access(sourcePath);
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
throw new Error(`Ruleset file not found: ${sourcePath}\n` +
|
|
131
|
+
(versionConfig.absolutePath
|
|
132
|
+
? `Configured as absolutePath: ${versionConfig.absolutePath}`
|
|
133
|
+
: `Expected: rulesets/sources/${versionConfig.sourceRepo}/${versionConfig.sourceVersion}/${versionConfig.entrypoint}`));
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// Load and parse the Spectral ruleset.
|
|
137
|
+
//
|
|
138
|
+
// Two mutually-exclusive mechanisms are supported, selected by the
|
|
139
|
+
// catalogue entry's `loader` field (defaulting to `bundler`):
|
|
140
|
+
//
|
|
141
|
+
// bundler Spectral's Rollup-based `@stoplight/spectral-ruleset-bundler`.
|
|
142
|
+
// Handles YAML, ESM JS, `extends: 'spectral:oas'` token
|
|
143
|
+
// resolution, and named imports from CJS npm packages
|
|
144
|
+
// (via Rollup interop). The right choice for almost
|
|
145
|
+
// every ruleset.
|
|
146
|
+
//
|
|
147
|
+
// native Node's built-in `await import()`. Use when the entrypoint
|
|
148
|
+
// is a CommonJS dist file (typically Babel/`tsc` output of
|
|
149
|
+
// a TypeScript ruleset) that the bundler chokes on with
|
|
150
|
+
// `exports is not defined`. Only valid for .js/.cjs/.mjs
|
|
151
|
+
// entrypoints. The `embedded` shim always uses the bundler
|
|
152
|
+
// (it's a generated YAML stub).
|
|
153
|
+
const loaderKind = isEmbedded
|
|
154
|
+
? 'bundler'
|
|
155
|
+
: (versionConfig.loader ?? 'bundler');
|
|
156
|
+
let spectralRuleset;
|
|
157
|
+
if (loaderKind === 'native') {
|
|
158
|
+
if (!/\.(js|cjs|mjs)$/i.test(sourcePath)) {
|
|
159
|
+
throw new Error(`Ruleset '${rulesetConfig.name}@${versionConfig.version}' is configured ` +
|
|
160
|
+
`with loader: native but its entrypoint is not a JavaScript file ` +
|
|
161
|
+
`(${sourcePath}). The native loader only supports .js / .cjs / .mjs.`);
|
|
162
|
+
}
|
|
163
|
+
try {
|
|
164
|
+
const mod = await import(pathToFileURL(sourcePath).href);
|
|
165
|
+
const def = extractRulesetDef(mod);
|
|
166
|
+
if (!def || (!def.rules && !def.extends && !def.overrides)) {
|
|
167
|
+
throw new Error(`module did not export a recognisable Spectral ruleset definition ` +
|
|
168
|
+
`(expected an object with 'rules', 'extends', or 'overrides')`);
|
|
169
|
+
}
|
|
170
|
+
spectralRuleset = new Ruleset(def, { source: sourcePath });
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
throw new Error(`Failed to load Spectral ruleset from ${sourcePath} via loader: native: ` +
|
|
174
|
+
(error instanceof Error ? error.message : String(error)));
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
try {
|
|
179
|
+
spectralRuleset = await bundleAndLoadRuleset(sourcePath, { fs: { promises: fs }, fetch });
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
throw new Error(`Failed to load Spectral ruleset from ${sourcePath}: ` +
|
|
183
|
+
(error instanceof Error ? error.message : String(error)));
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
// For embedded entries, resolve the installed package's version if `package` is set
|
|
187
|
+
let resolvedVersion;
|
|
188
|
+
if (isEmbedded && versionConfig.package) {
|
|
189
|
+
resolvedVersion = await this.resolvePackageVersion(versionConfig.package);
|
|
190
|
+
// Mutate config so subsequent reads (e.g. via /rulesets API) see it.
|
|
191
|
+
versionConfig.resolvedVersion = resolvedVersion;
|
|
192
|
+
}
|
|
193
|
+
// Extract rules
|
|
194
|
+
const rules = this.extractRules(spectralRuleset, rulesetConfig.name, versionConfig.version);
|
|
195
|
+
// Build metadata
|
|
196
|
+
const metadata = {
|
|
197
|
+
name: rulesetConfig.name,
|
|
198
|
+
displayName: rulesetConfig.displayName,
|
|
199
|
+
category: rulesetConfig.category,
|
|
200
|
+
origin: rulesetConfig.origin,
|
|
201
|
+
description: rulesetConfig.description,
|
|
202
|
+
versions: rulesetConfig.versions.map(v => v.version),
|
|
203
|
+
defaultVersion: this.getDefaultVersion(rulesetConfig.name) || versionConfig.version,
|
|
204
|
+
ruleCount: rules.length,
|
|
205
|
+
tags: rulesetConfig.tags || [],
|
|
206
|
+
metadata: rulesetConfig.metadata,
|
|
207
|
+
};
|
|
208
|
+
// Build RulesetVersion
|
|
209
|
+
const rulesetVersion = {
|
|
210
|
+
metadata,
|
|
211
|
+
version: versionConfig.version,
|
|
212
|
+
sourceRepo: versionConfig.sourceRepo ?? '',
|
|
213
|
+
sourceVersion: versionConfig.sourceVersion ?? '',
|
|
214
|
+
entrypoint: versionConfig.entrypoint,
|
|
215
|
+
rulesetPath: sourcePath, // Store absolute path for worker initialization
|
|
216
|
+
releaseDate: versionConfig.releaseDate,
|
|
217
|
+
deprecated: versionConfig.deprecated || false,
|
|
218
|
+
changelog: versionConfig.changelog,
|
|
219
|
+
rules,
|
|
220
|
+
spectralRuleset, // Store original Spectral ruleset for execution
|
|
221
|
+
package: versionConfig.package,
|
|
222
|
+
resolvedVersion,
|
|
223
|
+
loader: loaderKind,
|
|
224
|
+
};
|
|
225
|
+
// Note: we intentionally keep the shim file on disk for the lifetime of
|
|
226
|
+
// the process so worker pools that re-read `rulesetPath` continue to find
|
|
227
|
+
// it. The OS reclaims it on tmp cleanup. If this becomes a footprint
|
|
228
|
+
// concern, register `cleanupShim` with a process-exit hook.
|
|
229
|
+
void cleanupShim;
|
|
230
|
+
return rulesetVersion;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Resolve an installed npm package's version by reading its package.json.
|
|
234
|
+
* Returns undefined if the package cannot be located.
|
|
235
|
+
*/
|
|
236
|
+
async resolvePackageVersion(pkgName) {
|
|
237
|
+
try {
|
|
238
|
+
// require.resolve handles node_modules traversal correctly.
|
|
239
|
+
const { createRequire } = await import('module');
|
|
240
|
+
const req = createRequire(import.meta.url);
|
|
241
|
+
const pkgJsonPath = req.resolve(`${pkgName}/package.json`);
|
|
242
|
+
const raw = await fs.readFile(pkgJsonPath, 'utf8');
|
|
243
|
+
const pkg = JSON.parse(raw);
|
|
244
|
+
return typeof pkg.version === 'string' ? pkg.version : undefined;
|
|
245
|
+
}
|
|
246
|
+
catch {
|
|
247
|
+
return undefined;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Extract rule definitions from a Spectral ruleset
|
|
252
|
+
*/
|
|
253
|
+
extractRules(spectralRuleset, rulesetName, rulesetVersion) {
|
|
254
|
+
const rules = [];
|
|
255
|
+
if (!spectralRuleset.rules) {
|
|
256
|
+
return rules;
|
|
257
|
+
}
|
|
258
|
+
for (const [ruleName, ruleConfig] of Object.entries(spectralRuleset.rules)) {
|
|
259
|
+
if (typeof ruleConfig !== 'object' || ruleConfig === null) {
|
|
260
|
+
continue;
|
|
261
|
+
}
|
|
262
|
+
const rule = ruleConfig;
|
|
263
|
+
// Skip rules that are disabled (severity -1, or enabled === false).
|
|
264
|
+
// Spectral keeps all inherited rules in the map but marks disabled ones
|
|
265
|
+
// with enabled=false (set by extends: [["ruleset", "off"]]). Including
|
|
266
|
+
// them would inflate the rule count with rules that never fire.
|
|
267
|
+
if (rule.enabled === false || rule.severity === -1) {
|
|
268
|
+
continue;
|
|
269
|
+
}
|
|
270
|
+
// Extract rule definition
|
|
271
|
+
const ruleDefinition = {
|
|
272
|
+
name: ruleName,
|
|
273
|
+
rulesetName,
|
|
274
|
+
rulesetVersion,
|
|
275
|
+
severity: this.mapSeverity(rule.severity),
|
|
276
|
+
message: rule.message || rule.description || '',
|
|
277
|
+
description: rule.description || '',
|
|
278
|
+
given: Array.isArray(rule.given) ? rule.given : [rule.given].filter(Boolean),
|
|
279
|
+
then: rule.then,
|
|
280
|
+
recommended: rule.recommended !== false, // Default to true
|
|
281
|
+
formats: rule.formats,
|
|
282
|
+
};
|
|
283
|
+
rules.push(ruleDefinition);
|
|
284
|
+
}
|
|
285
|
+
return rules;
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Map Spectral severity to our severity type
|
|
289
|
+
*/
|
|
290
|
+
mapSeverity(severity) {
|
|
291
|
+
if (typeof severity === 'string') {
|
|
292
|
+
const lower = severity.toLowerCase();
|
|
293
|
+
if (lower === 'error' || lower === 'warn' || lower === 'info' || lower === 'hint') {
|
|
294
|
+
return lower;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
// Spectral numeric severities: 0=error, 1=warn, 2=info, 3=hint
|
|
298
|
+
if (typeof severity === 'number') {
|
|
299
|
+
const severityMap = {
|
|
300
|
+
0: 'error',
|
|
301
|
+
1: 'warn',
|
|
302
|
+
2: 'info',
|
|
303
|
+
3: 'hint',
|
|
304
|
+
};
|
|
305
|
+
return severityMap[severity] || 'warn';
|
|
306
|
+
}
|
|
307
|
+
return 'warn'; // Default
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Get default version for a ruleset
|
|
311
|
+
*/
|
|
312
|
+
getDefaultVersion(name) {
|
|
313
|
+
if (!this.config) {
|
|
314
|
+
throw new Error('RulesetLoader not initialized');
|
|
315
|
+
}
|
|
316
|
+
return this.config.defaults?.[name];
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Get source metadata for a specific ruleset version.
|
|
320
|
+
* Used to generate Spectral CLI reproduction instructions.
|
|
321
|
+
*/
|
|
322
|
+
async getSourceMetadata(rulesetName, version) {
|
|
323
|
+
if (!this.config) {
|
|
324
|
+
throw new Error('RulesetLoader not initialized');
|
|
325
|
+
}
|
|
326
|
+
const rulesetConfig = this.config.rulesets.find(r => r.name === rulesetName);
|
|
327
|
+
if (!rulesetConfig) {
|
|
328
|
+
return null;
|
|
329
|
+
}
|
|
330
|
+
const versionConfig = rulesetConfig.versions.find(v => v.version === version);
|
|
331
|
+
if (!versionConfig) {
|
|
332
|
+
return null;
|
|
333
|
+
}
|
|
334
|
+
// Check if package.json exists in the source directory
|
|
335
|
+
// For embedded entries, there is no sources/ tree — skip the check.
|
|
336
|
+
const isEmbedded = rulesetConfig.origin === 'embedded';
|
|
337
|
+
let hasPackageJson = false;
|
|
338
|
+
if (!isEmbedded) {
|
|
339
|
+
const sourceDir = versionConfig.absolutePath
|
|
340
|
+
? path.dirname(path.resolve(versionConfig.absolutePath))
|
|
341
|
+
: path.resolve(this.loaderConfig.sourcesBasePath, versionConfig.sourceRepo, versionConfig.sourceVersion);
|
|
342
|
+
try {
|
|
343
|
+
await fs.access(path.join(sourceDir, 'package.json'));
|
|
344
|
+
hasPackageJson = true;
|
|
345
|
+
}
|
|
346
|
+
catch {
|
|
347
|
+
// No package.json
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
return {
|
|
351
|
+
rulesetName: rulesetConfig.name,
|
|
352
|
+
displayName: rulesetConfig.displayName,
|
|
353
|
+
version: versionConfig.version,
|
|
354
|
+
repositoryUrl: rulesetConfig.metadata.repository,
|
|
355
|
+
sourceRepo: versionConfig.sourceRepo ?? '',
|
|
356
|
+
sourceVersion: versionConfig.sourceVersion ?? '',
|
|
357
|
+
entrypoint: versionConfig.entrypoint,
|
|
358
|
+
hasPackageJson,
|
|
359
|
+
license: rulesetConfig.metadata.license,
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* List all available rulesets
|
|
364
|
+
*/
|
|
365
|
+
listRulesets() {
|
|
366
|
+
if (!this.config) {
|
|
367
|
+
throw new Error('RulesetLoader not initialized');
|
|
368
|
+
}
|
|
369
|
+
return this.config.rulesets.map(r => {
|
|
370
|
+
const defaultVersion = this.getDefaultVersion(r.name);
|
|
371
|
+
return {
|
|
372
|
+
name: r.name,
|
|
373
|
+
displayName: r.displayName,
|
|
374
|
+
category: r.category,
|
|
375
|
+
origin: r.origin,
|
|
376
|
+
description: r.description,
|
|
377
|
+
versions: r.versions.map(v => v.version),
|
|
378
|
+
defaultVersion: defaultVersion || r.versions[0].version,
|
|
379
|
+
ruleCount: 0, // Will be populated when version is loaded
|
|
380
|
+
tags: r.tags || [],
|
|
381
|
+
metadata: r.metadata,
|
|
382
|
+
};
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* List all available rulesets with rule counts (loads default versions)
|
|
387
|
+
*/
|
|
388
|
+
async listRulesetsWithCounts() {
|
|
389
|
+
if (!this.config) {
|
|
390
|
+
throw new Error('RulesetLoader not initialized');
|
|
391
|
+
}
|
|
392
|
+
const metadataPromises = this.config.rulesets.map(async (r) => {
|
|
393
|
+
const defaultVersion = this.getDefaultVersion(r.name) || r.versions[0].version;
|
|
394
|
+
try {
|
|
395
|
+
// Load the default version to get accurate rule count (cached after first load)
|
|
396
|
+
const rulesetVersion = await this.loadVersion(r.name, defaultVersion);
|
|
397
|
+
return {
|
|
398
|
+
name: r.name,
|
|
399
|
+
displayName: r.displayName,
|
|
400
|
+
category: r.category,
|
|
401
|
+
origin: r.origin,
|
|
402
|
+
description: r.description,
|
|
403
|
+
versions: r.versions.map(v => v.version),
|
|
404
|
+
defaultVersion,
|
|
405
|
+
ruleCount: rulesetVersion.rules.length,
|
|
406
|
+
tags: r.tags || [],
|
|
407
|
+
metadata: r.metadata,
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
catch (error) {
|
|
411
|
+
// If loading fails, return metadata with 0 rule count
|
|
412
|
+
console.error(`Failed to load ruleset ${r.name}:`, error);
|
|
413
|
+
return {
|
|
414
|
+
name: r.name,
|
|
415
|
+
displayName: r.displayName,
|
|
416
|
+
category: r.category,
|
|
417
|
+
origin: r.origin,
|
|
418
|
+
description: r.description,
|
|
419
|
+
versions: r.versions.map(v => v.version),
|
|
420
|
+
defaultVersion,
|
|
421
|
+
ruleCount: 0,
|
|
422
|
+
tags: r.tags || [],
|
|
423
|
+
metadata: r.metadata,
|
|
424
|
+
};
|
|
425
|
+
}
|
|
426
|
+
});
|
|
427
|
+
return Promise.all(metadataPromises);
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* List all versions for a specific ruleset
|
|
431
|
+
*/
|
|
432
|
+
listVersions(name) {
|
|
433
|
+
if (!this.config) {
|
|
434
|
+
throw new Error('RulesetLoader not initialized');
|
|
435
|
+
}
|
|
436
|
+
const rulesetConfig = this.config.rulesets.find(r => r.name === name);
|
|
437
|
+
if (!rulesetConfig) {
|
|
438
|
+
throw new Error(`Ruleset '${name}' not found`);
|
|
439
|
+
}
|
|
440
|
+
return rulesetConfig.versions.map(v => v.version);
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* Get ruleset metadata without loading the full ruleset
|
|
444
|
+
*/
|
|
445
|
+
getMetadata(name) {
|
|
446
|
+
if (!this.config) {
|
|
447
|
+
throw new Error('RulesetLoader not initialized');
|
|
448
|
+
}
|
|
449
|
+
const rulesetConfig = this.config.rulesets.find(r => r.name === name);
|
|
450
|
+
if (!rulesetConfig) {
|
|
451
|
+
throw new Error(`Ruleset '${name}' not found`);
|
|
452
|
+
}
|
|
453
|
+
const defaultVersion = this.getDefaultVersion(name);
|
|
454
|
+
return {
|
|
455
|
+
name: rulesetConfig.name,
|
|
456
|
+
displayName: rulesetConfig.displayName,
|
|
457
|
+
category: rulesetConfig.category,
|
|
458
|
+
origin: rulesetConfig.origin,
|
|
459
|
+
description: rulesetConfig.description,
|
|
460
|
+
versions: rulesetConfig.versions.map(v => v.version),
|
|
461
|
+
defaultVersion: defaultVersion || rulesetConfig.versions[0].version,
|
|
462
|
+
ruleCount: 0, // Will be populated when version is loaded
|
|
463
|
+
tags: rulesetConfig.tags || [],
|
|
464
|
+
metadata: rulesetConfig.metadata,
|
|
465
|
+
};
|
|
466
|
+
}
|
|
467
|
+
/**
|
|
468
|
+
* Clear the cache (useful for testing or reloading)
|
|
469
|
+
*/
|
|
470
|
+
clearCache() {
|
|
471
|
+
this.cache.clear();
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
474
|
+
* Get cache statistics
|
|
475
|
+
*/
|
|
476
|
+
getCacheStats() {
|
|
477
|
+
return {
|
|
478
|
+
size: this.cache.size,
|
|
479
|
+
keys: Array.from(this.cache.keys()),
|
|
480
|
+
};
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
/**
|
|
484
|
+
* Extract a Spectral ruleset definition object from the namespace returned
|
|
485
|
+
* by Node's `await import()`. Handles the common module shapes:
|
|
486
|
+
*
|
|
487
|
+
* ESM: `export default { rules: ... }` → { default: { rules } }
|
|
488
|
+
* CJS: `module.exports = { rules: ... }` → { default: { rules } }
|
|
489
|
+
* CJS named: `module.exports.default = { rules: ... }`→ { default: { rules } }
|
|
490
|
+
* Babel CJS: Both of the above wrapped under → { __esModule, default: { default: { rules } } }
|
|
491
|
+
* Babel's `_interopRequireDefault` shape
|
|
492
|
+
*
|
|
493
|
+
* Returns `null` if no plausible ruleset definition was found.
|
|
494
|
+
*/
|
|
495
|
+
function extractRulesetDef(mod) {
|
|
496
|
+
if (!mod || typeof mod !== 'object')
|
|
497
|
+
return null;
|
|
498
|
+
const ns = mod;
|
|
499
|
+
let candidate = (ns.default ?? ns);
|
|
500
|
+
// Babel CJS interop wraps the real definition under a second `.default`.
|
|
501
|
+
// Detect this by checking that the outer candidate has none of the
|
|
502
|
+
// top-level ruleset keys but does have a `.default` that looks like one.
|
|
503
|
+
if (candidate
|
|
504
|
+
&& typeof candidate === 'object'
|
|
505
|
+
&& !('rules' in candidate)
|
|
506
|
+
&& !('extends' in candidate)
|
|
507
|
+
&& !('overrides' in candidate)
|
|
508
|
+
&& candidate.default
|
|
509
|
+
&& typeof candidate.default === 'object') {
|
|
510
|
+
candidate = candidate.default;
|
|
511
|
+
}
|
|
512
|
+
return candidate;
|
|
513
|
+
}
|
|
514
|
+
//# sourceMappingURL=ruleset-loader.js.map
|