{"_id":"@bvnk/card-details-sdk","_rev":"16-4b4ecda85959ce5d91be9c4916768e5f","name":"@bvnk/card-details-sdk","dist-tags":{"next":"0.0.7-staging","latest":"0.0.17"},"versions":{"0.0.3":{"name":"@bvnk/card-details-sdk","version":"0.0.3","_id":"@bvnk/card-details-sdk@0.0.3","maintainers":[{"name":"donaldj","email":"donald.jackson@bvnk.com"},{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},{"name":"peter-bvnk","email":"peter.lehto@bvnk.com"}],"dist":{"shasum":"9ae7da9f3aa51e595b54383938a771025256af7b","tarball":"https://registry.npmjs.org/@bvnk/card-details-sdk/-/card-details-sdk-0.0.3.tgz","fileCount":7,"integrity":"sha512-h+2/HFB8u2/r2QkZ9glxfaAVYl2NNVMTYKwPXbea+R/xi8TYjvXkqrGCdJkkn1AHV83i3W+DAzp6funtDvQSJA==","signatures":[{"sig":"MEQCIAm0TQJ2uEj8UkPGWt6aePv6pq+dxMEGFI64IBlbROFoAiAYsX4ujoMRNr3dHtsFYAoc5ayPogT3rQjj8JC3JBT/Iw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59319},"main":"dist/index.cjs","type":"module","_from":"file:bvnk-card-details-sdk-0.0.3.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","build:prod":"SCD_ENV=production tsup","test:watch":"vitest","build:staging":"SCD_ENV=staging tsup"},"_npmUser":{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},"_resolved":"/tmp/40cc2230d3eb6cc56ee1ff69cf5ebe62/bvnk-card-details-sdk-0.0.3.tgz","_integrity":"sha512-h+2/HFB8u2/r2QkZ9glxfaAVYl2NNVMTYKwPXbea+R/xi8TYjvXkqrGCdJkkn1AHV83i3W+DAzp6funtDvQSJA==","_npmVersion":"11.13.0","description":"Framework-agnostic web SDK for displaying sensitive card details via secure iframe","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","dotenv":"^17.4.2","eslint":"^9.17.0","vitest":"4.1.0","happy-dom":"20.8.9","@eslint/js":"^9.17.0","typescript":"^5.7.0","@types/node":"^25.9.2","@typescript-eslint/parser":"^8.18.0","@sensitive-card-details/protocol":"0.0.1","@typescript-eslint/eslint-plugin":"^8.18.0"},"_npmOperationalInternal":{"tmp":"tmp/card-details-sdk_0.0.3_1781187687342_0.2903413937239634","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@bvnk/card-details-sdk","version":"0.0.4","_id":"@bvnk/card-details-sdk@0.0.4","maintainers":[{"name":"donaldj","email":"donald.jackson@bvnk.com"},{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},{"name":"peter-bvnk","email":"peter.lehto@bvnk.com"}],"dist":{"shasum":"4549c00cb6ac0c350451df8b1f89535e95ad8081","tarball":"https://registry.npmjs.org/@bvnk/card-details-sdk/-/card-details-sdk-0.0.4.tgz","fileCount":8,"integrity":"sha512-C3kAebWZfH+NupoEyqkf2wxP5tIj3zEFlDYmO+Pzj8rbvL9yifiHX+OEJ7tzNILLmsRJzISmR9F6A6N4azB4jA==","signatures":[{"sig":"MEYCIQCx2Nwe5uJXOILkSsJ2xawQOwVWQ7d+QiDiJwXXc67lGAIhANA6EHcm/oWvy75hYo1OcoGkBVhsD1KUhjplQIuKyP6g","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70700},"main":"dist/index.cjs","type":"module","_from":"file:bvnk-card-details-sdk-0.0.4.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","build:prod":"SCD_ENV=production tsup","test:watch":"vitest","build:staging":"SCD_ENV=staging tsup"},"_npmUser":{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},"_resolved":"/tmp/e4e90b03cf92c24a5427485e661b8791/bvnk-card-details-sdk-0.0.4.tgz","_integrity":"sha512-C3kAebWZfH+NupoEyqkf2wxP5tIj3zEFlDYmO+Pzj8rbvL9yifiHX+OEJ7tzNILLmsRJzISmR9F6A6N4azB4jA==","_npmVersion":"11.13.0","description":"Framework-agnostic web SDK for displaying sensitive card details via secure iframe","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","dotenv":"^17.4.2","eslint":"^9.17.0","vitest":"4.1.0","happy-dom":"20.8.9","@eslint/js":"^9.17.0","typescript":"^5.7.0","@types/node":"^25.9.2","@typescript-eslint/parser":"^8.18.0","@sensitive-card-details/protocol":"0.0.1","@typescript-eslint/eslint-plugin":"^8.18.0"},"_npmOperationalInternal":{"tmp":"tmp/card-details-sdk_0.0.4_1781250157208_0.29459910534018396","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@bvnk/card-details-sdk","version":"0.0.5","author":{"url":"https://bvnk.com/","name":"BVNK"},"license":"MIT","_id":"@bvnk/card-details-sdk@0.0.5","maintainers":[{"name":"donaldj","email":"donald.jackson@bvnk.com"},{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},{"name":"peter-bvnk","email":"peter.lehto@bvnk.com"}],"dist":{"shasum":"563457712b6708c29bce7f6accf58a8af1c72f88","tarball":"https://registry.npmjs.org/@bvnk/card-details-sdk/-/card-details-sdk-0.0.5.tgz","fileCount":9,"integrity":"sha512-YpqHEtRG5tD4MRDoZlF3Fu+HDsRNtYbx/Nhg/7/1v9KAPZnEmPZBT558QoJqGWMLakFPYzK1T/22OeFfaASVDA==","signatures":[{"sig":"MEUCIQDbiTQrlKv6RxRPiNUiluVpMGfgOw4NDGAV9UbruWgAlgIgSff6W1+L8XPNRPWt7L40R5BvE6Qng1zy9FpctsJzQF0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71829},"main":"dist/index.cjs","type":"module","_from":"file:bvnk-card-details-sdk-0.0.5.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","build:prod":"SCD_ENV=production tsup","test:watch":"vitest","build:staging":"SCD_ENV=staging tsup"},"_npmUser":{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},"_resolved":"/tmp/3a101d2866779b88efec30d33fb78161/bvnk-card-details-sdk-0.0.5.tgz","_integrity":"sha512-YpqHEtRG5tD4MRDoZlF3Fu+HDsRNtYbx/Nhg/7/1v9KAPZnEmPZBT558QoJqGWMLakFPYzK1T/22OeFfaASVDA==","_npmVersion":"11.13.0","description":"Framework-agnostic web SDK for displaying sensitive card details via secure iframe","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","dotenv":"^17.4.2","eslint":"^9.17.0","vitest":"4.1.0","happy-dom":"20.8.9","@eslint/js":"^9.17.0","typescript":"^5.7.0","@types/node":"^25.9.2","@typescript-eslint/parser":"^8.18.0","@sensitive-card-details/protocol":"0.0.1","@typescript-eslint/eslint-plugin":"^8.18.0"},"_npmOperationalInternal":{"tmp":"tmp/card-details-sdk_0.0.5_1781255852539_0.011823995483748684","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@bvnk/card-details-sdk","version":"0.0.6","author":{"url":"https://bvnk.com/","name":"BVNK"},"license":"MIT","_id":"@bvnk/card-details-sdk@0.0.6","maintainers":[{"name":"donaldj","email":"donald.jackson@bvnk.com"},{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},{"name":"peter-bvnk","email":"peter.lehto@bvnk.com"}],"dist":{"shasum":"e72355badb9f00624bbfed697ce3593880a4d790","tarball":"https://registry.npmjs.org/@bvnk/card-details-sdk/-/card-details-sdk-0.0.6.tgz","fileCount":9,"integrity":"sha512-DXrO1bxv9U4G3xgmG63OJuo9anM3ztpuQfPIOxT7SAPHm4o2DSvjtMiOLs739GIqRuYvFH37vJ6CFW3fMtP9dA==","signatures":[{"sig":"MEYCIQCD7yndSU62yNAEPJKap5Vv00OiDW6kMVDyYOE0FO5KegIhAIN7WHBXzkvkZn+YwVpVV+dSHnO/4VxgwNKKUIlByY6i","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71829},"main":"dist/index.cjs","type":"module","_from":"file:bvnk-card-details-sdk-0.0.6.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","build:prod":"SCD_ENV=production tsup","test:watch":"vitest","build:staging":"SCD_ENV=staging tsup"},"_npmUser":{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},"_resolved":"/tmp/b4405bf9600f13ad4721e276acd64f91/bvnk-card-details-sdk-0.0.6.tgz","_integrity":"sha512-DXrO1bxv9U4G3xgmG63OJuo9anM3ztpuQfPIOxT7SAPHm4o2DSvjtMiOLs739GIqRuYvFH37vJ6CFW3fMtP9dA==","_npmVersion":"11.13.0","description":"Framework-agnostic web SDK for displaying sensitive card details via secure iframe","directories":{},"_nodeVersion":"24.17.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","dotenv":"^17.4.2","eslint":"^9.17.0","vitest":"4.1.0","happy-dom":"20.8.9","@eslint/js":"^9.17.0","typescript":"^5.7.0","@types/node":"^25.9.2","@typescript-eslint/parser":"^8.18.0","@sensitive-card-details/protocol":"0.0.1","@typescript-eslint/eslint-plugin":"^8.18.0"},"_npmOperationalInternal":{"tmp":"tmp/card-details-sdk_0.0.6_1782229243237_0.5755787063821864","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@bvnk/card-details-sdk","version":"0.0.7","author":{"url":"https://bvnk.com/","name":"BVNK"},"license":"MIT","_id":"@bvnk/card-details-sdk@0.0.7","maintainers":[{"name":"donaldj","email":"donald.jackson@bvnk.com"},{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},{"name":"peter-bvnk","email":"peter.lehto@bvnk.com"}],"dist":{"shasum":"f354077693eb5ee1666b03c3c7b3774b6a1c0879","tarball":"https://registry.npmjs.org/@bvnk/card-details-sdk/-/card-details-sdk-0.0.7.tgz","fileCount":9,"integrity":"sha512-sLB28FO9e5f2BPwafgF4V6s/JuimDtO/LfSAOOaFasCggiQRQAplLlcb/Y+75e+7ms3QHcsx2uXp+ltC2AgbVQ==","signatures":[{"sig":"MEUCIQCJ15JF83MN3tob7LitpEfIVW92DZR3FN2rGePTUUsC4gIgahpJJG2G4Ru2XHCrjs89pQHMAM8pSh6lb1nD8sbaooI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71845},"main":"dist/index.cjs","type":"module","_from":"file:bvnk-card-details-sdk-0.0.7.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","build:prod":"SCD_ENV=production tsup","test:watch":"vitest","build:staging":"SCD_ENV=staging tsup"},"_npmUser":{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},"_resolved":"/tmp/a6c3dd7166beb4006893d7746a5c6668/bvnk-card-details-sdk-0.0.7.tgz","_integrity":"sha512-sLB28FO9e5f2BPwafgF4V6s/JuimDtO/LfSAOOaFasCggiQRQAplLlcb/Y+75e+7ms3QHcsx2uXp+ltC2AgbVQ==","_npmVersion":"11.13.0","description":"Framework-agnostic web SDK for displaying sensitive card details via secure iframe","directories":{},"_nodeVersion":"24.17.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","dotenv":"^17.4.2","eslint":"^9.17.0","vitest":"4.1.0","happy-dom":"20.8.9","@eslint/js":"^9.17.0","typescript":"^5.7.0","@types/node":"^25.9.2","@typescript-eslint/parser":"^8.18.0","@sensitive-card-details/protocol":"0.0.1","@typescript-eslint/eslint-plugin":"^8.18.0"},"_npmOperationalInternal":{"tmp":"tmp/card-details-sdk_0.0.7_1782233795756_0.9207961522075927","host":"s3://npm-registry-packages-npm-production"}},"0.0.7-staging":{"name":"@bvnk/card-details-sdk","version":"0.0.7-staging","author":{"url":"https://bvnk.com/","name":"BVNK"},"license":"MIT","_id":"@bvnk/card-details-sdk@0.0.7-staging","maintainers":[{"name":"donaldj","email":"donald.jackson@bvnk.com"},{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},{"name":"peter-bvnk","email":"peter.lehto@bvnk.com"}],"dist":{"shasum":"72e281c8672b084a3004e8a385a45c410845d573","tarball":"https://registry.npmjs.org/@bvnk/card-details-sdk/-/card-details-sdk-0.0.7-staging.tgz","fileCount":9,"integrity":"sha512-tPfhIRQLcFsrxZEA6+4Iwk24tAeobGk7MjMXqpLcQaEc2GoUKZpiGutIBKWD30IQ/yukWV8xVlmlUJ3W5862wA==","signatures":[{"sig":"MEQCIA5TtARIYUWiMpMjY/ncfWlhC+mR3oizd1f0mdk8BnNgAiBXKyn6TWGD/jg87ZRFof46ZKsL+giVaajtdRkAXAV9KQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71869},"main":"dist/index.cjs","type":"module","_from":"file:bvnk-card-details-sdk-0.0.7-staging.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","build:prod":"SCD_ENV=production tsup","test:watch":"vitest","build:staging":"SCD_ENV=staging tsup"},"_npmUser":{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},"_resolved":"/tmp/dccb46375b43d3f662b8b5089934b27c/bvnk-card-details-sdk-0.0.7-staging.tgz","_integrity":"sha512-tPfhIRQLcFsrxZEA6+4Iwk24tAeobGk7MjMXqpLcQaEc2GoUKZpiGutIBKWD30IQ/yukWV8xVlmlUJ3W5862wA==","_npmVersion":"11.13.0","description":"Framework-agnostic web SDK for displaying sensitive card details via secure iframe","directories":{},"_nodeVersion":"24.17.0","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.3.0","dotenv":"^17.4.2","eslint":"^9.17.0","vitest":"4.1.0","happy-dom":"20.8.9","@eslint/js":"^9.17.0","typescript":"^5.7.0","@types/node":"^25.9.2","@typescript-eslint/parser":"^8.18.0","@sensitive-card-details/protocol":"0.0.1","@typescript-eslint/eslint-plugin":"^8.18.0"},"_npmOperationalInternal":{"tmp":"tmp/card-details-sdk_0.0.7-staging_1782234267879_0.8427720757849044","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@bvnk/card-details-sdk","version":"0.0.8","author":{"url":"https://bvnk.com/","name":"BVNK"},"license":"MIT","_id":"@bvnk/card-details-sdk@0.0.8","maintainers":[{"name":"donaldj","email":"donald.jackson@bvnk.com"},{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},{"name":"peter-bvnk","email":"peter.lehto@bvnk.com"}],"dist":{"shasum":"c2bdad91e682993322ff785e0d16abe65182a9c4","tarball":"https://registry.npmjs.org/@bvnk/card-details-sdk/-/card-details-sdk-0.0.8.tgz","fileCount":9,"integrity":"sha512-qZtEks8Jpg0JVc0MX1KGm2hS08maD119cINcn9jvqN7PoVS5NqtvteVtb9PqMpCladTMb6n0yM94LKO0HSFlgQ==","signatures":[{"sig":"MEQCIH7g+jJfvbpHVj9cpLooiXn14Oew63BDzQ6VAY4Pnb7jAiBKF/h4mhiIbZxerIqgNF//h3Ai1jIIIKwcoLzSr+zuKA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74502},"main":"dist/index.cjs","type":"module","_from":"file:bvnk-card-details-sdk-0.0.8.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","build:prod":"SCD_ENV=production tsup","test:watch":"vitest","build:staging":"SCD_ENV=staging tsup"},"_npmUser":{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},"_resolved":"/tmp/28301456172955996ebc35be8797bf8a/bvnk-card-details-sdk-0.0.8.tgz","_integrity":"sha512-qZtEks8Jpg0JVc0MX1KGm2hS08maD119cINcn9jvqN7PoVS5NqtvteVtb9PqMpCladTMb6n0yM94LKO0HSFlgQ==","_npmVersion":"11.16.0","description":"Framework-agnostic web SDK for displaying sensitive card details via secure iframe","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","dotenv":"^17.4.2","eslint":"^9.17.0","vitest":"4.1.0","happy-dom":"20.8.9","@eslint/js":"^9.17.0","typescript":"^5.7.0","@types/node":"^25.9.2","@typescript-eslint/parser":"^8.18.0","@sensitive-card-details/protocol":"0.0.1","@typescript-eslint/eslint-plugin":"^8.18.0"},"_npmOperationalInternal":{"tmp":"tmp/card-details-sdk_0.0.8_1782302244327_0.49585545577426937","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@bvnk/card-details-sdk","version":"0.0.9","author":{"url":"https://bvnk.com/","name":"BVNK"},"license":"MIT","_id":"@bvnk/card-details-sdk@0.0.9","maintainers":[{"name":"donaldj","email":"donald.jackson@bvnk.com"},{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},{"name":"peter-bvnk","email":"peter.lehto@bvnk.com"}],"dist":{"shasum":"79687832370ea9bc6170cb673cd88c0c5373cf8b","tarball":"https://registry.npmjs.org/@bvnk/card-details-sdk/-/card-details-sdk-0.0.9.tgz","fileCount":9,"integrity":"sha512-1M132s6vnlED3raGGPX1lJOV1xd4tnSyAcLeE7EBUBGA7WFKrjtCdKhyNy3C2Oue6ujY7dn2blYXJkvmOdM20Q==","signatures":[{"sig":"MEYCIQCI+ORDeNCu6vj/sMoQQeMLejQwWRWFwRh4V3fZjMOmZAIhAMuxf6MTWwQ/l2JL2Tj8ldiyBewH396Zo9yy68HQpDo6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62315},"main":"dist/index.cjs","type":"module","_from":"file:bvnk-card-details-sdk-0.0.9.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","build:prod":"SCD_ENV=production tsup","test:watch":"vitest","build:staging":"SCD_ENV=staging tsup"},"_npmUser":{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},"_resolved":"/tmp/b520895cda8ed13683089581307b0f56/bvnk-card-details-sdk-0.0.9.tgz","_integrity":"sha512-1M132s6vnlED3raGGPX1lJOV1xd4tnSyAcLeE7EBUBGA7WFKrjtCdKhyNy3C2Oue6ujY7dn2blYXJkvmOdM20Q==","_npmVersion":"11.16.0","description":"Framework-agnostic web SDK for displaying sensitive card details via secure iframe","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","dotenv":"^17.4.2","eslint":"^9.17.0","vitest":"4.1.0","happy-dom":"20.8.9","@eslint/js":"^9.17.0","typescript":"^5.7.0","@types/node":"^25.9.2","@typescript-eslint/parser":"^8.18.0","@sensitive-card-details/protocol":"0.0.1","@typescript-eslint/eslint-plugin":"^8.18.0"},"_npmOperationalInternal":{"tmp":"tmp/card-details-sdk_0.0.9_1782393133473_0.15930409417532143","host":"s3://npm-registry-packages-npm-production"}},"0.0.10":{"name":"@bvnk/card-details-sdk","version":"0.0.10","author":{"url":"https://bvnk.com/","name":"BVNK"},"license":"MIT","_id":"@bvnk/card-details-sdk@0.0.10","maintainers":[{"name":"donaldj","email":"donald.jackson@bvnk.com"},{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},{"name":"peter-bvnk","email":"peter.lehto@bvnk.com"}],"dist":{"shasum":"fd4df14fd51ba985357460c1526b6d39d7b442b3","tarball":"https://registry.npmjs.org/@bvnk/card-details-sdk/-/card-details-sdk-0.0.10.tgz","fileCount":9,"integrity":"sha512-InKCnnryMZ7XDBwRDQGd+1/201eTAsjWq5kG0+SLJ+/G+GIqwMX3mnY0ugRYVrPXWNZtQ/Q2ziKugPv6mQfKGQ==","signatures":[{"sig":"MEYCIQC6rBeOwIw+I6hHiB0v7HoiCx6ABAgaxOYyVsfa8yKQJwIhAIY+wQJgIjZhIZyVhd/gnfargIjWj+Oq2i8OkRT5idfY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73760},"main":"dist/index.cjs","type":"module","_from":"file:bvnk-card-details-sdk-0.0.10.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","build:prod":"SCD_ENV=production tsup","test:watch":"vitest","build:staging":"SCD_ENV=staging tsup"},"_npmUser":{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},"_resolved":"/tmp/2a9a93d1ce7db24e9a4ce7a2ead3bfe9/bvnk-card-details-sdk-0.0.10.tgz","_integrity":"sha512-InKCnnryMZ7XDBwRDQGd+1/201eTAsjWq5kG0+SLJ+/G+GIqwMX3mnY0ugRYVrPXWNZtQ/Q2ziKugPv6mQfKGQ==","_npmVersion":"11.16.0","description":"Framework-agnostic web SDK for displaying sensitive card details via secure iframe","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","dotenv":"^17.4.2","eslint":"^9.17.0","vitest":"4.1.0","happy-dom":"20.8.9","@eslint/js":"^9.17.0","typescript":"^5.7.0","@types/node":"^25.9.2","@typescript-eslint/parser":"^8.18.0","@sensitive-card-details/protocol":"0.0.1","@typescript-eslint/eslint-plugin":"^8.18.0"},"_npmOperationalInternal":{"tmp":"tmp/card-details-sdk_0.0.10_1782477051851_0.667014603132619","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"@bvnk/card-details-sdk","version":"0.0.11","author":{"url":"https://bvnk.com/","name":"BVNK"},"license":"MIT","_id":"@bvnk/card-details-sdk@0.0.11","maintainers":[{"name":"donaldj","email":"donald.jackson@bvnk.com"},{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},{"name":"peter-bvnk","email":"peter.lehto@bvnk.com"}],"dist":{"shasum":"e8959e9533c2006d8a5362d22c711e4112c28b2d","tarball":"https://registry.npmjs.org/@bvnk/card-details-sdk/-/card-details-sdk-0.0.11.tgz","fileCount":9,"integrity":"sha512-g+qa3YrmI7ABipbubWlxq8n38Ra5QFfvY00RoIUqUkrjyAOWT+qadOEaw9CsCjZQuxgnP6AgLpHzvN0oNCpUpg==","signatures":[{"sig":"MEUCIHCQcVPRTWptiuoLQDPT/8IODJiSLkeUHzUYonijy7syAiEA9adk/jRpcLZUjoO6aU2Db/FLadi9GzA14Qt+dJjlx+w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77303},"main":"dist/index.cjs","type":"module","_from":"file:bvnk-card-details-sdk-0.0.11.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","build:prod":"SCD_ENV=production tsup","test:watch":"vitest","build:staging":"SCD_ENV=staging tsup"},"_npmUser":{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},"_resolved":"/tmp/5c44daf0319ae19b0df367112a6ebd77/bvnk-card-details-sdk-0.0.11.tgz","_integrity":"sha512-g+qa3YrmI7ABipbubWlxq8n38Ra5QFfvY00RoIUqUkrjyAOWT+qadOEaw9CsCjZQuxgnP6AgLpHzvN0oNCpUpg==","_npmVersion":"11.16.0","description":"Framework-agnostic web SDK for displaying sensitive card details via secure iframe","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","dotenv":"^17.4.2","eslint":"^9.17.0","vitest":"4.1.0","happy-dom":"20.8.9","@eslint/js":"^9.17.0","typescript":"^5.7.0","@types/node":"^25.9.2","@typescript-eslint/parser":"^8.18.0","@sensitive-card-details/protocol":"0.0.1","@typescript-eslint/eslint-plugin":"^8.18.0"},"_npmOperationalInternal":{"tmp":"tmp/card-details-sdk_0.0.11_1783348365116_0.5402717409861058","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"@bvnk/card-details-sdk","version":"0.0.12","author":{"url":"https://bvnk.com/","name":"BVNK"},"license":"MIT","_id":"@bvnk/card-details-sdk@0.0.12","maintainers":[{"name":"donaldj","email":"donald.jackson@bvnk.com"},{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},{"name":"peter-bvnk","email":"peter.lehto@bvnk.com"}],"dist":{"shasum":"dc6b8cca448a1ac3ba86613238a03993c4d1da09","tarball":"https://registry.npmjs.org/@bvnk/card-details-sdk/-/card-details-sdk-0.0.12.tgz","fileCount":9,"integrity":"sha512-pi9cuztCVlkwv//K9MMRp7cEBguROUaSaJkXeSoFqmX4o/Fo7ZeYAgA9ksT6b+R3CBS85fbRCUQpxYSoRTHzAQ==","signatures":[{"sig":"MEUCIQDzuB/pItq13ZGXd3cfECbOHu1Tx8ADKqng5BNV4JzFewIgNkxy8HL9AqCsKaFWy/RrrKSGfGKxIi7azdUSR6L2wmg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77720},"main":"dist/index.cjs","type":"module","_from":"file:bvnk-card-details-sdk-0.0.12.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","build:prod":"SCD_ENV=production tsup","test:watch":"vitest","build:staging":"SCD_ENV=staging tsup"},"_npmUser":{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},"_resolved":"/tmp/e01ff7963578e6e387ef46589826f8b1/bvnk-card-details-sdk-0.0.12.tgz","_integrity":"sha512-pi9cuztCVlkwv//K9MMRp7cEBguROUaSaJkXeSoFqmX4o/Fo7ZeYAgA9ksT6b+R3CBS85fbRCUQpxYSoRTHzAQ==","_npmVersion":"11.16.0","description":"Framework-agnostic web SDK for displaying sensitive card details via secure iframe","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","dotenv":"^17.4.2","eslint":"^9.17.0","vitest":"4.1.0","happy-dom":"20.8.9","@eslint/js":"^9.17.0","typescript":"^5.7.0","@types/node":"^25.9.2","@typescript-eslint/parser":"^8.18.0","@sensitive-card-details/protocol":"0.0.1","@typescript-eslint/eslint-plugin":"^8.18.0"},"_npmOperationalInternal":{"tmp":"tmp/card-details-sdk_0.0.12_1783947333368_0.5114619922862687","host":"s3://npm-registry-packages-npm-production"}},"0.0.13":{"name":"@bvnk/card-details-sdk","version":"0.0.13","author":{"url":"https://bvnk.com/","name":"BVNK"},"license":"MIT","_id":"@bvnk/card-details-sdk@0.0.13","maintainers":[{"name":"donaldj","email":"donald.jackson@bvnk.com"},{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},{"name":"peter-bvnk","email":"peter.lehto@bvnk.com"}],"dist":{"shasum":"bf38853331942d57d0e5644846cfdf7d665bad43","tarball":"https://registry.npmjs.org/@bvnk/card-details-sdk/-/card-details-sdk-0.0.13.tgz","fileCount":9,"integrity":"sha512-ZGKP9aonmE0lRkI2qc1hwt8O8/0d1tPpf1PsD9nPV1K87IWVtu6+3NjSInzMdwkD12zu9hSxnm5ayDZU9nYJrA==","signatures":[{"sig":"MEUCIFtmU6+g+Vg9pFYg5RxDj64H4rDqCeVCZhId/5Bvvne8AiEAyArDILMgx6urFW1i+kyXnJdozMNs8ZwK1oKlyFJL6Hk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79004},"main":"dist/index.cjs","type":"module","_from":"file:bvnk-card-details-sdk-0.0.13.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","build:prod":"SCD_ENV=production tsup","test:watch":"vitest","build:staging":"SCD_ENV=staging tsup"},"_npmUser":{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},"_resolved":"/tmp/a2b53ec8b5d78ba9f387b9499109c3be/bvnk-card-details-sdk-0.0.13.tgz","_integrity":"sha512-ZGKP9aonmE0lRkI2qc1hwt8O8/0d1tPpf1PsD9nPV1K87IWVtu6+3NjSInzMdwkD12zu9hSxnm5ayDZU9nYJrA==","_npmVersion":"11.16.0","description":"Framework-agnostic web SDK for displaying sensitive card details via secure iframe","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","dotenv":"^17.4.2","eslint":"^9.17.0","vitest":"4.1.0","happy-dom":"20.8.9","@eslint/js":"^9.17.0","typescript":"^5.7.0","@types/node":"^25.9.2","@typescript-eslint/parser":"^8.18.0","@sensitive-card-details/protocol":"0.0.1","@typescript-eslint/eslint-plugin":"^8.18.0"},"_npmOperationalInternal":{"tmp":"tmp/card-details-sdk_0.0.13_1784017509832_0.6878356012407516","host":"s3://npm-registry-packages-npm-production"}},"0.0.14":{"name":"@bvnk/card-details-sdk","version":"0.0.14","author":{"url":"https://bvnk.com/","name":"BVNK"},"license":"MIT","_id":"@bvnk/card-details-sdk@0.0.14","maintainers":[{"name":"donaldj","email":"donald.jackson@bvnk.com"},{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},{"name":"peter-bvnk","email":"peter.lehto@bvnk.com"}],"dist":{"shasum":"4bc694cb5d75bea13affead6ac99b77f5b856663","tarball":"https://registry.npmjs.org/@bvnk/card-details-sdk/-/card-details-sdk-0.0.14.tgz","fileCount":9,"integrity":"sha512-iL+Le7nsR2WXQvor5cN0rvT4gFUREizDBC+JdMwX+9L2EhbKCTo9osS7aJtP8xzs9QuUil5Xx6EA35RxdqIO+Q==","signatures":[{"sig":"MEUCIFfVL2RzBORKwDcCLKmT6cobCIKagZk+smXxI/qaO9aaAiEA4of7fKlGfSQxDqNVnKUsxR5E9mWOYCdgy4XqwrTaRBw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79081},"main":"dist/index.cjs","type":"module","_from":"file:bvnk-card-details-sdk-0.0.14.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","build:prod":"SCD_ENV=production tsup","test:watch":"vitest","build:staging":"SCD_ENV=staging tsup","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},"_resolved":"/tmp/fb1c0f5a6953ad5f4f91f605455e7456/bvnk-card-details-sdk-0.0.14.tgz","_integrity":"sha512-iL+Le7nsR2WXQvor5cN0rvT4gFUREizDBC+JdMwX+9L2EhbKCTo9osS7aJtP8xzs9QuUil5Xx6EA35RxdqIO+Q==","_npmVersion":"11.16.0","description":"Framework-agnostic web SDK for displaying sensitive card details via secure iframe","directories":{},"_nodeVersion":"24.18.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","dotenv":"^17.4.2","vitest":"4.1.0","happy-dom":"20.8.9","typescript":"^5.7.0","@types/node":"^25.9.2","@vitest/coverage-v8":"4.1.0","@sensitive-card-details/protocol":"0.0.1","@sensitive-card-details/eslint-config":"0.0.0"},"_npmOperationalInternal":{"tmp":"tmp/card-details-sdk_0.0.14_1785402857137_0.8191595606171265","host":"s3://npm-registry-packages-npm-production"}},"0.0.15":{"name":"@bvnk/card-details-sdk","version":"0.0.15","author":{"url":"https://bvnk.com/","name":"BVNK"},"license":"MIT","_id":"@bvnk/card-details-sdk@0.0.15","maintainers":[{"name":"donaldj","email":"donald.jackson@bvnk.com"},{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},{"name":"peter-bvnk","email":"peter.lehto@bvnk.com"}],"dist":{"shasum":"757b80daea14d9f17b8e7e5d3c39475d3c317243","tarball":"https://registry.npmjs.org/@bvnk/card-details-sdk/-/card-details-sdk-0.0.15.tgz","fileCount":9,"integrity":"sha512-wqq+dt4K8N1bvfUKNt6OPNhzQdnVGUHftIhwfW7/81f4l9ZIHRgLo5DiOMxssZyUTPHORRMgHE/SEYkIUPb4lw==","signatures":[{"sig":"MEUCIQDgKQTmDonbo2EwkRGyupIasOcNYb4mb/HCIDZyjjb5bwIgETgfXj9SQM8f4XzYvd2gXavC25L3MPSW6YaF+v+6124=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79081},"main":"dist/index.cjs","type":"module","_from":"file:bvnk-card-details-sdk-0.0.15.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","build:prod":"SCD_ENV=production tsup","test:watch":"vitest","build:staging":"SCD_ENV=staging tsup","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},"_resolved":"/tmp/93251d086c962014ec3770b40add04a1/bvnk-card-details-sdk-0.0.15.tgz","_integrity":"sha512-wqq+dt4K8N1bvfUKNt6OPNhzQdnVGUHftIhwfW7/81f4l9ZIHRgLo5DiOMxssZyUTPHORRMgHE/SEYkIUPb4lw==","_npmVersion":"11.19.0","description":"Framework-agnostic web SDK for displaying sensitive card details via secure iframe","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","dotenv":"^17.4.2","vitest":"4.1.0","happy-dom":"20.8.9","typescript":"^5.7.0","@types/node":"^25.9.2","@vitest/coverage-v8":"4.1.0","@sensitive-card-details/protocol":"0.0.1","@sensitive-card-details/eslint-config":"0.0.0"},"_npmOperationalInternal":{"tmp":"tmp/card-details-sdk_0.0.15_1788765626749_0.6718668494543332","host":"s3://npm-registry-packages-npm-production"}},"0.0.16":{"name":"@bvnk/card-details-sdk","version":"0.0.16","author":{"url":"https://bvnk.com/","name":"BVNK"},"license":"MIT","_id":"@bvnk/card-details-sdk@0.0.16","maintainers":[{"name":"donaldj","email":"donald.jackson@bvnk.com"},{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},{"name":"peter-bvnk","email":"peter.lehto@bvnk.com"}],"dist":{"shasum":"4ea7ac638c4ea285f9b336655fb4d257564ccac8","tarball":"https://registry.npmjs.org/@bvnk/card-details-sdk/-/card-details-sdk-0.0.16.tgz","fileCount":9,"integrity":"sha512-90atypejErtT/RJrDz+DD78GuPSGHWnnvFZUafOgCxI190YjvjujmZI7TUGWgZMZyKrREFljhPC+7Pf1kj/fsA==","signatures":[{"sig":"MEQCIFOYswCdhwU6+PeNt7hkHZx7QIaXA2yTJMEKte7RH0jgAiASqfDNV9Ub8W8Wb5z0D4h26dg10oc9wJbvoz4gTTm+Ow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79081},"main":"dist/index.cjs","type":"module","_from":"file:bvnk-card-details-sdk-0.0.16.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","build:prod":"SCD_ENV=production tsup","test:watch":"vitest","build:staging":"SCD_ENV=staging tsup","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},"_resolved":"/tmp/45366f39f761053a043567587346fbb2/bvnk-card-details-sdk-0.0.16.tgz","_integrity":"sha512-90atypejErtT/RJrDz+DD78GuPSGHWnnvFZUafOgCxI190YjvjujmZI7TUGWgZMZyKrREFljhPC+7Pf1kj/fsA==","_npmVersion":"11.19.0","description":"Framework-agnostic web SDK for displaying sensitive card details via secure iframe","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","dotenv":"^17.4.2","vitest":"4.1.0","happy-dom":"20.8.9","typescript":"^5.7.0","@types/node":"^25.9.2","@vitest/coverage-v8":"4.1.0","@sensitive-card-details/protocol":"0.0.1","@sensitive-card-details/eslint-config":"0.0.0"},"_npmOperationalInternal":{"tmp":"tmp/card-details-sdk_0.0.16_1788770878033_0.9153665001413456","host":"s3://npm-registry-packages-npm-production"}},"0.0.17":{"name":"@bvnk/card-details-sdk","version":"0.0.17","description":"Framework-agnostic web SDK for displaying sensitive card details via secure iframe","license":"MIT","author":{"name":"BVNK","url":"https://bvnk.com/"},"type":"module","main":"dist/index.cjs","module":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"devDependencies":{"@types/node":"^25.9.2","@vitest/coverage-v8":"4.1.0","dotenv":"^17.4.2","happy-dom":"20.8.9","tsup":"^8.3.0","typescript":"^5.7.0","vitest":"4.1.0","@sensitive-card-details/eslint-config":"0.0.0","@sensitive-card-details/protocol":"0.0.1"},"scripts":{"build":"tsup","build:staging":"SCD_ENV=staging tsup","build:prod":"SCD_ENV=production tsup","dev":"tsup --watch","lint":"eslint . --max-warnings 0","lint:fix":"eslint . --fix","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","typecheck":"tsc --noEmit","clean":"rm -rf dist"},"_id":"@bvnk/card-details-sdk@0.0.17","_integrity":"sha512-VnB5UFuJagRk/3UT04mzIx4M99nuzG4eda5EtmHlKgQ4VaSPMH961UBRHm0Rwnd3l3HZ8dFPzukhWsBYvKRCPQ==","_resolved":"/tmp/42e3b9c0b92b5eb413145fdd4b744e06/bvnk-card-details-sdk-0.0.17.tgz","_from":"file:bvnk-card-details-sdk-0.0.17.tgz","_nodeVersion":"24.20.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-VnB5UFuJagRk/3UT04mzIx4M99nuzG4eda5EtmHlKgQ4VaSPMH961UBRHm0Rwnd3l3HZ8dFPzukhWsBYvKRCPQ==","shasum":"95d2f4e90254a5b4bebbc03580ae8cce25ce71ca","tarball":"https://registry.npmjs.org/@bvnk/card-details-sdk/-/card-details-sdk-0.0.17.tgz","fileCount":9,"unpackedSize":79081,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCPFbtqrN4yTTgeqHzFsmfl4BP6jQCN/3vPCTjxCaeLEgIgJXP3bBCatuDKRoIcfznvtLxWLsta6pb4tumoaIM5UmE="}]},"_npmUser":{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},"directories":{},"maintainers":[{"name":"donaldj","email":"donald.jackson@bvnk.com"},{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},{"name":"peter-bvnk","email":"peter.lehto@bvnk.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/card-details-sdk_0.0.17_1788776791536_0.8189681321699569"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-11T14:21:27.193Z","modified":"2026-09-07T10:26:31.897Z","0.0.3":"2026-06-11T14:21:27.517Z","0.0.4":"2026-06-12T07:42:37.394Z","0.0.5":"2026-06-12T09:17:32.668Z","0.0.6":"2026-06-23T15:40:43.403Z","0.0.7":"2026-06-23T16:56:35.956Z","0.0.7-staging":"2026-06-23T17:04:28.057Z","0.0.8":"2026-06-24T11:57:24.492Z","0.0.9":"2026-06-25T13:12:13.606Z","0.0.10":"2026-06-26T12:30:51.992Z","0.0.11":"2026-07-06T14:32:45.261Z","0.0.12":"2026-07-13T12:55:33.508Z","0.0.13":"2026-07-14T08:25:09.975Z","0.0.14":"2026-07-30T09:14:17.269Z","0.0.15":"2026-09-07T07:20:26.910Z","0.0.16":"2026-09-07T08:47:58.162Z","0.0.17":"2026-09-07T10:26:31.666Z"},"author":{"name":"BVNK","url":"https://bvnk.com/"},"license":"MIT","description":"Framework-agnostic web SDK for displaying sensitive card details via secure iframe","maintainers":[{"name":"donaldj","email":"donald.jackson@bvnk.com"},{"name":"pawel.chyla","email":"pawel.chyla@bvnk.com"},{"name":"peter-bvnk","email":"peter.lehto@bvnk.com"}],"readme":"# @bvnk/card-details-sdk\n\nFramework-agnostic web SDK for displaying sensitive card details (PAN, CVC, expiry, cardholder name)\ninside a sandboxed, secure iframe.\n\nThe host application never touches the sensitive values — the SDK mounts an isolated iframe served\nfrom the card vault, passes a short-lived access token via `postMessage`, and renders the details\ndirectly to the user.\n\n---\n\n## Table of contents\n\n- [Why an iframe?](#why-an-iframe)\n- [Prerequisites](#prerequisites)\n  - [Access token](#access-token)\n  - [Content Security Policy](#content-security-policy)\n  - [Browser support](#browser-support)\n- [Installation](#installation)\n- [Quick start](#quick-start)\n- [API](#api)\n  - [`mount(options)`](#mountoptions-carddetailshandle)\n  - [`LifecycleStatus`](#lifecyclestatus)\n  - [`SdkError` and error codes](#sdkerror)\n- [Lifecycle](#lifecycle)\n- [Examples](#examples)\n  - [React](#react-example)\n  - [TanStack Query](#usage-with-tanstack-query)\n  - [Token refresh and re-mounting](#token-refresh-and-re-mounting)\n- [Configuration](#configuration)\n- [Security model](#security-model)\n- [Troubleshooting](#troubleshooting)\n- [TypeScript](#typescript)\n- [Demos and related packages](#demos-and-related-packages)\n- [License](#license)\n\n---\n\n## Why an iframe?\n\n- **PCI scope reduction** — sensitive data is rendered by the vault origin, not your app.\n- **Origin isolation** — the iframe runs in a `sandbox` (`allow-scripts allow-same-origin`) with\n  `referrerpolicy=\"no-referrer\"`.\n- **No data leakage** — the parent window only ever sees lifecycle events, never the card data.\n- **Clipboard support** — the iframe is granted `allow=\"clipboard-write\"` so the vault UI can copy\n  values directly without exposing them to the host.\n\n---\n\n## Prerequisites\n\n### Access token\n\nThe SDK requires a short-lived access token issued by your backend. The host application is\nresponsible for:\n\n1. **Requesting the token** from your backend (typically a POST to an endpoint like\n   `/card/v1/card-details-token` that authenticates the end user and returns a JWT).\n2. **Passing the token** to `mount()` via `accessToken`.\n3. **Handling rejection** — if the vault rejects the token (`TOKEN_REJECTED`), request a fresh one\n   and re-mount.\n\nTokens are typically valid for 300 seconds. **Do not cache or reuse them** across page loads or SDK\nmounts. See your BVNK backend integration docs for the exact issuance endpoint.\n\n### Content Security Policy\n\nIf your host page sets a CSP, allow the vault origin under `frame-src` (and `child-src` for older\nbrowsers):\n\n```http\nContent-Security-Policy: frame-src https://card-details.bvnk.com https://card-details.staging.bvnk.com https://card-details.sandbox.bvnk.com;\n```\n\nInclude only the environments you target. Forgetting this is the most common cause of a blank iframe\nin production.\n\n### Browser support\n\n- Evergreen Chrome, Firefox, Edge, Safari (last 2 major versions).\n- Requires `postMessage`, `MessageChannel`-style isolation, and iframe `sandbox`. No IE11.\n- **Client-only** — the SDK touches `document`, `window`, and `iframe` APIs. Do not call `mount()`\n  during SSR. In Next.js / Remix, mount inside `useEffect` (see the [React example](#react-example))\n  or behind a dynamic import with `ssr: false`.\n\n---\n\n## Installation\n\n```bash\npnpm add @bvnk/card-details-sdk\n# or\nnpm install @bvnk/card-details-sdk\n# or\nyarn add @bvnk/card-details-sdk\n```\n\nThe package ships dual ESM + CJS bundles (`exports.import` / `exports.require`) and TypeScript\ndeclarations.\n\n---\n\n## Quick start\n\n```ts\nimport { mount } from '@bvnk/card-details-sdk'\n\nconst container = document.getElementById('card-details')!\n\nconst handle = mount({\n  container,\n  accessToken: 'eyJhbGciOi...', // short-lived token from your backend\n  appId: '8ddfb518-32f1-4462-8441-0c662e01d070', // app identifier\n  onReady: () => console.log('Card details rendered'),\n  onError: err => console.error('SDK error', err.code, err.message),\n  onStatusChange: status => console.log('Status:', status),\n})\n\n// Later, when you're done:\nhandle.unmount()\n```\n\nThe container must already be sized via CSS — the iframe fills 100% of its parent with\n`display: block`. A minimum height of ~575px is recommended to fit the rendered card details without\nscrolling.\n\n---\n\n## API\n\n### `mount(options): CardDetailsHandle`\n\nCreates a sandboxed iframe inside `options.container`, performs the handshake with the vault, and\nrenders the card details.\n\nThrows `TypeError` synchronously if `container` is not an `HTMLElement`, or if `accessToken` or\n`appId` is empty.\n\n#### `MountOptions`\n\n| Property             | Type                                | Required | Description                                                                                                                                                                                                                                                                                |\n| -------------------- | ----------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `container`          | `HTMLElement`                       | yes      | DOM node that will own the iframe. Size it via CSS — the iframe is `width: 100%; height: 100%`.                                                                                                                                                                                            |\n| `accessToken`        | `string`                            | yes      | Short-lived token obtained from your backend. Sent to the iframe over `postMessage` after the handshake.                                                                                                                                                                                   |\n| `appId`              | `string`                            | yes      | App identifier (UUID) generated by our backend when you register your allowed origins via self-service in the Merchant Portal. Appended as an `appId` query param on the iframe URL so the vault can restrict `frame-ancestors` and `postMessage` origins to those registered to your app. |\n| `env`                | `Environment`                       | no       | Selects the vault environment at runtime: `'production' \\| 'staging' \\| 'sandbox'`. Overrides the URL baked in at build time.                                                                                                                                                              |\n| `handshakeTimeoutMs` | `number`                            | no       | How long to wait for the iframe to complete the handshake before failing. Default: `10_000` (10s).                                                                                                                                                                                         |\n| `iframeTitle`        | `string`                            | no       | `<iframe title>` for accessibility. Default: `\"Sensitive card details\"`.                                                                                                                                                                                                                   |\n| `onReady`            | `() => void`                        | no       | Called once when the iframe has fully rendered the card details.                                                                                                                                                                                                                           |\n| `onError`            | `(error: SdkError) => void`         | no       | Called whenever the SDK encounters a terminal or recoverable protocol error. See [Error codes](#error-codes).                                                                                                                                                                              |\n| `onStatusChange`     | `(status: LifecycleStatus) => void` | no       | Called on every lifecycle transition. Useful for driving UI state.                                                                                                                                                                                                                         |\n\n#### `CardDetailsHandle`\n\n| Method    | Signature               | Description                                                                                                                                |\n| --------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |\n| `unmount` | `() => void`            | Removes the iframe, disposes the message channel, clears timers. Idempotent. If called before `onReady`, fires `onError` with `UNMOUNTED`. |\n| `status`  | `() => LifecycleStatus` | Returns the current lifecycle status synchronously.                                                                                        |\n\n---\n\n### `LifecycleStatus`\n\nThe SDK transitions through these states in order. `onStatusChange` is fired on every transition.\n\n| Status           | Meaning                                                                     |\n| ---------------- | --------------------------------------------------------------------------- |\n| `mounting`       | `mount()` was called; iframe element is being created.                      |\n| `awaiting-ready` | Iframe attached to the DOM; waiting for the `HOST_READY` handshake message. |\n| `token-sent`     | Handshake received; access token has been posted to the iframe.             |\n| `ready`          | Iframe reported `RENDER_COMPLETE` — card details are visible to the user.   |\n| `errored`        | An error occurred. Inspect the `SdkError` from `onError`.                   |\n| `unmounted`      | `unmount()` was called.                                                     |\n\n---\n\n### `SdkError`\n\n```ts\ninterface SdkError {\n  code: ErrorCode\n  message: string\n}\n```\n\n`code` matches the string values exported by `@sensitive-card-details/protocol`. You can compare\nagainst the enum or against string literals:\n\n```ts\nimport { ErrorCode } from '@sensitive-card-details/protocol'\n\nonError: err => {\n  if (err.code === ErrorCode.TokenRejected) {\n    // or: if (err.code === 'TOKEN_REJECTED')\n    refreshToken()\n  }\n}\n```\n\n#### Error codes\n\n**Terminal errors** tear down the iframe. The SDK transitions to `errored` (or `unmounted` for\n`UNMOUNTED`) and the DOM node is removed. Recovery requires calling `mount()` again.\n\n| Code                 | When it fires                                                                                                           |\n| -------------------- | ----------------------------------------------------------------------------------------------------------------------- |\n| `HANDSHAKE_TIMEOUT`  | Iframe did not respond within `handshakeTimeoutMs`. Network or vault availability issue.                                |\n| `IFRAME_LOAD_FAILED` | The `<iframe>` element fired its `error` event, or `contentWindow` was unavailable. Usually CSP, network, or DNS issue. |\n| `UNMOUNTED`          | `unmount()` was called before `RENDER_COMPLETE`. Treat as a cancellation, not a failure.                                |\n\n**Non-terminal errors** leave the iframe attached. Status changes to `errored` but the DOM node\nstays in place, so the vault can keep rendering (e.g., its own error UI). The SDK will not\ntransition back to `ready` without a re-mount.\n\n| Code              | When it fires                                                                                                                                 |\n| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |\n| `INVALID_MESSAGE` | The vault sent a message that did not match the protocol schema — usually a protocol-version mismatch.                                        |\n| `TOKEN_REJECTED`  | The vault rejected the supplied access token (expired, revoked, scope mismatch). Request a fresh token, then `unmount()` and `mount()` again. |\n| `RENDER_FAILED`   | Vault failed to render the card details (downstream service error). You may show a retry UI on top of the still-attached iframe.              |\n\n---\n\n## Lifecycle\n\n```mermaid\nstateDiagram-v2\n  [*] --> mounting: mount()\n  mounting --> awaiting_ready: iframe created\n  awaiting_ready --> token_sent: HOST_READY received\n  token_sent --> ready: RENDER_COMPLETE\n  awaiting_ready --> errored: HANDSHAKE_TIMEOUT / IFRAME_LOAD_FAILED\n  token_sent --> errored: TOKEN_REJECTED / RENDER_FAILED / INVALID_MESSAGE\n  ready --> errored: INVALID_MESSAGE (rare)\n  mounting --> unmounted: unmount()\n  awaiting_ready --> unmounted: unmount()\n  token_sent --> unmounted: unmount()\n  ready --> unmounted: unmount()\n  errored --> unmounted: unmount()\n  unmounted --> [*]\n```\n\n`unmount()` is idempotent and callable from any state. Calling it before `ready` also fires\n`onError` with `UNMOUNTED` so cleanup logic can distinguish cancellations from successful\ncompletion.\n\n---\n\n## Examples\n\n### React example\n\nA drop-in component that mounts the iframe and surfaces lifecycle/error state. Note that `UNMOUNTED`\nis filtered from `onError` — it fires during cleanup (e.g., StrictMode double-mount or prop changes)\nand is not a failure.\n\n```tsx\nimport { useEffect, useRef, useState } from 'react'\nimport {\n  mount,\n  type CardDetailsHandle,\n  type LifecycleStatus,\n  type SdkError,\n} from '@bvnk/card-details-sdk'\n\ntype Props = {\n  accessToken: string\n  appId: string\n  onReady?: () => void\n}\n\nexport function CardDetails({ accessToken, appId, onReady }: Props) {\n  const containerRef = useRef<HTMLDivElement | null>(null)\n  const [status, setStatus] = useState<LifecycleStatus>('mounting')\n  const [error, setError] = useState<SdkError | null>(null)\n\n  useEffect(() => {\n    const container = containerRef.current\n    if (!container || !accessToken) return\n\n    let handle: CardDetailsHandle | null = null\n    try {\n      handle = mount({\n        container,\n        accessToken,\n        appId,\n        iframeTitle: 'Secure card details',\n        onStatusChange: setStatus,\n        onReady: () => {\n          setError(null)\n          onReady?.()\n        },\n        onError: err => {\n          if (err.code === 'UNMOUNTED') return // cancellation, not a failure\n          setError(err)\n        },\n      })\n    } catch (err) {\n      setError({\n        code: 'MOUNT_FAILED',\n        message: err instanceof Error ? err.message : 'Failed to mount SDK',\n      })\n    }\n\n    return () => {\n      handle?.unmount()\n    }\n  }, [accessToken, appId, onReady])\n\n  return (\n    <div>\n      <div ref={containerRef} style={{ width: '100%', height: 360, border: '1px solid #ddd' }} />\n      {error ? (\n        <p role='alert'>\n          Error <code>{error.code}</code>: {error.message}\n        </p>\n      ) : (\n        <p>Status: {status}</p>\n      )}\n    </div>\n  )\n}\n```\n\n### Usage with TanStack Query\n\nTokens are typically short-lived and fetched on demand:\n\n```tsx\nimport { useMutation } from '@tanstack/react-query'\nimport { CardDetails } from './CardDetails'\n\nexport function RevealCard({ cardId }: { cardId: string }) {\n  const { mutate, data, isPending } = useMutation({\n    mutationFn: () => fetch(`/card/v1/card-details-token`).then(r => r.json()),\n  })\n\n  if (!data) {\n    return (\n      <button onClick={() => mutate()} disabled={isPending}>\n        {isPending ? 'Requesting…' : 'Reveal card'}\n      </button>\n    )\n  }\n\n  return <CardDetails accessToken={data.token} appId='8ddfb518-32f1-4462-8441-0c662e01d070' />\n}\n```\n\nA more complete example — modal, status indicators, error UI — lives in\n[`apps/demos/host-web/src/components/RevealCardModal.tsx`](../../apps/demos/host-web/src/components/RevealCardModal.tsx).\n\n### Token refresh and re-mounting\n\nThe SDK does **not** refresh tokens internally. To recover from `TOKEN_REJECTED` or to display the\ndetails a second time, request a new token and re-mount:\n\n```ts\nonError: async err => {\n  if (err.code === 'TOKEN_REJECTED') {\n    handle.unmount()\n    const fresh = await fetchToken()\n    handle = mount({ container, accessToken: fresh, ...rest })\n  }\n}\n```\n\nIn React, changing the `accessToken` prop in the [example above](#react-example) automatically\ntriggers the cleanup-and-remount cycle via `useEffect`.\n\n---\n\n## Configuration\n\nThe default vault iframe URL is baked into the bundle at build time via the `SCD_ENV` environment\nvariable:\n\n| `SCD_ENV`    | Build script         | Iframe URL              |\n| ------------ | -------------------- | ----------------------- |\n| _(unset)_    | `pnpm build` (dev)   | `http://localhost:3000` |\n| `staging`    | `pnpm build:staging` | Staging vault URL       |\n| `production` | `pnpm build:prod`    | Production vault URL    |\n\nConsumers normally don't need to configure the URL — it is selected by the dist-tag of the SDK they\ninstall: `latest` → production, `next` → staging.\n\n### Selecting an environment at runtime\n\nFor apps that target multiple vault environments from the same bundle (e.g. a staging build that\nalso needs to hit sandbox), pass the `env` option to `mount`:\n\n```ts\nmount({\n  container,\n  accessToken,\n  env: 'sandbox', // 'production' | 'staging' | 'sandbox'\n})\n```\n\nThe runtime `env` overrides the build-time URL. Supported values map to:\n\n| `env`        | Iframe URL                              |\n| ------------ | --------------------------------------- |\n| `production` | `https://card-details.bvnk.com`         |\n| `staging`    | `https://card-details.staging.bvnk.com` |\n| `sandbox`    | `https://card-details.sandbox.bvnk.com` |\n\n---\n\n## Security model\n\n- The iframe is created with `sandbox=\"allow-scripts\"`, `referrerpolicy=\"no-referrer\"`, and\n  `allow=\"clipboard-write\"`.\n- All messages are gated by:\n  - `event.source === iframe.contentWindow` (parent side) / `event.source === parent` (iframe side).\n  - `event.origin === expectedOrigin` (parent side; derived from the bundled iframe URL).\n  - Protocol type guards from `@sensitive-card-details/protocol`.\n- `HOST_READY` (posted by the vault, not the SDK) is sent once per origin on the merchant's\n  allow-list rather than to `*` — the vault resolves that list itself and never broadcasts. It\n  carries no sensitive data regardless.\n- The access token is posted with an explicit `expectedOrigin`, never `*`, and only once the vault's\n  `HOST_READY` has been received.\n- The host page never receives card data; only lifecycle and error events cross the boundary.\n- `appId` (a UUID generated by our backend when you register your allowed origins via self-service\n  in the Merchant Portal) is appended to the iframe URL as an `appId` query param. The vault uses it\n  to look up the registered origins for your app and restricts its `frame-ancestors` CSP directive\n  and `postMessage` target origin accordingly, so only your registered origin(s) can embed the vault\n  for that app.\n\n---\n\n## Troubleshooting\n\n| Symptom                                   | Likely cause and fix                                                                                                                                            |\n| ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Iframe renders blank or fails to load     | CSP missing `frame-src` for the vault origin. Add it to your `Content-Security-Policy` header. See [CSP section](#content-security-policy).                     |\n| `HANDSHAKE_TIMEOUT` after ~10s            | Vault URL unreachable from the browser. Verify network, firewall, and that the correct `env` is selected. Check the browser network tab for the iframe request. |\n| `IFRAME_LOAD_FAILED` immediately          | Wrong URL, DNS failure, or the iframe was blocked (X-Frame-Options, CSP). Inspect the iframe `src` and console errors.                                          |\n| `TOKEN_REJECTED`                          | Token expired, revoked, or for the wrong card. Request a fresh token from your backend and re-mount.                                                            |\n| Container has zero height                 | The iframe is `100%/100%`. Set explicit dimensions on the container (e.g., `height: 360px`).                                                                    |\n| `UNMOUNTED` error fires on every render   | React StrictMode mounts effects twice in development. Filter `UNMOUNTED` from `onError` (see [React example](#react-example)) — this is expected and harmless.  |\n| Mounting throws `TypeError` synchronously | `container` is not an `HTMLElement` or `accessToken` is an empty string. Confirm the container ref is attached before calling `mount()`.                        |\n| SSR error: `document is not defined`      | The SDK is client-only. Mount inside `useEffect`, or dynamically import the module with `ssr: false`.                                                           |\n\n---\n\n## TypeScript\n\nAll public types are exported from the package root:\n\n```ts\nimport type {\n  CardDetailsHandle,\n  Environment,\n  LifecycleStatus,\n  MountOptions,\n  SdkError,\n} from '@bvnk/card-details-sdk'\n```\n\nThe `ErrorCode` enum is re-exported from the protocol package:\n\n```ts\nimport { ErrorCode } from '@sensitive-card-details/protocol'\n```\n\n---\n\n## Demos and related packages\n\n- [`apps/demos/host-web`](../../apps/demos/host-web) — full React + Vite demo with token mock, modal\n  flow, and error UI.\n- [`apps/demos/host-ios`](../../apps/demos/host-ios) — iOS host that embeds the vault via\n  `WKWebView`.\n- [`apps/demos/host-android`](../../apps/demos/host-android) — Android host via `WebView`.\n- [`apps/web/docs/native-webview.md`](../../apps/web/docs/native-webview.md) — protocol notes for\n  native consumers.\n- [`packages/protocol`](../protocol) — shared message schema and type guards used by the SDK and the\n  vault.\n\n---\n\n## License\n\nMIT. See [LICENSE](./LICENSE).\n","readmeFilename":"README.md"}