@sdk-it/vite 0.35.1 → 0.36.0

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/dist/index.js CHANGED
@@ -25,8 +25,8 @@ function sdkIt(openapi, settings) {
25
25
  );
26
26
  server.watcher.add(watchPath);
27
27
  server.watcher.on("change", async (file) => {
28
- console.log(`${chalk.blue("SDKIT")}: File changed`, file);
29
28
  if (file === watchPath) {
29
+ console.log(`${chalk.blue("SDKIT")}: OpenAPI spec changed`, file);
30
30
  await generateOnce(sourceRef);
31
31
  }
32
32
  });
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
- "sourcesContent": ["import chalk from 'chalk';\nimport { join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { type Plugin } from 'vite';\n\nimport { loadSpec } from '@sdk-it/spec';\nimport { generate } from '@sdk-it/typescript';\n\nexport default function sdkIt(\n openapi: string,\n settings: Parameters<typeof generate>[1],\n): Plugin {\n let watchPath: string | null = null;\n let sourceRef: string | null = null;\n\n const generateOnce = onceAtATime(async (ref: string) => {\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 return {\n name: 'sdk-it',\n configureServer(server) {\n if (!sourceRef) return;\n\n if (!watchPath) return;\n // Watch only when we have a real filesystem path\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 console.log(`${chalk.blue('SDKIT')}: File changed`, file);\n if (file === watchPath) {\n await generateOnce(sourceRef!);\n }\n });\n },\n async buildStart() {\n if (!sourceRef) return;\n await generateOnce(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\n/**\n * Ensures that an async function has only one execution at a time (prevents concurrent calls).\n * If called while already executing, subsequent calls will wait for the current execution to complete\n * and receive the same result.\n * @param fn The async function to serialize.\n */\nexport function onceAtATime<TArgs extends readonly unknown[], TReturn>(\n fn: (...args: TArgs) => Promise<TReturn>,\n): (...args: TArgs) => Promise<TReturn> {\n let current: Promise<TReturn> | null = null;\n\n return function (...args: TArgs): Promise<TReturn> {\n if (current) {\n // Return the existing promise if already executing\n return current;\n }\n\n // Start new execution\n current = (async () => {\n try {\n return await fn(...args);\n } finally {\n // Clear the current execution when done\n current = null;\n }\n })();\n\n return current;\n };\n}\n\nfunction startsWithProtocol(url: string): boolean {\n return /^[a-zA-Z][a-zA-Z0-9+\\-.]*:\\/\\//.test(url);\n}\n"],
5
- "mappings": ";AAAA,OAAO,WAAW;AAClB,SAAS,YAAY;AACrB,SAAS,qBAAqB;AAC9B,OAA4B;AAE5B,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AAEV,SAAR,MACL,SACA,UACQ;AACR,MAAI,YAA2B;AAC/B,MAAI,YAA2B;AAE/B,QAAM,eAAe,YAAY,OAAO,QAAgB;AACtD,YAAQ,IAAI,GAAG,MAAM,KAAK,OAAO,CAAC,mBAAmB;AACrD,UAAM,OAAO,MAAM,SAAS,GAAG;AAC/B,UAAM,SAAS,MAAM,QAAQ;AAC7B,YAAQ,IAAI,GAAG,MAAM,KAAK,OAAO,CAAC,+BAA+B;AAAA,EACnE,CAAC;AAED,SAAO;AAAA,IACL,MAAM;AAAA,IACN,gBAAgB,QAAQ;AACtB,UAAI,CAAC,UAAW;AAEhB,UAAI,CAAC,UAAW;AAEhB,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,gBAAQ,IAAI,GAAG,MAAM,KAAK,OAAO,CAAC,kBAAkB,IAAI;AACxD,YAAI,SAAS,WAAW;AACtB,gBAAM,aAAa,SAAU;AAAA,QAC/B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,MAAM,aAAa;AACjB,UAAI,CAAC,UAAW;AAChB,YAAM,aAAa,SAAS;AAAA,IAC9B;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;AAQO,SAAS,YACd,IACsC;AACtC,MAAI,UAAmC;AAEvC,SAAO,YAAa,MAA+B;AACjD,QAAI,SAAS;AAEX,aAAO;AAAA,IACT;AAGA,eAAW,YAAY;AACrB,UAAI;AACF,eAAO,MAAM,GAAG,GAAG,IAAI;AAAA,MACzB,UAAE;AAEA,kBAAU;AAAA,MACZ;AAAA,IACF,GAAG;AAEH,WAAO;AAAA,EACT;AACF;AAEA,SAAS,mBAAmB,KAAsB;AAChD,SAAO,iCAAiC,KAAK,GAAG;AAClD;",
4
+ "sourcesContent": ["import chalk from 'chalk';\nimport { join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { type Plugin } from 'vite';\n\nimport { loadSpec } from '@sdk-it/spec';\nimport { generate } from '@sdk-it/typescript';\n\nexport default function sdkIt(\n openapi: string,\n settings: Parameters<typeof generate>[1],\n): Plugin {\n let watchPath: string | null = null;\n let sourceRef: string | null = null;\n\n const generateOnce = onceAtATime(async (ref: string) => {\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 return {\n name: 'sdk-it',\n configureServer(server) {\n if (!sourceRef) return;\n\n if (!watchPath) return;\n // Watch only when we have a real filesystem path\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 generateOnce(sourceRef!);\n }\n });\n },\n async buildStart() {\n if (!sourceRef) return;\n await generateOnce(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\n/**\n * Ensures that an async function has only one execution at a time (prevents concurrent calls).\n * If called while already executing, subsequent calls will wait for the current execution to complete\n * and receive the same result.\n * @param fn The async function to serialize.\n */\nexport function onceAtATime<TArgs extends readonly unknown[], TReturn>(\n fn: (...args: TArgs) => Promise<TReturn>,\n): (...args: TArgs) => Promise<TReturn> {\n let current: Promise<TReturn> | null = null;\n\n return function (...args: TArgs): Promise<TReturn> {\n if (current) {\n // Return the existing promise if already executing\n return current;\n }\n\n // Start new execution\n current = (async () => {\n try {\n return await fn(...args);\n } finally {\n // Clear the current execution when done\n current = null;\n }\n })();\n\n return current;\n };\n}\n\nfunction startsWithProtocol(url: string): boolean {\n return /^[a-zA-Z][a-zA-Z0-9+\\-.]*:\\/\\//.test(url);\n}\n"],
5
+ "mappings": ";AAAA,OAAO,WAAW;AAClB,SAAS,YAAY;AACrB,SAAS,qBAAqB;AAC9B,OAA4B;AAE5B,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AAEV,SAAR,MACL,SACA,UACQ;AACR,MAAI,YAA2B;AAC/B,MAAI,YAA2B;AAE/B,QAAM,eAAe,YAAY,OAAO,QAAgB;AACtD,YAAQ,IAAI,GAAG,MAAM,KAAK,OAAO,CAAC,mBAAmB;AACrD,UAAM,OAAO,MAAM,SAAS,GAAG;AAC/B,UAAM,SAAS,MAAM,QAAQ;AAC7B,YAAQ,IAAI,GAAG,MAAM,KAAK,OAAO,CAAC,+BAA+B;AAAA,EACnE,CAAC;AAED,SAAO;AAAA,IACL,MAAM;AAAA,IACN,gBAAgB,QAAQ;AACtB,UAAI,CAAC,UAAW;AAEhB,UAAI,CAAC,UAAW;AAEhB,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,aAAa,SAAU;AAAA,QAC/B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,MAAM,aAAa;AACjB,UAAI,CAAC,UAAW;AAChB,YAAM,aAAa,SAAS;AAAA,IAC9B;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;AAQO,SAAS,YACd,IACsC;AACtC,MAAI,UAAmC;AAEvC,SAAO,YAAa,MAA+B;AACjD,QAAI,SAAS;AAEX,aAAO;AAAA,IACT;AAGA,eAAW,YAAY;AACrB,UAAI;AACF,eAAO,MAAM,GAAG,GAAG,IAAI;AAAA,MACzB,UAAE;AAEA,kBAAU;AAAA,MACZ;AAAA,IACF,GAAG;AAEH,WAAO;AAAA,EACT;AACF;AAEA,SAAS,mBAAmB,KAAsB;AAChD,SAAO,iCAAiC,KAAK,GAAG;AAClD;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sdk-it/vite",
3
- "version": "0.35.1",
3
+ "version": "0.36.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -29,7 +29,7 @@
29
29
  "peerDependencies": {
30
30
  "chalk": "^5.6.0",
31
31
  "vite": "^6.0.0 || ^7.0.0",
32
- "@sdk-it/spec": "0.35.1",
33
- "@sdk-it/typescript": "0.35.1"
32
+ "@sdk-it/spec": "0.36.0",
33
+ "@sdk-it/typescript": "0.36.0"
34
34
  }
35
35
  }