{"_id":"@apiquest/fracture","_rev":"10-da320be9210d0eb620fbadf568d7ceb9","name":"@apiquest/fracture","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.2":{"name":"@apiquest/fracture","version":"1.0.2","keywords":["api","testing","runner","quest","apiquest","fracture","cli"],"author":{"name":"ApiQuest"},"license":"AGPL-3.0-or-later","_id":"@apiquest/fracture@1.0.2","maintainers":[{"name":"lto-dev","email":"lto-dev@humanhub.io"}],"bin":{"quest":"bin/cli.js","apiquest":"bin/cli.js","fracture":"bin/cli.js"},"dist":{"shasum":"8c64e5e3095c5ff89cd7bf34a20df0f2caf08de7","tarball":"https://registry.npmjs.org/@apiquest/fracture/-/fracture-1.0.2.tgz","fileCount":263,"integrity":"sha512-3dGjCFKA4ArwRg1PT1Hg4nvilUoz3L6RMlHfjgCQpzlHmKfJGWTso+nU7Ey+MBe4LfD9Ey7yXqTFn+Z2xBJSxQ==","signatures":[{"sig":"MEYCIQDTqn4U8yN1Rv5elXVlquEZGkCGQiNIMEzh3VjdPBmE8gIhAIxXiaoxArfGEuP8hKsVc9ns+vKe2K0DYL+jwJyFrdfJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1247405},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"cc008f70e2eb4b1dcbec98229b945d69599224f4","scripts":{"dev":"tsc --watch","test":"vitest","build":"tsc"},"_npmUser":{"name":"lto-dev","email":"lto-dev@humanhub.io"},"_npmVersion":"11.7.0","description":"Core collection runner engine for ApiQuest with integrated CLI","directories":{},"_nodeVersion":"22.16.0","dependencies":{"got":"^14.6.6","chai":"^6.2.2","acorn":"^8.11.0","lodash":"^4.17.23","moment":"^2.30.1","graphlib":"^2.1.8","commander":"^11.1.0","acorn-walk":"^8.3.0","tough-cookie":"^6.0.0","@types/lodash":"^4.17.23","@apiquest/types":"workspace:*","@types/graphlib":"^2.1.12"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.3.3","@types/chai":"^5.2.3","@types/node":"^25.1.0","@types/acorn":"^4.0.6"},"_npmOperationalInternal":{"tmp":"tmp/fracture_1.0.2_1770929779571_0.5526334012049898","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@apiquest/fracture","version":"1.0.4","keywords":["api","testing","runner","quest","apiquest","fracture","cli"],"author":{"name":"ApiQuest"},"license":"AGPL-3.0-or-later","_id":"@apiquest/fracture@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"},"bin":{"quest":"bin/cli.js","apiquest":"bin/cli.js","fracture":"bin/cli.js"},"dist":{"shasum":"1fc387fb7c780ed969e30812f8ba6fc18241bead","tarball":"https://registry.npmjs.org/@apiquest/fracture/-/fracture-1.0.4.tgz","fileCount":132,"integrity":"sha512-v3m0uWQIpVmegQ71q5cGhz/Re2pqpPGiCp0ETWrkZreJ4qn8jbJnFJWIwSHDZLY3i7pc1yb4LgoqAX+YVxAEBA==","signatures":[{"sig":"MEUCIQDU4tXdBkhLRb5UfIHWH9VRxzby4FDbI9y2f4nvdA4pWwIgc5FBk8XBNFf/s+vupztRLlAd/ggjngjVUXL9v6tPzHQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apiquest%2ffracture@1.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":743866},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"871bbdc6cbe888807cdc9474dcaf528863c729a4","scripts":{"dev":"tsc --watch","test":"vitest","build":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c5b8721-c49f-41b6-93cf-61c97595fcc3"}},"repository":{"url":"git+https://github.com/hh-apiquest/fracture.git","type":"git","directory":"packages/fracture"},"_npmVersion":"11.10.0","description":"Core collection runner engine for ApiQuest with integrated CLI","directories":{},"_nodeVersion":"20.20.0","dependencies":{"got":"^14.6.6","chai":"^6.2.2","acorn":"^8.11.0","lodash":"^4.17.23","moment":"^2.30.1","graphlib":"^2.1.8","commander":"14.0.3","acorn-walk":"^8.3.0","tough-cookie":"^6.0.0","@types/lodash":"^4.17.23","@apiquest/types":"workspace:*","@types/graphlib":"^2.1.12"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.3.3","@types/chai":"^5.2.3","@types/node":"^25.2.3","@types/acorn":"^4.0.6"},"_npmOperationalInternal":{"tmp":"tmp/fracture_1.0.4_1770955538293_0.31315109958537146","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@apiquest/fracture","version":"1.0.5","keywords":["api","testing","runner","quest","apiquest","fracture","cli"],"author":{"name":"ApiQuest"},"license":"AGPL-3.0-or-later","_id":"@apiquest/fracture@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"},"bin":{"quest":"bin/cli.js","apiquest":"bin/cli.js","fracture":"bin/cli.js"},"dist":{"shasum":"28063834aa04adf43f88fad07774664274c4d076","tarball":"https://registry.npmjs.org/@apiquest/fracture/-/fracture-1.0.5.tgz","fileCount":119,"integrity":"sha512-smVxNLC3HZd5FJds/b3Fyc5KCSgiLPHFBY4owV5BybUHyRmlOLrwyDJskwoeEQpCIJsa/CDOZG6VNo03wbwRlw==","signatures":[{"sig":"MEQCIFtKvX2/Xbkrg5nwO9OgSj8lQ4/WI3AONfNzRhqoRn87AiAeWFNoWw/uzA/AMjZ7MQEI3QVuHa9m+CCEAijQ9GYqCg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apiquest%2ffracture@1.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":550172},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"368dd13b898628c3c57b06cc4bf60d16668811e1","scripts":{"dev":"tsc --watch","test":"vitest","build":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c5b8721-c49f-41b6-93cf-61c97595fcc3"}},"repository":{"url":"git+https://github.com/hh-apiquest/fracture.git","type":"git","directory":"packages/fracture"},"_npmVersion":"11.10.0","description":"Core collection runner engine for ApiQuest with integrated CLI","directories":{},"_nodeVersion":"20.20.0","dependencies":{"got":"^14.6.6","chai":"^6.2.2","acorn":"^8.11.0","lodash":"^4.17.23","moment":"^2.30.1","graphlib":"^2.1.8","commander":"14.0.3","acorn-walk":"^8.3.0","tough-cookie":"^6.0.0","@types/lodash":"^4.17.23","@apiquest/types":"workspace:*","@types/graphlib":"^2.1.12"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.3.3","@types/chai":"^5.2.3","@types/node":"^25.2.3","@types/acorn":"^4.0.6"},"_npmOperationalInternal":{"tmp":"tmp/fracture_1.0.5_1771032904153_0.717799181932069","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@apiquest/fracture","version":"1.0.6","keywords":["api","testing","runner","quest","apiquest","fracture","cli"],"author":{"name":"ApiQuest"},"license":"AGPL-3.0-or-later","_id":"@apiquest/fracture@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"},"bin":{"quest":"bin/cli.js","apiquest":"bin/cli.js","fracture":"bin/cli.js"},"dist":{"shasum":"fe74279673f36ac565cbd9c050931f3b971c9108","tarball":"https://registry.npmjs.org/@apiquest/fracture/-/fracture-1.0.6.tgz","fileCount":115,"integrity":"sha512-xUwQOrs5Yq7scKHw1aD5o3yKu6bgeWsedKUubHYiwj4Wmir+fYCJacGJbyiTMe037IxXJ5GOKd9eWZzvnrbgsw==","signatures":[{"sig":"MEUCIFFpXAKP8Ck/fw8spG4sXvxTH9fDJKIbjlUfc0c0yHfLAiEAquknjO94QrwiPgsOvv/iLdrH4luR18JTZ7qMUOUNMD4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apiquest%2ffracture@1.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":545650},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"17e6fe16873a66ae8ff3565d1f064752ef3b2f81","scripts":{"dev":"tsc --watch","test":"vitest","build":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c5b8721-c49f-41b6-93cf-61c97595fcc3"}},"repository":{"url":"git+https://github.com/hh-apiquest/fracture.git","type":"git","directory":"packages/fracture"},"_npmVersion":"11.10.0","description":"Core collection runner engine for ApiQuest with integrated CLI","directories":{},"_nodeVersion":"20.20.0","dependencies":{"got":"^14.6.6","chai":"^6.2.2","acorn":"^8.11.0","lodash":"^4.17.23","moment":"^2.30.1","graphlib":"^2.1.8","commander":"14.0.3","acorn-walk":"^8.3.0","tough-cookie":"^6.0.0","@types/lodash":"^4.17.23","@apiquest/types":"workspace:*","@types/graphlib":"^2.1.12"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.3.3","@types/chai":"^5.2.3","@types/node":"^25.2.3","@types/acorn":"^4.0.6"},"_npmOperationalInternal":{"tmp":"tmp/fracture_1.0.6_1771210850976_0.916907196902607","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@apiquest/fracture","version":"1.0.8","keywords":["api","testing","runner","quest","apiquest","fracture","cli"],"author":{"name":"ApiQuest"},"license":"AGPL-3.0-or-later","_id":"@apiquest/fracture@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"},"bin":{"quest":"bin/cli.js","apiquest":"bin/cli.js","fracture":"bin/cli.js"},"dist":{"shasum":"22621189ef4c22fa7092fdc62c38834eb55c9530","tarball":"https://registry.npmjs.org/@apiquest/fracture/-/fracture-1.0.8.tgz","fileCount":115,"integrity":"sha512-GS1vDKOuXeuwhZpCifpbi4Mvhl/mVAwQSvjZqDbVNb0XsF9L6DXlz9DmFULCXmvtJ9GfegErd7VVhlMyqn/qjg==","signatures":[{"sig":"MEUCIQDTVmvltvo5AMDogzok/LYNVwhjXMsPxbjh58c4stLRxQIgKMx0KukSCx5SCqZQCsw+RahVS2nUUDCipCUMOWfC0x4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apiquest%2ffracture@1.0.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":546700},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"3437c3f8ec14a804ffc2a2dd072fe694b9287907","scripts":{"dev":"tsc --watch","test":"vitest","build":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c5b8721-c49f-41b6-93cf-61c97595fcc3"}},"repository":{"url":"git+https://github.com/hh-apiquest/fracture.git","type":"git","directory":"packages/fracture"},"_npmVersion":"11.11.0","description":"Core collection runner engine for ApiQuest with integrated CLI","directories":{},"_nodeVersion":"20.20.0","dependencies":{"got":"^14.6.6","chai":"^6.2.2","acorn":"^8.11.0","lodash":"^4.17.23","moment":"^2.30.1","graphlib":"^2.1.8","commander":"14.0.3","acorn-walk":"^8.3.0","tough-cookie":"^6.0.0","@types/lodash":"^4.17.23","@apiquest/types":"workspace:*","@types/graphlib":"^2.1.12"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.3.3","@types/chai":"^5.2.3","@types/node":"^25.2.3","@types/acorn":"^4.0.6"},"_npmOperationalInternal":{"tmp":"tmp/fracture_1.0.8_1772561814160_0.02615792247628046","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@apiquest/fracture","version":"1.0.9","keywords":["api","testing","runner","quest","apiquest","fracture","cli"],"author":{"name":"ApiQuest"},"license":"AGPL-3.0-or-later","_id":"@apiquest/fracture@1.0.9","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"},"bin":{"quest":"bin/cli.js","apiquest":"bin/cli.js","fracture":"bin/cli.js"},"dist":{"shasum":"8c91f6ef3fcfdf99b33f649999f6535944265608","tarball":"https://registry.npmjs.org/@apiquest/fracture/-/fracture-1.0.9.tgz","fileCount":115,"integrity":"sha512-0mCCDJXebF66Ph+RdPF/GNiZKj8HsgNjL08vOiqKNPsL96I469zWvwlAbeUZspmH9oBPpQfywasoYIe2GjvtBg==","signatures":[{"sig":"MEUCIQCaXSOJIg7J/7MQPTvllC08iGYpzQj6BWZ2xjPN+V6lNQIgBLp9Rd6aNtHSQC8ApRdM4sJkprJ/YLvhwgqebzyreJ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apiquest%2ffracture@1.0.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":546700},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"f8a7595a8b6f65c9388c6a394fda2b23db45c850","scripts":{"dev":"tsc --watch","test":"vitest","build":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c5b8721-c49f-41b6-93cf-61c97595fcc3"}},"repository":{"url":"git+https://github.com/hh-apiquest/fracture.git","type":"git","directory":"packages/fracture"},"_npmVersion":"11.11.0","description":"Core collection runner engine for ApiQuest with integrated CLI","directories":{},"_nodeVersion":"20.20.0","dependencies":{"got":"^14.6.6","chai":"^6.2.2","acorn":"^8.11.0","lodash":"^4.17.23","moment":"^2.30.1","graphlib":"^2.1.8","commander":"14.0.3","acorn-walk":"^8.3.0","tough-cookie":"^6.0.0","@types/lodash":"^4.17.23","@apiquest/types":"workspace:*","@types/graphlib":"^2.1.12"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.3.3","@types/chai":"^5.2.3","@types/node":"^25.2.3","@types/acorn":"^4.0.6"},"_npmOperationalInternal":{"tmp":"tmp/fracture_1.0.9_1772591639439_0.7298046100702278","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@apiquest/fracture","version":"1.1.0","description":"Core collection runner engine for ApiQuest with integrated CLI","main":"dist/index.js","types":"dist/index.d.ts","type":"module","bin":{"apiquest":"bin/cli.js","fracture":"bin/cli.js","quest":"bin/cli.js"},"repository":{"type":"git","url":"git+https://github.com/hh-apiquest/fracture.git","directory":"packages/fracture"},"scripts":{"build":"tsc && node --input-type=module -e \"import{copyFileSync}from'node:fs';copyFileSync('src/scriptDeclarations.d.ts','dist/scriptDeclarations.d.ts');\"","dev":"tsc --watch","test":"vitest"},"keywords":["api","testing","runner","quest","apiquest","fracture","cli"],"author":{"name":"ApiQuest"},"license":"AGPL-3.0-or-later","dependencies":{"@apiquest/types":"workspace:*","@types/graphlib":"^2.1.12","@types/lodash":"^4.17.23","acorn":"^8.11.0","acorn-walk":"^8.3.0","chai":"^6.2.2","commander":"14.0.3","got":"^14.6.6","graphlib":"^2.1.8","lodash":"^4.17.23","moment":"^2.30.1","tough-cookie":"^6.0.0"},"devDependencies":{"@types/acorn":"^4.0.6","@types/chai":"^5.2.3","@types/node":"^25.2.3","typescript":"^5.3.3","vitest":"^4.0.18"},"gitHead":"962d781d90741d413f18b3db6d79b21910c8d6eb","_id":"@apiquest/fracture@1.1.0","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-nI3NR7lfdkI/520HXf0s3uLdiZi/desJAKiW5Ot8Ru1K5vc0XsDVmuqg4KwYM+ni7tatmiUa8OqdxD+cj70iJA==","shasum":"ec38f9f74bdf0f076409db163bde6fdb2fe8513e","tarball":"https://registry.npmjs.org/@apiquest/fracture/-/fracture-1.1.0.tgz","fileCount":124,"unpackedSize":567851,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apiquest%2ffracture@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDnL5/YWH4a5GYkb8Zg/F3MEVddyVJKFQE/u2szRDO5LQIhANiSOSxkEHyJt0uWrBpQvXGa+oydlrg1BRF4eumXnNIH"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c5b8721-c49f-41b6-93cf-61c97595fcc3"}},"directories":{},"maintainers":[{"name":"lto-dev","email":"lto-dev@humanhub.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/fracture_1.1.0_1772746401061_0.826343547845505"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-11T03:15:42.252Z","modified":"2026-03-05T21:33:21.515Z","1.0.0":"2026-02-11T03:15:42.715Z","1.0.2":"2026-02-12T20:56:19.804Z","1.0.4":"2026-02-13T04:05:38.440Z","1.0.5":"2026-02-14T01:35:04.299Z","1.0.6":"2026-02-16T03:00:51.418Z","1.0.8":"2026-03-03T18:16:54.345Z","1.0.9":"2026-03-04T02:33:59.602Z","1.1.0":"2026-03-05T21:33:21.205Z"},"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":["api","testing","runner","quest","apiquest","fracture","cli"],"repository":{"type":"git","url":"git+https://github.com/hh-apiquest/fracture.git","directory":"packages/fracture"},"description":"Core collection runner engine for ApiQuest with integrated CLI","maintainers":[{"name":"lto-dev","email":"lto-dev@humanhub.io"}],"readme":"# @apiquest/fracture\n\nCore collection runner engine for ApiQuest with integrated CLI. Executes JSON-based API test collections with support for multiple protocols via plugins.\n\n## Installation\n\n```bash\nnpm install -g @apiquest/fracture\n```\n\n### Plugins\n\nProtocol and authentication plugins extend fracture capabilities:\n\n```bash\n# Using fracture CLI (recommended)\nfracture plugin install http        # HTTP/REST APIs\nfracture plugin install auth        # Authentication\nfracture plugin install vault-file  # File-based secrets vault\nfracture plugin install graphql     # GraphQL\nfracture plugin install sse         # Server-Sent Events\n\n# Or using npm\nnpm install -g @apiquest/plugin-http\nnpm install -g @apiquest/plugin-auth\nnpm install -g @apiquest/plugin-vault-file\nnpm install -g @apiquest/plugin-graphql\nnpm install -g @apiquest/plugin-sse\n```\n\n## Quick Start\n\n### CLI\n\n```bash\n# Run a collection\nfracture run ./collection.json\n\n# With environment and global variables\nfracture run ./collection.json \\\n  -e ./environment.json \\\n  -g baseUrl=https://api.example.com\n\n# With iteration data\nfracture run ./collection.json \\\n  --data ./users.csv \\\n  --iterations 10\n\n# Parallel execution\nfracture run ./collection.json \\\n  --parallel \\\n  --concurrency 5\n\n# With external libraries (npm, file, or CDN)\nfracture run ./collection.json \\\n  --allow-external-libraries\n```\n\n### Programmatic API\n\n```typescript\nimport { CollectionRunner } from '@apiquest/fracture';\nimport type { Collection } from '@apiquest/types';\n\nconst runner = new CollectionRunner();\nconst result = await runner.run(collection, {\n  globalVariables: { baseUrl: 'https://api.example.com' }\n});\n\nconsole.log(`Tests: ${result.passedTests}/${result.totalTests} passed`);\n```\n\n## Key Features\n\n- **Deterministic DAG-based parallel execution** - Explicit dependency graphs ensure stable, reproducible runs\n- **Pre-run validation** - AST-based script analysis validates syntax before execution\n- **Deterministic test counting** - Test counts known before execution starts\n- **Plugin architecture** - Support for HTTP, GraphQL, gRPC, WebSocket, SSE via plugins\n- **Collection-level iterations** - Data-driven testing with CSV/JSON files\n- **Event-based reporting** - Real-time progress events for custom reporters\n- **External libraries** - Load npm packages, local files, or CDN scripts (opt-in)\n\n## Collection Schema\n\nCollections are JSON files following the ApiQuest schema:\n\n```json\n{\n  \"$schema\": \"https://apiquest.net/schemas/collection-v1.0.json\",\n  \"info\": {\n    \"id\": \"basic-api\",\n    \"name\": \"Basic API Test Collection\",\n    \"version\": \"1.0.0\"\n  },\n  \"variables\": {\n    \"baseUrl\": \"https://jsonplaceholder.typicode.com\"\n  },\n  \"protocol\": \"http\",\n  \"items\": [\n    {\n      \"type\": \"request\",\n      \"id\": \"req-1\",\n      \"name\": \"Get Single Post\",\n      \"data\": {\n        \"method\": \"GET\",\n        \"url\": \"{{baseUrl}}/posts/1\",\n        \"headers\": {\n          \"Accept\": \"application/json\"\n        }\n      },\n      \"postRequestScript\": \"quest.test('Status is 200', () => {\\n  expect(quest.response.status).to.equal(200);\\n});\\n\\nquest.test('Response has userId', () => {\\n  const body = quest.response.json();\\n  expect(body).to.have.property('userId');\\n});\"\n    }\n  ]\n}\n```\n\n## CLI Options\n\nKey runtime options (see [full CLI reference](../../docs/quest_cli.md) for all options):\n\n```bash\n# Variables & Environment\n-g, --global <key=value>      Set global variable\n-e, --environment <file>      Environment file\n--env-var <key=value>         Set environment variable\n\n# Execution\n--parallel                    Enable parallel execution\n--concurrency <number>        Max concurrent requests\n--bail                        Stop on first test failure\n--delay <ms>                  Delay between requests\n--timeout <ms>                Request timeout\n\n# SSL/TLS\n--ssl-cert <path>             Client certificate (PEM)\n--ssl-key <path>              Client private key\n--insecure                    Disable SSL validation\n\n# Proxy\n--proxy <url>                 HTTP/HTTPS proxy\n--proxy-auth <user:pass>      Proxy credentials\n\n# Plugins & Libraries\n--install-plugins             Auto-install missing plugins\n--allow-external-libraries    Enable external libraries (npm/file/cdn)\n\n# Output\n--silent                      Suppress output\n--log-level <level>           error|warn|info|debug|trace\n--no-color                    Disable colors\n```\n\n**Exit Codes:**\n- `0` — All tests passed\n- `1` — One or more tests failed\n- `2` — Invalid CLI input\n- `3` — Pre-run validation failed\n- `4` — Runtime error\n\n## External Libraries\n\nLoad npm packages, local files, or CDN scripts in your test scripts. Requires `--allow-external-libraries` flag for security.\n\n```json\n{\n  \"options\": {\n    \"libraries\": [\n      {\n        \"name\": \"validator\",\n        \"source\": { \"type\": \"npm\", \"package\": \"validator\" },\n        \"version\": \"^13.11.0\"\n      },\n      {\n        \"name\": \"myutils\",\n        \"source\": { \"type\": \"file\", \"path\": \"./utils/helpers.js\" }\n      },\n      {\n        \"name\": \"lodash\",\n        \"source\": { \"type\": \"cdn\", \"url\": \"https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js\" }\n      }\n    ]\n  }\n}\n```\n\nUse in scripts with `require()`:\n\n```javascript\nconst validator = require('validator');\nquest.test('Valid email', () => {\n  expect(validator.isEmail('test@example.com')).to.be.true;\n});\n```\n\nRun with: `fracture run collection.json --allow-external-libraries`\n\nSee [CLI documentation](../../docs/quest_cli.md#external-libraries) for details.\n\n## Documentation\n\n- [CLI Reference](../../docs/quest_cli.md)\n- [Runner API](../../docs/quest_runner.md)\n- [Schema Specification](../../docs/quest_schema_spec.md)\n\n## License\n\nDual-licensed under AGPL-3.0-or-later and commercial license. See [LICENSE](./LICENSE.txt) for details.\n","readmeFilename":"README.md"}