{"_id":"@arlioz/flagship-nuxt","_rev":"5-a52d71f19208fe76e9fdb202ae835d1d","name":"@arlioz/flagship-nuxt","dist-tags":{"latest":"5.1.0"},"versions":{"1.0.0":{"name":"@arlioz/flagship-nuxt","version":"1.0.0","keywords":["feature-flags","flagship","nuxt","nuxt3","ssr","vue","server"],"license":"MIT","_id":"@arlioz/flagship-nuxt@1.0.0","maintainers":[{"name":"amaurylapaque","email":"amaury.lapaque@arlioz.be"}],"homepage":"https://github.com/ALapaque/FlagShip#readme","bugs":{"url":"https://github.com/ALapaque/FlagShip/issues"},"dist":{"shasum":"769502a8a28d873bf584f8072e78be73691ebf98","tarball":"https://registry.npmjs.org/@arlioz/flagship-nuxt/-/flagship-nuxt-1.0.0.tgz","fileCount":13,"integrity":"sha512-053K6wtZ2xjClBRMblF58t35SNHVVSSQL1UXp/OJRigrdNqX8qmub7x2ERYCVadkyhwMTz+vCokikrh6czifXw==","signatures":[{"sig":"MEUCIEulVULTHdolQb2lvwB6HkrjlgvtCr/xoanYe77cEaZlAiEAyLndHD5H6ORF6eJVrm55zGO+CeHjQAw6m5GjAKYtQBQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38136},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./server":{"import":{"types":"./dist/server.d.mts","default":"./dist/server.mjs"},"require":{"types":"./dist/server.d.ts","default":"./dist/server.js"}}},"gitHead":"d2cccb42e7865e11994af3accc5d684fa1614e9a","scripts":{"dev":"tsup --watch","test":"vitest run --coverage","build":"tsup"},"_npmUser":{"name":"amaurylapaque","email":"amaury.lapaque@arlioz.be"},"repository":{"url":"git+https://github.com/ALapaque/FlagShip.git","type":"git","directory":"packages/sdk-nuxt"},"_npmVersion":"10.8.2","description":"Official Nuxt 3 module for FlagShip — SSR-ready feature flags","directories":{},"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","nuxt":"^3.16.0","tsup":"^8.5.1","vitest":"^4.0.18","typescript":"^5.8.3","@arlioz/flagship":"^3.1.1","@vitest/coverage-v8":"^4.0.18"},"peerDependencies":{"vue":">=3.3.0","nuxt":">=3.0.0","@arlioz/flagship":">=3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/flagship-nuxt_1.0.0_1773524274495_0.25697191530306207","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@arlioz/flagship-nuxt","version":"2.0.0","keywords":["feature-flags","flagship","nuxt","nuxt3","ssr","vue","server"],"license":"MIT","_id":"@arlioz/flagship-nuxt@2.0.0","maintainers":[{"name":"amaurylapaque","email":"amaury.lapaque@arlioz.be"}],"homepage":"https://github.com/ALapaque/FlagShip#readme","bugs":{"url":"https://github.com/ALapaque/FlagShip/issues"},"dist":{"shasum":"8c144fa44fa853d1aa57a2e6bb1cc6d776a890bf","tarball":"https://registry.npmjs.org/@arlioz/flagship-nuxt/-/flagship-nuxt-2.0.0.tgz","fileCount":13,"integrity":"sha512-kPVemOB+4ET22vGQALgjOvlbvDIICR8Q4vYbr0vnkQiYBFB6m5jssMUHJEePRx9pYhtF5Y+OJTugebx9R4oKDg==","signatures":[{"sig":"MEQCIBdhMJFQmVBwWViG8+Geqdzw7lau5bqwgJXPa8dIJd2zAiBXEIgYLXTGaL3DpjOVvct1fQy0laXRP+zptU05YYJuBA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38136},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./server":{"import":{"types":"./dist/server.d.mts","default":"./dist/server.mjs"},"require":{"types":"./dist/server.d.ts","default":"./dist/server.js"}}},"gitHead":"a2dd9ada6d6e28fe0e9ca5117092e9498067312c","scripts":{"dev":"tsup --watch","test":"vitest run --coverage","build":"tsup"},"_npmUser":{"name":"amaurylapaque","email":"amaury.lapaque@arlioz.be"},"repository":{"url":"git+https://github.com/ALapaque/FlagShip.git","type":"git","directory":"packages/sdk-nuxt"},"_npmVersion":"10.8.2","description":"Official Nuxt 3 module for FlagShip — SSR-ready feature flags","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","nuxt":"^3.16.0","tsup":"^8.5.1","vitest":"^4.0.18","typescript":"^5.8.3","@arlioz/flagship":"^3.2.0","@vitest/coverage-v8":"^4.0.18"},"peerDependencies":{"vue":">=3.3.0","nuxt":">=3.0.0","@arlioz/flagship":">=3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/flagship-nuxt_2.0.0_1773527640528_0.44933864581880534","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"@arlioz/flagship-nuxt","version":"4.0.0","keywords":["feature-flags","flagship","nuxt","nuxt3","ssr","vue","server"],"license":"MIT","_id":"@arlioz/flagship-nuxt@4.0.0","maintainers":[{"name":"amaurylapaque","email":"amaury.lapaque@arlioz.be"}],"homepage":"https://github.com/ALapaque/FlagShip#readme","bugs":{"url":"https://github.com/ALapaque/FlagShip/issues"},"dist":{"shasum":"5c1776a302ab2828c63e27f74152a9685dd40964","tarball":"https://registry.npmjs.org/@arlioz/flagship-nuxt/-/flagship-nuxt-4.0.0.tgz","fileCount":14,"integrity":"sha512-FiG+Js6orEKklI74p2o36lqr6I4/dBv4JXtmNupM6kq9D9Yd2apHylC21pD3eSvg9MA0R8CV2ke4yeZWJ0wdlw==","signatures":[{"sig":"MEUCIBDZKCe1kvWz5kEKK9yRiCuW1KUHQ9QOKpnO5qNFjJWPAiEA4lmyhyo6XLmqXT0qa6a3fqSgKhOnVecM7Aj8u+izUAM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43409},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./server":{"import":{"types":"./dist/server.d.mts","default":"./dist/server.mjs"},"require":{"types":"./dist/server.d.ts","default":"./dist/server.js"}}},"gitHead":"29cd0d35c079ba49aea37e03918093feb6674901","scripts":{"dev":"tsup --watch","test":"vitest run --coverage","build":"tsup"},"_npmUser":{"name":"amaurylapaque","email":"amaury.lapaque@arlioz.be"},"repository":{"url":"git+https://github.com/ALapaque/FlagShip.git","type":"git","directory":"packages/sdk-nuxt"},"_npmVersion":"10.8.2","description":"Official Nuxt 3 module for FlagShip — SSR-ready feature flags","directories":{},"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","nuxt":"^3.16.0","tsup":"^8.5.1","vitest":"^4.0.18","typescript":"^5.8.3","@arlioz/flagship":"^3.4.0","@vitest/coverage-v8":"^4.0.18"},"peerDependencies":{"vue":">=3.3.0","nuxt":">=3.0.0","@arlioz/flagship":">=3.4.0"},"_npmOperationalInternal":{"tmp":"tmp/flagship-nuxt_4.0.0_1773873247401_0.08166438158565681","host":"s3://npm-registry-packages-npm-production"}},"5.0.0":{"name":"@arlioz/flagship-nuxt","version":"5.0.0","keywords":["feature-flags","flagship","nuxt","nuxt3","ssr","vue","server"],"license":"MIT","_id":"@arlioz/flagship-nuxt@5.0.0","maintainers":[{"name":"amaurylapaque","email":"amaury.lapaque@arlioz.be"}],"homepage":"https://github.com/ALapaque/FlagShip#readme","bugs":{"url":"https://github.com/ALapaque/FlagShip/issues"},"dist":{"shasum":"266f5a2d399c8d8782e0331b7386a20eef583452","tarball":"https://registry.npmjs.org/@arlioz/flagship-nuxt/-/flagship-nuxt-5.0.0.tgz","fileCount":14,"integrity":"sha512-N5ODaoDZZ+6b56BLqM1UbkRRSaggys9x1hIV58PyIUtG04ssySUi9ZJPl5BtqW6blVJfJMURqnAM+bpCqgey0A==","signatures":[{"sig":"MEUCIFRbHDpMBkU1oJgYUbNRR5rnPLVIg9Q2dzwjnba9AWI0AiEA+FxRlE+9vh3qjkFHY6sVY/rr84VO3J5S7aSSM+usnk8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43409},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./server":{"import":{"types":"./dist/server.d.mts","default":"./dist/server.mjs"},"require":{"types":"./dist/server.d.ts","default":"./dist/server.js"}}},"gitHead":"ea36284e85294584df5a761598b9879f058a80e1","scripts":{"dev":"tsup --watch","test":"vitest run --coverage","build":"tsup"},"_npmUser":{"name":"amaurylapaque","email":"amaury.lapaque@arlioz.be"},"repository":{"url":"git+https://github.com/ALapaque/FlagShip.git","type":"git","directory":"packages/sdk-nuxt"},"_npmVersion":"10.8.2","description":"Official Nuxt 3 module for FlagShip — SSR-ready feature flags","directories":{},"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","nuxt":"^3.16.0","tsup":"^8.5.1","vitest":"^4.0.18","typescript":"^5.8.3","@arlioz/flagship":"^3.5.0","@vitest/coverage-v8":"^4.0.18"},"peerDependencies":{"vue":">=3.3.0","nuxt":">=3.0.0","@arlioz/flagship":">=3.5.0"},"_npmOperationalInternal":{"tmp":"tmp/flagship-nuxt_5.0.0_1773952803499_0.6570578407332404","host":"s3://npm-registry-packages-npm-production"}},"5.1.0":{"name":"@arlioz/flagship-nuxt","version":"5.1.0","description":"Official Nuxt 3 module for FlagShip — SSR-ready feature flags","main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./server":{"import":{"types":"./dist/server.d.mts","default":"./dist/server.mjs"},"require":{"types":"./dist/server.d.ts","default":"./dist/server.js"}}},"scripts":{"build":"tsup","dev":"tsup --watch","test":"vitest run --coverage"},"peerDependencies":{"@arlioz/flagship":">=3.5.0","nuxt":">=3.0.0","vue":">=3.3.0"},"devDependencies":{"@arlioz/flagship":"^3.7.0","@vitest/coverage-v8":"^4.0.18","nuxt":"^3.16.0","tsup":"^8.5.1","typescript":"^5.8.3","vitest":"^4.0.18","vue":"^3.5.0"},"publishConfig":{"access":"public"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/ALapaque/FlagShip.git","directory":"packages/sdk-nuxt"},"keywords":["feature-flags","flagship","nuxt","nuxt3","ssr","vue","server"],"_id":"@arlioz/flagship-nuxt@5.1.0","gitHead":"8d8b86e4df6caa95951ca71253a5f0478fe7eb23","bugs":{"url":"https://github.com/ALapaque/FlagShip/issues"},"homepage":"https://github.com/ALapaque/FlagShip#readme","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-2F2SOs9QPmDjlA6QSjp6UfEVLTqChVn0hF+9C8wKHH2S0VxsH0/5RcwoaUQd23jDdV1Y6CXct7SN0RryUDtqZg==","shasum":"315efc83061e6da98fd2f347271243962bc4ed97","tarball":"https://registry.npmjs.org/@arlioz/flagship-nuxt/-/flagship-nuxt-5.1.0.tgz","fileCount":14,"unpackedSize":43951,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHXxqXBKkJYItltxWmHcp1/HumfC8U8e6TEKGFgdJMX4AiAV6odI4qP5G79QZ0RaV74kTkMhTkRiBBBpLZkmZaKJkw=="}]},"_npmUser":{"name":"amaurylapaque","email":"amaury.lapaque@arlioz.be"},"directories":{},"maintainers":[{"name":"amaurylapaque","email":"amaury.lapaque@arlioz.be"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/flagship-nuxt_5.1.0_1776620655417_0.19064637543284912"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-14T21:37:54.385Z","modified":"2026-04-19T17:44:15.698Z","1.0.0":"2026-03-14T21:37:54.641Z","2.0.0":"2026-03-14T22:34:00.675Z","4.0.0":"2026-03-18T22:34:07.533Z","5.0.0":"2026-03-19T20:40:03.630Z","5.1.0":"2026-04-19T17:44:15.574Z"},"bugs":{"url":"https://github.com/ALapaque/FlagShip/issues"},"license":"MIT","homepage":"https://github.com/ALapaque/FlagShip#readme","keywords":["feature-flags","flagship","nuxt","nuxt3","ssr","vue","server"],"repository":{"type":"git","url":"git+https://github.com/ALapaque/FlagShip.git","directory":"packages/sdk-nuxt"},"description":"Official Nuxt 3 module for FlagShip — SSR-ready feature flags","maintainers":[{"name":"amaurylapaque","email":"amaury.lapaque@arlioz.be"}],"readme":"<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/ALapaque/FlagShip/main/apps/website/public/favicon.svg\" width=\"56\" height=\"56\" alt=\"FlagShip logo\" />\n</p>\n\n<h1 align=\"center\">@arlioz/flagship-nuxt</h1>\n\n<p align=\"center\">\n  <strong>SSR-ready feature flags for Nuxt 3.</strong><br />\n  Official Nuxt SDK for <a href=\"https://github.com/ALapaque/FlagShip\">FlagShip</a> — the open-source feature flag platform built for startups.\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/@arlioz/flagship-nuxt\"><img src=\"https://img.shields.io/npm/v/@arlioz/flagship-nuxt?color=6366f1&labelColor=0a0a0a&style=flat-square\" alt=\"npm version\" /></a>\n  <a href=\"https://www.npmjs.com/package/@arlioz/flagship-nuxt\"><img src=\"https://img.shields.io/npm/dm/@arlioz/flagship-nuxt?color=818cf8&labelColor=0a0a0a&style=flat-square\" alt=\"npm downloads\" /></a>\n  <a href=\"https://github.com/ALapaque/FlagShip/blob/main/LICENSE\"><img src=\"https://img.shields.io/badge/license-MIT-22c55e?labelColor=0a0a0a&style=flat-square\" alt=\"license\" /></a>\n  <img src=\"https://img.shields.io/badge/coverage-100%25-22c55e?labelColor=0a0a0a&style=flat-square\" alt=\"coverage\" />\n</p>\n\n<br />\n\n---\n\n<br />\n\n## Install\n\n```bash\nnpm install @arlioz/flagship-nuxt @arlioz/flagship\n```\n\n> `@arlioz/flagship`, `vue`, and `nuxt` are peer dependencies.\n\n<br />\n\n## Quick Start\n\n### 1. Create a Nuxt plugin\n\n```ts\n// plugins/flagship.ts\nimport { createFlagShipContext, startClientPolling } from '@arlioz/flagship-nuxt'\nimport { fetchFlags } from '@arlioz/flagship-nuxt/server'\n\nexport default defineNuxtPlugin(async (nuxtApp) => {\n  const initialFlags = import.meta.server\n    ? await fetchFlags({\n        apiKey: useRuntimeConfig().flagshipApiKey,\n        baseUrl: useRuntimeConfig().flagshipApiUrl,\n      })\n    : undefined\n\n  const isServer = import.meta.server\n  const flagState = useState('flagship-flags', () => initialFlags ?? {})\n\n  const context = createFlagShipContext(\n    {\n      apiKey: useRuntimeConfig().public.flagshipApiKey,\n      initialFlags: flagState.value,\n    },\n    isServer,\n  )\n\n  if (!isServer) {\n    const cleanup = startClientPolling(\n      context,\n      30000,\n      (flags) => {\n        flagState.value = flags\n      },\n      () => {},\n    )\n    nuxtApp.hook('app:unmounted', cleanup)\n  }\n\n  return { provide: { flagship: context } }\n})\n```\n\n### 2. Use flags in components\n\n```vue\n<script setup>\nimport { getFlag } from '@arlioz/flagship-nuxt'\n\nconst { $flagship } = useNuxtApp()\nconst darkMode = getFlag($flagship, 'dark-mode', false)\n</script>\n\n<template>\n  <DarkTheme v-if=\"darkMode\" />\n  <LightTheme v-else />\n</template>\n```\n\n### 3. Use flags in server routes\n\n```ts\n// server/api/feature.ts\nimport { fetchFlag } from '@arlioz/flagship-nuxt/server'\n\nexport default defineEventHandler(async () => {\n  const enabled = await fetchFlag(\n    { apiKey: useRuntimeConfig().flagshipApiKey },\n    'new-checkout',\n    false,\n  )\n  return { enabled }\n})\n```\n\n<br />\n\n## Two Entry Points\n\n| Import                         | Use in                    | Description                   |\n| ------------------------------ | ------------------------- | ----------------------------- |\n| `@arlioz/flagship-nuxt`        | Nuxt plugins, components  | Context, composables          |\n| `@arlioz/flagship-nuxt/server` | Server routes, middleware | `fetchFlags()`, `fetchFlag()` |\n\n<br />\n\n## API — Client\n\n| Function                                               | Return                | Description                      |\n| ------------------------------------------------------ | --------------------- | -------------------------------- |\n| `createFlagShipContext(options, isServer)`             | `FlagShipNuxtContext` | Create SSR-aware context         |\n| `startClientPolling(ctx, interval, onUpdate, onReady)` | `() => void`          | Start polling, returns cleanup   |\n| `getFlag(ctx, key, default?)`                          | `T`                   | Single flag value                |\n| `getFlags(ctx)`                                        | `Record<string, any>` | All flags                        |\n| `isLoading(ctx)`                                       | `boolean`             | Loading state                    |\n| `getClient(ctx)`                                       | `FlagShip \\| null`    | Client instance (null on server) |\n\n## API — Server\n\n| Function                            | Return                         | Description                      |\n| ----------------------------------- | ------------------------------ | -------------------------------- |\n| `fetchFlags(options)`               | `Promise<Record<string, any>>` | Fetch all flags (auto-cleanup)   |\n| `fetchFlag(options, key, default?)` | `Promise<T>`                   | Fetch single flag (auto-cleanup) |\n| `FlagShipServer`                    | class                          | Long-lived server client         |\n\n<br />\n\n## SSR Benefits\n\n- **No hydration mismatch** — flags fetched server-side, hydrated via `useState`\n- **No flash of default content** — correct on first render\n- **Client-side polling** — flags update automatically after hydration\n\n<br />\n\n## Compatibility\n\n- Nuxt >= 3.0.0\n- Vue >= 3.3.0\n\n<br />\n\n## License\n\nMIT — [Arlioz](https://arlioz.be)\n","readmeFilename":"README.md"}