{"_id":"@waiverforever/waiver-widget","_rev":"27-ec275f8c8ec38331a0b0e3d9739cc6ce","name":"@waiverforever/waiver-widget","dist-tags":{"latest":"1.4.1"},"versions":{"1.1.7":{"name":"@waiverforever/waiver-widget","version":"1.1.7","keywords":["waiverforever","waiver","waiver widget"],"license":"MIT","_id":"@waiverforever/waiver-widget@1.1.7","maintainers":[{"name":"ll0jj0xx0","email":"jli@ariesapp.com"},{"name":"zheeeng","email":"hi@zheeeng.me"}],"dist":{"shasum":"628a8d85932c8d4e014652b4baf7733d0c493556","tarball":"https://registry.npmjs.org/@waiverforever/waiver-widget/-/waiver-widget-1.1.7.tgz","fileCount":16,"integrity":"sha512-HNDGIx4JazuVkyF3h+U5cuq+OxvpJkv7qZx35shFjQlkq/nEXFPsZBzb1+zCHpt1BqOowleb4JrR8ClrXQ/F7g==","signatures":[{"sig":"MEYCIQCErCqrZqNCtgrOQDDWU8mvqCns+0/dhdruJP5V5+LUVgIhAN2fq53GHw502y0MecC7Rr1ME5RUoBK2qFDlEjL1T4Pz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":291712,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiegkDACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp+fQ/5AI6WU4vh0J5UAAZyPU2QdUVMoTx/31i7Ue9MIvU00y8li82A\r\nuz6bURtQUOlY8QNAEt/XjN2ZnbqyGm8rjePDJg5Ex5dsRPx6cbz1SXC4pfJ2\r\n9VbdNXJGPaxoDzZLq20zAUCeP6mGtLjUd32io7D1JI7ohGmMh2TTnoT5FmJQ\r\nreISBp2gMgJVP/eCcq+wmVpIYeumd2aCiOaap8KE8w4D1geKnDz4lzNdu35m\r\nJHBLRXesQsYlzw7GaduxXxRkJbEEszHYgpwGnaxm6EJB6g8q8pCTRzIszzWg\r\n5QJhNJoodlfUKkRQBOh5xTW4fEg5iRYBlSbcOEXeGoC8oazObnS73W31V3IL\r\nroqKx9DzsTrDLkhhx/IBJiKWqB73aOJmnkP63JmSG/F/Qcee4+g8d9Tj+4Ba\r\nYFURMFy+0B88+d4rD1EiylXTtNAcUAEJm1ivllSNR+PFMePcPmLgqRRmc6S9\r\nO8qxgySIIGGZo3IVObmTJdidSFFRnFfubAkXe2O6uX+g+I1gVpGFXc5s09if\r\nmXtch85bLas1fIW7Z8IXJT3zaErlDTkDX4mf7CwNskQy5zWSyClc8HNNQ4eZ\r\nsJ503fv3Hcl4N8e8jpdcNKVjGYzBNUtNZBGlObTl86/iJ7V+xFq2n644beP9\r\neQVOPpUzRJVYJ0FOsb46O9OoBDKBWQc+gYA=\r\n=DvOg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/umd/index.js","module":"dist/commonjs/index.js","gitHead":"21db852e672091dc0d014f3b0d76c7408b0e3111","scripts":{"build":"gulp pack","publish":"npm publish --access=public"},"typings":"dist/commonjs/index.d.ts","_npmUser":{"name":"zheeeng","email":"hi@zheeeng.me"},"_npmVersion":"6.14.16","description":"embed waiver widget for your site","directories":{},"_nodeVersion":"14.19.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"gulp":"^4.0.2","tslint":"^5.18.0","gulp-umd":"^2.0.0","gulp-clean":"^0.4.0","typescript":"^3.9.7","gulp-rename":"^1.4.0","gulp-uglify":"^3.0.2","gulp-replace":"^1.0.0","gulp-clean-css":"^4.2.0","gulp-typescript":"^5.0.1"},"_npmOperationalInternal":{"tmp":"tmp/waiver-widget_1.1.7_1652164867098_0.6706477785195066","host":"s3://npm-registry-packages"}},"1.1.8":{"name":"@waiverforever/waiver-widget","version":"1.1.8","keywords":["waiverforever","waiver","waiver widget"],"license":"MIT","_id":"@waiverforever/waiver-widget@1.1.8","maintainers":[{"name":"ll0jj0xx0","email":"jli@ariesapp.com"},{"name":"zheeeng","email":"hi@zheeeng.me"}],"dist":{"shasum":"d727a273b1f5b7294351f6b597a92597e67e62eb","tarball":"https://registry.npmjs.org/@waiverforever/waiver-widget/-/waiver-widget-1.1.8.tgz","fileCount":16,"integrity":"sha512-lJqsg1CXP5s9lxmDJxJ1SbuYb+FShRwSARm0mRowldwXf0betEs6J39MILywb77e0CVvHJL+lPBWokskMF7yWQ==","signatures":[{"sig":"MEUCIQDwbGNRm3b3LKV2nRXdxn6S/ThVztVVTP2SK4UREkA7XQIgN8j2O/WzFGj3oO4q6OpCwhSLfXuzg8GjTif8qPZA7ZI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":291666,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiegmRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmofqg//Yq3oYxszjWbghzxb7EeCQclJcegD8+63unLbUmcG8W2t4ZvO\r\nJjjPsz1gu9/L0rmBpT7jJpbeSiZ7kKtX3tTWBNerjJYNFWziqMn/9xpKOPdh\r\nqmx1fb5KQB6lK3sZQANMCpVj48Nf+CK96Nf2BYn2+U3myZR/C3MflohZgFkF\r\nme59xrblWrYGxb6r6DmV2X3m+QdKIxVzi3g/FXp9ejV9LvxKriu7HmR9awuB\r\na7CqdvBOpa1oGvxufXvCy238tvUxM+158xGjUZ4QcMAIzDiT2EJAmGNJ37WO\r\ngHWyLhsE7ZL8c+Rp1i1SJ+cPWyq/3t+Asl1XLWLkFvgH4OOYsxN3H6PVRNzE\r\nszBZfZcho0jam+kZBZaXveB+L6z8CEOL4wM7AUwjPyIN/68SCcmfBlzNCyao\r\nrYtu29tItV41Ad0lkrJ3zMoemJcHk6UegGwBNiVM7v5J1bI3V4mq80blbkPz\r\nbjqIZJ7o/wJRfcTscOXduqc2nFFcpCvm2gVnE3oiqZTuH15TVESnsSlXcUfN\r\nMNc/w8pqu9lXx83ww/R+V/kNNVFUS04xlYRf9AtIszPtBpA67QJuQ53HvTYG\r\n9HD33EoXnAERO2fscddAVh6XphPlNZDvczPu6/25bjsuErf7MIjnYBxv9yRS\r\n+nsTFRAeRMEGzaNEOWgT6pigMoasi6PPwm0=\r\n=I3cM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/umd/index.js","module":"dist/commonjs/index.js","gitHead":"809dde21e6bb777d15453cf52dd7461197891d07","scripts":{"build":"gulp pack"},"typings":"dist/commonjs/index.d.ts","_npmUser":{"name":"zheeeng","email":"hi@zheeeng.me"},"_npmVersion":"6.14.16","description":"embed waiver widget for your site","directories":{},"_nodeVersion":"14.19.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"gulp":"^4.0.2","tslint":"^5.18.0","gulp-umd":"^2.0.0","gulp-clean":"^0.4.0","typescript":"^3.9.7","gulp-rename":"^1.4.0","gulp-uglify":"^3.0.2","gulp-replace":"^1.0.0","gulp-clean-css":"^4.2.0","gulp-typescript":"^5.0.1"},"_npmOperationalInternal":{"tmp":"tmp/waiver-widget_1.1.8_1652165009571_0.770326832197094","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"@waiverforever/waiver-widget","version":"1.2.0","keywords":["waiverforever","waiver","waiver widget"],"license":"MIT","_id":"@waiverforever/waiver-widget@1.2.0","maintainers":[{"name":"ll0jj0xx0","email":"jli@ariesapp.com"},{"name":"zheeeng","email":"hi@zheeeng.me"}],"dist":{"shasum":"a0d9a4f8df947fe43481620184471a8c77359357","tarball":"https://registry.npmjs.org/@waiverforever/waiver-widget/-/waiver-widget-1.2.0.tgz","fileCount":15,"integrity":"sha512-YRgd0p2XhH2JAbkjqSX/MmQyTDKqyTko5EbmB/V11HIfDnO65S8hibGFbjZeYr6ELhrDr34NCaKDMclhnBTriA==","signatures":[{"sig":"MEYCIQCWpTsM4DSsIsdwwtAoYlLgXZqoznpOUnRnq4LdABCRuwIhAJGPwYslGfZE3R/QZZQtvilcmLQsVnjula8eRmeRBnVx","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217769},"main":"dist/umd/index.js","_from":"file:waiverforever-waiver-widget-1.2.0.tgz","module":"dist/commonjs/index.js","scripts":{"build":"gulp pack"},"typings":"dist/commonjs/index.d.ts","_npmUser":{"name":"zheeeng","email":"hi@zheeeng.me"},"_resolved":"/private/var/folders/0j/73b7l3x16x34q1b7l7_32b8r0000gp/T/a5b8e03aea2d7ce4ee767495be64b7ac/waiverforever-waiver-widget-1.2.0.tgz","_integrity":"sha512-YRgd0p2XhH2JAbkjqSX/MmQyTDKqyTko5EbmB/V11HIfDnO65S8hibGFbjZeYr6ELhrDr34NCaKDMclhnBTriA==","_npmVersion":"8.19.4","description":"embed waiver widget for your site","directories":{},"_nodeVersion":"16.20.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"gulp":"^4.0.2","tslint":"^5.18.0","gulp-umd":"^2.0.0","gulp-clean":"^0.4.0","typescript":"^3.9.7","gulp-rename":"^1.4.0","gulp-uglify":"^3.0.2","gulp-replace":"^1.0.0","gulp-clean-css":"^4.2.0","gulp-typescript":"^5.0.1"},"_npmOperationalInternal":{"tmp":"tmp/waiver-widget_1.2.0_1708788615492_0.8005946781332614","host":"s3://npm-registry-packages"}},"1.2.1":{"name":"@waiverforever/waiver-widget","version":"1.2.1","keywords":["waiverforever","waiver","waiver widget"],"license":"MIT","_id":"@waiverforever/waiver-widget@1.2.1","maintainers":[{"name":"ll0jj0xx0","email":"jli@ariesapp.com"},{"name":"zheeeng","email":"hi@zheeeng.me"}],"dist":{"shasum":"b66b359a2b83acad6cb4586644ede82f5c08d876","tarball":"https://registry.npmjs.org/@waiverforever/waiver-widget/-/waiver-widget-1.2.1.tgz","fileCount":15,"integrity":"sha512-hMqO34qzr717XyjRCpz4ycRBMP+eKnRSBW9wCrGb5bt56GMRlx/oezc1C72mzSRKUbH3osmhRybgpNA54n+qYw==","signatures":[{"sig":"MEQCIEIPgQrwfBzRp5eGjisQ8ZQm8a5GpwQsi6QhWgr+NrAeAiAb8Vk+RPypfJ9w1UBJfX2CVTThV95TlrrFBMceEQwWGw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218070},"main":"dist/umd/index.js","_from":"file:waiverforever-waiver-widget-1.2.1.tgz","module":"dist/commonjs/index.js","scripts":{"build":"gulp pack"},"typings":"dist/commonjs/index.d.ts","_npmUser":{"name":"zheeeng","email":"hi@zheeeng.me"},"_resolved":"/private/var/folders/0j/73b7l3x16x34q1b7l7_32b8r0000gp/T/e723afd76af892f9e0406dcf2f140a96/waiverforever-waiver-widget-1.2.1.tgz","_integrity":"sha512-hMqO34qzr717XyjRCpz4ycRBMP+eKnRSBW9wCrGb5bt56GMRlx/oezc1C72mzSRKUbH3osmhRybgpNA54n+qYw==","_npmVersion":"8.19.4","description":"embed waiver widget for your site","directories":{},"_nodeVersion":"16.20.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"gulp":"^4.0.2","tslint":"^5.18.0","gulp-umd":"^2.0.0","gulp-clean":"^0.4.0","typescript":"^3.9.7","gulp-rename":"^1.4.0","gulp-uglify":"^3.0.2","gulp-replace":"^1.0.0","gulp-clean-css":"^4.2.0","gulp-typescript":"^5.0.1"},"_npmOperationalInternal":{"tmp":"tmp/waiver-widget_1.2.1_1708789058077_0.09298487834875258","host":"s3://npm-registry-packages"}},"1.3.0":{"name":"@waiverforever/waiver-widget","version":"1.3.0","keywords":["waiverforever","waiver","waiver widget"],"license":"MIT","_id":"@waiverforever/waiver-widget@1.3.0","maintainers":[{"name":"ll0jj0xx0","email":"jli@ariesapp.com"},{"name":"zheeeng","email":"hi@zheeeng.me"}],"dist":{"shasum":"ae9e19ef7e550edda176c8e2532a51d0da98a5e6","tarball":"https://registry.npmjs.org/@waiverforever/waiver-widget/-/waiver-widget-1.3.0.tgz","fileCount":21,"integrity":"sha512-3JSqgAcnclIOukj+4p30mdPcRMrhi2NS0Pr1diHOQ/GOgWZjP1ir6AHnaUObflmWJBvigjdw7EZwMz/44aSgSw==","signatures":[{"sig":"MEYCIQDC96+tv2TrwCDjrk5A0R+IBFAmsMQtn0kN+xMXhsXTzAIhANRRWIH1AaUwEKUNYymCg2aiGo7wb1eJ5fjO/WyqNJLv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":293259},"main":"dist/umd/index.js","_from":"file:waiverforever-waiver-widget-1.3.0.tgz","types":"dist/index.d.ts","module":"dist/esm/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.js","require":"./dist/commonjs/index.js"}},"scripts":{"build":"gulp pack"},"_npmUser":{"name":"zheeeng","email":"hi@zheeeng.me"},"_resolved":"/private/var/folders/0j/73b7l3x16x34q1b7l7_32b8r0000gp/T/27a2451c901b6021f80b54cd58c8ad2b/waiverforever-waiver-widget-1.3.0.tgz","_integrity":"sha512-3JSqgAcnclIOukj+4p30mdPcRMrhi2NS0Pr1diHOQ/GOgWZjP1ir6AHnaUObflmWJBvigjdw7EZwMz/44aSgSw==","_npmVersion":"10.9.2","description":"embed waiver widget for your site","directories":{},"_nodeVersion":"22.17.0","dependencies":{},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/waiver-widget_1.3.0_1753450555160_0.9222452388225306","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@waiverforever/waiver-widget","version":"1.3.1","keywords":["waiverforever","waiver","waiver widget"],"license":"MIT","_id":"@waiverforever/waiver-widget@1.3.1","maintainers":[{"name":"ll0jj0xx0","email":"jli@ariesapp.com"},{"name":"zheeeng","email":"hi@zheeeng.me"}],"dist":{"shasum":"9b7fbc2920f9c91915fda731ad55f2ffc77253fe","tarball":"https://registry.npmjs.org/@waiverforever/waiver-widget/-/waiver-widget-1.3.1.tgz","fileCount":21,"integrity":"sha512-SesAe+FJX+Ei2OIRb7Y2nyQH9mtjVa8OKLpsKUQ3iCjX2Sq2AeC8kFS53arjNx9Z99MaP+nFQPOPTsvGgHPFEQ==","signatures":[{"sig":"MEYCIQCf0DAY4k0dX7aY7/kfEnC5iAYlP+VFRGihYO/fQm9ihgIhALE2XrfWAwnQvEhZ1J8xdGAbvB9YEBuzfI0SW1rvnEg3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":294702},"main":"dist/umd/index.js","_from":"file:waiverforever-waiver-widget-1.3.1.tgz","types":"dist/index.d.ts","module":"dist/esm/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.js","require":"./dist/commonjs/index.js"}},"scripts":{"build":"gulp pack"},"_npmUser":{"name":"zheeeng","email":"hi@zheeeng.me"},"_resolved":"/private/var/folders/0j/73b7l3x16x34q1b7l7_32b8r0000gp/T/947e10ee63a54d44ceddd2dd99dc008b/waiverforever-waiver-widget-1.3.1.tgz","_integrity":"sha512-SesAe+FJX+Ei2OIRb7Y2nyQH9mtjVa8OKLpsKUQ3iCjX2Sq2AeC8kFS53arjNx9Z99MaP+nFQPOPTsvGgHPFEQ==","_npmVersion":"10.8.2","description":"embed waiver widget for your site","directories":{},"_nodeVersion":"20.18.3","dependencies":{},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/waiver-widget_1.3.1_1754540242116_0.7075350637833047","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@waiverforever/waiver-widget","version":"1.4.0","keywords":["waiverforever","waiver","waiver widget"],"license":"MIT","_id":"@waiverforever/waiver-widget@1.4.0","maintainers":[{"name":"ll0jj0xx0","email":"jli@ariesapp.com"},{"name":"zheeeng","email":"hi@zheeeng.me"}],"dist":{"shasum":"e566db2c4e0f4a49fc7e0d8558b4c03e592de59c","tarball":"https://registry.npmjs.org/@waiverforever/waiver-widget/-/waiver-widget-1.4.0.tgz","fileCount":20,"integrity":"sha512-piMh4L5ARv+s+B7+S0AECUiyvxjQvViFfp8sbG6Vu/7u94H7X4MLkLMTyF6+82/KNwNnJjBgeCU+H9SsiaDJBA==","signatures":[{"sig":"MEUCIE6V+e5cVWksD9lwZh9V3eoiqyWzcVlGweFCyjnhWwtxAiEAzycEY2hLBYzuOf5D5okqK4aPKUanhKEMhA5aUBIJHKQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":195130},"main":"dist/umd/index.js","types":"dist/index.d.ts","module":"dist/esm/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.js","require":"./dist/commonjs/index.js"}},"gitHead":"719f4d50aaea0dfa2bc8de94fabe7c06721b8f7c","scripts":{"build":"gulp pack"},"_npmUser":{"name":"zheeeng","email":"hi@zheeeng.me"},"_npmVersion":"10.8.2","description":"embed waiver widget for your site","directories":{},"_nodeVersion":"20.19.5","dependencies":{},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/waiver-widget_1.4.0_1763699908642_0.37094033915413305","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@waiverforever/waiver-widget","version":"1.4.1","description":"embed waiver widget for your site","keywords":["waiverforever","waiver","waiver widget"],"scripts":{"build":"gulp pack"},"main":"dist/umd/index.js","module":"dist/esm/index.js","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/commonjs/index.js","types":"./dist/index.d.ts"}},"types":"dist/index.d.ts","license":"MIT","dependencies":{},"_id":"@waiverforever/waiver-widget@1.4.1","gitHead":"865de643076ae319abcfb2a0d6c01574b2fb1c5b","_nodeVersion":"20.19.5","_npmVersion":"10.8.2","dist":{"integrity":"sha512-OLzN/+1FQS1AI1pINPd+UVzMr2nh5sKPfR9rkO/RMd8+pa85zlax8MR5IKAev29U8awynAG9zfWOBG3uW1cgJg==","shasum":"62fd7bbe9b93f931af7a8c451de5c29951f0f7b1","tarball":"https://registry.npmjs.org/@waiverforever/waiver-widget/-/waiver-widget-1.4.1.tgz","fileCount":20,"unpackedSize":195192,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDB8cxxghUcfutALlObmJ0wZEzVM9JNbDSjpVDYacm2TQIgQ6NpwFMQvZE9Mo2rVqH/NJYqKdqmzioANrCFaPoX8+o="}]},"_npmUser":{"name":"zheeeng","email":"hi@zheeeng.me"},"directories":{},"maintainers":[{"name":"ll0jj0xx0","email":"jli@ariesapp.com"},{"name":"zheeeng","email":"hi@zheeeng.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/waiver-widget_1.4.1_1764562611694_0.3113113720856968"},"_hasShrinkwrap":false}},"time":{"created":"2022-05-10T06:41:07.022Z","modified":"2025-12-01T04:16:52.137Z","0.0.13":"2019-07-18T01:26:29.235Z","0.0.14":"2019-08-05T02:41:33.642Z","0.0.15":"2019-08-05T02:59:15.313Z","1.0.0":"2019-08-05T05:31:05.398Z","1.0.1":"2019-08-05T07:10:05.603Z","1.0.2":"2019-08-05T07:15:09.113Z","1.0.3":"2019-08-05T07:43:00.819Z","1.0.4":"2019-08-05T10:27:58.049Z","1.0.5":"2019-08-05T11:00:28.403Z","1.0.6":"2020-03-06T05:17:37.032Z","1.0.7":"2020-07-20T03:52:02.575Z","1.1.0":"2020-12-29T20:58:07.505Z","1.1.1":"2020-12-29T21:10:59.111Z","1.1.2":"2020-12-31T06:57:13.042Z","1.1.3":"2021-01-02T04:53:38.472Z","1.1.4":"2021-02-24T06:44:41.036Z","1.1.5":"2021-08-15T02:25:24.780Z","1.1.7":"2022-05-10T06:41:07.398Z","1.1.8":"2022-05-10T06:43:29.792Z","1.2.0":"2024-02-24T15:30:15.665Z","1.2.1":"2024-02-24T15:37:38.326Z","1.3.0":"2025-07-25T13:35:55.396Z","1.3.1":"2025-08-07T04:17:22.299Z","1.4.0":"2025-11-21T04:38:28.853Z","1.4.1":"2025-12-01T04:16:51.907Z"},"license":"MIT","keywords":["waiverforever","waiver","waiver widget"],"description":"embed waiver widget for your site","maintainers":[{"name":"ll0jj0xx0","email":"jli@ariesapp.com"},{"name":"zheeeng","email":"hi@zheeeng.me"}],"readme":"# WaiverForever Waiver Widget\n\nAdding a waiver widget to your website to allow participants to sign without leaving the page.\n\n[![npm version](https://img.shields.io/npm/v/@waiverforever/waiver-widget.svg)](https://www.npmjs.com/package/@waiverforever/waiver-widget)\n\n## Steps\n\n1. Choose the preferred waiver templates from [your templates](https://app.waiverforever.com/templates).\n2. Go to Template Settings page -> Waiver Widget tab.\n3. Enable the widgets and configure them.\n4. Keep the `templateId`s for the next steps.\n5. There are multiple ways of embedding our waiver widget into your website:\n\n### Want to add it to your WordPress website? [Click here to see our tutorial](https://help.waiverforever.com/hc/en-us/articles/360015185394-How-to-add-waiver-widget-to-wordpress-website-)\n\n### Easy route: reference the widget script from CDN\n\nWe can load the widget automatically or manually.\n\n**For automatically loading**, append the following HTML snippet into the `body` tag of your website:\n\n```html\n<script src=\"https://cdn.waiverforever.com/qs3/ew.js?templateId=${templateId1,templateId2}\"></script>\n```\n\n1. Widget with its trigger button will be mounted as soon as the script is loaded. It exposes the `widget instance` as a global JavaScript variable named `waiverWidget` (note: its initial letter is lowercase) and `WF_EMBED_WAIVER` (for backward compatibility).\n2. If you need multiple waivers be signed one by one, you can set multiple template IDs by join them with comma. e.g. `templateId=t123,t456`\n3. If you you want to enable the prefill feature for the waiver, you can set the `prefill_id` query parameter to the value of the prefill data. e.g. `templateId=t123&prefill_id=p456`\n4. The widget instance has a hook method `.onReady`, which you can use to perform extra operations if needed.\n5. If you don't like the default triggering button and want to create your own way to trigger the waiver modal, simply adding a query `sdkMode=yes` to disable it:\n\n  ```html\n  <script src=\"https://cdn.waiverforever.com/qs3/ew.js?templateId=${templateId1,templateId2}&sdkMode=yes\"></script>\n  ```\n\n**For manually loading**, append the following HTML snippet into the `body` tag of your website:\n\n```html\n<script src=\"https://cdn.waiverforever.com/qs3/ew.js\"></script>\n```\n\n1. If the script's `src` doesn't contain a specified `templateId`, the script exposes the `widget constructor` as a global JavaScript variable named `WaiverWidget` (note: its initial letter is uppercase).\n2. You could manually initialize the `widget instance` on demand. Please make sure performing any extra operations after the `.onReady` hook is triggered.\n\n**You could also load the widget script dynamically**, e.g. The AMD way:\n\n```js\nrequire(['https://cdn.waiverforever.com/qs3/ew.js'], function (WaiverWidget) {\n  const widget = new WaiverWidget({\n    templateId: `${templateId}`, // You can also pass multiple template ids as an array, they will be displayed one after signing one.\n    sdkMode: true\n  })\n\n  widget.onReady(function(){\n    myCustomButton.addEventListener('click', function () {\n      widget.toggle()\n    })\n  })\n})\n```\n\n### Importing the widget into the module system\n\nInstall the widget by `npm` or `yarn`:\n\n```sh\n# npm\nnpm i --save @waiverforever/waiver-widget\n# yarn\nyarn add @waiverforever/waiver-widget\n```\n\n```js\n// app.js\nimport WaiverWidget from '@waiverforever/waiver-widget'\n\nconst widget = new WaiverWidget({\n  templateId: `${templateId}`, // You can also pass multiple template ids as an array, they will be displayed one after signing one.\n  sdkMode: true\n})\n\nwidget.onReady(function () {\n  myCustomButton.addEventListener('click', function () {\n    widget.toggle()\n  })\n})\n```\n\n1. TypeScript is fully supported.\n2. Definitions bring TS/JS users the better developing experience.\n3. Could be used in ES modules or CommonJS standards systems.\n4. Could be dynamically loaded by third-party bundler's code splitting feature.\n\n## Reference\n\n### Terms\n\n* **widget constructor**: In manually loading or dynamically loading scenarios, the script exposes a constructor named `WaiverWidget` as a global variable. In a module system, we could `require` or `import` it directly.\n* **widget instance**: Instance of **widget constructor**. We could register events to its hooks and manipulate the instance through its methods.\n* **SDK mode**: Widget without the default triggering button, you need to programmatically trigger the waiver modal.\n* **window mode**: When enabled, instead of showing waiver modal, a new waiver page will be opened. If you passed multiple waiver template ID the window mode will be turn off.\n* **embed mode**: When enabled, the waiver modal will be embedded into the current page and mounted to the target element.\n\n## API\n\n### WaiverWidget constructor\n\n```ts\ninterface WidgetOption {\n    templateId: string | string[]; // required, template id, or pass multiple ids\n    sdkMode?: boolean; // by default it is false\n    windowMode?: boolean; // by default it depends on the useragent (true for mobile devices, false for desktops)\n    stylesheetURL?: string; // specify the stylesheet URL of the embedded waiver\n    embed?: boolean; // by default it is false\n    embedTargetId?: string; // specify the target element id for the embedded waiver, by default it is 'wf-embed-waiver-target'\n}\n\ntype WaiverWidgetConstructor = new (option?: WidgetOption): IWidget;\n```\n\n### WaiverWidget instance\n\n```ts\ninterface IWidget {\n    closeEmbedWaiverModal: () => void;  // Legacy API, for backward compatibility\n    show: () => void; // Show widget modal and hide trigger button(in non-sdk mode)\n    close: () => void; // Opposite operation of show()\n    toggle: () => void; // Toggle between show and close methods\n    destroy: () => void; // Destroy the current widget instance. After ensuring previous widget instance is destroyed, we can re-initialize another widget instance.\n    onShowed: (callback: () => void) => void; // Event registry for modal showed hook\n    onReady: (callback: (widget: IWidget) => void) => void; // Event registry for widget instance ready hook, an interactive widget instance will be passed to the registered hook\n    onLoad: (callback: (signedCount: number) => void) => void; // Event registry for waiver page loading in the SDK mode\n    onSigned: (callback: (signedCount: number) => void) => void; // Event registry for waiver signing success hook\n    onClosed: (callback: (signedCount: number) => void) => void; // Event registry for modal close hook, the registered callback will receives a boolean type argument presents whether the user signed or not\n    onDestroyed: (callback: () => void) => void; // Event registry for widget destroyed hook\n    onAction: (callback: (action: Action) => void) => void; // Added from v1.3.0, Event registry for waiver action hook, the registered callback will receives a string type argument presents the action of the widget\n}\n\ntype Action =\n| {\n    type: 'SHOW', // widget modal showed event, it doesn't trigger when the widget is in the embed mode\n}\n| {\n    type: 'READY' // widget ready event\n    payload: {\n      widget: IWidget, // widget instance\n    }\n}\n| {\n    type: 'LOAD' // waiver loaded event\n    payload: {\n      signedCount: number, // Signed count\n    }\n}\n| {\n  type: 'SIGNED', // Waiver signed event\n  payload: {\n    templateId: string, // Template ID\n    referenceNumber: string, // Reference Number\n    waiverId: string, // Waiver ID\n    waiverQRLink: string, // Waiver QR Link\n    signedCount: number, // Signed count\n  }\n}\n| {\n    type: 'CLOSE' // Waiver modal closed event, it doesn't trigger when the widget is in the embed mode\n    payload: {\n      signedCount: number, // Signed count\n    }\n}\n| {\n    type: 'DESTROY' // widget destroyed event\n}\n```\n\n### Usage\n\n```ts\nconst widget = new WaiverWidget({\n    templateId: `${templateId}`,\n})\n\nwidget.onReady(function () {\n  console.log('widget ready')\n})\nwidget.onSigned(function () {\n  console.log('signed!')\n})\nwidget.onClosed(function(signed){\n  console.log('close modal, signed:', signed)\n})\nwidget.onShowed(function () {\n  console.log('onShowed')\n})\nwidget.onDestroyed(function () {\n  console.log('onDestroyed')\n})\nwidget.onAction(function (action) {\n  console.log('waiver action:', action)\n\n  switch (action.type) {\n    case 'SHOW':\n      console.log('waiver showed')\n      break\n    case 'READY':\n      console.log('waiver ready', action.payload.widget)\n      break\n    case 'LOAD':\n      console.log('waiver loaded')\n      console.log('signed count:', action.payload.signedCount)\n      break\n    case 'SIGNED':\n      console.log('waiver signed')\n      console.log('signed count:', action.payload.signedCount)\n      console.log('template id:', action.payload.templateId)\n      console.log('reference number:', action.payload.referenceNumber)\n      console.log('waiver id:', action.payload.waiverId)\n      console.log('waiver qr link:', action.payload.waiverQRLink)\n      break\n    case 'CLOSE':\n      console.log('waiver closed')\n      console.log('signed count:', action.payload.signedCount)\n      break\n    case 'DESTROY':\n      console.log('waiver destroyed')\n      break\n  }\n})\n```\n\n## Protips\n\nIf you get bored of using the callback style `.onReady` hook and others, and the `async/await` syntax is available in your runtime, here are some tips for you.\n\nAll of the widget APIs are `thenable/awaitable`! It means you can use the `widget instance`, `instance methods` and `event hooks` in a synchronous-like way.\n\n### Thenable/awaitable instance\n\nAwaiting the response of the widget instance, we get a ready state (fully-interactive) instance.\n\n```js\n// note: use in async function, or some `top-level await` syntax implemented environment\nasync function appDidMount () {\n  const widget = await new WaiverWidget({\n    templateId: `${templateId}`, // You can also pass multiple template ids  as an array, they will be displayed one after signing one.\n  })\n\n  widget.show() // widget is in ready state\n}\n```\n\n### Thenable/awaitable instance methods\n\nAwaiting a response of a widget method, we receive the callback payload of the method's corresponding event hook.\n\n```js\nasync function appShowWaiverInstruction () {\n  // `.onShowed` event has no return value\n  await widget.show()\n  sendLog('waiver showed')\n}\nasync function appCloseWaiverInstruction () {\n  // We get the signed count, which is the `.onClosed` event's callback payload\n  const signedCount = await widget.close()\n  sendLog('waiver closed, with signed count: ' + signedCount)\n}\n```\n\n### Thenable/awaitable event hooks\n\nA registered event handler will be triggered whenever the event occurs. An awaited event hook will only respond to the event payload for once.\n\n```js\nasync function appDidMount () {\n  // ... initialize widget instance ...\n  widget.onSigned(async function () {\n    // signedCount presents the number you signed successfully\n    const signedCount = await widget.onClosed\n    // Log will be sent under the condition that waiver is signed and then the modal is closed\n    sendLog('waiver closed, with signed count: ' + signedCount)\n  })\n}\n```\n\nActually, awaiting a response of a event hook is rarely used.\n","readmeFilename":"README.md"}