{"_id":"@ejosterberg/vendure-plugin-opensalestax","_rev":"7-caee7abeb5e63d7166f0a3718c63c28b","name":"@ejosterberg/vendure-plugin-opensalestax","dist-tags":{"latest":"1.4.0"},"versions":{"1.0.0":{"name":"@ejosterberg/vendure-plugin-opensalestax","version":"1.0.0","keywords":["vendure","vendure-plugin","tax","sales-tax","us-tax","opensalestax","tax-provider"],"author":{"name":"Eric Osterberg","email":"ejosterberg@gmail.com"},"license":"Apache-2.0","_id":"@ejosterberg/vendure-plugin-opensalestax@1.0.0","maintainers":[{"name":"ejosterberg","email":"ejosterberg@gmail.com"}],"homepage":"https://github.com/ejosterberg/opensalestax-vendure","bugs":{"url":"https://github.com/ejosterberg/opensalestax-vendure/issues"},"dist":{"shasum":"98bd1a4d3b606d9eb8ad4c4d07f5ffec83974a8c","tarball":"https://registry.npmjs.org/@ejosterberg/vendure-plugin-opensalestax/-/vendure-plugin-opensalestax-1.0.0.tgz","fileCount":17,"integrity":"sha512-vxNvDzVu6coV8I1pI8RriiDl1qZMHVzTY8GSK1PVFuitlSnlGlijwcMTfqQLXY9+UNMr2cFDJhIQ7if1sSNgFA==","signatures":[{"sig":"MEUCIDBTGtoe5zLXxE9/NkRdbkLK18P2p/wGdaNNpjRA6ta8AiEA46ceM5rDawx4alQ4/Tqo1xO4mq0oQCi2Bvv44zADyrk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52308},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=20"},"gitHead":"f98db81a4b6c3417974d5b223d79c07f35c4e24a","scripts":{"lint":"eslint .","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","audit":"npm audit --omit=dev --audit-level=high","build":"tsc -p tsconfig.build.json","check":"npm run lint && npm run typecheck && npm test && npm run audit","clean":"rimraf dist coverage __data__ .scannerwork","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run check && npm run build"},"_npmUser":{"name":"ejosterberg","email":"ejosterberg@gmail.com"},"repository":{"url":"git+https://github.com/ejosterberg/opensalestax-vendure.git","type":"git"},"_npmVersion":"11.4.2","description":"Vendure plugin for destination-based US sales tax via the self-hosted OpenSalesTax engine.","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","nock":"^14.0.15","eslint":"^8.57.1","rimraf":"^5.0.10","ts-jest":"^29.2.5","prettier":"^3.4.2","typescript":"^5.6.3","@types/jest":"^29.5.14","@types/node":"^20.19.0","@vendure/core":"^3.6.3","@vendure/testing":"^3.6.3","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^7.18.0","@typescript-eslint/eslint-plugin":"^7.18.0"},"peerDependencies":{"@vendure/core":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vendure-plugin-opensalestax_1.0.0_1778725266546_0.6984225352108391","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@ejosterberg/vendure-plugin-opensalestax","version":"1.1.0","keywords":["vendure","vendure-plugin","tax","sales-tax","us-tax","opensalestax","tax-provider"],"author":{"name":"Eric Osterberg","email":"ejosterberg@gmail.com"},"license":"Apache-2.0","_id":"@ejosterberg/vendure-plugin-opensalestax@1.1.0","maintainers":[{"name":"ejosterberg","email":"ejosterberg@gmail.com"}],"homepage":"https://github.com/ejosterberg/opensalestax-vendure","bugs":{"url":"https://github.com/ejosterberg/opensalestax-vendure/issues"},"dist":{"shasum":"57fa4a113d525342c013441d54a0bb3d069c5195","tarball":"https://registry.npmjs.org/@ejosterberg/vendure-plugin-opensalestax/-/vendure-plugin-opensalestax-1.1.0.tgz","fileCount":19,"integrity":"sha512-fnkSB5A0qWz8AH+sPWF5/mnPVEzcwtMpm5xdDZvDUv+C5tWNgGZagL9/wqVpmoAK74fLCF6iT0AV6L0dlY/3Fw==","signatures":[{"sig":"MEUCIHER7Rfy8T17ka8oULIQvyPOQYWrADSjR2SaiMCx52fxAiEAr3jipCPeoqe40xK2dgaoAJMBF65RlC/kSqC5XCiILRM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ejosterberg%2fvendure-plugin-opensalestax@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":67792},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=20"},"gitHead":"489baa43b595cbdd1993f9c8aea62e514823751c","scripts":{"lint":"eslint .","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","audit":"npm audit --omit=dev --audit-level=high","build":"tsc -p tsconfig.build.json","check":"npm run lint && npm run typecheck && npm test && npm run audit","clean":"rimraf dist coverage __data__ .scannerwork","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run check && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ea3f7b43-b60d-48b4-a634-cdfdea210dee"}},"repository":{"url":"git+https://github.com/ejosterberg/opensalestax-vendure.git","type":"git"},"_npmVersion":"11.12.1","description":"Vendure plugin for destination-based US sales tax via the self-hosted OpenSalesTax engine.","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","nock":"^14.0.15","eslint":"^8.57.1","rimraf":"^5.0.10","ts-jest":"^29.2.5","prettier":"^3.4.2","typescript":"^5.6.3","@types/jest":"^29.5.14","@types/node":"^20.19.0","@vendure/core":"^3.6.3","@vendure/testing":"^3.6.3","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^7.18.0","@typescript-eslint/eslint-plugin":"^7.18.0"},"peerDependencies":{"@vendure/core":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vendure-plugin-opensalestax_1.1.0_1778808035721_0.4726470819380406","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@ejosterberg/vendure-plugin-opensalestax","version":"1.2.0","keywords":["vendure","vendure-plugin","tax","sales-tax","us-tax","opensalestax","tax-provider"],"author":{"name":"Eric Osterberg","email":"ejosterberg@gmail.com"},"license":"Apache-2.0","_id":"@ejosterberg/vendure-plugin-opensalestax@1.2.0","maintainers":[{"name":"ejosterberg","email":"ejosterberg@gmail.com"}],"homepage":"https://github.com/ejosterberg/opensalestax-vendure","bugs":{"url":"https://github.com/ejosterberg/opensalestax-vendure/issues"},"dist":{"shasum":"7236fe3c21a69dd56f0c97456567166de2524b3e","tarball":"https://registry.npmjs.org/@ejosterberg/vendure-plugin-opensalestax/-/vendure-plugin-opensalestax-1.2.0.tgz","fileCount":19,"integrity":"sha512-Q0oZPSBNHCeE4jVkDNqeuqVxCt8wC8bF3MyGahFkKMJFafkJsM85sDtYsqgx5cUWqMaAsfnq2EobkHkxmGVVLg==","signatures":[{"sig":"MEQCICBYS6B7HWevEWG9UwQDZ0bTGyIuOJU1vBjXuI0DcqP6AiBR/IO14UshmSYvwAIiyZCGFEzgi9H2qpa3OVFnIdl+2g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ejosterberg%2fvendure-plugin-opensalestax@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":74325},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=20"},"gitHead":"df0172c5961469909e8b89302dcbe137279c2815","scripts":{"lint":"eslint .","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","audit":"npm audit --omit=dev --audit-level=high","build":"tsc -p tsconfig.build.json","check":"npm run lint && npm run typecheck && npm test && npm run audit","clean":"rimraf dist coverage __data__ .scannerwork","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run check && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd957cbb-8c39-4c31-a727-93963ba0c84d"}},"repository":{"url":"git+https://github.com/ejosterberg/opensalestax-vendure.git","type":"git"},"_npmVersion":"11.12.1","description":"Vendure plugin for destination-based US sales tax via the self-hosted OpenSalesTax engine.","directories":{},"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","nock":"^14.0.15","eslint":"^8.57.1","rimraf":"^5.0.10","ts-jest":"^29.2.5","prettier":"^3.4.2","typescript":"^5.6.3","@types/jest":"^29.5.14","@types/node":"^20.19.0","@vendure/core":"^3.6.3","@vendure/testing":"^3.6.3","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^7.18.0","@typescript-eslint/eslint-plugin":"^7.18.0"},"peerDependencies":{"@vendure/core":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vendure-plugin-opensalestax_1.2.0_1778856816714_0.01685680695899472","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@ejosterberg/vendure-plugin-opensalestax","version":"1.3.0","keywords":["vendure","vendure-plugin","tax","sales-tax","us-tax","opensalestax","tax-provider"],"author":{"name":"Eric Osterberg","email":"ejosterberg@gmail.com"},"license":"Apache-2.0","_id":"@ejosterberg/vendure-plugin-opensalestax@1.3.0","maintainers":[{"name":"ejosterberg","email":"ejosterberg@gmail.com"}],"homepage":"https://github.com/ejosterberg/opensalestax-vendure","bugs":{"url":"https://github.com/ejosterberg/opensalestax-vendure/issues"},"dist":{"shasum":"5f916bc82c0c871b59d836dedb30c1b63af0a84e","tarball":"https://registry.npmjs.org/@ejosterberg/vendure-plugin-opensalestax/-/vendure-plugin-opensalestax-1.3.0.tgz","fileCount":17,"integrity":"sha512-qLO6kZw8FDagsW7QbwhN4uGXRE2cNSbyckSoEKOqVlGkgCccVlYmkOYgv+GAu9ueT0Qx6Qs03uoaZWvTLtoHxQ==","signatures":[{"sig":"MEYCIQCKazZloaZV7Cg8A43Mmx12L+f+/Mgh1AI/AwWXzGmB8wIhALc6B//qkKXjovz8FYAFQbLOTtSnkHKgRlxEjmLQg8vq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ejosterberg%2fvendure-plugin-opensalestax@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":72000},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=20"},"gitHead":"61ea65e0025487de18bfd9dab43be3906e23af7b","scripts":{"lint":"eslint .","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","audit":"npm audit --omit=dev --audit-level=high","build":"tsc -p tsconfig.build.json","check":"npm run lint && npm run typecheck && npm test && npm run audit","clean":"rimraf dist coverage __data__ .scannerwork","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run check && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd957cbb-8c39-4c31-a727-93963ba0c84d"}},"repository":{"url":"git+https://github.com/ejosterberg/opensalestax-vendure.git","type":"git"},"_npmVersion":"11.12.1","description":"Vendure plugin for destination-based US sales tax via the self-hosted OpenSalesTax engine.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@ejosterberg/opensalestax":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","nock":"^14.0.15","eslint":"^8.57.1","rimraf":"^5.0.10","ts-jest":"^29.2.5","prettier":"^3.4.2","typescript":"^5.6.3","@types/jest":"^29.5.14","@types/node":"^20.19.0","@vendure/core":"^3.6.3","@vendure/testing":"^3.6.3","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^7.18.0","@typescript-eslint/eslint-plugin":"^7.18.0"},"peerDependencies":{"@vendure/core":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vendure-plugin-opensalestax_1.3.0_1778858107646_0.8092630326691812","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@ejosterberg/vendure-plugin-opensalestax","version":"1.3.1","keywords":["vendure","vendure-plugin","tax","sales-tax","us-tax","opensalestax","tax-provider"],"author":{"name":"Eric Osterberg","email":"ejosterberg@gmail.com"},"license":"(Apache-2.0 OR GPL-2.0-or-later)","_id":"@ejosterberg/vendure-plugin-opensalestax@1.3.1","maintainers":[{"name":"ejosterberg","email":"ejosterberg@gmail.com"}],"homepage":"https://github.com/ejosterberg/opensalestax-vendure","bugs":{"url":"https://github.com/ejosterberg/opensalestax-vendure/issues"},"dist":{"shasum":"ad0a568fa8de192d4dde0dd977ca76b1bc1c2d3f","tarball":"https://registry.npmjs.org/@ejosterberg/vendure-plugin-opensalestax/-/vendure-plugin-opensalestax-1.3.1.tgz","fileCount":17,"integrity":"sha512-wFO+a6q+3xsOtR3Ht+YrzNxISBSwerWvI5DKAgS682VVVLeHahzfenLPuqpxBcAJbRLGJKvylgRef8SWyKjesA==","signatures":[{"sig":"MEUCIHapTSp0cTs/BL/DAogG0d6h0WFeGoNV2O7a5Y6E6RonAiEA06irS6AM15yefY7A/VJexyC0MEbunCnJ3bT/jUCGkdM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ejosterberg%2fvendure-plugin-opensalestax@1.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":62014},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=20"},"gitHead":"bae45b70a6a4b7b923b0c5f9f71ad16cc91cb86c","scripts":{"lint":"eslint .","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","audit":"npm audit --omit=dev --audit-level=high","build":"tsc -p tsconfig.build.json","check":"npm run lint && npm run typecheck && npm test && npm run audit","clean":"rimraf dist coverage __data__ .scannerwork","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run check && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd957cbb-8c39-4c31-a727-93963ba0c84d"}},"repository":{"url":"git+https://github.com/ejosterberg/opensalestax-vendure.git","type":"git"},"_npmVersion":"11.12.1","description":"Vendure plugin for destination-based US sales tax via the self-hosted OpenSalesTax engine.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@ejosterberg/opensalestax":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","nock":"^14.0.15","eslint":"^8.57.1","rimraf":"^5.0.10","ts-jest":"^29.2.5","prettier":"^3.4.2","typescript":"^5.6.3","@types/jest":"^29.5.14","@types/node":"^20.19.0","@vendure/core":"^3.6.3","@vendure/testing":"^3.6.3","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^7.18.0","@typescript-eslint/eslint-plugin":"^7.18.0"},"peerDependencies":{"@vendure/core":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vendure-plugin-opensalestax_1.3.1_1779039639826_0.69165948554368","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@ejosterberg/vendure-plugin-opensalestax","version":"1.3.2","keywords":["vendure","vendure-plugin","tax","sales-tax","us-tax","opensalestax","tax-provider"],"author":{"name":"Eric Osterberg","email":"ejosterberg@gmail.com"},"license":"(Apache-2.0 OR GPL-2.0-or-later)","_id":"@ejosterberg/vendure-plugin-opensalestax@1.3.2","maintainers":[{"name":"ejosterberg","email":"ejosterberg@gmail.com"}],"homepage":"https://github.com/ejosterberg/opensalestax-vendure","bugs":{"url":"https://github.com/ejosterberg/opensalestax-vendure/issues"},"dist":{"shasum":"bf9f9d78f847e0b09f28626d8f4479f9c5f91543","tarball":"https://registry.npmjs.org/@ejosterberg/vendure-plugin-opensalestax/-/vendure-plugin-opensalestax-1.3.2.tgz","fileCount":17,"integrity":"sha512-tLqMnYZFKBmhtDKckCfbieD9TiT8DivReAhg/DXfmWkwYJ6ZsJx8FAYrvmNqzwrRkWGDpPTzylmpJ8W8ez0a5A==","signatures":[{"sig":"MEQCIBiBcfwH8tIZvN79Wdrlwdnu9cK7wwkB3Z1sbk+S07hVAiAXA+r6qSccaTd+s2B0Ab2WjKu7NmxRWly4HUxzLjK3Gg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ejosterberg%2fvendure-plugin-opensalestax@1.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":62476},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=20"},"gitHead":"f715a15224bc141bd3f7c110945fcd72faca00c6","scripts":{"lint":"eslint .","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","audit":"npm audit --omit=dev --audit-level=high","build":"tsc -p tsconfig.build.json","check":"npm run lint && npm run typecheck && npm test && npm run audit","clean":"rimraf dist coverage __data__ .scannerwork","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run check && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd957cbb-8c39-4c31-a727-93963ba0c84d"}},"repository":{"url":"git+https://github.com/ejosterberg/opensalestax-vendure.git","type":"git"},"_npmVersion":"11.12.1","description":"Vendure plugin for destination-based US sales tax via the self-hosted OpenSalesTax engine.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@ejosterberg/opensalestax":"^0.2.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","nock":"^14.0.15","eslint":"^8.57.1","rimraf":"^5.0.10","ts-jest":"^29.2.5","prettier":"^3.4.2","typescript":"^5.6.3","@types/jest":"^29.5.14","@types/node":"^20.19.0","@vendure/core":"^3.6.3","@vendure/testing":"^3.6.3","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^7.18.0","@typescript-eslint/eslint-plugin":"^7.18.0"},"peerDependencies":{"@vendure/core":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vendure-plugin-opensalestax_1.3.2_1779167153625_0.8834377910609537","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@ejosterberg/vendure-plugin-opensalestax","version":"1.4.0","description":"Vendure plugin for destination-based US sales tax via the self-hosted OpenSalesTax engine.","license":"(Apache-2.0 OR GPL-2.0-or-later)","author":{"name":"Eric Osterberg","email":"ejosterberg@gmail.com"},"homepage":"https://github.com/ejosterberg/opensalestax-vendure","repository":{"type":"git","url":"git+https://github.com/ejosterberg/opensalestax-vendure.git"},"bugs":{"url":"https://github.com/ejosterberg/opensalestax-vendure/issues"},"keywords":["vendure","vendure-plugin","tax","sales-tax","us-tax","opensalestax","tax-provider"],"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=20"},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rimraf dist coverage __data__ .scannerwork","lint":"eslint .","lint:fix":"eslint . --fix","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","typecheck":"tsc --noEmit","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","audit":"npm audit --omit=dev --audit-level=high","check":"npm run lint && npm run typecheck && npm test && npm run audit","prepublishOnly":"npm run check && npm run build"},"dependencies":{"@ejosterberg/opensalestax":"^0.3.0"},"peerDependencies":{"@vendure/core":"^3.0.0"},"devDependencies":{"@types/jest":"^29.5.14","@types/node":"^20.19.0","@typescript-eslint/eslint-plugin":"^7.18.0","@typescript-eslint/parser":"^7.18.0","@vendure/core":"^3.6.3","@vendure/testing":"^3.6.3","eslint":"^8.57.1","eslint-config-prettier":"^9.1.0","jest":"^29.7.0","nock":"^14.0.15","prettier":"^3.4.2","rimraf":"^5.0.10","ts-jest":"^29.2.5","typescript":"^5.6.3"},"gitHead":"19e88460e7e6f25a9fa7147556c10ca0579d8f61","_id":"@ejosterberg/vendure-plugin-opensalestax@1.4.0","_nodeVersion":"24.15.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-evVDtQ27yOz5kk383/QLeA2cEf0+vKELa9ubahVEwABauCIdDEYKOkL/lDyd3O8p3Lt8Ujz27AvlCK2PBjNgTw==","shasum":"a1e323f58ced938809fb28bc4b6b8bc53f3d74b9","tarball":"https://registry.npmjs.org/@ejosterberg/vendure-plugin-opensalestax/-/vendure-plugin-opensalestax-1.4.0.tgz","fileCount":19,"unpackedSize":81183,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ejosterberg%2fvendure-plugin-opensalestax@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFSD9je4pWVwmg68H1jqKImC4vlHHWnDyHjF0u8oaEx2AiBTgSwmNW3mqR9ZGXZpkZms9lmUCxAT30yfxKA7N1+wsw=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd957cbb-8c39-4c31-a727-93963ba0c84d"}},"directories":{},"maintainers":[{"name":"ejosterberg","email":"ejosterberg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vendure-plugin-opensalestax_1.4.0_1779213242643_0.9382977336786011"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-14T02:21:06.408Z","modified":"2026-05-19T17:54:03.170Z","1.0.0":"2026-05-14T02:21:06.718Z","1.1.0":"2026-05-15T01:20:35.874Z","1.2.0":"2026-05-15T14:53:36.868Z","1.3.0":"2026-05-15T15:15:07.804Z","1.3.1":"2026-05-17T17:40:39.965Z","1.3.2":"2026-05-19T05:05:53.783Z","1.4.0":"2026-05-19T17:54:02.863Z"},"bugs":{"url":"https://github.com/ejosterberg/opensalestax-vendure/issues"},"author":{"name":"Eric Osterberg","email":"ejosterberg@gmail.com"},"license":"(Apache-2.0 OR GPL-2.0-or-later)","homepage":"https://github.com/ejosterberg/opensalestax-vendure","keywords":["vendure","vendure-plugin","tax","sales-tax","us-tax","opensalestax","tax-provider"],"repository":{"type":"git","url":"git+https://github.com/ejosterberg/opensalestax-vendure.git"},"description":"Vendure plugin for destination-based US sales tax via the self-hosted OpenSalesTax engine.","maintainers":[{"name":"ejosterberg","email":"ejosterberg@gmail.com"}],"readme":"# @ejosterberg/vendure-plugin-opensalestax\n\n[![ci](https://github.com/ejosterberg/opensalestax-vendure/actions/workflows/ci.yml/badge.svg)](https://github.com/ejosterberg/opensalestax-vendure/actions/workflows/ci.yml)\n[![npm](https://img.shields.io/npm/v/@ejosterberg/vendure-plugin-opensalestax.svg)](https://www.npmjs.com/package/@ejosterberg/vendure-plugin-opensalestax)\n[![License: Apache-2.0 OR GPL-2.0-or-later](https://img.shields.io/badge/License-Apache_2.0_OR_GPL_2.0--or--later-blue.svg)](LICENSE)\n\nVendure plugin for **destination-based US sales tax** via the\nself-hosted [OpenSalesTax](https://github.com/ejosterberg/opensalestax)\nengine. No SaaS, no per-transaction fees, no third-party API keys.\n\n- Implements Vendure's `TaxLineCalculationStrategy` — Vendure\n  invokes us per `OrderLine`; we return per-jurisdiction tax\n  lines (state, county, city, transit district, etc.)\n- **USD-only / US-only.** Non-USD or non-US orders pass through\n  to Vendure's built-in `TaxRate` pipeline unchanged.\n- **Fail-soft default.** If the OpenSalesTax engine is\n  unreachable, the plugin returns zero tax + logs a warning;\n  Vendure's default tax rates take over so checkouts don't\n  block. Opt into fail-hard via env var.\n- **No inbound HTTP surface.** Pure outbound HTTP to the\n  configured engine URL. The plugin runs in-process inside your\n  Vendure server.\n\n## Compatibility\n\n| Plugin | Vendure | OST engine | Node |\n|--------|---------|-----------|------|\n| 0.1.x  | 3.x     | 0.22+ (v1 API) | 20+ |\n\n## Quickstart (≤10 minutes)\n\n### 1. Install\n\n```bash\nnpm install @ejosterberg/vendure-plugin-opensalestax\n```\n\n### 2. Wire it into `vendure-config.ts`\n\n```ts\nimport { OpenSalesTaxPlugin } from '@ejosterberg/vendure-plugin-opensalestax';\nimport { VendureConfig } from '@vendure/core';\n\nexport const config: VendureConfig = {\n  // ...your existing config...\n  plugins: [\n    // ...your existing plugins...\n    OpenSalesTaxPlugin.init({\n      apiUrl: process.env.OSTAX_API_URL!,\n      // failHard: true,        // optional; default fail-soft\n      // apiToken: '...',       // optional; X-API-Key header\n      // timeoutMs: 5000,       // optional; per-request timeout\n    }),\n  ],\n};\n```\n\n### 3. Set the environment variable\n\n```bash\n# Point at your OpenSalesTax engine instance (HTTP or HTTPS)\nexport OSTAX_API_URL=\"https://ost.your-domain.com\"\n\n# Optional:\n# export OSTAX_API_TOKEN=\"...\"\n# export OSTAX_FAIL_HARD=1\n# export OSTAX_TIMEOUT_MS=5000\n```\n\n### 4. (Recommended) Create a US Zone in Vendure Admin\n\nAs of v1.1.0 this step is **optional** — the plugin's\n`OstaxTaxZoneStrategy` auto-resolves the active zone for US\nshipping addresses, so checkout works even with a fresh\nVendure install. Still, having a real Zone is best practice.\n\nIn the Admin UI:\n\n1. **Settings → Zones** → Add a Zone with United States as a\n   member country (name it whatever you like).\n2. **Settings → Tax Categories** → Confirm \"Standard\" exists\n   (or create it).\n3. **Settings → Tax Rates** → Create a placeholder rate\n   \"US Standard\" of `0%` in your US zone, category Standard.\n   (OST provides the real rate via the strategy; this\n   placeholder exists so Vendure's normal pipeline always has\n   something to fall back to.)\n\nIf you skip this step, the plugin will log a one-time WARN at\nstartup recommending you create a US Zone, and checkout will\nfall through to your channel's default Zone — taxes still\nflow from the OST engine either way.\n\n### 5. Restart Vendure\n\nOn boot you'll see a log line like:\n\n```\n[OpenSalesTaxPlugin] OpenSalesTax engine reachable: status=ok version=0.55.4 db=true\n```\n\nIf the engine is unreachable, you'll see a WARN (default\nfail-soft mode) — the plugin still loads and Vendure's default\ntax pipeline takes over until the engine comes back.\n\n### 6. Place a test US order\n\nUse the Shop GraphQL API to add an item, set a US shipping\naddress, and inspect `taxLines`:\n\n```graphql\nmutation {\n  setOrderShippingAddress(input: {\n    streetLine1: \"100 N 6th St\"\n    city: \"Minneapolis\"\n    province: \"MN\"\n    postalCode: \"55403\"\n    countryCode: \"US\"\n  }) {\n    ... on Order {\n      lines {\n        taxLines { description rate }\n      }\n      totalWithTax\n    }\n  }\n}\n```\n\nYou should see one `TaxLine` per OST jurisdiction (e.g.\n\"Minnesota (State)\", \"Minneapolis (City)\", \"Hennepin Transit\n(Transit)\") with the correct percentage rates. Vendure\nmultiplies these against the line price to compute the actual\ntax amount.\n\n## Configuration reference\n\n| Option        | Env var               | Default | Description |\n|---------------|-----------------------|---------|-------------|\n| `apiUrl`      | `OSTAX_API_URL`       | —       | **Required.** Base URL of your OST engine. Must be `http:` or `https:`. Validated at plugin init. |\n| `apiToken`    | `OSTAX_API_TOKEN`     | —       | Optional. Sent as the `X-API-Key` header. Most self-hosted deployments don't need this. |\n| `failHard`    | `OSTAX_FAIL_HARD=1`   | `false` | When `true`, engine errors throw (Vendure surfaces as order error). Default `false` returns `[]` + warns. |\n| `timeoutMs`   | `OSTAX_TIMEOUT_MS`    | `5000`  | Per-request timeout in milliseconds. |\n| `categoryByTaxCategoryName` | — | `{}` | Map Vendure `TaxCategory.name` → OST category. See \"Tax category mapping\" below. |\n| `defaultCategory` | — | `'general'` | OST category for lines whose TaxCategory name doesn't appear in the map. Set to `''` (empty string) to make unmapped lines non-taxable. |\n| `enabledStates` | — | — | Allowlist of US state codes (uppercase 2-letter). When set, the plugin computes only for orders shipping to one of these. See \"Per-state nexus filter\" below. |\n| `disabledStates` | — | — | Denylist of US state codes. Mutually exclusive with `enabledStates`. |\n\nOptions passed to `init()` take priority over env vars.\n\n### Per-state nexus filter (v1.2.0+)\n\nSales-tax nexus is the legal threshold (physical presence,\neconomic activity) that obligates a merchant to collect and\nremit tax in a state. **No US merchant has nexus in all 50\nstates**, and the OpenSalesTax engine doesn't decide nexus for\nyou — that's your call (or your accountant's). Use one of\nthese options to tell the plugin where you collect:\n\n```ts\n// Pattern 1 — allowlist: most small merchants\nOpenSalesTaxPlugin.init({\n  apiUrl: process.env.OSTAX_API_URL!,\n  enabledStates: ['MN', 'WI', 'IA'],   // collect only in these 3\n}),\n\n// Pattern 2 — denylist: larger merchants with broad footprints\nOpenSalesTaxPlugin.init({\n  apiUrl: process.env.OSTAX_API_URL!,\n  disabledStates: ['MT', 'WY'],   // skip these; collect everywhere else\n}),\n```\n\nWhen the order's `shippingAddress.province` doesn't match the\nconfigured filter, the strategy returns `[]` and Vendure's\ndefault `TaxRate` pipeline takes over (typically zero tax for\na US-only merchant).\n\n**Validation**: state codes must be uppercase 2-letter ISO\n3166-2 subdivision codes (the same format Vendure's stock\ncheckout form populates). Invalid entries (lowercase, full\nnames, non-letter) throw at plugin init with a list of bad\ncodes. Setting both `enabledStates` and `disabledStates`\nthrows.\n\n**Empty array** (`enabledStates: []`) is treated as no filter\n(footgun mitigation). To disable the plugin entirely, remove\nit from your `plugins` array.\n\n**Migration from v1.1**: zero config required. v1.1 computed\nfor every US ZIP (no nexus filtering); v1.2's defaults\npreserve that. Add the filter when you're ready.\n\n### Tax category mapping (v1.1.0+)\n\nThe OST engine accepts a `category` per line item and applies\ncategory-specific rules — clothing exemptions in some states,\ngroceries usually exempt, prescription drugs always exempt, etc.\nMap each of your Vendure `TaxCategory` records to one of OST's\nsix categories so the engine can apply the right rules.\n\n**OST categories (the values in the map):**\n\n| Value | Use for |\n|-------|---------|\n| `'general'` | General merchandise (default) |\n| `'clothing'` | Apparel (PA, MN, NJ exempt; rules vary) |\n| `'groceries'` | Unprepared food (most states exempt or reduced) |\n| `'prescription_drugs'` | Rx drugs (universally exempt) |\n| `'prepared_food'` | Restaurant / hot food (often higher rate) |\n| `'digital_goods'` | Digital downloads (varies by state) |\n| `''` (empty string) | **Skip the line entirely** — non-taxable |\n\n**Worked example — a mixed retailer:**\n\nIn the Vendure Admin UI, create a `TaxCategory` for each\nproduct class you sell (\"Clothing\", \"Food\", \"Digital\",\n\"Gift Cards\", and the existing \"Standard\"). Assign each\nProductVariant to the right category as you create it.\n\nThen in `vendure-config.ts`:\n\n```ts\nOpenSalesTaxPlugin.init({\n  apiUrl: process.env.OSTAX_API_URL!,\n  categoryByTaxCategoryName: {\n    'Clothing':       'clothing',\n    'Food':           'groceries',\n    'Digital':        'digital_goods',\n    'Gift Cards':     '',           // non-taxable; engine never called\n    // 'Standard' isn't listed → falls back to defaultCategory\n  },\n  defaultCategory: 'general',\n}),\n```\n\nA merchant whose entire catalog is clothing can skip the\nmapping and just set `defaultCategory: 'clothing'`.\n\n**Validation:** invalid values throw at plugin init — you'll\nsee the error at server boot, not at first checkout. Valid\nvalues are listed in the table above.\n\n**Migration from v1.0:** zero config required. v1.0 hardcoded\n`category: 'general'` for every line; v1.1's defaults reproduce\nthat behavior exactly. Add the mapping when you're ready.\n\n## How it works\n\n```\n┌─────────────────────────────────────────────────┐\n│ Merchant's Vendure server                       │\n│  ┌─────────────────────────────────────────┐    │\n│  │ Order checkout flow                     │    │\n│  │  ↓                                      │    │\n│  │ TaxZoneStrategy.determineTaxZone()      │    │\n│  │  ↓ (US ship-to → US Zone, else default) │    │\n│  │ TaxLineCalculationStrategy.calculate()  │    │\n│  │  ↓                                      │    │\n│  │ OstaxTaxLineStrategy                    │    │\n│  │  ├─ Gate: USD? US? valid ZIP?           │    │\n│  │  └─ POST /v1/calculate ─────────────────┼────┼──→ OpenSalesTax engine\n│  └─────────────────────────────────────────┘    │   (merchant-self-hosted)\n└─────────────────────────────────────────────────┘\n```\n\nThe plugin registers two strategies:\n\n- **`OstaxTaxZoneStrategy`** (added in v1.1.0): inspects the\n  order's shipping country code; if it's `US`, finds a Zone\n  whose members include the United States and returns it; if\n  no US Zone exists, returns the channel's default Zone (with\n  a one-time WARN suggesting you create one). For non-US\n  orders, returns the channel default unchanged.\n- **`OstaxTaxLineStrategy`**: per-line tax calculation against\n  the OST engine, gated on USD currency + US shipping country\n  + valid ZIP regex.\n\nFor each order line, the plugin:\n\n1. Gates on `currencyCode === \"USD\"`,\n   `shippingAddress.countryCode === \"US\"`, and ZIP regex\n   `^\\d{5}(-\\d{4})?$`. If any fail → return `[]` and Vendure's\n   built-in `TaxRate` pipeline takes over.\n2. Sends a single-line `POST /v1/calculate` to the engine with\n   the line's `proratedUnitPrice` (in dollars) and category\n   `\"general\"`.\n3. Maps each jurisdiction in the response to a Vendure\n   `TaxLine` (`description` + `taxRate`). Vendure handles the\n   multiplication.\n\n## Troubleshooting\n\n### \"OpenSalesTax engine health check failed at startup\"\n\nThe plugin couldn't reach `apiUrl` at boot. The plugin still\nloads (fail-soft); calculations will return zero tax until the\nengine is reachable. Check:\n\n- Is `OSTAX_API_URL` set and reachable from the Vendure host?\n- Is the OST engine container running and healthy?\n- Can you `curl $OSTAX_API_URL/v1/health` from the Vendure\n  server?\n\n### \"Returns zero tax even for US orders\"\n\nPossible causes:\n\n1. The engine is unreachable — check Vendure boot logs for\n   the health-check warning.\n2. The order's `shippingAddress.countryCode` is not exactly\n   `\"US\"` (case-sensitive).\n3. The order's `postalCode` doesn't match `^\\d{5}(-\\d{4})?$`.\n4. The order's `currencyCode` is not `\"USD\"`.\n5. The OST engine has no rate data for the destination ZIP\n   (rare; check engine logs).\n\n### \"I see a one-time WARN about no US Zone\"\n\nExpected if you haven't created a Zone with United States as\na member. Checkout still works — the plugin falls through to\nyour channel's default Zone. To silence the WARN, create a\nUS Zone in `Settings → Zones`. The WARN is rate-limited to\nonce per process so it won't flood your logs.\n\n### \"I want errors to surface, not silently fall back\"\n\nSet `OSTAX_FAIL_HARD=1` (or `init({ failHard: true })`).\nEngine errors then throw, which Vendure surfaces as an order\nerror in the Admin UI.\n\n### \"Plugin doesn't appear to register\"\n\nVerify in the running Vendure server:\n\n```ts\nimport { ConfigService } from '@vendure/core';\n\n// In a NestJS-aware context (e.g. an admin-API resolver):\nconst cfg = injector.get(ConfigService);\nconsole.log(cfg.taxOptions.taxLineCalculationStrategy);\n// Expect: OstaxTaxLineStrategy\n```\n\nCommon causes: forgot to call `OpenSalesTaxPlugin.init({...})`\n(the `init()` is required to capture options); plugin\nregistered after a different plugin that also overrides\n`taxLineCalculationStrategy`.\n\n## What this plugin does NOT do\n\nBy design (constitution §6 + §10):\n\n- **Filing or remittance.** It computes tax. You file.\n- **Address validation.** Bring your own / use Vendure's.\n- **Non-USD currencies.** Returns `[]` so Vendure's default\n  pipeline applies.\n- **Non-US jurisdictions.** Same — returns `[]`.\n- **Tax-exempt customer certificate validation.**\n- **Marketplace facilitator** (NJ / CA seller-of-record edge\n  cases).\n- **Inbound webhooks / standalone server.** Pure outbound HTTP\n  to your engine.\n\nFor any of these, run a separate process or use a dedicated\nservice.\n\n## Security\n\nThe plugin exposes **no inbound HTTP routes, no GraphQL\nresolvers, no webhook receivers**. The trust boundary is your\nVendure host; whatever code loaded the plugin is already\ntrusted.\n\n`apiUrl` is validated at plugin init: URL parse + scheme\nallowlist (`http:`, `https:`). Customer addresses, line item\ndescriptions, product names, and customer email are never\nlogged.\n\nReporting vulnerabilities: see [`SECURITY.md`](SECURITY.md).\n\n## Contributing\n\nDCO sign-off mandatory on every commit\n(`git commit -s`). See [`CONTRIBUTING.md`](CONTRIBUTING.md).\nDual-licensed under your choice of Apache-2.0 OR GPL-2.0-or-later.\nSee [`LICENSE`](LICENSE).\n\n## Related projects\n\n| Connector | Stack | Repo |\n|-----------|-------|------|\n| OpenSalesTax engine | Python | [opensalestax](https://github.com/ejosterberg/opensalestax) |\n| Medusa v2           | TypeScript | [medusa-plugin-opensalestax](https://github.com/ejosterberg/opensalestax-medusa) |\n| WooCommerce         | PHP | [woocommerce-opensalestax](https://github.com/ejosterberg/opensalestax-woocommerce) |\n| Odoo                | Python | opensalestax-odoo-src |\n| Vendure             | TypeScript | **this repo** |\n","readmeFilename":"README.md"}