{"_id":"@aid-on/qwiks","_rev":"3-7e7c60901c0f3640ae63dcd53d0a9b57","name":"@aid-on/qwiks","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.1":{"name":"@aid-on/qwiks","version":"0.1.1","keywords":["qwik","nagare","streaming","reactive","edge","cloudflare-workers","sse","llm"],"author":{"name":"Aid-On"},"license":"MIT","_id":"@aid-on/qwiks@0.1.1","maintainers":[{"name":"aid-on","email":"hiromi.motodera@aid-on.org"}],"homepage":"https://github.com/Aid-On/aid-on-platform#readme","bugs":{"url":"https://github.com/Aid-On/aid-on-platform/issues"},"dist":{"shasum":"f9cc322a7aa9d60bea04ba994f0cbda98f8fbd40","tarball":"https://registry.npmjs.org/@aid-on/qwiks/-/qwiks-0.1.1.tgz","fileCount":18,"integrity":"sha512-UhLC90UpfonVanZk7ANiPum5F+mJQD9KoNXYAG6kGDgbXSyEMWsMQgu5Xh+PSCktb+mRyjgy5LSC59/XmiM/+Q==","signatures":[{"sig":"MEUCIAIXcRAXrShUY8qYNm6Saqb7da3vweKNNBt4WQZIw1NfAiEA022j/fC9jv8FCHqf8SV1LBvG9fk51tHdJX3TB82mmMY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52802},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"45f550388ad3243b44a0c55acee0004baad4e91e","scripts":{"test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"aid-on","email":"hiromi.motodera@aid-on.org"},"repository":{"url":"git+https://github.com/Aid-On/aid-on-platform.git","type":"git","directory":"packages/qwiks"},"_npmVersion":"10.8.2","description":"Pure Qwik + Nagare Stream<T> Integration - 汎用ストリーム処理ライブラリ","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@aid-on/nagare":"file:../nagare","@builder.io/qwik":"^1.10.2"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.8","typescript":"^5.7.2"},"peerDependencies":{"@builder.io/qwik":"^1.10.0"},"_npmOperationalInternal":{"tmp":"tmp/qwiks_0.1.1_1771341593522_0.25963649517125975","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@aid-on/qwiks","version":"0.1.2","keywords":["qwik","nagare","streaming","reactive","edge","cloudflare-workers","sse","llm"],"author":{"name":"Aid-On"},"license":"MIT","_id":"@aid-on/qwiks@0.1.2","maintainers":[{"name":"aid-on","email":"hiromi.motodera@aid-on.org"}],"homepage":"https://github.com/Aid-On/aid-on-platform#readme","bugs":{"url":"https://github.com/Aid-On/aid-on-platform/issues"},"dist":{"shasum":"2ee7001027b9229d638bae50b6614cb2694fa6c5","tarball":"https://registry.npmjs.org/@aid-on/qwiks/-/qwiks-0.1.2.tgz","fileCount":18,"integrity":"sha512-WwrzGA516OjUlyxGU7UoF1iUMaar0ecNe0NcKxpa1RdrQS9pWfg8Z/a7IWm+DsCwKtWmy+TnREl5uDB+H7RlZA==","signatures":[{"sig":"MEYCIQCmiJ5vEiyIFhHZfBL572ql7FLtzQ4/sUr79NRUrppwIwIhAJQImSs1UDBhLA2XBleIcFuQ6C2/GalE9+Yps7407fg2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52794},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"45f550388ad3243b44a0c55acee0004baad4e91e","scripts":{"test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"aid-on","email":"hiromi.motodera@aid-on.org"},"repository":{"url":"git+https://github.com/Aid-On/aid-on-platform.git","type":"git","directory":"packages/qwiks"},"_npmVersion":"10.8.2","description":"Pure Qwik + Nagare Stream<T> Integration - 汎用ストリーム処理ライブラリ","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@aid-on/nagare":"^0.2.3","@builder.io/qwik":"^1.10.2"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.8","typescript":"^5.7.2"},"peerDependencies":{"@builder.io/qwik":"^1.10.0"},"_npmOperationalInternal":{"tmp":"tmp/qwiks_0.1.2_1771343144931_0.31938880888595267","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@aid-on/qwiks","version":"0.1.4","description":"Pure Qwik + Nagare Stream<T> Integration - 汎用ストリーム処理ライブラリ","type":"module","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"scripts":{"build":"tsc","typecheck":"tsc --noEmit","test":"vitest run","test:watch":"vitest"},"dependencies":{"@aid-on/nagare":"^0.2.5","@builder.io/qwik":"^1.10.2"},"devDependencies":{"typescript":"^5.7.2","vitest":"^2.1.8"},"peerDependencies":{"@builder.io/qwik":"^1.10.0"},"keywords":["qwik","nagare","streaming","reactive","edge","cloudflare-workers","sse","llm"],"author":{"name":"Aid-On"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/Aid-On/aid-on-platform.git","directory":"packages/qwiks"},"_id":"@aid-on/qwiks@0.1.4","bugs":{"url":"https://github.com/Aid-On/aid-on-platform/issues"},"homepage":"https://github.com/Aid-On/aid-on-platform#readme","_nodeVersion":"20.19.6","_npmVersion":"10.8.2","dist":{"integrity":"sha512-DFr57KR6cbmdAdT9QA9k/bS3uH5vniCDsmAU41Qw+19oSH7mQ4J+k/vhfwDVuQZWa+uTil9+es1ic4jfevfTqw==","shasum":"88d3874fb0529e62d11e20f85e53dac38e4a85ee","tarball":"https://registry.npmjs.org/@aid-on/qwiks/-/qwiks-0.1.4.tgz","fileCount":19,"unpackedSize":55897,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDQITuPAhZzs4UxbvPuWcGcvHEFISEUHoXzmctkJI33JwIgSPtqZl/fO8uHJAeFyyfSk3WbrEfq/eSeMFnSYT3iZBw="}]},"_npmUser":{"name":"aid-on","email":"hiromi.motodera@aid-on.org"},"directories":{},"maintainers":[{"name":"aid-on","email":"hiromi.motodera@aid-on.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/qwiks_0.1.4_1771435085105_0.38263511821646334"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-17T15:19:53.454Z","modified":"2026-02-18T17:18:05.369Z","0.1.1":"2026-02-17T15:19:53.659Z","0.1.2":"2026-02-17T15:45:45.093Z","0.1.4":"2026-02-18T17:18:05.265Z"},"bugs":{"url":"https://github.com/Aid-On/aid-on-platform/issues"},"author":{"name":"Aid-On"},"license":"MIT","homepage":"https://github.com/Aid-On/aid-on-platform#readme","keywords":["qwik","nagare","streaming","reactive","edge","cloudflare-workers","sse","llm"],"repository":{"type":"git","url":"git+https://github.com/Aid-On/aid-on-platform.git","directory":"packages/qwiks"},"description":"Pure Qwik + Nagare Stream<T> Integration - 汎用ストリーム処理ライブラリ","maintainers":[{"name":"aid-on","email":"hiromi.motodera@aid-on.org"}],"readme":"# @aid-on/qwiks\n\n<div align=\"center\">\n\n[![npm version](https://img.shields.io/npm/v/@aid-on/qwiks.svg?style=flat-square&color=00DC82)](https://www.npmjs.com/package/@aid-on/qwiks)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.7+-3178C6?style=flat-square&logo=typescript&logoColor=white)](https://www.typescriptlang.org/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](https://opensource.org/licenses/MIT)\n\n**Qwik x nagare Stream&lt;T&gt; integration**\n\nHook library that seamlessly bridges Nagare Streams to Qwik Signals\n\n**English** | [日本語](README.ja.md)\n\n</div>\n\n## Why qwiks?\n\n### nagare Stream&lt;T&gt; → Qwik Signal\n\n```typescript\n// Use nagare Streams directly in Qwik components\nconst aiResponse = useStreamText(() =>\n  unilmp.stream(\"Hello AI\")  // Returns nagare Stream<string>\n);\n\n// Automatically converted to Qwik Signals\nreturn <div>{aiResponse.text}</div>  // Reactively updates\n```\n\n### Edge-Optimized\n\n- Full Cloudflare Workers support\n- Native WebStreams\n- Memory-efficient streaming\n- Backpressure handling\n\n### Aid-On Ecosystem Integration\n\n```typescript\n// Integrates with all Aid-On libraries\nuseStream(() => unilmp.stream(...))     // LLM streaming\nuseStream(() => embersm.watch(...))     // Memory updates\nuseStream(() => synapser.reports(...))  // Agent reports\n```\n\n## Installation\n\n```bash\nnpm install @aid-on/qwiks\n```\n\n## Usage\n\n### useStreamText - Text Streaming\n\n```typescript\nimport { component$ } from \"@builder.io/qwik\";\nimport { useStreamText } from \"@aid-on/qwiks\";\nimport { unilmp } from \"@aid-on/unilmp\";\n\nexport default component$(() => {\n  const chat = useStreamText(() =>\n    unilmp()\n      .model(\"groq:llama-3.3-70b-versatile\")\n      .credentials({ groqApiKey: \"...\" })\n      .stream(\"Tell me a story\")\n  );\n\n  return (\n    <div>\n      <div class=\"message\">{chat.text}</div>\n\n      <div class=\"status\">\n        {chat.status === \"streaming\" && \"Generating...\"}\n        {chat.status === \"completed\" && \"Done\"}\n        {chat.status === \"error\" && `Error: ${chat.error}`}\n      </div>\n\n      <div class=\"metrics\">\n        Characters: {chat.metrics.charCount}\n        Words: {chat.metrics.wordCount}\n      </div>\n\n      <button onClick$={chat.stop}>Stop</button>\n      <button onClick$={chat.restart}>Restart</button>\n    </div>\n  );\n});\n```\n\n### useStream - Generic Streaming\n\n```typescript\nimport { useStream } from \"@aid-on/qwiks\";\nimport type { Stream } from \"@aid-on/nagare\";\n\ninterface DataEvent {\n  timestamp: number;\n  value: number;\n}\n\nexport default component$(() => {\n  const dataStream = useStream<DataEvent>(() =>\n    createDataStream()  // Returns Stream<DataEvent>\n  );\n\n  return (\n    <div>\n      <div>Value: {dataStream.value?.value}</div>\n      <ul>\n        {dataStream.history.map((event, i) => (\n          <li key={i}>\n            {event.timestamp}: {event.value}\n          </li>\n        ))}\n      </ul>\n    </div>\n  );\n});\n```\n\n### useStreamArray - Array Streaming\n\n```typescript\nimport { useStreamArray } from \"@aid-on/qwiks\";\n\nexport default component$(() => {\n  const items = useStreamArray<string>(() =>\n    stream.array([\"item1\", \"item2\", \"item3\"])\n      .throttle(1000)\n  );\n\n  return (\n    <ul>\n      {items.array.map((item, i) => (\n        <li key={i}>{item}</li>\n      ))}\n    </ul>\n  );\n});\n```\n\n### useSSEStream - Server-Sent Events\n\n```typescript\nimport { useSSEStream } from \"@aid-on/qwiks\";\n\nexport default component$(() => {\n  const events = useSSEStream(\"/api/events\");\n\n  return (\n    <div>\n      <div class={`status ${events.status}`}>\n        {events.status === \"connecting\" && \"Connecting...\"}\n        {events.status === \"streaming\" && \"Connected\"}\n        {events.status === \"error\" && \"Error\"}\n      </div>\n\n      <div class=\"events\">\n        {events.history.slice(-10).map((event, i) => (\n          <div key={i}>{event.type}: {event.data}</div>\n        ))}\n      </div>\n    </div>\n  );\n});\n```\n\n## API Reference\n\n### useStreamText\n\nHook for text streaming.\n\n```typescript\nfunction useStreamText(\n  streamFactory: QRL<() => Stream<string>>,\n  options?: UseStreamTextOptions\n): StreamTextState\n\ninterface StreamTextState {\n  text: string;                 // Accumulated text\n  chunks: string[];             // Chunk array\n  status: StreamStatus;         // Stream status\n  error: Error | null;          // Error info\n  stop: () => void;             // Stop streaming\n  restart: () => Promise<void>; // Restart streaming\n  metrics: {\n    charCount: number;          // Character count\n    wordCount: number;          // Word count\n    lineCount: number;          // Line count\n  };\n}\n```\n\n### useStream\n\nGeneric streaming hook.\n\n```typescript\nfunction useStream<T>(\n  streamFactory: QRL<() => Stream<T>>,\n  options?: UseStreamOptions\n): StreamState<T>\n\ninterface StreamState<T> {\n  value: T | null;              // Latest value\n  history: T[];                 // Full history\n  status: StreamStatus;         // Status\n  error: Error | null;          // Error\n  stop: () => void;             // Stop\n  restart: () => Promise<void>; // Restart\n}\n```\n\n### useStreamArray\n\nArray streaming hook.\n\n```typescript\nfunction useStreamArray<T>(\n  streamFactory: QRL<() => Stream<T>>,\n  options?: UseStreamArrayOptions\n): StreamArrayState<T>\n\ninterface StreamArrayState<T> {\n  array: T[];                   // Accumulated array\n  latest: T | null;             // Latest element\n  status: StreamStatus;         // Status\n  error: Error | null;          // Error\n  stop: () => void;             // Stop\n  restart: () => Promise<void>; // Restart\n  clear: () => void;            // Clear array\n}\n```\n\n## Ecosystem Integration\n\nqwiks integrates with all Aid-On Platform libraries:\n\n- **[@aid-on/nagare](https://github.com/Aid-On/nagare)** - Stream foundation\n- **[@aid-on/unillm](https://github.com/Aid-On/unillm)** - LLM streaming\n- **[@aid-on/embersm](https://github.com/Aid-On/embersm)** - Memory system\n- **[@aid-on/synapser](https://github.com/Aid-On/synapser)** - Agent framework\n\n## License\n\nMIT\n","readmeFilename":"README.md"}