@mockmaster/cli 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/fs.d.ts ADDED
@@ -0,0 +1,33 @@
1
+ import type { Scenario } from '@mockmaster/msw-adapter';
2
+ import type { ScenarioMetadata } from './types';
3
+ /**
4
+ * Ensures the scenarios directory exists
5
+ * @param scenariosDir - Path to scenarios directory
6
+ */
7
+ export declare const ensureScenarioDir: (scenariosDir: string) => Promise<void>;
8
+ /**
9
+ * Writes a scenario to the file system
10
+ * @param scenariosDir - Path to scenarios directory
11
+ * @param scenario - Scenario to write
12
+ */
13
+ export declare const writeScenario: (scenariosDir: string, scenario: Scenario) => Promise<void>;
14
+ /**
15
+ * Reads a scenario from the file system
16
+ * @param scenariosDir - Path to scenarios directory
17
+ * @param scenarioName - Name of the scenario to read
18
+ * @returns The scenario or undefined if not found
19
+ */
20
+ export declare const readScenario: (scenariosDir: string, scenarioName: string) => Promise<Scenario | undefined>;
21
+ /**
22
+ * Lists all scenarios in the scenarios directory
23
+ * @param scenariosDir - Path to scenarios directory
24
+ * @returns Array of scenario metadata
25
+ */
26
+ export declare const listScenarios: (scenariosDir: string) => Promise<ScenarioMetadata[]>;
27
+ /**
28
+ * Deletes a scenario from the file system
29
+ * @param scenariosDir - Path to scenarios directory
30
+ * @param scenarioName - Name of the scenario to delete
31
+ */
32
+ export declare const deleteScenario: (scenariosDir: string, scenarioName: string) => Promise<void>;
33
+ //# sourceMappingURL=fs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAEvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAU,cAAc,MAAM,KAAG,OAAO,CAAC,IAAI,CAE1E,CAAA;AAYD;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAU,cAAc,MAAM,EAAE,UAAU,QAAQ,KAAG,OAAO,CAAC,IAAI,CAK1F,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GACvB,cAAc,MAAM,EACpB,cAAc,MAAM,KACnB,OAAO,CAAC,QAAQ,GAAG,SAAS,CAU9B,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAU,cAAc,MAAM,KAAG,OAAO,CAAC,gBAAgB,EAAE,CAgCpF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAU,cAAc,MAAM,EAAE,cAAc,MAAM,KAAG,OAAO,CAAC,IAAI,CAG7F,CAAA"}
package/dist/fs.js ADDED
@@ -0,0 +1,87 @@
1
+ // Pure functions for file system operations with scenarios
2
+ import * as fs from 'fs-extra';
3
+ import * as path from 'path';
4
+ import { serializeScenario, deserializeScenario } from '@mockmaster/msw-adapter';
5
+ /**
6
+ * Ensures the scenarios directory exists
7
+ * @param scenariosDir - Path to scenarios directory
8
+ */
9
+ export const ensureScenarioDir = async (scenariosDir) => {
10
+ await fs.ensureDir(scenariosDir);
11
+ };
12
+ /**
13
+ * Gets the file path for a scenario
14
+ * @param scenariosDir - Path to scenarios directory
15
+ * @param scenarioName - Name of the scenario
16
+ * @returns Full path to scenario file
17
+ */
18
+ const getScenarioPath = (scenariosDir, scenarioName) => {
19
+ return path.join(scenariosDir, `${scenarioName}.json`);
20
+ };
21
+ /**
22
+ * Writes a scenario to the file system
23
+ * @param scenariosDir - Path to scenarios directory
24
+ * @param scenario - Scenario to write
25
+ */
26
+ export const writeScenario = async (scenariosDir, scenario) => {
27
+ await ensureScenarioDir(scenariosDir);
28
+ const filePath = getScenarioPath(scenariosDir, scenario.name);
29
+ const serialized = serializeScenario(scenario);
30
+ await fs.writeFile(filePath, serialized, 'utf-8');
31
+ };
32
+ /**
33
+ * Reads a scenario from the file system
34
+ * @param scenariosDir - Path to scenarios directory
35
+ * @param scenarioName - Name of the scenario to read
36
+ * @returns The scenario or undefined if not found
37
+ */
38
+ export const readScenario = async (scenariosDir, scenarioName) => {
39
+ const filePath = getScenarioPath(scenariosDir, scenarioName);
40
+ const exists = await fs.pathExists(filePath);
41
+ if (!exists) {
42
+ return undefined;
43
+ }
44
+ const content = await fs.readFile(filePath, 'utf-8');
45
+ return deserializeScenario(content);
46
+ };
47
+ /**
48
+ * Lists all scenarios in the scenarios directory
49
+ * @param scenariosDir - Path to scenarios directory
50
+ * @returns Array of scenario metadata
51
+ */
52
+ export const listScenarios = async (scenariosDir) => {
53
+ const exists = await fs.pathExists(scenariosDir);
54
+ if (!exists) {
55
+ return [];
56
+ }
57
+ const files = await fs.readdir(scenariosDir);
58
+ const jsonFiles = files.filter((file) => file.endsWith('.json'));
59
+ const metadata = [];
60
+ for (const file of jsonFiles) {
61
+ const filePath = path.join(scenariosDir, file);
62
+ const content = await fs.readFile(filePath, 'utf-8');
63
+ const scenario = deserializeScenario(content);
64
+ const meta = {
65
+ name: scenario.name,
66
+ recordingsCount: scenario.recordings.length,
67
+ createdAt: scenario.createdAt,
68
+ updatedAt: scenario.updatedAt,
69
+ filePath,
70
+ };
71
+ if (scenario.description !== undefined) {
72
+ meta.description = scenario.description;
73
+ }
74
+ metadata.push(meta);
75
+ }
76
+ return metadata;
77
+ };
78
+ /**
79
+ * Deletes a scenario from the file system
80
+ * @param scenariosDir - Path to scenarios directory
81
+ * @param scenarioName - Name of the scenario to delete
82
+ */
83
+ export const deleteScenario = async (scenariosDir, scenarioName) => {
84
+ const filePath = getScenarioPath(scenariosDir, scenarioName);
85
+ await fs.remove(filePath);
86
+ };
87
+ //# sourceMappingURL=fs.js.map
package/dist/fs.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { OpenAPISpec } from '@mockmaster/openapi';
2
+ import type { Scenario } from '@mockmaster/msw-adapter';
3
+ /**
4
+ * Generates scenarios from an OpenAPI specification
5
+ * @param spec - The OpenAPI specification
6
+ * @param scenarioName - Name for the generated scenario
7
+ * @returns Array of generated scenarios (currently returns one scenario with all operations)
8
+ */
9
+ export declare const generateScenariosFromSpec: (spec: OpenAPISpec, scenarioName: string) => Scenario[];
10
+ //# sourceMappingURL=generate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAGtD,OAAO,KAAK,EAAE,QAAQ,EAAqC,MAAM,yBAAyB,CAAA;AAE1F;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,GAAI,MAAM,WAAW,EAAE,cAAc,MAAM,KAAG,QAAQ,EA0E3F,CAAA"}
@@ -0,0 +1,68 @@
1
+ // Pure functions for generating scenarios from OpenAPI specs
2
+ import { getAllOperations, generateFromSchema, resolveAllRefs } from '@mockmaster/openapi';
3
+ import { createScenario, createRecording, addRecordingToScenario } from '@mockmaster/msw-adapter';
4
+ /**
5
+ * Generates scenarios from an OpenAPI specification
6
+ * @param spec - The OpenAPI specification
7
+ * @param scenarioName - Name for the generated scenario
8
+ * @returns Array of generated scenarios (currently returns one scenario with all operations)
9
+ */
10
+ export const generateScenariosFromSpec = (spec, scenarioName) => {
11
+ // Extract all operations from the spec
12
+ const operations = getAllOperations(spec);
13
+ // Get base URL from servers
14
+ const baseUrl = spec.servers && spec.servers.length > 0 && spec.servers[0]
15
+ ? spec.servers[0].url
16
+ : 'https://api.example.com';
17
+ // Create description from spec info
18
+ let description = `Generated from ${spec.info.title} (${spec.info.version})`;
19
+ if (spec.info.description) {
20
+ description += `: ${spec.info.description}`;
21
+ }
22
+ // Create scenario
23
+ let scenario = createScenario(scenarioName, description);
24
+ // Generate recordings for each operation
25
+ for (const op of operations) {
26
+ // Check if operation has responses
27
+ if (!op.operation.responses) {
28
+ continue;
29
+ }
30
+ // Get the first successful response (200-299)
31
+ const successResponse = Object.entries(op.operation.responses).find(([status]) => parseInt(status) >= 200 && parseInt(status) < 300);
32
+ if (!successResponse) {
33
+ continue;
34
+ }
35
+ const [statusCode, responseObj] = successResponse;
36
+ const status = parseInt(statusCode);
37
+ // Get the response schema
38
+ const content = responseObj.content?.['application/json'];
39
+ if (!content || !content.schema) {
40
+ continue;
41
+ }
42
+ // Resolve any $refs in the schema
43
+ const resolvedSchema = resolveAllRefs(spec, content.schema);
44
+ // Generate mock data from the schema
45
+ const mockData = generateFromSchema(resolvedSchema);
46
+ // Create recorded request
47
+ const request = {
48
+ method: op.method.toUpperCase(),
49
+ url: `${baseUrl}${op.path}`,
50
+ path: op.path,
51
+ timestamp: Date.now(),
52
+ };
53
+ // Create recorded response
54
+ const response = {
55
+ status,
56
+ body: mockData,
57
+ headers: {
58
+ 'Content-Type': 'application/json',
59
+ },
60
+ timestamp: Date.now(),
61
+ };
62
+ // Create recording and add to scenario
63
+ const recording = createRecording(request, response);
64
+ scenario = addRecordingToScenario(scenario, recording);
65
+ }
66
+ return [scenario];
67
+ };
68
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+ export * from './types';
3
+ export * from './fs';
4
+ export * from './generate';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAIA,cAAc,SAAS,CAAA;AACvB,cAAc,MAAM,CAAA;AACpB,cAAc,YAAY,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env node
2
+ /* eslint-disable no-console */
3
+ // CLI exports for programmatic use
4
+ export * from './types';
5
+ export * from './fs';
6
+ export * from './generate';
7
+ // CLI entry point - will be fully implemented in Phase 7
8
+ if (require.main === module) {
9
+ console.log('mock-master CLI v0.0.0');
10
+ console.log('');
11
+ console.log('Commands:');
12
+ console.log(' generate <spec> Generate mocks from OpenAPI spec');
13
+ console.log(' list List all scenarios');
14
+ console.log(' delete <name> Delete a scenario');
15
+ console.log('');
16
+ console.log('Full interactive CLI coming in Phase 7!');
17
+ }
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,+BAA+B;AAE/B,mCAAmC;AACnC,cAAc,SAAS,CAAA;AACvB,cAAc,MAAM,CAAA;AACpB,cAAc,YAAY,CAAA;AAE1B,yDAAyD;AACzD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;IACrC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IACxB,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAA;IAClE,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAA;IACpD,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAA;IACnD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAA;AACxD,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Mock Master configuration
3
+ */
4
+ export interface MockMasterConfig {
5
+ /**
6
+ * Directory where scenarios are stored
7
+ */
8
+ scenariosDir: string;
9
+ /**
10
+ * Default base URL for recording
11
+ */
12
+ baseUrl?: string;
13
+ /**
14
+ * OpenAPI spec paths to generate from
15
+ */
16
+ specs?: string[];
17
+ }
18
+ /**
19
+ * Options for generating mocks from OpenAPI spec
20
+ */
21
+ export interface GenerateOptions {
22
+ /**
23
+ * Path to OpenAPI spec file
24
+ */
25
+ specPath: string;
26
+ /**
27
+ * Output directory for generated mocks
28
+ */
29
+ outputDir: string;
30
+ /**
31
+ * Scenario name
32
+ */
33
+ scenarioName: string;
34
+ }
35
+ /**
36
+ * Options for listing scenarios
37
+ */
38
+ export interface ListOptions {
39
+ /**
40
+ * Scenarios directory
41
+ */
42
+ scenariosDir: string;
43
+ /**
44
+ * Show detailed information
45
+ */
46
+ verbose?: boolean;
47
+ }
48
+ /**
49
+ * Scenario metadata for listing
50
+ */
51
+ export interface ScenarioMetadata {
52
+ name: string;
53
+ description?: string;
54
+ recordingsCount: number;
55
+ createdAt: number;
56
+ updatedAt: number;
57
+ filePath: string;
58
+ }
59
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,YAAY,EAAE,MAAM,CAAA;IAEpB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,YAAY,EAAE,MAAM,CAAA;IAEpB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;CACjB"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ // CLI types and configuration
2
+ export {};
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,8BAA8B"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@mockmaster/cli",
3
+ "version": "1.0.0",
4
+ "description": "CLI tool for mock-master",
5
+ "bin": {
6
+ "mock-master": "./dist/index.js"
7
+ },
8
+ "main": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "files": [
11
+ "dist"
12
+ ],
13
+ "keywords": [
14
+ "cli",
15
+ "mock",
16
+ "tool"
17
+ ],
18
+ "license": "MIT",
19
+ "dependencies": {
20
+ "commander": "^11.1.0",
21
+ "chalk": "^5.3.0",
22
+ "inquirer": "^9.2.12",
23
+ "ora": "^8.0.1",
24
+ "fs-extra": "^11.2.0",
25
+ "@mockmaster/core": "1.0.0",
26
+ "@mockmaster/openapi": "1.0.0",
27
+ "@mockmaster/msw-adapter": "1.0.0"
28
+ },
29
+ "devDependencies": {
30
+ "@types/node": "^20.11.0",
31
+ "@types/inquirer": "^9.0.7",
32
+ "@types/fs-extra": "^11.0.4",
33
+ "@vitest/coverage-v8": "^1.2.0",
34
+ "typescript": "^5.3.3",
35
+ "vitest": "^1.2.0"
36
+ },
37
+ "scripts": {
38
+ "build": "tsc",
39
+ "dev": "tsc --watch",
40
+ "test": "vitest run",
41
+ "test:watch": "vitest",
42
+ "test:coverage": "vitest run --coverage",
43
+ "lint": "eslint src --ext .ts",
44
+ "typecheck": "tsc --noEmit",
45
+ "clean": "rm -rf dist"
46
+ }
47
+ }