{"_id":"@apiquest/plugin-vault-file","_rev":"5-82f0d509c6a0dfd62f9a7552fa77bc0d","name":"@apiquest/plugin-vault-file","dist-tags":{"latest":"1.0.9"},"versions":{"1.0.4":{"name":"@apiquest/plugin-vault-file","version":"1.0.4","keywords":["apiquest","vault","secrets","plugin","file"],"author":{"name":"ApiQuest"},"license":"AGPL-3.0-or-later","_id":"@apiquest/plugin-vault-file@1.0.4","maintainers":[{"name":"lto-dev","email":"lto-dev@humanhub.io"}],"homepage":"https://github.com/hh-apiquest/fracture#readme","bugs":{"url":"https://github.com/hh-apiquest/fracture/issues"},"dist":{"shasum":"22c294326a4ee73582c8234bc10e2b21aa4aec76","tarball":"https://registry.npmjs.org/@apiquest/plugin-vault-file/-/plugin-vault-file-1.0.4.tgz","fileCount":12,"integrity":"sha512-1XLia5t3G6sBBCa3UL1DrZulR1UT8OCs58+U0h0Tox0XZj4EvCeYTKmbbhX6yA6qfXRZI9UC81cw0uOkXKmV5Q==","signatures":[{"sig":"MEYCIQCUGj0N7SGEyClYbAdGOaTqFkwhKKlDMfhJ53EyZ7qlFwIhAPREsPDqKz8YdOhN6vRnIG9IITX1nCUzvbM8lLXirFNH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78736},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"871bbdc6cbe888807cdc9474dcaf528863c729a4","scripts":{"dev":"rollup -c --watch","test":"vitest","build":"rollup -c && tsc --emitDeclarationOnly"},"_npmUser":{"name":"lto-dev","email":"lto-dev@humanhub.io"},"apiquest":{"type":"value","runtime":["fracture"],"capabilities":{"provides":{"provider":"file"}}},"repository":{"url":"git+https://github.com/hh-apiquest/fracture.git","type":"git","directory":"packages/plugin-vault-file"},"_npmVersion":"11.7.0","description":"File-based vault provider plugin for ApiQuest (JSON, readonly)","directories":{},"_nodeVersion":"22.16.0","dependencies":{"@apiquest/types":"workspace:*"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.57.1","vitest":"^4.0.18","typescript":"^5.3.3","@types/node":"^25.2.3","@apiquest/types":"workspace:*","@rollup/plugin-commonjs":"^29.0.0","@rollup/plugin-typescript":"^12.3.0","@rollup/plugin-node-resolve":"^16.0.3"},"peerDependencies":{"@apiquest/types":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/plugin-vault-file_1.0.4_1770955619666_0.6379942590843628","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@apiquest/plugin-vault-file","version":"1.0.5","keywords":["apiquest","vault","secrets","plugin","file"],"author":{"name":"ApiQuest"},"license":"AGPL-3.0-or-later","_id":"@apiquest/plugin-vault-file@1.0.5","maintainers":[{"name":"lto-dev","email":"lto-dev@humanhub.io"}],"homepage":"https://github.com/hh-apiquest/fracture#readme","bugs":{"url":"https://github.com/hh-apiquest/fracture/issues"},"dist":{"shasum":"fcab5f999fd0a5d47bfbb0f0006661687265ebef","tarball":"https://registry.npmjs.org/@apiquest/plugin-vault-file/-/plugin-vault-file-1.0.5.tgz","fileCount":11,"integrity":"sha512-dOauOEZKyQZ97MgVMhpk6OKO4L4HDOM8kOoD7ENhDRkTgE0HBaiYE9p4rkAIIPc2aaOncxPerHTjPYgM2vvmEg==","signatures":[{"sig":"MEUCIQCZl6xTib4JEWi2wR/rqG04NeANWTWINOm7wWfIae7ueQIgYFDbJh6Jr8kayiGw8S8EtlMLMUBDDKDY7O6D1MRpQcg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apiquest%2fplugin-vault-file@1.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":65904},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"368dd13b898628c3c57b06cc4bf60d16668811e1","scripts":{"dev":"rollup -c --watch","test":"vitest","build":"rollup -c && tsc --emitDeclarationOnly"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b8313c52-6670-4c2f-b63d-bac515caed91"}},"apiquest":{"type":"value","runtime":["fracture"],"capabilities":{"provides":{"valueTypes":["vault:file"]}}},"repository":{"url":"git+https://github.com/hh-apiquest/fracture.git","type":"git","directory":"packages/plugin-vault-file"},"_npmVersion":"11.10.0","description":"File-based vault provider plugin for ApiQuest (JSON, readonly)","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@apiquest/types":"workspace:*"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.57.1","vitest":"^4.0.18","typescript":"^5.3.3","@types/node":"^25.2.3","@apiquest/types":"workspace:*","@rollup/plugin-commonjs":"^29.0.0","@rollup/plugin-typescript":"^12.3.0","@rollup/plugin-node-resolve":"^16.0.3"},"peerDependencies":{"@apiquest/types":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/plugin-vault-file_1.0.5_1771032914997_0.9575640420303015","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@apiquest/plugin-vault-file","version":"1.0.6","keywords":["apiquest","vault","secrets","plugin","file"],"author":{"name":"ApiQuest"},"license":"AGPL-3.0-or-later","_id":"@apiquest/plugin-vault-file@1.0.6","maintainers":[{"name":"lto-dev","email":"lto-dev@humanhub.io"}],"homepage":"https://github.com/hh-apiquest/fracture#readme","bugs":{"url":"https://github.com/hh-apiquest/fracture/issues"},"dist":{"shasum":"9d08125ee1653f521705f34e813c527392c7e397","tarball":"https://registry.npmjs.org/@apiquest/plugin-vault-file/-/plugin-vault-file-1.0.6.tgz","fileCount":11,"integrity":"sha512-1Ws9iyvXL+ieoH/qDtDIjNLdU7S18n2O4jADlfaottstBRGnNJen+7p/BK5o3zN/4xEtKJBjG/A/WKgiH+R5ZA==","signatures":[{"sig":"MEQCIG8TgNZVtdhu4/6uCj8vN729QytqS3SByPHvEer/KvMFAiA1KYKVtMg6QPhbdi/6chI0/bfoGIZHMzZvaT86NVjm+w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apiquest%2fplugin-vault-file@1.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":65904},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"17e6fe16873a66ae8ff3565d1f064752ef3b2f81","scripts":{"dev":"rollup -c --watch","test":"vitest","build":"rollup -c && tsc --emitDeclarationOnly"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b8313c52-6670-4c2f-b63d-bac515caed91"}},"apiquest":{"type":"value","runtime":["fracture"],"capabilities":{"provides":{"valueTypes":["vault:file"]}}},"repository":{"url":"git+https://github.com/hh-apiquest/fracture.git","type":"git","directory":"packages/plugin-vault-file"},"_npmVersion":"11.10.0","description":"File-based vault provider plugin for ApiQuest (JSON, readonly)","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@apiquest/types":"workspace:*"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.57.1","vitest":"^4.0.18","typescript":"^5.3.3","@types/node":"^25.2.3","@apiquest/types":"workspace:*","@rollup/plugin-commonjs":"^29.0.0","@rollup/plugin-typescript":"^12.3.0","@rollup/plugin-node-resolve":"^16.0.3"},"peerDependencies":{"@apiquest/types":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/plugin-vault-file_1.0.6_1771210863184_0.631756998145057","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@apiquest/plugin-vault-file","version":"1.0.8","keywords":["apiquest","vault","secrets","plugin","file"],"author":{"name":"ApiQuest"},"license":"AGPL-3.0-or-later","_id":"@apiquest/plugin-vault-file@1.0.8","maintainers":[{"name":"lto-dev","email":"lto-dev@humanhub.io"}],"homepage":"https://github.com/hh-apiquest/fracture#readme","bugs":{"url":"https://github.com/hh-apiquest/fracture/issues"},"dist":{"shasum":"fcf972692c05f9baea3016ce75e5f8fd9d22ac45","tarball":"https://registry.npmjs.org/@apiquest/plugin-vault-file/-/plugin-vault-file-1.0.8.tgz","fileCount":11,"integrity":"sha512-LL0/Hjil4ZgyuYe5c0Ooa7qry4Gq23B4Nb1R2PV0uMemxFkCuDYc0B32tfZ8MAc+W0mNJNl2exRCmdroC7WpzA==","signatures":[{"sig":"MEYCIQDNMH3QU3K1BlWEGo/QnUE8pdAMTMMRlENGbyFriaH0XQIhAPj8DF1nfQPGo7O5ycHtNNjySFMAkJ1XJVNw0V9hWZy9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apiquest%2fplugin-vault-file@1.0.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":65929},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"3437c3f8ec14a804ffc2a2dd072fe694b9287907","scripts":{"dev":"rollup -c --watch","test":"vitest","build":"rollup -c && tsc --emitDeclarationOnly"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b8313c52-6670-4c2f-b63d-bac515caed91"}},"apiquest":{"type":"value","runtime":["fracture"],"capabilities":{"provides":{"valueTypes":["vault:file"]}}},"repository":{"url":"git+https://github.com/hh-apiquest/fracture.git","type":"git","directory":"packages/plugin-vault-file"},"_npmVersion":"11.11.0","description":"File-based vault provider plugin for ApiQuest (JSON, readonly)","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@apiquest/types":"workspace:*"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.57.1","vitest":"^4.0.18","typescript":"^5.3.3","@types/node":"^25.2.3","@apiquest/types":"workspace:*","@rollup/plugin-commonjs":"^29.0.0","@rollup/plugin-typescript":"^12.3.0","@rollup/plugin-node-resolve":"^16.0.3"},"peerDependencies":{"@apiquest/types":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/plugin-vault-file_1.0.8_1772561825782_0.5862147870032011","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@apiquest/plugin-vault-file","version":"1.0.9","description":"File-based vault provider plugin for ApiQuest (JSON, readonly)","main":"dist/index.js","types":"dist/index.d.ts","type":"module","repository":{"type":"git","url":"git+https://github.com/hh-apiquest/fracture.git","directory":"packages/plugin-vault-file"},"scripts":{"build":"rollup -c && tsc --emitDeclarationOnly","dev":"rollup -c --watch","test":"vitest"},"keywords":["apiquest","vault","secrets","plugin","file"],"author":{"name":"ApiQuest"},"license":"AGPL-3.0-or-later","apiquest":{"type":"value","runtime":["fracture"],"capabilities":{"provides":{"valueTypes":["vault:file"]}}},"dependencies":{"@apiquest/types":"workspace:*"},"devDependencies":{"@apiquest/types":"workspace:*","@rollup/plugin-commonjs":"^29.0.0","@rollup/plugin-node-resolve":"^16.0.3","@rollup/plugin-typescript":"^12.3.0","@types/node":"^25.2.3","rollup":"^4.57.1","typescript":"^5.3.3","vitest":"^4.0.18"},"peerDependencies":{"@apiquest/types":"^1.0.0"},"gitHead":"f8a7595a8b6f65c9388c6a394fda2b23db45c850","_id":"@apiquest/plugin-vault-file@1.0.9","bugs":{"url":"https://github.com/hh-apiquest/fracture/issues"},"homepage":"https://github.com/hh-apiquest/fracture#readme","_nodeVersion":"20.20.0","_npmVersion":"11.11.0","dist":{"integrity":"sha512-1qSGhiRuTtdHgvcRy5J1CjbpO43xpGl8H02jwn/CU6vvpqDMDOD1ZMTkPgUFPrE7uEMmPn+1tq/hoVU08XkohA==","shasum":"649de3d6777bc2e6a55b4659ce7b356050959c24","tarball":"https://registry.npmjs.org/@apiquest/plugin-vault-file/-/plugin-vault-file-1.0.9.tgz","fileCount":11,"unpackedSize":65929,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apiquest%2fplugin-vault-file@1.0.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCmGF8pbjOFbAD2zZvKpW+vFb0/Fs8VdkfegTukwlUySgIhAIonrBmgJrgNTo0r7wPfkGB0L4CNZMzqv2wJkSZcPmm9"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b8313c52-6670-4c2f-b63d-bac515caed91"}},"directories":{},"maintainers":[{"name":"lto-dev","email":"lto-dev@humanhub.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/plugin-vault-file_1.0.9_1772591651071_0.14988969696536425"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-13T04:06:59.557Z","modified":"2026-03-04T02:34:11.533Z","1.0.4":"2026-02-13T04:06:59.953Z","1.0.5":"2026-02-14T01:35:15.158Z","1.0.6":"2026-02-16T03:01:03.336Z","1.0.8":"2026-03-03T18:17:05.940Z","1.0.9":"2026-03-04T02:34:11.219Z"},"bugs":{"url":"https://github.com/hh-apiquest/fracture/issues"},"author":{"name":"ApiQuest"},"license":"AGPL-3.0-or-later","homepage":"https://github.com/hh-apiquest/fracture#readme","keywords":["apiquest","vault","secrets","plugin","file"],"repository":{"type":"git","url":"git+https://github.com/hh-apiquest/fracture.git","directory":"packages/plugin-vault-file"},"description":"File-based vault provider plugin for ApiQuest (JSON, readonly)","maintainers":[{"name":"lto-dev","email":"lto-dev@humanhub.io"}],"readme":"# @apiquest/plugin-vault-file\n\nFile-based vault provider plugin for ApiQuest. Provides secure secret storage using encrypted or plain JSON files.\n\n## Installation\n\n```bash\n# Using npm\nnpm install -g @apiquest/plugin-vault-file\n\n# Or using fracture CLI\nfracture plugin install vault-file\n```\n\n## Features\n\n- Read secrets from JSON files\n- AES-256-GCM encryption support\n- Environment variable integration for encryption keys\n- Read-only access (no write operations)\n- Secure key handling from environment variables\n\n## Usage\n\nConfigure the plugin in your collection's runtime options:\n\n### Plain JSON Vault\n\n```json\n{\n  \"$schema\": \"https://apiquest.net/schemas/collection-v1.0.json\",\n  \"protocol\": \"http\",\n  \"options\": {\n    \"plugins\": {\n      \"vault:file\": {\n        \"filePath\": \"./secrets.json\"\n      }\n    }\n  }\n}\n```\n\n**secrets.json:**\n```json\n{\n  \"apiKey\": \"sk_live_abc123\",\n  \"dbPassword\": \"secret_password\",\n  \"jwtSecret\": \"my_jwt_secret\"\n}\n```\n\n### Encrypted Vault\n\nFor encrypted vaults, specify the encryption key from an environment variable:\n\n```json\n{\n  \"options\": {\n    \"plugins\": {\n      \"vault:file\": {\n        \"filePath\": \"./secrets.json.enc\",\n        \"key\": \"VAULT_KEY\",\n        \"source\": \"env\"\n      }\n    }\n  }\n}\n```\n\nThis reads the encryption key from `process.env.VAULT_KEY`.\n\n### Accessing Vault Secrets\n\nUse the `{{$vault:file:secretName}}` syntax in your requests:\n\n```json\n{\n  \"type\": \"request\",\n  \"id\": \"api-call\",\n  \"name\": \"API Call with Secret\",\n  \"auth\": {\n    \"type\": \"apikey\",\n    \"apikey\": {\n      \"key\": \"x-api-key\",\n      \"value\": \"{{$vault:file:apiKey}}\",\n      \"in\": \"header\"\n    }\n  }\n}\n```\n\n### Using in Scripts\n\n```javascript\n// preRequestScript\nconst dbPassword = await quest.vault.get('file', 'dbPassword');\nquest.variables.set('password', dbPassword);\n\nquest.test('Vault accessible', async () => {\n  const secret = await quest.vault.get('file', 'apiKey');\n  expect(secret).to.be.a('string');\n});\n```\n\n## Encryption\n\nTo create an encrypted vault file, use AES-256-GCM encryption with the following format:\n\n```json\n{\n  \"_encrypted\": \"aes-256-gcm\",\n  \"_iv\": \"base64_initialization_vector\",\n  \"_authTag\": \"base64_authentication_tag\",\n  \"_data\": \"base64_encrypted_data\"\n}\n```\n\nThe plugin automatically detects encrypted files by the presence of the `_encrypted` field.\n\n## Security Best Practices\n\n1. **Never commit unencrypted secrets** to version control\n2. **Store encryption keys in environment variables**, not in code\n3. **Use different vault files** for different environments (dev, staging, prod)\n4. **Rotate secrets regularly** and update vault files\n5. **Use encrypted vaults** for sensitive production secrets\n\n## Compatibility\n\n- **Protocols:** Works with all plugins\n- **Node.js:** Requires Node.js 20+\n\n## Documentation\n\n- [Fracture Documentation](https://apiquest.net/docs/fracture)\n- [Schema Reference](https://apiquest.net/schemas/collection-v1.0.json)\n\n## License\n\nDual-licensed under AGPL-3.0-or-later and commercial license. See LICENSE for details.\n","readmeFilename":"README.md"}