@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.
- package/dist/generate.d.ts.map +1 -1
- package/dist/generate.js +31 -10
- package/dist/generate.js.map +1 -1
- package/package.json +1 -1
package/dist/generate.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
|
40
|
-
|
|
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:
|
|
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
|
package/dist/generate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAG7D,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC1F,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAGjG;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,IAAiB,EAAE,YAAoB,EAAc,EAAE;IAC/F,uCAAuC;IACvC,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;IAEzC,4BAA4B;IAC5B,MAAM,OAAO,GACX,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG;QACrB,CAAC,CAAC,yBAAyB,CAAA;IAE/B,oCAAoC;IACpC,IAAI,WAAW,GAAG,kBAAkB,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAA;IAC5E,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1B,WAAW,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;IAC7C,CAAC;IAED,kBAAkB;IAClB,IAAI,QAAQ,GAAG,cAAc,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;IAExD,yCAAyC;IACzC,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5B,mCAAmC;QACnC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;YAC5B,SAAQ;QACV,CAAC;QAED,8CAA8C;QAC9C,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,CACjE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,GAAG,CAChE,CAAA;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,SAAQ;QACV,CAAC;QAED,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,eAAe,CAAA;QACjD,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAA;QAEnC,0BAA0B;QAC1B,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,kBAAkB,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
|