@mockmaster/cli 1.0.4 → 1.0.6

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.
@@ -1 +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"}
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;AAW1F;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,GAAI,MAAM,WAAW,EAAE,cAAc,MAAM,KAAG,QAAQ,EAsF3F,CAAA"}
package/dist/generate.js CHANGED
@@ -1,6 +1,14 @@
1
1
  // Pure functions for generating scenarios from OpenAPI specs
2
2
  import { getAllOperations, generateFromSchema, resolveAllRefs } from '@mockmaster/openapi';
3
3
  import { createScenario, createRecording, addRecordingToScenario } from '@mockmaster/msw-adapter';
4
+ /**
5
+ * Converts OpenAPI path parameters from {id} format to :id format
6
+ * @param openapiPath - Path in OpenAPI format (e.g., '/users/{id}')
7
+ * @returns Path in Express/router format (e.g., '/users/:id')
8
+ */
9
+ const convertPathFormat = (openapiPath) => {
10
+ return openapiPath.replace(/\{([^}]+)\}/g, ':$1');
11
+ };
4
12
  /**
5
13
  * Generates scenarios from an OpenAPI specification
6
14
  * @param spec - The OpenAPI specification
@@ -36,27 +44,40 @@ export const generateScenariosFromSpec = (spec, scenarioName) => {
36
44
  const status = parseInt(statusCode);
37
45
  // Get the response schema
38
46
  const content = responseObj.content?.['application/json'];
39
- if (!content || !content.schema) {
40
- continue;
47
+ // Determine if this response has content
48
+ let mockData = null;
49
+ let headers = {};
50
+ if (content && content.schema) {
51
+ // Response has content - generate mock data
52
+ const resolvedSchema = resolveAllRefs(spec, content.schema);
53
+ mockData = generateFromSchema(resolvedSchema);
54
+ headers = { 'Content-Type': 'application/json' };
55
+ }
56
+ else if (status === 204) {
57
+ // 204 No Content - explicitly set null body and no Content-Type header
58
+ mockData = null;
59
+ headers = {};
60
+ }
61
+ else {
62
+ // Other responses without content (e.g., 201 Created with Location header)
63
+ // Still create a recording but with empty body
64
+ mockData = null;
65
+ headers = {};
41
66
  }
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
67
  // Create recorded request
68
+ // Convert OpenAPI path format {id} to Express format :id
69
+ const routerPath = convertPathFormat(op.path);
47
70
  const request = {
48
71
  method: op.method.toUpperCase(),
49
72
  url: `${baseUrl}${op.path}`,
50
- path: op.path,
73
+ path: routerPath,
51
74
  timestamp: Date.now(),
52
75
  };
53
76
  // Create recorded response
54
77
  const response = {
55
78
  status,
56
79
  body: mockData,
57
- headers: {
58
- 'Content-Type': 'application/json',
59
- },
80
+ headers,
60
81
  timestamp: Date.now(),
61
82
  };
62
83
  // Create recording and add to scenario
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mockmaster/cli",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "CLI tool for mock-master",
5
5
  "bin": {
6
6
  "mock-master": "./dist/index.js"