@kubb/plugin-msw
Version:
Mock Service Worker (MSW) handlers generator plugin for Kubb, creating API mocks from OpenAPI specifications for frontend development and testing.
139 lines (132 loc) • 5.09 kB
JavaScript
//#region rolldown:runtime
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
key = keys[i];
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
get: ((k) => from[k]).bind(null, key),
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
});
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
value: mod,
enumerable: true
}) : target, mod));
//#endregion
const __kubb_react = __toESM(require("@kubb/react"));
const __kubb_core_utils = __toESM(require("@kubb/core/utils"));
const __kubb_react_jsx_runtime = __toESM(require("@kubb/react/jsx-runtime"));
//#region src/components/Mock.tsx
function Mock({ baseURL = "", name, typeName, operation }) {
const method = operation.method;
const successStatusCodes = operation.getResponseStatusCodes().filter((code) => code.startsWith("2"));
const statusCode = successStatusCodes.length > 0 ? Number(successStatusCodes[0]) : 200;
const responseObject = operation.getResponseByStatusCode(statusCode);
const contentType = Object.keys(responseObject.content || {})?.[0];
const url = new __kubb_core_utils.URLPath(operation.path).toURLPath().replace(/([^/]):/g, "$1\\\\:");
const headers = [contentType ? `'Content-Type': '${contentType}'` : void 0].filter(Boolean);
const params = __kubb_react.FunctionParams.factory({ data: {
type: `${typeName} | ((
info: Parameters<Parameters<typeof http.${method}>[1]>[0],
) => Response)`,
optional: true
} });
return /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.File.Source, {
name,
isIndexable: true,
isExportable: true,
children: /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.Function, {
name,
export: true,
params: params.toConstructor(),
children: `return http.${method}('${baseURL}${url.replace(/([^/]):/g, "$1\\\\:")}', function handler(info) {
if(typeof data === 'function') return data(info)
return new Response(JSON.stringify(data), {
status: ${statusCode},
${headers.length ? ` headers: {
${headers.join(", \n")}
},` : ""}
})
})`
})
});
}
//#endregion
//#region src/components/Handlers.tsx
function Handlers({ name, handlers }) {
return /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.File.Source, {
name,
isIndexable: true,
isExportable: true,
children: `export const ${name} = ${JSON.stringify(handlers).replaceAll(`"`, "")} as const`
});
}
//#endregion
//#region src/components/MockWithFaker.tsx
function MockWithFaker({ baseURL = "", name, fakerName, typeName, operation }) {
const method = operation.method;
const successStatusCodes = operation.getResponseStatusCodes().filter((code) => code.startsWith("2"));
const statusCode = successStatusCodes.length > 0 ? Number(successStatusCodes[0]) : 200;
const responseObject = operation.getResponseByStatusCode(statusCode);
const contentType = Object.keys(responseObject.content || {})?.[0];
const url = new __kubb_core_utils.URLPath(operation.path).toURLPath().replace(/([^/]):/g, "$1\\\\:");
const headers = [contentType ? `'Content-Type': '${contentType}'` : void 0].filter(Boolean);
const params = __kubb_react.FunctionParams.factory({ data: {
type: `${typeName} | ((
info: Parameters<Parameters<typeof http.${method}>[1]>[0],
) => Response)`,
optional: true
} });
return /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.File.Source, {
name,
isIndexable: true,
isExportable: true,
children: /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.Function, {
name,
export: true,
params: params.toConstructor(),
children: `return http.${method}('${baseURL}${url.replace(/([^/]):/g, "$1\\\\:")}', function handler(info) {
if(typeof data === 'function') return data(info)
return new Response(JSON.stringify(data || ${fakerName}(data)), {
status: ${statusCode},
${headers.length ? ` headers: {
${headers.join(", \n")}
},` : ""}
})
})`
})
});
}
//#endregion
Object.defineProperty(exports, 'Handlers', {
enumerable: true,
get: function () {
return Handlers;
}
});
Object.defineProperty(exports, 'Mock', {
enumerable: true,
get: function () {
return Mock;
}
});
Object.defineProperty(exports, 'MockWithFaker', {
enumerable: true,
get: function () {
return MockWithFaker;
}
});
Object.defineProperty(exports, '__toESM', {
enumerable: true,
get: function () {
return __toESM;
}
});
//# sourceMappingURL=components-Bz0C7Qrg.cjs.map