@typespec/spector 0.1.0-alpha.10-dev.4 → 0.1.0-alpha.10-dev.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.
@@ -45,52 +45,49 @@ export class MockApiApp {
45
45
  }
46
46
  registerScenario(name, scenario) {
47
47
  for (const endpoint of scenario.apis) {
48
- if (endpoint.kind !== "MockApiDefinition") {
49
- this.router.route(endpoint.uri)[endpoint.method]((req, res) => {
50
- processRequest(this.coverageTracker, name, endpoint.uri, req, res, endpoint.handler).catch((e) => {
51
- logger.error("Unexpected request error", e);
52
- res.status(500).end();
53
- });
54
- });
48
+ if (!endpoint.handler) {
49
+ endpoint.handler = createHandler(endpoint);
55
50
  }
56
- else {
57
- if (!endpoint.handler) {
58
- endpoint.handler = createHandler(endpoint);
59
- }
60
- this.router.route(endpoint.uri)[endpoint.method]((req, res) => {
61
- processRequest(this.coverageTracker, name, endpoint.uri, req, res, endpoint.handler).catch((e) => {
62
- logger.error("Unexpected request error", e);
63
- res.status(500).end();
64
- });
51
+ this.router.route(endpoint.uri)[endpoint.method]((req, res) => {
52
+ processRequest(this.coverageTracker, name, endpoint.uri, req, res, endpoint.handler).catch((e) => {
53
+ logger.error("Unexpected request error", e);
54
+ res.status(500).end();
65
55
  });
66
- }
56
+ });
67
57
  }
68
58
  }
69
59
  }
70
- function isObject(value) {
71
- return typeof value === "object" && value !== null && !Array.isArray(value);
60
+ function validateBody(req, body) {
61
+ if ("kind" in body) {
62
+ // custom handler for now.
63
+ }
64
+ else {
65
+ if (Buffer.isBuffer(body.rawContent)) {
66
+ req.expect.rawBodyEquals(body.rawContent);
67
+ }
68
+ else {
69
+ switch (body.contentType) {
70
+ case "application/json":
71
+ req.expect.coercedBodyEquals(JSON.parse(body.rawContent));
72
+ break;
73
+ case "application/xml":
74
+ req.expect.xmlBodyEquals(body.rawContent.replace(`<?xml version='1.0' encoding='UTF-8'?>`, ""));
75
+ break;
76
+ default:
77
+ req.expect.rawBodyEquals(body.rawContent);
78
+ }
79
+ }
80
+ }
72
81
  }
73
82
  function createHandler(apiDefinition) {
74
83
  return (req) => {
84
+ const body = apiDefinition.request?.body;
75
85
  // Validate body if present in the request
76
- if (apiDefinition.request.body) {
77
- if (apiDefinition.request.headers &&
78
- apiDefinition.request.headers["Content-Type"] === "application/xml") {
79
- req.expect.xmlBodyEquals(apiDefinition.request.body.rawContent.replace(`<?xml version='1.0' encoding='UTF-8'?>`, ""));
80
- }
81
- else {
82
- if (isObject(apiDefinition.request.body)) {
83
- Object.entries(apiDefinition.request.body).forEach(([key, value]) => {
84
- req.expect.deepEqual(req.body[key], value);
85
- });
86
- }
87
- else {
88
- req.expect.coercedBodyEquals(apiDefinition.request.body);
89
- }
90
- }
86
+ if (body) {
87
+ validateBody(req, body);
91
88
  }
92
89
  // Validate headers if present in the request
93
- if (apiDefinition.request.headers) {
90
+ if (apiDefinition.request?.headers) {
94
91
  Object.entries(apiDefinition.request.headers).forEach(([key, value]) => {
95
92
  if (key.toLowerCase() !== "content-type") {
96
93
  if (Array.isArray(value)) {
@@ -102,24 +99,13 @@ function createHandler(apiDefinition) {
102
99
  }
103
100
  });
104
101
  }
105
- // Validate query params if present in the request
106
- if (apiDefinition.request.params) {
107
- Object.entries(apiDefinition.request.params).forEach(([key, value]) => {
108
- if (!req.query[key]) {
109
- if (Array.isArray(value)) {
110
- req.expect.deepEqual(req.params[key], value);
111
- }
112
- else {
113
- req.expect.deepEqual(req.params[key], String(value));
114
- }
102
+ if (apiDefinition.request?.query) {
103
+ Object.entries(apiDefinition.request.query).forEach(([key, value]) => {
104
+ if (Array.isArray(value)) {
105
+ req.expect.deepEqual(req.query[key], value);
115
106
  }
116
107
  else {
117
- if (Array.isArray(value)) {
118
- req.expect.deepEqual(req.query[key], value);
119
- }
120
- else {
121
- req.expect.containsQueryParam(key, String(value));
122
- }
108
+ req.expect.containsQueryParam(key, String(value));
123
109
  }
124
110
  });
125
111
  }
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/app/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/app/app.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"coverage-tracker.d.ts","sourceRoot":"","sources":["../../../src/coverage/coverage-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,YAAY,EAA+C,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEzI,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAkB,MAAM,6BAA6B,CAAC;AAEhG,OAAO,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAC;AAE9D,qBAAa,eAAe;IAKP,OAAO,CAAC,YAAY;IAJvC,OAAO,CAAC,SAAS,CAAuC;IACxD,OAAO,CAAC,6BAA6B,CAAuC;IAC5E,OAAO,CAAC,IAAI,CAAkD;gBAEnC,YAAY,EAAE,MAAM;IAQxC,YAAY,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,IAAI;IACpG,YAAY,CAAC,6BAA6B,EAAE,6BAA6B,EAAE,GAAG,IAAI;IAkB5E,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY;IAe1F,eAAe,IAAI,cAAc,EAAE;IAgB1C,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,qBAAqB;CAyD9B"}
1
+ {"version":3,"file":"coverage-tracker.d.ts","sourceRoot":"","sources":["../../../src/coverage/coverage-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,YAAY,EAAsB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEhH,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAkB,MAAM,6BAA6B,CAAC;AAEhG,OAAO,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAC;AAE9D,qBAAa,eAAe;IAKP,OAAO,CAAC,YAAY;IAJvC,OAAO,CAAC,SAAS,CAAuC;IACxD,OAAO,CAAC,6BAA6B,CAAuC;IAC5E,OAAO,CAAC,IAAI,CAAkD;gBAEnC,YAAY,EAAE,MAAM;IAQxC,YAAY,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,IAAI;IACpG,YAAY,CAAC,6BAA6B,EAAE,6BAA6B,EAAE,GAAG,IAAI;IAkB5E,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY;IAe1F,eAAe,IAAI,cAAc,EAAE;IAgB1C,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,qBAAqB;CAyD9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"coverage-tracker.js","sourceRoot":"","sources":["../../../src/coverage/coverage-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAiG,MAAM,oBAAoB,CAAC;AACzI,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAGnC,MAAM,OAAO,eAAe;IAKC;IAJnB,SAAS,GAAoC,EAAE,CAAC;IAChD,6BAA6B,GAAoC,EAAE,CAAC;IACpE,IAAI,GAAG,IAAI,GAAG,EAAuC,CAAC;IAE9D,YAA2B,YAAoB;QAApB,iBAAY,GAAZ,YAAY,CAAQ;QAC7C,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACtB,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC/B,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC;IAKM,YAAY,CAAC,IAAyD,EAAE,IAAsC;QACnH,IAAI,IAAI,YAAY,KAAK,KAAK,KAAK,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC1D,IAAI,CAAC,6BAA6B,GAAG;gBACnC;oBACE,iBAAiB,EAAE,IAAI;oBACvB,SAAS,EAAE,IAAI;iBAChB;aACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,6BAA6B,GAAG,IAAuC,CAAC;YAC7E,KAAK,MAAM,EAAC,SAAS,EAAC,IAAI,IAAI,CAAC,6BAA6B,EAAE,CAAC;gBAC7D,IAAI,CAAC,SAAS,GAAG,EAAC,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,SAAS,EAAC,CAAC;YACrD,CAAC;QACH,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,qBAAqB,CAAC,YAAoB,EAAE,QAAgB,EAAE,QAAsB;QAC/F,IAAI,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC/C,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,SAAS,GAAG,EAAE,CAAC;YACf,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACxC,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IAEM,eAAe;QACpB,MAAM,eAAe,GAAoB,EAAE,CAAC;QAC5C,KAAI,MAAM,EAAC,SAAS,EAAE,iBAAiB,EAAC,IAAI,IAAI,CAAC,6BAA6B,EAAE,CAAC;YAC/E,MAAM,OAAO,GAAmC,EAAE,CAAC;YACnD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBACxD,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC5D,CAAC;YACD,eAAe,CAAC,IAAI,CAAC;gBACnB,iBAAiB,EAAE,iBAAiB;gBACpC,OAAO;gBACP,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,eAAe,CAAC;IACzB,CAAC;IAEO,gBAAgB;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAExC,IAAI,CAAC;YACH,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACtE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,IAAY,EAAE,OAAwB;QAClE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,QAAQ,OAAO,CAAC,aAAa,EAAE,CAAC;YAC9B,KAAK,kBAAkB;gBACrB,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;YAC5D,KAAK,aAAa;gBAChB,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;YACpD,KAAK,QAAQ;gBACX,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;YAC9B;gBACE,MAAM,YAAY,GAAU,OAAO,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;QACnC,CAAC;QAED,SAAS,QAAQ,CAAC,SAAyC;YACzD,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACpC,MAAM,IAAI,GAAG,YAAY,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAC7C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvB,OAAO,iBAAiB,CAAC;gBAC3B,CAAC;gBAED,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtC,OAAO,MAAM,CAAC;gBAChB,CAAC;YACH,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,SAAS,WAAW,CAAC,QAAsD;YACzE,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACrC,MAAM,IAAI,GAAG,YAAY,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAC7C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvB,OAAO,iBAAiB,CAAC;gBAC3B,CAAC;gBACD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAEpC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;oBACvB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC9B,SAAS;oBACX,CAAC;oBAED,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;wBACtB,OAAO,MAAM,CAAC;oBAChB,CAAC;oBACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACxB,CAAC;gBAED,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBACpB,OAAO,MAAM,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACN,OAAO,MAAM,CAAC;gBAChB,CAAC;YACH,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;CACF;AAED,SAAS,mBAAmB,CAAC,QAAsB;IACjD,OAAO,MAAM,IAAI,QAAQ,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"coverage-tracker.js","sourceRoot":"","sources":["../../../src/coverage/coverage-tracker.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typespec/spector",
3
- "version": "0.1.0-alpha.10-dev.4",
3
+ "version": "0.1.0-alpha.10-dev.5",
4
4
  "description": "Typespec Core Tool to validate, run mock api, collect coverage.",
5
5
  "exports": {
6
6
  ".": {
@@ -35,19 +35,15 @@
35
35
  "@typespec/spec-coverage-sdk": "^0.1.0-alpha.4 || >=0.1.0-alpha.5-dev <0.1.0-alpha.5",
36
36
  "@typespec/versioning": "^0.67.1 || >=0.68.0-dev <0.68.0",
37
37
  "ajv": "~8.17.1",
38
- "axios": "^1.8.1",
39
38
  "body-parser": "^1.20.3",
40
39
  "deep-equal": "^2.2.0",
41
40
  "express": "^4.21.2",
42
41
  "express-promise-router": "^4.1.1",
43
- "form-data": "^4.0.2",
44
42
  "globby": "~14.1.0",
45
- "jackspeak": "4.1.0",
46
43
  "js-yaml": "^4.1.0",
47
44
  "micromatch": "^4.0.8",
48
45
  "morgan": "^1.10.0",
49
46
  "multer": "^1.4.5-lts.1",
50
- "node-fetch": "^3.3.1",
51
47
  "picocolors": "~1.1.1",
52
48
  "source-map-support": "~0.5.21",
53
49
  "winston": "^3.17.0",
@@ -62,7 +58,6 @@
62
58
  "@types/morgan": "^1.9.4",
63
59
  "@types/multer": "^1.4.10",
64
60
  "@types/node": "~22.13.9",
65
- "@types/node-fetch": "^2.6.12",
66
61
  "@types/xml2js": "^0.4.11",
67
62
  "@types/yargs": "~17.0.33",
68
63
  "rimraf": "~6.0.1",
@@ -1,116 +1,75 @@
1
- import { HttpMethod, ServiceRequestFile } from "@typespec/spec-api";
2
- import axios, { AxiosRequestConfig, AxiosResponse } from "axios";
3
- import FormData from "form-data";
4
-
5
- // Don't throw for errors as some scenarios are expected to return 4xx and 5xx errors
6
- axios.defaults.validateStatus = () => true;
1
+ import { HttpMethod, MockBody, MockMultipartBody } from "@typespec/spec-api";
7
2
 
8
3
  export interface ServiceRequest {
9
- endPoint: string;
10
- options?: {
11
- requestBody?: any;
12
- files?: ServiceRequestFile[];
13
- config?: AxiosRequestConfig<any> | undefined;
14
- };
15
- }
16
-
17
- function checkAndAddFormDataIfRequired(request: ServiceRequest) {
18
- if (request.options?.config?.headers?.["Content-Type"] === "multipart/form-data") {
19
- const formData = new FormData();
20
- if (request.options?.requestBody) {
21
- for (const key in request.options.requestBody) {
22
- formData.append(key, JSON.stringify(request.options.requestBody[key]));
23
- }
24
- }
25
- if (request.options.files) {
26
- request.options.files.forEach((file) => {
27
- formData.append(`${file.fieldname}`, file.buffer, {
28
- filename: file.originalname,
29
- contentType: file.mimetype,
30
- });
31
- });
32
- }
33
- request.options.requestBody = formData;
34
- request.options.config = {
35
- ...request.options.config,
36
- headers: formData.getHeaders(),
37
- };
38
- }
4
+ method: HttpMethod;
5
+ url: string;
6
+ body?: MockBody | MockMultipartBody;
7
+ headers?: Record<string, unknown>;
8
+ query?: Record<string, unknown>;
39
9
  }
40
10
 
41
- function checkAndUpdateEndpoint(request: ServiceRequest) {
42
- if (request.options?.config?.params) {
43
- for (const key in request.options.config.params) {
44
- request.endPoint = request.endPoint.replace(`:${key}`, request.options.config.params[key]);
11
+ function renderMultipartRequest(body: MockMultipartBody) {
12
+ const formData = new FormData();
13
+ if (body.parts) {
14
+ for (const key in body.parts) {
15
+ formData.append(key, JSON.stringify(body.parts[key]));
45
16
  }
46
17
  }
47
- request.endPoint = request.endPoint.replace(/\[:\]/g, ":");
48
- }
49
-
50
- export async function makeServiceCall(
51
- serviceCallType: HttpMethod,
52
- request: ServiceRequest,
53
- ): Promise<AxiosResponse<any, any>> {
54
- checkAndUpdateEndpoint(request);
55
- checkAndAddFormDataIfRequired(request);
56
- if (serviceCallType === "put") {
57
- return await makePutCall(request);
58
- }
59
- if (serviceCallType === "post") {
60
- return await makePostCall(request);
61
- }
62
- if (serviceCallType === "get") {
63
- return await makeGetCall(request);
64
- }
65
- if (serviceCallType === "delete") {
66
- return await makeDeleteCall(request);
18
+ if (body.files) {
19
+ body.files.forEach((file) => {
20
+ formData.append(
21
+ `${file.fieldname}`,
22
+ new Blob([file.buffer], { type: file.mimetype }),
23
+ file.originalname,
24
+ );
25
+ });
67
26
  }
68
- if (serviceCallType === "head") {
69
- return await makeHeadCall(request);
70
- }
71
- return await makePatchCall(request);
72
- }
73
-
74
- export async function makePutCall(request: ServiceRequest): Promise<AxiosResponse<any, any>> {
75
- const response = await axios.put(
76
- request.endPoint,
77
- request.options?.requestBody,
78
- request.options?.config,
79
- );
80
- return response;
81
- }
82
-
83
- export async function makePostCall(request: ServiceRequest): Promise<AxiosResponse<any, any>> {
84
- const response = await axios.post(
85
- request.endPoint,
86
- request.options?.requestBody,
87
- request.options?.config,
88
- );
89
- return response;
90
- }
91
27
 
92
- export async function makeGetCall(request: ServiceRequest): Promise<AxiosResponse<any, any>> {
93
- const response = await axios.get(request.endPoint, request.options?.config);
94
- return response;
28
+ return formData;
95
29
  }
96
30
 
97
- export async function makePatchCall(request: ServiceRequest): Promise<AxiosResponse<any, any>> {
98
- const response = await axios.patch(
99
- request.endPoint,
100
- request.options?.requestBody,
101
- request.options?.config,
102
- );
103
- return response;
104
- }
31
+ function resolveUrl(request: ServiceRequest) {
32
+ let endpoint = request.url.replaceAll("[:]", ":");
105
33
 
106
- export async function makeDeleteCall(request: ServiceRequest): Promise<AxiosResponse<any, any>> {
107
- const response = await axios.delete(request.endPoint, request.options?.config);
108
- return response;
34
+ if (request.query) {
35
+ const query = new URLSearchParams();
36
+ for (const [key, value] of Object.entries(request.query)) {
37
+ if (Array.isArray(value)) {
38
+ for (const v of value) {
39
+ query.append(key, v);
40
+ }
41
+ } else {
42
+ query.append(key, value as any);
43
+ }
44
+ }
45
+ endpoint = `${endpoint}?${query.toString()}`;
46
+ }
47
+ return endpoint;
109
48
  }
110
49
 
111
- export async function makeHeadCall(request: ServiceRequest): Promise<AxiosResponse<any, any>> {
112
- const response = await axios.head(request.endPoint, request.options?.config);
113
- return response;
50
+ export async function makeServiceCall(request: ServiceRequest): Promise<Response> {
51
+ const url = resolveUrl(request);
52
+ let body;
53
+ let headers = request.headers as Record<string, string>;
54
+ if (request.body) {
55
+ if ("kind" in request.body) {
56
+ const formData = renderMultipartRequest(request.body);
57
+ body = formData;
58
+ } else {
59
+ body = request.body.rawContent;
60
+ headers = {
61
+ ...headers,
62
+ ...(request.body?.contentType && {
63
+ "Content-Type": request.body.contentType,
64
+ }),
65
+ };
66
+ }
67
+ }
68
+ return await fetch(url, {
69
+ method: request.method.toUpperCase(),
70
+ body,
71
+ headers,
72
+ });
114
73
  }
115
74
 
116
75
  type EncodingType = "utf-8" | "base64" | "base64url" | "hex";
@@ -1,5 +1,4 @@
1
1
  import { spawn } from "child_process";
2
- import fetch from "node-fetch";
3
2
  import { resolve } from "path";
4
3
  import { MockApiApp } from "../app/app.js";
5
4
  import { AdminUrls } from "../constants.js";