{"_id":"mountebank-studio","_rev":"31-9899dc8840af726a3fc8d14767965af5","name":"mountebank-studio","dist-tags":{"latest":"0.7.1"},"versions":{"0.1.0":{"name":"mountebank-studio","version":"0.1.0","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.1.0","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"b19838797f7e6b70a7d93090eb4888dd54da5089","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.1.0.tgz","fileCount":11,"integrity":"sha512-C/OVrwHHt/1gljW6b5j/4F/cooeZ34W+iBqdGXb4/wgV48/YW0gtw1Gzqw6JFwF13xjeft+7dbnFn64rX4DLuA==","signatures":[{"sig":"MEUCIQDmhlPEMCQnakUFNkUd2DKmWALj98M9+iR0wxhOElTjDwIgNyTbHHDelYpQvZ9ff4LsQaqVXdEJq0yQEnSCGXjotxw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":593576},"type":"module","engines":{"node":">=20"},"gitHead":"6e7b66c693b079e9251bbd28bfb307db1bac5043","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"10.9.7","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"axios":"^1.19.0","react":"^19.2.8","zustand":"^5.0.15","react-dom":"^19.2.8","mountebank":"^2.9.1","react-router-dom":"^7.18.2","@tanstack/react-query":"^5.101.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","oxlint":"^1.75.0","vitest":"^4.1.10","prettier":"^3.9.6","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.1.0_1787083915714_0.5997194972909887","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"mountebank-studio","version":"0.1.1","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.1.1","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"8ef88153fb98fab6f346f7f019a29c2becb9ad76","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.1.1.tgz","fileCount":11,"integrity":"sha512-6dHSjZSdKi/CAtDGrDWKqikp9ZGO07lJ49ykfCEX9HTdU1EqipJsGJoqtyUR/P8UXGh+v5G3hdMBVYcwjrAz+Q==","signatures":[{"sig":"MEUCIHnMu/jdNeZRJy37c/qQgJ97Q8Bc3ndGzjlKl5TNr3aJAiEAqpLu0anUqY3S4C0dDUEz7d2l82Jp84eebmpQe6oy2xg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":595731},"type":"module","engines":{"node":">=20"},"gitHead":"74756aa374806198a48bee307221070f273f649e","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"mountebank":"^2.9.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.1.1_1787088233962_0.9452186721363469","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"mountebank-studio","version":"0.1.2","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.1.2","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"d7eed7ded51458da879e7c506fd42ee028c766f6","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.1.2.tgz","fileCount":11,"integrity":"sha512-mvc8CV50wrNxzvWybcfs5nikP4vthgwugXM2lQCLuODW3chNoDYryqdJqavqQtCDzFdtPGVfUvEdjDV/5VYnbQ==","signatures":[{"sig":"MEUCIFeCf8bxoYSRJZYaqxUvtqPFsPI8hwT9DruIzllt+ddSAiEAw9vEiSdUk8GvlEt4d3iqL7BLP3l0BweCHfKhMlN3Jq0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":597679},"type":"module","engines":{"node":">=20"},"gitHead":"c6e1f188c3ffee6a43885bf02d623e35d891326c","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"mountebank":"^2.9.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.1.2_1787119417958_0.4037446071965234","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"mountebank-studio","version":"0.1.3","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.1.3","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"e2e939854302b0b72d5041fc3e871fad5dee6b33","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.1.3.tgz","fileCount":11,"integrity":"sha512-JMBivZmGVCMWShzUSAE9Km+nSlPqzQxC2Loe+6TXPN4LUkteo9eBKEnEuUJgKqyYkVZNcKmY9EdtrekThXr4gQ==","signatures":[{"sig":"MEUCIQDX9UWz0U/n//CE44e6blVoV1CITgVMvd3Ot9iQaXY3QAIgS/Ur+wgdJEuVlbA+vYTidyq20/Kqo0F80Y3iKPn50Pk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":598103},"type":"module","engines":{"node":">=20"},"gitHead":"08b4c880e9a817c2f82f4d223a058125577de504","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"mountebank":"^2.9.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.1.3_1787127231569_0.7499918624180211","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"mountebank-studio","version":"0.1.4","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.1.4","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"fe3686cbee7747e4f46848437e39e0df45c92e75","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.1.4.tgz","fileCount":11,"integrity":"sha512-L2GTnvf9D8lgKyIvI765RawUOYBkU9xZ2uM+h8+UX1xy+JwYnNiT+yVkqOSkJ4GmkM/4fJCIUZci9cx8TRk0lA==","signatures":[{"sig":"MEQCIDyipBB6TxA5cPUrgJhkd5nKVaJ/4NhAl3asNV4lufaLAiBl6xp5MS1IWPvvsEg3eX1mhSloskRt3U6V41MTwTTKng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":600885},"type":"module","engines":{"node":">=20"},"gitHead":"1d638f476e4ae3e74f24a4875494979137037efb","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"mountebank":"^2.9.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.1.4_1787128132581_0.33312014160298453","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"mountebank-studio","version":"0.1.5","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.1.5","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"edc43875a475e267fd75745209dde1d1d32a55aa","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.1.5.tgz","fileCount":11,"integrity":"sha512-TI990yxSevzOm+Af79m0OUAWoQGeOm8+iF+n0jQZouGR2024LaUEaHin9CbKbgmBdGlfSLv/qjzV4boktueA2w==","signatures":[{"sig":"MEUCIQCdfQjoek/FVTDyh7kYDu6TGHEVUblNmZ3hrghpbUpKFQIgDXT+9vx8XqBcdennodE+2nPqE7MN4ko0al7CHsU/GRc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":610961},"type":"module","engines":{"node":">=20"},"gitHead":"5c12bc1ea3ec58fd22ddd9e0d160223d636cf343","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"mountebank":"^2.9.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.1.5_1787129783776_0.4771524754942489","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"mountebank-studio","version":"0.1.6","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.1.6","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"edd18e1e66f6d08b38ca53742683f56edfdfdf6f","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.1.6.tgz","fileCount":11,"integrity":"sha512-sRMneIhd3ZSq26wiWsQfgzR7DuFo7MdYh0xGgxdqtNRNAANmRgtES2iybJcgYTEF7Z5yN0DVsoi7a4ljcb8Mpg==","signatures":[{"sig":"MEUCIAtC6EBtVZ84QYUSIU9Wg5TZYjjsZ7CH3Q60lvsOE5ywAiEAl9BI9VMfrTaYzsT6XOXEafHIiKwmJ52FU9RRmjBRhKo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":610964},"type":"module","engines":{"node":">=20"},"gitHead":"b5a1188a0135a5248bc9a8ff87bcb29d9eb51c83","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"mountebank":"^2.9.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.1.6_1787130017620_0.9762393709703763","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"mountebank-studio","version":"0.1.7","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.1.7","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"74d3df8a4e12b4f5c36302af99e78c11621a14d3","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.1.7.tgz","fileCount":11,"integrity":"sha512-DOymJPQ4Rr5gPrdV8NTWNJJXueUEiw3RLZCkjCSPBOrPkZJpFPfNq/ligkE0gYQ7QJo9MnUXxcg8xDTySwhSqA==","signatures":[{"sig":"MEYCIQC6Il+vuPBOpqMXRNjUt9OzW1uBvkm1aj/sdpBjOOV/iwIhAL1nQ5lm49bvx5k77sCeKYMkHF78x9YC8W9MO69GXU4D","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.1.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":613497},"type":"module","engines":{"node":">=20"},"gitHead":"529e14cd6b5461a2e693d9b61f47ddc410151d78","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"mountebank":"^2.9.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.1.7_1787131611354_0.8902587094539445","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"mountebank-studio","version":"0.1.8","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.1.8","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"d22131f51810e17070c8a58f50f75e001ffab1fb","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.1.8.tgz","fileCount":11,"integrity":"sha512-PhPI7MawYz4ASyNhL4+98LuBajquE+ReOU/3ul5ojH8v0R+CDgzV/hgp9ZC6OnDLZK5Ti852jTvzoWEgjcvKlQ==","signatures":[{"sig":"MEYCIQCBeNddIaw+qxyDb7Dm2B41GviZReOZ1LuKD44a2iTtmgIhAPZHdgrNqXuQJSzp29LVtQf7J8QaotB1NaOPkS7KsN+U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.1.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":614514},"type":"module","engines":{"node":">=20"},"gitHead":"c4d5bae0dc81c522ce7d87bb3f180542ada1176a","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"mountebank":"^2.9.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.1.8_1787132293605_0.39821891692384237","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"mountebank-studio","version":"0.2.0","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.2.0","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"3607c2892948110680b49ab15708a0da58dc1c8b","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.2.0.tgz","fileCount":11,"integrity":"sha512-lQSSK2jF9oCb2Z1QqYH/IqDb1Eo7f9TVUAW9bqCtLmzDsot8d4yBMrTyEaT2q2qk/ntY8czcL17v3Im2Sm9R+g==","signatures":[{"sig":"MEUCIFwrteOPiqmRAE+fGJO4IuQob8MnT6lL8uGn5gQQkMCuAiEAos9DBFSSEST42Foats3t0SqJqFAiAB0vbJU/IOt2Omk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":620608},"type":"module","engines":{"node":">=20"},"gitHead":"7e3de4d7af1cc4e41373d5d7e9da9d17615ee5a7","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"mountebank":"^2.9.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.2.0_1787134689169_0.12106354436413591","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"mountebank-studio","version":"0.2.1","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.2.1","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"2df4355c34313d004755fc698bb1711009965d48","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.2.1.tgz","fileCount":11,"integrity":"sha512-flFhDXb1PkZ0u42JOB1kuD27zfhrE75b6cRg1/oNibH1tjNhyvNnGWSvr07ciXZbpMnY69htWqotpfFl93bYLg==","signatures":[{"sig":"MEUCIFH4icI+h2c9SeCi9fK+K2wYHChn0XIoTsO5sRpHDjnjAiEA8T57j5HJPzYSntqFUbKbp6wR3M9/3yJ96ybwU9in0o4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":620274},"type":"module","engines":{"node":">=20"},"gitHead":"e1deda981b0a06b3a4e38903c0ccc05b57b22f1e","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"mountebank":"^2.9.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.2.1_1787136834475_0.4004469253789553","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"mountebank-studio","version":"0.3.0","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter","mbtest"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.3.0","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"eb1fafce0fe5a7080abdcc604f7bef8e4982b256","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.3.0.tgz","fileCount":11,"integrity":"sha512-EggCidu+EWHZDp/OPYWYel/bYhODMhVlLxM4INmoUgV05gaEPl+UMno+gYmyVH3MdjwPGLdCYPYm//3co6Mp4g==","signatures":[{"sig":"MEUCIDMklDg2gxGK8lZmtkExLYDUN2ClgLkNmVyCTmrnvpm/AiEA0uk1sAOTBJ6pqFJ/53dNKIiU4rURNpJz4H8fDaZxHQo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636137},"type":"module","engines":{"node":">=20"},"gitHead":"0ba5afcdf64861a69b7fcfa33c9b274cc694da05","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@mbtest/mountebank":"^2.9.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.3.0_1787314329427_0.6232541749050473","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"mountebank-studio","version":"0.3.1","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter","mbtest"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.3.1","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"7700ded108044f8709b7f2b9417f541da0e792a3","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.3.1.tgz","fileCount":11,"integrity":"sha512-+ECMKMkZSyS0FF4sjVdCk9xvBTxozej4nSAWVU2iOe8SknOJggJoXS9ZY7TO4KO2gJJa+Wv7xolMiFXfNbVwaA==","signatures":[{"sig":"MEUCIDdLG5e2kFwYgATIjpZpXaZAj5BYYM52gjlDPdNzXkBZAiEAmtij4eapgmJd9tZ+FM4B/1SnBJfTSjcG7FRBhuI81qM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":637119},"type":"module","engines":{"node":">=20"},"gitHead":"311bde7610405c40a411df0f63c3c177fe9eea6c","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@mbtest/mountebank":"^2.9.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.3.1_1787735118980_0.04950615765856492","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"mountebank-studio","version":"0.3.2","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter","mbtest"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.3.2","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"a617591d9fdd653048c64dca6c989b4378d00198","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.3.2.tgz","fileCount":11,"integrity":"sha512-CBdlUVOSr3sP57j/DG+YUGQfETvQYFNwr7FqGkY+UtqsSwhTT+LxbiqaICF2IizBHF8V/sxrlGXuXjZPo/Sb1g==","signatures":[{"sig":"MEUCIQC6om1CTN+90B2vUaJhgj0lBtpA4WImfNrPZorSmpW6swIgHab7Vw0Q12CrAkWH4sidORb+rb54kGpSDkuIffPrHmA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":637381},"type":"module","engines":{"node":">=20"},"gitHead":"dac42a58cc7b753e10480135e4d0cc7b7d08c898","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@mbtest/mountebank":"^2.9.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.3.2_1787742026931_0.7798004465014525","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"mountebank-studio","version":"0.4.0","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter","mbtest"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.4.0","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"7c49a4d930c84d5b0bb7bbd59b0554c5f568296b","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.4.0.tgz","fileCount":11,"integrity":"sha512-q3GgLaf747vS5mpoQz2R/GbI/bYyW/klzjkoeaspamM/UefnMoWI1HP0LWC0/6w2VE+vKHXPNZKZNrVc99jDKQ==","signatures":[{"sig":"MEUCIDI3J2rovG5nDp1osW6MHQXv0rzfXlj9kkGGNwkqpN++AiEA77Acn174t84yg2/hVqslpTS/Kte+dSsX1XCGu382vLA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":639863},"type":"module","engines":{"node":">=20"},"gitHead":"d79f09f2bf392fecfc17fba3d6f6709c2d17ee85","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@mbtest/mountebank":"^2.9.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.4.0_1787742294753_0.47655142498731773","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"mountebank-studio","version":"0.4.1","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter","mbtest"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.4.1","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"45af738de0993a7ac35b9a763c8dbc81a580c3da","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.4.1.tgz","fileCount":11,"integrity":"sha512-Fqqhap6BsNRVEWBOVL4yNnRR7E4vigWpXQ3nqdPXhf1J+L1N246qZO8gw1TV4TL6m3gh4FqA82N1+/ze4k8dOg==","signatures":[{"sig":"MEQCICuwcwVvQpNB8o5yCdWl9aik3H6rknczTRL07Wy0wvVMAiBTZ+RjYdXeICpxuree71Hz5TH9lcOJB4FHNU1U39MAYQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":640821},"type":"module","engines":{"node":">=20"},"gitHead":"1212a53729639e85f1cdf627991e05efddfd675b","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@mbtest/mountebank":"^2.9.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.4.1_1787744765600_0.4696471593527678","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"mountebank-studio","version":"0.4.2","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter","mbtest"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.4.2","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"a530b2c79bff56bb5db7874b2a25dcff3c97cac1","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.4.2.tgz","fileCount":11,"integrity":"sha512-GGZwhgVlu728VYtUBu/pWM9XyqreasFN08ZS0WNtVIqGzQZgBTsy3TOZ4ZvAfpijTPlpzgTHAJzOjLkEqzH8CA==","signatures":[{"sig":"MEYCIQCtqVKb732T50IJ7J5jLAvNwrP2502s0gL1m+8hzAsgogIhAMFmUFfn8PxLr3+3he2Tn6p9pw2w6gp6NXQU8jsE31iz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":641039},"type":"module","engines":{"node":">=20"},"gitHead":"f94c56aae3b0c1bde441dd3af593ebb8351e552b","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@mbtest/mountebank":"^2.9.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.4.2_1787746733626_0.17249500050182642","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"mountebank-studio","version":"0.4.3","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter","mbtest"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.4.3","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"d617890d830da66c65215c9b060321aa77cf2cdd","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.4.3.tgz","fileCount":11,"integrity":"sha512-Ebi7DcKVmcHHEY2i6J6l0P8i8QHnELop8VZ73JHpRAU+NBZa/jze3Cnlah1QtEO2vM1tV45Wsjhz48FnUW5b8Q==","signatures":[{"sig":"MEUCIQC/HoHHORsVswL0DfU6fQ97AjNiqb0Q/RpcAkqvknDWngIgT78/5hcMMT6cwoRE/pE4q5vwShlKFEqaKgJVAypVCsY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":640528},"type":"module","engines":{"node":">=20"},"gitHead":"1183345c1a6f6c91b43bd410cb45b1d903482f01","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@mbtest/mountebank":"^2.9.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.4.3_1787748237387_0.5312058980508185","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"mountebank-studio","version":"0.4.4","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter","mbtest"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.4.4","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"206c8281211091df78f223949b6ab3cb4b37144c","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.4.4.tgz","fileCount":11,"integrity":"sha512-MHQTeRUW7nOR4DjMCnMTQU2KohmiHHa+sSmZsxHMSwZXOaL5xw4g80j7nP86Oj37++jWdpuI8iK28qM1HHzhVg==","signatures":[{"sig":"MEUCIQCQUNENOFdB/+ez3boCtuKLiVWC+F16HtU8qQjyElk8SgIgbGIxVKhXAhFdN7TrX07xvNDOAr8kfa9XSSkYex2qQbQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.4.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":641720},"type":"module","engines":{"node":">=20"},"gitHead":"c45c9b5c90928578f9604114cea3fecc54fd28b7","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@mbtest/mountebank":"^2.9.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.4.4_1787749807958_0.8278218388518996","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"mountebank-studio","version":"0.4.5","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter","mbtest"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.4.5","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"b5c6ebbe6412015c1631559e6eb96f4f0c0da0a6","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.4.5.tgz","fileCount":11,"integrity":"sha512-+bpPfQtIZGecX7rA+NrKHjWn4NUAxemrgdSBXQbGYvGb0b6sIHemKAU6+02dvgGxTB7IqpjgUGyf5WP5TLErzw==","signatures":[{"sig":"MEUCIGCfEnYvLurpHKw+LQCMY4ZA8OWtF0esXKuEnYOtBmC5AiEA/LVlYq7mL8+kcDfArxth5WgHsT5plJ9fNTj46fEHmCA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.4.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":642121},"type":"module","engines":{"node":">=20"},"gitHead":"79f23746e332f5035d63e65001bdd4e9c0c15ae4","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@mbtest/mountebank":"^2.9.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.4.5_1787750456711_0.3430497826068353","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"mountebank-studio","version":"0.4.6","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter","mbtest"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.4.6","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"ddba912849b6917d187c39283a4a54ba2d5d6ff4","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.4.6.tgz","fileCount":11,"integrity":"sha512-C322y6Shkvj+MaCHgZHRBEWt8GuTHkOQOLDV6Ni16kKVhLy1cB5ZbY4KIc+Exi+T1NXC+U0c9goUGd95lpT6vw==","signatures":[{"sig":"MEYCIQC1zFpptGoJoYZ89WEzT07ZDzVmXRQOMwh10kjm5JPDOwIhAKG2LhlW4B3fLUEKhZjAKWSP5KvofJ2sqHt3brvxN17T","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.4.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":643607},"type":"module","engines":{"node":">=20"},"gitHead":"17894001912eecbacc44af03c2e53ab3ebce0ec5","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@mbtest/mountebank":"^2.9.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.4.6_1787751038967_0.32404403858576036","host":"s3://npm-registry-packages-npm-production"}},"0.4.7":{"name":"mountebank-studio","version":"0.4.7","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter","mbtest"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.4.7","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"2db1378d3077e5a7df9d15cc328f2940e49f9ee3","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.4.7.tgz","fileCount":11,"integrity":"sha512-Yt9+AVliBVC37Y2+zJXpGlZ/qJTwWpC1yTncijwJ9ImrE+h9ATBTr13jINwmeUCyet97MVv4OORFRejpN5sccQ==","signatures":[{"sig":"MEUCIAitZytQOgsmQR6zFw+BQ40+myfBkMuZPahA2Zl+KF1DAiEAvCW3GAbB3UADgRuGCXhbaC1z1dLqY7P5sIeQFmuppn0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.4.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":654228},"type":"module","engines":{"node":">=20"},"gitHead":"e5dfa52598725d0d392264c6966523e6ea991f2e","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@mbtest/mountebank":"^2.9.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.4.7_1787755281585_0.788896442219799","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"mountebank-studio","version":"0.5.0","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter","mbtest"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.5.0","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"85bdf3c64e67959c4963d4b26749401d5f3d8bf6","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.5.0.tgz","fileCount":11,"integrity":"sha512-7wQI2pYcmUxq3Pa4hp41b0jaQNcB0g9PPOkxz5/6PtKcFd2W5d+Oxjl9YVqXjlPIYEQv4t/39zd3pwGBUhcM2w==","signatures":[{"sig":"MEUCIDAPfIbP11xVHvnH4YaIJshI444D+HM4uXNAuYtT5HjeAiEA+Pzve+JM7148qwTltoLjrnr3xMcTyKtdXs3MD3tyGTs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHYScVnxIWglwdsLEM4sgkRezdeazchsOrp2cAItWPXyAiABS2n9f6ayotoMsGRNzXVSWdELUqCxrUByFdZNY7PnCA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":672527},"type":"module","engines":{"node":">=20"},"gitHead":"b62abdbde5c64270995be75bd62054d1a2d07c7a","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@mbtest/mountebank":"^2.9.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.5.0_1787902869560_0.6755515366442859","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"mountebank-studio","version":"0.5.1","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter","mbtest"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.5.1","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"e2ea1a6008bbbe54e4d7f8271fc6893c1fd4052b","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.5.1.tgz","fileCount":11,"integrity":"sha512-lZnIb7OhZFSLomXrt7gZ8CUSO5rwBv2Hox1CKGFFoZbG4qiCd7D+EXGzQAlRmIoKqXO/Ia1PRzIMticfF1qlEg==","signatures":[{"sig":"MEUCIEjpxKx3yHHf3SovdzrM5tdPKDoW7Cz65tJJMoqbu6eLAiEAxw3sPbje53RJdOffVyVjAtqcNMPrXk+pG6k/6/B7wV0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCvDqC6A3mbNv6JMoR5/7nU1I/wVKPGL9OCxlKpCmc9zgIhAK5oE/YDAz3yvogJ/7OLnhpCOfh8H/jQkJIwgvTQZPZC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":673521},"type":"module","engines":{"node":">=20"},"gitHead":"4630ee6438a7a2054df1deaaf3973d4680403310","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@mbtest/mountebank":"^2.9.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.5.1_1787903027154_0.6761913484471243","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"mountebank-studio","version":"0.6.0","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter","mbtest"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.6.0","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"ec398a390f18a646fdb457d7cdb60a7c66e7afc2","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.6.0.tgz","fileCount":11,"integrity":"sha512-QHwjL6Ss/UfK6YKV0rHg4yEB/TNYm4DjwOQN6QKJWnB8LrOPtIeumgh8XvTnJoRyZcvbibVpjFz6TkonCF/k0g==","signatures":[{"sig":"MEYCIQDLnS5Rqrs7STP/3Gl8cWr38KWNvQ4yaxeHvANe2V+f5wIhAL1sqYavcErSIo8YDQo+3rsYrT1Zd5IbrBSVjahFH8id","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD+c11GqWa1PdXNMTlwrLpCGHb01DaV5VrfLpvTAdBj9gIhAKGcYj0YPHn2yTLA7HEeJWEjeKFp1vzC9+Ebw13W2krK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":683894},"type":"module","engines":{"node":">=20"},"gitHead":"0c4720a55490f4a60085063eeb554689521eb0bd","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@mbtest/mountebank":"^2.9.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.6.0_1787920303509_0.4456100192011818","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"mountebank-studio","version":"0.6.1","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter","mbtest"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.6.1","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"94f60581a536af85f879df4221a66b1d8999332e","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.6.1.tgz","fileCount":11,"integrity":"sha512-hmrhtuJDAel2k3Wa6GMGebBEfNYfSMDuwHvhUsuGpcjHnm0EIb7UKOBSugbwoKh/LV10oboEk3Ixqmamto0nhQ==","signatures":[{"sig":"MEUCIQD9PQc8G4OD5gGqFZzFUNnAxMFx7fibi+YS2WV4pIYBWgIgJpYQwCJMBK5MsmiAKFaarovcOC6LQaJKc9h71t9IfMs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAd6lojlFysFL0l96bz78vquOjB3H/Ctjj7K79/Et2RHAiEA5wRfja17gvH6lwa4cs9+5hVjU9xLbuaGnUSC7yAKw60=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":684429},"type":"module","engines":{"node":">=20"},"gitHead":"095a39c4b91d5cfee0532b3b49c2cc3492636d08","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@mbtest/mountebank":"^2.9.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.6.1_1787921276594_0.6333160039105996","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"mountebank-studio","version":"0.6.2","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter","mbtest"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.6.2","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"f88a2e866b405a42dab80376f0afc0b775adcae1","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.6.2.tgz","fileCount":11,"integrity":"sha512-GeTPmQdNIvSw0ZUD+JE/PtFBtb38Jb71DPjG9iK1oKPmDJcLW1CxFqIi0EOoLRRm1+DHlmY0zRfzP4BIvOlorw==","signatures":[{"sig":"MEYCIQD4UPdQUJbMYn7YMAXr2iauIgeeypilmd9WZ5vCQCfRggIhAMy5TDlEzar5+qtJ0xWnUo3B6RHpf9M/VhqvD6uDaKTn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIB5Fia8fOK9oe/jTSiqTmg+Yl7ed+sisvpH+3pNiTOo0AiEAzQEqg5MIPtp7Gjq12Rqa2H1rYYHIjL+Ee4ZgJi/bJ78=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.6.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":684649},"type":"module","engines":{"node":">=20"},"gitHead":"5f8e9fcb7952fc174bceca44db342f6b7dd19d80","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@mbtest/mountebank":"^2.9.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.6.2_1787921828115_0.20696143056091798","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"mountebank-studio","version":"0.6.3","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter","mbtest"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.6.3","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"5c69dadb3be62793c125353c370f0eccf18e6743","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.6.3.tgz","fileCount":11,"integrity":"sha512-5HqlR4QOwED45e6MY1osOjFjoCYhqRirP3woNbajkjvlpYClsWVFKi0RVBD8ThLIGfauylNOC8tolyvmTv4CeA==","signatures":[{"sig":"MEUCIDk3834+wHG6PGwLE0xZ/5G4SNDgaOVngNPHhc1R/h3pAiEA0AgRt8oW22jtH2RufgN5HMHw2q03jBhdoD7X4+TQxT0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHZp/+m0tkbfnSGc2wsxf4AWp0JMmxRGIWvG1wpAYbNdAiBQ0YczuGZMwHd6iZK4MmWyHl5naReLOB/PZlhqjNncTg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.6.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":690761},"type":"module","engines":{"node":">=20"},"gitHead":"51fba1bc0790ffbfe84e8360e134ffbf1635ab56","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@mbtest/mountebank":"^2.9.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.6.3_1787922341387_0.5150065601485503","host":"s3://npm-registry-packages-npm-production"}},"0.6.4":{"name":"mountebank-studio","version":"0.6.4","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter","mbtest"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.6.4","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"94f899ce3bea37a43ca81d4499b54b8f6561f962","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.6.4.tgz","fileCount":11,"integrity":"sha512-vegLlVdD+JacCJVZWkwnJAJxpEsQNS77xVzEAWMa4SyNM1zO4hw5KkRhtS7uqiX4aNU7h9iFVvzrfbAVFnUyyA==","signatures":[{"sig":"MEQCIHWujpC4RJGKVE5xqpVcjwjBy4KomrKyYYjNwFEpNEzTAiBHC1i35pmDh1lfXu7LTNwK/FlclC85mHHKq2f9U/2Pag==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBNi3gPZObSeAwMuPwtDc5AXhgrWCxkO/KE3yaLYA0luAiEAkI5hjLdOmFHVXv7vA+MZM7K7UxFv4PEi3QsUSGIZV1s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.6.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":693373},"type":"module","engines":{"node":">=20"},"gitHead":"318fa34022ec9515bf2cb03c9c42bc048ba6727a","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@mbtest/mountebank":"^2.9.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.6.4_1787922667352_0.3421288009215795","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"mountebank-studio","version":"0.7.0","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter","mbtest"],"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","_id":"mountebank-studio@0.7.0","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"bin":{"mountebank-studio":"server/index.mjs"},"dist":{"shasum":"5268e36d4876d8d842795512c8e50d21334ef8c5","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.7.0.tgz","fileCount":11,"integrity":"sha512-da2bMujQuiogFuAcxeasygveGV+B60pEkR/GDzEHmNzhZ9tPtOKuGUqDAlpmzQN+r1O7cNpMT949iyaqrRknKg==","signatures":[{"sig":"MEYCIQC+ziYyjU672yaMkjXgO0T9wVFKBawfiC87brqchDc05AIhAKDpIbNwtWijVYMhsUkUSYYpZOiu+AuzrkUTV32v7+KK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIG3Ckni5NCzI1DTEI/m8mbmGZIuRkeryN30lWLW02JZfAiAPupCen5tPnYkd9oGavQ21fS7R/kGhAF4l8NbAScfX3Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":695937},"type":"module","engines":{"node":">=20"},"gitHead":"05c329e12b4f3f41839d4c075ac361224196def4","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@mbtest/mountebank":"^2.9.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"tmp":"tmp/mountebank-studio_0.7.0_1787923084290_0.5098477338849541","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"_id":"mountebank-studio@0.7.1","bin":{"mountebank-studio":"server/index.mjs"},"bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"dist":{"shasum":"b891451b602401cb05c76b6777213d9f760212e7","tarball":"https://registry.npmjs.org/mountebank-studio/-/mountebank-studio-0.7.1.tgz","fileCount":11,"integrity":"sha512-AyP1MafsfLhSKds8GHEgSEQLfwIg+iNAJbuWelMxIgA1HQfqz3e9ccIU1Vl1GYp/7tn1RNhIjGoI4KNQbDV0Tw==","signatures":[{"sig":"MEYCIQDN0NdOwD3EkyeBFUWeEkzCCx2ep08CyHGmY2VvRXE5rgIhAPw9nYuulmkZ3fxTtgzyKds3XYbHQdtDPo2H3uUcqUPH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCID9bojSF4LMhAoDNz+OprcqJhLCnp6JWv49qYF8odNecAiEAv57Fr2Hrytxn5tbsjsW3kDt/wYKGpFfDTk88/JHF9Zc="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mountebank-studio@0.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":697348},"name":"mountebank-studio","type":"module","author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"engines":{"node":">=20"},"gitHead":"38bad226a43855df05a354426405cf7c53b5b8fc","license":"Apache-2.0","scripts":{"dev":"vite","lint":"oxlint","build":"tsc -b && vite build","start":"node server/index.mjs","tests":"vitest run","format":"prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{ts,json,md}\"","prepack":"yarn build","preview":"vite preview","test:watch":"vitest","check:types":"tsc --noEmit -p tsconfig.app.json"},"version":"0.7.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee12d430-0fca-4a2e-a094-03bc3467938b"}},"homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter","mbtest"],"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"_npmVersion":"12.0.2","description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","directories":{},"maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"_nodeVersion":"22.23.2","dependencies":{"@mbtest/mountebank":"^2.9.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","axios":"^1.19.0","react":"^19.2.8","oxlint":"^1.75.0","vitest":"^4.1.10","zustand":"^5.0.15","prettier":"^3.9.6","react-dom":"^19.2.8","typescript":"~6.0.2","@types/node":"^24.13.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","react-router-dom":"^7.18.2","@vitejs/plugin-react":"^6.0.4","@tanstack/react-query":"^5.101.4"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mountebank-studio_0.7.1_1787924458332_0.6992047289148648"}}},"time":{"created":"2026-08-18T20:11:55.476Z","modified":"2026-08-28T13:40:58.769Z","0.1.0":"2026-08-18T20:11:55.876Z","0.1.1":"2026-08-18T21:23:54.109Z","0.1.2":"2026-08-19T06:03:38.104Z","0.1.3":"2026-08-19T08:13:51.729Z","0.1.4":"2026-08-19T08:28:52.755Z","0.1.5":"2026-08-19T08:56:23.967Z","0.1.6":"2026-08-19T09:00:17.765Z","0.1.7":"2026-08-19T09:26:51.500Z","0.1.8":"2026-08-19T09:38:13.745Z","0.2.0":"2026-08-19T10:18:09.384Z","0.2.1":"2026-08-19T10:53:54.639Z","0.3.0":"2026-08-21T12:12:09.606Z","0.3.1":"2026-08-26T09:05:19.142Z","0.3.2":"2026-08-26T11:00:27.054Z","0.4.0":"2026-08-26T11:04:54.935Z","0.4.1":"2026-08-26T11:46:05.763Z","0.4.2":"2026-08-26T12:18:53.818Z","0.4.3":"2026-08-26T12:43:57.565Z","0.4.4":"2026-08-26T13:10:08.094Z","0.4.5":"2026-08-26T13:20:56.863Z","0.4.6":"2026-08-26T13:30:39.138Z","0.4.7":"2026-08-26T14:41:21.763Z","0.5.0":"2026-08-28T07:41:09.676Z","0.5.1":"2026-08-28T07:43:47.268Z","0.6.0":"2026-08-28T12:31:43.620Z","0.6.1":"2026-08-28T12:47:56.693Z","0.6.2":"2026-08-28T12:57:08.244Z","0.6.3":"2026-08-28T13:05:41.476Z","0.6.4":"2026-08-28T13:11:07.466Z","0.7.0":"2026-08-28T13:18:04.391Z","0.7.1":"2026-08-28T13:40:58.406Z"},"bugs":{"url":"https://github.com/gokhanibrikci/mountebank-studio/issues"},"author":{"name":"Gökhan İbrikçi","email":"gokhanibrikci@gmail.com"},"license":"Apache-2.0","homepage":"https://github.com/gokhanibrikci/mountebank-studio#readme","keywords":["mountebank","mock","mock-server","api-mocking","service-virtualization","test-doubles","stub","imposter","mbtest"],"repository":{"url":"git+https://github.com/gokhanibrikci/mountebank-studio.git","type":"git"},"description":"A visual console for Mountebank: imposters, stubs, responses and captured traffic, without hand-writing JSON. Unofficial — not affiliated with the mountebank project.","maintainers":[{"name":"gokhanibrikci","email":"gokhanibrikci@gmail.com"}],"readme":"# Mountebank Studio\n\n[![CI](https://github.com/gokhanibrikci/mountebank-studio/actions/workflows/ci.yml/badge.svg)](https://github.com/gokhanibrikci/mountebank-studio/actions/workflows/ci.yml)\n[![npm](https://img.shields.io/npm/v/mountebank-studio)](https://www.npmjs.com/package/mountebank-studio)\n\nA visual control surface for [Mountebank](https://www.mbtest.dev/). It talks to the\nadmin API of any instance you point it at and gives you screens for the things you\nwould otherwise hand-write as JSON: imposters, stubs, predicates, responses, proxy\nresponses, behaviors, and the traffic each imposter has captured.\n\n**[Try it in your browser →](https://gokhanibrikci.github.io/mountebank-studio/)** — the same\npanel with a Mountebank stand-in inside the page, so there is nothing to install to see what\nit does. Nothing is listening in there, and it says so on every screen.\n\nIt also reads the mocks back out as a **Postman collection** — each http imposter a\nfolder, each stub one example request — so what you have running is something you can fire\nat straight away. Non-HTTP imposters are left out, and a condition a request cannot express\nis written into the request's own description rather than silently dropped. The download is on the Imposters screen, next to *New Imposter*.\n\n![The workspace: what is running, how much of it answered, and the traffic it took](docs/overview.png)\n\n<details>\n<summary>Two more screens</summary>\n\n**One imposter and its stubs**, matched top to bottom, with the hit counts computed\nfrom the captured traffic. The third stub shows a negated header condition; the fourth\ncarries a delay; the fifth breaks the connection instead of answering.\n\n![An imposter's stubs](docs/imposter.png)\n\n**The traffic**, with the stub that answered each request. Mountebank reports the\nmatched stub only with `--debug`, so the panel evaluates the predicates itself and says\nso rather than implying the instance told it.\n\n![Captured requests and the stub that answered each one](docs/activity.png)\n\n</details>\n\nIt is a shell, not a product for one team. It knows nothing about the service you\nare mocking. You add your own instances, and they live in your browser.\n\nWhat it covers of Mountebank — feature by feature, what it carries without drawing,\nand how that was verified against the real package — is in\n[COVERAGE.md](COVERAGE.md).\n\n> **Unofficial.** Mountebank Studio is an independent project. It is not affiliated\n> with, endorsed by, or sponsored by the [mountebank](https://www.mbtest.dev) project.\n> Mountebank is MIT-licensed, and no part of it is copied into this repository: it is a\n> dependency ([`@mbtest/mountebank`](https://www.npmjs.com/package/@mbtest/mountebank)),\n> installed from npm and started as its own process.\n\n## One command\n\n```bash\nnpx mountebank-studio\n```\n\nThat starts a Mountebank and serves the panel at the address it prints. The instance is\nalready listed when you open it — one press of **Start** and you are in. Nothing\nto configure, and nothing to allow: the panel and the instance share one origin, so\nthe CORS question below never comes up. Ctrl-C stops both.\n\nThe panel lists that instance by its own address — `http://127.0.0.1:2525`, the one in\nthe banner below, the one you would `curl`. The panel's own address is not it, and\ncannot be: a panel serves a page, an instance serves an admin API.\n\n```\n  Mountebank Studio        http://127.0.0.1:5273\n  Started for you          http://127.0.0.1:2525 · mountebank 2.9.4\n  Reached through          http://127.0.0.1:5273/mb/local — nothing is cross-origin\n```\n\nUseful flags: `--port` for the panel, `--mb-port` for the instance, `--mb-url` to use\nan instance you already run instead of starting one, `--allow-injection` to let stubs\nrun JavaScript (Settings can also turn that on later, which restarts the instance), `--host 0.0.0.0` to expose the panel (read the warning it prints).\nMountebank is started with `--localOnly`, so it refuses connections from anything but\nthis machine, and injection is **off**. Its own port is not published to your network —\nthough a panel exposed with `--host 0.0.0.0` still forwards to it on `/mb/local`, which\nis what the warning it prints is about.\n\n### Installed, if you reach for it often\n\n```bash\nnpm i -g mountebank-studio\n```\n\nThen run it by name, from any directory:\n\n```bash\nmountebank-studio\n```\n\nThe only difference from `npx` is that `npx` resolves the package on every run and this\nresolves it once.\n\n### For an instance you cannot add `--origin` to\n\nA Mountebank somebody else deployed will refuse the panel: the browser demands that\ninstance allow this page, and `--origin` belongs to whoever runs it.\n\n**Just add it as an environment.** Paste its URL into **Add Environment** and press *Test\nConnection*: if it answers but refuses this page, the panel asks the host serving it to\nfetch it instead, and reports the route it will use. Nothing about that instance changes,\nnothing is typed twice, and no restart is involved. An environment you already have shows\nthe same offer inside the error the first time a read fails — *Reach it through this host*.\n\nThe address you typed is left exactly as it is. It records where the instance **is**; the\nroute is worked out from what this host publishes at `/mb/targets.json`. Because the host\nkeeps its forwards in memory, the panel remembers which environments were reached that way\nand asks again after a restart — so it survives one without a file on disk.\n\nOnly loopback may ask. Bound to a network with `--host`, the server refuses: an endpoint\nthat makes it fetch any URL it is handed would be a proxy for whoever can reach it.\n\nYou can also name the instance up front, which is the better fit for a script:\n\n```bash\nmountebank-studio --mb-url https://mountebank.example.com\n```\n\nNo instance is started; the panel lists that URL and reaches it through this origin, so\nit needs no `--origin` of its own.\n\nAdd `--insecure` only if a certificate cannot be fixed. It turns off certificate\nverification for **every** HTTPS connection this server makes — the instance you named and\nany other it is later asked to forward to — which means anything between you and them can\nread and change these requests; the banner says so while it is on.\n\n### Or pinned to a project, for a team\n\nThis one is different: it belongs **inside a project** — a directory that has a\n`package.json` — and it fixes one version for everyone who checks that project out.\n\n```bash\nnpm i -D mountebank-studio\n```\n\n```json\n\"scripts\": { \"mocks\": \"mountebank-studio\" }\n```\n\n```bash\nnpm run mocks\n```\n\n`npm run` only works where a `package.json` with that script exists; run it anywhere\nelse and npm answers `ENOENT: no such file or directory ... package.json`. A global\ninstall is not part of this recipe — use the plain `mountebank-studio` command above.\n\nInstalling it as a *runtime* dependency does nothing useful either way: this is a\nprogram to run, not a library to import.\n\n### One file, and it survives a restart\n\nEverything the instance holds — imposters, stubs, responses, settings — is **one JSON\nfile**. The banner says which:\n\n```\n  Imposters kept in        ~/.mountebank-studio/local-2525.json\n```\n\nThe file is read at startup and rewritten whenever anything changes, so closing the\nterminal loses nothing. It is also just a file: open it, diff it, commit it next to the\ntests it feeds, send it to somebody. It is the same shape `--configfile` reads and the same\nshape **Settings → Full configuration** shows, so what comes out goes back in.\n\nThe name carries the instance's port, so `--mb-port 3000` is a different instance with a\nfile of its own rather than two servers writing over each other.\n\nMove it with `--store ./mocks.json`, or in the panel under **Settings → Where these mocks\nare kept** — the current mocks are written to the new path before it takes effect, and the\nchoice is remembered for the next run. `--memory` opts out for a throwaway session, which\nthe banner then says instead.\n\nMountebank's own directory tree (`--datadir`) is no longer used for this, and a tree left\nby an earlier version is carried into the file on the first run rather than abandoned. It is\nnot deleted; that is your call.\n\n> The file is loaded with `--noParse`. Without it Mountebank runs a config file through EJS,\n> so a recorded body containing `<%` — a JSP fragment, an ASP page, anything quoting a\n> template — would be executed on reload instead of served back.\n\nNothing is kept for an instance you point at with `--mb-url`: that one is yours, and how it\npersists is its own business.\n\nThe environments you add are stored in the browser rather than on the machine, so a\ndifferent browser — or cleared site data — meets the welcome screen again. What lives\nwhere is spelled out under [Adding an environment](#adding-an-environment).\n\n### Injected JavaScript, and the state it keeps\n\nAn `inject` response is JavaScript that Mountebank runs in its own process, so it is off\nunless asked for. Start with `--allow-injection`, or turn it on in **Settings → Instance\nsettings → Injected JavaScript**: the mocks are written to their file, the instance restarts\nwith the flag, and they come back.\n\n**The choice sticks, for the machine.** Turning it on — with the flag or in Settings —\nwrites it to `~/.mountebank-studio/settings.json`, so every later `mountebank-studio` starts\nthat way, including an instance on another port. It has to stick, since Mountebank refuses\nto load a file containing an injected response without the flag; and being asked again every\nmorning is a nag rather than a safeguard. `--no-injection` turns it back off, everywhere.\n\nWhat ships is still off. A panel installed from npm should not arrive able to run whatever\nJavaScript a stub carries — but that is about the first run, not about somebody who has\nalready decided.\n\nIf it ever does refuse the file — one copied from elsewhere, or hand-edited into something\nit will not take — the panel comes up anyway, with the instance running empty. **The file is\nnot touched and nothing is written over it** until it loads, so what is on disk is safe; it\nis just not answering. The terminal and Settings both say which and why.\n\n`config.state` is Mountebank's own object and it lives in memory — there is no endpoint\nthat reads or writes it, so neither this panel nor its server can save it. What can is the\ninjected function itself, which runs with a real `require`. So the inject editor offers\n**Keep config.state on disk**: the function you wrote is wrapped in a few lines that load a\nJSON file into `config.state` before it runs and write it back after. The editor keeps\nshowing your function, not the wrapper.\n\n```\n  ~/.mountebank-studio/local-2525.state.json\n```\n\nEvery file operation in the wrapper is inside a try/catch: a mock that stops answering\nbecause a directory turned read-only would be a worse failure than state that did not\npersist.\n\n### Or from a checkout\n\n```bash\nyarn install\nyarn dev          # http://localhost:5273\n```\n\nThen add your own instances. The panel starts with an empty list and opens on a\nwelcome screen: add them one at a time and press **Start** to enter one. Everything is\neditable later under **Settings**.\n\n---\n\n## How the panel reaches an instance\n\nAn environment says WHERE an instance is. How the panel gets there is decided per\nrequest from what the host serving this page publishes — a fact about the deployment,\nnot a choice, and not something the spelling of a target controls.\n\nThere are two roads. `mountebank-studio` is itself a host that forwards, so the\none-command route takes the second one; a build served as a static page by something\nthat forwards nothing takes the first.\n\n### 1 · Directly — when nothing in front of the page forwards there\n\nTarget is the instance's own URL:\n\n```\nhttps://mb.example.com        or        http://localhost:2525\n```\n\nThe browser calls that host from this page, which is cross-origin, so **that\ninstance has to allow this origin**:\n\n```bash\nmb start --origin \"http://localhost:5273\"\n```\n\nFor more than one page, **repeat the flag** — Mountebank then echoes back whichever\norigin matched, so the API opens to the pages you name rather than to the web:\n\n```bash\nmb start --origin \"http://localhost:5273\" --origin \"https://mountebank-studio.example.com\"\n```\n\nIt is not a pipe-separated list. `--origin \"a|b\"` is one string handed to the CORS\nmiddleware, so Mountebank answers with `Access-Control-Allow-Origin: a|b` — not a valid\norigin, and no browser accepts it. (Measured on 2.9.4; `--ipWhitelist` is the flag that\ndoes take pipes.)\n\nCheap and zero-infrastructure. It has one real limit: it only works on instances you\ncan restart.\n\n### 2 · Through this page's own host — whenever that host forwards there\n\nNothing to choose: **the panel takes this route by itself** whenever the host that\nserves it says it forwards to that instance. Keep the instance's own URL in the\nenvironment — that is what `mountebank-studio` publishes for the instance it starts,\n`http://127.0.0.1:2525`, and the panel resolves the road on its own. (A path can still\nbe entered by hand — `/mb/stage` — for a deployment that forwards without publishing a\nmap.)\n\nNothing is cross-origin, so CORS never enters the picture and the instance needs\n**no flag, no restart and no change of any kind** — which matters when a DevOps\nteam owns it and \"please add a browser flag to the mock server\" is not a\nsustainable request.\n\nTwo things are needed on the host, and both live in one file. First the forwarding\nitself — in production one `location` block, see [`deploy/nginx.conf`](deploy/nginx.conf):\n\n```nginx\nlocation /mb/stage/ {\n    proxy_pass https://mountebank.stg.example.com/;\n    proxy_set_header Host mountebank.stg.example.com;\n    proxy_http_version 1.1;\n    proxy_buffering off;\n}\n```\n\nThen the map, so the panel knows which path leads to which instance — one static\nlocation in production, and automatic in development:\n\n```nginx\nlocation = /mb/targets.json {\n    default_type application/json;\n    add_header Cache-Control \"no-store\";\n    return 200 '{\"stage\":\"https://mountebank.stg.example.com\"}';\n}\n```\n\n```bash\n# .env.local — comma-separated name=target pairs; the dev server publishes the map\nMB_PROXY=stage=https://mb.stg.example.com,dev=https://mb.dev.example.com\n```\n\nThe panel reads that map once, before its first request, and matches an environment\nto a path **by upstream URL**. Matching by name would be a guess: an environment's\nid is minted once from its label and outlives it, so `/mb/stage` can be live while\nthe environment called \"stage\" now points somewhere else — and following that guess\nwould silently show one instance's mocks as another's. No map means no forwarding\nand every target is called directly.\n\n`MB_PROXY` has no `VITE_` prefix on purpose: it configures the dev server and is\nnever readable from client code.\n\nThe two models mix freely — one environment each way is normal.\n\n> **A forwarded path is an open door.** Whoever can reach it can rewrite those\n> mocks, with none of the instance's own network restrictions in the way. Put the\n> panel and its `/mb/*` paths behind the same authentication as your other\n> internal tools.\n\n### Either way, CORS is not access control\n\nIt is a rule browsers apply to scripts. Anything that can reach an instance over\nthe network — curl, another service, a script outside a browser — can call its\nadmin API whether or not your origin is on any list. If that matters, use\n`mb start --apikey <secret>` and firewall the admin port.\n\n### When a read fails, the panel does not guess\n\nA refused origin and a dead host reach a script as the same opaque error, so the\npanel repeats the request as `no-cors` — the browser performs that one regardless,\nand it resolves only if something actually answered (`src/lib/mb/reach.ts`). One\nextra request, one verdict, shared by every screen and re-earned every 20 seconds:\n\n- _\"Mountebank is up — but it will not answer this page\"_ → it answered, and this\n  host does not forward to it, so add `--origin` or add a forwarding rule.\n- _\"Nothing is up at that address\"_ → wrong URL, or the instance is down.\n- For a `/path` target the CORS answer is never offered, because it cannot apply:\n  the fault is the forwarding rule or the instance behind it.\n\n---\n\n## Adding an environment\n\nAn environment is a record you create — on the welcome screen, or in **Settings**\nonce you are inside. It is runtime data, kept in\nthis browser under `mountebank-studio-environments` — never compiled in, never sent\nanywhere. It holds:\n\n| Field     | What it is                                                                                                                                                                 |\n| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Name      | What the environment is called throughout the UI.                                                                                                                          |\n| Admin API | Either an absolute `http(s)` URL of the instance's admin port (`2525` by default, not an imposter's port), or a path on this origin (`/mb/stage`) that is forwarded to it. This page's own address is refused: a panel serves a page, an instance serves an admin API. |\n| Note      | An optional caution shown next to the environment.                                                                                                                         |\n\nThose are the three fields you fill in. The record carried two more once — a colour, and\na read-only switch — and both are gone: the colour only tinted a dot, and the switch\nwas a seatbelt the same person could unbuckle one screen away. Destructive actions\nconfirm themselves instead, which is where the protection belongs.\n\nThe id derived from the name is the first segment of every route\n(`/<id>/imposters/4545`), so a link lands whoever opens it in the right place.\n\n### Pre-provisioning with VITE_ENVIRONMENTS\n\nTo ship the panel already pointed at your instances, set `VITE_ENVIRONMENTS` to a\nJSON array. It seeds the list **once**, on a fresh install; after that the user's\nown edits win and the variable is never re-applied. Malformed entries are skipped\nrather than crashing the app, so a typo cannot lock anyone out.\n\n```bash\n# .env.local — one line\nVITE_ENVIRONMENTS=[{\"id\":\"local\",\"label\":\"Local\",\"target\":\"http://localhost:2525\"},{\"id\":\"shared\",\"label\":\"Shared sandbox\",\"target\":\"https://mb.example.com\",\"note\":\"Other people depend on these mocks.\"}]\n```\n\n`label` and `target` are required; `id` and `note` are optional. See `.env.example` for the annotated version.\n\n---\n\n## Layout\n\n```\nsrc/\n├── lib/\n│   ├── environments.ts      what an environment is: shape, slug, validation, seeding\n│   ├── mb/\n│   │   ├── types.ts         Mb* = mountebank's wire format · the rest = the editable model\n│   │   ├── model.ts         the lossless bridge between the two\n│   │   ├── simpleForm.ts    the plain-language predicate form, and what it cannot express\n│   │   ├── match.ts         which stub answered a recorded request\n│   │   ├── client.ts        the admin API, called straight from the browser\n│   │   └── __fixtures__/    synthetic replayable payloads the round-trip tests assert against\n│   ├── queries.ts           TanStack Query hooks, keyed per environment\n│   ├── summaries.ts         the WHEN / RESPOND stub summaries\n│   └── format.ts            time, plurals, status names\n├── store/\n│   ├── useEnvironments.ts   the environment list, persisted in this browser\n│   └── useStudio.ts         current environment, detail level, palette, toasts\n├── styles/                  design tokens; every size and colour comes from here\n├── ui/                      the primitive library\n├── components/              shell: sidebar, topbar, environment switcher, command palette\n└── views/                   one module per screen\n```\n\n### Two conventions worth knowing before you touch anything\n\n**Every size and colour comes from a token.** `src/styles/tokens.css` holds the\ntype scale (`--fs-micro` → `--fs-h1`) and the whole palette. Components use\n`var(--fs-sm)`, never `12.5px`, and never a raw hex. It is the only way a panel\nthis dense stays visually consistent as it grows.\n\n**Icon sizes are set in CSS, per context** — not at the call site, so they cannot\ndrift: nav 18px, buttons 16px, small buttons 14px, table row actions 17px.\n\n---\n\n## The model, and two things it protects you from\n\n`model.ts` converts between Mountebank's JSON and the editable model in both\ndirections, and `model.test.ts` asserts round-trip identity across every construct\nthe editor claims to support. Two silent data-loss bugs are very easy to write\nhere, and both were caught that way.\n\n**1. A predicate holds several fields, not one.** The idiomatic Mountebank\npredicate is a bag of fields compared together:\n\n```json\n{ \"equals\": { \"method\": \"POST\", \"path\": \"/v1/orders\" } }\n```\n\nAn editor that models one field per predicate drops `path` on save, and the stub\nthen matches every path. So a predicate carries a **list of conditions**. Splitting\nthem into separate predicates would also be wrong: inside an `or` group it silently\nturns an AND into an OR.\n\n**2. Values are compared by JSON type.** `{\"equals\":{\"body\":\"00123456789\"}}` and\n`{\"equals\":{\"body\":123456789}}` are different predicates. Inferring the type from\nthe text would retype a digits-only reference into a number on the first save, and\nthe stub would stop matching forever. Every condition therefore carries its JSON\ntype explicitly, shown in the editor as a `str` / `num` / `bool` / `json` chip.\n`guessType()` only ever _suggests_.\n\nWrites are also minimal: a field you never set is not sent, so opening and saving a\nstub does not rewrite keys that were never there.\n\n## Matched stub\n\nMountebank reports which stub answered a request only when the instance runs with\n`--debug` — and this panel does not read that report either way. It evaluates the\npredicates itself (`match.ts`, mirroring Mountebank's semantics — first match wins,\ncase-insensitive unless `caseSensitive`, type-exact comparison) and labels the result as\ncomputed. A stub containing a predicate the editor cannot model is marked as unconfirmed\nrather than silently treated as a non-match. On a `--debug` instance the screens say so:\nMountebank recorded the match, the panel is still showing its own. Reading `matches`\ninstead is worth doing and is not done yet.\n\nStatus and delay in the activity table are read from the matched stub rather than from\nanything Mountebank kept — without `--debug` it keeps no response at all, and with it the\npanel does not read the one it kept. What the screens say about that is decided in one\nplace, `src/lib/mb/instanceFacts.ts`, so four of them cannot describe the same flag four\ndifferent ways again. Status and delay are read\nfrom the matched stub, and say so.\n\n---\n\n## Scripts\n\n```bash\nyarn dev            # dev server on :5273\nyarn build          # typecheck + production bundle into dist/\nyarn preview        # serve the build on :5273\nyarn check:types    # tsc --noEmit\nyarn tests          # vitest\nyarn test:watch     # vitest, watching\nyarn lint           # oxlint\nyarn format         # prettier --write\n```\n\n## Deploying\n\n```bash\nyarn build\n# copy dist/ to your web root, then use deploy/nginx.conf\n```\n\n[`deploy/nginx.conf`](deploy/nginx.conf) does two things: serves the build\n(client-side routing via `try_files`, immutable caching for `/assets`) and carries a\ncommented `location /mb/<name>/` block per environment. Uncomment one per instance\nyou want to reach and the panel needs nothing from the Mountebank side — see\n[How the panel reaches an instance](#how-the-panel-reaches-an-instance). Protect\nboth the panel and its `/mb/*` paths with your usual authentication: together they\nlet anyone rewrite those mocks.\n\n---\n\n## Releases\n\nVersion history is in [CHANGELOG.md](CHANGELOG.md), and the package is on npm as\n[`mountebank-studio`](https://www.npmjs.com/package/mountebank-studio).\n\n## Licence\n\nApache License 2.0 — see [LICENSE](LICENSE) and [NOTICE](NOTICE).\n\nThat choice is deliberate. A permissive licence keeps the panel usable inside\ncompanies whose legal teams refuse copyleft, which is exactly where mock servers are\nneeded most, and the patent grant is worth having for a corporate reader. Contributions\ncome in under the same terms (Apache-2.0, section 5); see\n[CONTRIBUTING.md](CONTRIBUTING.md).\n\nSecurity reports go through the private channel in [SECURITY.md](SECURITY.md), not a\npublic issue — these mocks decide what a system under test believes.\n","readmeFilename":"README.md"}