{"_id":"@teliagen/vite-plugin","_rev":"28-218bc055db60c0f91e62cdeae494ad4c","name":"@teliagen/vite-plugin","dist-tags":{"latest":"0.4.2"},"versions":{"0.4.0":{"name":"@teliagen/vite-plugin","version":"0.4.0","author":{"name":"Teliagen Team","email":"contact@teliagen.org"},"license":"Apache-2.0","_id":"@teliagen/vite-plugin@0.4.0","maintainers":[{"name":"teliagen_off","email":"admin@teliagen.org"}],"homepage":"https://docs.teliagen.org","bugs":{"url":"https://github.com/teliagen/teliagen-framework/issues"},"dist":{"shasum":"88130c2a69b4d4c02c9c1eb69812a2c7de34c934","tarball":"https://registry.npmjs.org/@teliagen/vite-plugin/-/vite-plugin-0.4.0.tgz","fileCount":8,"integrity":"sha512-oB3guWuyjkj/aWnHZEOH72HcLSo8UeS+qu30RX+ylIDcw8ZizZrhapzinhyBL2XnMtEoXjxB3bq/N3fs6zN9iQ==","signatures":[{"sig":"MEUCIApw4uOTTKYw4+3Md1OTRiywp3b7FRkRpa8tL5SCNLJ/AiEAj/sd8EjrcPTX3CUj6JScENBVlmasaz9nHzpEGmKI6t4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40362},"main":"./dist/index.js","type":"module","_from":"file:teliagen-vite-plugin-0.4.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"private":false,"scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc"},"_npmUser":{"name":"teliagen_off","email":"admin@teliagen.org"},"_resolved":"C:\\Users\\ABDOUL~1\\AppData\\Local\\Temp\\393f0124feeb454e86ecd7eb64be6fb7\\teliagen-vite-plugin-0.4.0.tgz","_integrity":"sha512-oB3guWuyjkj/aWnHZEOH72HcLSo8UeS+qu30RX+ylIDcw8ZizZrhapzinhyBL2XnMtEoXjxB3bq/N3fs6zN9iQ==","repository":{"url":"git+https://github.com/teliagen/teliagen-framework.git","type":"git","directory":"packages/vite-plugin"},"_npmVersion":"11.6.2","description":"Vite plugin for the Teliagen framework","directories":{},"_nodeVersion":"24.12.0","dependencies":{"axios":"^1.6.0","chokidar":"^3.5.3","fs-extra":"^11.2.0","@teliagen/client":"0.4.0","@teliagen/logger":"0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.7.3","@types/node":"^22.10.7","@types/fs-extra":"^11.0.4"},"peerDependencies":{"vite":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin_0.4.0_1770857855256_0.5154794373784355","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@teliagen/vite-plugin","version":"0.4.1","author":{"name":"Teliagen Team","email":"contact@teliagen.org"},"license":"Apache-2.0","_id":"@teliagen/vite-plugin@0.4.1","maintainers":[{"name":"teliagen_off","email":"admin@teliagen.org"}],"homepage":"https://docs.teliagen.org","bugs":{"url":"https://github.com/teliagen/teliagen-framework/issues"},"dist":{"shasum":"66df4d994d949f47eef41f7ce8562eca85682b05","tarball":"https://registry.npmjs.org/@teliagen/vite-plugin/-/vite-plugin-0.4.1.tgz","fileCount":8,"integrity":"sha512-2hT7rjOPrwhIXMayZT0nkJvinap66MZMfikwxloInvHJGbm2VmciNRQBvGWscwABc2DjJ4n2OJDB1EFWRgWs4g==","signatures":[{"sig":"MEUCIQCDIC7IufkPFtfWwQJoRtBkEhWUisvgxm6cMxWMSL54zAIgHChe63lwUhNH0YccTxy/CuVOVq3++HrAJ8FmwV99ex0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40362},"main":"./dist/index.js","type":"module","_from":"file:teliagen-vite-plugin-0.4.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"private":false,"scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc"},"_npmUser":{"name":"teliagen_off","email":"admin@teliagen.org"},"_resolved":"C:\\Users\\ABDOUL~1\\AppData\\Local\\Temp\\de10004b3374cb456df0b7e232f45266\\teliagen-vite-plugin-0.4.1.tgz","_integrity":"sha512-2hT7rjOPrwhIXMayZT0nkJvinap66MZMfikwxloInvHJGbm2VmciNRQBvGWscwABc2DjJ4n2OJDB1EFWRgWs4g==","repository":{"url":"git+https://github.com/teliagen/teliagen-framework.git","type":"git","directory":"packages/vite-plugin"},"_npmVersion":"11.6.2","description":"Vite plugin for the Teliagen framework","directories":{},"_nodeVersion":"24.12.0","dependencies":{"axios":"^1.6.0","chokidar":"^3.5.3","fs-extra":"^11.2.0","@teliagen/client":"0.4.1","@teliagen/logger":"0.4.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.7.3","@types/node":"^22.10.7","@types/fs-extra":"^11.0.4"},"peerDependencies":{"vite":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin_0.4.1_1770923605033_0.1312422112020588","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@teliagen/vite-plugin","version":"0.4.2","private":false,"publishConfig":{"access":"public"},"type":"module","description":"Vite plugin for the Teliagen framework","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"author":{"name":"Teliagen Team","email":"contact@teliagen.org"},"repository":{"type":"git","url":"git+https://github.com/teliagen/teliagen-framework.git","directory":"packages/vite-plugin"},"homepage":"https://docs.teliagen.org","bugs":{"url":"https://github.com/teliagen/teliagen-framework/issues"},"license":"Apache-2.0","dependencies":{"axios":"^1.6.0","chokidar":"^3.5.3","fs-extra":"^11.2.0","@teliagen/client":"0.4.2","@teliagen/logger":"0.4.2"},"peerDependencies":{"vite":">=4.0.0"},"devDependencies":{"@types/fs-extra":"^11.0.4","@types/node":"^22.10.7","typescript":"^5.7.3","vitest":"^2.0.0"},"scripts":{"build":"tsc","dev":"tsc --watch","test":"vitest run"},"_id":"@teliagen/vite-plugin@0.4.2","_integrity":"sha512-XxXfqe7/0dQlt70qsZGXh2770XTkXni12JHu/bk3JRBj9GIbakmyxd1i8dyUrZRnPiETJtweOvs7TcXwRG4YKA==","_resolved":"C:\\Users\\ABDOUL~1\\AppData\\Local\\Temp\\ab4c1423d9909ce608d9e39bba3a8805\\teliagen-vite-plugin-0.4.2.tgz","_from":"file:teliagen-vite-plugin-0.4.2.tgz","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-XxXfqe7/0dQlt70qsZGXh2770XTkXni12JHu/bk3JRBj9GIbakmyxd1i8dyUrZRnPiETJtweOvs7TcXwRG4YKA==","shasum":"f675ec4ab918736333a6cf47324eb71f9c696aeb","tarball":"https://registry.npmjs.org/@teliagen/vite-plugin/-/vite-plugin-0.4.2.tgz","fileCount":8,"unpackedSize":40362,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIA6XWN4AQTFhhiRkfRo9r23l64tq4sHuTmZ/CVci8PtnAiB0oxOdJQ0tH7foZ9/12b8iyb+fI3MwPQEG1JN7ny030g=="}]},"_npmUser":{"name":"teliagen_off","email":"admin@teliagen.org"},"directories":{},"maintainers":[{"name":"teliagen_off","email":"admin@teliagen.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vite-plugin_0.4.2_1770925155402_0.9085857986707986"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-12T00:57:35.118Z","modified":"2026-02-12T19:39:15.731Z","0.1.0":"2026-01-19T19:17:33.762Z","0.1.1":"2026-01-19T19:55:57.247Z","0.1.2":"2026-01-19T21:14:46.400Z","0.1.3":"2026-01-19T21:27:35.053Z","0.1.4":"2026-01-25T07:47:04.512Z","0.1.5":"2026-01-25T16:04:32.557Z","0.1.6":"2026-01-25T23:50:39.698Z","0.1.7":"2026-01-26T00:07:43.776Z","0.1.8":"2026-01-26T00:11:15.691Z","0.1.9":"2026-01-26T00:14:43.482Z","0.1.10":"2026-01-26T00:18:55.337Z","0.1.11":"2026-01-26T00:40:26.933Z","0.1.12":"2026-01-26T00:53:00.333Z","0.1.13":"2026-01-26T00:57:13.434Z","0.1.15":"2026-01-26T01:17:43.876Z","0.1.16":"2026-01-26T01:22:10.280Z","0.1.17":"2026-01-26T01:43:12.025Z","0.1.18":"2026-01-26T02:18:07.120Z","0.1.19":"2026-01-26T02:26:18.301Z","0.4.0":"2026-02-12T00:57:35.426Z","0.4.1":"2026-02-12T19:13:25.197Z","0.4.2":"2026-02-12T19:39:15.555Z"},"bugs":{"url":"https://github.com/teliagen/teliagen-framework/issues"},"author":{"name":"Teliagen Team","email":"contact@teliagen.org"},"license":"Apache-2.0","homepage":"https://docs.teliagen.org","repository":{"type":"git","url":"git+https://github.com/teliagen/teliagen-framework.git","directory":"packages/vite-plugin"},"description":"Vite plugin for the Teliagen framework","maintainers":[{"name":"teliagen_off","email":"admin@teliagen.org"}],"readme":"# @teliagen/vite-plugin\r\n\r\n> Vite plugin for Teliagen client code generation.\r\n\r\n[![npm version](https://img.shields.io/npm/v/@teliagen/vite-plugin.svg)](https://www.npmjs.com/package/@teliagen/vite-plugin)\r\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-blue.svg)](https://www.typescriptlang.org/)\r\n[![Vite](https://img.shields.io/badge/Vite-5.0+-blue.svg)](https://vitejs.dev/)\r\n[![License: Apache-2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\r\n\r\n## Overview\r\n\r\n`@teliagen/vite-plugin` generates typed client code from Teliagen server metadata:\r\n\r\n- **Automatic Generation** – Generates on dev server start\r\n- **Hot Reload** – Regenerates on metadata changes\r\n- **Typed Hooks** – React hooks with full TypeScript inference\r\n- **Multiple Sources** – Connect to multiple backend services\r\n- **Local & Remote** – Read from local files or fetch from servers\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install -D @teliagen/vite-plugin\r\n# or\r\npnpm add -D @teliagen/vite-plugin\r\n```\r\n\r\n## Quick Start\r\n\r\n### Local Backend (Monorepo)\r\n\r\n```typescript\r\n// vite.config.ts\r\nimport { defineConfig } from 'vite';\r\nimport react from '@vitejs/plugin-react';\r\nimport { teliagen } from '@teliagen/vite-plugin';\r\n\r\nexport default defineConfig({\r\n  plugins: [\r\n    react(),\r\n    teliagen({\r\n      name: 'main',\r\n      mode: 'local',\r\n      path: '../server'  // Path to backend project\r\n    })\r\n  ]\r\n});\r\n```\r\n\r\n### Remote Backend\r\n\r\n```typescript\r\n// vite.config.ts\r\nimport { teliagen } from '@teliagen/vite-plugin';\r\n\r\nexport default defineConfig({\r\n  plugins: [\r\n    teliagen({\r\n      name: 'api',\r\n      mode: 'remote',\r\n      url: 'http://localhost:3000',\r\n      endpoint: '/teliagen/metadata'\r\n    })\r\n  ]\r\n});\r\n```\r\n\r\n## Configuration\r\n\r\n```typescript\r\ninterface TeliagenViteOptions {\r\n  // Identity\r\n  name?: string;              // Source name (default: 'main')\r\n  \r\n  // Mode\r\n  mode?: 'local' | 'remote';  // How to fetch metadata\r\n  \r\n  // Local mode options\r\n  path?: string;              // Path to backend project\r\n  metadataPath?: string;      // Direct path to metadata.json\r\n  \r\n  // Remote mode options\r\n  url?: string;               // Backend URL\r\n  endpoint?: string;          // Metadata endpoint (default: '/teliagen/metadata')\r\n  \r\n  // Generation\r\n  strategy?: 'physical' | 'virtual';  // Output strategy\r\n  outputDir?: string;         // Output directory (default: '.teliagen-client')\r\n  \r\n  // Error handling\r\n  optional?: boolean;         // Don't fail if source unavailable\r\n}\r\n```\r\n\r\n## Multiple Sources\r\n\r\nConnect to multiple backend services:\r\n\r\n```typescript\r\n// vite.config.ts\r\nimport { teliagen } from '@teliagen/vite-plugin';\r\n\r\nexport default defineConfig({\r\n  plugins: [\r\n    teliagen([\r\n      {\r\n        name: 'main',\r\n        mode: 'local',\r\n        path: '../main-server'\r\n      },\r\n      {\r\n        name: 'auth',\r\n        mode: 'remote',\r\n        url: 'http://localhost:3001',\r\n        optional: true  // Don't fail if auth server is down\r\n      },\r\n      {\r\n        name: 'payments',\r\n        mode: 'remote',\r\n        url: process.env.PAYMENTS_API_URL,\r\n        optional: true\r\n      }\r\n    ])\r\n  ]\r\n});\r\n```\r\n\r\n## Generated Output\r\n\r\nThe plugin generates typed client code:\r\n\r\n```\r\n.teliagen-client/\r\n├── main/\r\n│   ├── index.ts              # Barrel exports\r\n│   ├── hooks/\r\n│   │   ├── useLogin.ts       # Typed React hook\r\n│   │   ├── useRegister.ts\r\n│   │   └── useListUsers.ts\r\n│   ├── schemas/\r\n│   │   ├── LoginInput.ts\r\n│   │   └── UserOutput.ts\r\n│   └── types/\r\n│       └── index.ts\r\n├── auth/\r\n│   └── ...\r\n└── payments/\r\n    └── ...\r\n```\r\n\r\n### Generated Hook Example\r\n\r\n```typescript\r\n// .teliagen-client/main/hooks/useLogin.ts\r\nimport { useTeliagenAction } from '@teliagen/react';\r\n\r\nexport interface LoginInput {\r\n  email: string;\r\n  password: string;\r\n}\r\n\r\nexport interface LoginOutput {\r\n  user: {\r\n    id: string;\r\n    email: string;\r\n    name?: string;\r\n  };\r\n  token: string;\r\n}\r\n\r\nexport function useLogin() {\r\n  return useTeliagenAction<LoginInput, LoginOutput>(\r\n    'login',\r\n    { module: 'auth', provider: 'AuthActions' }\r\n  );\r\n}\r\n```\r\n\r\n## Using Generated Code\r\n\r\n```tsx\r\n// Import generated hooks\r\nimport { useLogin, useListUsers, useCreateUser } from '.teliagen-client/main';\r\n\r\nfunction LoginPage() {\r\n  const login = useLogin();\r\n  \r\n  return (\r\n    <button onClick={() => login.execute({ \r\n      email: 'user@example.com', \r\n      password: 'secret' \r\n    })}>\r\n      Login\r\n    </button>\r\n  );\r\n}\r\n\r\nfunction UserList() {\r\n  const { data, isLoading } = useListUsers({ page: 1, limit: 10 });\r\n  \r\n  if (isLoading) return <p>Loading...</p>;\r\n  \r\n  return (\r\n    <ul>\r\n      {data?.users.map(user => (\r\n        <li key={user.id}>{user.name}</li>\r\n      ))}\r\n    </ul>\r\n  );\r\n}\r\n```\r\n\r\n## TypeScript Configuration\r\n\r\nAdd the generated directory to your `tsconfig.json`:\r\n\r\n```json\r\n{\r\n  \"compilerOptions\": {\r\n    \"paths\": {\r\n      \".teliagen-client/*\": [\"./.teliagen-client/*\"]\r\n    }\r\n  },\r\n  \"include\": [\r\n    \"src\",\r\n    \".teliagen-client\"\r\n  ]\r\n}\r\n```\r\n\r\n## Strategies\r\n\r\n### Physical (Default)\r\n\r\nGenerates actual files on disk:\r\n\r\n```typescript\r\nteliagen({\r\n  strategy: 'physical',  // default\r\n  outputDir: '.teliagen-client'\r\n})\r\n```\r\n\r\n**Pros:**\r\n- IDE support out of the box\r\n- Can be committed to git\r\n- Works with any bundler\r\n\r\n**Cons:**\r\n- Files on disk\r\n\r\n### Virtual\r\n\r\nUses Vite virtual modules (no files on disk):\r\n\r\n```typescript\r\nteliagen({\r\n  strategy: 'virtual'\r\n})\r\n```\r\n\r\n**Pros:**\r\n- No generated files\r\n- Cleaner project structure\r\n\r\n**Cons:**\r\n- Requires Vite\r\n- IDE may need additional config\r\n\r\n## Watch Mode\r\n\r\nIn development, the plugin watches for metadata changes:\r\n\r\n```typescript\r\n// Local mode: Watches .teliagen/metadata.json\r\n// When backend regenerates metadata, client code updates\r\n\r\n// Remote mode: Manual refresh needed (restart dev server)\r\n```\r\n\r\n## Environment-Based Config\r\n\r\n```typescript\r\n// vite.config.ts\r\nexport default defineConfig(({ mode }) => ({\r\n  plugins: [\r\n    teliagen({\r\n      name: 'api',\r\n      mode: mode === 'development' ? 'local' : 'remote',\r\n      path: mode === 'development' ? '../server' : undefined,\r\n      url: mode === 'production' ? process.env.API_URL : undefined\r\n    })\r\n  ]\r\n}));\r\n```\r\n\r\n## Error Handling\r\n\r\n```typescript\r\nteliagen({\r\n  name: 'auth',\r\n  mode: 'remote',\r\n  url: 'http://auth-service:3001',\r\n  optional: true  // Log warning instead of failing\r\n})\r\n```\r\n\r\nWhen `optional: true`:\r\n- Missing local metadata: Skips silently\r\n- Unreachable remote: Logs warning, continues build\r\n- Useful for services that may be down during development\r\n\r\n## Integration with Backend\r\n\r\nYour backend should expose metadata via `ClientContractSync` or `ServerContractSync`:\r\n\r\n```typescript\r\n// teliagen.config.ts (backend)\r\nimport { defineConfig, ClientContractSync } from '@teliagen/commons';\r\n\r\nexport default defineConfig({\r\n  features: [\r\n    ClientContractSync({\r\n      endpoint: '/teliagen/metadata',\r\n      allowInProduction: false\r\n    })\r\n  ]\r\n});\r\n```\r\n\r\n## Requirements\r\n\r\n- **Vite** >= 5.0.0\r\n- **Node.js** >= 18.0.0\r\n\r\n## Related Packages\r\n\r\n- **[@teliagen/client](../client)** – HTTP transport\r\n- **[@teliagen/react](../react)** – React hooks\r\n\r\n## Documentation\r\n\r\nFor full documentation, visit [docs.teliagen.org](https://docs.teliagen.org).\r\n\r\n## License\r\n\r\nApache-2.0\r\n\r\n---\r\n\r\n<p align=\"center\">\r\n  <strong>Part of <a href=\"https://github.com/teliagen/teliagen-framework\">Teliagen</a></strong>\r\n</p>\r\n","readmeFilename":"README.md"}