@kubb/plugin-msw 3.0.0-alpha.13 → 3.0.0-alpha.15

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.
Files changed (41) hide show
  1. package/dist/chunk-2H7SYKGX.js +24 -0
  2. package/dist/chunk-2H7SYKGX.js.map +1 -0
  3. package/dist/chunk-HYNRHFXE.cjs +130 -0
  4. package/dist/chunk-HYNRHFXE.cjs.map +1 -0
  5. package/dist/chunk-SFLIUHHL.cjs +27 -0
  6. package/dist/chunk-SFLIUHHL.cjs.map +1 -0
  7. package/dist/chunk-YSIJ7IAG.js +121 -0
  8. package/dist/chunk-YSIJ7IAG.js.map +1 -0
  9. package/dist/components.cjs +5 -5
  10. package/dist/components.d.cts +7 -71
  11. package/dist/components.d.ts +7 -71
  12. package/dist/components.js +1 -1
  13. package/dist/generators.cjs +17 -0
  14. package/dist/generators.cjs.map +1 -0
  15. package/dist/generators.d.cts +10 -0
  16. package/dist/generators.d.ts +10 -0
  17. package/dist/generators.js +4 -0
  18. package/dist/generators.js.map +1 -0
  19. package/dist/index.cjs +9 -125
  20. package/dist/index.cjs.map +1 -1
  21. package/dist/index.d.cts +4 -86
  22. package/dist/index.d.ts +4 -86
  23. package/dist/index.js +2 -124
  24. package/dist/index.js.map +1 -1
  25. package/dist/types-cZ4a5aFe.d.cts +76 -0
  26. package/dist/types-cZ4a5aFe.d.ts +76 -0
  27. package/package.json +21 -13
  28. package/src/components/Handlers.tsx +19 -0
  29. package/src/components/Mock.tsx +10 -85
  30. package/src/components/index.ts +1 -1
  31. package/src/generators/handlersGenerator.tsx +32 -0
  32. package/src/generators/index.ts +2 -0
  33. package/src/generators/mockGenerator.tsx +35 -0
  34. package/src/plugin.ts +5 -14
  35. package/src/types.ts +4 -12
  36. package/dist/chunk-3KHLTEUD.js +0 -98
  37. package/dist/chunk-3KHLTEUD.js.map +0 -1
  38. package/dist/chunk-BD7UJBXM.cjs +0 -101
  39. package/dist/chunk-BD7UJBXM.cjs.map +0 -1
  40. package/src/OperationGenerator.tsx +0 -66
  41. package/src/components/Operations.tsx +0 -94
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kubb/plugin-msw",
3
- "version": "3.0.0-alpha.13",
3
+ "version": "3.0.0-alpha.15",
4
4
  "description": "Generator swagger",
5
5
  "keywords": [
6
6
  "typescript",
@@ -40,6 +40,11 @@
40
40
  "require": "./dist/components.cjs",
41
41
  "default": "./dist/components.cjs"
42
42
  },
43
+ "./generators": {
44
+ "import": "./dist/generators.js",
45
+ "require": "./dist/generators.cjs",
46
+ "default": "./dist/generators.cjs"
47
+ },
43
48
  "./package.json": "./package.json",
44
49
  "./*": "./*"
45
50
  },
@@ -56,6 +61,9 @@
56
61
  ],
57
62
  "components": [
58
63
  "./dist/components.d.ts"
64
+ ],
65
+ "generators": [
66
+ "./dist/generators.d.ts"
59
67
  ]
60
68
  }
61
69
  },
@@ -66,14 +74,14 @@
66
74
  "!/**/__tests__/**"
67
75
  ],
68
76
  "dependencies": {
69
- "@kubb/core": "3.0.0-alpha.13",
70
- "@kubb/fs": "3.0.0-alpha.13",
71
- "@kubb/oas": "3.0.0-alpha.13",
72
- "@kubb/parser-ts": "3.0.0-alpha.13",
73
- "@kubb/plugin-faker": "3.0.0-alpha.13",
74
- "@kubb/plugin-oas": "3.0.0-alpha.13",
75
- "@kubb/plugin-ts": "3.0.0-alpha.13",
76
- "@kubb/react": "3.0.0-alpha.13"
77
+ "@kubb/core": "3.0.0-alpha.15",
78
+ "@kubb/fs": "3.0.0-alpha.15",
79
+ "@kubb/oas": "3.0.0-alpha.15",
80
+ "@kubb/parser-ts": "3.0.0-alpha.15",
81
+ "@kubb/plugin-faker": "3.0.0-alpha.15",
82
+ "@kubb/plugin-oas": "3.0.0-alpha.15",
83
+ "@kubb/plugin-ts": "3.0.0-alpha.15",
84
+ "@kubb/react": "3.0.0-alpha.15"
77
85
  },
78
86
  "devDependencies": {
79
87
  "@types/react": "^18.3.5",
@@ -81,12 +89,12 @@
81
89
  "react": "^18.3.1",
82
90
  "tsup": "^8.2.4",
83
91
  "typescript": "^5.5.4",
84
- "@kubb/config-biome": "3.0.0-alpha.13",
85
- "@kubb/config-ts": "3.0.0-alpha.13",
86
- "@kubb/config-tsup": "3.0.0-alpha.13"
92
+ "@kubb/config-biome": "3.0.0-alpha.15",
93
+ "@kubb/config-ts": "3.0.0-alpha.15",
94
+ "@kubb/config-tsup": "3.0.0-alpha.15"
87
95
  },
88
96
  "peerDependencies": {
89
- "@kubb/react": "3.0.0-alpha.13"
97
+ "@kubb/react": "3.0.0-alpha.15"
90
98
  },
91
99
  "engines": {
92
100
  "node": ">=20"
@@ -0,0 +1,19 @@
1
+ import { File } from '@kubb/react'
2
+ import type { ReactNode } from 'react'
3
+
4
+ type HandlersProps = {
5
+ /**
6
+ * Name of the function
7
+ */
8
+ name: string
9
+ // custom
10
+ handlers: string[]
11
+ }
12
+
13
+ export function Handlers({ name, handlers }: HandlersProps): ReactNode {
14
+ return (
15
+ <File.Source name={name} isIndexable isExportable>
16
+ {`export const ${name} = ${JSON.stringify(handlers).replaceAll(`"`, '')} as const`}
17
+ </File.Source>
18
+ )
19
+ }
@@ -1,37 +1,26 @@
1
1
  import { URLPath } from '@kubb/core/utils'
2
- import { File, useApp } from '@kubb/react'
3
- import { pluginFakerName } from '@kubb/plugin-faker'
4
- import { useOperation, useOperationManager } from '@kubb/plugin-oas/hooks'
2
+ import { File } from '@kubb/react'
5
3
 
6
- import type { HttpMethod } from '@kubb/oas'
4
+ import type { Operation } from '@kubb/oas'
7
5
  import type { ReactNode } from 'react'
8
- import type { FileMeta, PluginMsw } from '../types.ts'
9
6
 
10
- type TemplateProps = {
7
+ type Props = {
11
8
  /**
12
9
  * Name of the function
13
10
  */
14
11
  name: string
15
- /**
16
- * Method of the current operation, see useOperation.
17
- */
18
- method: HttpMethod
19
- /**
20
- * Path of the mock
21
- */
22
- path: URLPath
23
- /**
24
- * Name of the import for the mock(this is a function).
25
- * @example createPet
26
- */
12
+ operation: Operation
13
+ // custom
27
14
  responseName: string
28
15
  }
29
16
 
30
- function Template({ name, method, path, responseName }: TemplateProps): ReactNode {
17
+ export function Mock({ name, responseName, operation }: Props): ReactNode {
18
+ const path = new URLPath(operation.path)
19
+
31
20
  return (
32
- <File.Source name={name} isExportable isIndexable>
21
+ <File.Source name={name} isIndexable isExportable>
33
22
  {`
34
- export const ${name} = http.${method}('*${path.toURLPath()}', function handler(info) {
23
+ export const ${name} = http.${operation.method}('*${path.toURLPath()}', function handler(info) {
35
24
  return new Response(JSON.stringify(${responseName}()), {
36
25
  headers: {
37
26
  'Content-Type': 'application/json',
@@ -42,67 +31,3 @@ function Template({ name, method, path, responseName }: TemplateProps): ReactNod
42
31
  </File.Source>
43
32
  )
44
33
  }
45
-
46
- const defaultTemplates = { default: Template } as const
47
-
48
- type Props = {
49
- /**
50
- * This will make it possible to override the default behaviour.
51
- */
52
- Template?: React.ComponentType<React.ComponentProps<typeof Template>>
53
- }
54
-
55
- export function Mock({ Template = defaultTemplates.default }: Props): ReactNode {
56
- const { pluginManager } = useApp<PluginMsw>()
57
- const { getSchemas, getName } = useOperationManager()
58
- const operation = useOperation()
59
-
60
- const schemas = getSchemas(operation)
61
- const name = getName(operation, { type: 'function' })
62
- const responseName = pluginManager.resolveName({
63
- pluginKey: [pluginFakerName],
64
- name: schemas.response.name,
65
- type: 'type',
66
- })
67
-
68
- return <Template name={name} responseName={responseName} method={operation.method} path={new URLPath(operation.path)} />
69
- }
70
-
71
- type FileProps = {
72
- /**
73
- * This will make it possible to override the default behaviour.
74
- */
75
- templates?: typeof defaultTemplates
76
- }
77
-
78
- Mock.File = function ({ templates = defaultTemplates }: FileProps): ReactNode {
79
- const {
80
- pluginManager,
81
- plugin: {
82
- options: { extName },
83
- },
84
- } = useApp<PluginMsw>()
85
- const { getSchemas, getFile } = useOperationManager()
86
- const operation = useOperation()
87
-
88
- const schemas = getSchemas(operation)
89
- const file = getFile(operation)
90
- const fileFaker = getFile(operation, { pluginKey: [pluginFakerName] })
91
- const responseName = pluginManager.resolveName({
92
- pluginKey: [pluginFakerName],
93
- name: schemas.response.name,
94
- type: 'function',
95
- })
96
-
97
- const Template = templates.default
98
-
99
- return (
100
- <File<FileMeta> baseName={file.baseName} path={file.path} meta={file.meta}>
101
- <File.Import name={['http']} path={'msw'} />
102
- {fileFaker && responseName && <File.Import name={[responseName]} root={file.path} path={fileFaker.path} />}
103
- <Mock Template={Template} />
104
- </File>
105
- )
106
- }
107
-
108
- Mock.templates = defaultTemplates
@@ -1,2 +1,2 @@
1
1
  export { Mock } from './Mock.tsx'
2
- export { Operations } from './Operations.tsx'
2
+ export { Handlers } from './Handlers.tsx'
@@ -0,0 +1,32 @@
1
+ import { createReactGenerator } from '@kubb/plugin-oas'
2
+ import { useOperationManager } from '@kubb/plugin-oas/hooks'
3
+ import { File, useApp } from '@kubb/react'
4
+ import { Handlers } from '../components/Handlers.tsx'
5
+ import { pluginMswName } from '../plugin.ts'
6
+ import type { PluginMsw } from '../types'
7
+
8
+ export const handlersGenerator = createReactGenerator<PluginMsw>({
9
+ name: 'plugin-msw',
10
+ Operations({ operations }) {
11
+ const { pluginManager } = useApp<PluginMsw>()
12
+ const { getName, getFile } = useOperationManager()
13
+
14
+ const file = pluginManager.getFile({ name: 'handlers', extName: '.ts', pluginKey: [pluginMswName] })
15
+
16
+ const imports = operations.map((operation) => {
17
+ const operationFile = getFile(operation, { pluginKey: [pluginMswName] })
18
+ const operationName = getName(operation, { pluginKey: [pluginMswName], type: 'function' })
19
+
20
+ return <File.Import key={operationFile.path} name={[operationName]} root={file.path} path={operationFile.path} />
21
+ })
22
+
23
+ const handlers = operations.map((operation) => getName(operation, { type: 'function', pluginKey: [pluginMswName] }))
24
+
25
+ return (
26
+ <File baseName={file.baseName} path={file.path} meta={file.meta}>
27
+ {imports}
28
+ <Handlers name={'handlers'} handlers={handlers} />
29
+ </File>
30
+ )
31
+ },
32
+ })
@@ -0,0 +1,2 @@
1
+ export { mockGenerator } from './mockGenerator.tsx'
2
+ export { handlersGenerator } from './handlersGenerator.tsx'
@@ -0,0 +1,35 @@
1
+ import { pluginFakerName } from '@kubb/plugin-faker'
2
+ import { createReactGenerator } from '@kubb/plugin-oas'
3
+ import { useOperationManager } from '@kubb/plugin-oas/hooks'
4
+ import { pluginTsName } from '@kubb/plugin-ts'
5
+ import { File, useApp } from '@kubb/react'
6
+ import { Mock } from '../components'
7
+ import type { PluginMsw } from '../types'
8
+
9
+ export const mockGenerator = createReactGenerator<PluginMsw>({
10
+ name: 'plugin-msw',
11
+ Operation({ operation }) {
12
+ const { pluginManager, plugin } = useApp<PluginMsw>()
13
+ const { getSchemas, getName, getFile } = useOperationManager()
14
+
15
+ const name = getName(operation, { type: 'function' })
16
+ const file = getFile(operation)
17
+ const fakerFile = getFile(operation, { pluginKey: [pluginFakerName] })
18
+ const fakerSchemas = getSchemas(operation, { pluginKey: [pluginTsName] })
19
+
20
+ const responseName = pluginManager.resolveName({
21
+ pluginKey: [pluginFakerName],
22
+ name: fakerSchemas.response.name,
23
+ type: 'function',
24
+ })
25
+
26
+ return (
27
+ <File baseName={file.baseName} path={file.path} meta={file.meta}>
28
+ <File.Import name={['http']} path={'msw'} />
29
+ {fakerFile && responseName && <File.Import extName={plugin.output?.extName} name={[responseName]} root={file.path} path={fakerFile.path} />}
30
+
31
+ <Mock name={name} responseName={responseName} operation={operation} />
32
+ </File>
33
+ )
34
+ },
35
+ })
package/src/plugin.ts CHANGED
@@ -3,22 +3,20 @@ import path from 'node:path'
3
3
  import { FileManager, PluginManager, createPlugin } from '@kubb/core'
4
4
  import { camelCase } from '@kubb/core/transformers'
5
5
  import { renderTemplate } from '@kubb/core/utils'
6
- import { pluginOasName } from '@kubb/plugin-oas'
6
+ import { OperationGenerator, pluginOasName } from '@kubb/plugin-oas'
7
7
 
8
8
  import { pluginFakerName } from '@kubb/plugin-faker'
9
9
  import { pluginTsName } from '@kubb/plugin-ts'
10
10
 
11
- import { OperationGenerator } from './OperationGenerator.tsx'
12
- import { Mock, Operations } from './components/index.ts'
13
-
14
11
  import type { Plugin } from '@kubb/core'
15
12
  import type { PluginOas as SwaggerPluginOptions } from '@kubb/plugin-oas'
13
+ import { handlersGenerator, mockGenerator } from './generators'
16
14
  import type { PluginMsw } from './types.ts'
17
15
 
18
16
  export const pluginMswName = 'plugin-msw' satisfies PluginMsw['name']
19
17
 
20
18
  export const pluginMsw = createPlugin<PluginMsw>((options) => {
21
- const { output = { path: 'handlers' }, group, exclude = [], include, override = [], transformers = {}, templates } = options
19
+ const { output = { path: 'handlers' }, group, exclude = [], include, override = [], transformers = {}, handlers = false } = options
22
20
  const template = group?.output ? group.output : `${output.path}/{{tag}}Controller`
23
21
 
24
22
  return {
@@ -27,14 +25,7 @@ export const pluginMsw = createPlugin<PluginMsw>((options) => {
27
25
  exportType: 'barrelNamed',
28
26
  ...output,
29
27
  },
30
- options: {
31
- extName: output.extName,
32
- templates: {
33
- operations: Operations.templates,
34
- mock: Mock.templates,
35
- ...templates,
36
- },
37
- },
28
+ options: {},
38
29
  pre: [pluginOasName, pluginTsName, pluginFakerName],
39
30
  resolvePath(baseName, pathMode, options) {
40
31
  const root = path.resolve(this.config.root, this.config.output.path)
@@ -85,7 +76,7 @@ export const pluginMsw = createPlugin<PluginMsw>((options) => {
85
76
  mode,
86
77
  })
87
78
 
88
- const files = await operationGenerator.build()
79
+ const files = await operationGenerator.build(...[mockGenerator, handlers ? handlersGenerator : undefined].filter(Boolean))
89
80
  await this.addFile(...files)
90
81
 
91
82
  if (this.config.output.exportType) {
package/src/types.ts CHANGED
@@ -2,12 +2,6 @@ import type { Plugin, PluginFactoryOptions, ResolveNameParams } from '@kubb/core
2
2
  import type * as KubbFile from '@kubb/fs/types'
3
3
 
4
4
  import type { Exclude, Include, Override, ResolvePathOptions } from '@kubb/plugin-oas'
5
- import type { Mock, Operations } from './components/index.ts'
6
-
7
- type Templates = {
8
- operations?: typeof Operations.templates | false
9
- mock?: typeof Mock.templates | false
10
- }
11
5
 
12
6
  export type Options = {
13
7
  output?: {
@@ -72,14 +66,12 @@ export type Options = {
72
66
  name?: (name: ResolveNameParams['name'], type?: ResolveNameParams['type']) => string
73
67
  }
74
68
  /**
75
- * Make it possible to override one of the templates
69
+ * Create `handlers.ts` file with all handlers for all mocks.
70
+ * @default `false`
76
71
  */
77
- templates?: Partial<Templates>
78
- }
79
- type ResolvedOptions = {
80
- extName: KubbFile.Extname | undefined
81
- templates: NonNullable<Templates>
72
+ handlers?: boolean
82
73
  }
74
+ type ResolvedOptions = {}
83
75
 
84
76
  export type FileMeta = {
85
77
  pluginKey?: Plugin['key']
@@ -1,98 +0,0 @@
1
- import { URLPath } from '@kubb/core/utils';
2
- import { useApp, File } from '@kubb/react';
3
- import { pluginFakerName } from '@kubb/plugin-faker';
4
- import { useOperationManager, useOperation, useOperations } from '@kubb/plugin-oas/hooks';
5
- import { jsx, jsxs } from '@kubb/react/jsx-runtime';
6
-
7
- // src/components/Mock.tsx
8
- function Template({ name, method, path, responseName }) {
9
- return /* @__PURE__ */ jsx(File.Source, { name, isExportable: true, isIndexable: true, children: `
10
- export const ${name} = http.${method}('*${path.toURLPath()}', function handler(info) {
11
- return new Response(JSON.stringify(${responseName}()), {
12
- headers: {
13
- 'Content-Type': 'application/json',
14
- },
15
- })
16
- })
17
- ` });
18
- }
19
- var defaultTemplates = { default: Template };
20
- function Mock({ Template: Template3 = defaultTemplates.default }) {
21
- const { pluginManager } = useApp();
22
- const { getSchemas, getName } = useOperationManager();
23
- const operation = useOperation();
24
- const schemas = getSchemas(operation);
25
- const name = getName(operation, { type: "function" });
26
- const responseName = pluginManager.resolveName({
27
- pluginKey: [pluginFakerName],
28
- name: schemas.response.name,
29
- type: "type"
30
- });
31
- return /* @__PURE__ */ jsx(Template3, { name, responseName, method: operation.method, path: new URLPath(operation.path) });
32
- }
33
- Mock.File = function({ templates = defaultTemplates }) {
34
- const {
35
- pluginManager,
36
- plugin: {
37
- options: { extName }
38
- }
39
- } = useApp();
40
- const { getSchemas, getFile } = useOperationManager();
41
- const operation = useOperation();
42
- const schemas = getSchemas(operation);
43
- const file = getFile(operation);
44
- const fileFaker = getFile(operation, { pluginKey: [pluginFakerName] });
45
- const responseName = pluginManager.resolveName({
46
- pluginKey: [pluginFakerName],
47
- name: schemas.response.name,
48
- type: "function"
49
- });
50
- const Template3 = templates.default;
51
- return /* @__PURE__ */ jsxs(File, { baseName: file.baseName, path: file.path, meta: file.meta, children: [
52
- /* @__PURE__ */ jsx(File.Import, { name: ["http"], path: "msw" }),
53
- fileFaker && responseName && /* @__PURE__ */ jsx(File.Import, { name: [responseName], root: file.path, path: fileFaker.path }),
54
- /* @__PURE__ */ jsx(Mock, { Template: Template3 })
55
- ] });
56
- };
57
- Mock.templates = defaultTemplates;
58
- function Template2({ name, handlers }) {
59
- return /* @__PURE__ */ jsx(File.Source, { name, isExportable: true, isIndexable: true, children: `export const ${name} = ${JSON.stringify(handlers).replaceAll(`"`, "")} as const` });
60
- }
61
- function RootTemplate({ children }) {
62
- const {
63
- pluginManager,
64
- plugin: { key: pluginKey }
65
- } = useApp();
66
- const { getName, getFile } = useOperationManager();
67
- const file = pluginManager.getFile({ name: "handlers", extName: ".ts", pluginKey });
68
- const operations = useOperations();
69
- const imports = operations.map((operation) => {
70
- const operationFile = getFile(operation, { pluginKey });
71
- const operationName = getName(operation, { pluginKey, type: "function" });
72
- return /* @__PURE__ */ jsx(File.Import, { name: [operationName], root: file.path, path: operationFile.path }, operationFile.path);
73
- }).filter(Boolean);
74
- return /* @__PURE__ */ jsxs(File, { baseName: file.baseName, path: file.path, meta: file.meta, children: [
75
- imports,
76
- children
77
- ] });
78
- }
79
- var defaultTemplates2 = { default: Template2, root: RootTemplate };
80
- function Operations({ Template: Template3 = defaultTemplates2.default }) {
81
- const {
82
- plugin: { key: pluginKey }
83
- } = useApp();
84
- const operations = useOperations();
85
- const { getName } = useOperationManager();
86
- return /* @__PURE__ */ jsx(Template3, { name: "handlers", handlers: operations.map((operation) => getName(operation, { type: "function", pluginKey })) });
87
- }
88
- Operations.File = function(props) {
89
- const templates = { ...defaultTemplates2, ...props.templates };
90
- const Template3 = templates.default;
91
- const RootTemplate2 = templates.root;
92
- return /* @__PURE__ */ jsx(RootTemplate2, { children: /* @__PURE__ */ jsx(Operations, { Template: Template3 }) });
93
- };
94
- Operations.templates = defaultTemplates2;
95
-
96
- export { Mock, Operations };
97
- //# sourceMappingURL=chunk-3KHLTEUD.js.map
98
- //# sourceMappingURL=chunk-3KHLTEUD.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Mock.tsx","../src/components/Operations.tsx"],"names":["Template","jsx","File","useApp","useOperationManager","jsxs","defaultTemplates","RootTemplate"],"mappings":";;;;;;;AA6BA,SAAS,SAAS,EAAE,IAAA,EAAM,MAAQ,EAAA,IAAA,EAAM,cAA0C,EAAA;AAChF,EACE,uBAAA,GAAA,CAAC,KAAK,MAAL,EAAA,EAAY,MAAY,YAAY,EAAA,IAAA,EAAC,aAAW,IAC9C,EAAA,QAAA,EAAA,CAAA;AAAA,eAAA,EACU,IAAI,CAAW,QAAA,EAAA,MAAM,CAAM,GAAA,EAAA,IAAA,CAAK,WAAW,CAAA;AAAA,uCAAA,EACnB,YAAY,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOjD,CAAA,EAAA,CAAA,CAAA;AAEJ,CAAA;AAEA,IAAM,gBAAA,GAAmB,EAAE,OAAA,EAAS,QAAS,EAAA,CAAA;AAStC,SAAS,KAAK,EAAE,QAAA,EAAAA,SAAW,GAAA,gBAAA,CAAiB,SAA6B,EAAA;AAC9E,EAAM,MAAA,EAAE,aAAc,EAAA,GAAI,MAAkB,EAAA,CAAA;AAC5C,EAAA,MAAM,EAAE,UAAA,EAAY,OAAQ,EAAA,GAAI,mBAAoB,EAAA,CAAA;AACpD,EAAA,MAAM,YAAY,YAAa,EAAA,CAAA;AAE/B,EAAM,MAAA,OAAA,GAAU,WAAW,SAAS,CAAA,CAAA;AACpC,EAAA,MAAM,OAAO,OAAQ,CAAA,SAAA,EAAW,EAAE,IAAA,EAAM,YAAY,CAAA,CAAA;AACpD,EAAM,MAAA,YAAA,GAAe,cAAc,WAAY,CAAA;AAAA,IAC7C,SAAA,EAAW,CAAC,eAAe,CAAA;AAAA,IAC3B,IAAA,EAAM,QAAQ,QAAS,CAAA,IAAA;AAAA,IACvB,IAAM,EAAA,MAAA;AAAA,GACP,CAAA,CAAA;AAED,EAAA,uBAAQA,GAAAA,CAAAA,SAAAA,EAAA,EAAS,IAAA,EAAY,YAA4B,EAAA,MAAA,EAAQ,SAAU,CAAA,MAAA,EAAQ,IAAM,EAAA,IAAI,OAAQ,CAAA,SAAA,CAAU,IAAI,CAAG,EAAA,CAAA,CAAA;AACxH,CAAA;AASA,IAAA,CAAK,IAAO,GAAA,SAAU,EAAE,SAAA,GAAY,kBAA0C,EAAA;AAC5E,EAAM,MAAA;AAAA,IACJ,aAAA;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,OAAA,EAAS,EAAE,OAAQ,EAAA;AAAA,KACrB;AAAA,MACE,MAAkB,EAAA,CAAA;AACtB,EAAA,MAAM,EAAE,UAAA,EAAY,OAAQ,EAAA,GAAI,mBAAoB,EAAA,CAAA;AACpD,EAAA,MAAM,YAAY,YAAa,EAAA,CAAA;AAE/B,EAAM,MAAA,OAAA,GAAU,WAAW,SAAS,CAAA,CAAA;AACpC,EAAM,MAAA,IAAA,GAAO,QAAQ,SAAS,CAAA,CAAA;AAC9B,EAAM,MAAA,SAAA,GAAY,QAAQ,SAAW,EAAA,EAAE,WAAW,CAAC,eAAe,GAAG,CAAA,CAAA;AACrE,EAAM,MAAA,YAAA,GAAe,cAAc,WAAY,CAAA;AAAA,IAC7C,SAAA,EAAW,CAAC,eAAe,CAAA;AAAA,IAC3B,IAAA,EAAM,QAAQ,QAAS,CAAA,IAAA;AAAA,IACvB,IAAM,EAAA,UAAA;AAAA,GACP,CAAA,CAAA;AAED,EAAA,MAAMA,YAAW,SAAU,CAAA,OAAA,CAAA;AAE3B,EACE,uBAAA,IAAA,CAAC,IAAe,EAAA,EAAA,QAAA,EAAU,IAAK,CAAA,QAAA,EAAU,MAAM,IAAK,CAAA,IAAA,EAAM,IAAM,EAAA,IAAA,CAAK,IACnE,EAAA,QAAA,EAAA;AAAA,oBAAC,GAAA,CAAA,IAAA,CAAK,QAAL,EAAY,IAAA,EAAM,CAAC,MAAM,CAAA,EAAG,MAAM,KAAO,EAAA,CAAA;AAAA,IACzC,SAAa,IAAA,YAAA,oBAAiB,GAAA,CAAA,IAAA,CAAK,QAAL,EAAY,IAAA,EAAM,CAAC,YAAY,GAAG,IAAM,EAAA,IAAA,CAAK,IAAM,EAAA,IAAA,EAAM,UAAU,IAAM,EAAA,CAAA;AAAA,oBACxG,GAAA,CAAC,IAAK,EAAA,EAAA,QAAA,EAAUA,SAAU,EAAA,CAAA;AAAA,GAC5B,EAAA,CAAA,CAAA;AAEJ,CAAA,CAAA;AAEA,IAAA,CAAK,SAAY,GAAA,gBAAA,CAAA;AC5FjB,SAASA,SAAS,CAAA,EAAE,IAAM,EAAA,QAAA,EAAsC,EAAA;AAC9D,EAAO,uBAAAC,IAACC,IAAK,CAAA,MAAA,EAAL,EAAY,IAAY,EAAA,YAAA,EAAY,MAAC,WAAW,EAAA,IAAA,EAAE,0BAAgB,IAAI,CAAA,GAAA,EAAM,KAAK,SAAU,CAAA,QAAQ,EAAE,UAAW,CAAA,CAAA,CAAA,CAAA,EAAK,EAAE,CAAC,CAAY,SAAA,CAAA,EAAA,CAAA,CAAA;AAC9I,CAAA;AAMA,SAAS,YAAA,CAAa,EAAE,QAAA,EAAiC,EAAA;AACvD,EAAM,MAAA;AAAA,IACJ,aAAA;AAAA,IACA,MAAA,EAAQ,EAAE,GAAA,EAAK,SAAU,EAAA;AAAA,MACvBC,MAAkB,EAAA,CAAA;AAEtB,EAAA,MAAM,EAAE,OAAA,EAAS,OAAQ,EAAA,GAAIC,mBAAoB,EAAA,CAAA;AAEjD,EAAM,MAAA,IAAA,GAAO,cAAc,OAAQ,CAAA,EAAE,MAAM,UAAY,EAAA,OAAA,EAAS,KAAO,EAAA,SAAA,EAAW,CAAA,CAAA;AAClF,EAAA,MAAM,aAAa,aAAc,EAAA,CAAA;AAEjC,EAAA,MAAM,OAAU,GAAA,UAAA,CACb,GAAI,CAAA,CAAC,SAAc,KAAA;AAClB,IAAA,MAAM,aAAgB,GAAA,OAAA,CAAQ,SAAW,EAAA,EAAE,WAAW,CAAA,CAAA;AACtD,IAAA,MAAM,gBAAgB,OAAQ,CAAA,SAAA,EAAW,EAAE,SAAW,EAAA,IAAA,EAAM,YAAY,CAAA,CAAA;AAExE,IAAA,uBAAOH,GAACC,CAAAA,IAAAA,CAAK,MAAL,EAAA,EAAqC,MAAM,CAAC,aAAa,CAAG,EAAA,IAAA,EAAM,KAAK,IAAM,EAAA,IAAA,EAAM,aAAc,CAAA,IAAA,EAAA,EAAhF,cAAc,IAAwE,CAAA,CAAA;AAAA,GAChH,CACA,CAAA,MAAA,CAAO,OAAO,CAAA,CAAA;AAEjB,EAAA,uBACEG,IAAAA,CAACH,IAAA,EAAA,EAAe,QAAU,EAAA,IAAA,CAAK,QAAU,EAAA,IAAA,EAAM,IAAK,CAAA,IAAA,EAAM,IAAM,EAAA,IAAA,CAAK,IAClE,EAAA,QAAA,EAAA;AAAA,IAAA,OAAA;AAAA,IACA,QAAA;AAAA,GACH,EAAA,CAAA,CAAA;AAEJ,CAAA;AAEA,IAAMI,iBAAmB,GAAA,EAAE,OAASN,EAAAA,SAAAA,EAAU,MAAM,YAAa,EAAA,CAAA;AAW1D,SAAS,WAAW,EAAE,QAAA,EAAAA,SAAWM,GAAAA,iBAAAA,CAAiB,SAA6B,EAAA;AACpF,EAAM,MAAA;AAAA,IACJ,MAAA,EAAQ,EAAE,GAAA,EAAK,SAAU,EAAA;AAAA,MACvBH,MAAkB,EAAA,CAAA;AAEtB,EAAA,MAAM,aAAa,aAAc,EAAA,CAAA;AACjC,EAAM,MAAA,EAAE,OAAQ,EAAA,GAAIC,mBAAoB,EAAA,CAAA;AAExC,EAAA,uBAAOH,GAACD,CAAAA,SAAAA,EAAA,EAAS,IAAK,EAAA,UAAA,EAAW,UAAU,UAAW,CAAA,GAAA,CAAI,CAAC,SAAc,KAAA,OAAA,CAAQ,WAAW,EAAE,IAAA,EAAM,YAAY,SAAU,EAAC,CAAC,CAAG,EAAA,CAAA,CAAA;AACjI,CAAA;AASA,UAAW,CAAA,IAAA,GAAO,SAAU,KAA4B,EAAA;AACtD,EAAA,MAAM,YAAY,EAAE,GAAGM,iBAAkB,EAAA,GAAG,MAAM,SAAU,EAAA,CAAA;AAE5D,EAAA,MAAMN,YAAW,SAAU,CAAA,OAAA,CAAA;AAC3B,EAAA,MAAMO,gBAAe,SAAU,CAAA,IAAA,CAAA;AAE/B,EACE,uBAAAN,IAACM,aAAA,EAAA,EACC,0BAAAN,GAAC,CAAA,UAAA,EAAA,EAAW,QAAUD,EAAAA,SAAAA,EAAU,CAClC,EAAA,CAAA,CAAA;AAEJ,CAAA,CAAA;AAEA,UAAA,CAAW,SAAYM,GAAAA,iBAAAA","file":"chunk-3KHLTEUD.js","sourcesContent":["import { URLPath } from '@kubb/core/utils'\nimport { File, useApp } from '@kubb/react'\nimport { pluginFakerName } from '@kubb/plugin-faker'\nimport { useOperation, useOperationManager } from '@kubb/plugin-oas/hooks'\n\nimport type { HttpMethod } from '@kubb/oas'\nimport type { ReactNode } from 'react'\nimport type { FileMeta, PluginMsw } from '../types.ts'\n\ntype TemplateProps = {\n /**\n * Name of the function\n */\n name: string\n /**\n * Method of the current operation, see useOperation.\n */\n method: HttpMethod\n /**\n * Path of the mock\n */\n path: URLPath\n /**\n * Name of the import for the mock(this is a function).\n * @example createPet\n */\n responseName: string\n}\n\nfunction Template({ name, method, path, responseName }: TemplateProps): ReactNode {\n return (\n <File.Source name={name} isExportable isIndexable>\n {`\n export const ${name} = http.${method}('*${path.toURLPath()}', function handler(info) {\n return new Response(JSON.stringify(${responseName}()), {\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n })\n `}\n </File.Source>\n )\n}\n\nconst defaultTemplates = { default: Template } as const\n\ntype Props = {\n /**\n * This will make it possible to override the default behaviour.\n */\n Template?: React.ComponentType<React.ComponentProps<typeof Template>>\n}\n\nexport function Mock({ Template = defaultTemplates.default }: Props): ReactNode {\n const { pluginManager } = useApp<PluginMsw>()\n const { getSchemas, getName } = useOperationManager()\n const operation = useOperation()\n\n const schemas = getSchemas(operation)\n const name = getName(operation, { type: 'function' })\n const responseName = pluginManager.resolveName({\n pluginKey: [pluginFakerName],\n name: schemas.response.name,\n type: 'type',\n })\n\n return <Template name={name} responseName={responseName} method={operation.method} path={new URLPath(operation.path)} />\n}\n\ntype FileProps = {\n /**\n * This will make it possible to override the default behaviour.\n */\n templates?: typeof defaultTemplates\n}\n\nMock.File = function ({ templates = defaultTemplates }: FileProps): ReactNode {\n const {\n pluginManager,\n plugin: {\n options: { extName },\n },\n } = useApp<PluginMsw>()\n const { getSchemas, getFile } = useOperationManager()\n const operation = useOperation()\n\n const schemas = getSchemas(operation)\n const file = getFile(operation)\n const fileFaker = getFile(operation, { pluginKey: [pluginFakerName] })\n const responseName = pluginManager.resolveName({\n pluginKey: [pluginFakerName],\n name: schemas.response.name,\n type: 'function',\n })\n\n const Template = templates.default\n\n return (\n <File<FileMeta> baseName={file.baseName} path={file.path} meta={file.meta}>\n <File.Import name={['http']} path={'msw'} />\n {fileFaker && responseName && <File.Import name={[responseName]} root={file.path} path={fileFaker.path} />}\n <Mock Template={Template} />\n </File>\n )\n}\n\nMock.templates = defaultTemplates\n","import { useOperationManager, useOperations } from '@kubb/plugin-oas/hooks'\nimport { File, useApp } from '@kubb/react'\n\nimport type { KubbNode } from '@kubb/react/types'\nimport type { ReactNode } from 'react'\nimport type { FileMeta, PluginMsw } from '../types.ts'\n\ntype TemplateProps = {\n /**\n * Name of the function\n */\n name: string\n handlers: string[]\n}\n\nfunction Template({ name, handlers }: TemplateProps): ReactNode {\n return <File.Source name={name} isExportable isIndexable>{`export const ${name} = ${JSON.stringify(handlers).replaceAll(`\"`, '')} as const`}</File.Source>\n}\n\ntype ParserTemplateProps = {\n children?: React.ReactNode\n}\n\nfunction RootTemplate({ children }: ParserTemplateProps) {\n const {\n pluginManager,\n plugin: { key: pluginKey },\n } = useApp<PluginMsw>()\n\n const { getName, getFile } = useOperationManager()\n\n const file = pluginManager.getFile({ name: 'handlers', extName: '.ts', pluginKey })\n const operations = useOperations()\n\n const imports = operations\n .map((operation) => {\n const operationFile = getFile(operation, { pluginKey })\n const operationName = getName(operation, { pluginKey, type: 'function' })\n\n return <File.Import key={operationFile.path} name={[operationName]} root={file.path} path={operationFile.path} />\n })\n .filter(Boolean)\n\n return (\n <File<FileMeta> baseName={file.baseName} path={file.path} meta={file.meta}>\n {imports}\n {children}\n </File>\n )\n}\n\nconst defaultTemplates = { default: Template, root: RootTemplate } as const\n\ntype Templates = Partial<typeof defaultTemplates>\n\ntype Props = {\n /**\n * This will make it possible to override the default behaviour.\n */\n Template?: React.ComponentType<React.ComponentProps<typeof Template>>\n}\n\nexport function Operations({ Template = defaultTemplates.default }: Props): ReactNode {\n const {\n plugin: { key: pluginKey },\n } = useApp<PluginMsw>()\n\n const operations = useOperations()\n const { getName } = useOperationManager()\n\n return <Template name=\"handlers\" handlers={operations.map((operation) => getName(operation, { type: 'function', pluginKey }))} />\n}\n\ntype FileProps = {\n /**\n * This will make it possible to override the default behaviour.\n */\n templates?: Templates\n}\n\nOperations.File = function (props: FileProps): KubbNode {\n const templates = { ...defaultTemplates, ...props.templates }\n\n const Template = templates.default\n const RootTemplate = templates.root\n\n return (\n <RootTemplate>\n <Operations Template={Template} />\n </RootTemplate>\n )\n}\n\nOperations.templates = defaultTemplates\n"]}
@@ -1,101 +0,0 @@
1
- 'use strict';
2
-
3
- var utils = require('@kubb/core/utils');
4
- var react = require('@kubb/react');
5
- var pluginFaker = require('@kubb/plugin-faker');
6
- var hooks = require('@kubb/plugin-oas/hooks');
7
- var jsxRuntime = require('@kubb/react/jsx-runtime');
8
-
9
- // src/components/Mock.tsx
10
- function Template({ name, method, path, responseName }) {
11
- return /* @__PURE__ */ jsxRuntime.jsx(react.File.Source, { name, isExportable: true, isIndexable: true, children: `
12
- export const ${name} = http.${method}('*${path.toURLPath()}', function handler(info) {
13
- return new Response(JSON.stringify(${responseName}()), {
14
- headers: {
15
- 'Content-Type': 'application/json',
16
- },
17
- })
18
- })
19
- ` });
20
- }
21
- var defaultTemplates = { default: Template };
22
- function Mock({ Template: Template3 = defaultTemplates.default }) {
23
- const { pluginManager } = react.useApp();
24
- const { getSchemas, getName } = hooks.useOperationManager();
25
- const operation = hooks.useOperation();
26
- const schemas = getSchemas(operation);
27
- const name = getName(operation, { type: "function" });
28
- const responseName = pluginManager.resolveName({
29
- pluginKey: [pluginFaker.pluginFakerName],
30
- name: schemas.response.name,
31
- type: "type"
32
- });
33
- return /* @__PURE__ */ jsxRuntime.jsx(Template3, { name, responseName, method: operation.method, path: new utils.URLPath(operation.path) });
34
- }
35
- Mock.File = function({ templates = defaultTemplates }) {
36
- const {
37
- pluginManager,
38
- plugin: {
39
- options: { extName }
40
- }
41
- } = react.useApp();
42
- const { getSchemas, getFile } = hooks.useOperationManager();
43
- const operation = hooks.useOperation();
44
- const schemas = getSchemas(operation);
45
- const file = getFile(operation);
46
- const fileFaker = getFile(operation, { pluginKey: [pluginFaker.pluginFakerName] });
47
- const responseName = pluginManager.resolveName({
48
- pluginKey: [pluginFaker.pluginFakerName],
49
- name: schemas.response.name,
50
- type: "function"
51
- });
52
- const Template3 = templates.default;
53
- return /* @__PURE__ */ jsxRuntime.jsxs(react.File, { baseName: file.baseName, path: file.path, meta: file.meta, children: [
54
- /* @__PURE__ */ jsxRuntime.jsx(react.File.Import, { name: ["http"], path: "msw" }),
55
- fileFaker && responseName && /* @__PURE__ */ jsxRuntime.jsx(react.File.Import, { name: [responseName], root: file.path, path: fileFaker.path }),
56
- /* @__PURE__ */ jsxRuntime.jsx(Mock, { Template: Template3 })
57
- ] });
58
- };
59
- Mock.templates = defaultTemplates;
60
- function Template2({ name, handlers }) {
61
- return /* @__PURE__ */ jsxRuntime.jsx(react.File.Source, { name, isExportable: true, isIndexable: true, children: `export const ${name} = ${JSON.stringify(handlers).replaceAll(`"`, "")} as const` });
62
- }
63
- function RootTemplate({ children }) {
64
- const {
65
- pluginManager,
66
- plugin: { key: pluginKey }
67
- } = react.useApp();
68
- const { getName, getFile } = hooks.useOperationManager();
69
- const file = pluginManager.getFile({ name: "handlers", extName: ".ts", pluginKey });
70
- const operations = hooks.useOperations();
71
- const imports = operations.map((operation) => {
72
- const operationFile = getFile(operation, { pluginKey });
73
- const operationName = getName(operation, { pluginKey, type: "function" });
74
- return /* @__PURE__ */ jsxRuntime.jsx(react.File.Import, { name: [operationName], root: file.path, path: operationFile.path }, operationFile.path);
75
- }).filter(Boolean);
76
- return /* @__PURE__ */ jsxRuntime.jsxs(react.File, { baseName: file.baseName, path: file.path, meta: file.meta, children: [
77
- imports,
78
- children
79
- ] });
80
- }
81
- var defaultTemplates2 = { default: Template2, root: RootTemplate };
82
- function Operations({ Template: Template3 = defaultTemplates2.default }) {
83
- const {
84
- plugin: { key: pluginKey }
85
- } = react.useApp();
86
- const operations = hooks.useOperations();
87
- const { getName } = hooks.useOperationManager();
88
- return /* @__PURE__ */ jsxRuntime.jsx(Template3, { name: "handlers", handlers: operations.map((operation) => getName(operation, { type: "function", pluginKey })) });
89
- }
90
- Operations.File = function(props) {
91
- const templates = { ...defaultTemplates2, ...props.templates };
92
- const Template3 = templates.default;
93
- const RootTemplate2 = templates.root;
94
- return /* @__PURE__ */ jsxRuntime.jsx(RootTemplate2, { children: /* @__PURE__ */ jsxRuntime.jsx(Operations, { Template: Template3 }) });
95
- };
96
- Operations.templates = defaultTemplates2;
97
-
98
- exports.Mock = Mock;
99
- exports.Operations = Operations;
100
- //# sourceMappingURL=chunk-BD7UJBXM.cjs.map
101
- //# sourceMappingURL=chunk-BD7UJBXM.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Mock.tsx","../src/components/Operations.tsx"],"names":["jsx","File","Template","useApp","useOperationManager","useOperation","pluginFakerName","URLPath","jsxs","useOperations","defaultTemplates","RootTemplate"],"mappings":"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","file":"chunk-BD7UJBXM.cjs","sourcesContent":["import { URLPath } from '@kubb/core/utils'\nimport { File, useApp } from '@kubb/react'\nimport { pluginFakerName } from '@kubb/plugin-faker'\nimport { useOperation, useOperationManager } from '@kubb/plugin-oas/hooks'\n\nimport type { HttpMethod } from '@kubb/oas'\nimport type { ReactNode } from 'react'\nimport type { FileMeta, PluginMsw } from '../types.ts'\n\ntype TemplateProps = {\n /**\n * Name of the function\n */\n name: string\n /**\n * Method of the current operation, see useOperation.\n */\n method: HttpMethod\n /**\n * Path of the mock\n */\n path: URLPath\n /**\n * Name of the import for the mock(this is a function).\n * @example createPet\n */\n responseName: string\n}\n\nfunction Template({ name, method, path, responseName }: TemplateProps): ReactNode {\n return (\n <File.Source name={name} isExportable isIndexable>\n {`\n export const ${name} = http.${method}('*${path.toURLPath()}', function handler(info) {\n return new Response(JSON.stringify(${responseName}()), {\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n })\n `}\n </File.Source>\n )\n}\n\nconst defaultTemplates = { default: Template } as const\n\ntype Props = {\n /**\n * This will make it possible to override the default behaviour.\n */\n Template?: React.ComponentType<React.ComponentProps<typeof Template>>\n}\n\nexport function Mock({ Template = defaultTemplates.default }: Props): ReactNode {\n const { pluginManager } = useApp<PluginMsw>()\n const { getSchemas, getName } = useOperationManager()\n const operation = useOperation()\n\n const schemas = getSchemas(operation)\n const name = getName(operation, { type: 'function' })\n const responseName = pluginManager.resolveName({\n pluginKey: [pluginFakerName],\n name: schemas.response.name,\n type: 'type',\n })\n\n return <Template name={name} responseName={responseName} method={operation.method} path={new URLPath(operation.path)} />\n}\n\ntype FileProps = {\n /**\n * This will make it possible to override the default behaviour.\n */\n templates?: typeof defaultTemplates\n}\n\nMock.File = function ({ templates = defaultTemplates }: FileProps): ReactNode {\n const {\n pluginManager,\n plugin: {\n options: { extName },\n },\n } = useApp<PluginMsw>()\n const { getSchemas, getFile } = useOperationManager()\n const operation = useOperation()\n\n const schemas = getSchemas(operation)\n const file = getFile(operation)\n const fileFaker = getFile(operation, { pluginKey: [pluginFakerName] })\n const responseName = pluginManager.resolveName({\n pluginKey: [pluginFakerName],\n name: schemas.response.name,\n type: 'function',\n })\n\n const Template = templates.default\n\n return (\n <File<FileMeta> baseName={file.baseName} path={file.path} meta={file.meta}>\n <File.Import name={['http']} path={'msw'} />\n {fileFaker && responseName && <File.Import name={[responseName]} root={file.path} path={fileFaker.path} />}\n <Mock Template={Template} />\n </File>\n )\n}\n\nMock.templates = defaultTemplates\n","import { useOperationManager, useOperations } from '@kubb/plugin-oas/hooks'\nimport { File, useApp } from '@kubb/react'\n\nimport type { KubbNode } from '@kubb/react/types'\nimport type { ReactNode } from 'react'\nimport type { FileMeta, PluginMsw } from '../types.ts'\n\ntype TemplateProps = {\n /**\n * Name of the function\n */\n name: string\n handlers: string[]\n}\n\nfunction Template({ name, handlers }: TemplateProps): ReactNode {\n return <File.Source name={name} isExportable isIndexable>{`export const ${name} = ${JSON.stringify(handlers).replaceAll(`\"`, '')} as const`}</File.Source>\n}\n\ntype ParserTemplateProps = {\n children?: React.ReactNode\n}\n\nfunction RootTemplate({ children }: ParserTemplateProps) {\n const {\n pluginManager,\n plugin: { key: pluginKey },\n } = useApp<PluginMsw>()\n\n const { getName, getFile } = useOperationManager()\n\n const file = pluginManager.getFile({ name: 'handlers', extName: '.ts', pluginKey })\n const operations = useOperations()\n\n const imports = operations\n .map((operation) => {\n const operationFile = getFile(operation, { pluginKey })\n const operationName = getName(operation, { pluginKey, type: 'function' })\n\n return <File.Import key={operationFile.path} name={[operationName]} root={file.path} path={operationFile.path} />\n })\n .filter(Boolean)\n\n return (\n <File<FileMeta> baseName={file.baseName} path={file.path} meta={file.meta}>\n {imports}\n {children}\n </File>\n )\n}\n\nconst defaultTemplates = { default: Template, root: RootTemplate } as const\n\ntype Templates = Partial<typeof defaultTemplates>\n\ntype Props = {\n /**\n * This will make it possible to override the default behaviour.\n */\n Template?: React.ComponentType<React.ComponentProps<typeof Template>>\n}\n\nexport function Operations({ Template = defaultTemplates.default }: Props): ReactNode {\n const {\n plugin: { key: pluginKey },\n } = useApp<PluginMsw>()\n\n const operations = useOperations()\n const { getName } = useOperationManager()\n\n return <Template name=\"handlers\" handlers={operations.map((operation) => getName(operation, { type: 'function', pluginKey }))} />\n}\n\ntype FileProps = {\n /**\n * This will make it possible to override the default behaviour.\n */\n templates?: Templates\n}\n\nOperations.File = function (props: FileProps): KubbNode {\n const templates = { ...defaultTemplates, ...props.templates }\n\n const Template = templates.default\n const RootTemplate = templates.root\n\n return (\n <RootTemplate>\n <Operations Template={Template} />\n </RootTemplate>\n )\n}\n\nOperations.templates = defaultTemplates\n"]}