@sdk-it/vite 0.45.0 → 0.46.1

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.
package/README.md ADDED
@@ -0,0 +1,57 @@
1
+ # @sdk-it/vite
2
+
3
+ Generate a TypeScript SDK during Vite development and builds.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install --save-dev @sdk-it/vite @sdk-it/spec @sdk-it/typescript
9
+ ```
10
+
11
+ ## Use an OpenAPI file
12
+
13
+ ```typescript
14
+ import { defineConfig } from 'vite';
15
+
16
+ import sdkIt from '@sdk-it/vite';
17
+
18
+ export default defineConfig({
19
+ plugins: [
20
+ sdkIt('./openapi.yaml', {
21
+ output: './src/sdk',
22
+ name: 'Example',
23
+ mode: 'minimal',
24
+ }),
25
+ ],
26
+ });
27
+ ```
28
+
29
+ Relative paths are resolved from Vite's project root. Local specification
30
+ files are watched during development, and generation also runs at build
31
+ start. You can pass an OpenAPI object or a function that resolves to an
32
+ OpenAPI object or local path instead.
33
+
34
+ ## Use a TypeScript backend project
35
+
36
+ First initialize the SDK-IT project workflow:
37
+
38
+ ```bash
39
+ npx @sdk-it/cli@latest init
40
+ ```
41
+
42
+ Then add the plugin without an OpenAPI argument:
43
+
44
+ ```typescript
45
+ import { defineConfig } from 'vite';
46
+
47
+ import sdkIt from '@sdk-it/vite';
48
+
49
+ export default defineConfig({
50
+ plugins: [sdkIt()],
51
+ });
52
+ ```
53
+
54
+ Project mode loads the SDK-IT project config and uses the same generation
55
+ path as the CLI. Install `@sdk-it/cli` alongside the plugin for this mode.
56
+ Pass `sdkIt({ config: 'config/sdk-it.ts' })` to use a non-default config
57
+ location.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,MAAM,CAAC;AAGnC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,KAAK,oBAAoB,EAAiB,MAAM,cAAc,CAAC;AAExE,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,KAAK,eAAe,GAAG,MACnB,MAAM,GACN,aAAa,GACb,OAAO,CAAC,MAAM,GAAG,aAAa,CAAC,CAAC;AACpC,MAAM,CAAC,OAAO,UAAU,KAAK,IAAI,MAAM,CAAC;AACxC,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAAC;AACrE,MAAM,CAAC,OAAO,UAAU,KAAK,CAC3B,OAAO,EAAE,aAAa,GAAG,MAAM,GAAG,eAAe,EACjD,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,MAAM,CAAC;AAGnC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,KAAK,oBAAoB,EAAiB,MAAM,cAAc,CAAC;AAExE,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,KAAK,eAAe,GAAG,MACrB,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,MAAM,GAAG,aAAa,CAAC,CAAC;AAC3D,MAAM,CAAC,OAAO,UAAU,KAAK,IAAI,MAAM,CAAC;AACxC,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAAC;AACrE,MAAM,CAAC,OAAO,UAAU,KAAK,CAC3B,OAAO,EAAE,aAAa,GAAG,MAAM,GAAG,eAAe,EACjD,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAAC"}
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts", "../src/project.ts"],
4
- "sourcesContent": ["import chalk from 'chalk';\nimport { createHash } from 'node:crypto';\nimport { readFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport type { OpenAPIObject } from 'openapi3-ts/oas31';\nimport { type Plugin } from 'vite';\n\nimport { loadSpec } from '@sdk-it/spec';\nimport { generate } from '@sdk-it/typescript';\n\nimport { type ProjectPluginOptions, projectPlugin } from './project.ts';\n\ntype Settings = Parameters<typeof generate>[1];\ntype OpenapiFunction = () =>\n | string\n | OpenAPIObject\n | Promise<string | OpenAPIObject>;\nexport default function sdkIt(): Plugin;\nexport default function sdkIt(options: ProjectPluginOptions): Plugin;\nexport default function sdkIt(\n openapi: OpenAPIObject | string | OpenapiFunction,\n settings: Settings,\n): Plugin;\nexport default function sdkIt(\n openapi?: OpenAPIObject | string | OpenapiFunction | ProjectPluginOptions,\n settings?: Settings,\n): Plugin {\n if (openapi === undefined || isProjectPluginOptions(openapi)) {\n return {\n name: 'sdk-it',\n ...projectPlugin(openapi),\n };\n }\n return {\n name: 'sdk-it',\n ...(typeof openapi === 'function'\n ? functionPlugin(openapi, settings!)\n : typeof openapi === 'string'\n ? filePlugin(openapi, settings!)\n : specPlugin(openapi, settings!)),\n };\n}\n\nfunction isProjectPluginOptions(\n input: OpenAPIObject | string | OpenapiFunction | ProjectPluginOptions,\n): input is ProjectPluginOptions {\n return typeof input === 'object' && input !== null && !('openapi' in input);\n}\n\nfunction functionPlugin(\n openapi: OpenapiFunction,\n settings: Settings,\n): Omit<Plugin, 'name'> {\n let delegatePlugin!:\n | ReturnType<typeof specPlugin>\n | ReturnType<typeof filePlugin>;\n\n return {\n async configResolved(config) {\n // Resolve the function once\n const resolved = await openapi();\n\n // Create the appropriate delegate plugin based on the resolved type\n delegatePlugin =\n typeof resolved === 'string'\n ? filePlugin(resolved, settings)\n : specPlugin(resolved, settings);\n\n return (delegatePlugin.configResolved as any)?.(config);\n },\n configureServer(server) {\n return (delegatePlugin.configureServer as any)?.(server);\n },\n async buildStart(options) {\n return (delegatePlugin.buildStart as any)?.(options);\n },\n };\n}\n\nfunction filePlugin(openapi: string, settings: Settings): Omit<Plugin, 'name'> {\n let watchPath: string | null = null;\n let sourceRef: string | null = null;\n\n const generateIfNeeded = async (ref: string) => {\n const hash = await hashFile(watchPath || ref);\n const key = `${hash}|${settings.output}`;\n return cachedGeneration(key, async () => {\n console.log(`${chalk.blue('SDKIT')}: Generating SDK.`);\n const spec = await loadSpec(ref);\n await generate(spec, settings);\n console.log(`${chalk.blue('SDKIT')}: SDK generated successfully.`);\n });\n };\n\n return {\n configureServer(server) {\n if (!sourceRef) return;\n\n if (!watchPath) return;\n console.log(\n `${chalk.blue('SDKIT')}: Watching for spec changes in`,\n watchPath,\n );\n server.watcher.add(watchPath);\n server.watcher.on('change', async (file) => {\n if (file === watchPath) {\n console.log(`${chalk.blue('SDKIT')}: OpenAPI spec changed`, file);\n await generateIfNeeded(sourceRef!);\n }\n });\n },\n async buildStart() {\n if (!sourceRef) return;\n await generateIfNeeded(sourceRef);\n },\n async configResolved(config) {\n if (startsWithProtocol(openapi)) {\n if (openapi.startsWith('file:')) {\n watchPath = fileURLToPath(openapi);\n sourceRef = openapi;\n }\n } else {\n watchPath = join(config.root, openapi);\n sourceRef = join(config.root, openapi);\n }\n },\n };\n}\n\nfunction specPlugin(\n openapi: OpenAPIObject,\n settings: Settings,\n): Omit<Plugin, 'name'> {\n const generateIfNeeded = async (spec: OpenAPIObject) => {\n const hash = hashSpec(spec);\n const key = `${hash}|${settings.output}`;\n return cachedGeneration(key, async () => {\n console.log(`${chalk.blue('SDKIT')}: Generating SDK.`);\n await generate(spec, settings);\n console.log(`${chalk.blue('SDKIT')}: SDK generated successfully.`);\n });\n };\n return {\n async configResolved() {\n // No-op for specPlugin\n },\n async configureServer() {\n await generateIfNeeded(openapi);\n },\n async buildStart() {\n await generateIfNeeded(openapi);\n },\n };\n}\n\nconst generationCache = new Map<string, Promise<void>>();\n\nfunction cachedGeneration(key: string, fn: () => Promise<void>): Promise<void> {\n const existing = generationCache.get(key);\n if (existing) return existing;\n\n const promise = fn().catch((err) => {\n generationCache.delete(key);\n throw err;\n });\n generationCache.set(key, promise);\n return promise;\n}\n\nfunction hashFile(filePath: string): Promise<string> {\n return readFile(filePath).then((content) =>\n createHash('sha256').update(content).digest('hex'),\n );\n}\n\nfunction hashSpec(spec: OpenAPIObject): string {\n return createHash('sha256').update(JSON.stringify(spec)).digest('hex');\n}\n\nfunction startsWithProtocol(url: string): boolean {\n return /^[a-zA-Z][a-zA-Z0-9+\\-.]*:\\/\\//.test(url);\n}\n", "import type { Plugin } from 'vite';\n\nexport interface ProjectPluginOptions {\n config?: string;\n}\n\nexport function projectPlugin(\n options: ProjectPluginOptions = {},\n): Omit<Plugin, 'name'> {\n let root = process.cwd();\n\n const generate = async () => {\n const { generateProject, loadProjectConfig } = await import('@sdk-it/cli');\n const config = await loadProjectConfig({\n cwd: root,\n config: options.config,\n });\n await generateProject(config);\n };\n\n return {\n configResolved(config) {\n root = config.root;\n },\n async configureServer() {\n await generate();\n },\n async buildStart() {\n await generate();\n },\n };\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import chalk from 'chalk';\nimport { createHash } from 'node:crypto';\nimport { readFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport type { OpenAPIObject } from 'openapi3-ts/oas31';\nimport { type Plugin } from 'vite';\n\nimport { loadSpec } from '@sdk-it/spec';\nimport { generate } from '@sdk-it/typescript';\n\nimport { type ProjectPluginOptions, projectPlugin } from './project.ts';\n\ntype Settings = Parameters<typeof generate>[1];\ntype OpenapiFunction = () =>\n string | OpenAPIObject | Promise<string | OpenAPIObject>;\nexport default function sdkIt(): Plugin;\nexport default function sdkIt(options: ProjectPluginOptions): Plugin;\nexport default function sdkIt(\n openapi: OpenAPIObject | string | OpenapiFunction,\n settings: Settings,\n): Plugin;\nexport default function sdkIt(\n openapi?: OpenAPIObject | string | OpenapiFunction | ProjectPluginOptions,\n settings?: Settings,\n): Plugin {\n if (openapi === undefined || isProjectPluginOptions(openapi)) {\n return {\n name: 'sdk-it',\n ...projectPlugin(openapi),\n };\n }\n return {\n name: 'sdk-it',\n ...(typeof openapi === 'function'\n ? functionPlugin(openapi, settings!)\n : typeof openapi === 'string'\n ? filePlugin(openapi, settings!)\n : specPlugin(openapi, settings!)),\n };\n}\n\nfunction isProjectPluginOptions(\n input: OpenAPIObject | string | OpenapiFunction | ProjectPluginOptions,\n): input is ProjectPluginOptions {\n return typeof input === 'object' && input !== null && !('openapi' in input);\n}\n\nfunction functionPlugin(\n openapi: OpenapiFunction,\n settings: Settings,\n): Omit<Plugin, 'name'> {\n let delegatePlugin!:\n ReturnType<typeof specPlugin> | ReturnType<typeof filePlugin>;\n\n return {\n async configResolved(config) {\n // Resolve the function once\n const resolved = await openapi();\n\n // Create the appropriate delegate plugin based on the resolved type\n delegatePlugin =\n typeof resolved === 'string'\n ? filePlugin(resolved, settings)\n : specPlugin(resolved, settings);\n\n return (delegatePlugin.configResolved as any)?.(config);\n },\n configureServer(server) {\n return (delegatePlugin.configureServer as any)?.(server);\n },\n async buildStart(options) {\n return (delegatePlugin.buildStart as any)?.(options);\n },\n };\n}\n\nfunction filePlugin(openapi: string, settings: Settings): Omit<Plugin, 'name'> {\n let watchPath: string | null = null;\n let sourceRef: string | null = null;\n\n const generateIfNeeded = async (ref: string) => {\n const hash = await hashFile(watchPath || ref);\n const key = `${hash}|${settings.output}`;\n return cachedGeneration(key, async () => {\n console.log(`${chalk.blue('SDKIT')}: Generating SDK.`);\n const spec = await loadSpec(ref);\n await generate(spec, settings);\n console.log(`${chalk.blue('SDKIT')}: SDK generated successfully.`);\n });\n };\n\n return {\n configureServer(server) {\n if (!sourceRef) return;\n\n if (!watchPath) return;\n console.log(\n `${chalk.blue('SDKIT')}: Watching for spec changes in`,\n watchPath,\n );\n server.watcher.add(watchPath);\n server.watcher.on('change', async (file) => {\n if (file === watchPath) {\n console.log(`${chalk.blue('SDKIT')}: OpenAPI spec changed`, file);\n await generateIfNeeded(sourceRef!);\n }\n });\n },\n async buildStart() {\n if (!sourceRef) return;\n await generateIfNeeded(sourceRef);\n },\n async configResolved(config) {\n if (startsWithProtocol(openapi)) {\n if (openapi.startsWith('file:')) {\n watchPath = fileURLToPath(openapi);\n sourceRef = openapi;\n }\n } else {\n watchPath = join(config.root, openapi);\n sourceRef = join(config.root, openapi);\n }\n },\n };\n}\n\nfunction specPlugin(\n openapi: OpenAPIObject,\n settings: Settings,\n): Omit<Plugin, 'name'> {\n const generateIfNeeded = async (spec: OpenAPIObject) => {\n const hash = hashSpec(spec);\n const key = `${hash}|${settings.output}`;\n return cachedGeneration(key, async () => {\n console.log(`${chalk.blue('SDKIT')}: Generating SDK.`);\n await generate(spec, settings);\n console.log(`${chalk.blue('SDKIT')}: SDK generated successfully.`);\n });\n };\n return {\n async configResolved() {\n // No-op for specPlugin\n },\n async configureServer() {\n await generateIfNeeded(openapi);\n },\n async buildStart() {\n await generateIfNeeded(openapi);\n },\n };\n}\n\nconst generationCache = new Map<string, Promise<void>>();\n\nfunction cachedGeneration(key: string, fn: () => Promise<void>): Promise<void> {\n const existing = generationCache.get(key);\n if (existing) return existing;\n\n const promise = fn().catch((err) => {\n generationCache.delete(key);\n throw err;\n });\n generationCache.set(key, promise);\n return promise;\n}\n\nfunction hashFile(filePath: string): Promise<string> {\n return readFile(filePath).then((content) =>\n createHash('sha256').update(content).digest('hex'),\n );\n}\n\nfunction hashSpec(spec: OpenAPIObject): string {\n return createHash('sha256').update(JSON.stringify(spec)).digest('hex');\n}\n\nfunction startsWithProtocol(url: string): boolean {\n return /^[a-zA-Z][a-zA-Z0-9+\\-.]*:\\/\\//.test(url);\n}\n", "import type { Plugin } from 'vite';\n\nexport interface ProjectPluginOptions {\n config?: string;\n}\n\nexport function projectPlugin(\n options: ProjectPluginOptions = {},\n): Omit<Plugin, 'name'> {\n let root = process.cwd();\n\n const generate = async () => {\n const { generateProject, loadProjectConfig } = await import('@sdk-it/cli');\n const config = await loadProjectConfig({\n cwd: root,\n config: options.config,\n });\n await generateProject(config);\n };\n\n return {\n configResolved(config) {\n root = config.root;\n },\n async configureServer() {\n await generate();\n },\n async buildStart() {\n await generate();\n },\n };\n}\n"],
5
+ "mappings": ";AAAA,OAAO,WAAW;AAClB,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB;AACzB,SAAS,YAAY;AACrB,SAAS,qBAAqB;AAE9B,OAA4B;AAE5B,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;;;ACHlB,SAAS,cACd,UAAgC,CAAC,GACX;AACtB,MAAI,OAAO,QAAQ,IAAI;AAEvB,QAAMA,YAAW,YAAY;AAC3B,UAAM,EAAE,iBAAiB,kBAAkB,IAAI,MAAM,OAAO,aAAa;AACzE,UAAM,SAAS,MAAM,kBAAkB;AAAA,MACrC,KAAK;AAAA,MACL,QAAQ,QAAQ;AAAA,IAClB,CAAC;AACD,UAAM,gBAAgB,MAAM;AAAA,EAC9B;AAEA,SAAO;AAAA,IACL,eAAe,QAAQ;AACrB,aAAO,OAAO;AAAA,IAChB;AAAA,IACA,MAAM,kBAAkB;AACtB,YAAMA,UAAS;AAAA,IACjB;AAAA,IACA,MAAM,aAAa;AACjB,YAAMA,UAAS;AAAA,IACjB;AAAA,EACF;AACF;;;ADTe,SAAR,MACL,SACA,UACQ;AACR,MAAI,YAAY,UAAa,uBAAuB,OAAO,GAAG;AAC5D,WAAO;AAAA,MACL,MAAM;AAAA,MACN,GAAG,cAAc,OAAO;AAAA,IAC1B;AAAA,EACF;AACA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,GAAI,OAAO,YAAY,aACnB,eAAe,SAAS,QAAS,IACjC,OAAO,YAAY,WACjB,WAAW,SAAS,QAAS,IAC7B,WAAW,SAAS,QAAS;AAAA,EACrC;AACF;AAEA,SAAS,uBACP,OAC+B;AAC/B,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,EAAE,aAAa;AACvE;AAEA,SAAS,eACP,SACA,UACsB;AACtB,MAAI;AAGJ,SAAO;AAAA,IACL,MAAM,eAAe,QAAQ;AAE3B,YAAM,WAAW,MAAM,QAAQ;AAG/B,uBACE,OAAO,aAAa,WAChB,WAAW,UAAU,QAAQ,IAC7B,WAAW,UAAU,QAAQ;AAEnC,aAAQ,eAAe,iBAAyB,MAAM;AAAA,IACxD;AAAA,IACA,gBAAgB,QAAQ;AACtB,aAAQ,eAAe,kBAA0B,MAAM;AAAA,IACzD;AAAA,IACA,MAAM,WAAW,SAAS;AACxB,aAAQ,eAAe,aAAqB,OAAO;AAAA,IACrD;AAAA,EACF;AACF;AAEA,SAAS,WAAW,SAAiB,UAA0C;AAC7E,MAAI,YAA2B;AAC/B,MAAI,YAA2B;AAE/B,QAAM,mBAAmB,OAAO,QAAgB;AAC9C,UAAM,OAAO,MAAM,SAAS,aAAa,GAAG;AAC5C,UAAM,MAAM,GAAG,IAAI,IAAI,SAAS,MAAM;AACtC,WAAO,iBAAiB,KAAK,YAAY;AACvC,cAAQ,IAAI,GAAG,MAAM,KAAK,OAAO,CAAC,mBAAmB;AACrD,YAAM,OAAO,MAAM,SAAS,GAAG;AAC/B,YAAM,SAAS,MAAM,QAAQ;AAC7B,cAAQ,IAAI,GAAG,MAAM,KAAK,OAAO,CAAC,+BAA+B;AAAA,IACnE,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL,gBAAgB,QAAQ;AACtB,UAAI,CAAC,UAAW;AAEhB,UAAI,CAAC,UAAW;AAChB,cAAQ;AAAA,QACN,GAAG,MAAM,KAAK,OAAO,CAAC;AAAA,QACtB;AAAA,MACF;AACA,aAAO,QAAQ,IAAI,SAAS;AAC5B,aAAO,QAAQ,GAAG,UAAU,OAAO,SAAS;AAC1C,YAAI,SAAS,WAAW;AACtB,kBAAQ,IAAI,GAAG,MAAM,KAAK,OAAO,CAAC,0BAA0B,IAAI;AAChE,gBAAM,iBAAiB,SAAU;AAAA,QACnC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,MAAM,aAAa;AACjB,UAAI,CAAC,UAAW;AAChB,YAAM,iBAAiB,SAAS;AAAA,IAClC;AAAA,IACA,MAAM,eAAe,QAAQ;AAC3B,UAAI,mBAAmB,OAAO,GAAG;AAC/B,YAAI,QAAQ,WAAW,OAAO,GAAG;AAC/B,sBAAY,cAAc,OAAO;AACjC,sBAAY;AAAA,QACd;AAAA,MACF,OAAO;AACL,oBAAY,KAAK,OAAO,MAAM,OAAO;AACrC,oBAAY,KAAK,OAAO,MAAM,OAAO;AAAA,MACvC;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,WACP,SACA,UACsB;AACtB,QAAM,mBAAmB,OAAO,SAAwB;AACtD,UAAM,OAAO,SAAS,IAAI;AAC1B,UAAM,MAAM,GAAG,IAAI,IAAI,SAAS,MAAM;AACtC,WAAO,iBAAiB,KAAK,YAAY;AACvC,cAAQ,IAAI,GAAG,MAAM,KAAK,OAAO,CAAC,mBAAmB;AACrD,YAAM,SAAS,MAAM,QAAQ;AAC7B,cAAQ,IAAI,GAAG,MAAM,KAAK,OAAO,CAAC,+BAA+B;AAAA,IACnE,CAAC;AAAA,EACH;AACA,SAAO;AAAA,IACL,MAAM,iBAAiB;AAAA,IAEvB;AAAA,IACA,MAAM,kBAAkB;AACtB,YAAM,iBAAiB,OAAO;AAAA,IAChC;AAAA,IACA,MAAM,aAAa;AACjB,YAAM,iBAAiB,OAAO;AAAA,IAChC;AAAA,EACF;AACF;AAEA,IAAM,kBAAkB,oBAAI,IAA2B;AAEvD,SAAS,iBAAiB,KAAa,IAAwC;AAC7E,QAAM,WAAW,gBAAgB,IAAI,GAAG;AACxC,MAAI,SAAU,QAAO;AAErB,QAAM,UAAU,GAAG,EAAE,MAAM,CAAC,QAAQ;AAClC,oBAAgB,OAAO,GAAG;AAC1B,UAAM;AAAA,EACR,CAAC;AACD,kBAAgB,IAAI,KAAK,OAAO;AAChC,SAAO;AACT;AAEA,SAAS,SAAS,UAAmC;AACnD,SAAO,SAAS,QAAQ,EAAE;AAAA,IAAK,CAAC,YAC9B,WAAW,QAAQ,EAAE,OAAO,OAAO,EAAE,OAAO,KAAK;AAAA,EACnD;AACF;AAEA,SAAS,SAAS,MAA6B;AAC7C,SAAO,WAAW,QAAQ,EAAE,OAAO,KAAK,UAAU,IAAI,CAAC,EAAE,OAAO,KAAK;AACvE;AAEA,SAAS,mBAAmB,KAAsB;AAChD,SAAO,iCAAiC,KAAK,GAAG;AAClD;",
6
6
  "names": ["generate"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sdk-it/vite",
3
- "version": "0.45.0",
3
+ "version": "0.46.1",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -30,11 +30,11 @@
30
30
  "chalk": "^5.6.0"
31
31
  },
32
32
  "peerDependencies": {
33
- "@sdk-it/cli": "0.45.0",
33
+ "@sdk-it/cli": "0.46.1",
34
34
  "openapi3-ts": "4.5.0",
35
35
  "vite": "^6.0.0 || ^7.0.0",
36
- "@sdk-it/spec": "0.45.0",
37
- "@sdk-it/typescript": "0.45.0",
36
+ "@sdk-it/spec": "0.46.1",
37
+ "@sdk-it/typescript": "0.46.1",
38
38
  "chalk": "^5.6.0"
39
39
  },
40
40
  "peerDependenciesMeta": {