aspida-mock
Version:
TypeScript friendly RESTful API mock for aspida
29 lines (27 loc) • 1.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const createImportPath = (filePath, inputDir) => filePath
.replace(new RegExp(`^(.\\/)?${inputDir.replace(/^.\//, '').replace(/\/$/, '')}`), '')
.replace(/'/g, "\\'")
.replace(/\.ts$/, '');
const createCondition = (filePath, inputDir, methods, trailingSlash) => ` { path: '${createImportPath(filePath, inputDir).replace(/(\/index)$/, '') || ''}${trailingSlash ? '/' : ''}', methods: ${methods} },\n`;
exports.default = (inputDir, trailingSlash, hasMiddleware, pathList) => `import type { AspidaClient } from 'aspida';
import type { MockClient, MockConfig } from 'aspida-mock';
import { mockClient } from 'aspida-mock';
${hasMiddleware ? "import baseMiddleware from './@middleware';\n" : ''}import api from './$api';
${pathList
.map((filePath, i) => `import mock${i} from '.${createImportPath(filePath, inputDir)}';\n`)
.join('')}
export const mockRoutes = () => [
${pathList
.map((filePath, i) => createCondition(filePath, inputDir, `mock${i}`, trailingSlash))
.join('')}];
export default <U>(client: AspidaClient<U> | MockClient<U>, config?: MockConfig | undefined) => {${hasMiddleware
? '\n const middleware = [...baseMiddleware, ...(config?.middleware || [])];'
: ''}
const mock = 'attachRoutes' in client ? client : mockClient(client);
mock.attachRoutes(mockRoutes(), ${hasMiddleware ? '{ ...config, middleware }' : 'config'});
return api(mock);
};
`;
//# sourceMappingURL=createRouteString.js.map