@apiquest/fracture 1.0.4 → 1.0.5
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 +90 -2
- package/dist/CollectionRunner.d.ts +2 -0
- package/dist/CollectionRunner.d.ts.map +1 -1
- package/dist/CollectionRunner.js +20 -2
- package/dist/CollectionRunner.js.map +1 -1
- package/dist/LibraryLoader.d.ts +49 -0
- package/dist/LibraryLoader.d.ts.map +1 -0
- package/dist/LibraryLoader.js +198 -0
- package/dist/LibraryLoader.js.map +1 -0
- package/dist/PluginLoader.d.ts.map +1 -1
- package/dist/PluginLoader.js +9 -6
- package/dist/PluginLoader.js.map +1 -1
- package/dist/PluginResolver.d.ts +1 -1
- package/dist/PluginResolver.d.ts.map +1 -1
- package/dist/PluginResolver.js +1 -1
- package/dist/PluginResolver.js.map +1 -1
- package/dist/ScriptEngine.d.ts +2 -1
- package/dist/ScriptEngine.d.ts.map +1 -1
- package/dist/ScriptEngine.js +15 -8
- package/dist/ScriptEngine.js.map +1 -1
- package/dist/cli/index.js +35 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/plugin-commands.d.ts.map +1 -1
- package/dist/cli/plugin-commands.js +47 -81
- package/dist/cli/plugin-commands.js.map +1 -1
- package/dist/cli/plugin-installer.d.ts +48 -0
- package/dist/cli/plugin-installer.d.ts.map +1 -0
- package/dist/cli/plugin-installer.js +136 -0
- package/dist/cli/plugin-installer.js.map +1 -0
- package/dist/cli/plugin-registry.d.ts +17 -0
- package/dist/cli/plugin-registry.d.ts.map +1 -0
- package/dist/cli/plugin-registry.js +77 -0
- package/dist/cli/plugin-registry.js.map +1 -0
- package/package.json +1 -1
- package/src/CollectionAnalyzer.ts +0 -102
- package/src/CollectionRunner.ts +0 -1423
- package/src/CollectionRunner.types.ts +0 -9
- package/src/CollectionValidator.ts +0 -289
- package/src/ConsoleReporter.ts +0 -143
- package/src/CookieJar.ts +0 -258
- package/src/DagScheduler.ts +0 -439
- package/src/Logger.ts +0 -85
- package/src/PluginLoader.ts +0 -126
- package/src/PluginManager.ts +0 -208
- package/src/PluginResolver.ts +0 -154
- package/src/QuestAPI.ts +0 -764
- package/src/QuestAPI.types.ts +0 -33
- package/src/QuestTestAPI.ts +0 -164
- package/src/RequestFilter.ts +0 -224
- package/src/ScriptEngine.ts +0 -219
- package/src/ScriptValidator.ts +0 -428
- package/src/TaskGraph.ts +0 -598
- package/src/TestCounter.ts +0 -109
- package/src/VariableResolver.ts +0 -114
- package/src/cli/index.ts +0 -480
- package/src/cli/plugin-commands.ts +0 -342
- package/src/cli/plugin-discovery.ts +0 -44
- package/src/index.ts +0 -24
- package/src/utils.ts +0 -52
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-commands.js","sourceRoot":"","sources":["../../src/cli/plugin-commands.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,MAAM,aAAa,GAAG,OAAO;SAC1B,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,yBAAyB,CAAC,CAAC;IAE1C,8BAA8B;IAC9B,aAAa;SACV,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,kBAAkB,CAAC;SAC/B,QAAQ,CAAC,YAAY,EAAE,2BAA2B,CAAC;SACnD,MAAM,CAAC,KAAK,EAAE,KAAe,EAAE,EAAE;QAChC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB,IAAI,EAAE,CAAC;YAE7E,OAAO,CAAC,GAAG,CAAC,cAAc,WAAW,KAAK,CAAC,CAAC;YAE5C,IAAI,CAAC;gBACH,8BAA8B;gBAC9B,MAAM,SAAS,CAAC,kBAAkB,WAAW,EAAE,CAAC,CAAC;gBACjD,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"plugin-commands.js","sourceRoot":"","sources":["../../src/cli/plugin-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { PluginRequirements } from '../CollectionAnalyzer.js';
|
|
2
|
+
import type { ResolvedPlugin } from '../PluginResolver.js';
|
|
3
|
+
export interface PluginInstallResult {
|
|
4
|
+
installed: string[];
|
|
5
|
+
failed: string[];
|
|
6
|
+
skipped: string[];
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Installer for ApiQuest plugins
|
|
10
|
+
* Handles global installation of missing plugins via npm
|
|
11
|
+
* Uses package.json metadata from npm registry to map capabilities to packages
|
|
12
|
+
*/
|
|
13
|
+
export declare class PluginInstaller {
|
|
14
|
+
/**
|
|
15
|
+
* Find plugins that are required but not resolved
|
|
16
|
+
* Queries npm registry to read package.json metadata and map capabilities to actual package names
|
|
17
|
+
*
|
|
18
|
+
* @param requirements - Plugin requirements (protocols, authTypes, valueProviders)
|
|
19
|
+
* @param resolved - Already resolved/installed plugins
|
|
20
|
+
* @param registryUrl - Optional custom npm registry URL
|
|
21
|
+
*/
|
|
22
|
+
static findMissingPlugins(requirements: PluginRequirements, resolved: ResolvedPlugin[], registryUrl?: string): Promise<Set<string>>;
|
|
23
|
+
/**
|
|
24
|
+
* Find which package provides a specific protocol
|
|
25
|
+
* Searches registry metadata to find the correct package
|
|
26
|
+
*/
|
|
27
|
+
private static findPackageForProtocol;
|
|
28
|
+
/**
|
|
29
|
+
* Find which package provides a specific auth type
|
|
30
|
+
* Searches registry metadata to find the correct package
|
|
31
|
+
* Note: Multiple packages can provide the same auth type, we pick the first match
|
|
32
|
+
*/
|
|
33
|
+
private static findPackageForAuthType;
|
|
34
|
+
/**
|
|
35
|
+
* Find which package provides a specific value provider
|
|
36
|
+
* Searches registry metadata to find the correct package
|
|
37
|
+
*/
|
|
38
|
+
private static findPackageForProvider;
|
|
39
|
+
/**
|
|
40
|
+
* Install plugins globally via npm
|
|
41
|
+
*/
|
|
42
|
+
static installPlugins(packageNames: Set<string>): Promise<PluginInstallResult>;
|
|
43
|
+
/**
|
|
44
|
+
* Clear the registry cache (useful for testing or forcing a refresh)
|
|
45
|
+
*/
|
|
46
|
+
static clearCache(): void;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=plugin-installer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-installer.d.ts","sourceRoot":"","sources":["../../src/cli/plugin-installer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAM3D,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAOD;;;;GAIG;AACH,qBAAa,eAAe;IAC1B;;;;;;;OAOG;WACU,kBAAkB,CAC7B,YAAY,EAAE,kBAAkB,EAChC,QAAQ,EAAE,cAAc,EAAE,EAC1B,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IA2DvB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAOrC;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAOrC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAOrC;;OAEG;WACU,cAAc,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA2BpF;;OAEG;IACH,MAAM,CAAC,UAAU,IAAI,IAAI;CAG1B"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { exec } from 'child_process';
|
|
2
|
+
import { promisify } from 'util';
|
|
3
|
+
import { fetchAvailablePlugins } from './plugin-registry.js';
|
|
4
|
+
const execAsync = promisify(exec);
|
|
5
|
+
/**
|
|
6
|
+
* Cache for registry plugin data to avoid repeated queries
|
|
7
|
+
*/
|
|
8
|
+
let registryPluginsCache = null;
|
|
9
|
+
/**
|
|
10
|
+
* Installer for ApiQuest plugins
|
|
11
|
+
* Handles global installation of missing plugins via npm
|
|
12
|
+
* Uses package.json metadata from npm registry to map capabilities to packages
|
|
13
|
+
*/
|
|
14
|
+
export class PluginInstaller {
|
|
15
|
+
/**
|
|
16
|
+
* Find plugins that are required but not resolved
|
|
17
|
+
* Queries npm registry to read package.json metadata and map capabilities to actual package names
|
|
18
|
+
*
|
|
19
|
+
* @param requirements - Plugin requirements (protocols, authTypes, valueProviders)
|
|
20
|
+
* @param resolved - Already resolved/installed plugins
|
|
21
|
+
* @param registryUrl - Optional custom npm registry URL
|
|
22
|
+
*/
|
|
23
|
+
static async findMissingPlugins(requirements, resolved, registryUrl) {
|
|
24
|
+
const missing = new Set();
|
|
25
|
+
// Fetch available plugins from registry (cached)
|
|
26
|
+
if (registryPluginsCache === null) {
|
|
27
|
+
try {
|
|
28
|
+
registryPluginsCache = await fetchAvailablePlugins(registryUrl);
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
throw new Error(`Failed to fetch plugin registry data from ${registryUrl ?? 'default registry'}. ` +
|
|
32
|
+
`Error: ${error instanceof Error ? error.message : String(error)}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const registryPlugins = registryPluginsCache;
|
|
36
|
+
// Check protocols
|
|
37
|
+
for (const protocol of requirements.protocols) {
|
|
38
|
+
const found = resolved.some(p => p.protocols?.includes(protocol) === true);
|
|
39
|
+
if (!found) {
|
|
40
|
+
const packageName = this.findPackageForProtocol(protocol, registryPlugins);
|
|
41
|
+
if (packageName !== null) {
|
|
42
|
+
missing.add(packageName);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
console.warn(`Warning: No package found in registry for protocol "${protocol}"`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// Check auth types
|
|
50
|
+
for (const authType of requirements.authTypes) {
|
|
51
|
+
const found = resolved.some(p => p.authTypes?.includes(authType) === true);
|
|
52
|
+
if (!found) {
|
|
53
|
+
const packageName = this.findPackageForAuthType(authType, registryPlugins);
|
|
54
|
+
if (packageName !== null) {
|
|
55
|
+
missing.add(packageName);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
console.warn(`Warning: No package found in registry for auth type "${authType}"`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// Check value providers
|
|
63
|
+
for (const provider of requirements.valueProviders) {
|
|
64
|
+
const found = resolved.some(p => p.valueTypes?.includes(provider) === true);
|
|
65
|
+
if (!found) {
|
|
66
|
+
const packageName = this.findPackageForProvider(provider, registryPlugins);
|
|
67
|
+
if (packageName !== null) {
|
|
68
|
+
missing.add(packageName);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
console.warn(`Warning: No package found in registry for provider "${provider}"`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return missing;
|
|
76
|
+
}
|
|
77
|
+
//TODO: Need to enhance this to use provides/supports ....
|
|
78
|
+
/**
|
|
79
|
+
* Find which package provides a specific protocol
|
|
80
|
+
* Searches registry metadata to find the correct package
|
|
81
|
+
*/
|
|
82
|
+
static findPackageForProtocol(protocol, plugins) {
|
|
83
|
+
const plugin = plugins.find(p => p.apiquest?.capabilities?.provides?.protocols?.includes(protocol) === true);
|
|
84
|
+
return plugin?.name ?? null;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Find which package provides a specific auth type
|
|
88
|
+
* Searches registry metadata to find the correct package
|
|
89
|
+
* Note: Multiple packages can provide the same auth type, we pick the first match
|
|
90
|
+
*/
|
|
91
|
+
static findPackageForAuthType(authType, plugins) {
|
|
92
|
+
const plugin = plugins.find(p => p.apiquest?.capabilities?.provides?.authTypes?.includes(authType) === true);
|
|
93
|
+
return plugin?.name ?? null;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Find which package provides a specific value provider
|
|
97
|
+
* Searches registry metadata to find the correct package
|
|
98
|
+
*/
|
|
99
|
+
static findPackageForProvider(provider, plugins) {
|
|
100
|
+
const plugin = plugins.find(p => p.apiquest?.capabilities?.provides?.valueTypes?.includes(provider) === true);
|
|
101
|
+
return plugin?.name ?? null;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Install plugins globally via npm
|
|
105
|
+
*/
|
|
106
|
+
static async installPlugins(packageNames) {
|
|
107
|
+
const result = {
|
|
108
|
+
installed: [],
|
|
109
|
+
failed: [],
|
|
110
|
+
skipped: []
|
|
111
|
+
};
|
|
112
|
+
for (const packageName of packageNames) {
|
|
113
|
+
try {
|
|
114
|
+
console.log(`Installing ${packageName}...`);
|
|
115
|
+
// Install globally
|
|
116
|
+
await execAsync(`npm install -g ${packageName}`, {
|
|
117
|
+
timeout: 120000 // 2 minute timeout
|
|
118
|
+
});
|
|
119
|
+
result.installed.push(packageName);
|
|
120
|
+
console.log(`Successfully installed ${packageName}`);
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
result.failed.push(packageName);
|
|
124
|
+
console.error(`Failed to install ${packageName}:`, error instanceof Error ? error.message : String(error));
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return result;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Clear the registry cache (useful for testing or forcing a refresh)
|
|
131
|
+
*/
|
|
132
|
+
static clearCache() {
|
|
133
|
+
registryPluginsCache = null;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=plugin-installer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-installer.js","sourceRoot":"","sources":["../../src/cli/plugin-installer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared npm registry querying functionality for plugin discovery
|
|
3
|
+
* Uses types from @apiquest/types
|
|
4
|
+
*/
|
|
5
|
+
import type { PluginPackageJson } from '@apiquest/types';
|
|
6
|
+
/**
|
|
7
|
+
* Default npm registry URL
|
|
8
|
+
*/
|
|
9
|
+
export declare const DEFAULT_REGISTRY_URL = "https://registry.npmjs.org";
|
|
10
|
+
/**
|
|
11
|
+
* Fetch all available @apiquest/plugin-* packages from npm registry
|
|
12
|
+
* Filters for fracture runtime
|
|
13
|
+
*
|
|
14
|
+
* @param registryUrl - Base registry URL (default: https://registry.npmjs.org)
|
|
15
|
+
*/
|
|
16
|
+
export declare function fetchAvailablePlugins(registryUrl?: string): Promise<PluginPackageJson[]>;
|
|
17
|
+
//# sourceMappingURL=plugin-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-registry.d.ts","sourceRoot":"","sources":["../../src/cli/plugin-registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAoBzD;;GAEG;AACH,eAAO,MAAM,oBAAoB,+BAA+B,CAAC;AAEjE;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,WAAW,GAAE,MAA6B,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAsCpH"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared npm registry querying functionality for plugin discovery
|
|
3
|
+
* Uses types from @apiquest/types
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Default npm registry URL
|
|
7
|
+
*/
|
|
8
|
+
export const DEFAULT_REGISTRY_URL = 'https://registry.npmjs.org';
|
|
9
|
+
/**
|
|
10
|
+
* Fetch all available @apiquest/plugin-* packages from npm registry
|
|
11
|
+
* Filters for fracture runtime
|
|
12
|
+
*
|
|
13
|
+
* @param registryUrl - Base registry URL (default: https://registry.npmjs.org)
|
|
14
|
+
*/
|
|
15
|
+
export async function fetchAvailablePlugins(registryUrl = DEFAULT_REGISTRY_URL) {
|
|
16
|
+
const searchUrl = new URL(`${registryUrl}/-/v1/search`);
|
|
17
|
+
searchUrl.searchParams.set('text', '@apiquest/plugin');
|
|
18
|
+
searchUrl.searchParams.set('size', '250');
|
|
19
|
+
const response = await fetch(searchUrl.toString(), {
|
|
20
|
+
headers: {
|
|
21
|
+
'Accept': 'application/json'
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
if (!response.ok) {
|
|
25
|
+
throw new Error(`Registry search failed: ${response.status} ${response.statusText}`);
|
|
26
|
+
}
|
|
27
|
+
const data = await response.json();
|
|
28
|
+
const names = data.objects
|
|
29
|
+
.map(obj => obj.package?.name)
|
|
30
|
+
.filter((name) => typeof name === 'string' && name.startsWith('@apiquest/plugin-'));
|
|
31
|
+
const pluginResults = await Promise.all(names.map(async (name) => {
|
|
32
|
+
try {
|
|
33
|
+
return await fetchRegistryPluginInfo(name, registryUrl);
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
}));
|
|
39
|
+
return pluginResults
|
|
40
|
+
.filter((plugin) => plugin !== null)
|
|
41
|
+
.filter(plugin => {
|
|
42
|
+
const runtime = plugin.apiquest?.runtime;
|
|
43
|
+
if (Array.isArray(runtime)) {
|
|
44
|
+
return runtime.includes('fracture');
|
|
45
|
+
}
|
|
46
|
+
return runtime === 'fracture';
|
|
47
|
+
})
|
|
48
|
+
.sort((a, b) => a.name.localeCompare(b.name));
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Fetch package.json metadata for a specific plugin from npm registry
|
|
52
|
+
*
|
|
53
|
+
* @param name - Package name (e.g., @apiquest/plugin-http)
|
|
54
|
+
* @param registryUrl - Base registry URL (default: https://registry.npmjs.org)
|
|
55
|
+
*/
|
|
56
|
+
async function fetchRegistryPluginInfo(name, registryUrl = DEFAULT_REGISTRY_URL) {
|
|
57
|
+
const response = await fetch(`${registryUrl}/${encodeURIComponent(name)}`, {
|
|
58
|
+
headers: {
|
|
59
|
+
'Accept': 'application/json'
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
if (!response.ok) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
const data = await response.json();
|
|
66
|
+
const latest = data['dist-tags']?.latest;
|
|
67
|
+
const versionData = latest !== undefined && data.versions !== undefined ? data.versions[latest] : undefined;
|
|
68
|
+
if (latest === undefined || versionData?.apiquest === undefined) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
...versionData,
|
|
73
|
+
name: data.name,
|
|
74
|
+
version: latest
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=plugin-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-registry.js","sourceRoot":"","sources":["../../src/cli/plugin-registry.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import type { Collection, Request, CollectionItem, Auth, Variable } from '@apiquest/types';
|
|
2
|
-
import { isNullOrEmpty, hasItems, isValidAuth, isValidAuthType } from './utils.js';
|
|
3
|
-
import { Logger } from './Logger.js';
|
|
4
|
-
|
|
5
|
-
export interface PluginRequirements {
|
|
6
|
-
protocols: Set<string>;
|
|
7
|
-
authTypes: Set<string>;
|
|
8
|
-
valueProviders: Set<string>;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export class CollectionAnalyzer {
|
|
12
|
-
private logger: Logger;
|
|
13
|
-
|
|
14
|
-
constructor(baseLogger?: Logger) {
|
|
15
|
-
this.logger = baseLogger?.createLogger('CollectionAnalyzer') ?? new Logger('CollectionAnalyzer');
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Analyze a collection to determine which plugins are needed
|
|
20
|
-
* Per schema: protocol is collection-level, auth can be at any level, variables can have providers
|
|
21
|
-
*/
|
|
22
|
-
analyzeRequirements(collection: Collection): PluginRequirements {
|
|
23
|
-
this.logger.debug(`Analyzing collection requirements: ${collection.info.name}`);
|
|
24
|
-
const requirements: PluginRequirements = {
|
|
25
|
-
protocols: new Set(),
|
|
26
|
-
authTypes: new Set(),
|
|
27
|
-
valueProviders: new Set()
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
// Protocol is at collection level (schema line 16-18)
|
|
31
|
-
if (!isNullOrEmpty(collection.protocol)) {
|
|
32
|
-
requirements.protocols.add(collection.protocol);
|
|
33
|
-
this.logger.trace(`Protocol requirement: ${collection.protocol}`);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// Scan collection-level auth
|
|
37
|
-
if (isValidAuth(collection.auth)) {
|
|
38
|
-
this.logger.trace(`Collection auth requirement: ${collection.auth?.type}`);
|
|
39
|
-
this.scanAuth(collection.auth, requirements);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// Scan all items for folder/request-level auth
|
|
43
|
-
if (hasItems(collection.items)) {
|
|
44
|
-
this.scanItems(collection.items, requirements);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// Scan variables for provider field (schema line 123-126)
|
|
48
|
-
this.scanVariables(collection, requirements);
|
|
49
|
-
|
|
50
|
-
this.logger.debug(
|
|
51
|
-
`Requirements resolved: protocols=${requirements.protocols.size}, auth=${requirements.authTypes.size}, providers=${requirements.valueProviders.size}`
|
|
52
|
-
);
|
|
53
|
-
|
|
54
|
-
return requirements;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
private scanItems(items: CollectionItem[], requirements: PluginRequirements): void {
|
|
58
|
-
for (const item of items) {
|
|
59
|
-
if (item.type === 'folder' && hasItems(item.items)) {
|
|
60
|
-
// Scan folder-level auth
|
|
61
|
-
if (isValidAuth(item.auth)) {
|
|
62
|
-
this.logger.trace(`Folder auth requirement: ${item.auth?.type}`);
|
|
63
|
-
this.scanAuth(item.auth, requirements);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// Recursively scan folder items
|
|
67
|
-
this.scanItems(item.items, requirements);
|
|
68
|
-
} else if (item.type === 'request') {
|
|
69
|
-
const request = item;
|
|
70
|
-
|
|
71
|
-
// Scan request-level auth
|
|
72
|
-
if (isValidAuth(request.auth)) {
|
|
73
|
-
this.logger.trace(`Request auth requirement: ${request.auth?.type}`);
|
|
74
|
-
this.scanAuth(request.auth, requirements);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
private scanAuth(auth: Auth, requirements: PluginRequirements): void {
|
|
81
|
-
// Skip 'none' and 'inherit' - they're not plugin types
|
|
82
|
-
if (isValidAuthType(auth.type)) {
|
|
83
|
-
requirements.authTypes.add(auth.type);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
private scanVariables(collection: Collection, requirements: PluginRequirements): void {
|
|
88
|
-
// Scan collection variables for provider field (variable objects, not just strings)
|
|
89
|
-
const variables = collection.variables ?? {};
|
|
90
|
-
|
|
91
|
-
for (const value of Object.values(variables)) {
|
|
92
|
-
// Variables can be strings OR variable objects with provider field
|
|
93
|
-
if (typeof value === 'object' && value !== null) {
|
|
94
|
-
const varObj = value;
|
|
95
|
-
if (varObj.provider !== null && varObj.provider !== undefined && varObj.provider !== '') {
|
|
96
|
-
requirements.valueProviders.add(varObj.provider);
|
|
97
|
-
this.logger.trace(`Variable provider requirement: ${varObj.provider}`);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|