@http-forge/core 0.2.0 → 0.2.2
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 +25 -4
- package/dist/application/dto/index.d.ts +8 -0
- package/dist/application/dto/request-dtos.d.ts +105 -0
- package/dist/application/dto/response-dtos.d.ts +185 -0
- package/dist/application/events/application-events.d.ts +53 -0
- package/dist/application/events/index.d.ts +6 -0
- package/dist/application/index.d.ts +25 -0
- package/dist/application/mappers/collection-mapper.d.ts +39 -0
- package/dist/application/mappers/execution-result-mapper.d.ts +16 -0
- package/dist/application/mappers/index.d.ts +9 -0
- package/dist/application/mappers/request-mapper.d.ts +29 -0
- package/dist/application/queries/get-request-schema.query.d.ts +32 -0
- package/dist/application/queries/index.d.ts +6 -0
- package/dist/application/use-cases/create-request.use-case.d.ts +23 -0
- package/dist/application/use-cases/delete-request.use-case.d.ts +15 -0
- package/dist/application/use-cases/execute-request.use-case.d.ts +46 -0
- package/dist/application/use-cases/export-collection.use-case.d.ts +22 -0
- package/dist/application/use-cases/get-collection.use-case.d.ts +13 -0
- package/dist/application/use-cases/index.d.ts +12 -0
- package/dist/application/use-cases/list-requests.use-case.d.ts +14 -0
- package/dist/application/use-cases/load-collection.use-case.d.ts +30 -0
- package/dist/application/use-cases/save-collection.use-case.d.ts +25 -0
- package/dist/application/use-cases/update-request.use-case.d.ts +17 -0
- package/dist/container.d.ts +34 -18
- package/dist/di/core-bootstrap.d.ts +25 -0
- package/dist/di/index.d.ts +19 -0
- package/dist/di/platform-adapters.d.ts +66 -0
- package/dist/di/service-container.d.ts +97 -0
- package/dist/di/service-identifiers.d.ts +34 -0
- package/dist/domain/errors/domain-errors.d.ts +52 -0
- package/dist/domain/errors/index.d.ts +4 -0
- package/dist/domain/index.d.ts +24 -0
- package/dist/domain/models/execution.d.ts +88 -0
- package/dist/domain/models/index.d.ts +4 -0
- package/dist/domain/services/domain-events.d.ts +60 -0
- package/dist/domain/services/execution-planner.domain-service.d.ts +40 -0
- package/dist/domain/services/index.d.ts +9 -0
- package/dist/domain/services/schema-inference.domain-service.d.ts +54 -0
- package/dist/domain/value-objects/entity-id.d.ts +26 -0
- package/dist/domain/value-objects/http-method.d.ts +30 -0
- package/dist/domain/value-objects/index.d.ts +9 -0
- package/dist/domain/value-objects/request-url.d.ts +28 -0
- package/dist/index.d.ts +90 -84
- package/dist/index.js +187 -187
- package/dist/index.mjs +187 -187
- package/dist/infrastructure/adapters/index.d.ts +5 -0
- package/dist/infrastructure/adapters/logger.adapter.d.ts +25 -0
- package/dist/infrastructure/adapters/node-file-system.adapter.d.ts +18 -0
- package/dist/{auth → infrastructure/auth}/interfaces.d.ts +1 -1
- package/dist/{auth → infrastructure/auth}/oauth2-token-manager.d.ts +3 -3
- package/dist/{collection → infrastructure/collection}/collection-loader.d.ts +3 -3
- package/dist/{collection → infrastructure/collection}/collection-service.d.ts +2 -2
- package/dist/{collection → infrastructure/collection}/collection-store.d.ts +2 -2
- package/dist/infrastructure/collection/folder-collection-loader.d.ts +45 -0
- package/dist/{collection → infrastructure/collection}/folder-collection-store.d.ts +9 -2
- package/dist/infrastructure/collection/folder-io.d.ts +113 -0
- package/dist/{collection → infrastructure/collection}/json-collection-loader.d.ts +1 -1
- package/dist/{collection → infrastructure/collection}/parser-registry.d.ts +1 -1
- package/dist/{config → infrastructure/config}/config-service.d.ts +1 -1
- package/dist/{cookie → infrastructure/cookie}/cookie-service.d.ts +1 -1
- package/dist/infrastructure/di/complete-bootstrap.d.ts +24 -0
- package/dist/infrastructure/di/index.d.ts +6 -0
- package/dist/infrastructure/di/infrastructure-di-config.d.ts +33 -0
- package/dist/infrastructure/di/simple-event-publisher.d.ts +17 -0
- package/dist/{environment → infrastructure/environment}/environment-config-service.d.ts +6 -3
- package/dist/infrastructure/environment/environment-file-loader.d.ts +42 -0
- package/dist/{environment → infrastructure/environment}/environment-resolver.d.ts +1 -1
- package/dist/{environment → infrastructure/environment}/forge-env.d.ts +1 -1
- package/dist/{environment → infrastructure/environment}/variable-interpolator.d.ts +1 -1
- package/dist/{execution → infrastructure/execution}/collection-request-executor-interfaces.d.ts +1 -1
- package/dist/{execution → infrastructure/execution}/collection-request-executor.d.ts +3 -3
- package/dist/{execution → infrastructure/execution}/request-executor.d.ts +4 -4
- package/dist/{execution → infrastructure/execution}/request-preparer-interfaces.d.ts +2 -2
- package/dist/{execution → infrastructure/execution}/request-preparer.d.ts +5 -5
- package/dist/{graphql → infrastructure/graphql}/graphql-schema-service.d.ts +1 -1
- package/dist/{history → infrastructure/history}/history-interfaces.d.ts +1 -1
- package/dist/{history → infrastructure/history}/request-history.d.ts +1 -1
- package/dist/{http → infrastructure/http}/fetch-http-client.d.ts +2 -2
- package/dist/{http → infrastructure/http}/http-request-service.d.ts +2 -2
- package/dist/infrastructure/http/index.d.ts +4 -0
- package/dist/{http → infrastructure/http}/interceptor-chain.d.ts +1 -1
- package/dist/{http → infrastructure/http}/interfaces.d.ts +1 -1
- package/dist/{http → infrastructure/http}/merge-request-settings.d.ts +1 -1
- package/dist/{http → infrastructure/http}/native-http-client.d.ts +2 -2
- package/dist/infrastructure/http/node-http-executor.adapter.d.ts +25 -0
- package/dist/{http → infrastructure/http}/request-preprocessor.d.ts +1 -1
- package/dist/{import-export → infrastructure/import-export}/import-postman-environment.d.ts +3 -3
- package/dist/{import-export → infrastructure/import-export}/rest-client-export.d.ts +3 -3
- package/dist/infrastructure/index.d.ts +31 -0
- package/dist/{openapi → infrastructure/openapi}/example-generator.d.ts +1 -1
- package/dist/{openapi → infrastructure/openapi}/history-analyzer.d.ts +1 -1
- package/dist/{openapi → infrastructure/openapi}/interfaces.d.ts +2 -2
- package/dist/{openapi → infrastructure/openapi}/openapi-exporter.d.ts +2 -2
- package/dist/{openapi → infrastructure/openapi}/openapi-importer.d.ts +2 -2
- package/dist/{openapi → infrastructure/openapi}/schema-inference-service.d.ts +1 -1
- package/dist/{openapi → infrastructure/openapi}/schema-inferrer.d.ts +1 -1
- package/dist/infrastructure/parsers/collection-parser.adapter.d.ts +32 -0
- package/dist/{parsers → infrastructure/parsers}/http-forge-parser.d.ts +2 -2
- package/dist/infrastructure/parsers/index.d.ts +7 -0
- package/dist/infrastructure/persistence/file-system-history-loader.d.ts +31 -0
- package/dist/infrastructure/persistence/index.d.ts +6 -0
- package/dist/{platform → infrastructure/platform}/node-file-system.d.ts +1 -1
- package/dist/infrastructure/repositories/file-system/fs-collection-repository.d.ts +72 -0
- package/dist/infrastructure/repositories/file-system/fs-environment-file-loader.adapter.d.ts +41 -0
- package/dist/infrastructure/repositories/file-system/fs-environment-repository.d.ts +34 -0
- package/dist/infrastructure/repositories/file-system/fs-request-repository.d.ts +31 -0
- package/dist/infrastructure/repositories/file-system/index.d.ts +7 -0
- package/dist/infrastructure/repositories/in-memory/in-memory-collection-repository.d.ts +18 -0
- package/dist/infrastructure/repositories/in-memory/in-memory-environment-repository.d.ts +25 -0
- package/dist/infrastructure/repositories/in-memory/in-memory-request-repository.d.ts +25 -0
- package/dist/infrastructure/repositories/in-memory/index.d.ts +7 -0
- package/dist/infrastructure/script/index.d.ts +4 -0
- package/dist/{script → infrastructure/script}/interfaces.d.ts +13 -1
- package/dist/{script → infrastructure/script}/request-script-session.d.ts +3 -0
- package/dist/{script → infrastructure/script}/script-factories.d.ts +15 -4
- package/dist/{script → infrastructure/script}/script-utils.d.ts +3 -2
- package/dist/infrastructure/script/vm-script-executor.adapter.d.ts +19 -0
- package/dist/{test-suite → infrastructure/test-suite}/result-storage-service.d.ts +1 -1
- package/dist/{test-suite → infrastructure/test-suite}/result-storage.d.ts +1 -1
- package/dist/{test-suite → infrastructure/test-suite}/test-suite-service.d.ts +1 -1
- package/dist/{test-suite → infrastructure/test-suite}/test-suite-store.d.ts +1 -1
- package/dist/ports/executors/http-executor.interface.d.ts +34 -0
- package/dist/ports/executors/index.d.ts +5 -0
- package/dist/ports/executors/script-executor.interface.d.ts +43 -0
- package/dist/ports/external/file-system.interface.d.ts +44 -0
- package/dist/ports/external/http-client.interface.d.ts +25 -0
- package/dist/ports/external/index.d.ts +7 -0
- package/dist/ports/external/logger.interface.d.ts +17 -0
- package/dist/ports/index.d.ts +17 -0
- package/dist/ports/parsers/collection-parser.interface.d.ts +23 -0
- package/dist/ports/parsers/index.d.ts +4 -0
- package/dist/ports/repositories/collection-repository.interface.d.ts +32 -0
- package/dist/ports/repositories/environment-repository.interface.d.ts +31 -0
- package/dist/ports/repositories/index.d.ts +6 -0
- package/dist/ports/repositories/request-repository.interface.d.ts +32 -0
- package/dist/ports/storage/cache-store.interface.d.ts +26 -0
- package/dist/ports/storage/history-loader.interface.d.ts +37 -0
- package/dist/ports/storage/index.d.ts +5 -0
- package/dist/{collection/collection-service-interfaces.d.ts → types/collection.d.ts} +19 -4
- package/dist/types/environment-config.d.ts +143 -0
- package/dist/types/types.d.ts +27 -7
- package/package.json +2 -2
- package/dist/collection/folder-collection-loader.d.ts +0 -256
- package/dist/collection/interfaces.d.ts +0 -32
- package/dist/parsers/index.d.ts +0 -6
- package/dist/{collection → infrastructure/collection}/collection-loader-factory.d.ts +1 -1
- package/dist/{config → infrastructure/config}/config.interface.d.ts +0 -0
- package/dist/{config → infrastructure/config}/default-config.d.ts +0 -0
- package/dist/{config → infrastructure/config}/index.d.ts +0 -0
- package/dist/{cookie → infrastructure/cookie}/cookie-jar.d.ts +0 -0
- package/dist/{cookie → infrastructure/cookie}/cookie-utils.d.ts +0 -0
- package/dist/{cookie → infrastructure/cookie}/in-memory-cookie-jar.d.ts +1 -1
- package/dist/{cookie → infrastructure/cookie}/interfaces.d.ts +0 -0
- package/dist/{cookie → infrastructure/cookie}/persistent-cookie-jar.d.ts +1 -1
- package/dist/{environment → infrastructure/environment}/interfaces.d.ts +0 -0
- package/dist/{graphql → infrastructure/graphql}/graphql-completion-provider.d.ts +0 -0
- package/dist/{history → infrastructure/history}/request-history-service-interfaces.d.ts +0 -0
- package/dist/{history → infrastructure/history}/request-history-service.d.ts +0 -0
- package/dist/{http → infrastructure/http}/url-builder.d.ts +0 -0
- package/dist/{openapi → infrastructure/openapi}/index.d.ts +0 -0
- package/dist/{openapi → infrastructure/openapi}/ref-resolver.d.ts +0 -0
- package/dist/{openapi → infrastructure/openapi}/script-analyzer.d.ts +0 -0
- package/dist/{platform → infrastructure/platform}/data-file-parser.d.ts +0 -0
- package/dist/{script → infrastructure/script}/module-loader.d.ts +0 -0
- package/dist/{script → infrastructure/script}/script-executor.d.ts +1 -1
- /package/dist/{test-suite → infrastructure/test-suite}/index.d.ts +0 -0
- /package/dist/{test-suite → infrastructure/test-suite}/interfaces.d.ts +0 -0
- /package/dist/{test-suite → infrastructure/test-suite}/statistics-service.d.ts +0 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Console Logger Adapter - ILogger implementation
|
|
3
|
+
*/
|
|
4
|
+
import { ILogger, LogLevel } from '../../ports/external/logger.interface';
|
|
5
|
+
/**
|
|
6
|
+
* Simple console-based logger implementation
|
|
7
|
+
*/
|
|
8
|
+
export declare class ConsoleLoggerAdapter implements ILogger {
|
|
9
|
+
private minLevel;
|
|
10
|
+
constructor(minLevel?: LogLevel);
|
|
11
|
+
debug(message: string, context?: Record<string, any>): void;
|
|
12
|
+
info(message: string, context?: Record<string, any>): void;
|
|
13
|
+
warn(message: string, context?: Record<string, any>): void;
|
|
14
|
+
error(message: string, error?: Error | Record<string, any>): void;
|
|
15
|
+
private canLog;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Silent logger - no output
|
|
19
|
+
*/
|
|
20
|
+
export declare class SilentLoggerAdapter implements ILogger {
|
|
21
|
+
debug(): void;
|
|
22
|
+
info(): void;
|
|
23
|
+
warn(): void;
|
|
24
|
+
error(): void;
|
|
25
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node File System Adapter - IFileSystem implementation for Node.js
|
|
3
|
+
*/
|
|
4
|
+
import { IFileSystem, FileStat } from '../../ports/external/file-system.interface';
|
|
5
|
+
/**
|
|
6
|
+
* Node.js implementation of IFileSystem
|
|
7
|
+
*/
|
|
8
|
+
export declare class NodeFileSystemAdapter implements IFileSystem {
|
|
9
|
+
exists(path: string): Promise<boolean>;
|
|
10
|
+
readFile(filePath: string): Promise<string>;
|
|
11
|
+
writeFile(filePath: string, content: string): Promise<void>;
|
|
12
|
+
readDir(dirPath: string): Promise<string[]>;
|
|
13
|
+
mkdir(dirPath: string, options?: {
|
|
14
|
+
recursive?: boolean;
|
|
15
|
+
}): Promise<void>;
|
|
16
|
+
delete(filePath: string): Promise<void>;
|
|
17
|
+
stat(filePath: string): Promise<FileStat>;
|
|
18
|
+
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* CLI/Standalone impl: uses system browser + local HTTP callback server
|
|
9
9
|
* Browser impl: uses window.open() + postMessage
|
|
10
10
|
*/
|
|
11
|
-
import { OAuth2Config } from '
|
|
11
|
+
import { OAuth2Config } from '../../types/types';
|
|
12
12
|
export interface TokenInfo {
|
|
13
13
|
accessToken: string;
|
|
14
14
|
/** e.g. "Bearer" */
|
|
@@ -13,11 +13,11 @@
|
|
|
13
13
|
* Platform-specific behaviour (browser opening, secret storage, callback URIs)
|
|
14
14
|
* is injected via IExternalBrowserService and ISecretStore interfaces.
|
|
15
15
|
*/
|
|
16
|
-
import { IEnvironmentConfigService } from '
|
|
16
|
+
import { IEnvironmentConfigService } from '../../types/environment-config';
|
|
17
17
|
import { IHttpRequestService } from '../http/interfaces';
|
|
18
|
+
import { IExternalBrowserService, ISecretStore } from '../../types/platform';
|
|
19
|
+
import { OAuth2Config } from '../../types/types';
|
|
18
20
|
import { IOAuth2TokenManager, TokenCacheKey, TokenInfo } from './interfaces';
|
|
19
|
-
import { IExternalBrowserService, ISecretStore } from '../types/platform';
|
|
20
|
-
import { OAuth2Config } from '../types/types';
|
|
21
21
|
export declare class OAuth2TokenManager implements IOAuth2TokenManager {
|
|
22
22
|
private readonly secretStore;
|
|
23
23
|
private readonly browserService;
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* Single Responsibility: Load collections from file system
|
|
5
5
|
* Dependency Inversion: Uses IFileSystem and ParserRegistry abstractions
|
|
6
6
|
*/
|
|
7
|
-
import { IFileSystem } from '
|
|
8
|
-
import { UnifiedCollection } from '
|
|
9
|
-
import { ICollectionLoader } from '
|
|
7
|
+
import { IFileSystem } from '../../types/platform';
|
|
8
|
+
import { UnifiedCollection } from '../../types/types';
|
|
9
|
+
import type { ICollectionLoader } from '../../types/collection';
|
|
10
10
|
import { ParserRegistry } from './parser-registry';
|
|
11
11
|
/**
|
|
12
12
|
* Options for loading a collection
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
* - ConfigService for configuration
|
|
9
9
|
* - CollectionLoader for storage abstraction (supports folder and json formats)
|
|
10
10
|
*/
|
|
11
|
-
import { Collection, CollectionItem, CollectionRequestItem, CreateRequestOptions, ICollectionService } from './collection-service-interfaces';
|
|
12
|
-
import { IFileWatcherFactory } from '../types/platform';
|
|
13
11
|
import { IConfigService } from '../config';
|
|
12
|
+
import { IFileWatcherFactory } from '../../types/platform';
|
|
13
|
+
import type { Collection, CollectionItem, CollectionRequestItem, CreateRequestOptions, ICollectionService } from '../../types/collection';
|
|
14
14
|
/**
|
|
15
15
|
* Service for managing HTTP Forge collections
|
|
16
16
|
*/
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* - JsonCollectionLoader: Loads from single JSON files
|
|
7
7
|
* - FolderCollectionStore: Loads from directory structure
|
|
8
8
|
*/
|
|
9
|
-
import type {
|
|
10
|
-
import type {
|
|
9
|
+
import type { CollectionRequest } from '../../types/types';
|
|
10
|
+
import type { Collection, CollectionItem, RequestScripts } from '../../types/collection';
|
|
11
11
|
/**
|
|
12
12
|
* Rich interface for loading, saving, and managing collections
|
|
13
13
|
*/
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Folder Collection Loader
|
|
3
|
+
*
|
|
4
|
+
* Thin adapter around FolderCollectionStore that converts between the
|
|
5
|
+
* `Collection` / `CollectionItem` types (array-based headers/query with
|
|
6
|
+
* `enabled` flag) and the simpler `UnifiedCollection` / `UnifiedRequest`
|
|
7
|
+
* types (Record-based headers/query) used by ForgeContainer.
|
|
8
|
+
*
|
|
9
|
+
* All disk I/O is delegated to FolderCollectionStore — this class only
|
|
10
|
+
* performs type conversion on the way in and out.
|
|
11
|
+
*/
|
|
12
|
+
import type { CollectionScripts, UnifiedCollection, UnifiedFolder, UnifiedRequest } from '../../types/types';
|
|
13
|
+
import type { CollectionMetadata } from './collection-store';
|
|
14
|
+
import type { ICollectionLoader } from '../../types/collection';
|
|
15
|
+
export { generateSlug } from './folder-io';
|
|
16
|
+
type UnifiedItem = UnifiedFolder | UnifiedRequest;
|
|
17
|
+
/**
|
|
18
|
+
* Folder Collection Loader
|
|
19
|
+
*
|
|
20
|
+
* Implements `ICollectionLoader` and exposes CRUD using `UnifiedCollection` /
|
|
21
|
+
* `UnifiedRequest` types. All disk I/O is handled by the underlying
|
|
22
|
+
* `FolderCollectionStore`; this class converts types on the boundary.
|
|
23
|
+
*/
|
|
24
|
+
export declare class FolderCollectionLoader implements ICollectionLoader {
|
|
25
|
+
/** The underlying canonical store that handles all disk I/O */
|
|
26
|
+
private readonly store;
|
|
27
|
+
constructor(collectionsDir: string);
|
|
28
|
+
loadAll(): UnifiedCollection[];
|
|
29
|
+
getSlugById(id: string): string | undefined;
|
|
30
|
+
getIdBySlug(slug: string): string | undefined;
|
|
31
|
+
load(id: string): UnifiedCollection | undefined;
|
|
32
|
+
create(name: string, id?: string): Promise<UnifiedCollection>;
|
|
33
|
+
save(collection: UnifiedCollection): Promise<void>;
|
|
34
|
+
delete(id: string): Promise<boolean>;
|
|
35
|
+
exists(id: string): boolean;
|
|
36
|
+
getCollectionPath(id: string): string;
|
|
37
|
+
updateCollectionMetadata(collectionId: string, updates: Partial<CollectionMetadata>): Promise<void>;
|
|
38
|
+
saveItem(collectionId: string, item: UnifiedItem, parentId?: string): Promise<void>;
|
|
39
|
+
updateItem(collectionId: string, itemId: string, updates: Partial<UnifiedItem>): Promise<boolean>;
|
|
40
|
+
deleteItem(collectionId: string, itemId: string): Promise<boolean>;
|
|
41
|
+
moveItem(collectionId: string, itemId: string, newParentId?: string): Promise<boolean>;
|
|
42
|
+
reorderItems(collectionId: string, parentId: string | undefined, orderedItemIds: string[]): Promise<boolean>;
|
|
43
|
+
saveScripts(collectionId: string, itemId: string, scripts: CollectionScripts): Promise<void>;
|
|
44
|
+
loadScripts(collectionId: string, itemId: string): CollectionScripts | undefined;
|
|
45
|
+
}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
*
|
|
13
13
|
* Ported from the VS Code extension's FolderCollectionLoader.
|
|
14
14
|
*/
|
|
15
|
-
import type { Collection, CollectionItem, RequestScripts } from '
|
|
15
|
+
import type { Collection, CollectionItem, RequestScripts } from '../../types/collection';
|
|
16
16
|
import type { CollectionMetadata, ICollectionStore } from './collection-store';
|
|
17
17
|
/**
|
|
18
18
|
* Loads and manages collections from folder structure using Collection types.
|
|
@@ -37,6 +37,14 @@ export declare class FolderCollectionStore implements ICollectionStore {
|
|
|
37
37
|
private slugToIdMap;
|
|
38
38
|
private idToSlugMap;
|
|
39
39
|
constructor(collectionsDir: string);
|
|
40
|
+
/**
|
|
41
|
+
* Get collection/item slug from ID
|
|
42
|
+
*/
|
|
43
|
+
getSlugById(id: string): string | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* Get collection/item ID from slug
|
|
46
|
+
*/
|
|
47
|
+
getIdBySlug(slug: string): string | undefined;
|
|
40
48
|
/**
|
|
41
49
|
* Ensure collections directory exists
|
|
42
50
|
*/
|
|
@@ -162,7 +170,6 @@ export declare class FolderCollectionStore implements ICollectionStore {
|
|
|
162
170
|
*/
|
|
163
171
|
private sortItemsByOrder;
|
|
164
172
|
private findItemPath;
|
|
165
|
-
private searchForItemPath;
|
|
166
173
|
private findItemById;
|
|
167
174
|
private deleteItemFromTree;
|
|
168
175
|
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Folder Format I/O Primitives
|
|
3
|
+
*
|
|
4
|
+
* Shared file I/O operations for the folder-based collection storage format.
|
|
5
|
+
* Used by both FolderCollectionLoader (read-only, UnifiedCollection types)
|
|
6
|
+
* and FolderCollectionStore (full CRUD, Collection types).
|
|
7
|
+
*
|
|
8
|
+
* Eliminates ~200 lines of duplicated code between the two implementations.
|
|
9
|
+
*/
|
|
10
|
+
import type { RequestBody } from '../../types/types';
|
|
11
|
+
/** Script file names within a scripts/ directory */
|
|
12
|
+
export declare const SCRIPT_FILES: {
|
|
13
|
+
preRequest: string;
|
|
14
|
+
postResponse: string;
|
|
15
|
+
};
|
|
16
|
+
/** Metadata file names that identify item types */
|
|
17
|
+
export declare const METADATA_FILES: {
|
|
18
|
+
collection: string;
|
|
19
|
+
folder: string;
|
|
20
|
+
request: string;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Body file extensions mapped to body type/format.
|
|
24
|
+
* Files stored externally get syntax highlighting benefits.
|
|
25
|
+
* Other types (form-data, urlencoded, binary, none) stay in request.json.
|
|
26
|
+
*/
|
|
27
|
+
export declare const BODY_FILE_MAP: Record<string, {
|
|
28
|
+
type: 'raw' | 'graphql';
|
|
29
|
+
format?: 'json' | 'text' | 'xml' | 'html' | 'javascript';
|
|
30
|
+
}>;
|
|
31
|
+
/** Schema files stored alongside request.json for OpenAPI round-trip support */
|
|
32
|
+
export declare const SCHEMA_FILES: {
|
|
33
|
+
responseSchema: string;
|
|
34
|
+
bodySchema: string;
|
|
35
|
+
};
|
|
36
|
+
/** Scripts directory name */
|
|
37
|
+
export declare const SCRIPTS_DIR = "scripts";
|
|
38
|
+
/**
|
|
39
|
+
* Scripts structure (shared shape between CollectionScripts and RequestScripts)
|
|
40
|
+
*/
|
|
41
|
+
export interface ScriptsData {
|
|
42
|
+
preRequest?: string;
|
|
43
|
+
postResponse?: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Read scripts from a scripts/ directory.
|
|
47
|
+
* Returns undefined if the directory doesn't exist or has no scripts.
|
|
48
|
+
*/
|
|
49
|
+
export declare function readScriptsFromDir(scriptsPath: string): ScriptsData | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* Write scripts to a scripts/ directory.
|
|
52
|
+
*/
|
|
53
|
+
export declare function writeScriptsToDir(scriptsPath: string, scripts: ScriptsData): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Load body from external file if present.
|
|
56
|
+
* Supports: body.json, body.xml, body.txt, body.html, body.js, body.graphql
|
|
57
|
+
*/
|
|
58
|
+
export declare function readBodyFromDir(requestPath: string): RequestBody | undefined;
|
|
59
|
+
/**
|
|
60
|
+
* Separate body content into metadata-inline vs. external-file parts.
|
|
61
|
+
*/
|
|
62
|
+
export declare function prepareBodyForSave(body: any): {
|
|
63
|
+
bodyForMetadata: any;
|
|
64
|
+
externalBodyFile?: {
|
|
65
|
+
filename: string;
|
|
66
|
+
content: string;
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Remove stale body files that don't match the current format.
|
|
71
|
+
*/
|
|
72
|
+
export declare function cleanupOldBodyFiles(requestPath: string, currentBodyFile?: string): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Load a JSON schema file if it exists.
|
|
75
|
+
* Returns the parsed object or undefined.
|
|
76
|
+
*/
|
|
77
|
+
export declare function readSchemaFile(filePath: string): any | undefined;
|
|
78
|
+
/**
|
|
79
|
+
* Save OpenAPI schema files (response.schema.json, body.schema.json).
|
|
80
|
+
*/
|
|
81
|
+
export declare function writeSchemaFiles(requestPath: string, responseSchema?: any, bodySchema?: any): Promise<void>;
|
|
82
|
+
/** Minimal interface for tree traversal — both UnifiedFolder/UnifiedRequest and CollectionItem satisfy this */
|
|
83
|
+
interface TreeNode {
|
|
84
|
+
id: string;
|
|
85
|
+
type: string;
|
|
86
|
+
items?: TreeNode[];
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Find an item by ID in a tree (recursive).
|
|
90
|
+
*/
|
|
91
|
+
export declare function findItemById<T extends TreeNode>(items: T[], id: string): T | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* Remove an item from a tree by ID (mutates the array).
|
|
94
|
+
*/
|
|
95
|
+
export declare function deleteItemFromTree<T extends TreeNode>(items: T[], id: string): boolean;
|
|
96
|
+
/**
|
|
97
|
+
* Re-sort items to match an ordered list of IDs.
|
|
98
|
+
* Items not in orderedIds are appended at the end.
|
|
99
|
+
*/
|
|
100
|
+
export declare function sortItemsByOrder<T extends {
|
|
101
|
+
id: string;
|
|
102
|
+
}>(items: T[], orderedIds: string[]): T[];
|
|
103
|
+
/**
|
|
104
|
+
* Recursively search for a directory named targetSlug under basePath.
|
|
105
|
+
*/
|
|
106
|
+
export declare function searchForItemPath(basePath: string, targetSlug: string): string | undefined;
|
|
107
|
+
/**
|
|
108
|
+
* Generate a slug from a name.
|
|
109
|
+
* Handles HTTP method prefixes, version indicators (T7, 1.5), path parameters,
|
|
110
|
+
* and deduplication with counter suffixes.
|
|
111
|
+
*/
|
|
112
|
+
export declare function generateSlug(name: string, existingSlugs?: string[]): string;
|
|
113
|
+
export {};
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* For JSON format, all item-level operations fall back to saving the entire collection
|
|
8
8
|
* since everything is in one file anyway.
|
|
9
9
|
*/
|
|
10
|
-
import type { Collection, CollectionItem, RequestScripts } from '
|
|
10
|
+
import type { Collection, CollectionItem, RequestScripts } from '../../types/collection';
|
|
11
11
|
import type { CollectionMetadata, ICollectionStore } from './collection-store';
|
|
12
12
|
/**
|
|
13
13
|
* Loads collections from JSON files
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Open/Closed Principle: New parsers can be added without modifying existing code
|
|
5
5
|
* Single Responsibility: Manage collection parser registration and lookup
|
|
6
6
|
*/
|
|
7
|
-
import { ICollectionParser } from '
|
|
7
|
+
import type { ICollectionParser } from '../../types/collection';
|
|
8
8
|
/**
|
|
9
9
|
* Registry for collection parsers
|
|
10
10
|
* Allows registering parsers for different collection formats
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* Platform-agnostic — uses IFileWatcherFactory and INotificationService
|
|
8
8
|
* instead of VS Code APIs.
|
|
9
9
|
*/
|
|
10
|
-
import { IFileWatcherFactory, INotificationService } from '
|
|
10
|
+
import { IFileWatcherFactory, INotificationService } from '../../types/platform';
|
|
11
11
|
import type { EnvironmentsConfig, HttpForgeConfig, IConfigService, ProxyConfig, RequestConfig, RunnerConfig, ScriptsConfig, StorageConfig } from './config.interface';
|
|
12
12
|
/**
|
|
13
13
|
* Configuration Service Implementation
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* Platform-agnostic — uses IKeyValueStore for persistence
|
|
6
6
|
* instead of VS Code globalState.
|
|
7
7
|
*/
|
|
8
|
+
import { IKeyValueStore } from '../../types/platform';
|
|
8
9
|
import { Cookie, ICookieParser, ICookieReader } from './interfaces';
|
|
9
|
-
import { IKeyValueStore } from '../types/platform';
|
|
10
10
|
/**
|
|
11
11
|
* Full cookie service interface (async write operations for platform persistence)
|
|
12
12
|
*/
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Complete Infrastructure Bootstrap
|
|
3
|
+
*
|
|
4
|
+
* Registers all infrastructure implementations including:
|
|
5
|
+
* - File system repositories
|
|
6
|
+
* - History loaders
|
|
7
|
+
* - HTTP/Script executors
|
|
8
|
+
* - Parsers
|
|
9
|
+
* - Adapters
|
|
10
|
+
*/
|
|
11
|
+
import { PlatformAdapters } from '../../di/platform-adapters';
|
|
12
|
+
import { ServiceContainer } from '../../di/service-container';
|
|
13
|
+
export interface FullBootstrapOptions {
|
|
14
|
+
/** Use file system repositories instead of in-memory */
|
|
15
|
+
useFileSystem?: boolean;
|
|
16
|
+
/** Base path for file system operations */
|
|
17
|
+
basePath?: string;
|
|
18
|
+
/** Platform adapters (file system, logger, HTTP client, etc) */
|
|
19
|
+
adapters?: Partial<PlatformAdapters>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Complete bootstrap with all implementations
|
|
23
|
+
*/
|
|
24
|
+
export declare function bootstrapComplete(container: ServiceContainer, options?: FullBootstrapOptions): void;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Infrastructure DI Configuration
|
|
3
|
+
*
|
|
4
|
+
* Registers all infrastructure implementations and wires up the dependency graph
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* ```typescript
|
|
8
|
+
* const container = new ServiceContainer();
|
|
9
|
+
* registerInfrastructureServices(container);
|
|
10
|
+
* registerDomainServices(container);
|
|
11
|
+
* registerApplicationServices(container);
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
import { ServiceContainer } from '../../di/service-container';
|
|
15
|
+
import { PlatformAdapters } from '../../di/platform-adapters';
|
|
16
|
+
/**
|
|
17
|
+
* Register infrastructure layer services
|
|
18
|
+
*
|
|
19
|
+
* These are concrete implementations of port interfaces
|
|
20
|
+
*/
|
|
21
|
+
export declare function registerInfrastructureServices(container: ServiceContainer, adapters?: Partial<PlatformAdapters>): void;
|
|
22
|
+
/**
|
|
23
|
+
* Register domain layer services
|
|
24
|
+
*/
|
|
25
|
+
export declare function registerDomainServices(container: ServiceContainer): void;
|
|
26
|
+
/**
|
|
27
|
+
* Register application layer services (use cases)
|
|
28
|
+
*/
|
|
29
|
+
export declare function registerApplicationServices(container: ServiceContainer): void;
|
|
30
|
+
/**
|
|
31
|
+
* Bootstrap all layers
|
|
32
|
+
*/
|
|
33
|
+
export declare function bootstrapAllServices(container: ServiceContainer, adapters?: Partial<PlatformAdapters>): void;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Domain Event Publisher Implementation
|
|
3
|
+
*/
|
|
4
|
+
import { IDomainEventPublisher } from '../../domain/services/domain-events';
|
|
5
|
+
import { DomainEvent } from '../../domain/services/domain-events';
|
|
6
|
+
/**
|
|
7
|
+
* Simple in-memory event publisher
|
|
8
|
+
*/
|
|
9
|
+
export declare class SimpleEventPublisher implements IDomainEventPublisher {
|
|
10
|
+
private subscriptions;
|
|
11
|
+
publish(event: DomainEvent): Promise<void>;
|
|
12
|
+
subscribe(eventType: string, handler: (event: DomainEvent) => Promise<void>): void;
|
|
13
|
+
/**
|
|
14
|
+
* Clear all subscriptions (useful for testing)
|
|
15
|
+
*/
|
|
16
|
+
clear(): void;
|
|
17
|
+
}
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* Platform-agnostic — uses IKeyValueStore for persistence instead of
|
|
5
5
|
* VS Code's workspaceState/globalState.
|
|
6
6
|
*/
|
|
7
|
-
import { IEnvironmentConfigService, ImportedEnvironment, LocalConfig, ResolvedEnvironment, SharedConfig } from './interfaces';
|
|
8
|
-
import { IKeyValueStore } from '../types/platform';
|
|
9
7
|
import { IConfigService } from '../config';
|
|
8
|
+
import { IKeyValueStore } from '../../types/platform';
|
|
9
|
+
import type { IEnvironmentConfigService, ImportedEnvironment, LocalConfig, ResolvedEnvironment, SharedConfig } from '../../types/environment-config';
|
|
10
10
|
export declare class EnvironmentConfigService implements IEnvironmentConfigService {
|
|
11
11
|
private workspaceFolder;
|
|
12
12
|
private workspaceStore;
|
|
@@ -69,9 +69,12 @@ export declare class EnvironmentConfigService implements IEnvironmentConfigServi
|
|
|
69
69
|
importPostmanEnvironmentFile(filePath: string): ImportedEnvironment;
|
|
70
70
|
saveEnvLocalConfig(envName: string, variables: Record<string, string>): void;
|
|
71
71
|
getEnvLocalPath(envName: string): string;
|
|
72
|
-
private isSystemEnvironmentFile;
|
|
73
72
|
private getEnvLocalConfigPath;
|
|
74
73
|
private loadFolderConfigs;
|
|
74
|
+
/**
|
|
75
|
+
* Create a VariableResolver pre-loaded with environment + session variables.
|
|
76
|
+
*/
|
|
77
|
+
private createResolver;
|
|
75
78
|
private saveFolderSharedConfig;
|
|
76
79
|
reload(): void;
|
|
77
80
|
getAllEnvironments(): Array<{
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment File Loader
|
|
3
|
+
*
|
|
4
|
+
* Shared logic for reading the multi-file environment folder format:
|
|
5
|
+
* _global.json — global variables + default headers
|
|
6
|
+
* {env}.json — per-environment variables
|
|
7
|
+
* _global.local.json — local variable overrides (gitignored)
|
|
8
|
+
* {env}.local.json — per-environment local overrides (gitignored)
|
|
9
|
+
*
|
|
10
|
+
* Used by both EnvironmentConfigService (extension) and
|
|
11
|
+
* ForgeContainer.fromForgeRoot (standalone).
|
|
12
|
+
*/
|
|
13
|
+
export interface EnvironmentFolderData {
|
|
14
|
+
/** Variables available in all environments */
|
|
15
|
+
globalVariables: Record<string, string>;
|
|
16
|
+
/** Default headers sent with every request */
|
|
17
|
+
defaultHeaders: Record<string, string>;
|
|
18
|
+
/** Per-environment configs keyed by environment name */
|
|
19
|
+
environments: Record<string, EnvironmentEntry>;
|
|
20
|
+
/** Local global variable overrides from _global.local.json */
|
|
21
|
+
localVariables: Record<string, string>;
|
|
22
|
+
/** Per-environment local variable overrides from {env}.local.json */
|
|
23
|
+
localCredentials: Record<string, {
|
|
24
|
+
variables: Record<string, string>;
|
|
25
|
+
}>;
|
|
26
|
+
}
|
|
27
|
+
export interface EnvironmentEntry {
|
|
28
|
+
description?: string;
|
|
29
|
+
requiresConfirmation?: boolean;
|
|
30
|
+
variables: Record<string, string>;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Determine whether a filename is a system/meta file (not an environment file).
|
|
34
|
+
*/
|
|
35
|
+
export declare function isSystemEnvironmentFile(fileName: string): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Load environment configuration from a multi-file folder.
|
|
38
|
+
*
|
|
39
|
+
* @param envDir - Absolute path to the environments folder
|
|
40
|
+
* @returns Parsed environment data (or empty defaults when the folder is missing)
|
|
41
|
+
*/
|
|
42
|
+
export declare function loadEnvironmentsFromFolder(envDir: string): EnvironmentFolderData;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Single Responsibility: Resolve environment variables for request execution
|
|
5
5
|
* Dependency Inversion: Implements IEnvironmentStore interface
|
|
6
6
|
*/
|
|
7
|
-
import { IEnvironmentStore } from '
|
|
7
|
+
import type { IEnvironmentStore } from '../../types/environment-config';
|
|
8
8
|
/**
|
|
9
9
|
* Environment definition
|
|
10
10
|
*/
|
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
* env.get('token'); // 'abc'
|
|
31
31
|
* ```
|
|
32
32
|
*/
|
|
33
|
-
import { IEnvironmentStore, IVariableInterpolator } from './interfaces';
|
|
34
33
|
import { EnvironmentResolver } from './environment-resolver';
|
|
34
|
+
import type { IEnvironmentStore, IVariableInterpolator } from '../../types/environment-config';
|
|
35
35
|
/**
|
|
36
36
|
* ForgeEnv interface - the public API for environment management
|
|
37
37
|
*/
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* 4. JavaScript expressions: {{price * quantity + 10}}
|
|
21
21
|
* 5. Return original {{...}} if nothing matched
|
|
22
22
|
*/
|
|
23
|
-
import { IVariableInterpolator } from '
|
|
23
|
+
import type { IVariableInterpolator } from '../../types/environment-config';
|
|
24
24
|
/**
|
|
25
25
|
* Configuration for variable resolution
|
|
26
26
|
*/
|
package/dist/{execution → infrastructure/execution}/collection-request-executor-interfaces.d.ts
RENAMED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* - Supports nested folder scripts (multiple levels)
|
|
8
8
|
* - JavaScript variables declared in pre-request are accessible in post-response (shared VM session)
|
|
9
9
|
*/
|
|
10
|
-
import { ExecutionRequest, ExecutionResult } from '
|
|
10
|
+
import { ExecutionRequest, ExecutionResult } from '../../types/types';
|
|
11
11
|
/**
|
|
12
12
|
* Console output streaming callback
|
|
13
13
|
*/
|
|
@@ -10,11 +10,11 @@
|
|
|
10
10
|
* Extracted from extension's request-execution/collection-request-executor.ts.
|
|
11
11
|
* Platform-independent — no vscode dependency.
|
|
12
12
|
*/
|
|
13
|
-
import {
|
|
13
|
+
import { IEnvironmentConfigService } from '../../types/environment-config';
|
|
14
|
+
import { IHttpRequestService } from '../http/interfaces';
|
|
14
15
|
import { ICookieJar, IScriptExecutor } from '../script/interfaces';
|
|
15
|
-
import {
|
|
16
|
+
import { ExecutionRequest, ExecutionResult, PreparedRequest, RequestScripts } from '../../types/types';
|
|
16
17
|
import { ConsoleOutputCallback, ICollectionRequestExecutor } from './collection-request-executor-interfaces';
|
|
17
|
-
import { IHttpRequestService } from '../http/interfaces';
|
|
18
18
|
import { IRequestPreparer } from './request-preparer-interfaces';
|
|
19
19
|
/**
|
|
20
20
|
* Enhanced implementation with Postman parity.
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
* Single Responsibility: Orchestrate the complete request execution flow
|
|
5
5
|
* Facade Pattern: Provides simplified interface to complex subsystem
|
|
6
6
|
*/
|
|
7
|
-
import { IHttpClient } from '../types/platform';
|
|
8
|
-
import { IScriptExecutor } from '../script/interfaces';
|
|
9
|
-
import { IRequestPreprocessor } from '../http/request-preprocessor';
|
|
10
|
-
import { HttpRequest, HttpResponse, RequestOverrides, ScriptResult, UnifiedCollection, UnifiedRequest } from '../types/types';
|
|
11
7
|
import { IForgeEnv } from '../environment/forge-env';
|
|
8
|
+
import { IRequestPreprocessor } from '../http/request-preprocessor';
|
|
9
|
+
import { IScriptExecutor } from '../script/interfaces';
|
|
10
|
+
import { IHttpClient } from '../../types/platform';
|
|
11
|
+
import { HttpRequest, HttpResponse, RequestOverrides, ScriptResult, UnifiedCollection, UnifiedRequest } from '../../types/types';
|
|
12
12
|
/**
|
|
13
13
|
* Options for request execution
|
|
14
14
|
*/
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
*
|
|
7
7
|
* Used by both Request Tester (manual) and Collection Runner (batch).
|
|
8
8
|
*/
|
|
9
|
-
import { ResolvedEnvironment } from '
|
|
10
|
-
import { ExecutionRequest, PreparedRequest } from '
|
|
9
|
+
import { ResolvedEnvironment } from '../../types/environment-config';
|
|
10
|
+
import { ExecutionRequest, PreparedRequest } from '../../types/types';
|
|
11
11
|
/**
|
|
12
12
|
* Request Preparer Service Interface
|
|
13
13
|
*
|
|
@@ -9,12 +9,12 @@
|
|
|
9
9
|
*
|
|
10
10
|
* Used by both Request Tester (manual) and Collection Runner (batch).
|
|
11
11
|
*/
|
|
12
|
-
import { IRequestPreprocessor } from '../http/request-preprocessor';
|
|
13
|
-
import { ExecutionRequest, PreparedRequest } from '../types/types';
|
|
14
|
-
import { IEnvironmentConfigService, ResolvedEnvironment } from '../environment/interfaces';
|
|
15
|
-
import { IHttpRequestService } from '../http/interfaces';
|
|
16
12
|
import { IOAuth2TokenManager } from '../auth/interfaces';
|
|
17
|
-
import {
|
|
13
|
+
import { IEnvironmentConfigService, ResolvedEnvironment } from '../../types/environment-config';
|
|
14
|
+
import { IHttpRequestService } from '../http/interfaces';
|
|
15
|
+
import { IRequestPreprocessor } from '../http/request-preprocessor';
|
|
16
|
+
import { IApplicationInfo } from '../../types/platform';
|
|
17
|
+
import { ExecutionRequest, PreparedRequest } from '../../types/types';
|
|
18
18
|
import { IRequestPreparer } from './request-preparer-interfaces';
|
|
19
19
|
/**
|
|
20
20
|
* RequestPreparer implementation
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Extracted from VS Code plugin: src/services/interfaces/request-history.interface.ts
|
|
5
5
|
* Adapted for core package - storage-agnostic design
|
|
6
6
|
*/
|
|
7
|
-
import { HttpRequest, HttpResponse, RequestBody } from '
|
|
7
|
+
import { HttpRequest, HttpResponse, RequestBody } from '../../types/types';
|
|
8
8
|
/**
|
|
9
9
|
* History entry - records a single request execution
|
|
10
10
|
*/
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* Based on VS Code plugin's RequestHistoryService logic,
|
|
8
8
|
* but adapted for storage-agnostic design.
|
|
9
9
|
*/
|
|
10
|
+
import { HttpRequest, HttpResponse } from '../../types/types';
|
|
10
11
|
import { FullResponse, HistoryEntry, IRequestHistory } from './history-interfaces';
|
|
11
|
-
import { HttpRequest, HttpResponse } from '../types/types';
|
|
12
12
|
/**
|
|
13
13
|
* In-memory request history storage
|
|
14
14
|
*
|