{"_id":"@dooo/voice-product-search","_rev":"5-9903c4f9a876ed079221ab7231942c04","name":"@dooo/voice-product-search","dist-tags":{"next":"0.1.1","latest":"0.1.3"},"versions":{"0.1.0":{"name":"@dooo/voice-product-search","version":"0.1.0","keywords":["vietnamese","search","autocomplete","fuzzy","voice","product-search","typescript","offline"],"author":{"url":"https://dooo.vn","name":"dooo.vn"},"license":"MIT","_id":"@dooo/voice-product-search@0.1.0","maintainers":[{"name":"dooo","email":"dev.anhtuan@gmail.com"}],"contributors":[{"url":"https://dooo.vn","name":"dooo.vn"}],"homepage":"https://dooo.vn","bugs":{"url":"https://github.com/dooo-vn/voice-product-search/issues"},"dist":{"shasum":"eea58768292b14f3c78cb9faa90124012762239c","tarball":"https://registry.npmjs.org/@dooo/voice-product-search/-/voice-product-search-0.1.0.tgz","fileCount":11,"integrity":"sha512-5rrwrS6jXSm+BIMr/1ZsDbIljgi+hl9QwYJewm9qi/xAHBE+fiqXBPVSTWqF9bK0C1DBE22QlXWrOa+yO9wEkQ==","signatures":[{"sig":"MEUCIAvnIGQwJntuTXeZ3iPYV32E2U2Vxu/MroDCeHvS6ObhAiEA2mmFLCWLwPQa9ewLMnUP5a9HoKZrfEtyLKwfTKvCR9E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":305781},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs"}},"./package.json":"./package.json"},"scripts":{"lint":"eslint src tests benchmarks --max-warnings 0","test":"vitest run","bench":"tsx benchmarks/search.bench.ts && tsx benchmarks/indexing.bench.ts","build":"tsup","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","bench:search":"tsx benchmarks/search.bench.ts","format:check":"prettier --check .","bench:indexing":"tsx benchmarks/indexing.bench.ts","prepublishOnly":"npm run typecheck && npm run test && npm run build"},"_npmUser":{"name":"dooo","email":"dev.anhtuan@gmail.com"},"repository":{"url":"git+https://github.com/dooo-vn/voice-product-search.git","type":"git"},"_npmVersion":"11.19.0","description":"Fast Vietnamese product autocomplete and voice command parsing for TypeScript","directories":{},"sideEffects":false,"_nodeVersion":"20.20.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.3.6","eslint":"^9.21.0","vitest":"^3.0.7","prettier":"^3.5.2","@eslint/js":"^9.21.0","typescript":"^5.7.3","@types/node":"^22.13.5","typescript-eslint":"^8.25.0"},"_npmOperationalInternal":{"tmp":"tmp/voice-product-search_0.1.0_1788525459464_0.7853536540278454","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@dooo/voice-product-search","version":"0.1.1","keywords":["vietnamese","search","autocomplete","fuzzy","voice","product-search","typescript","offline"],"author":{"url":"https://dooo.vn","name":"dooo.vn"},"license":"MIT","_id":"@dooo/voice-product-search@0.1.1","maintainers":[{"name":"dooo","email":"dev.anhtuan@gmail.com"}],"contributors":[{"url":"https://dooo.vn","name":"dooo.vn"}],"homepage":"https://dooo.vn","bugs":{"url":"https://github.com/dooo-vn/voice-product-search/issues"},"dist":{"shasum":"2852e44c24a0f2e068be5df1876294d0cddc95a1","tarball":"https://registry.npmjs.org/@dooo/voice-product-search/-/voice-product-search-0.1.1.tgz","fileCount":11,"integrity":"sha512-cBNvCMo5hjqg/kvcqBiWvjeApUFXWJPJGpt3a/u1Q1iblBidrkgLeh6o9R7iInaqPsu9DervcYUi/nYyLwZYIw==","signatures":[{"sig":"MEYCIQDZ5++rq5HEKhkEjew5CRvw5TweE4BhH8kFO5en8RRdsQIhAPvUwgERAYvGN7O3P55q/NWWNbQA2VTEnFVYl6DcbFZ/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":305877},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs"}},"./package.json":"./package.json"},"scripts":{"lint":"eslint src tests benchmarks --max-warnings 0","test":"vitest run","bench":"tsx benchmarks/search.bench.ts && tsx benchmarks/indexing.bench.ts","build":"tsup","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","bench:search":"tsx benchmarks/search.bench.ts","format:check":"prettier --check .","bench:indexing":"tsx benchmarks/indexing.bench.ts","prepublishOnly":"npm run typecheck && npm run test && npm run build"},"_npmUser":{"name":"dooo","email":"dev.anhtuan@gmail.com"},"repository":{"url":"git+https://github.com/dooo-vn/voice-product-search.git","type":"git"},"_npmVersion":"11.19.0","description":"Fast Vietnamese product autocomplete and voice command parsing for TypeScript","directories":{},"sideEffects":false,"_nodeVersion":"20.20.1","dependencies":{},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.3.6","eslint":"^9.21.0","vitest":"^3.0.7","prettier":"^3.5.2","@eslint/js":"^9.21.0","typescript":"^5.7.3","@types/node":"^22.13.5","typescript-eslint":"^8.25.0"},"_npmOperationalInternal":{"tmp":"tmp/voice-product-search_0.1.1_1788525577852_0.031970641563098035","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@dooo/voice-product-search","version":"0.1.2","keywords":["vietnamese","multilingual","search","autocomplete","fuzzy","voice","product-search","react","typescript","offline"],"author":{"url":"https://dooo.vn","name":"dooo.vn"},"license":"MIT","_id":"@dooo/voice-product-search@0.1.2","maintainers":[{"name":"dooo","email":"dev.anhtuan@gmail.com"}],"contributors":[{"url":"https://dooo.vn","name":"dooo.vn"}],"homepage":"https://dooo.vn","bugs":{"url":"https://github.com/dooo-vn/voice-product-search/issues"},"dist":{"shasum":"31821fcbd88c290becf0190fe6391d44376de2a8","tarball":"https://registry.npmjs.org/@dooo/voice-product-search/-/voice-product-search-0.1.2.tgz","fileCount":26,"integrity":"sha512-x7tYVznSifwrWqpAzHVRCn5IeIyfA3/FnUYXGyW3RjWseuUYAFSy1DUsuN1weVsJfdNShOAW1qiFzhinsF7j/w==","signatures":[{"sig":"MEQCIQDwCnDqp9VG+XowDE0OGjBEduIbqwDnPXRPnX94Z3IDDQIfdDEJjX9Iz/KWFlz2PYGlsMFp0N43lXE+FBTkqh7kfA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3885257},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"require":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.cjs"}},"./web-speech":{"import":{"types":"./dist/web-speech/index.d.ts","default":"./dist/web-speech/index.js"},"require":{"types":"./dist/web-speech/index.d.ts","default":"./dist/web-speech/index.cjs"}},"./package.json":"./package.json","./react/voice.css":"./dist/react/voice.css"},"scripts":{"demo":"npm run build && vite examples/demo --config examples/demo/vite.config.ts","lint":"eslint src tests benchmarks --max-warnings 0","test":"vitest run","bench":"tsx benchmarks/search.bench.ts && tsx benchmarks/indexing.bench.ts","build":"tsup","format":"prettier --write .","demo:gif":"node scripts/capture-demo-gif.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","bench:search":"tsx benchmarks/search.bench.ts","format:check":"prettier --check .","bench:indexing":"tsx benchmarks/indexing.bench.ts","prepublishOnly":"npm run typecheck && npm run test && npm run build"},"_npmUser":{"name":"dooo","email":"dev.anhtuan@gmail.com"},"repository":{"url":"git+https://github.com/dooo-vn/voice-product-search.git","type":"git"},"_npmVersion":"11.19.0","description":"Fast multilingual product autocomplete and voice command parsing for TypeScript, with React UI","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.20.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","clsx":"^2.1.1","cmdk":"^1.1.1","tsup":"^8.3.6","vite":"^6.2.0","jsdom":"^26.0.0","pngjs":"^7.0.0","react":"^19.0.0","eslint":"^9.21.0","vitest":"^3.0.7","prettier":"^3.5.2","react-dom":"^19.0.0","@eslint/js":"^9.21.0","playwright":"^1.63.0","typescript":"^5.7.3","@types/node":"^22.13.5","tailwindcss":"^4.3.3","@types/react":"^19.0.10","lucide-react":"^1.41.0","gif-encoder-2":"^1.0.5","tailwind-merge":"^3.6.0","tw-animate-css":"^1.4.0","@tailwindcss/cli":"^4.3.3","@types/react-dom":"^19.0.4","@tailwindcss/vite":"^4.3.3","typescript-eslint":"^8.25.0","@radix-ui/react-slot":"^1.3.3","@vitejs/plugin-react":"^4.3.4","@radix-ui/react-dialog":"^1.1.23","@radix-ui/react-select":"^2.3.7","@testing-library/react":"^16.2.0","@radix-ui/react-tooltip":"^1.2.16","@radix-ui/react-progress":"^1.1.16","class-variance-authority":"^0.7.1","@radix-ui/react-separator":"^1.1.15","@radix-ui/react-scroll-area":"^1.2.18","@radix-ui/react-dropdown-menu":"^2.1.24"},"peerDependencies":{"react":">=18","react-dom":">=18","lucide-react":">=0.400.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true},"lucide-react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/voice-product-search_0.1.2_1788761222415_0.9189588986058859","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@dooo/voice-product-search","version":"0.1.3","description":"Fast multilingual product autocomplete and voice command parsing for TypeScript, with React UI","license":"MIT","author":{"name":"dooo.vn","url":"https://dooo.vn"},"contributors":[{"name":"dooo.vn","url":"https://dooo.vn"}],"type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"require":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.cjs"}},"./react/voice.css":"./dist/react/voice.css","./web-speech":{"import":{"types":"./dist/web-speech/index.d.ts","default":"./dist/web-speech/index.js"},"require":{"types":"./dist/web-speech/index.d.ts","default":"./dist/web-speech/index.cjs"}},"./package.json":"./package.json"},"sideEffects":["**/*.css"],"engines":{"node":">=18"},"scripts":{"build":"tsup","typecheck":"tsc --noEmit","lint":"eslint src tests benchmarks --max-warnings 0","test":"vitest run","test:watch":"vitest","bench":"tsx benchmarks/search.bench.ts && tsx benchmarks/indexing.bench.ts","bench:search":"tsx benchmarks/search.bench.ts","bench:indexing":"tsx benchmarks/indexing.bench.ts","format":"prettier --write .","format:check":"prettier --check .","demo":"npm run build && vite examples/demo --config examples/demo/vite.config.ts","demo:build":"vite build examples/demo --config examples/demo/vite.config.ts","demo:gif":"node scripts/capture-demo-gif.mjs","prepublishOnly":"npm run typecheck && npm run test && npm run build"},"keywords":["vietnamese","multilingual","search","autocomplete","fuzzy","voice","product-search","react","typescript","offline"],"repository":{"type":"git","url":"git+https://github.com/dooo-vn/voice-product-search.git"},"bugs":{"url":"https://github.com/dooo-vn/voice-product-search/issues"},"homepage":"https://dooo.vn","peerDependencies":{"lucide-react":">=0.400.0","react":">=18","react-dom":">=18"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true},"lucide-react":{"optional":true}},"devDependencies":{"@eslint/js":"^9.21.0","@radix-ui/react-dialog":"^1.1.23","@radix-ui/react-dropdown-menu":"^2.1.24","@radix-ui/react-progress":"^1.1.16","@radix-ui/react-scroll-area":"^1.2.18","@radix-ui/react-select":"^2.3.7","@radix-ui/react-separator":"^1.1.15","@radix-ui/react-slot":"^1.3.3","@radix-ui/react-tooltip":"^1.2.16","@tailwindcss/cli":"^4.3.3","@tailwindcss/vite":"^4.3.3","@testing-library/react":"^16.2.0","@types/node":"^22.13.5","@types/react":"^19.0.10","@types/react-dom":"^19.0.4","@vitejs/plugin-react":"^4.3.4","class-variance-authority":"^0.7.1","clsx":"^2.1.1","cmdk":"^1.1.1","eslint":"^9.21.0","gif-encoder-2":"^1.0.5","jsdom":"^26.0.0","lucide-react":"^1.41.0","playwright":"^1.63.0","pngjs":"^7.0.0","prettier":"^3.5.2","react":"^19.0.0","react-dom":"^19.0.0","tailwind-merge":"^3.6.0","tailwindcss":"^4.3.3","tsup":"^8.3.6","tsx":"^4.19.3","tw-animate-css":"^1.4.0","typescript":"^5.7.3","typescript-eslint":"^8.25.0","vite":"^6.2.0","vitest":"^3.0.7"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"gitHead":"ca89cb08f22565e0adbe2bd1bc388eed9f75e27f","_id":"@dooo/voice-product-search@0.1.3","_nodeVersion":"20.20.1","_npmVersion":"11.19.0","dist":{"integrity":"sha512-AF8mDln5KrJiZahbvHap2nILhBfzXXWh3v4UimTUEMabTZOVrzr1Y7WbBsdwnQtyag4C9wjxO/wnNJtIWCInpw==","shasum":"6675205ad5e7e63fc1bc267fe510977e85884d60","tarball":"https://registry.npmjs.org/@dooo/voice-product-search/-/voice-product-search-0.1.3.tgz","fileCount":26,"unpackedSize":4110442,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD1tbLlBkl9I/4b6o7tMNcth8OPynj93sCOrmtH4FxP/wIhANZx8fBGioQp+/M9/WO0kIR6z6ic7ZCArNOKngeZ8kA5"}]},"_npmUser":{"name":"dooo","email":"dev.anhtuan@gmail.com"},"directories":{},"maintainers":[{"name":"dooo","email":"dev.anhtuan@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/voice-product-search_0.1.3_1788771651211_0.7273885142885972"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-04T12:37:39.282Z","modified":"2026-09-07T09:00:51.564Z","0.1.0":"2026-09-04T12:37:39.622Z","0.1.1":"2026-09-04T12:39:38.013Z","0.1.2":"2026-09-07T06:07:02.611Z","0.1.3":"2026-09-07T09:00:51.391Z"},"bugs":{"url":"https://github.com/dooo-vn/voice-product-search/issues"},"author":{"name":"dooo.vn","url":"https://dooo.vn"},"license":"MIT","homepage":"https://dooo.vn","keywords":["vietnamese","multilingual","search","autocomplete","fuzzy","voice","product-search","react","typescript","offline"],"repository":{"type":"git","url":"git+https://github.com/dooo-vn/voice-product-search.git"},"description":"Fast multilingual product autocomplete and voice command parsing for TypeScript, with React UI","contributors":[{"name":"dooo.vn","url":"https://dooo.vn"}],"maintainers":[{"name":"dooo","email":"dev.anhtuan@gmail.com"}],"readme":"# Voice Product Search\n\n```text\nVoice Product Search\n─────────────────────\n\nFast multilingual product autocomplete\nand Gemini-inspired voice UI for TypeScript.\n```\n\n[![npm](https://img.shields.io/npm/v/@dooo/voice-product-search.svg)](https://www.npmjs.com/package/@dooo/voice-product-search)\n[![Live Demo](https://img.shields.io/badge/demo-Vercel-000000)](https://vietnamese-voice-search.vercel.app)\n[![CI](https://img.shields.io/badge/CI-GitHub%20Actions-2088FF)](../../actions)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)\n[![TypeScript](https://img.shields.io/badge/TypeScript-strict-3178C6)](./tsconfig.json)\n[![deps](https://img.shields.io/badge/core%20dependencies-0-success)](./package.json)\n[![dooo.vn](https://img.shields.io/badge/copyright-dooo.vn-0B6E4F)](https://dooo.vn)\n\n> **Copyright © 2026 [dooo.vn](https://dooo.vn)** · MIT License  \n> **Package:** [`@dooo/voice-product-search`](https://www.npmjs.com/package/@dooo/voice-product-search)\n\n![Voice Product Search demo](./docs/media/demo.gif)\n\nHigh-performance indexed product search + multilingual voice parsing + polished React voice UI.\n\n## Features\n\n- Indexed autocomplete for 10k–100k+ products (not full-scan fuzzy)\n- Vietnamese + English locales (extensible to ja/ko/zh)\n- Voice command parsing with quantity extraction\n- Zero runtime dependencies in **core**\n- Optional React UI: floating trigger, listening sheet, orb, waveform, suggestions\n- Pluggable `SpeechProvider` (Web Speech / mock / custom)\n- SSR-safe core; React entry marked `\"use client\"` for Next.js\n\n## Installation\n\n```bash\nnpm install @dooo/voice-product-search\n```\n\nReact peer deps (only if using UI):\n\n```bash\nnpm install react react-dom\n```\n\n## Quick Start (core)\n\n```ts\nimport {\n  createProductSearch,\n  createVoiceProductParser,\n} from \"@dooo/voice-product-search\";\n\nconst products = [\n  { id: \"omo-36\", name: \"Nước giặt Omo 3.6kg\", aliases: [\"omo\", \"omo 3.6\"] },\n];\n\nconst search = createProductSearch({ products });\nsearch.search(\"omo 3\");\n\nconst parser = createVoiceProductParser({ products, locale: \"vi-VN\" });\nparser.parse(\"cho tôi 3 omo\");\n\nconst en = createVoiceProductParser({ products, locale: \"en-US\" });\nen.parse(\"give me 3 omo\");\n```\n\n## React Installation\n\nPeer dependencies for the React UI: `react`, `react-dom`, `lucide-react`.\n\n```tsx\nimport { VoiceProductSearch } from \"@dooo/voice-product-search/react\";\nimport \"@dooo/voice-product-search/react/voice.css\";\n\nfunction App() {\n  return (\n    <VoiceProductSearch\n      products={products}\n      locale=\"vi-VN\"\n      theme=\"system\"\n      confidenceThreshold={0.92}\n      onApply={(commands) => {\n        console.log(commands);\n      }}\n    />\n  );\n}\n```\n\nIn Next.js App Router, use this from a Client Component (`\"use client\"`).\n\nThe React layer uses **shadcn/ui** (Radix + Tailwind semantic tokens). Core stays framework-independent.\n\n### Assistant wake words\n\nOpen the voice sheet by saying a phrase (defaults: `hey dooo`, `hey doo`, `dooo`, `hey`), or pass your own:\n\n```tsx\n<VoiceProductSearch\n  products={products}\n  locale=\"vi-VN\"\n  assistant={{\n    enabled: true,\n    wakeWords: [\"hey dooo\", \"dooo\", \"trợ lý\"],\n    onWake: (matched) => console.log(\"wake\", matched),\n  }}\n  onApply={(commands) => console.log(commands)}\n/>\n```\n\nRequires microphone + Chrome/Edge (HTTPS or localhost). The mic button still works.\n\n## Floating Voice Button\n\nDefault fixed trigger at bottom-right (safe-area aware). Positions: `bottom-right` | `bottom-left` | `top-right` | `top-left`. Tooltip text comes from i18n.\n\n## Voice Sheet\n\nClicking the trigger opens a premium bottom sheet (max ~640px on desktop) with orb, waveform, live transcript, Command-based suggestions, and confirm/apply.\n\n## Multilingual Usage\n\n```tsx\n<VoiceProductSearch locale=\"en-US\" />\n<VoiceProductSearch locale=\"ja-JP\" />\n```\n\nUI strings are localized; pass `translations` to override.\n\n## Custom Speech Provider\n\n```ts\nimport { createWebSpeechProvider, createMockSpeechProvider } from \"@dooo/voice-product-search\";\n\nconst speech = createWebSpeechProvider({ locale: \"vi-VN\" });\n// or demo without mic:\nconst mock = createMockSpeechProvider();\n```\n\n```tsx\n<VoiceProductSearch speechProvider={speech} />\n```\n\n## Package exports\n\n| Import | Purpose |\n|--------|---------|\n| `@dooo/voice-product-search` | Core search + voice parser + locales |\n| `@dooo/voice-product-search/react` | React UI components + hooks |\n| `@dooo/voice-product-search/react/voice.css` | Styles |\n| `@dooo/voice-product-search/web-speech` | Web Speech adapter |\n\n## Architecture\n\n```text\nCore (0 deps) → locale → speech provider → React UI\n```\n\nSearch remains indexed: token / prefix / alias → candidate set → fuzzy → top-K → confidence.\n\n## Demo\n\n**Live demo (HTTPS):** [https://vietnamese-voice-search.vercel.app](https://vietnamese-voice-search.vercel.app)\n\nUse Chrome/Edge on the live URL so Web Speech + microphone work (secure context).\n\n```bash\nnpm run demo\n```\n\nPreview GIF: [`docs/media/demo.gif`](./docs/media/demo.gif)\n\nRegenerate the README demo GIF (requires the demo server + a Chromium browser):\n\n```bash\nnpm run demo:gif\n```\n\n## Benchmarks\n\n```bash\nnpm run bench\n```\n\nSee `benchmarks/results/` for measured numbers.\n\n## License\n\n[MIT](./LICENSE) — Copyright (c) 2026 [dooo.vn](https://dooo.vn)\n","readmeFilename":"README.md"}