{"_id":"@asyncflowstate/vue","_rev":"4-6f7ea6dba710e0a10b3599df88541ba7","name":"@asyncflowstate/vue","dist-tags":{"latest":"3.0.0"},"versions":{"2.0.0":{"name":"@asyncflowstate/vue","version":"2.0.0","keywords":["vue","vue3","composition-api","composables","async","state","loading","error-handling","ux","useFlow","typescript","data-fetching","state-management"],"author":{"name":"AsyncFlowState Contributors"},"license":"MIT","_id":"@asyncflowstate/vue@2.0.0","maintainers":[{"name":"devhimanshuu","email":"devhimanshuu@gmail.com"}],"homepage":"https://github.com/devhimanshuu/asyncflowstate#readme","bugs":{"url":"https://github.com/devhimanshuu/asyncflowstate/issues"},"dist":{"shasum":"1f486c2ec957c54a55a61b724b6847f2ad40235b","tarball":"https://registry.npmjs.org/@asyncflowstate/vue/-/vue-2.0.0.tgz","fileCount":9,"integrity":"sha512-snzWcKPeWji+RVXrQKIkTjQu7wXpMGCAOnJqFWb1xvRCJS8iYnh6dikxY/KhblOtds3AS1CzTCIhPcBjC9XCeQ==","signatures":[{"sig":"MEUCIDcUBCQGUKCPLpIptTHwODFjBu5l04jMLbuuyeFAiBfhAiEAwVLItab3Z5BCY4/jX5djWIeuCABYI6Kos0xEmg8HnBk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":157699},"main":"./dist/index.js","_from":"file:asyncflowstate-vue-2.0.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=16.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"private":false,"scripts":{"dev":"tsup --watch","test":"vitest","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devhimanshuu","email":"devhimanshuu@gmail.com"},"_resolved":"/tmp/b212581ac0b1c9c8b5dc8c1e745dfef0/asyncflowstate-vue-2.0.0.tgz","_integrity":"sha512-snzWcKPeWji+RVXrQKIkTjQu7wXpMGCAOnJqFWb1xvRCJS8iYnh6dikxY/KhblOtds3AS1CzTCIhPcBjC9XCeQ==","repository":{"url":"git+https://github.com/devhimanshuu/asyncflowstate.git","type":"git","directory":"packages/vue"},"_npmVersion":"10.8.2","description":"Official Vue 3 bindings for AsyncFlowState. Composables (useFlow, useFlowSequence, useFlowParallel) for managing async loading, error, and success states effortlessly.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@asyncflowstate/core":"2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.13"},"peerDependencies":{"vue":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/vue_2.0.0_1775766038091_0.9888763063390709","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@asyncflowstate/vue","version":"2.0.1","keywords":["vue","vue3","composition-api","composables","async","state","loading","error-handling","ux","useFlow","typescript","data-fetching","state-management"],"author":{"name":"AsyncFlowState Contributors"},"license":"MIT","_id":"@asyncflowstate/vue@2.0.1","maintainers":[{"name":"devhimanshuu","email":"devhimanshuu@gmail.com"}],"homepage":"https://asyncflowstate-js.pages.dev/frameworks/vue","bugs":{"url":"https://github.com/devhimanshuu/asyncflowstate/issues"},"dist":{"shasum":"69d8c972eff36707fc8a7d8800e79ccc7de81334","tarball":"https://registry.npmjs.org/@asyncflowstate/vue/-/vue-2.0.1.tgz","fileCount":9,"integrity":"sha512-YxQnDLx0H25YDOmY9pSZhMOFPfaxzK6XhLl7dIOSb/ykpwOL9XZu08++d/m+c84x3uv5YlL6N62+UpMYPP4MVw==","signatures":[{"sig":"MEUCIQCzd2dqpglSKpAQ+p3nFGJC05nTbYwPLp2sxJ5smAYkUgIgIksAv5AocZcCb0jxWlOku+uGw2rVb4XvUsajOwZYaJ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":157987},"main":"./dist/index.js","_from":"file:asyncflowstate-vue-2.0.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=16.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"private":false,"scripts":{"dev":"tsup --watch","test":"vitest","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devhimanshuu","email":"devhimanshuu@gmail.com"},"_resolved":"/tmp/312edece5093306d0542b3f5eacb89a0/asyncflowstate-vue-2.0.1.tgz","_integrity":"sha512-YxQnDLx0H25YDOmY9pSZhMOFPfaxzK6XhLl7dIOSb/ykpwOL9XZu08++d/m+c84x3uv5YlL6N62+UpMYPP4MVw==","repository":{"url":"git+https://github.com/devhimanshuu/asyncflowstate.git","type":"git","directory":"packages/vue"},"_npmVersion":"10.8.2","description":"Official Vue 3 bindings for AsyncFlowState. Composables (useFlow, useFlowSequence, useFlowParallel) for managing async loading, error, and success states effortlessly.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@asyncflowstate/core":"2.0.1"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.13"},"peerDependencies":{"vue":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/vue_2.0.1_1775772479925_0.71093587364724","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@asyncflowstate/vue","version":"2.0.2","keywords":["vue","vue3","composition-api","composables","async","state","loading","error-handling","ux","useFlow","typescript","data-fetching","state-management"],"author":{"name":"AsyncFlowState Contributors"},"license":"MIT","_id":"@asyncflowstate/vue@2.0.2","maintainers":[{"name":"devhimanshuu","email":"devhimanshuu@gmail.com"}],"homepage":"https://asyncflowstate-js.pages.dev/frameworks/vue","bugs":{"url":"https://github.com/devhimanshuu/asyncflowstate/issues"},"dist":{"shasum":"66e2c8600f8e1a006f0b2a2fd5e76618f5796825","tarball":"https://registry.npmjs.org/@asyncflowstate/vue/-/vue-2.0.2.tgz","fileCount":9,"integrity":"sha512-29xNYcu1bYkk2DOSikon3OfSqUoon668NGHy9sA7hgO6V0VFZUJG4jdS86KNjLjytYbmCkmb/tF3xvA9JEShqw==","signatures":[{"sig":"MEYCIQDHWtxMO3U/vkSUm8MrmSPtipF4GouNSvTRlqJFv2E0JAIhALon+XInCHsO/J7fdbtNiFIsI8RtwF5zihy4OMcmHxeJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":157987},"main":"./dist/index.js","_from":"file:asyncflowstate-vue-2.0.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=16.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"private":false,"scripts":{"dev":"tsup --watch","test":"vitest","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devhimanshuu","email":"devhimanshuu@gmail.com"},"_resolved":"/tmp/78e5e3f066fa4cead6f0cdf262b6846b/asyncflowstate-vue-2.0.2.tgz","_integrity":"sha512-29xNYcu1bYkk2DOSikon3OfSqUoon668NGHy9sA7hgO6V0VFZUJG4jdS86KNjLjytYbmCkmb/tF3xvA9JEShqw==","repository":{"url":"git+https://github.com/devhimanshuu/asyncflowstate.git","type":"git","directory":"packages/vue"},"_npmVersion":"10.8.2","description":"Official Vue 3 bindings for AsyncFlowState. Composables (useFlow, useFlowSequence, useFlowParallel) for managing async loading, error, and success states effortlessly.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@asyncflowstate/core":"2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.13"},"peerDependencies":{"vue":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/vue_2.0.2_1775774293636_0.4429295558588615","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@asyncflowstate/vue","version":"3.0.0","private":false,"description":"Official Vue 3 bindings for AsyncFlowState. Composables (useFlow, useFlowSequence, useFlowParallel) for managing async loading, error, and success states effortlessly.","keywords":["vue","vue3","composition-api","composables","async","state","loading","error-handling","ux","useFlow","typescript","data-fetching","state-management"],"author":{"name":"AsyncFlowState Contributors"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/devhimanshuu/asyncflowstate.git","directory":"packages/vue"},"bugs":{"url":"https://github.com/devhimanshuu/asyncflowstate/issues"},"homepage":"https://asyncflowstate-js.pages.dev/frameworks/vue","main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"sideEffects":false,"engines":{"node":">=16.0.0"},"peerDependencies":{"vue":"^3.3.0"},"dependencies":{"@asyncflowstate/core":"3.0.0"},"devDependencies":{"vue":"^3.5.13"},"scripts":{"build":"tsup","dev":"tsup --watch","test":"vitest","typecheck":"tsc --noEmit"},"_id":"@asyncflowstate/vue@3.0.0","_integrity":"sha512-Y9JftSMJSXtGW80z/jaBTs9btuHkwRvr1J5Gk8DQjbJKp+5eMABGHMN1AYdf7SuQ99jW7TvOYQAp4O8wc3hgrQ==","_resolved":"C:\\Users\\pc\\AppData\\Local\\Temp\\c183a0cbfa9a4a6e99e63adc3da086dc\\asyncflowstate-vue-3.0.0.tgz","_from":"file:asyncflowstate-vue-3.0.0.tgz","_nodeVersion":"22.17.1","_npmVersion":"11.13.0","dist":{"integrity":"sha512-Y9JftSMJSXtGW80z/jaBTs9btuHkwRvr1J5Gk8DQjbJKp+5eMABGHMN1AYdf7SuQ99jW7TvOYQAp4O8wc3hgrQ==","shasum":"0c98c750d4b5d2abb0c602ed201c98f2321912cf","tarball":"https://registry.npmjs.org/@asyncflowstate/vue/-/vue-3.0.0.tgz","fileCount":9,"unpackedSize":175728,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDiADsph339a9FSBY/PJhrnjKPoCKMOw4II21wZKwqKLwIhALLgnTx109/WYJ7ogyyItg6T7uYGRNeb+IplIRYuTHza"}]},"_npmUser":{"name":"devhimanshuu","email":"devhimanshuu@gmail.com"},"directories":{},"maintainers":[{"name":"devhimanshuu","email":"devhimanshuu@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vue_3.0.0_1777546156912_0.33645045282487196"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-09T20:20:37.975Z","modified":"2026-04-30T10:49:17.273Z","2.0.0":"2026-04-09T20:20:38.260Z","2.0.1":"2026-04-09T22:08:00.086Z","2.0.2":"2026-04-09T22:38:13.773Z","3.0.0":"2026-04-30T10:49:17.133Z"},"bugs":{"url":"https://github.com/devhimanshuu/asyncflowstate/issues"},"author":{"name":"AsyncFlowState Contributors"},"license":"MIT","homepage":"https://asyncflowstate-js.pages.dev/frameworks/vue","keywords":["vue","vue3","composition-api","composables","async","state","loading","error-handling","ux","useFlow","typescript","data-fetching","state-management"],"repository":{"type":"git","url":"git+https://github.com/devhimanshuu/asyncflowstate.git","directory":"packages/vue"},"description":"Official Vue 3 bindings for AsyncFlowState. Composables (useFlow, useFlowSequence, useFlowParallel) for managing async loading, error, and success states effortlessly.","maintainers":[{"name":"devhimanshuu","email":"devhimanshuu@gmail.com"}],"readme":"<div align=\"center\">\n  <a href=\"https://github.com/devhimanshuu/asyncflowstate\">\n    <img src=\"https://raw.githubusercontent.com/devhimanshuu/asyncflowstate/main/assets/AsyncFlowState_logo.png\" width=\"120\" height=\"120\" alt=\"AsyncFlowState Logo\" />\n  </a>\n  <h1>@asyncflowstate/vue <span style=\"font-size: 14px; background: #10b98122; color: #10b981; padding: 4px 10px; border-radius: 20px; vertical-align: middle; margin-left: 10px;\">v3.0.0 Stable</span></h1>\n  <p><b>Official Vue 3 bindings for AsyncFlowState — the industry-standard engine for predictable async UI behavior.</b></p>\n\n  <p>\n    <a href=\"https://asyncflowstate-js.pages.dev/frameworks/vue\"><img src=\"https://img.shields.io/badge/Documentation-Link-blue.svg\" alt=\"Documentation\" /></a>\n    <a href=\"https://opensource.org/licenses/MIT\"><img src=\"https://img.shields.io/badge/License-MIT-emerald.svg\" alt=\"License: MIT\" /></a>\n    <a href=\"https://www.npmjs.com/package/@asyncflowstate/vue\"><img src=\"https://img.shields.io/npm/v/@asyncflowstate/vue?color=indigo\" alt=\"NPM Version\" /></a>\n  </p>\n</div>\n\n## Installation\n\n```bash\npnpm add @asyncflowstate/vue @asyncflowstate/core\n```\n\n## Quick Start\n\n### Basic Usage\n\n```vue\n<script setup lang=\"ts\">\nimport { useFlow } from \"@asyncflowstate/vue\";\n\nconst { loading, data, error, execute, button } = useFlow(\n  async (id: string) => {\n    const res = await fetch(`/api/users/${id}`);\n    return res.json();\n  },\n  {\n    onSuccess: (user) => console.log(\"Fetched:\", user.name),\n    onError: (err) => console.error(\"Failed:\", err),\n  },\n);\n</script>\n\n<template>\n  <button v-bind=\"button()\">\n    {{ loading ? \"Loading...\" : \"Fetch User\" }}\n  </button>\n  <div v-if=\"data\">{{ data.name }}</div>\n  <div v-if=\"error\">Error: {{ error.message }}</div>\n</template>\n```\n\n### Form Handling with Validation\n\n```vue\n<script setup lang=\"ts\">\nimport { useFlow } from \"@asyncflowstate/vue\";\nimport { z } from \"zod\";\n\nconst schema = z.object({\n  username: z.string().min(3),\n  email: z.string().email(),\n});\n\nconst { loading, fieldErrors, form } = useFlow(async (data: any) =>\n  api.updateProfile(data),\n);\n</script>\n\n<template>\n  <form v-bind=\"form({ schema, extractFormData: true })\">\n    <input name=\"username\" />\n    <span v-if=\"fieldErrors.username\">{{ fieldErrors.username }}</span>\n\n    <input name=\"email\" />\n    <span v-if=\"fieldErrors.email\">{{ fieldErrors.email }}</span>\n\n    <button type=\"submit\" :disabled=\"loading\">Submit</button>\n  </form>\n</template>\n```\n\n### Global Configuration\n\n```vue\n<script setup lang=\"ts\">\nimport { provideFlowConfig } from \"@asyncflowstate/vue\";\n\nprovideFlowConfig({\n  onError: (err) => toast.error(err.message),\n  retry: { maxAttempts: 3, backoff: \"exponential\" },\n  loading: { minDuration: 300 },\n});\n</script>\n```\n\n### Sequential Workflows\n\n```vue\n<script setup lang=\"ts\">\nimport { useFlowSequence } from \"@asyncflowstate/vue\";\n\nconst sequence = useFlowSequence([\n  { name: \"Validate\", flow: validateFlow },\n  { name: \"Submit\", flow: submitFlow, mapInput: (prev) => prev.data },\n  { name: \"Notify\", flow: notifyFlow },\n]);\n</script>\n\n<template>\n  <button @click=\"sequence.execute()\" :disabled=\"sequence.loading\">\n    Run Workflow\n  </button>\n  <p>Progress: {{ sequence.progress }}%</p>\n</template>\n```\n\n### Parallel Execution\n\n```vue\n<script setup lang=\"ts\">\nimport { useFlowParallel } from \"@asyncflowstate/vue\";\n\nconst parallel = useFlowParallel(\n  { users: usersFlow, posts: postsFlow },\n  \"allSettled\",\n);\n</script>\n```\n\n## <i class=\"fa-solid fa-sparkles text-amber-500\"></i> New in v3.0\n\n- **Flow DNA:** AI-driven behavior optimization.\n- **Ambient Intelligence:** Background orchestration and failure pre-emption.\n- **Speculative Execution:** Predicted user intent for instant reactivity.\n- **Emotional UX:** Adaptive skeletons and transitions based on system load.\n- **Collaborative Composables:** Sync state across users in real-time.\n- **Edge-First Flows:** Native support for edge-optimized data fetching.\n- **Temporal Replay:** Full time-travel through async state transitions.\n- **Telemetry Dashboard:** Live monitoring of application health.\n\n## Comprehensive Examples\n\n### 1. The Classic: Optimistic UI with Deep-Diff Rollback\n\nUpdate your UI instantly and trust AsyncFlowState to revert to the exact previous state if the network fails.\n\n```vue\n<script setup>\nimport { useFlow } from \"@asyncflowstate/vue\";\n\nconst { data, loading, execute, button } = useFlow(api.likePost, {\n  // 1. Update state immediately\n  optimisticResult: (prev) => ({\n    ...prev,\n    likes: prev.likes + 1,\n    isLiked: true,\n  }),\n  // 2. Automatically revert on failure\n  rollbackOnError: true,\n  onSuccess: () => toast.success(\"Liked!\"),\n  onError: () => toast.error(\"Connection failed. Reverting...\"),\n});\n</script>\n\n<template>\n  <button v-bind=\"button({ onClick: () => execute(post.id) })\">\n    {{ data.isLiked ? \"❤️\" : \"🤍\" }} {{ data.likes }}\n  </button>\n</template>\n```\n\n### 2. Enterprise Forms: Zod Validation & Auto-Extraction\n\nStop manually mapping `v-model`. Use built-in schema validation and automatic focus management.\n\n```vue\n<script setup>\nimport { z } from \"zod\";\nimport { useFlow } from \"@asyncflowstate/vue\";\n\nconst schema = z.object({\n  email: z.string().email(\"Invalid email address\"),\n  password: z.string().min(8, \"Password too short\"),\n});\n\nconst { loading, fieldErrors, form, error } = useFlow(auth.login, {\n  onSuccess: () => router.push(\"/dashboard\"),\n});\n</script>\n\n<template>\n  <form v-bind=\"form({ schema, extractFormData: true, resetOnSuccess: true })\">\n    <input name=\"email\" placeholder=\"Email\" />\n    <span v-if=\"fieldErrors.email\" class=\"error\">{{ fieldErrors.email }}</span>\n\n    <input name=\"password\" type=\"password\" placeholder=\"Password\" />\n    <span v-if=\"fieldErrors.password\" class=\"error\">{{\n      fieldErrors.password\n    }}</span>\n\n    <button type=\"submit\" :disabled=\"loading\">\n      {{ loading ? \"Logging in...\" : \"Login\" }}\n    </button>\n\n    <div v-if=\"error\" class=\"error-banner\">{{ error.message }}</div>\n  </form>\n</template>\n```\n\n### 3. AI-Powered: Predictive Intent & Flow DNA\n\nPre-warm your flows before the user even clicks. AsyncFlowState learns from hover patterns to eliminate perceived latency.\n\n```vue\n<script setup>\nimport { useFlow } from \"@asyncflowstate/vue\";\n\nconst { status, execute, button } = useFlow(api.getDetails, {\n  predictive: {\n    prefetchOnHover: true, // Learns and pre-warms the flow\n    threshold: 0.8, // Confidence threshold\n  },\n});\n</script>\n\n<template>\n  <div @mouseenter=\"button().onMouseEnter\" class=\"card\">\n    <h3>Product Details</h3>\n    <button @click=\"execute(productId)\">\n      {{ status === \"prewarmed\" ? \"Instant View\" : \"View Details\" }}\n    </button>\n  </div>\n</template>\n```\n\n### 4. Cross-Tab Sync: Real-Time Coordination\n\nKeep your application state consistent across every open tab without a backend websocket.\n\n```vue\n<script setup>\nconst { loading, data } = useFlow(api.updateSettings, {\n  // Syncs loading status and data across all tabs automatically\n  crossTab: {\n    sync: true,\n    channel: \"user-settings\",\n  },\n});\n</script>\n```\n\n### 5. Multi-Step Workflows: `useFlowSequence`\n\nManage complex, interdependent async steps with a single source of truth for progress and errors.\n\n```vue\n<script setup>\nimport { useFlowSequence } from \"@asyncflowstate/vue\";\n\nconst sequence = useFlowSequence([\n  { name: \"Create Account\", flow: accountFlow },\n  { name: \"Verify Email\", flow: emailFlow, mapInput: (acc) => acc.email },\n  { name: \"Sync Data\", flow: syncFlow },\n]);\n</script>\n\n<template>\n  <div>\n    <progress :value=\"sequence.progress\" max=\"100\" />\n    <p>Current Step: {{ sequence.currentStep?.name }}</p>\n    <button @click=\"sequence.execute()\">Start Setup</button>\n  </div>\n</template>\n```\n\n## <i class=\"fa-solid fa-sparkles text-amber-500\"></i> New in v3.0\n\n- **Flow DNA:** AI-driven behavior optimization.\n- **Ambient Intelligence:** Background orchestration and failure pre-emption.\n- **Speculative Execution:** Predicted user intent for instant reactivity.\n- **Emotional UX:** Adaptive skeletons and transitions based on system load.\n- **Collaborative Composables:** Sync state across users in real-time.\n- **Edge-First Flows:** Native support for edge-optimized data fetching.\n- **Temporal Replay:** Full time-travel through async state transitions.\n- **Telemetry Dashboard:** Live monitoring of application health.\n\n## API Reference\n\n| Composable                          | Description                                       |\n| ----------------------------------- | ------------------------------------------------- |\n| `useFlow(action, options?)`         | Core composable for managing async actions        |\n| `useFlowSequence(steps)`            | Orchestrate sequential workflows                  |\n| `useFlowParallel(flows, strategy?)` | Run flows in parallel                             |\n| `useFlowList(action, options?)`     | Manage multiple keyed flow instances              |\n| `useInfiniteFlow(action, options)`  | Manage paginated/infinite scrolling data fetching |\n| `provideFlowConfig(config)`         | Provide global configuration via provide/inject   |\n\n## License\n\nMIT © [AsyncFlowState Contributors](https://github.com/devhimanshuu/asyncflowstate)\n","readmeFilename":"README.md"}