{"_id":"@ahmedrowaihi/fn-schema-unplugin","_rev":"3-3334cd0c343275f9d3f104f643e9d6e8","name":"@ahmedrowaihi/fn-schema-unplugin","dist-tags":{"latest":"0.2.1"},"versions":{"0.2.0":{"name":"@ahmedrowaihi/fn-schema-unplugin","version":"0.2.0","keywords":["json-schema","function-signature","vite-plugin","webpack-plugin","rollup-plugin","esbuild-plugin","unplugin","hmr"],"author":{"name":"Ahmed Rowaihi","email":"ahmedrowaihi@gmail.com"},"license":"MIT","_id":"@ahmedrowaihi/fn-schema-unplugin@0.2.0","maintainers":[{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"}],"homepage":"https://github.com/ahmedrowaihi/contract-kit/tree/main/packages/fn-schema/unplugin","bugs":{"url":"https://github.com/ahmedrowaihi/contract-kit/issues"},"dist":{"shasum":"737a6a1128c9eb2182a30b2c13ec1ef88bd4971c","tarball":"https://registry.npmjs.org/@ahmedrowaihi/fn-schema-unplugin/-/fn-schema-unplugin-0.2.0.tgz","fileCount":35,"integrity":"sha512-HFpoMLsdQRR8K8+6bjfl/+DW2toOUlCpmVAS6guuEDWxzM4kiInnglp7XgA2di82YGvelU/NMXutAY+faDQhQQ==","signatures":[{"sig":"MEQCICrwrXk0yD6FRbgGVMx5gImaK5tz065z7FCD0BWcFQ9KAiBDc3FZUXkhgyQQ6D1PoEkTHWZdAjfE1gm7riOTNk9cmA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahmedrowaihi%2ffn-schema-unplugin@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19255},"main":"./dist/index.js","type":"module","_from":"file:ahmedrowaihi-fn-schema-unplugin-0.2.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./farm":{"types":"./dist/farm.d.ts","import":"./dist/farm.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./rollup":{"types":"./dist/rollup.d.ts","import":"./dist/rollup.js"},"./rspack":{"types":"./dist/rspack.d.ts","import":"./dist/rspack.js"},"./esbuild":{"types":"./dist/esbuild.d.ts","import":"./dist/esbuild.js"},"./webpack":{"types":"./dist/webpack.d.ts","import":"./dist/webpack.js"},"./rolldown":{"types":"./dist/rolldown.d.ts","import":"./dist/rolldown.js"},"./package.json":"./package.json"},"scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"},"_resolved":"/tmp/5605a2e91ea5a2c75911526bb7029406/ahmedrowaihi-fn-schema-unplugin-0.2.0.tgz","_integrity":"sha512-HFpoMLsdQRR8K8+6bjfl/+DW2toOUlCpmVAS6guuEDWxzM4kiInnglp7XgA2di82YGvelU/NMXutAY+faDQhQQ==","repository":{"url":"git+https://github.com/ahmedrowaihi/contract-kit.git","type":"git","directory":"packages/fn-schema/unplugin"},"_npmVersion":"10.8.2","description":"Bundler plugin for fn-schema. Exposes a virtual module that resolves to the extracted bundle, with HMR on source change in dev. Built on unplugin so the same package powers Vite, webpack, Rollup, esbuild, Rspack, Rolldown, and Farm.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"chokidar":"^4.0.3","unplugin":"^3.0.0","fast-glob":"^3.3.3","@ahmedrowaihi/fn-schema-core":"0.2.0","@ahmedrowaihi/fn-schema-typescript":"0.2.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.0","@types/node":"^22","@ahmedrowaihi/tsconfig":"0.0.0"},"_npmOperationalInternal":{"tmp":"tmp/fn-schema-unplugin_0.2.0_1777918213042_0.8480229485069217","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to @ir-kit/fn-schema-unplugin. See https://github.com/ir-kit/ir-kit for migration."},"0.2.1":{"name":"@ahmedrowaihi/fn-schema-unplugin","version":"0.2.1","keywords":["json-schema","function-signature","vite-plugin","webpack-plugin","rollup-plugin","esbuild-plugin","unplugin","hmr"],"author":{"name":"Ahmed Rowaihi","email":"ahmedrowaihi@gmail.com"},"license":"MIT","_id":"@ahmedrowaihi/fn-schema-unplugin@0.2.1","maintainers":[{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"}],"homepage":"https://github.com/ahmedrowaihi/contract-kit/tree/main/packages/fn-schema/unplugin","bugs":{"url":"https://github.com/ahmedrowaihi/contract-kit/issues"},"dist":{"shasum":"cd570aa7698f9a6f712a9d1250484c9287ea2e22","tarball":"https://registry.npmjs.org/@ahmedrowaihi/fn-schema-unplugin/-/fn-schema-unplugin-0.2.1.tgz","fileCount":35,"integrity":"sha512-nXR3ElRzgbUyhRARHVPxDqZcyii+PRoN59eOBlW0RIxbWzwo+nb/fd0Dm5NucxehUBnh8UvJDSI4ALbDRkDwUg==","signatures":[{"sig":"MEUCIQCqCe7UOI5EJuMfwFjMyqYWyxdYyi+f2ehKzsqKS6nPFQIgX7CwL5LCLZGbhywT9XmQzRvgE5YbE5QbBCUBOgrviFI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahmedrowaihi%2ffn-schema-unplugin@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19255},"main":"./dist/index.js","type":"module","_from":"file:ahmedrowaihi-fn-schema-unplugin-0.2.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./farm":{"types":"./dist/farm.d.ts","import":"./dist/farm.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./rollup":{"types":"./dist/rollup.d.ts","import":"./dist/rollup.js"},"./rspack":{"types":"./dist/rspack.d.ts","import":"./dist/rspack.js"},"./esbuild":{"types":"./dist/esbuild.d.ts","import":"./dist/esbuild.js"},"./webpack":{"types":"./dist/webpack.d.ts","import":"./dist/webpack.js"},"./rolldown":{"types":"./dist/rolldown.d.ts","import":"./dist/rolldown.js"},"./package.json":"./package.json"},"scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"},"_resolved":"/tmp/fc46ce9940d4f96ea8058588870e63b0/ahmedrowaihi-fn-schema-unplugin-0.2.1.tgz","_integrity":"sha512-nXR3ElRzgbUyhRARHVPxDqZcyii+PRoN59eOBlW0RIxbWzwo+nb/fd0Dm5NucxehUBnh8UvJDSI4ALbDRkDwUg==","repository":{"url":"git+https://github.com/ahmedrowaihi/contract-kit.git","type":"git","directory":"packages/fn-schema/unplugin"},"_npmVersion":"10.8.2","description":"Bundler plugin for fn-schema. Exposes a virtual module that resolves to the extracted bundle, with HMR on source change in dev. Built on unplugin so the same package powers Vite, webpack, Rollup, esbuild, Rspack, Rolldown, and Farm.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"chokidar":"^4.0.3","unplugin":"^3.0.0","fast-glob":"^3.3.3","@ahmedrowaihi/fn-schema-core":"0.3.0","@ahmedrowaihi/fn-schema-typescript":"0.2.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.0","@types/node":"^22","@ahmedrowaihi/tsconfig":"0.0.0"},"_npmOperationalInternal":{"tmp":"tmp/fn-schema-unplugin_0.2.1_1777978694067_0.9928608543950008","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to @ir-kit/fn-schema-unplugin. See https://github.com/ir-kit/ir-kit for migration."}},"time":{"created":"2026-05-04T18:10:12.976Z","modified":"2026-05-21T09:19:26.631Z","0.2.0":"2026-05-04T18:10:13.204Z","0.2.1":"2026-05-05T10:58:14.205Z"},"bugs":{"url":"https://github.com/ahmedrowaihi/contract-kit/issues"},"author":{"name":"Ahmed Rowaihi","email":"ahmedrowaihi@gmail.com"},"license":"MIT","homepage":"https://github.com/ahmedrowaihi/contract-kit/tree/main/packages/fn-schema/unplugin","keywords":["json-schema","function-signature","vite-plugin","webpack-plugin","rollup-plugin","esbuild-plugin","unplugin","hmr"],"repository":{"url":"git+https://github.com/ahmedrowaihi/contract-kit.git","type":"git","directory":"packages/fn-schema/unplugin"},"description":"Bundler plugin for fn-schema. Exposes a virtual module that resolves to the extracted bundle, with HMR on source change in dev. Built on unplugin so the same package powers Vite, webpack, Rollup, esbuild, Rspack, Rolldown, and Farm.","maintainers":[{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"}],"readme":"# @ahmedrowaihi/fn-schema-unplugin\n\nBundler plugin for fn-schema. Resolves a virtual module to the extracted bundle, with HMR on source change in Vite. Built on [unplugin](https://github.com/unjs/unplugin) — same package powers Vite, webpack, Rollup, esbuild, Rspack, Rolldown, and Farm.\n\n## When to use it\n\nYou have a Vite/Next/webpack app and want fn-schema results available via a regular import — without running the [`cli`](../cli/README.md) as a separate process. The plugin keeps a warm `Project` instance during dev and triggers a reload when source files change.\n\n## Install\n\n```bash\npnpm add -D @ahmedrowaihi/fn-schema-unplugin\n```\n\n## Vite\n\n```ts\n// vite.config.ts\nimport { defineConfig } from \"vite\"\nimport fnSchema from \"@ahmedrowaihi/fn-schema-unplugin/vite\"\n\nexport default defineConfig({\n  plugins: [\n    fnSchema({\n      files: \"src/api/**/*.ts\",\n      schema: { identity: \"x-fn-schema-ts\", transport: \"x-fn-schema-transport\" },\n    }),\n  ],\n})\n```\n\n```ts\n// app code\nimport schemas from \"virtual:fn-schema/bundle\"\nimport { createReader } from \"@ahmedrowaihi/fn-schema-loader\"\n\nconst reader = createReader(schemas)\n```\n\n## Other bundlers\n\n```ts\n// webpack\nconst fnSchema = require(\"@ahmedrowaihi/fn-schema-unplugin/webpack\").default\n\n// rollup\nimport fnSchema from \"@ahmedrowaihi/fn-schema-unplugin/rollup\"\n\n// esbuild\nimport fnSchema from \"@ahmedrowaihi/fn-schema-unplugin/esbuild\"\n```\n\nSubpath exports also exist for `/rspack`, `/rolldown`, `/farm`.\n\n## Options\n\n```ts\ninterface FnSchemaPluginOptions {\n  files: string | string[]            // required\n  cwd?: string                         // default: process.cwd()\n  tsConfigPath?: string\n  virtualModuleId?: string             // default: \"virtual:fn-schema/bundle\"\n  // …all extract options (include, exclude, signature, schema, naming, hooks)\n}\n```\n\n## CLI vs unplugin\n\n| | CLI | unplugin |\n|---|---|---|\n| extra dev process | yes | no |\n| HMR on schema change | manual (your watcher) | built-in (Vite) |\n| works outside a bundler | yes | no |\n| produces disk artifact (`schemas.json`) | yes | no (in-memory) |\n\nUse the CLI when you want a checked-in `schemas.json` — for backend Node servers, deployment validation, or sharing across services. Use unplugin when fn-schema is a per-app dev concern.\n","readmeFilename":"README.md"}