{"_id":"@aiqfy/feature-sdk","_rev":"20-c126b82ff10dd93f2683c4e1d4a81cb2","name":"@aiqfy/feature-sdk","dist-tags":{"latest":"1.0.15"},"versions":{"1.0.0":{"name":"@aiqfy/feature-sdk","version":"1.0.0","keywords":["feature-flags","feature-toggles","sdk"],"author":{"name":"AIQfy"},"license":"MIT","_id":"@aiqfy/feature-sdk@1.0.0","maintainers":[{"name":"aiqfy","email":"peteradeshina3@gmail.com"}],"dist":{"shasum":"050d2505dfb173a71fcb03a7c2b6b21b85272e89","tarball":"https://registry.npmjs.org/@aiqfy/feature-sdk/-/feature-sdk-1.0.0.tgz","fileCount":4,"integrity":"sha512-NUvmW1SyrcBOLHjZH9zY9By4K5IN9088jjF6f2fqrpti7LR1bLqOUjR9iS/vdBXuVFrXUjHGSCxJi87XT1rBCQ==","signatures":[{"sig":"MEUCIQCwH3Lu9/OrCrI/OIT0PmEaj0tnorldQtuqBDDyAxy9RgIgSzmQJ/PUX9po37HpHhJ2MozYV1cFW05SJEeLO1fAnto=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8565},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"5bbf96e6e7183dc116c23165d84c7f177e7981d7","scripts":{"test":"jest","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"aiqfy","email":"peteradeshina3@gmail.com"},"_npmVersion":"10.9.0","description":"Feature flag management SDK for AIQfy","directories":{},"_nodeVersion":"22.11.0","dependencies":{"axios":"^1.6.7"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19"},"_npmOperationalInternal":{"tmp":"tmp/feature-sdk_1.0.0_1747138182183_0.1664261177813693","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@aiqfy/feature-sdk","version":"1.0.9","keywords":["feature-flags","feature-toggles","sdk"],"author":{"name":"AIQfy"},"license":"MIT","_id":"@aiqfy/feature-sdk@1.0.9","maintainers":[{"name":"aiqfy","email":"peteradeshina3@gmail.com"}],"dist":{"shasum":"f5afb5d1f4230c1b66e362a917c91ff38cdb6bda","tarball":"https://registry.npmjs.org/@aiqfy/feature-sdk/-/feature-sdk-1.0.9.tgz","fileCount":4,"integrity":"sha512-zmpDNpVvr0NjP2TKHumpTyF9bdORqYsZ+sd9XRSiHKw5l36ZK2FTI8fHtFqiT2QjPkvr4WNBURi5vCAR1wht5Q==","signatures":[{"sig":"MEYCIQC/q/uzwuCA61FspOsExeI0BucXLv/cenXvEFOyh2P/gQIhAKCE8rG88XpcXqxAf2buzsWSR8QNVGykg36fm3TKG3RV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11365},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"d7a68e206553efcc17abf7c1d3ba6b31813d5c54","scripts":{"test":"jest","build":"tsc","prepare":"npm run build","publish:major":"npm run version:major && npm publish --force --access public","publish:minor":"npm run version:minor && npm publish --force --access public","publish:patch":"npm run version:patch && npm publish --no-git-tag-version --access public","version:major":"npm version major","version:minor":"npm version minor","version:patch":"npm version patch"},"_npmUser":{"name":"aiqfy","email":"peteradeshina3@gmail.com"},"_npmVersion":"10.9.0","description":"Feature flag management SDK for AIQfy","directories":{},"_nodeVersion":"22.11.0","dependencies":{"axios":"^1.6.7","debug":"^4.4.0","@types/debug":"^4.1.12"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19"},"_npmOperationalInternal":{"tmp":"tmp/feature-sdk_1.0.9_1747612140040_0.9905273768501193","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@aiqfy/feature-sdk","version":"1.0.10","keywords":["feature-flags","feature-toggles","sdk"],"author":{"name":"AIQfy"},"license":"MIT","_id":"@aiqfy/feature-sdk@1.0.10","maintainers":[{"name":"aiqfy","email":"peteradeshina3@gmail.com"}],"dist":{"shasum":"f48ead0eab3567123f8da645bf814edf64c137ba","tarball":"https://registry.npmjs.org/@aiqfy/feature-sdk/-/feature-sdk-1.0.10.tgz","fileCount":4,"integrity":"sha512-gGevfbZvcvfewI1yEKgHAP//3WFVrxsFcEmoATWQLpU/zI9qL8Dh0lT+3nhxvpARChFf2b3Drcang6a4X6GpWQ==","signatures":[{"sig":"MEUCIH9cGTvjn5vUd9ctqOgD+LhkYzw1zL2ll4QkQiL3BWWBAiEAsn+VJDLI0HPBjd8ENyjuj0qm5zWCG6piI16O23at5N8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11370},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"444223cb9547ec7ea7e4b23f827aa49f86059fd4","scripts":{"test":"jest","build":"tsc","prepare":"npm run build","publish:major":"npm run version:major && npm publish --force --access public","publish:minor":"npm run version:minor && npm publish --force --access public","publish:patch":"npm run version:patch && npm publish --no-git-tag-version --access public","version:major":"npm version major","version:minor":"npm version minor","version:patch":"npm version patch"},"_npmUser":{"name":"aiqfy","email":"peteradeshina3@gmail.com"},"_npmVersion":"10.9.0","description":"Feature flag management SDK for AIQfy","directories":{},"_nodeVersion":"22.11.0","dependencies":{"axios":"^1.6.7","debug":"^4.4.0","@types/debug":"^4.1.12"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19"},"_npmOperationalInternal":{"tmp":"tmp/feature-sdk_1.0.10_1747612894884_0.5194146044978207","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"@aiqfy/feature-sdk","version":"1.0.11","keywords":["feature-flags","feature-toggles","sdk"],"author":{"name":"AIQfy"},"license":"MIT","_id":"@aiqfy/feature-sdk@1.0.11","maintainers":[{"name":"aiqfy","email":"peteradeshina3@gmail.com"}],"dist":{"shasum":"bc0d9336dfb9a4b052fa7fe496bef44338f5018b","tarball":"https://registry.npmjs.org/@aiqfy/feature-sdk/-/feature-sdk-1.0.11.tgz","fileCount":4,"integrity":"sha512-nDqnjnszwYwTIAvmnWjpmAKemjpyGyXc2cee4aS5hNlhPeIcBw/psR74P9T9mD7kHo1rd/OQlkzhlQhLH7D0zg==","signatures":[{"sig":"MEUCIH8RQdx+1MmhO5f9hyihZSBRb3913POZQDumjfrJ+H5WAiEAjHpoLKFJvvNkDuSlrKQjCM+rXwmdo8anHG85xifRcSU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11232},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"6d5b5022d5525240e8702afd64d8657ac01aeb93","scripts":{"test":"jest","build":"tsc","prepare":"npm run build","publish:major":"npm run version:major && npm publish --force --access public","publish:minor":"npm run version:minor && npm publish --force --access public","publish:patch":"npm run version:patch && npm publish --no-git-tag-version --access public","version:major":"npm version major","version:minor":"npm version minor","version:patch":"npm version patch"},"_npmUser":{"name":"aiqfy","email":"peteradeshina3@gmail.com"},"_npmVersion":"10.9.0","description":"Feature flag management SDK for AIQfy","directories":{},"_nodeVersion":"22.11.0","dependencies":{"axios":"^1.6.7","debug":"^4.4.0","@types/debug":"^4.1.12"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19"},"_npmOperationalInternal":{"tmp":"tmp/feature-sdk_1.0.11_1747619524370_0.09603045286059508","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"@aiqfy/feature-sdk","version":"1.0.12","keywords":["feature-flags","feature-toggles","sdk"],"author":{"name":"AIQfy"},"license":"MIT","_id":"@aiqfy/feature-sdk@1.0.12","maintainers":[{"name":"aiqfy","email":"peteradeshina3@gmail.com"}],"dist":{"shasum":"db551ac281b6d013fe5f2c467c130daa95f19200","tarball":"https://registry.npmjs.org/@aiqfy/feature-sdk/-/feature-sdk-1.0.12.tgz","fileCount":8,"integrity":"sha512-YwSHqV9Nl2GlCYpHgqaTDHx6uRghIuT8+BMEgeLGpd+YRyM7+fEAkl94pIto8L07aPZnKi47OKc6fsSlDk97Vg==","signatures":[{"sig":"MEQCID9iHDPlf4XblalO7PL3exf6QXaPQ0NrOtxqMw+LL4DaAiACveZFT/1RNbZKsM8GyGXcm/IJCXc//4ogQMQMnKYHVg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28572},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"cb283356c4ef0c4d1e9bfd253fab4f6b6a513f7c","scripts":{"test":"jest","build":"tsc","prepare":"npm run build","publish:major":"npm run version:major && npm publish --force --access public","publish:minor":"npm run version:minor && npm publish --force --access public","publish:patch":"npm run version:patch && npm publish --no-git-tag-version --access public","version:major":"npm version major","version:minor":"npm version minor","version:patch":"npm version patch"},"_npmUser":{"name":"aiqfy","email":"peteradeshina3@gmail.com"},"_npmVersion":"10.9.0","description":"Feature flag management SDK for AIQfy","directories":{},"_nodeVersion":"22.11.0","dependencies":{"axios":"^1.6.7","debug":"^4.4.0","@types/debug":"^4.1.12"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19"},"_npmOperationalInternal":{"tmp":"tmp/feature-sdk_1.0.12_1747705407100_0.9979921771115505","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"@aiqfy/feature-sdk","version":"1.0.13","keywords":["feature-flags","feature-toggles","sdk"],"author":{"name":"AIQfy"},"license":"MIT","_id":"@aiqfy/feature-sdk@1.0.13","maintainers":[{"name":"aiqfy","email":"peteradeshina3@gmail.com"}],"dist":{"shasum":"2cf1cc1c3b3567909bdac2e96e634fc15e8685c6","tarball":"https://registry.npmjs.org/@aiqfy/feature-sdk/-/feature-sdk-1.0.13.tgz","fileCount":10,"integrity":"sha512-j+8x35pd4e90N8vQDhicFseGhefvOKLKRu3hvl0O0P+OL3k/m2t8oLmsdcML+zaP7hZKJQZWG8IxexmSwaOWyA==","signatures":[{"sig":"MEUCIClur963O9DRC++2R4Iajn0E5kIPDd4jOqPvCIWcctdZAiEA3gsb92LIbwtR7LdOBQ1GvnHJ4Z97zUyp6iHGu4+5/Bo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67050},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"5c91b2fe11016df7563bd7fa717dc49edaf68f25","scripts":{"test":"jest","build":"tsc","prepare":"npm run build","publish:major":"npm run version:major && npm publish --force --access public","publish:minor":"npm run version:minor && npm publish --force --access public","publish:patch":"npm run version:patch && npm publish --no-git-tag-version --access public","version:major":"npm version major","version:minor":"npm version minor","version:patch":"npm version patch"},"_npmUser":{"name":"aiqfy","email":"peteradeshina3@gmail.com"},"_npmVersion":"10.9.0","description":"Feature flag management SDK for AIQfy","directories":{},"_nodeVersion":"22.11.0","dependencies":{"axios":"^1.6.7","debug":"^4.4.0","@types/debug":"^4.1.12"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19"},"_npmOperationalInternal":{"tmp":"tmp/feature-sdk_1.0.13_1747752677730_0.14413065533502167","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"@aiqfy/feature-sdk","version":"1.0.14","keywords":["feature-flags","feature-toggles","sdk"],"author":{"name":"AIQfy"},"license":"MIT","_id":"@aiqfy/feature-sdk@1.0.14","maintainers":[{"name":"aiqfy","email":"peteradeshina3@gmail.com"}],"dist":{"shasum":"9e53e9701d5f5bcfa011ce35764dd0296acf4e99","tarball":"https://registry.npmjs.org/@aiqfy/feature-sdk/-/feature-sdk-1.0.14.tgz","fileCount":12,"integrity":"sha512-45NEXq41uxdkkzZZjALTbgtqg1lMWjpf0C4gUcorQxsiZz1npuklslA1jS1ZA2o+NkYa7+IDFIm+uopyUB8ZEw==","signatures":[{"sig":"MEUCIFBv4mGdADWM9OWKZjnrQjiHMwAx7G546mFyDrK8DEYCAiEAnLqYse9iNUMdoCwQ3ViTrAkrkHjyYo61sLD5cRkhc98=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71009},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"e146bd7c977a366216da860aed90b3be0bc41e3d","scripts":{"test":"jest","build":"tsc","prepare":"npm run build","publish:major":"npm run version:major && npm publish --force --access public","publish:minor":"npm run version:minor && npm publish --force --access public","publish:patch":"npm run version:patch && npm publish --no-git-tag-version --access public","version:major":"npm version major","version:minor":"npm version minor","version:patch":"npm version patch"},"_npmUser":{"name":"aiqfy","email":"peteradeshina3@gmail.com"},"_npmVersion":"10.9.0","description":"Feature flag management SDK for AIQfy","directories":{},"_nodeVersion":"22.11.0","dependencies":{"axios":"^1.6.7","debug":"^4.4.0","react":"^19.1.0","@types/debug":"^4.1.12"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/react":"^19.1.4"},"_npmOperationalInternal":{"tmp":"tmp/feature-sdk_1.0.14_1747771060825_0.15095758029403794","host":"s3://npm-registry-packages-npm-production"}},"1.0.15":{"name":"@aiqfy/feature-sdk","version":"1.0.15","description":"Feature flag management SDK for AIQfy","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","test":"jest","prepare":"npm run build","version:patch":"npm version patch","version:minor":"npm version minor","version:major":"npm version major","publish:patch":"npm run version:patch && npm publish --no-git-tag-version --access public","publish:minor":"npm run version:minor && npm publish --force --access public","publish:major":"npm run version:major && npm publish --force --access public"},"keywords":["feature-flags","feature-toggles","sdk"],"author":{"name":"AIQfy"},"license":"MIT","dependencies":{"@types/debug":"^4.1.12","axios":"^1.6.7","debug":"^4.4.0","react":"^19.1.0"},"devDependencies":{"@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/react":"^19.1.4","jest":"^29.7.0","ts-jest":"^29.1.2","typescript":"^5.3.3"},"_id":"@aiqfy/feature-sdk@1.0.15","gitHead":"dcbfc7279cfd88979a4ea9a3d44c655254736f2c","_nodeVersion":"22.11.0","_npmVersion":"10.9.0","dist":{"integrity":"sha512-pFCwNCeAOq3fUcwCxfz2bghqM4rKxtE3SN8VMExstM9A/kCZFtrDBanA3lZ0ntaIEn2crgIUjixDyS2CKuAxxw==","shasum":"c883b0aae1c7ec9b198bcd655dd7353a9bc75748","tarball":"https://registry.npmjs.org/@aiqfy/feature-sdk/-/feature-sdk-1.0.15.tgz","fileCount":12,"unpackedSize":70698,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCms/TIBK7qKlzmrwsbiz1rQjfTWJfdomb2REhvnbFMpQIgHW+ElNCjH1P+2i68vjDJiU6+uPlcPyHKhkJyrU7OnbA="}]},"_npmUser":{"name":"aiqfy","email":"peteradeshina3@gmail.com"},"directories":{},"maintainers":[{"name":"aiqfy","email":"peteradeshina3@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/feature-sdk_1.0.15_1747771768944_0.6098897780457448"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-13T12:09:42.118Z","modified":"2025-05-20T20:09:29.299Z","1.0.0":"2025-05-13T12:09:42.377Z","1.0.2":"2025-05-13T12:16:33.733Z","1.0.3":"2025-05-13T13:57:09.944Z","1.0.4":"2025-05-13T14:03:51.003Z","1.0.5":"2025-05-13T14:11:46.068Z","1.0.6":"2025-05-13T14:27:18.903Z","1.0.1":"2025-05-13T14:41:23.313Z","1.0.9":"2025-05-18T23:49:00.233Z","1.0.10":"2025-05-19T00:01:35.065Z","1.0.11":"2025-05-19T01:52:04.563Z","1.0.12":"2025-05-20T01:43:27.258Z","1.0.13":"2025-05-20T14:51:18.011Z","1.0.14":"2025-05-20T19:57:41.020Z","1.0.15":"2025-05-20T20:09:29.114Z"},"author":{"name":"AIQfy"},"license":"MIT","keywords":["feature-flags","feature-toggles","sdk"],"description":"Feature flag management SDK for AIQfy","maintainers":[{"name":"aiqfy","email":"peteradeshina3@gmail.com"}],"readme":"# AIQ Feature SDK\n\nA TypeScript SDK for managing feature flags in your frontend applications.\n\n## Installation\n\n```bash\nnpm install @aiq/feature-sdk\n```\n\n### Basic Setup\n\n```typescript\nimport { FeatureSDK } from '@aiq/feature-sdk';\n\nconst featureSDK = new FeatureSDK({\n  apiKey: 'your-api-key',      // The SDK key generated from your backend\n  baseUrl: 'https://your-api-url',\n  projectId: 'your-project-id', // Required: The project ID this SDK belongs to\n  userId: 'optional-user-id',\n  environment: 'optional-environment'\n});\n```\n\n### Getting Your SDK Key\n\n1. Create an SDK in your backend:\n```go\n// Using the Go backend API\nresponse, err := client.CreateSDKAPI(ctx, &pb.CreateSDKRequest{\n  Name: \"My Frontend SDK\",\n  ProjectId: \"your-project-id\"\n})\n```\n\n2. Use the generated SDK key in your frontend:\n```typescript\nconst featureSDK = new FeatureSDK({\n  apiKey: response.sdk.key,    // The key will be in format: \"aiqfy-xxxxxxxxxxxxxxxx\"\n  baseUrl: 'https://your-api-url',\n  projectId: response.sdk.projectId\n});\n```\n\n### Checking Feature Flags\n\n```typescript\n// Check if a feature is enabled\nconst isNewUIEnabled = await featureSDK.isEnabled('new-ui-feature');\n\n// Get a feature variant\nconst variant = await featureSDK.getVariant('ab-test-feature');\n\n// Get all feature flags for the current project\nconst allFlags = await featureSDK.getAllFlags();\n```\n\n### React Example\n\n```typescript\nimport React, { useEffect, useState } from 'react';\nimport { FeatureSDK } from '@aiq/feature-sdk';\n\nconst featureSDK = new FeatureSDK({\n  apiKey: process.env.REACT_APP_FEATURE_API_KEY,\n  baseUrl: process.env.REACT_APP_FEATURE_API_URL,\n  projectId: process.env.REACT_APP_FEATURE_PROJECT_ID\n});\n\nfunction MyComponent() {\n  const [isNewFeatureEnabled, setIsNewFeatureEnabled] = useState(false);\n\n  useEffect(() => {\n    async function checkFeature() {\n      const enabled = await featureSDK.isEnabled('new-feature');\n      setIsNewFeatureEnabled(enabled);\n    }\n    checkFeature();\n  }, []);\n\n  return (\n    <div>\n      {isNewFeatureEnabled ? (\n        <NewFeatureComponent />\n      ) : (\n        <OldFeatureComponent />\n      )}\n    </div>\n  );\n}\n```\n\n### Updating User Context\n\n```typescript\n// Update the user ID for feature evaluation\nfeatureSDK.setUserId('new-user-id');\n\n// Update the environment\nfeatureSDK.setEnvironment('production');\n```\n\n## API Reference\n\n### FeatureSDK\n\n#### Constructor\n\n```typescript\nnew FeatureSDK(options: FeatureFlagOptions)\n```\n\nOptions:\n- `apiKey`: Your SDK key for authentication (generated from backend)\n- `baseUrl`: The base URL of your feature flag service\n- `projectId`: The project ID this SDK belongs to\n- `userId`: (Optional) The user ID for feature evaluation\n- `environment`: (Optional) The environment for feature evaluation\n\n#### Methods\n\n- `isEnabled(featureId: string): Promise<boolean>`\n  - Checks if a feature flag is enabled\n\n- `getVariant(featureId: string): Promise<string | undefined>`\n  - Gets the variant value of a feature flag\n\n- `getAllFlags(): Promise<FeatureFlag[]>`\n  - Gets all feature flags for the current project\n\n- `getFeatureFlag(featureId: string): Promise<FeatureFlag | undefined>`\n  - Gets a specific feature flag\n\n- `setUserId(userId: string): void`\n  - Updates the user ID for feature evaluation\n\n- `setEnvironment(environment: string): void`\n  - Updates the environment for feature evaluation\n\n- `getProjectId(): string`\n  - Gets the current project ID\n\n## Features\n\n- Project-scoped feature flags\n- TypeScript support\n- Automatic caching with configurable timeout\n- User and environment context support\n- Variant support for A/B testing\n- Error handling\n- Automatic cache invalidation when context changes ","readmeFilename":"README.md"}