@kubb/plugin-msw 3.4.1 → 3.4.2

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.
@@ -86,14 +86,21 @@ var pluginMsw = createPlugin((options) => {
86
86
  if (mode === "single") {
87
87
  return path.resolve(root, output.path);
88
88
  }
89
- if (options2?.group && group) {
89
+ if (group && (options2?.group?.path || options2?.group?.tag)) {
90
90
  const groupName = group?.name ? group.name : (ctx) => {
91
91
  if (group?.type === "path") {
92
92
  return `${ctx.group.split("/")[1]}`;
93
93
  }
94
94
  return `${camelCase(ctx.group)}Controller`;
95
95
  };
96
- return path.resolve(root, output.path, groupName({ group: options2.group }), baseName);
96
+ return path.resolve(
97
+ root,
98
+ output.path,
99
+ groupName({
100
+ group: group.type === "path" ? options2.group.path : options2.group.tag
101
+ }),
102
+ baseName
103
+ );
97
104
  }
98
105
  return path.resolve(root, output.path, baseName);
99
106
  },
@@ -158,5 +165,5 @@ var handlersGenerator = createReactGenerator({
158
165
  });
159
166
 
160
167
  export { handlersGenerator, mswGenerator, pluginMsw, pluginMswName };
161
- //# sourceMappingURL=chunk-NS6CAQJT.js.map
162
- //# sourceMappingURL=chunk-NS6CAQJT.js.map
168
+ //# sourceMappingURL=chunk-U7X3UKZD.js.map
169
+ //# sourceMappingURL=chunk-U7X3UKZD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/generators/mswGenerator.tsx","../src/plugin.ts","../src/generators/handlersGenerator.tsx"],"names":["pluginTsName","pluginFakerName","options","createReactGenerator","useApp","useOperationManager","jsx","File","jsxs"],"mappings":"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","file":"chunk-U7X3UKZD.js","sourcesContent":["import { URLPath } from '@kubb/core/utils'\nimport { pluginFakerName } from '@kubb/plugin-faker'\nimport { createReactGenerator } from '@kubb/plugin-oas'\nimport { useOperationManager } from '@kubb/plugin-oas/hooks'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { File, useApp } from '@kubb/react'\nimport { Mock, MockWithFaker } from '../components'\nimport type { PluginMsw } from '../types'\n\nexport const mswGenerator = createReactGenerator<PluginMsw>({\n name: 'msw',\n Operation({ operation }) {\n const {\n plugin: {\n options: { output, parser },\n },\n } = useApp<PluginMsw>()\n const { getSchemas, getName, getFile } = useOperationManager()\n\n const mock = {\n name: getName(operation, { type: 'function' }),\n file: getFile(operation),\n }\n\n const faker = {\n file: getFile(operation, { pluginKey: [pluginFakerName] }),\n schemas: getSchemas(operation, { pluginKey: [pluginFakerName], type: 'function' }),\n }\n\n const type = {\n file: getFile(operation, { pluginKey: [pluginTsName] }),\n schemas: getSchemas(operation, { pluginKey: [pluginTsName], type: 'type' }),\n }\n\n return (\n <File baseName={mock.file.baseName} path={mock.file.path} meta={mock.file.meta} banner={output?.banner} footer={output?.footer}>\n <File.Import name={['http']} path=\"msw\" />\n <File.Import name={['ResponseResolver']} isTypeOnly path=\"msw\" />\n <File.Import name={[type.schemas.response.name]} path={type.file.path} root={mock.file.path} isTypeOnly />\n {parser === 'faker' && faker.file && faker.schemas.response && (\n <File.Import name={[faker.schemas.response.name]} root={mock.file.path} path={faker.file.path} />\n )}\n\n {parser === 'faker' && (\n <MockWithFaker\n name={mock.name}\n typeName={type.schemas.response.name}\n fakerName={faker.schemas.response.name}\n method={operation.method}\n url={new URLPath(operation.path).toURLPath()}\n />\n )}\n {parser === 'data' && (\n <Mock\n name={mock.name}\n typeName={type.schemas.response.name}\n fakerName={faker.schemas.response.name}\n method={operation.method}\n url={new URLPath(operation.path).toURLPath()}\n />\n )}\n </File>\n )\n },\n})\n","import path from 'node:path'\n\nimport { FileManager, type Group, PluginManager, createPlugin } from '@kubb/core'\nimport { camelCase } from '@kubb/core/transformers'\nimport { OperationGenerator, pluginOasName } from '@kubb/plugin-oas'\n\nimport { pluginFakerName } from '@kubb/plugin-faker'\nimport { pluginTsName } from '@kubb/plugin-ts'\n\nimport type { Plugin } from '@kubb/core'\nimport type { PluginOas as SwaggerPluginOptions } from '@kubb/plugin-oas'\nimport { handlersGenerator, mswGenerator } from './generators'\nimport type { PluginMsw } from './types.ts'\n\nexport const pluginMswName = 'plugin-msw' satisfies PluginMsw['name']\n\nexport const pluginMsw = createPlugin<PluginMsw>((options) => {\n const {\n output = { path: 'handlers', barrelType: 'named' },\n group,\n exclude = [],\n include,\n override = [],\n transformers = {},\n handlers = false,\n parser = 'data',\n generators = [mswGenerator, handlers ? handlersGenerator : undefined].filter(Boolean),\n } = options\n\n return {\n name: pluginMswName,\n options: {\n output,\n parser,\n group,\n },\n pre: [pluginOasName, pluginTsName, parser === 'faker' ? pluginFakerName : undefined].filter(Boolean),\n resolvePath(baseName, pathMode, options) {\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = pathMode ?? FileManager.getMode(path.resolve(root, output.path))\n\n if (mode === 'single') {\n /**\n * when output is a file then we will always append to the same file(output file), see fileManager.addOrAppend\n * Other plugins then need to call addOrAppend instead of just add from the fileManager class\n */\n return path.resolve(root, output.path)\n }\n\n if (group && (options?.group?.path || options?.group?.tag)) {\n const groupName: Group['name'] = group?.name\n ? group.name\n : (ctx) => {\n if (group?.type === 'path') {\n return `${ctx.group.split('/')[1]}`\n }\n return `${camelCase(ctx.group)}Controller`\n }\n\n return path.resolve(\n root,\n output.path,\n groupName({\n group: group.type === 'path' ? options.group.path! : options.group.tag!,\n }),\n baseName,\n )\n }\n\n return path.resolve(root, output.path, baseName)\n },\n resolveName(name, type) {\n const resolvedName = camelCase(name, {\n suffix: type ? 'handler' : undefined,\n isFile: type === 'file',\n })\n\n if (type) {\n return transformers?.name?.(resolvedName, type) || resolvedName\n }\n\n return resolvedName\n },\n async buildStart() {\n const [swaggerPlugin]: [Plugin<SwaggerPluginOptions>] = PluginManager.getDependedPlugins<SwaggerPluginOptions>(this.plugins, [pluginOasName])\n\n const oas = await swaggerPlugin.context.getOas()\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = FileManager.getMode(path.resolve(root, output.path))\n\n const operationGenerator = new OperationGenerator(this.plugin.options, {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType: swaggerPlugin.context.contentType,\n exclude,\n include,\n override,\n mode,\n })\n\n const files = await operationGenerator.build(...generators)\n await this.addFile(...files)\n\n const barrelFiles = await this.fileManager.getBarrelFiles({\n type: output.barrelType ?? 'named',\n root,\n output,\n files: this.fileManager.files,\n meta: {\n pluginKey: this.plugin.key,\n },\n logger: this.logger,\n })\n\n await this.addFile(...barrelFiles)\n },\n }\n})\n","import { createReactGenerator } from '@kubb/plugin-oas'\nimport { useOperationManager } from '@kubb/plugin-oas/hooks'\nimport { File, useApp } from '@kubb/react'\nimport { Handlers } from '../components/Handlers.tsx'\nimport { pluginMswName } from '../plugin.ts'\nimport type { PluginMsw } from '../types'\n\nexport const handlersGenerator = createReactGenerator<PluginMsw>({\n name: 'plugin-msw',\n Operations({ operations }) {\n const { pluginManager, plugin } = useApp<PluginMsw>()\n const { getName, getFile } = useOperationManager()\n\n const file = pluginManager.getFile({ name: 'handlers', extname: '.ts', pluginKey: plugin.key })\n\n const imports = operations.map((operation) => {\n const operationFile = getFile(operation, { pluginKey: plugin.key })\n const operationName = getName(operation, { pluginKey: plugin.key, type: 'function' })\n\n return <File.Import key={operationFile.path} name={[operationName]} root={file.path} path={operationFile.path} />\n })\n\n const handlers = operations.map((operation) => `${getName(operation, { type: 'function', pluginKey: plugin.key })}()`)\n\n return (\n <File baseName={file.baseName} path={file.path} meta={file.meta} banner={plugin.options.output?.banner} footer={plugin.options.output?.footer}>\n {imports}\n <Handlers name={'handlers'} handlers={handlers} />\n </File>\n )\n },\n})\n"]}
@@ -92,14 +92,21 @@ var pluginMsw = core.createPlugin((options) => {
92
92
  if (mode === "single") {
93
93
  return path__default.default.resolve(root, output.path);
94
94
  }
95
- if (options2?.group && group) {
95
+ if (group && (options2?.group?.path || options2?.group?.tag)) {
96
96
  const groupName = group?.name ? group.name : (ctx) => {
97
97
  if (group?.type === "path") {
98
98
  return `${ctx.group.split("/")[1]}`;
99
99
  }
100
100
  return `${transformers.camelCase(ctx.group)}Controller`;
101
101
  };
102
- return path__default.default.resolve(root, output.path, groupName({ group: options2.group }), baseName);
102
+ return path__default.default.resolve(
103
+ root,
104
+ output.path,
105
+ groupName({
106
+ group: group.type === "path" ? options2.group.path : options2.group.tag
107
+ }),
108
+ baseName
109
+ );
103
110
  }
104
111
  return path__default.default.resolve(root, output.path, baseName);
105
112
  },
@@ -167,5 +174,5 @@ exports.handlersGenerator = handlersGenerator;
167
174
  exports.mswGenerator = mswGenerator;
168
175
  exports.pluginMsw = pluginMsw;
169
176
  exports.pluginMswName = pluginMswName;
170
- //# sourceMappingURL=chunk-23GXMYX6.cjs.map
171
- //# sourceMappingURL=chunk-23GXMYX6.cjs.map
177
+ //# sourceMappingURL=chunk-X2L7FNJF.cjs.map
178
+ //# sourceMappingURL=chunk-X2L7FNJF.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/generators/mswGenerator.tsx","../src/plugin.ts","../src/generators/handlersGenerator.tsx"],"names":["createReactGenerator","useApp","useOperationManager","pluginFakerName","pluginTsName","File","jsx","MockWithFaker","URLPath","Mock","createPlugin","transformers","pluginOasName","options","path","FileManager","camelCase","PluginManager","OperationGenerator","jsxs","Handlers"],"mappings":"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","file":"chunk-X2L7FNJF.cjs","sourcesContent":["import { URLPath } from '@kubb/core/utils'\nimport { pluginFakerName } from '@kubb/plugin-faker'\nimport { createReactGenerator } from '@kubb/plugin-oas'\nimport { useOperationManager } from '@kubb/plugin-oas/hooks'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { File, useApp } from '@kubb/react'\nimport { Mock, MockWithFaker } from '../components'\nimport type { PluginMsw } from '../types'\n\nexport const mswGenerator = createReactGenerator<PluginMsw>({\n name: 'msw',\n Operation({ operation }) {\n const {\n plugin: {\n options: { output, parser },\n },\n } = useApp<PluginMsw>()\n const { getSchemas, getName, getFile } = useOperationManager()\n\n const mock = {\n name: getName(operation, { type: 'function' }),\n file: getFile(operation),\n }\n\n const faker = {\n file: getFile(operation, { pluginKey: [pluginFakerName] }),\n schemas: getSchemas(operation, { pluginKey: [pluginFakerName], type: 'function' }),\n }\n\n const type = {\n file: getFile(operation, { pluginKey: [pluginTsName] }),\n schemas: getSchemas(operation, { pluginKey: [pluginTsName], type: 'type' }),\n }\n\n return (\n <File baseName={mock.file.baseName} path={mock.file.path} meta={mock.file.meta} banner={output?.banner} footer={output?.footer}>\n <File.Import name={['http']} path=\"msw\" />\n <File.Import name={['ResponseResolver']} isTypeOnly path=\"msw\" />\n <File.Import name={[type.schemas.response.name]} path={type.file.path} root={mock.file.path} isTypeOnly />\n {parser === 'faker' && faker.file && faker.schemas.response && (\n <File.Import name={[faker.schemas.response.name]} root={mock.file.path} path={faker.file.path} />\n )}\n\n {parser === 'faker' && (\n <MockWithFaker\n name={mock.name}\n typeName={type.schemas.response.name}\n fakerName={faker.schemas.response.name}\n method={operation.method}\n url={new URLPath(operation.path).toURLPath()}\n />\n )}\n {parser === 'data' && (\n <Mock\n name={mock.name}\n typeName={type.schemas.response.name}\n fakerName={faker.schemas.response.name}\n method={operation.method}\n url={new URLPath(operation.path).toURLPath()}\n />\n )}\n </File>\n )\n },\n})\n","import path from 'node:path'\n\nimport { FileManager, type Group, PluginManager, createPlugin } from '@kubb/core'\nimport { camelCase } from '@kubb/core/transformers'\nimport { OperationGenerator, pluginOasName } from '@kubb/plugin-oas'\n\nimport { pluginFakerName } from '@kubb/plugin-faker'\nimport { pluginTsName } from '@kubb/plugin-ts'\n\nimport type { Plugin } from '@kubb/core'\nimport type { PluginOas as SwaggerPluginOptions } from '@kubb/plugin-oas'\nimport { handlersGenerator, mswGenerator } from './generators'\nimport type { PluginMsw } from './types.ts'\n\nexport const pluginMswName = 'plugin-msw' satisfies PluginMsw['name']\n\nexport const pluginMsw = createPlugin<PluginMsw>((options) => {\n const {\n output = { path: 'handlers', barrelType: 'named' },\n group,\n exclude = [],\n include,\n override = [],\n transformers = {},\n handlers = false,\n parser = 'data',\n generators = [mswGenerator, handlers ? handlersGenerator : undefined].filter(Boolean),\n } = options\n\n return {\n name: pluginMswName,\n options: {\n output,\n parser,\n group,\n },\n pre: [pluginOasName, pluginTsName, parser === 'faker' ? pluginFakerName : undefined].filter(Boolean),\n resolvePath(baseName, pathMode, options) {\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = pathMode ?? FileManager.getMode(path.resolve(root, output.path))\n\n if (mode === 'single') {\n /**\n * when output is a file then we will always append to the same file(output file), see fileManager.addOrAppend\n * Other plugins then need to call addOrAppend instead of just add from the fileManager class\n */\n return path.resolve(root, output.path)\n }\n\n if (group && (options?.group?.path || options?.group?.tag)) {\n const groupName: Group['name'] = group?.name\n ? group.name\n : (ctx) => {\n if (group?.type === 'path') {\n return `${ctx.group.split('/')[1]}`\n }\n return `${camelCase(ctx.group)}Controller`\n }\n\n return path.resolve(\n root,\n output.path,\n groupName({\n group: group.type === 'path' ? options.group.path! : options.group.tag!,\n }),\n baseName,\n )\n }\n\n return path.resolve(root, output.path, baseName)\n },\n resolveName(name, type) {\n const resolvedName = camelCase(name, {\n suffix: type ? 'handler' : undefined,\n isFile: type === 'file',\n })\n\n if (type) {\n return transformers?.name?.(resolvedName, type) || resolvedName\n }\n\n return resolvedName\n },\n async buildStart() {\n const [swaggerPlugin]: [Plugin<SwaggerPluginOptions>] = PluginManager.getDependedPlugins<SwaggerPluginOptions>(this.plugins, [pluginOasName])\n\n const oas = await swaggerPlugin.context.getOas()\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = FileManager.getMode(path.resolve(root, output.path))\n\n const operationGenerator = new OperationGenerator(this.plugin.options, {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType: swaggerPlugin.context.contentType,\n exclude,\n include,\n override,\n mode,\n })\n\n const files = await operationGenerator.build(...generators)\n await this.addFile(...files)\n\n const barrelFiles = await this.fileManager.getBarrelFiles({\n type: output.barrelType ?? 'named',\n root,\n output,\n files: this.fileManager.files,\n meta: {\n pluginKey: this.plugin.key,\n },\n logger: this.logger,\n })\n\n await this.addFile(...barrelFiles)\n },\n }\n})\n","import { createReactGenerator } from '@kubb/plugin-oas'\nimport { useOperationManager } from '@kubb/plugin-oas/hooks'\nimport { File, useApp } from '@kubb/react'\nimport { Handlers } from '../components/Handlers.tsx'\nimport { pluginMswName } from '../plugin.ts'\nimport type { PluginMsw } from '../types'\n\nexport const handlersGenerator = createReactGenerator<PluginMsw>({\n name: 'plugin-msw',\n Operations({ operations }) {\n const { pluginManager, plugin } = useApp<PluginMsw>()\n const { getName, getFile } = useOperationManager()\n\n const file = pluginManager.getFile({ name: 'handlers', extname: '.ts', pluginKey: plugin.key })\n\n const imports = operations.map((operation) => {\n const operationFile = getFile(operation, { pluginKey: plugin.key })\n const operationName = getName(operation, { pluginKey: plugin.key, type: 'function' })\n\n return <File.Import key={operationFile.path} name={[operationName]} root={file.path} path={operationFile.path} />\n })\n\n const handlers = operations.map((operation) => `${getName(operation, { type: 'function', pluginKey: plugin.key })}()`)\n\n return (\n <File baseName={file.baseName} path={file.path} meta={file.meta} banner={plugin.options.output?.banner} footer={plugin.options.output?.footer}>\n {imports}\n <Handlers name={'handlers'} handlers={handlers} />\n </File>\n )\n },\n})\n"]}
@@ -1,17 +1,17 @@
1
1
  'use strict';
2
2
 
3
- var chunk23GXMYX6_cjs = require('./chunk-23GXMYX6.cjs');
3
+ var chunkX2L7FNJF_cjs = require('./chunk-X2L7FNJF.cjs');
4
4
  require('./chunk-YYEGKAGZ.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "handlersGenerator", {
9
9
  enumerable: true,
10
- get: function () { return chunk23GXMYX6_cjs.handlersGenerator; }
10
+ get: function () { return chunkX2L7FNJF_cjs.handlersGenerator; }
11
11
  });
12
12
  Object.defineProperty(exports, "mswGenerator", {
13
13
  enumerable: true,
14
- get: function () { return chunk23GXMYX6_cjs.mswGenerator; }
14
+ get: function () { return chunkX2L7FNJF_cjs.mswGenerator; }
15
15
  });
16
16
  //# sourceMappingURL=generators.cjs.map
17
17
  //# sourceMappingURL=generators.cjs.map
@@ -1,4 +1,4 @@
1
- export { handlersGenerator, mswGenerator } from './chunk-NS6CAQJT.js';
1
+ export { handlersGenerator, mswGenerator } from './chunk-U7X3UKZD.js';
2
2
  import './chunk-LOYUDIPB.js';
3
3
  //# sourceMappingURL=generators.js.map
4
4
  //# sourceMappingURL=generators.js.map
package/dist/index.cjs CHANGED
@@ -1,17 +1,17 @@
1
1
  'use strict';
2
2
 
3
- var chunk23GXMYX6_cjs = require('./chunk-23GXMYX6.cjs');
3
+ var chunkX2L7FNJF_cjs = require('./chunk-X2L7FNJF.cjs');
4
4
  require('./chunk-YYEGKAGZ.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "pluginMsw", {
9
9
  enumerable: true,
10
- get: function () { return chunk23GXMYX6_cjs.pluginMsw; }
10
+ get: function () { return chunkX2L7FNJF_cjs.pluginMsw; }
11
11
  });
12
12
  Object.defineProperty(exports, "pluginMswName", {
13
13
  enumerable: true,
14
- get: function () { return chunk23GXMYX6_cjs.pluginMswName; }
14
+ get: function () { return chunkX2L7FNJF_cjs.pluginMswName; }
15
15
  });
16
16
  //# sourceMappingURL=index.cjs.map
17
17
  //# sourceMappingURL=index.cjs.map
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { pluginMsw, pluginMswName } from './chunk-NS6CAQJT.js';
1
+ export { pluginMsw, pluginMswName } from './chunk-U7X3UKZD.js';
2
2
  import './chunk-LOYUDIPB.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kubb/plugin-msw",
3
- "version": "3.4.1",
3
+ "version": "3.4.2",
4
4
  "description": "Generator swagger",
5
5
  "keywords": [
6
6
  "typescript",
@@ -74,21 +74,21 @@
74
74
  "!/**/__tests__/**"
75
75
  ],
76
76
  "dependencies": {
77
- "@kubb/core": "3.4.1",
78
- "@kubb/fs": "3.4.1",
79
- "@kubb/oas": "3.4.1",
80
- "@kubb/plugin-faker": "3.4.1",
81
- "@kubb/plugin-oas": "3.4.1",
82
- "@kubb/plugin-ts": "3.4.1",
83
- "@kubb/react": "3.4.1"
77
+ "@kubb/core": "3.4.2",
78
+ "@kubb/fs": "3.4.2",
79
+ "@kubb/oas": "3.4.2",
80
+ "@kubb/plugin-faker": "3.4.2",
81
+ "@kubb/plugin-oas": "3.4.2",
82
+ "@kubb/plugin-ts": "3.4.2",
83
+ "@kubb/react": "3.4.2"
84
84
  },
85
85
  "devDependencies": {
86
86
  "@types/react": "^18.3.18",
87
87
  "react": "^18.3.1",
88
88
  "tsup": "^8.3.5",
89
89
  "typescript": "^5.7.2",
90
- "@kubb/config-ts": "3.4.1",
91
- "@kubb/config-tsup": "3.4.1"
90
+ "@kubb/config-ts": "3.4.2",
91
+ "@kubb/config-tsup": "3.4.2"
92
92
  },
93
93
  "peerDependencies": {
94
94
  "@kubb/react": "^3.0.0"
package/src/plugin.ts CHANGED
@@ -47,7 +47,7 @@ export const pluginMsw = createPlugin<PluginMsw>((options) => {
47
47
  return path.resolve(root, output.path)
48
48
  }
49
49
 
50
- if (options?.group && group) {
50
+ if (group && (options?.group?.path || options?.group?.tag)) {
51
51
  const groupName: Group['name'] = group?.name
52
52
  ? group.name
53
53
  : (ctx) => {
@@ -57,7 +57,14 @@ export const pluginMsw = createPlugin<PluginMsw>((options) => {
57
57
  return `${camelCase(ctx.group)}Controller`
58
58
  }
59
59
 
60
- return path.resolve(root, output.path, groupName({ group: options.group }), baseName)
60
+ return path.resolve(
61
+ root,
62
+ output.path,
63
+ groupName({
64
+ group: group.type === 'path' ? options.group.path! : options.group.tag!,
65
+ }),
66
+ baseName,
67
+ )
61
68
  }
62
69
 
63
70
  return path.resolve(root, output.path, baseName)
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/generators/mswGenerator.tsx","../src/plugin.ts","../src/generators/handlersGenerator.tsx"],"names":["createReactGenerator","useApp","useOperationManager","pluginFakerName","pluginTsName","File","jsx","MockWithFaker","URLPath","Mock","createPlugin","transformers","pluginOasName","options","path","FileManager","camelCase","PluginManager","OperationGenerator","jsxs","Handlers"],"mappings":"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","file":"chunk-23GXMYX6.cjs","sourcesContent":["import { URLPath } from '@kubb/core/utils'\nimport { pluginFakerName } from '@kubb/plugin-faker'\nimport { createReactGenerator } from '@kubb/plugin-oas'\nimport { useOperationManager } from '@kubb/plugin-oas/hooks'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { File, useApp } from '@kubb/react'\nimport { Mock, MockWithFaker } from '../components'\nimport type { PluginMsw } from '../types'\n\nexport const mswGenerator = createReactGenerator<PluginMsw>({\n name: 'msw',\n Operation({ operation }) {\n const {\n plugin: {\n options: { output, parser },\n },\n } = useApp<PluginMsw>()\n const { getSchemas, getName, getFile } = useOperationManager()\n\n const mock = {\n name: getName(operation, { type: 'function' }),\n file: getFile(operation),\n }\n\n const faker = {\n file: getFile(operation, { pluginKey: [pluginFakerName] }),\n schemas: getSchemas(operation, { pluginKey: [pluginFakerName], type: 'function' }),\n }\n\n const type = {\n file: getFile(operation, { pluginKey: [pluginTsName] }),\n schemas: getSchemas(operation, { pluginKey: [pluginTsName], type: 'type' }),\n }\n\n return (\n <File baseName={mock.file.baseName} path={mock.file.path} meta={mock.file.meta} banner={output?.banner} footer={output?.footer}>\n <File.Import name={['http']} path=\"msw\" />\n <File.Import name={['ResponseResolver']} isTypeOnly path=\"msw\" />\n <File.Import name={[type.schemas.response.name]} path={type.file.path} root={mock.file.path} isTypeOnly />\n {parser === 'faker' && faker.file && faker.schemas.response && (\n <File.Import name={[faker.schemas.response.name]} root={mock.file.path} path={faker.file.path} />\n )}\n\n {parser === 'faker' && (\n <MockWithFaker\n name={mock.name}\n typeName={type.schemas.response.name}\n fakerName={faker.schemas.response.name}\n method={operation.method}\n url={new URLPath(operation.path).toURLPath()}\n />\n )}\n {parser === 'data' && (\n <Mock\n name={mock.name}\n typeName={type.schemas.response.name}\n fakerName={faker.schemas.response.name}\n method={operation.method}\n url={new URLPath(operation.path).toURLPath()}\n />\n )}\n </File>\n )\n },\n})\n","import path from 'node:path'\n\nimport { FileManager, type Group, PluginManager, createPlugin } from '@kubb/core'\nimport { camelCase } from '@kubb/core/transformers'\nimport { OperationGenerator, pluginOasName } from '@kubb/plugin-oas'\n\nimport { pluginFakerName } from '@kubb/plugin-faker'\nimport { pluginTsName } from '@kubb/plugin-ts'\n\nimport type { Plugin } from '@kubb/core'\nimport type { PluginOas as SwaggerPluginOptions } from '@kubb/plugin-oas'\nimport { handlersGenerator, mswGenerator } from './generators'\nimport type { PluginMsw } from './types.ts'\n\nexport const pluginMswName = 'plugin-msw' satisfies PluginMsw['name']\n\nexport const pluginMsw = createPlugin<PluginMsw>((options) => {\n const {\n output = { path: 'handlers', barrelType: 'named' },\n group,\n exclude = [],\n include,\n override = [],\n transformers = {},\n handlers = false,\n parser = 'data',\n generators = [mswGenerator, handlers ? handlersGenerator : undefined].filter(Boolean),\n } = options\n\n return {\n name: pluginMswName,\n options: {\n output,\n parser,\n group,\n },\n pre: [pluginOasName, pluginTsName, parser === 'faker' ? pluginFakerName : undefined].filter(Boolean),\n resolvePath(baseName, pathMode, options) {\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = pathMode ?? FileManager.getMode(path.resolve(root, output.path))\n\n if (mode === 'single') {\n /**\n * when output is a file then we will always append to the same file(output file), see fileManager.addOrAppend\n * Other plugins then need to call addOrAppend instead of just add from the fileManager class\n */\n return path.resolve(root, output.path)\n }\n\n if (options?.group && group) {\n const groupName: Group['name'] = group?.name\n ? group.name\n : (ctx) => {\n if (group?.type === 'path') {\n return `${ctx.group.split('/')[1]}`\n }\n return `${camelCase(ctx.group)}Controller`\n }\n\n return path.resolve(root, output.path, groupName({ group: options.group }), baseName)\n }\n\n return path.resolve(root, output.path, baseName)\n },\n resolveName(name, type) {\n const resolvedName = camelCase(name, {\n suffix: type ? 'handler' : undefined,\n isFile: type === 'file',\n })\n\n if (type) {\n return transformers?.name?.(resolvedName, type) || resolvedName\n }\n\n return resolvedName\n },\n async buildStart() {\n const [swaggerPlugin]: [Plugin<SwaggerPluginOptions>] = PluginManager.getDependedPlugins<SwaggerPluginOptions>(this.plugins, [pluginOasName])\n\n const oas = await swaggerPlugin.context.getOas()\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = FileManager.getMode(path.resolve(root, output.path))\n\n const operationGenerator = new OperationGenerator(this.plugin.options, {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType: swaggerPlugin.context.contentType,\n exclude,\n include,\n override,\n mode,\n })\n\n const files = await operationGenerator.build(...generators)\n await this.addFile(...files)\n\n const barrelFiles = await this.fileManager.getBarrelFiles({\n type: output.barrelType ?? 'named',\n root,\n output,\n files: this.fileManager.files,\n meta: {\n pluginKey: this.plugin.key,\n },\n logger: this.logger,\n })\n\n await this.addFile(...barrelFiles)\n },\n }\n})\n","import { createReactGenerator } from '@kubb/plugin-oas'\nimport { useOperationManager } from '@kubb/plugin-oas/hooks'\nimport { File, useApp } from '@kubb/react'\nimport { Handlers } from '../components/Handlers.tsx'\nimport { pluginMswName } from '../plugin.ts'\nimport type { PluginMsw } from '../types'\n\nexport const handlersGenerator = createReactGenerator<PluginMsw>({\n name: 'plugin-msw',\n Operations({ operations }) {\n const { pluginManager, plugin } = useApp<PluginMsw>()\n const { getName, getFile } = useOperationManager()\n\n const file = pluginManager.getFile({ name: 'handlers', extname: '.ts', pluginKey: plugin.key })\n\n const imports = operations.map((operation) => {\n const operationFile = getFile(operation, { pluginKey: plugin.key })\n const operationName = getName(operation, { pluginKey: plugin.key, type: 'function' })\n\n return <File.Import key={operationFile.path} name={[operationName]} root={file.path} path={operationFile.path} />\n })\n\n const handlers = operations.map((operation) => `${getName(operation, { type: 'function', pluginKey: plugin.key })}()`)\n\n return (\n <File baseName={file.baseName} path={file.path} meta={file.meta} banner={plugin.options.output?.banner} footer={plugin.options.output?.footer}>\n {imports}\n <Handlers name={'handlers'} handlers={handlers} />\n </File>\n )\n },\n})\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/generators/mswGenerator.tsx","../src/plugin.ts","../src/generators/handlersGenerator.tsx"],"names":["pluginTsName","pluginFakerName","options","createReactGenerator","useApp","useOperationManager","jsx","File","jsxs"],"mappings":"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","file":"chunk-NS6CAQJT.js","sourcesContent":["import { URLPath } from '@kubb/core/utils'\nimport { pluginFakerName } from '@kubb/plugin-faker'\nimport { createReactGenerator } from '@kubb/plugin-oas'\nimport { useOperationManager } from '@kubb/plugin-oas/hooks'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { File, useApp } from '@kubb/react'\nimport { Mock, MockWithFaker } from '../components'\nimport type { PluginMsw } from '../types'\n\nexport const mswGenerator = createReactGenerator<PluginMsw>({\n name: 'msw',\n Operation({ operation }) {\n const {\n plugin: {\n options: { output, parser },\n },\n } = useApp<PluginMsw>()\n const { getSchemas, getName, getFile } = useOperationManager()\n\n const mock = {\n name: getName(operation, { type: 'function' }),\n file: getFile(operation),\n }\n\n const faker = {\n file: getFile(operation, { pluginKey: [pluginFakerName] }),\n schemas: getSchemas(operation, { pluginKey: [pluginFakerName], type: 'function' }),\n }\n\n const type = {\n file: getFile(operation, { pluginKey: [pluginTsName] }),\n schemas: getSchemas(operation, { pluginKey: [pluginTsName], type: 'type' }),\n }\n\n return (\n <File baseName={mock.file.baseName} path={mock.file.path} meta={mock.file.meta} banner={output?.banner} footer={output?.footer}>\n <File.Import name={['http']} path=\"msw\" />\n <File.Import name={['ResponseResolver']} isTypeOnly path=\"msw\" />\n <File.Import name={[type.schemas.response.name]} path={type.file.path} root={mock.file.path} isTypeOnly />\n {parser === 'faker' && faker.file && faker.schemas.response && (\n <File.Import name={[faker.schemas.response.name]} root={mock.file.path} path={faker.file.path} />\n )}\n\n {parser === 'faker' && (\n <MockWithFaker\n name={mock.name}\n typeName={type.schemas.response.name}\n fakerName={faker.schemas.response.name}\n method={operation.method}\n url={new URLPath(operation.path).toURLPath()}\n />\n )}\n {parser === 'data' && (\n <Mock\n name={mock.name}\n typeName={type.schemas.response.name}\n fakerName={faker.schemas.response.name}\n method={operation.method}\n url={new URLPath(operation.path).toURLPath()}\n />\n )}\n </File>\n )\n },\n})\n","import path from 'node:path'\n\nimport { FileManager, type Group, PluginManager, createPlugin } from '@kubb/core'\nimport { camelCase } from '@kubb/core/transformers'\nimport { OperationGenerator, pluginOasName } from '@kubb/plugin-oas'\n\nimport { pluginFakerName } from '@kubb/plugin-faker'\nimport { pluginTsName } from '@kubb/plugin-ts'\n\nimport type { Plugin } from '@kubb/core'\nimport type { PluginOas as SwaggerPluginOptions } from '@kubb/plugin-oas'\nimport { handlersGenerator, mswGenerator } from './generators'\nimport type { PluginMsw } from './types.ts'\n\nexport const pluginMswName = 'plugin-msw' satisfies PluginMsw['name']\n\nexport const pluginMsw = createPlugin<PluginMsw>((options) => {\n const {\n output = { path: 'handlers', barrelType: 'named' },\n group,\n exclude = [],\n include,\n override = [],\n transformers = {},\n handlers = false,\n parser = 'data',\n generators = [mswGenerator, handlers ? handlersGenerator : undefined].filter(Boolean),\n } = options\n\n return {\n name: pluginMswName,\n options: {\n output,\n parser,\n group,\n },\n pre: [pluginOasName, pluginTsName, parser === 'faker' ? pluginFakerName : undefined].filter(Boolean),\n resolvePath(baseName, pathMode, options) {\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = pathMode ?? FileManager.getMode(path.resolve(root, output.path))\n\n if (mode === 'single') {\n /**\n * when output is a file then we will always append to the same file(output file), see fileManager.addOrAppend\n * Other plugins then need to call addOrAppend instead of just add from the fileManager class\n */\n return path.resolve(root, output.path)\n }\n\n if (options?.group && group) {\n const groupName: Group['name'] = group?.name\n ? group.name\n : (ctx) => {\n if (group?.type === 'path') {\n return `${ctx.group.split('/')[1]}`\n }\n return `${camelCase(ctx.group)}Controller`\n }\n\n return path.resolve(root, output.path, groupName({ group: options.group }), baseName)\n }\n\n return path.resolve(root, output.path, baseName)\n },\n resolveName(name, type) {\n const resolvedName = camelCase(name, {\n suffix: type ? 'handler' : undefined,\n isFile: type === 'file',\n })\n\n if (type) {\n return transformers?.name?.(resolvedName, type) || resolvedName\n }\n\n return resolvedName\n },\n async buildStart() {\n const [swaggerPlugin]: [Plugin<SwaggerPluginOptions>] = PluginManager.getDependedPlugins<SwaggerPluginOptions>(this.plugins, [pluginOasName])\n\n const oas = await swaggerPlugin.context.getOas()\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = FileManager.getMode(path.resolve(root, output.path))\n\n const operationGenerator = new OperationGenerator(this.plugin.options, {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType: swaggerPlugin.context.contentType,\n exclude,\n include,\n override,\n mode,\n })\n\n const files = await operationGenerator.build(...generators)\n await this.addFile(...files)\n\n const barrelFiles = await this.fileManager.getBarrelFiles({\n type: output.barrelType ?? 'named',\n root,\n output,\n files: this.fileManager.files,\n meta: {\n pluginKey: this.plugin.key,\n },\n logger: this.logger,\n })\n\n await this.addFile(...barrelFiles)\n },\n }\n})\n","import { createReactGenerator } from '@kubb/plugin-oas'\nimport { useOperationManager } from '@kubb/plugin-oas/hooks'\nimport { File, useApp } from '@kubb/react'\nimport { Handlers } from '../components/Handlers.tsx'\nimport { pluginMswName } from '../plugin.ts'\nimport type { PluginMsw } from '../types'\n\nexport const handlersGenerator = createReactGenerator<PluginMsw>({\n name: 'plugin-msw',\n Operations({ operations }) {\n const { pluginManager, plugin } = useApp<PluginMsw>()\n const { getName, getFile } = useOperationManager()\n\n const file = pluginManager.getFile({ name: 'handlers', extname: '.ts', pluginKey: plugin.key })\n\n const imports = operations.map((operation) => {\n const operationFile = getFile(operation, { pluginKey: plugin.key })\n const operationName = getName(operation, { pluginKey: plugin.key, type: 'function' })\n\n return <File.Import key={operationFile.path} name={[operationName]} root={file.path} path={operationFile.path} />\n })\n\n const handlers = operations.map((operation) => `${getName(operation, { type: 'function', pluginKey: plugin.key })}()`)\n\n return (\n <File baseName={file.baseName} path={file.path} meta={file.meta} banner={plugin.options.output?.banner} footer={plugin.options.output?.footer}>\n {imports}\n <Handlers name={'handlers'} handlers={handlers} />\n </File>\n )\n },\n})\n"]}