@apiquest/fracture 1.0.2 → 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.
Files changed (195) hide show
  1. package/README.md +207 -0
  2. package/bin/cli.js +2 -2
  3. package/dist/CollectionRunner.d.ts +2 -0
  4. package/dist/CollectionRunner.d.ts.map +1 -1
  5. package/dist/CollectionRunner.js +23 -5
  6. package/dist/CollectionRunner.js.map +1 -1
  7. package/dist/LibraryLoader.d.ts +49 -0
  8. package/dist/LibraryLoader.d.ts.map +1 -0
  9. package/dist/LibraryLoader.js +198 -0
  10. package/dist/LibraryLoader.js.map +1 -0
  11. package/dist/PluginLoader.d.ts.map +1 -1
  12. package/dist/PluginLoader.js +9 -6
  13. package/dist/PluginLoader.js.map +1 -1
  14. package/dist/PluginResolver.d.ts +1 -1
  15. package/dist/PluginResolver.d.ts.map +1 -1
  16. package/dist/PluginResolver.js +1 -1
  17. package/dist/PluginResolver.js.map +1 -1
  18. package/dist/ScriptEngine.d.ts +2 -1
  19. package/dist/ScriptEngine.d.ts.map +1 -1
  20. package/dist/ScriptEngine.js +19 -12
  21. package/dist/ScriptEngine.js.map +1 -1
  22. package/dist/cli/index.js +35 -3
  23. package/dist/cli/index.js.map +1 -1
  24. package/dist/cli/plugin-commands.d.ts.map +1 -1
  25. package/dist/cli/plugin-commands.js +48 -81
  26. package/dist/cli/plugin-commands.js.map +1 -1
  27. package/dist/cli/plugin-installer.d.ts +48 -0
  28. package/dist/cli/plugin-installer.d.ts.map +1 -0
  29. package/dist/cli/plugin-installer.js +136 -0
  30. package/dist/cli/plugin-installer.js.map +1 -0
  31. package/dist/cli/plugin-registry.d.ts +17 -0
  32. package/dist/cli/plugin-registry.d.ts.map +1 -0
  33. package/dist/cli/plugin-registry.js +77 -0
  34. package/dist/cli/plugin-registry.js.map +1 -0
  35. package/package.json +55 -50
  36. package/tsconfig.json +20 -20
  37. package/tsconfig.test.json +5 -5
  38. package/vitest.config.ts +22 -22
  39. package/dist/ExecutionTree.d.ts +0 -77
  40. package/dist/ExecutionTree.d.ts.map +0 -1
  41. package/dist/ExecutionTree.js +0 -265
  42. package/dist/ExecutionTree.js.map +0 -1
  43. package/dist/fracture/src/CollectionAnalyzer.d.ts +0 -17
  44. package/dist/fracture/src/CollectionAnalyzer.d.ts.map +0 -1
  45. package/dist/fracture/src/CollectionAnalyzer.js +0 -70
  46. package/dist/fracture/src/CollectionAnalyzer.js.map +0 -1
  47. package/dist/fracture/src/CollectionRunner.d.ts +0 -39
  48. package/dist/fracture/src/CollectionRunner.d.ts.map +0 -1
  49. package/dist/fracture/src/CollectionRunner.js +0 -802
  50. package/dist/fracture/src/CollectionRunner.js.map +0 -1
  51. package/dist/fracture/src/CollectionRunner.types.d.ts +0 -8
  52. package/dist/fracture/src/CollectionRunner.types.d.ts.map +0 -1
  53. package/dist/fracture/src/CollectionRunner.types.js +0 -2
  54. package/dist/fracture/src/CollectionRunner.types.js.map +0 -1
  55. package/dist/fracture/src/CollectionValidator.d.ts +0 -14
  56. package/dist/fracture/src/CollectionValidator.d.ts.map +0 -1
  57. package/dist/fracture/src/CollectionValidator.js +0 -145
  58. package/dist/fracture/src/CollectionValidator.js.map +0 -1
  59. package/dist/fracture/src/ConsoleReporter.d.ts +0 -24
  60. package/dist/fracture/src/ConsoleReporter.d.ts.map +0 -1
  61. package/dist/fracture/src/ConsoleReporter.js +0 -123
  62. package/dist/fracture/src/ConsoleReporter.js.map +0 -1
  63. package/dist/fracture/src/CookieJar.d.ts +0 -70
  64. package/dist/fracture/src/CookieJar.d.ts.map +0 -1
  65. package/dist/fracture/src/CookieJar.js +0 -233
  66. package/dist/fracture/src/CookieJar.js.map +0 -1
  67. package/dist/fracture/src/ExecutionTree.d.ts +0 -77
  68. package/dist/fracture/src/ExecutionTree.d.ts.map +0 -1
  69. package/dist/fracture/src/ExecutionTree.js +0 -258
  70. package/dist/fracture/src/ExecutionTree.js.map +0 -1
  71. package/dist/fracture/src/Logger.d.ts +0 -25
  72. package/dist/fracture/src/Logger.d.ts.map +0 -1
  73. package/dist/fracture/src/Logger.js +0 -78
  74. package/dist/fracture/src/Logger.js.map +0 -1
  75. package/dist/fracture/src/PluginLoader.d.ts +0 -23
  76. package/dist/fracture/src/PluginLoader.d.ts.map +0 -1
  77. package/dist/fracture/src/PluginLoader.js +0 -102
  78. package/dist/fracture/src/PluginLoader.js.map +0 -1
  79. package/dist/fracture/src/PluginManager.d.ts +0 -64
  80. package/dist/fracture/src/PluginManager.d.ts.map +0 -1
  81. package/dist/fracture/src/PluginManager.js +0 -162
  82. package/dist/fracture/src/PluginManager.js.map +0 -1
  83. package/dist/fracture/src/PluginResolver.d.ts +0 -35
  84. package/dist/fracture/src/PluginResolver.d.ts.map +0 -1
  85. package/dist/fracture/src/PluginResolver.js +0 -128
  86. package/dist/fracture/src/PluginResolver.js.map +0 -1
  87. package/dist/fracture/src/QuestAPI.d.ts +0 -9
  88. package/dist/fracture/src/QuestAPI.d.ts.map +0 -1
  89. package/dist/fracture/src/QuestAPI.js +0 -679
  90. package/dist/fracture/src/QuestAPI.js.map +0 -1
  91. package/dist/fracture/src/QuestAPI.types.d.ts +0 -35
  92. package/dist/fracture/src/QuestAPI.types.d.ts.map +0 -1
  93. package/dist/fracture/src/QuestAPI.types.js +0 -3
  94. package/dist/fracture/src/QuestAPI.types.js.map +0 -1
  95. package/dist/fracture/src/QuestTestAPI.d.ts +0 -12
  96. package/dist/fracture/src/QuestTestAPI.d.ts.map +0 -1
  97. package/dist/fracture/src/QuestTestAPI.js +0 -133
  98. package/dist/fracture/src/QuestTestAPI.js.map +0 -1
  99. package/dist/fracture/src/ScriptEngine.d.ts +0 -21
  100. package/dist/fracture/src/ScriptEngine.d.ts.map +0 -1
  101. package/dist/fracture/src/ScriptEngine.js +0 -183
  102. package/dist/fracture/src/ScriptEngine.js.map +0 -1
  103. package/dist/fracture/src/ScriptValidator.d.ts +0 -68
  104. package/dist/fracture/src/ScriptValidator.d.ts.map +0 -1
  105. package/dist/fracture/src/ScriptValidator.js +0 -351
  106. package/dist/fracture/src/ScriptValidator.js.map +0 -1
  107. package/dist/fracture/src/TestCounter.d.ts +0 -18
  108. package/dist/fracture/src/TestCounter.d.ts.map +0 -1
  109. package/dist/fracture/src/TestCounter.js +0 -82
  110. package/dist/fracture/src/TestCounter.js.map +0 -1
  111. package/dist/fracture/src/VariableResolver.d.ts +0 -20
  112. package/dist/fracture/src/VariableResolver.d.ts.map +0 -1
  113. package/dist/fracture/src/VariableResolver.js +0 -100
  114. package/dist/fracture/src/VariableResolver.js.map +0 -1
  115. package/dist/fracture/src/cli/index.d.ts +0 -3
  116. package/dist/fracture/src/cli/index.d.ts.map +0 -1
  117. package/dist/fracture/src/cli/index.js +0 -347
  118. package/dist/fracture/src/cli/index.js.map +0 -1
  119. package/dist/fracture/src/cli/plugin-commands.d.ts +0 -6
  120. package/dist/fracture/src/cli/plugin-commands.d.ts.map +0 -1
  121. package/dist/fracture/src/cli/plugin-commands.js +0 -263
  122. package/dist/fracture/src/cli/plugin-commands.js.map +0 -1
  123. package/dist/fracture/src/cli/plugin-discovery.d.ts +0 -11
  124. package/dist/fracture/src/cli/plugin-discovery.d.ts.map +0 -1
  125. package/dist/fracture/src/cli/plugin-discovery.js +0 -64
  126. package/dist/fracture/src/cli/plugin-discovery.js.map +0 -1
  127. package/dist/fracture/src/index.d.ts +0 -13
  128. package/dist/fracture/src/index.d.ts.map +0 -1
  129. package/dist/fracture/src/index.js +0 -17
  130. package/dist/fracture/src/index.js.map +0 -1
  131. package/dist/fracture/src/utils.d.ts +0 -28
  132. package/dist/fracture/src/utils.d.ts.map +0 -1
  133. package/dist/fracture/src/utils.js +0 -48
  134. package/dist/fracture/src/utils.js.map +0 -1
  135. package/dist/plugin-auth/src/apikey-auth.d.ts +0 -3
  136. package/dist/plugin-auth/src/apikey-auth.d.ts.map +0 -1
  137. package/dist/plugin-auth/src/apikey-auth.js +0 -73
  138. package/dist/plugin-auth/src/apikey-auth.js.map +0 -1
  139. package/dist/plugin-auth/src/basic-auth.d.ts +0 -3
  140. package/dist/plugin-auth/src/basic-auth.d.ts.map +0 -1
  141. package/dist/plugin-auth/src/basic-auth.js +0 -61
  142. package/dist/plugin-auth/src/basic-auth.js.map +0 -1
  143. package/dist/plugin-auth/src/bearer-auth.d.ts +0 -3
  144. package/dist/plugin-auth/src/bearer-auth.d.ts.map +0 -1
  145. package/dist/plugin-auth/src/bearer-auth.js +0 -49
  146. package/dist/plugin-auth/src/bearer-auth.js.map +0 -1
  147. package/dist/plugin-auth/src/helpers.d.ts +0 -3
  148. package/dist/plugin-auth/src/helpers.d.ts.map +0 -1
  149. package/dist/plugin-auth/src/helpers.js +0 -8
  150. package/dist/plugin-auth/src/helpers.js.map +0 -1
  151. package/dist/plugin-auth/src/index.d.ts +0 -10
  152. package/dist/plugin-auth/src/index.d.ts.map +0 -1
  153. package/dist/plugin-auth/src/index.js +0 -25
  154. package/dist/plugin-auth/src/index.js.map +0 -1
  155. package/dist/plugin-auth/src/oauth2-auth.d.ts +0 -35
  156. package/dist/plugin-auth/src/oauth2-auth.d.ts.map +0 -1
  157. package/dist/plugin-auth/src/oauth2-auth.js +0 -266
  158. package/dist/plugin-auth/src/oauth2-auth.js.map +0 -1
  159. package/dist/plugin-http/src/index.d.ts +0 -4
  160. package/dist/plugin-http/src/index.d.ts.map +0 -1
  161. package/dist/plugin-http/src/index.js +0 -266
  162. package/dist/plugin-http/src/index.js.map +0 -1
  163. package/dist/plugin-vault-file/src/index.d.ts +0 -67
  164. package/dist/plugin-vault-file/src/index.d.ts.map +0 -1
  165. package/dist/plugin-vault-file/src/index.js +0 -171
  166. package/dist/plugin-vault-file/src/index.js.map +0 -1
  167. package/dist/types.d.ts +0 -374
  168. package/dist/types.d.ts.map +0 -1
  169. package/dist/types.js +0 -13
  170. package/dist/types.js.map +0 -1
  171. package/src/CollectionAnalyzer.ts +0 -102
  172. package/src/CollectionRunner.ts +0 -1423
  173. package/src/CollectionRunner.types.ts +0 -9
  174. package/src/CollectionValidator.ts +0 -289
  175. package/src/ConsoleReporter.ts +0 -143
  176. package/src/CookieJar.ts +0 -258
  177. package/src/DagScheduler.ts +0 -439
  178. package/src/Logger.ts +0 -85
  179. package/src/PluginLoader.ts +0 -126
  180. package/src/PluginManager.ts +0 -208
  181. package/src/PluginResolver.ts +0 -154
  182. package/src/QuestAPI.ts +0 -764
  183. package/src/QuestAPI.types.ts +0 -33
  184. package/src/QuestTestAPI.ts +0 -164
  185. package/src/RequestFilter.ts +0 -224
  186. package/src/ScriptEngine.ts +0 -219
  187. package/src/ScriptValidator.ts +0 -428
  188. package/src/TaskGraph.ts +0 -598
  189. package/src/TestCounter.ts +0 -109
  190. package/src/VariableResolver.ts +0 -114
  191. package/src/cli/index.ts +0 -480
  192. package/src/cli/plugin-commands.ts +0 -341
  193. package/src/cli/plugin-discovery.ts +0 -44
  194. package/src/index.ts +0 -24
  195. package/src/utils.ts +0 -52
@@ -1,78 +0,0 @@
1
- import { LogLevel } from '@apiquest/types';
2
- /**
3
- * Logger implementation for Fracture
4
- *
5
- * Emits 'console' events for desktop integration and provides
6
- * standard logging methods (error, warn, info, debug, trace).
7
- *
8
- * Desktop ConsolePanel listens to these events to display logs.
9
- * CLI ConsoleReporter subscribes to these events to output to terminal.
10
- */
11
- export class Logger {
12
- level;
13
- component;
14
- emitter;
15
- constructor(component, level = LogLevel.INFO, emitter) {
16
- this.component = component;
17
- this.level = level;
18
- this.emitter = emitter;
19
- }
20
- setLevel(level) {
21
- this.level = level;
22
- }
23
- error(message, ...args) {
24
- this.log(LogLevel.ERROR, message, ...args);
25
- }
26
- warn(message, ...args) {
27
- this.log(LogLevel.WARN, message, ...args);
28
- }
29
- info(message, ...args) {
30
- this.log(LogLevel.INFO, message, ...args);
31
- }
32
- debug(message, ...args) {
33
- this.log(LogLevel.DEBUG, message, ...args);
34
- }
35
- trace(message, ...args) {
36
- this.log(LogLevel.TRACE, message, ...args);
37
- }
38
- log(level, message, ...args) {
39
- // Skip if log level is more verbose than our threshold
40
- // Lower number = less verbose (ERROR=0, WARN=1, INFO=2, DEBUG=3, TRACE=4)
41
- if (level > this.level)
42
- return;
43
- const levelNames = ['error', 'warn', 'info', 'debug', 'trace'];
44
- const levelName = levelNames[level];
45
- const prefix = `[${this.component}]`;
46
- const fullMessage = `${prefix} ${message}`;
47
- // Format arguments
48
- const formattedArgs = args.length > 0
49
- ? ' ' + args.map(a => {
50
- if (a instanceof Error) {
51
- return a.message;
52
- }
53
- if (typeof a === 'object' && a !== null) {
54
- try {
55
- return JSON.stringify(a);
56
- }
57
- catch {
58
- return String(a);
59
- }
60
- }
61
- return String(a);
62
- }).join(' ')
63
- : '';
64
- const finalMessage = fullMessage + formattedArgs;
65
- // Emit event for desktop integration
66
- if (this.emitter !== null && this.emitter !== undefined) {
67
- this.emitter.emit('console', {
68
- level, // Emit LogLevel enum value
69
- levelName, // Also emit string name for convenience
70
- component: this.component,
71
- message: finalMessage,
72
- args,
73
- timestamp: new Date().toISOString()
74
- });
75
- }
76
- }
77
- }
78
- //# sourceMappingURL=Logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../../src/Logger.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- import type { ILogger } from '@apiquest/types';
2
- import { PluginManager } from './PluginManager.js';
3
- import type { ResolvedPlugin } from './PluginResolver.js';
4
- import type { PluginRequirements } from './CollectionAnalyzer.js';
5
- export declare class PluginLoader {
6
- private logger;
7
- private pluginManager;
8
- private loadedPlugins;
9
- constructor(pluginManager: PluginManager, logger?: ILogger);
10
- /**
11
- * Load only plugins needed by the collection
12
- */
13
- loadRequiredPlugins(resolved: ResolvedPlugin[], requirements: PluginRequirements): Promise<void>;
14
- /**
15
- * Filter resolved plugins to only those needed by collection
16
- */
17
- private filterNeededPlugins;
18
- /**
19
- * Dynamically import and register a single plugin
20
- */
21
- private loadPlugin;
22
- }
23
- //# sourceMappingURL=PluginLoader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PluginLoader.d.ts","sourceRoot":"","sources":["../../../src/PluginLoader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAsD,MAAM,iBAAiB,CAAC;AAGnG,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGlE,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,aAAa,CAA0B;gBAEnC,aAAa,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,OAAO;IAK1D;;OAEG;IACG,mBAAmB,CACvB,QAAQ,EAAE,cAAc,EAAE,EAC1B,YAAY,EAAE,kBAAkB,GAC/B,OAAO,CAAC,IAAI,CAAC;IAiBhB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAoC3B;;OAEG;YACW,UAAU;CA4CzB"}
@@ -1,102 +0,0 @@
1
- // Plugin Loader - Phase 2: Selectively loads ONLY plugins needed by collection
2
- // Works with ResolvedPlugin[] from PluginResolver (Phase 1)
3
- import { LogLevel } from '@apiquest/types';
4
- import { Logger } from './Logger.js';
5
- export class PluginLoader {
6
- logger;
7
- pluginManager;
8
- loadedPlugins = new Set();
9
- constructor(pluginManager, logger) {
10
- this.pluginManager = pluginManager;
11
- this.logger = logger instanceof Logger ? logger : new Logger('PluginLoader', LogLevel.INFO);
12
- }
13
- /**
14
- * Load only plugins needed by the collection
15
- */
16
- async loadRequiredPlugins(resolved, requirements) {
17
- const needed = this.filterNeededPlugins(resolved, requirements);
18
- this.logger.info(`Loading ${needed.length} required plugins (${resolved.length} available)`);
19
- const loadPromises = needed.map(plugin => this.loadPlugin(plugin).catch(err => {
20
- this.logger.error(`Failed to load ${plugin.name}:`, err);
21
- // Re-throw to fail execution
22
- throw err;
23
- }));
24
- await Promise.all(loadPromises);
25
- this.logger.debug('Required plugins loaded');
26
- }
27
- /**
28
- * Filter resolved plugins to only those needed by collection
29
- */
30
- filterNeededPlugins(resolved, requirements) {
31
- const needed = [];
32
- for (const plugin of resolved) {
33
- let isNeeded = false;
34
- if (plugin.type === 'protocol') {
35
- // Check if collection uses this protocol
36
- if (plugin.protocols?.some(p => requirements.protocols.has(p)) === true) {
37
- isNeeded = true;
38
- }
39
- }
40
- else if (plugin.type === 'auth') {
41
- // Check if collection uses any of these auth types
42
- if (plugin.authTypes?.some(a => requirements.authTypes.has(a)) === true) {
43
- isNeeded = true;
44
- }
45
- }
46
- else if (plugin.type === 'value') {
47
- // Check if collection uses this value provider
48
- const provider = plugin.provider;
49
- if (provider !== null && provider !== undefined && provider !== '' && requirements.valueProviders.has(provider)) {
50
- isNeeded = true;
51
- }
52
- }
53
- if (isNeeded) {
54
- this.logger.debug(`Plugin needed: ${plugin.name} v${plugin.version} (${plugin.type})`);
55
- needed.push(plugin);
56
- }
57
- }
58
- return needed;
59
- }
60
- /**
61
- * Dynamically import and register a single plugin
62
- */
63
- async loadPlugin(plugin) {
64
- const { pathToFileURL } = await import('url');
65
- // Skip if already loaded
66
- if (this.loadedPlugins.has(plugin.name)) {
67
- this.logger.debug(`Already loaded: ${plugin.name}`);
68
- return;
69
- }
70
- this.logger.debug(`Loading ${plugin.name} v${plugin.version} from ${plugin.path}`);
71
- // Mark as loaded
72
- this.loadedPlugins.add(plugin.name);
73
- // Convert to file:// URL for Windows compatibility
74
- const moduleUrl = pathToFileURL(plugin.entryPoint).href;
75
- const pluginModule = await import(moduleUrl);
76
- // Handle different export patterns
77
- const defaultExport = pluginModule.default;
78
- const namedExport = pluginModule[Object.keys(pluginModule)[0]];
79
- const exported = defaultExport ?? namedExport;
80
- if (exported === null || exported === undefined) {
81
- throw new Error(`Plugin ${plugin.name} has no exports`);
82
- }
83
- // Register based on plugin type
84
- if (plugin.type === 'protocol') {
85
- this.pluginManager.registerPlugin(exported);
86
- this.logger.debug(`Registered protocol plugin: ${plugin.protocols?.join(', ') ?? ''}`);
87
- }
88
- else if (plugin.type === 'auth') {
89
- // Auth plugins might export array or single
90
- const authArray = Array.isArray(exported) ? exported : [exported];
91
- for (const authPlugin of authArray) {
92
- this.pluginManager.registerAuthPlugin(authPlugin);
93
- this.logger.debug(`Registered auth plugin: ${authPlugin.authTypes.join(', ')}`);
94
- }
95
- }
96
- else if (plugin.type === 'value') {
97
- this.pluginManager.registerVariableProvider(exported);
98
- this.logger.debug(`Registered value provider: ${plugin.provider ?? ''}`);
99
- }
100
- }
101
- }
102
- //# sourceMappingURL=PluginLoader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PluginLoader.js","sourceRoot":"","sources":["../../../src/PluginLoader.ts"],"names":[],"mappings":"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"}
@@ -1,64 +0,0 @@
1
- import type { IProtocolPlugin, IAuthPlugin, IValueProviderPlugin, Request, ExecutionContext, ProtocolResponse, RuntimeOptions } from '@apiquest/types';
2
- import { LogLevel } from '@apiquest/types';
3
- import { EventEmitter } from 'events';
4
- export declare class PluginManager {
5
- private plugins;
6
- private authPlugins;
7
- private variableProviders;
8
- private logger;
9
- private emitter?;
10
- constructor(emitter?: EventEmitter, logLevel?: LogLevel);
11
- setLogLevel(level: LogLevel): void;
12
- /**
13
- * Register a protocol plugin
14
- */
15
- registerPlugin(plugin: IProtocolPlugin): void;
16
- /**
17
- * Register an auth plugin
18
- */
19
- registerAuthPlugin(plugin: IAuthPlugin): void;
20
- /**
21
- * Register a variable provider plugin
22
- */
23
- registerVariableProvider(plugin: IValueProviderPlugin): void;
24
- /**
25
- * Get plugin for a protocol
26
- */
27
- getPlugin(protocol: string): IProtocolPlugin | undefined;
28
- /**
29
- * Get auth plugin for a type
30
- */
31
- getAuthPlugin(type: string): IAuthPlugin | undefined;
32
- /**
33
- * Apply auth to request if auth is configured
34
- */
35
- private applyAuth;
36
- /**
37
- * Execute request using appropriate plugin
38
- * @param protocol - Protocol name from collection.protocol
39
- * @param emitEvent - Optional callback for plugin events (e.g., WebSocket onMessage)
40
- */
41
- execute(protocol: string, request: Request, context: ExecutionContext, options: RuntimeOptions, emitEvent?: (eventName: string, eventData: unknown) => Promise<void>): Promise<ProtocolResponse>;
42
- /**
43
- * Get all registered plugins
44
- */
45
- getAllPlugins(): IProtocolPlugin[];
46
- /**
47
- * Get all registered auth plugins
48
- */
49
- getAllAuthPlugins(): IAuthPlugin[];
50
- /**
51
- * Get variable provider plugin
52
- */
53
- getVariableProvider(provider: string): IValueProviderPlugin | undefined;
54
- /**
55
- * Get all registered variable providers
56
- */
57
- getAllVariableProviders(): IValueProviderPlugin[];
58
- /**
59
- * Resolve variable value using provider plugin
60
- * Called when a variable has a provider specified
61
- */
62
- resolveVariableProvider(provider: string, key: string, config?: Record<string, unknown>, context?: ExecutionContext): Promise<string | null>;
63
- }
64
- //# sourceMappingURL=PluginManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PluginManager.d.ts","sourceRoot":"","sources":["../../../src/PluginManager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,oBAAoB,EAAE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAiB,MAAM,iBAAiB,CAAC;AACtK,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAA2C;IAC1D,OAAO,CAAC,WAAW,CAAuC;IAC1D,OAAO,CAAC,iBAAiB,CAAgD;IACzE,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAC,CAAe;gBAEnB,OAAO,CAAC,EAAE,YAAY,EAAE,QAAQ,GAAE,QAAwB;IAKtE,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAIlC;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAQ7C;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAQ7C;;OAEG;IACH,wBAAwB,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI;IAK5D;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAIxD;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIpD;;OAEG;YACW,SAAS;IAuBvB;;;;OAIG;IACG,OAAO,CACX,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,cAAc,EACvB,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GACnE,OAAO,CAAC,gBAAgB,CAAC;IA+C5B;;OAEG;IACH,aAAa,IAAI,eAAe,EAAE;IAIlC;;OAEG;IACH,iBAAiB,IAAI,WAAW,EAAE;IAIlC;;OAEG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAIvE;;OAEG;IACH,uBAAuB,IAAI,oBAAoB,EAAE;IAIjD;;;OAGG;IACG,uBAAuB,CAC3B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAc1B"}
@@ -1,162 +0,0 @@
1
- // Plugin Manager - Manages protocol, auth, and variable provider plugins
2
- import { LogLevel } from '@apiquest/types';
3
- import { Logger } from './Logger.js';
4
- export class PluginManager {
5
- plugins = new Map();
6
- authPlugins = new Map();
7
- variableProviders = new Map();
8
- logger;
9
- emitter;
10
- constructor(emitter, logLevel = LogLevel.INFO) {
11
- this.emitter = emitter;
12
- this.logger = new Logger('PluginManager', logLevel, emitter);
13
- }
14
- setLogLevel(level) {
15
- this.logger.setLevel(level);
16
- }
17
- /**
18
- * Register a protocol plugin
19
- */
20
- registerPlugin(plugin) {
21
- // Register plugin for each protocol it provides
22
- for (const protocol of plugin.protocols) {
23
- this.plugins.set(protocol, plugin);
24
- this.logger.debug(`Registered protocol plugin: ${plugin.name} for protocol '${protocol}'`);
25
- }
26
- }
27
- /**
28
- * Register an auth plugin
29
- */
30
- registerAuthPlugin(plugin) {
31
- // Register plugin for each auth type it provides
32
- for (const authType of plugin.authTypes) {
33
- this.authPlugins.set(authType, plugin);
34
- this.logger.debug(`Registered auth plugin: ${plugin.name} for type '${authType}'`);
35
- }
36
- }
37
- /**
38
- * Register a variable provider plugin
39
- */
40
- registerVariableProvider(plugin) {
41
- this.variableProviders.set(plugin.provider, plugin);
42
- this.logger.debug(`Registered vault provider: ${plugin.name} (${plugin.provider})`);
43
- }
44
- /**
45
- * Get plugin for a protocol
46
- */
47
- getPlugin(protocol) {
48
- return this.plugins.get(protocol);
49
- }
50
- /**
51
- * Get auth plugin for a type
52
- */
53
- getAuthPlugin(type) {
54
- return this.authPlugins.get(type);
55
- }
56
- /**
57
- * Apply auth to request if auth is configured
58
- */
59
- async applyAuth(request, auth, options) {
60
- if (auth.type === 'none' || auth.type === 'inherit') {
61
- return request;
62
- }
63
- const authPlugin = this.authPlugins.get(auth.type);
64
- if (authPlugin === null || authPlugin === undefined) {
65
- this.logger.error(`No auth plugin registered for type: ${auth.type}`);
66
- throw new Error(`No auth plugin registered for type: ${auth.type}`);
67
- }
68
- this.logger.debug(`Applying auth: ${auth.type} (plugin: ${authPlugin.name})`);
69
- try {
70
- const pluginLogger = new Logger(`Auth:${authPlugin.name}`, this.logger['level'], this.emitter);
71
- return await authPlugin.apply(request, auth, options, pluginLogger);
72
- }
73
- catch (error) {
74
- const errorMsg = error.message ?? 'Unknown error';
75
- this.logger.error(`Auth plugin error (${auth.type}): ${errorMsg}`);
76
- throw new Error(`Auth plugin error (${auth.type}): ${errorMsg}`);
77
- }
78
- }
79
- /**
80
- * Execute request using appropriate plugin
81
- * @param protocol - Protocol name from collection.protocol
82
- * @param emitEvent - Optional callback for plugin events (e.g., WebSocket onMessage)
83
- */
84
- async execute(protocol, request, context, options, emitEvent) {
85
- const plugin = this.plugins.get(protocol);
86
- if (plugin === null || plugin === undefined) {
87
- this.logger.error(`No plugin registered for protocol: ${protocol}`);
88
- throw new Error(`No plugin registered for protocol: ${protocol}`);
89
- }
90
- this.logger.debug(`Executing request using ${protocol} plugin: ${plugin.name}`);
91
- // Validate auth compatibility with protocol
92
- if (request.auth !== null && request.auth !== undefined && request.auth.type !== 'none' && request.auth.type !== 'inherit') {
93
- if (!plugin.supportedAuthTypes.includes(request.auth.type)) {
94
- this.logger.error(`Protocol '${protocol}' does not support auth type '${request.auth.type}'`);
95
- throw new Error(`Protocol '${protocol}' does not support auth type '${request.auth.type}'. ` +
96
- `Supported types: ${plugin.supportedAuthTypes.join(', ')}`);
97
- }
98
- }
99
- // Apply auth if configured (should already be resolved)
100
- let modifiedRequest = request;
101
- if (request.auth !== null && request.auth !== undefined) {
102
- modifiedRequest = await this.applyAuth(modifiedRequest, request.auth, options);
103
- }
104
- // Validate request
105
- this.logger.trace('Validating request with plugin');
106
- const validation = plugin.validate(modifiedRequest, options);
107
- if (validation.valid === false) {
108
- const errorMessages = validation.errors?.map(e => e.message).join(', ') ?? 'Unknown error';
109
- this.logger.error(`Request validation failed: ${errorMessages}`);
110
- throw new Error(`Request validation failed: ${errorMessages}`);
111
- }
112
- // Execute plugin with merged runtime options, event emitter, and logger
113
- const pluginLogger = new Logger(`Protocol:${plugin.name}`, this.logger['level'], this.emitter);
114
- const startTime = Date.now();
115
- const response = await plugin.execute(modifiedRequest, context, options, emitEvent, pluginLogger);
116
- const duration = Date.now() - startTime;
117
- this.logger.debug(`Plugin execution completed in ${duration}ms (status: ${response.status})`);
118
- return response;
119
- }
120
- /**
121
- * Get all registered plugins
122
- */
123
- getAllPlugins() {
124
- return Array.from(this.plugins.values());
125
- }
126
- /**
127
- * Get all registered auth plugins
128
- */
129
- getAllAuthPlugins() {
130
- return Array.from(this.authPlugins.values());
131
- }
132
- /**
133
- * Get variable provider plugin
134
- */
135
- getVariableProvider(provider) {
136
- return this.variableProviders.get(provider);
137
- }
138
- /**
139
- * Get all registered variable providers
140
- */
141
- getAllVariableProviders() {
142
- return Array.from(this.variableProviders.values());
143
- }
144
- /**
145
- * Resolve variable value using provider plugin
146
- * Called when a variable has a provider specified
147
- */
148
- async resolveVariableProvider(provider, key, config, context) {
149
- const providerPlugin = this.variableProviders.get(provider);
150
- if (providerPlugin === null || providerPlugin === undefined) {
151
- throw new Error(`No variable provider plugin registered for: ${provider}`);
152
- }
153
- try {
154
- return await providerPlugin.getValue(key, config, context);
155
- }
156
- catch (error) {
157
- const errorMsg = error.message ?? 'Unknown error';
158
- throw new Error(`Variable provider error (${provider}): ${errorMsg}`);
159
- }
160
- }
161
- }
162
- //# sourceMappingURL=PluginManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PluginManager.js","sourceRoot":"","sources":["../../../src/PluginManager.ts"],"names":[],"mappings":"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"}
@@ -1,35 +0,0 @@
1
- import type { ILogger } from '@apiquest/types';
2
- export interface ResolvedPlugin {
3
- name: string;
4
- version: string;
5
- type: 'protocol' | 'auth' | 'value';
6
- path: string;
7
- entryPoint: string;
8
- protocols?: string[];
9
- authTypes?: string[];
10
- provider?: string;
11
- }
12
- export declare class PluginResolver {
13
- private logger;
14
- private resolved;
15
- constructor(logger?: ILogger);
16
- /**
17
- * Scan multiple directories and resolve all available plugins
18
- * This is fast - just file I/O, no module loading
19
- */
20
- scanDirectories(dirs: string[]): Promise<ResolvedPlugin[]>;
21
- /**
22
- * Scan single directory for plugins
23
- */
24
- private scanDirectory;
25
- /**
26
- * Resolve a single plugin - read metadata but don't load module
27
- */
28
- private resolvePlugin;
29
- /**
30
- * Compare semantic versions
31
- * Returns: 1 if a > b, -1 if a < b, 0 if equal
32
- */
33
- private compareVersions;
34
- }
35
- //# sourceMappingURL=PluginResolver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PluginResolver.d.ts","sourceRoot":"","sources":["../../../src/PluginResolver.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAqB,MAAM,iBAAiB,CAAC;AAIlE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAA0C;gBAE9C,MAAM,CAAC,EAAE,OAAO;IAI5B;;;OAGG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAahE;;OAEG;YACW,aAAa;IA2B3B;;OAEG;YACW,aAAa;IAgE3B;;;OAGG;IACH,OAAO,CAAC,eAAe;CAcxB"}
@@ -1,128 +0,0 @@
1
- // Plugin Resolver - Discovers and resolves plugin metadata WITHOUT loading modules
2
- // This is Phase 1: Fast directory scanning and version resolution
3
- // Phase 2 (selective loading) happens in PluginLoader based on collection requirements
4
- import { LogLevel } from '@apiquest/types';
5
- import { Logger } from './Logger.js';
6
- export class PluginResolver {
7
- logger;
8
- resolved = new Map();
9
- constructor(logger) {
10
- this.logger = logger instanceof Logger ? logger : new Logger('PluginResolver', LogLevel.INFO);
11
- }
12
- /**
13
- * Scan multiple directories and resolve all available plugins
14
- * This is fast - just file I/O, no module loading
15
- */
16
- async scanDirectories(dirs) {
17
- const scanPromises = dirs.map(dir => this.scanDirectory(dir).catch(err => {
18
- // Plugin scanning failed
19
- this.logger.error('Plugin scanning failed:', err);
20
- }));
21
- await Promise.all(scanPromises);
22
- return Array.from(this.resolved.values());
23
- }
24
- /**
25
- * Scan single directory for plugins
26
- */
27
- async scanDirectory(pluginsDir) {
28
- const { readdir, readFile, access } = await import('fs/promises');
29
- const path = await import('path');
30
- this.logger.debug(`Scanning plugins: ${pluginsDir}`);
31
- // Check if directory exists
32
- try {
33
- await access(pluginsDir);
34
- }
35
- catch {
36
- this.logger.debug(`Plugins directory does not exist: ${pluginsDir}`);
37
- return;
38
- }
39
- const entries = await readdir(pluginsDir, { withFileTypes: true });
40
- for (const entry of entries) {
41
- // Only process plugin-* directories
42
- if (!entry.isDirectory() || !entry.name.startsWith('plugin-')) {
43
- continue;
44
- }
45
- const pluginPath = path.join(pluginsDir, entry.name);
46
- await this.resolvePlugin(pluginPath);
47
- }
48
- }
49
- /**
50
- * Resolve a single plugin - read metadata but don't load module
51
- */
52
- async resolvePlugin(pluginPath) {
53
- const { readFile } = await import('fs/promises');
54
- const path = await import('path');
55
- const packageJsonPath = path.join(pluginPath, 'package.json');
56
- try {
57
- // Read package.json
58
- const pkgContent = await readFile(packageJsonPath, 'utf-8');
59
- const pkg = JSON.parse(pkgContent);
60
- // Check if plugin is for fracture runtime
61
- const runtime = pkg.apiquest?.runtime;
62
- const runtimeArray = Array.isArray(runtime) ? runtime : [runtime];
63
- if (pkg.apiquest === null || pkg.apiquest === undefined || !runtimeArray.includes('fracture')) {
64
- this.logger.debug(`Skipping ${pkg.name} (runtime: ${runtime ?? 'undefined'})`);
65
- return;
66
- }
67
- // Extract metadata from package.json
68
- const type = pkg.apiquest.type;
69
- if (!['protocol', 'auth', 'value'].includes(type)) {
70
- this.logger.warn(`Unknown plugin type: ${type} (${pkg.name})`);
71
- return;
72
- }
73
- // Resolve entry point
74
- const entryPoint = pkg.main ?? 'dist/index.js';
75
- const fullEntryPath = path.join(pluginPath, entryPoint);
76
- // Extract capabilities from apiquest.capabilities.provides
77
- const provides = pkg.apiquest.capabilities?.provides ?? {};
78
- // Create resolved plugin info
79
- const resolved = {
80
- name: pkg.name,
81
- version: pkg.version,
82
- type: type,
83
- path: pluginPath,
84
- entryPoint: fullEntryPath,
85
- protocols: provides.protocols,
86
- authTypes: provides.authTypes,
87
- provider: provides.provider,
88
- };
89
- // Check for version conflicts
90
- const existing = this.resolved.get(pkg.name);
91
- if (existing !== null && existing !== undefined) {
92
- if (this.compareVersions(pkg.version, existing.version) > 0) {
93
- this.logger.debug(`Upgrading ${pkg.name} from v${existing.version} to v${pkg.version}`);
94
- this.resolved.set(pkg.name, resolved);
95
- }
96
- else {
97
- this.logger.debug(`Skipping ${pkg.name} v${pkg.version} (v${existing.version} already resolved)`);
98
- }
99
- }
100
- else {
101
- this.logger.debug(`Resolved ${pkg.name} v${pkg.version} (${type})`);
102
- this.resolved.set(pkg.name, resolved);
103
- }
104
- }
105
- catch (error) {
106
- const errorMsg = error instanceof Error ? error.message : String(error);
107
- this.logger.error(`Failed to resolve plugin at ${pluginPath}:`, errorMsg);
108
- }
109
- }
110
- /**
111
- * Compare semantic versions
112
- * Returns: 1 if a > b, -1 if a < b, 0 if equal
113
- */
114
- compareVersions(a, b) {
115
- const aParts = a.split('.').map(Number);
116
- const bParts = b.split('.').map(Number);
117
- for (let i = 0; i < Math.max(aParts.length, bParts.length); i++) {
118
- const aNum = aParts[i] ?? 0;
119
- const bNum = bParts[i] ?? 0;
120
- if (aNum > bNum)
121
- return 1;
122
- if (aNum < bNum)
123
- return -1;
124
- }
125
- return 0;
126
- }
127
- }
128
- //# sourceMappingURL=PluginResolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PluginResolver.js","sourceRoot":"","sources":["../../../src/PluginResolver.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import type { ExecutionContext, TestResult } from '@apiquest/types';
2
- import { ScriptType } from '@apiquest/types';
3
- /**
4
- * Creates the complete quest API object
5
- * Returns all quest.* methods and properties for script execution
6
- */
7
- export declare function createQuestAPI(context: ExecutionContext, scriptType: ScriptType, tests: TestResult[], // Array to collect test results
8
- emitAssertion: (test: TestResult) => void): Record<string, unknown>;
9
- //# sourceMappingURL=QuestAPI.d.ts.map