{"_id":"@amanwebdev/sudoku-generator","_rev":"13-151452d2cca20f998026d5980a9915b4","name":"@amanwebdev/sudoku-generator","dist-tags":{"latest":"1.3.0"},"versions":{"1.0.0":{"name":"@amanwebdev/sudoku-generator","version":"1.0.0","keywords":["sudoku","generator"],"author":{"name":"Aman","email":"webdevaman2@gmail.com"},"license":"MIT","_id":"@amanwebdev/sudoku-generator@1.0.0","maintainers":[{"name":"amanwebdev","email":"webdevaman2@gmail.com"}],"dist":{"shasum":"29d939db49d91f4add28b69919b572441ead8006","tarball":"https://registry.npmjs.org/@amanwebdev/sudoku-generator/-/sudoku-generator-1.0.0.tgz","fileCount":4,"integrity":"sha512-g5Wp9YCO+xhJDPmEDL9oAeRwLHM1mzi9moww5GfUrWX6PtNGjcqg1UZleFz0KfEFrh8BQH+3QaqKXHYJu5Iepw==","signatures":[{"sig":"MEUCIQCG2hgtFuiySktkwDXrt754wV/RmEXMJHPt5sYNYOeymQIgUvU9tVRnyDgfuS3gJO/SRIhC+dMs5IxniHB5QWdbeYA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6512},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"97bd7d3c1934068ad03fb9482d5e64f701c18146","scripts":{"build":"tsc","start":"ts-node src/index.ts"},"_npmUser":{"name":"amanwebdev","email":"webdevaman2@gmail.com"},"_npmVersion":"11.4.2","description":"Sudoku generator","directories":{},"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.8.3","@types/node":"^24.1.0"},"_npmOperationalInternal":{"tmp":"tmp/sudoku-generator_1.0.0_1753469763462_0.3144196468842304","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@amanwebdev/sudoku-generator","version":"1.0.1","keywords":["sudoku","generator"],"author":{"name":"Aman","email":"webdevaman2@gmail.com"},"license":"MIT","_id":"@amanwebdev/sudoku-generator@1.0.1","maintainers":[{"name":"amanwebdev","email":"webdevaman2@gmail.com"}],"homepage":"https://github.com/amanwebdev2/sudoku-generator#readme","bugs":{"url":"https://github.com/amanwebdev2/sudoku-generator/issues"},"dist":{"shasum":"89f83accc896729ba9fa4f47d83dffd184c9d133","tarball":"https://registry.npmjs.org/@amanwebdev/sudoku-generator/-/sudoku-generator-1.0.1.tgz","fileCount":5,"integrity":"sha512-Y9J4GYglREmhcW6iB1bMbjhVpUPPwZpm370NUBVllkZDXr09n0qioaAVm1mrsaQTMvc3Qd8ys2IFORNURSU+WQ==","signatures":[{"sig":"MEQCIC69sfrdovl2RtIRqnCbuU2PTccOL2i9w737Sw5h0WWNAiAWf3GVjNnAitHXQl8AxaKdisLbzgZAvO9lbPZv8LxIwQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7709},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"ca06175678629374bc39796a93e039caa55ee2e7","scripts":{"build":"tsc","start":"ts-node src/index.ts"},"_npmUser":{"name":"amanwebdev","email":"webdevaman2@gmail.com"},"repository":{"url":"git+https://github.com/amanwebdev2/sudoku-generator.git","type":"git"},"_npmVersion":"11.4.2","description":"Sudoku generator","directories":{},"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.8.3","@types/node":"^24.1.0"},"_npmOperationalInternal":{"tmp":"tmp/sudoku-generator_1.0.1_1753470208316_0.0658596618236773","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@amanwebdev/sudoku-generator","version":"1.0.2","keywords":["sudoku","generator"],"author":{"name":"Aman","email":"webdevaman2@gmail.com"},"license":"MIT","_id":"@amanwebdev/sudoku-generator@1.0.2","maintainers":[{"name":"amanwebdev","email":"webdevaman2@gmail.com"}],"homepage":"https://github.com/AmanWebDev2/sudoku-gen#readme","bugs":{"url":"https://github.com/AmanWebDev2/sudoku-gen/issues"},"dist":{"shasum":"9ed3582eb047991930c5de893e775a0f0ae462d1","tarball":"https://registry.npmjs.org/@amanwebdev/sudoku-generator/-/sudoku-generator-1.0.2.tgz","fileCount":3,"integrity":"sha512-MSTgY7BJPCU59j3qlyjZji6t0r+QGXkTMDarNbfJjxC5ZbNE/Xi9iCMzwK16Bq8Cxv2h9vurvE05ogSnAbU+qg==","signatures":[{"sig":"MEUCIGVTPopktgzjTtgUaLAj2OmeQbKz6g8DhneCO7uj9n7ZAiEAozNuAL2KLSd5Z9xFzhB41CcpD7D5hOShqZ1t7SL/2LA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2858},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"b95fc1a5723ae4288b97b3f575728ab843b6bab7","scripts":{"test":"jest","build":"tsc","start":"ts-node src/index.ts"},"_npmUser":{"name":"amanwebdev","email":"webdevaman2@gmail.com"},"repository":{"url":"git+https://github.com/AmanWebDev2/sudoku-gen.git","type":"git"},"_npmVersion":"11.4.2","description":"Sudoku generator","directories":{},"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.5","ts-jest":"^29.4.0","ts-node":"^10.9.2","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.1.0"},"_npmOperationalInternal":{"tmp":"tmp/sudoku-generator_1.0.2_1754066817912_0.5907840936106028","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@amanwebdev/sudoku-generator","version":"1.0.3","keywords":["sudoku","generator"],"author":{"name":"Aman","email":"webdevaman2@gmail.com"},"license":"MIT","_id":"@amanwebdev/sudoku-generator@1.0.3","maintainers":[{"name":"amanwebdev","email":"webdevaman2@gmail.com"}],"homepage":"https://github.com/AmanWebDev2/sudoku-gen#readme","bugs":{"url":"https://github.com/AmanWebDev2/sudoku-gen/issues"},"dist":{"shasum":"1476c090f4ac2f114093dc3b997769d0811f86a6","tarball":"https://registry.npmjs.org/@amanwebdev/sudoku-generator/-/sudoku-generator-1.0.3.tgz","fileCount":23,"integrity":"sha512-1lWz9bpUP0PtKyDDUD+WAMc5Ta+OjmtAI0NDzkXHwWXiSBum254P+6IgbtQFXTHB4vV2aplTBsCA5IT3/h3XdA==","signatures":[{"sig":"MEYCIQDs9hTI6fIX8pdCap4dAdo5Hsi/N4XNMTP78m+9ZeiLsAIhAIyybExrN6BbSc76HuhkA7wo+wnD7akW1AMq7SoXKfZT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24667},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"46a315370ced7045701967b7d6343d343bd4b76e","scripts":{"test":"jest","build":"tsc","start":"ts-node src/index.ts"},"_npmUser":{"name":"amanwebdev","email":"webdevaman2@gmail.com"},"repository":{"url":"git+https://github.com/AmanWebDev2/sudoku-gen.git","type":"git"},"_npmVersion":"11.4.2","description":"Sudoku generator","directories":{},"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.5","ts-jest":"^29.4.0","ts-node":"^10.9.2","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.1.0"},"_npmOperationalInternal":{"tmp":"tmp/sudoku-generator_1.0.3_1754071339579_0.6334844133592594","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@amanwebdev/sudoku-generator","version":"1.1.0","keywords":["sudoku","generator"],"author":{"name":"Aman","email":"webdevaman2@gmail.com"},"license":"MIT","_id":"@amanwebdev/sudoku-generator@1.1.0","maintainers":[{"name":"amanwebdev","email":"webdevaman2@gmail.com"}],"homepage":"https://github.com/AmanWebDev2/sudoku-gen#readme","bugs":{"url":"https://github.com/AmanWebDev2/sudoku-gen/issues"},"dist":{"shasum":"c04716d264b05e3d8672e1b0206140929caf7097","tarball":"https://registry.npmjs.org/@amanwebdev/sudoku-generator/-/sudoku-generator-1.1.0.tgz","fileCount":9,"integrity":"sha512-DRq9RjCDJjxZd/B2TK7KAzHeCG1mHyREudsHpE/A+cSBFdGAlY4jWXg5t6B1/OzdGNOHxhglvrn7D3PlwVe97Q==","signatures":[{"sig":"MEUCIAIEVDDyhF+omlDSiB2fy+s1wpC6eVWTC0Q8DLdsD0Y0AiEAhWRK+T0wLX+7/ed+yV3mYkcPH0Jxv5xJBEBHL78Mjcc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23314},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"bfb4e0ed74e73b875e15b8bd053df761695d9132","scripts":{"test":"jest","build":"tsc","start":"ts-node src/index.ts"},"_npmUser":{"name":"amanwebdev","email":"webdevaman2@gmail.com"},"repository":{"url":"git+https://github.com/AmanWebDev2/sudoku-gen.git","type":"git"},"_npmVersion":"11.4.2","description":"Sudoku generator","directories":{},"_nodeVersion":"22.15.0","dependencies":{"jspdf":"^2.5.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.5","ts-jest":"^29.4.0","ts-node":"^10.9.2","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.1.0"},"_npmOperationalInternal":{"tmp":"tmp/sudoku-generator_1.1.0_1754422150578_0.5135998174390162","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@amanwebdev/sudoku-generator","version":"1.1.1","keywords":["sudoku","generator"],"author":{"name":"Aman","email":"webdevaman2@gmail.com"},"license":"MIT","_id":"@amanwebdev/sudoku-generator@1.1.1","maintainers":[{"name":"amanwebdev","email":"webdevaman2@gmail.com"}],"homepage":"https://sudokugenerator.vercel.app/","bugs":{"url":"https://github.com/AmanWebDev2/sudoku-gen/issues"},"dist":{"shasum":"b7f615eb89f3d922d8e355c4d624018f6a26ec1b","tarball":"https://registry.npmjs.org/@amanwebdev/sudoku-generator/-/sudoku-generator-1.1.1.tgz","fileCount":9,"integrity":"sha512-Ma+tjbkYNbQMsBr5b4pWGrx6k2I1nELAHy2IgZudn0Bjsq6TeaTSdqPiFhr7jdk+t+CQpaig68lOXxpS6Gn9tg==","signatures":[{"sig":"MEQCIFQMJHbCQPNyO4ceqyYxL9UbHqnx/o9n8KcUguyyVFptAiBfBGBSmlx9nPJPat8nDAogTFtMH0dof9gwJti+Kwe/bQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23301},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"78cacd7a546042c5f7136553bf70f933b68ad47a","scripts":{"test":"jest","build":"tsc","start":"ts-node src/index.ts"},"_npmUser":{"name":"amanwebdev","email":"webdevaman2@gmail.com"},"repository":{"url":"git+https://github.com/AmanWebDev2/sudoku-gen.git","type":"git"},"_npmVersion":"11.4.2","description":"Sudoku generator","directories":{},"_nodeVersion":"22.15.0","dependencies":{"jspdf":"^2.5.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.5","ts-jest":"^29.4.0","ts-node":"^10.9.2","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.1.0"},"_npmOperationalInternal":{"tmp":"tmp/sudoku-generator_1.1.1_1754426914728_0.14840051379931762","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@amanwebdev/sudoku-generator","version":"1.1.2","keywords":["sudoku","generator"],"author":{"name":"Aman","email":"webdevaman2@gmail.com"},"license":"MIT","_id":"@amanwebdev/sudoku-generator@1.1.2","maintainers":[{"name":"amanwebdev","email":"webdevaman2@gmail.com"}],"homepage":"https://sudokugenerator.vercel.app/","bugs":{"url":"https://github.com/AmanWebDev2/sudoku-gen/issues"},"dist":{"shasum":"949b6dca28408457871803bdde8878905a87a25f","tarball":"https://registry.npmjs.org/@amanwebdev/sudoku-generator/-/sudoku-generator-1.1.2.tgz","fileCount":123,"integrity":"sha512-0wv2V/JYqdOWfEsxR5lJ4eowOdYGoHpjVr5ddiqrKGDvE6wBpvOAkgx8Eaj8i+Tu0deqg8oDIEUZ6UvzqFuQOw==","signatures":[{"sig":"MEUCIQC/qstZYAitTt3ivUwkNgO69OGJStjECwvB2goc2NTnBQIgJ1YIXz+zJ69j/3hNVNCAakCVqeL4mEoByYRpOPlGZTc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":350625},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"603e0fe700d44dd2d55b0022588bd0c281eefb24","scripts":{"test":"jest","build":"tsc","start":"ts-node src/index.ts"},"_npmUser":{"name":"amanwebdev","email":"webdevaman2@gmail.com"},"repository":{"url":"git+https://github.com/AmanWebDev2/sudoku-gen.git","type":"git"},"_npmVersion":"11.4.2","description":"Sudoku generator","directories":{},"_nodeVersion":"22.15.0","dependencies":{"jspdf":"^2.5.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.5","ts-jest":"^29.4.0","ts-node":"^10.9.2","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.1.0"},"_npmOperationalInternal":{"tmp":"tmp/sudoku-generator_1.1.2_1754458042054_0.5684978276892607","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@amanwebdev/sudoku-generator","version":"1.1.3","keywords":["sudoku","generator"],"author":{"name":"Aman","email":"webdevaman2@gmail.com"},"license":"MIT","_id":"@amanwebdev/sudoku-generator@1.1.3","maintainers":[{"name":"amanwebdev","email":"webdevaman2@gmail.com"}],"homepage":"https://sudokugenerator.vercel.app/","bugs":{"url":"https://github.com/AmanWebDev2/sudoku-gen/issues"},"dist":{"shasum":"799ca0cbb2df371f202c102f20faabf0da24e165","tarball":"https://registry.npmjs.org/@amanwebdev/sudoku-generator/-/sudoku-generator-1.1.3.tgz","fileCount":7,"integrity":"sha512-9d/7d0ib7jwlCGJX+YzA/FYd8Zr67dquLKXd+ytISjIY3sk90IM7y7dmS6Cv2WEXqTNq5g/agYiUdlr2UKqBHg==","signatures":[{"sig":"MEYCIQDIq+luYp2G6TnopkwaCJYB1nZRUGEkTPcGoqt3JgSxEQIhAIb7aaWp95uwN3U5KXiu/OoCViYkHvCfnwXJqna4SBTb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21863},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"76d708fbf1f314de1efd17396692cd826b1f416e","scripts":{"test":"jest","build":"tsc","start":"ts-node src/index.ts"},"_npmUser":{"name":"amanwebdev","email":"webdevaman2@gmail.com"},"repository":{"url":"git+https://github.com/AmanWebDev2/sudoku-gen.git","type":"git"},"_npmVersion":"11.4.2","description":"Sudoku generator","directories":{},"_nodeVersion":"22.15.0","dependencies":{"jspdf":"^2.5.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.5","ts-jest":"^29.4.0","ts-node":"^10.9.2","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.1.0"},"_npmOperationalInternal":{"tmp":"tmp/sudoku-generator_1.1.3_1754458149046_0.2342961176564906","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@amanwebdev/sudoku-generator","version":"1.1.4","keywords":["sudoku","generator"],"author":{"name":"Aman","email":"webdevaman2@gmail.com"},"license":"MIT","_id":"@amanwebdev/sudoku-generator@1.1.4","maintainers":[{"name":"amanwebdev","email":"webdevaman2@gmail.com"}],"homepage":"https://sudokugenerator.vercel.app/","bugs":{"url":"https://github.com/AmanWebDev2/sudoku-gen/issues"},"dist":{"shasum":"30e38b1403b1f658cea2e1ddf00a6a37ecd43edb","tarball":"https://registry.npmjs.org/@amanwebdev/sudoku-generator/-/sudoku-generator-1.1.4.tgz","fileCount":7,"integrity":"sha512-u2f5eu/qwkRu1EQ4FN9MGDjWZlIiU4J1s6eQjFp+iqpk66DGdw1cTj0zcdlQp+WIyaBJR6e5kzCdu1ssQwyg1Q==","signatures":[{"sig":"MEUCIFfJhmQqMP3Zeegxxdmkjfciwq8x+E6TDhBtGwLDuW4oAiEA0j8hIbBBfx6WtPrzi0wzlwatAFISIWrzpksCx8+oOSg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24908},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"aca2371da895ee2bbd43239fafd61f687aca17ad","scripts":{"test":"jest","build":"tsc","start":"ts-node src/index.ts"},"_npmUser":{"name":"amanwebdev","email":"webdevaman2@gmail.com"},"repository":{"url":"git+https://github.com/AmanWebDev2/sudoku-gen.git","type":"git"},"_npmVersion":"11.4.2","description":"Sudoku generator","directories":{},"_nodeVersion":"22.15.0","dependencies":{"jspdf":"^2.5.2","canvas":"^3.1.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.5","ts-jest":"^29.4.0","ts-node":"^10.9.2","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.1.0"},"_npmOperationalInternal":{"tmp":"tmp/sudoku-generator_1.1.4_1754649283816_0.5122238903997438","host":"s3://npm-registry-packages-npm-production"}},"1.1.6":{"name":"@amanwebdev/sudoku-generator","version":"1.1.6","keywords":["sudoku","generator"],"author":{"name":"Aman","email":"webdevaman2@gmail.com"},"license":"MIT","_id":"@amanwebdev/sudoku-generator@1.1.6","maintainers":[{"name":"amanwebdev","email":"webdevaman2@gmail.com"}],"homepage":"https://sudokugenerator.vercel.app/","bugs":{"url":"https://github.com/AmanWebDev2/sudoku-gen/issues"},"dist":{"shasum":"0dd91ab5f6a2a833c20aaf56648658071c8d1ee5","tarball":"https://registry.npmjs.org/@amanwebdev/sudoku-generator/-/sudoku-generator-1.1.6.tgz","fileCount":7,"integrity":"sha512-h1rTb9Sm1OhXv4PMKhdoPwVIW6MEJkuFBeqkdtBPixVk8yRnmUpm+QgBST35aLCtArheliUrSyzhbofOCobu0A==","signatures":[{"sig":"MEQCIEyAlWLbfdjnMpiU3SdQm39fLRDLDtX4Z3sneE19Qs3GAiBb2XKcgIM7Il7WNbEyvmZMe2wNmhOXKdl+9iETmAquWA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26721},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"702ef6da3fc801c43c5b2a1ee5b3f6e7593eceaa","scripts":{"test":"jest","build":"tsc","start":"ts-node src/index.ts"},"_npmUser":{"name":"amanwebdev","email":"webdevaman2@gmail.com"},"repository":{"url":"git+https://github.com/AmanWebDev2/sudoku-gen.git","type":"git"},"_npmVersion":"11.4.2","description":"Sudoku generator","directories":{},"_nodeVersion":"22.15.0","dependencies":{"jspdf":"^2.5.2","canvas":"^3.1.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.5","ts-jest":"^29.4.0","ts-node":"^10.9.2","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.1.0"},"_npmOperationalInternal":{"tmp":"tmp/sudoku-generator_1.1.6_1754650701870_0.23980713662618602","host":"s3://npm-registry-packages-npm-production"}},"1.1.7":{"name":"@amanwebdev/sudoku-generator","version":"1.1.7","keywords":["sudoku","generator"],"author":{"name":"Aman","email":"webdevaman2@gmail.com"},"license":"MIT","_id":"@amanwebdev/sudoku-generator@1.1.7","maintainers":[{"name":"amanwebdev","email":"webdevaman2@gmail.com"}],"homepage":"https://sudokugenerator.vercel.app/","bugs":{"url":"https://github.com/AmanWebDev2/sudoku-gen/issues"},"dist":{"shasum":"ba9cd90b1ee0abeac077caf5adb72855cc55cf12","tarball":"https://registry.npmjs.org/@amanwebdev/sudoku-generator/-/sudoku-generator-1.1.7.tgz","fileCount":27,"integrity":"sha512-X3Cs/hsC0yDzExZY6NmNHgs68i8FjiFY1kVQUQ03YQ1IIVuaR/LpxlNoNQqhV77XM1Aa7z3iTYZcv640oF8Udg==","signatures":[{"sig":"MEUCIQDciTayYIvIQB6fB6Y8v4LsdAfX2LL9MTOR2BBXBnYj9AIgEVECYSauXovX619mG85pMc0HbazuVLkhDkRT3zn5Xc0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52653},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./pdf":{"types":"./dist/pdf.d.ts","default":"./dist/pdf.js","require":"./dist/pdf.js"},"./core":{"types":"./dist/core.d.ts","default":"./dist/core.js","require":"./dist/core.js"},"./image":{"types":"./dist/image.d.ts","default":"./dist/image.js","require":"./dist/image.js"},"./package.json":"./package.json"},"gitHead":"83ebf4a90b199ff50038e8ebc817b50af7298b27","scripts":{"test":"jest","build":"tsc -p tsconfig.build.json","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","start":"ts-node src/index.ts","prepack":"npm run clean && npm test -- --runInBand && npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"amanwebdev","email":"webdevaman2@gmail.com"},"repository":{"url":"git+https://github.com/AmanWebDev2/sudoku-gen.git","type":"git"},"_npmVersion":"11.4.2","description":"Sudoku generator","directories":{},"sideEffects":false,"_nodeVersion":"22.15.0","dependencies":{"jspdf":"^4.2.1","canvas":"^3.2.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.5","ts-jest":"^29.4.0","ts-node":"^10.9.2","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.1.0"},"_npmOperationalInternal":{"tmp":"tmp/sudoku-generator_1.1.7_1787165356457_0.6034280157331346","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@amanwebdev/sudoku-generator","version":"1.2.0","keywords":["sudoku","generator","solver","validator","puzzle","pdf"],"author":{"name":"Aman","email":"webdevaman2@gmail.com"},"license":"MIT","_id":"@amanwebdev/sudoku-generator@1.2.0","maintainers":[{"name":"amanwebdev","email":"webdevaman2@gmail.com"}],"homepage":"https://sudokugenerator.vercel.app/","bugs":{"url":"https://github.com/AmanWebDev2/sudoku-gen/issues"},"dist":{"shasum":"7eb3dce1459f11a6e3ec4fbe4b683678aef480b4","tarball":"https://registry.npmjs.org/@amanwebdev/sudoku-generator/-/sudoku-generator-1.2.0.tgz","fileCount":28,"integrity":"sha512-lE+dC5vREjnBjtn6ggLH5WD+EbKjg+WL2s7YmSbKo15lb/2Qnyv5bAjDu6WpcD0t9NyhfGjv7abhKciFV0rUCQ==","signatures":[{"sig":"MEQCICKrBAghStF9deAwrRAmoWq3V5cJWte5uDdZVHwW6PuJAiATTHPXI8UKOoO791Dtz2HXBkK5g4eUPSbLFlG57CteDA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74249},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./pdf":{"types":"./dist/pdf.d.ts","default":"./dist/pdf.js","require":"./dist/pdf.js"},"./core":{"types":"./dist/core.d.ts","default":"./dist/core.js","require":"./dist/core.js"},"./image":{"types":"./dist/image.d.ts","default":"./dist/image.js","require":"./dist/image.js"},"./package.json":"./package.json"},"gitHead":"ace85a95e3b43b9fba53c8d4b418d24158b1604c","scripts":{"test":"jest","build":"tsc -p tsconfig.build.json","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","start":"ts-node src/index.ts","prepack":"npm run clean && npm test -- --runInBand && npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"amanwebdev","email":"webdevaman2@gmail.com"},"repository":{"url":"git+https://github.com/AmanWebDev2/sudoku-gen.git","type":"git"},"_npmVersion":"11.4.2","description":"Sudoku generator, solver, validator, and PDF/image exporter","directories":{},"sideEffects":false,"_nodeVersion":"22.15.0","dependencies":{"jspdf":"^4.2.1","canvas":"^3.2.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.5","ts-jest":"^29.4.0","ts-node":"^10.9.2","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.1.0"},"_npmOperationalInternal":{"tmp":"tmp/sudoku-generator_1.2.0_1787336245465_0.39432936966200693","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@amanwebdev/sudoku-generator","version":"1.3.0","description":"Sudoku generator, solver, validator, gameplay toolkit, and PDF/image exporter","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js","default":"./dist/index.js"},"./core":{"types":"./dist/core.d.ts","require":"./dist/core.js","default":"./dist/core.js"},"./pdf":{"types":"./dist/pdf.d.ts","require":"./dist/pdf.js","default":"./dist/pdf.js"},"./image":{"types":"./dist/image.d.ts","require":"./dist/image.js","default":"./dist/image.js"},"./package.json":"./package.json"},"scripts":{"clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","build":"tsc -p tsconfig.build.json","start":"ts-node src/index.ts","test":"jest","typecheck":"tsc --noEmit","prepack":"npm run clean && npm test -- --runInBand && npm run build"},"keywords":["sudoku","generator","solver","validator","gameplay","puzzle","pdf"],"author":{"name":"Aman","email":"webdevaman2@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/AmanWebDev2/sudoku-gen.git"},"bugs":{"url":"https://github.com/AmanWebDev2/sudoku-gen/issues"},"homepage":"https://sudokugenerator.vercel.app/","type":"commonjs","sideEffects":false,"engines":{"node":">=18"},"dependencies":{"canvas":"^3.2.3","jspdf":"^4.2.1"},"devDependencies":{"@types/jest":"^30.0.0","@types/node":"^24.1.0","jest":"^30.0.5","ts-jest":"^29.4.0","ts-node":"^10.9.2","typescript":"^5.8.3"},"_id":"@amanwebdev/sudoku-generator@1.3.0","gitHead":"6e2df21bee83aabbb2ba1a52372ec2cf1cf69131","_nodeVersion":"22.15.0","_npmVersion":"11.4.2","dist":{"integrity":"sha512-6sSRIfFW7EtvfR5a+xy48TL7pF2Zgxi5UVrqOHkQNKVFxdllP9rNwOeRZM7qOTLijbJMyyXZumxw4Y2jDFYB3Q==","shasum":"34fc2c05af8bcc417f3517f03573e019e91386c3","tarball":"https://registry.npmjs.org/@amanwebdev/sudoku-generator/-/sudoku-generator-1.3.0.tgz","fileCount":28,"unpackedSize":79392,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCXCq/49vmn9G0mNEjD08itzhP8EDFHJmGbGkjDsX913QIhAOqYyunf5U1c276rfgd1ICYt7ECESkjb8i1mkU9HnGJN"}]},"_npmUser":{"name":"amanwebdev","email":"webdevaman2@gmail.com"},"directories":{},"maintainers":[{"name":"amanwebdev","email":"webdevaman2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sudoku-generator_1.3.0_1787337269931_0.33149487734677696"},"_hasShrinkwrap":false}},"time":{"created":"2025-07-25T18:56:03.321Z","modified":"2026-08-21T18:34:30.225Z","1.0.0":"2025-07-25T18:56:03.653Z","1.0.1":"2025-07-25T19:03:28.500Z","1.0.2":"2025-08-01T16:46:58.107Z","1.0.3":"2025-08-01T18:02:19.761Z","1.1.0":"2025-08-05T19:29:10.761Z","1.1.1":"2025-08-05T20:48:34.932Z","1.1.2":"2025-08-06T05:27:22.273Z","1.1.3":"2025-08-06T05:29:09.231Z","1.1.4":"2025-08-08T10:34:43.995Z","1.1.6":"2025-08-08T10:58:22.047Z","1.1.7":"2026-08-19T18:49:16.619Z","1.2.0":"2026-08-21T18:17:25.611Z","1.3.0":"2026-08-21T18:34:30.060Z"},"bugs":{"url":"https://github.com/AmanWebDev2/sudoku-gen/issues"},"author":{"name":"Aman","email":"webdevaman2@gmail.com"},"license":"MIT","homepage":"https://sudokugenerator.vercel.app/","keywords":["sudoku","generator","solver","validator","gameplay","puzzle","pdf"],"repository":{"type":"git","url":"git+https://github.com/AmanWebDev2/sudoku-gen.git"},"description":"Sudoku generator, solver, validator, gameplay toolkit, and PDF/image exporter","maintainers":[{"name":"amanwebdev","email":"webdevaman2@gmail.com"}],"readme":"# Sudoku Generator\n\nA Node.js Sudoku generator, solver, validator, and gameplay toolkit for 4×4, 6×6, and 9×9 puzzles, with reproducible generation, compact serialization, and optional PDF/image renderers.\n\nRequires Node.js 18 or newer.\n\n## Installation\n\n```bash\nnpm install @amanwebdev/sudoku-generator\n```\n\n## Usage\n\n### Basic Sudoku Generation\n\n```javascript\nconst { generateSudoku } = require('@amanwebdev/sudoku-generator');\n\n// Generate a 9x9 Sudoku with easy difficulty\nconst sudoku = generateSudoku(9, 'easy');\n\nconsole.log('Puzzle:');\nconsole.log(sudoku.grid);\n\nconsole.log('Solution:');\nconsole.log(sudoku.solution);\n```\n\nPass a seed when you need reproducible output:\n\n```javascript\nconst sudoku = generateSudoku(9, 'medium', { seed: 12345 });\n```\n\n### Play, Solve, and Validate\n\n```javascript\nconst {\n  countSolutions,\n  getCandidates,\n  isValidMove,\n  solveSudoku,\n  stringToGrid,\n  validateSudoku\n} = require('@amanwebdev/sudoku-generator/core');\n\nconst grid = stringToGrid(`\n  53..7....\n  6..195...\n  .98....6.\n  8...6...3\n  4..8.3..1\n  7...2...6\n  .6....28.\n  ...419..5\n  ....8..79\n`);\n\nconst validation = validateSudoku(grid);\n// { valid: true, complete: false, solvable: true, unique: true, conflicts: [] }\n\nconst candidates = getCandidates(grid, 0, 2); // [1, 2, 4]\nconst canPlaceFour = isValidMove(grid, 0, 2, 4); // true\n\nconst solution = solveSudoku(grid);\nconst solutionCount = countSolutions(grid); // 1 (checks up to 2 by default)\n```\n\nAll core utilities support 4×4, 6×6, and 9×9 grids and leave the input grid unchanged.\n\n### Serialize a Grid\n\n```javascript\nconst {\n  gridToString,\n  stringToGrid\n} = require('@amanwebdev/sudoku-generator/core');\n\nconst encoded = gridToString([\n  [1, 0, 3, 0],\n  [0, 3, 0, 1],\n  [3, 0, 1, 0],\n  [0, 1, 0, 3]\n]);\n// \"1.3..3.13.1..1.3\"\n\nconst restored = stringToGrid(encoded);\n```\n\n### PDF Export\n\n```javascript\nconst { generateSudoku } = require('@amanwebdev/sudoku-generator/core');\nconst { toPDF } = require('@amanwebdev/sudoku-generator/pdf');\nconst fs = require('fs');\n\nconst sudoku = generateSudoku(9, 'easy');\n\n// Generate puzzle PDF\nconst puzzlePdf = await toPDF(sudoku.grid, {\n  title: 'Sudoku Puzzle #1',\n  theme: 'light'\n});\nfs.writeFileSync('puzzle.pdf', puzzlePdf);\n\n// Generate solution PDF with visual distinction\nconst solutionPdf = await toPDF(sudoku.grid, {\n  title: 'Sudoku Solution #1',\n  theme: 'light',\n  showSolution: true\n}, sudoku.solution);\nfs.writeFileSync('solution.pdf', solutionPdf);\n```\n\n### Image Export\n\n```javascript\nconst { generateSudoku } = require('@amanwebdev/sudoku-generator/core');\nconst { toImage } = require('@amanwebdev/sudoku-generator/image');\nconst fs = require('fs');\n\nconst sudoku = generateSudoku(9, 'medium');\n\n// Generate puzzle image\nconst puzzleImage = toImage(sudoku.grid, {\n  theme: 'light',\n  cellSize: 80,\n  format: 'png'\n});\nfs.writeFileSync('puzzle.png', puzzleImage);\n\n// Generate solution image with visual distinction\nconst solutionImage = toImage(sudoku.grid, {\n  theme: 'dark',\n  cellSize: 60,\n  format: 'jpeg',\n  quality: 0.9,\n  showSolution: true\n}, sudoku.solution);\nfs.writeFileSync('solution.jpg', solutionImage);\n```\n\n## API\n\n### `generateSudoku(size, difficulty, options?)`\n\nGenerates a new Sudoku puzzle.\n\n**Parameters:**\n-   `size`: The size of the Sudoku grid. Can be `4`, `6`, or `9`.\n-   `difficulty`: The difficulty of the puzzle. Can be `'easy'`, `'medium'`, or `'hard'`.\n-   `options.seed`: Optional unsigned 32-bit integer for reproducible generation.\n\nDifficulty controls clue-removal density while preserving a unique solution; it is not a rating of the logical techniques needed to solve the puzzle.\n\n**Returns:** A `Sudoku` object with the following properties:\n-   `size`: The size of the Sudoku grid.\n-   `grid`: A 2D array representing the puzzle (0 = empty cell).\n-   `solution`: A 2D array representing the complete solution.\n-   `difficulty`: The difficulty level used.\n\n### `isValidMove(grid, row, column, value)`\n\nChecks whether `value` can be placed in an empty cell without violating row, column, or box rules.\n\n- `grid`: A 4×4, 6×6, or 9×9 matrix.\n- `row` and `column`: Zero-based cell coordinates.\n- `value`: An integer from `1` through the grid size.\n- Returns `true` for a legal placement. Occupied cells return `false`.\n\nThe input grid is never mutated. Invalid coordinates, values, or grid shapes throw a `TypeError`.\n\n### `getCandidates(grid, row, column)`\n\nReturns every legal value for an empty cell in ascending order.\n\n- `grid`: A 4×4, 6×6, or 9×9 matrix.\n- `row` and `column`: Zero-based cell coordinates.\n- Returns `number[]`. Occupied cells return an empty array.\n\n### `solveSudoku(grid)`\n\nSolves a grid without mutating it.\n\n- `grid`: A 4×4, 6×6, or 9×9 matrix. Use `0` for empty cells.\n- Returns a completed `number[][]`, or `null` when the givens conflict or no solution exists.\n\n### `countSolutions(grid, limit?)`\n\nCounts solutions without mutating the grid. Search stops at `limit`, which defaults to `2`; this makes uniqueness checks fast and avoids accidentally enumerating every solution of a sparse puzzle.\n\n- `grid`: A 4×4, 6×6, or 9×9 matrix.\n- `limit`: Optional positive integer.\n- Returns the number found, capped at `limit`. Conflicting givens return `0`.\n\n### `validateSudoku(grid)`\n\nInspects a grid and returns:\n\n```typescript\n{\n  valid: boolean;       // givens do not conflict\n  complete: boolean;    // no empty cells remain\n  solvable: boolean;    // at least one solution exists\n  unique: boolean;      // exactly one solution exists\n  conflicts: Array<{\n    row: number;        // zero-based\n    column: number;     // zero-based\n    value: number;\n    type: 'row' | 'column' | 'box';\n  }>;\n}\n```\n\nMalformed matrices or cell values throw a `TypeError`. Sudoku rule violations are returned in `conflicts`.\n\n### `gridToString(grid, emptyCell?)`\n\nConverts a grid to one compact row-major string. Empty cells use `.` by default; pass `'-'` or `'0'` to select another marker.\n\n### `stringToGrid(value)`\n\nParses a 16-, 36-, or 81-cell string and infers its Sudoku size. Whitespace is ignored, and `.`, `-`, and `0` are accepted as empty cells.\n\n### `toPDF(grid, options?, solution?)`\n\nExports a Sudoku grid to PDF format.\n\n**Parameters:**\n-   `grid`: A 2D number array representing the puzzle grid\n-   `options`: Optional PDF configuration object\n-   `solution`: Optional 2D number array for solution display (required when `showSolution: true`)\n\n**Options:**\n-   `theme`: `'light'` | `'dark'` | custom theme object (default: `'light'`)\n-   `title`: PDF title text (default: `'Sudoku Puzzle'`)\n-   `author`: PDF author metadata (default: `'Sudoku Generator'`)\n-   `subject`: PDF subject metadata (default: `'Sudoku Puzzle'`)\n-   `keywords`: PDF keywords metadata (default: `'sudoku, puzzle, game'`)\n-   `showSolution`: Boolean to display solution with visual distinction (default: `false`)\n\n**Custom Theme:**\n```javascript\n{\n  background: '#ffffff',\n  gridColor: '#000000', \n  textColor: '#000000',\n  boxLineColor: '#000000'\n}\n```\n\n**Returns:** `Promise<Uint8Array>` - PDF file as bytes\n\n### `toImage(grid, options?, solution?)`\n\nExports a Sudoku grid to image format (PNG or JPEG).\n\n**Parameters:**\n-   `grid`: A 2D number array representing the puzzle grid\n-   `options`: Optional image configuration object\n-   `solution`: Optional 2D number array for solution display (required when `showSolution: true`)\n\n**Options:**\n-   `theme`: `'light'` | `'dark'` | custom theme object (default: `'light'`)\n-   `cellSize`: Size of each cell in pixels (default: `60`)\n-   `showSolution`: Boolean to display solution with visual distinction (default: `false`)\n-   `format`: `'png'` | `'jpeg'` - Output image format (default: `'png'`)\n-   `quality`: JPEG quality from 0 to 1 (default: `0.95`, only applies to JPEG format)\n\n**Returns:** `Buffer` - Image file as bytes\n\n## Sample Output\n\n### Puzzle PDF\nClean, printable Sudoku puzzles with professional formatting:\n\n![Puzzle Example](docs/puzzle.png)\n\n### Solution PDF  \nSolutions with visual distinction between given and solved digits:\n\n![Solution Example](docs/solution.png)\n\n## Features\n\n### Core Utilities\n\n- **Generate**: Create uniquely solvable 4×4, 6×6, and 9×9 puzzles\n- **Reproduce**: Generate the same puzzle again with an unsigned 32-bit seed\n- **Play**: Check moves and list candidates for empty cells\n- **Solve**: Complete a puzzle without changing the caller's grid\n- **Validate**: Detect row, column, and box conflicts with cell coordinates\n- **Inspect**: Check completeness, solvability, uniqueness, and bounded solution counts\n- **Serialize**: Convert grids to and from compact, shareable strings\n\n### PDF Export\n- **A4 Portrait Layout**: Professional 210×297mm format\n- **Multiple Grid Sizes**: Optimized layouts for 4×4, 6×6, and 9×9 grids\n- **Theme Support**: Light, dark, and custom color themes\n- **Solution Display**: Visual distinction between given and solved digits\n- **Metadata Support**: Title, author, subject, and keywords\n- **Print Ready**: Proper stroke weights and sizing for printing\n\n### Image Export\n- **Flexible Canvas Size**: Configurable cell sizes for different output resolutions\n- **Multiple Formats**: PNG and JPEG export with quality control\n- **Theme Support**: Same theming system as PDF export\n- **Solution Overlay**: Visual distinction between given and solved digits\n- **Server-side Rendering**: Node.js canvas-based generation\n- **Scalable Output**: Adjustable dimensions for web, print, or display use\n\n### Visual Design\n- **Given digits**: Bold, full opacity\n- **Solution digits**: Normal weight, lighter color for clear distinction\n- **Responsive sizing**: Cell sizes adjust based on grid size\n- **Clean typography**: Centered numbers with proper spacing\n","readmeFilename":"README.md"}