{"_id":"@arvarus/perlin-noise","_rev":"10-7632f331da99d5a963523ae2d67c9748","name":"@arvarus/perlin-noise","dist-tags":{"latest":"1.0.1"},"versions":{"0.1.1":{"name":"@arvarus/perlin-noise","version":"0.1.1","keywords":["perlin","noise","procedural","generation"],"author":"","license":"GPL-3.0","_id":"@arvarus/perlin-noise@0.1.1","maintainers":[{"name":"pprb","email":"loic@pouliquen.bzh"}],"dist":{"shasum":"1639ee2a473a4472301b57caef5971c6e5053e59","tarball":"https://registry.npmjs.org/@arvarus/perlin-noise/-/perlin-noise-0.1.1.tgz","fileCount":19,"integrity":"sha512-XX89v/BD2je1UEOPnLIoIrxGCeSIkbr+4d7F+uJ9U84fM3hGXwJy0vEb/9QdznBbWalGRTV/pRm7h5bQXQqJ2A==","signatures":[{"sig":"MEYCIQDDkxDskhHLnZgJ7iKHR7ACq2YZJwdTbxS2uvDhE+V4aQIhAL35ddr5l+Vkg7TDhZNvOHVf9JI0t1VSoz30NXqKbZ2W","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75772},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"eefc35078b477214f72014ddc0715379eadab646","scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","watch":"tsc --watch","lint:fix":"eslint src --ext .ts --fix","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"pprb","email":"loic@pouliquen.bzh"},"_npmVersion":"10.9.0","description":"Perlin noise implementation in TypeScript","directories":{},"_nodeVersion":"22.10.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.50.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/perlin-noise_0.1.1_1771451511758_0.504394539090997","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@arvarus/perlin-noise","version":"0.1.3","keywords":["perlin","noise","procedural","generation"],"author":"","license":"GPL-3.0","_id":"@arvarus/perlin-noise@0.1.3","maintainers":[{"name":"pprb","email":"loic@pouliquen.bzh"}],"homepage":"https://github.com/arvarus/perlin-noise#readme","bugs":{"url":"https://github.com/arvarus/perlin-noise/issues"},"dist":{"shasum":"81a20a594a384f6327e16fc5231712ade140cba2","tarball":"https://registry.npmjs.org/@arvarus/perlin-noise/-/perlin-noise-0.1.3.tgz","fileCount":19,"integrity":"sha512-BiYh441SVxy0Qwmkr5GR7/KQmIk1q5d8oUAFj4cvnzdFOmpLASu4njgjyVvyJx3BhseU2QdV+szVCRUuyeqm1g==","signatures":[{"sig":"MEUCIQCNPJ53xhYmZuNRAbzExJ+nvCa/abVZbv65TVrHLbRd6QIgOFEOy74Om+sJWUcsyaAyr204R6BKsheOnPmBZvawzto=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arvarus%2fperlin-noise@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":75892},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"b8d6d36836c1c5c99dafa6104b8ec41ccde3cecf","scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","watch":"tsc --watch","lint:fix":"eslint src --ext .ts --fix","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:280801ab-d4e2-4cc5-bfc1-6ac026faa8f6"}},"repository":{"url":"git+https://github.com/arvarus/perlin-noise.git","type":"git"},"_npmVersion":"11.6.2","description":"Perlin noise implementation in TypeScript","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.50.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/perlin-noise_0.1.3_1771452902082_0.5671012350112168","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@arvarus/perlin-noise","version":"0.1.4","keywords":["perlin","noise","procedural","generation"],"author":"","license":"GPL-3.0","_id":"@arvarus/perlin-noise@0.1.4","maintainers":[{"name":"pprb","email":"loic@pouliquen.bzh"}],"homepage":"https://github.com/arvarus/perlin-noise#readme","bugs":{"url":"https://github.com/arvarus/perlin-noise/issues"},"dist":{"shasum":"398d46bbc87b4b41ca6bf49dcbb1fe06b496c37c","tarball":"https://registry.npmjs.org/@arvarus/perlin-noise/-/perlin-noise-0.1.4.tgz","fileCount":11,"integrity":"sha512-oFl+6XjpQHb2zRiBa34XhmZuEe6o5IXX3I2SzK8mVK1SghQ58YYt3I/ZFYm+1BkPedCp3Dgqlai8UFbvzgbBgg==","signatures":[{"sig":"MEQCICMrfbAQKd1ZVDM8rBlTC6xKBm5fDSe13VsjuFD31WaiAiA8WD2oPcWM7eUSAceUsyb9xijnnd31rlvqhEP33Hg9ww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arvarus%2fperlin-noise@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":25147},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"a82bb2abd7a29e57d3c16b9d2a76aaa600a1a61e","scripts":{"lint":"cross-env ESLINT_USE_FLAT_CONFIG=true eslint src","test":"jest","build":"tsc","clean":"rm -rf dist","watch":"tsc --watch","lint:fix":"cross-env ESLINT_USE_FLAT_CONFIG=true eslint src --fix","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:280801ab-d4e2-4cc5-bfc1-6ac026faa8f6"}},"overrides":{"minimatch":">=10.2.1"},"repository":{"url":"git+https://github.com/arvarus/perlin-noise.git","type":"git"},"_npmVersion":"11.6.2","description":"Perlin noise implementation in TypeScript","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","eslint":"^9.39.2","globals":"^17.3.0","ts-jest":"^29.4.6","ts-node":"^10.9.2","cross-env":"^10.1.0","@eslint/js":"^9.39.2","typescript":"^5.0.0","@types/jest":"^30.0.0","@typescript-eslint/parser":"^8.56.0","@typescript-eslint/eslint-plugin":"^8.56.0"},"_npmOperationalInternal":{"tmp":"tmp/perlin-noise_0.1.4_1771542581526_0.6574324798536433","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@arvarus/perlin-noise","version":"0.1.5","keywords":["perlin","noise","procedural","generation"],"author":"","license":"GPL-3.0","_id":"@arvarus/perlin-noise@0.1.5","maintainers":[{"name":"pprb","email":"loic@pouliquen.bzh"}],"homepage":"https://github.com/arvarus/perlin-noise#readme","bugs":{"url":"https://github.com/arvarus/perlin-noise/issues"},"dist":{"shasum":"6f2f306087bd7a1653a9f45a7c8f756a9a29cd00","tarball":"https://registry.npmjs.org/@arvarus/perlin-noise/-/perlin-noise-0.1.5.tgz","fileCount":11,"integrity":"sha512-g3mHQFvIz9sZ49Bv80Vxk6ykNicgk/laLoxYllPH0IkE45K54G7vQ5FKmFsCI3c3bHGMT5VajAP33lnXjtxYaQ==","signatures":[{"sig":"MEUCIFrClSQmiI+KLzHKWIdHuqLrOUA3Uhd2UI9yJBPqeqFrAiEAqr+5vfvyi8Zsm2+m+g/BAznpdfWRi92uAQ6mvenBzAY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arvarus%2fperlin-noise@0.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":25169},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"d564afcefa6e8377f6923759d8279eb547991dbf","scripts":{"lint":"cross-env ESLINT_USE_FLAT_CONFIG=true eslint src","test":"jest","build":"tsc","clean":"rm -rf dist","watch":"tsc --watch","lint:fix":"cross-env ESLINT_USE_FLAT_CONFIG=true eslint src --fix","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:280801ab-d4e2-4cc5-bfc1-6ac026faa8f6"}},"overrides":{"minimatch":">=10.2.1"},"repository":{"url":"git+https://github.com/arvarus/perlin-noise.git","type":"git"},"_npmVersion":"11.6.2","description":"Perlin noise implementation in TypeScript","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","jiti":"^2.6.1","eslint":"^9.39.2","globals":"^17.3.0","ts-jest":"^29.4.6","ts-node":"^10.9.2","cross-env":"^10.1.0","@eslint/js":"^9.39.2","typescript":"^5.0.0","@types/jest":"^30.0.0","@typescript-eslint/parser":"^8.56.0","@typescript-eslint/eslint-plugin":"^8.56.0"},"_npmOperationalInternal":{"tmp":"tmp/perlin-noise_0.1.5_1771712775396_0.4864881994087422","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@arvarus/perlin-noise","version":"0.1.6","keywords":["perlin","noise","procedural","generation"],"author":"","license":"GPL-3.0","_id":"@arvarus/perlin-noise@0.1.6","maintainers":[{"name":"pprb","email":"loic@pouliquen.bzh"}],"homepage":"https://github.com/arvarus/perlin-noise#readme","bugs":{"url":"https://github.com/arvarus/perlin-noise/issues"},"dist":{"shasum":"7a3b14f78a33d185c51d6b4c2783a3797c9733fc","tarball":"https://registry.npmjs.org/@arvarus/perlin-noise/-/perlin-noise-0.1.6.tgz","fileCount":11,"integrity":"sha512-iG3R2VGQH+YTiQjfjeXn7cJBpz96ZtO39vLqXY769nCFYT4hRLYyvWGCQqKHk+KsC/sK8/OKDX3DvRVSp9jrWQ==","signatures":[{"sig":"MEYCIQDf/q/IZfEvZDlFXkS1e+JgZo4yvGtp8df0lL4+CbxsgAIhALauBap/5R1CODPhFeI0GJDtbtoL/nBzOR4elQXEv2aV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arvarus%2fperlin-noise@0.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":25169},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"c00466c91e27847410780ddfb095d1c48ee28acf","scripts":{"lint":"cross-env ESLINT_USE_FLAT_CONFIG=true eslint src","test":"jest","build":"tsc","clean":"rm -rf dist","watch":"tsc --watch","lint:fix":"cross-env ESLINT_USE_FLAT_CONFIG=true eslint src --fix","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:280801ab-d4e2-4cc5-bfc1-6ac026faa8f6"}},"overrides":{"minimatch":">=10.2.3"},"repository":{"url":"git+https://github.com/arvarus/perlin-noise.git","type":"git"},"_npmVersion":"11.8.0","description":"Perlin noise implementation in TypeScript","directories":{},"_nodeVersion":"24.13.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","jiti":"^2.6.1","eslint":"^9.39.2","globals":"^17.3.0","ts-jest":"^29.4.6","ts-node":"^10.9.2","cross-env":"^10.1.0","@eslint/js":"^9.39.2","typescript":"^5.0.0","@types/jest":"^30.0.0","@typescript-eslint/parser":"^8.56.0","@typescript-eslint/eslint-plugin":"^8.56.0"},"_npmOperationalInternal":{"tmp":"tmp/perlin-noise_0.1.6_1772578381979_0.878890652078997","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@arvarus/perlin-noise","version":"0.1.7","keywords":["perlin","noise","procedural","generation"],"author":"","license":"GPL-3.0","_id":"@arvarus/perlin-noise@0.1.7","maintainers":[{"name":"pprb","email":"loic@pouliquen.bzh"}],"homepage":"https://github.com/arvarus/perlin-noise#readme","bugs":{"url":"https://github.com/arvarus/perlin-noise/issues"},"dist":{"shasum":"546b07b19c0e402f8239b12e446261efddedcaea","tarball":"https://registry.npmjs.org/@arvarus/perlin-noise/-/perlin-noise-0.1.7.tgz","fileCount":11,"integrity":"sha512-KLfeFZJlQSdycu6LEDNsQRBcQNJYlyNSN1F0ljSGBCnn9+p4WP7tXMit8Q7Y3wgnhV8WdTsv7S9IPIiMRy4RAA==","signatures":[{"sig":"MEUCIFak3oL4kyjLZ+RiRK2mt3On3T5583ns1OV86yLAV3hHAiEA+jrl5EIS3TEPFKze6miY7YTpDOKiupDjPfKbF3jl03U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arvarus%2fperlin-noise@0.1.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":25169},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"f3f4df39d3558dbe363669fb2b2ab2a5565950ff","scripts":{"lint":"cross-env ESLINT_USE_FLAT_CONFIG=true eslint src","test":"jest","build":"tsc","clean":"rm -rf dist","watch":"tsc --watch","lint:fix":"cross-env ESLINT_USE_FLAT_CONFIG=true eslint src --fix","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:280801ab-d4e2-4cc5-bfc1-6ac026faa8f6"}},"overrides":{"minimatch":">=10.2.3"},"repository":{"url":"git+https://github.com/arvarus/perlin-noise.git","type":"git"},"_npmVersion":"11.9.0","description":"Perlin noise implementation in TypeScript","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","jiti":"^2.6.1","eslint":"^9.39.2","globals":"^17.3.0","ts-jest":"^29.4.6","ts-node":"^10.9.2","cross-env":"^10.1.0","@eslint/js":"^9.39.2","typescript":"^5.0.0","@types/jest":"^30.0.0","@typescript-eslint/parser":"^8.56.0","@typescript-eslint/eslint-plugin":"^8.56.0"},"_npmOperationalInternal":{"tmp":"tmp/perlin-noise_0.1.7_1774126908872_0.27308392043702434","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@arvarus/perlin-noise","version":"0.1.8","keywords":["perlin","noise","procedural","generation"],"author":"","license":"GPL-3.0","_id":"@arvarus/perlin-noise@0.1.8","maintainers":[{"name":"pprb","email":"loic@pouliquen.bzh"}],"homepage":"https://github.com/arvarus/perlin-noise#readme","bugs":{"url":"https://github.com/arvarus/perlin-noise/issues"},"dist":{"shasum":"4f9e9ffd1d2509d928f3c60abde16f8051f5e074","tarball":"https://registry.npmjs.org/@arvarus/perlin-noise/-/perlin-noise-0.1.8.tgz","fileCount":11,"integrity":"sha512-PcjUkTdlfIICkBUPak5cSvt8NH32zcuvDla5YeZwF/r5SO4sZUw0wgJ58/t7CLHSl0rzk+tPmR2vtGlDRE+0Qw==","signatures":[{"sig":"MEUCIQDIrOiTn/qmbM0mBjuZexdujBagNSXahQMUlxyibHXdsQIga5RJ2j9y2dlvhYYs5BnnmTnhalfx3moKvdP3Gi4E3OM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arvarus%2fperlin-noise@0.1.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":25169},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"fa4c8841aa00137b289204a24f132bf277c1d7b5","scripts":{"lint":"cross-env ESLINT_USE_FLAT_CONFIG=true eslint src","test":"jest","build":"tsc","clean":"rm -rf dist","watch":"tsc --watch","lint:fix":"cross-env ESLINT_USE_FLAT_CONFIG=true eslint src --fix","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:280801ab-d4e2-4cc5-bfc1-6ac026faa8f6"}},"overrides":{"minimatch":">=10.2.3"},"repository":{"url":"git+https://github.com/arvarus/perlin-noise.git","type":"git"},"_npmVersion":"11.9.0","description":"Perlin noise implementation in TypeScript","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","jiti":"^2.6.1","eslint":"^9.39.2","globals":"^17.3.0","ts-jest":"^29.4.6","ts-node":"^10.9.2","cross-env":"^10.1.0","@eslint/js":"^9.39.2","typescript":"^5.0.0","@types/jest":"^30.0.0","@typescript-eslint/parser":"^8.56.0","@typescript-eslint/eslint-plugin":"^8.56.0"},"_npmOperationalInternal":{"tmp":"tmp/perlin-noise_0.1.8_1774634249849_0.27927068165635993","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@arvarus/perlin-noise","version":"0.1.9","keywords":["perlin","noise","procedural","generation"],"author":"","license":"GPL-3.0","_id":"@arvarus/perlin-noise@0.1.9","maintainers":[{"name":"pprb","email":"loic@pouliquen.bzh"}],"homepage":"https://github.com/arvarus/perlin-noise#readme","bugs":{"url":"https://github.com/arvarus/perlin-noise/issues"},"dist":{"shasum":"784d7ec11f66343c7104de988b636ea6c43012ff","tarball":"https://registry.npmjs.org/@arvarus/perlin-noise/-/perlin-noise-0.1.9.tgz","fileCount":11,"integrity":"sha512-eUSLluAL01he+oU4aLdzMSYvXBOfzY28A/CI63T2iNcekdUVquH0snimpOc4iNKpsStSN0r5OvfFLS7qw92dyA==","signatures":[{"sig":"MEUCIFIUYX0+cPGqheNFEcjOA+xHdhxZEwTSG3bQCc0VSFyCAiEA+rtVCEhkZQjOMYGl/YycNLOdr2bbvDPF8khmY37HANg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arvarus%2fperlin-noise@0.1.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":25169},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"446bd73d98540ad62e3e8c2c37588e867e52b6b6","scripts":{"lint":"cross-env ESLINT_USE_FLAT_CONFIG=true eslint src","test":"jest","build":"tsc","clean":"rm -rf dist","watch":"tsc --watch","lint:fix":"cross-env ESLINT_USE_FLAT_CONFIG=true eslint src --fix","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:280801ab-d4e2-4cc5-bfc1-6ac026faa8f6"}},"overrides":{"minimatch":">=10.2.3"},"repository":{"url":"git+https://github.com/arvarus/perlin-noise.git","type":"git"},"_npmVersion":"11.16.0","description":"Perlin noise implementation in TypeScript","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","jiti":"^2.6.1","eslint":"^9.39.2","globals":"^17.3.0","ts-jest":"^29.4.6","ts-node":"^10.9.2","cross-env":"^10.1.0","@eslint/js":"^9.39.2","typescript":"^5.0.0","@types/jest":"^30.0.0","@typescript-eslint/parser":"^8.56.0","@typescript-eslint/eslint-plugin":"^8.56.0"},"_npmOperationalInternal":{"tmp":"tmp/perlin-noise_0.1.9_1783492298965_0.9719125479664272","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@arvarus/perlin-noise","version":"1.0.0","keywords":["perlin","noise","procedural","generation","typescript"],"author":"","license":"GPL-3.0","_id":"@arvarus/perlin-noise@1.0.0","maintainers":[{"name":"pprb","email":"loic@pouliquen.bzh"}],"homepage":"https://github.com/arvarus/perlin-noise#readme","bugs":{"url":"https://github.com/arvarus/perlin-noise/issues"},"dist":{"shasum":"c520492276eb25ae128b26af0b6f30bca47549cd","tarball":"https://registry.npmjs.org/@arvarus/perlin-noise/-/perlin-noise-1.0.0.tgz","fileCount":11,"integrity":"sha512-yiHLFcu2Lcc40smKxFoaTOKIzCjzjvpydXQ4QtlAhJROTYzQ4FZWohL6giPKzOHfo9MKx/hNl8Vqj3evI5Qq2A==","signatures":[{"sig":"MEUCIFmcrTXPn8Gz0geRS8TfKtKDUkUJ2BrLKivLB8rFCV6/AiEA4hbhj7oF3O7E+YAO1AxYvCvRlRGeQQuZinlFMLh1mMg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arvarus%2fperlin-noise@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":34059},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"37d8573aeecbc4305bf4b098b7292215b30b1a20","scripts":{"lint":"eslint .","test":"jest","build":"tsc","clean":"node -e \"fs.rmSync('dist', { recursive: true, force: true })\"","watch":"tsc --watch","format":"prettier --write .","lint:fix":"eslint . --fix","test:watch":"jest --watch","format:check":"prettier --check .","example:ascii":"ts-node --project examples/tsconfig.json examples/ascii-terrain.ts","example:basic":"ts-node --project examples/tsconfig.json examples/basic.ts","example:image":"ts-node --project examples/tsconfig.json examples/pgm-image.ts","test:coverage":"jest --coverage","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:280801ab-d4e2-4cc5-bfc1-6ac026faa8f6"}},"overrides":{"minimatch":">=10.2.3","test-exclude":"^7.0.1"},"repository":{"url":"git+https://github.com/arvarus/perlin-noise.git","type":"git"},"_npmVersion":"11.16.0","description":"Perlin noise implementation in TypeScript, supporting 1 to 10 dimensions","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.4.2","jiti":"^2.6.1","eslint":"^10.7.0","globals":"^17.3.0","ts-jest":"^29.4.11","ts-node":"^10.9.2","prettier":"^3.9.5","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/jest":"^30.0.0","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.64.0","@typescript-eslint/eslint-plugin":"^8.64.0"},"_npmOperationalInternal":{"tmp":"tmp/perlin-noise_1.0.0_1784057680028_0.6435000531116659","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"_id":"@arvarus/perlin-noise@1.0.1","bugs":{"url":"https://github.com/arvarus/perlin-noise/issues"},"dist":{"shasum":"c8ef1fa6ededa16fc736375532c04f28a7af2c4b","tarball":"https://registry.npmjs.org/@arvarus/perlin-noise/-/perlin-noise-1.0.1.tgz","fileCount":11,"integrity":"sha512-3B9xFTnzksT07vPi0cRtReSchIhp635AQXzg5aPhVIBwIGWt1NpZDk2YEPODOy/NdHWrlE5FrWxmXzTAww6jdg==","signatures":[{"sig":"MEQCICVVEK6ikZsoVvDP5CtNBqnqvK+e+4XXqAHN5yDn/J+FAiAS+ZQDRMsXflZ8mcoDvDku/nYDZgL+GIpuvfeXwuH9+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBMLG/B7jl+kNqC4xlzzUd9ibJdrPiZKhNjO5Om7O9TLAiBCQNyYKDqL9R+QJcHc67DjH6bnj6E4Le3/+RzlWZd9yA=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arvarus%2fperlin-noise@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":34059},"main":"dist/index.js","name":"@arvarus/perlin-noise","types":"dist/index.d.ts","author":"","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"302f36c386ba612d08c2f8cb67735b5909090df7","license":"GPL-3.0","scripts":{"lint":"eslint .","test":"jest","build":"tsc","clean":"node -e \"fs.rmSync('dist', { recursive: true, force: true })\"","watch":"tsc --watch","format":"prettier --write .","lint:fix":"eslint . --fix","test:watch":"jest --watch","format:check":"prettier --check .","example:ascii":"ts-node --project examples/tsconfig.json examples/ascii-terrain.ts","example:basic":"ts-node --project examples/tsconfig.json examples/basic.ts","example:image":"ts-node --project examples/tsconfig.json examples/pgm-image.ts","test:coverage":"jest --coverage","prepublishOnly":"npm run clean && npm run build"},"version":"1.0.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:280801ab-d4e2-4cc5-bfc1-6ac026faa8f6"}},"homepage":"https://github.com/arvarus/perlin-noise#readme","keywords":["perlin","noise","procedural","generation","typescript"],"overrides":{"minimatch":">=10.2.3","test-exclude":"^7.0.1"},"repository":{"url":"git+https://github.com/arvarus/perlin-noise.git","type":"git"},"_npmVersion":"11.19.0","description":"Perlin noise implementation in TypeScript, supporting 1 to 10 dimensions","directories":{},"maintainers":[{"name":"pprb","email":"loic@pouliquen.bzh"}],"sideEffects":false,"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.4.2","jiti":"^2.6.1","eslint":"^10.7.0","globals":"^17.3.0","ts-jest":"^29.4.11","ts-node":"^10.9.2","prettier":"^3.9.5","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/jest":"^30.0.0","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.64.0","@typescript-eslint/eslint-plugin":"^8.64.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/perlin-noise_1.0.1_1788849578129_0.20978600575830297"}}},"time":{"created":"2026-02-18T21:51:51.629Z","modified":"2026-09-08T06:39:38.576Z","0.1.1":"2026-02-18T21:51:51.911Z","0.1.3":"2026-02-18T22:15:02.272Z","0.1.4":"2026-02-19T23:09:41.673Z","0.1.5":"2026-02-21T22:26:15.535Z","0.1.6":"2026-03-03T22:53:02.135Z","0.1.7":"2026-03-21T21:01:49.053Z","0.1.8":"2026-03-27T17:57:29.983Z","0.1.9":"2026-07-08T06:31:39.236Z","1.0.0":"2026-07-14T19:34:40.199Z","1.0.1":"2026-09-08T06:39:38.219Z"},"bugs":{"url":"https://github.com/arvarus/perlin-noise/issues"},"license":"GPL-3.0","homepage":"https://github.com/arvarus/perlin-noise#readme","keywords":["perlin","noise","procedural","generation","typescript"],"repository":{"url":"git+https://github.com/arvarus/perlin-noise.git","type":"git"},"description":"Perlin noise implementation in TypeScript, supporting 1 to 10 dimensions","maintainers":[{"name":"pprb","email":"loic@pouliquen.bzh"}],"readme":"# @arvarus/perlin-noise\n\n[![CI](https://github.com/arvarus/perlin-noise/actions/workflows/ci.yml/badge.svg)](https://github.com/arvarus/perlin-noise/actions/workflows/ci.yml)\n\nPerlin noise implementation in TypeScript, supporting 1 to 10 dimensions.\n\n- **N-dimensional**: generate noise in 1D, 2D, 3D... up to 10D\n- **Deterministic**: same seed, same noise pattern\n- **Repeating**: coordinates wrap around the grid, producing tileable patterns\n- **Zero dependencies**, fully typed, 100% test coverage\n\n## Installation\n\n```bash\nnpm install @arvarus/perlin-noise\n```\n\n## Usage\n\n### Basic Example\n\n```typescript\nimport { PerlinNoise } from '@arvarus/perlin-noise';\n\n// Create a Perlin noise instance\nconst noise = new PerlinNoise({\n  seed: 42, // Optional: seed for reproducible results\n  gridSize: [64, 64], // Optional: grid size per dimension (default: [64, 64, 64])\n});\n\n// Generate noise value at coordinates\nconst value = noise.noise([10.5, 20.3]);\nconsole.log(value); // A value approximately in range [-1, 1]\n```\n\n### 1D Noise\n\n```typescript\nconst noise = new PerlinNoise({\n  seed: 123,\n  gridSize: [100], // 1D grid\n});\n\n// Generate 1D noise along a line\nfor (let x = 0; x < 10; x += 0.1) {\n  const value = noise.noise([x]);\n  console.log(`x: ${x}, noise: ${value}`);\n}\n```\n\n### Natural-Looking Terrain with fBm\n\nFor more natural results (irregular coastlines, fine detail), sum several octaves\nof noise with fractional Brownian motion:\n\n```typescript\nconst noise = new PerlinNoise({ seed: 42, gridSize: [8, 16] });\n\n// 4 octaves by default; each octave doubles the frequency and halves the amplitude\nconst elevation = noise.fbm2D(x, y, { octaves: 4, lacunarity: 2, persistence: 0.5 });\n\n// Map the value to a terrain type\nconst terrain = elevation < -0.1 ? 'sea' : elevation < 0.3 ? 'land' : 'mountain';\n```\n\n### Using a Fixed Seed for Reproducible Results\n\n```typescript\n// Same seed produces same noise pattern\nconst noise1 = new PerlinNoise({ seed: 42, gridSize: [64, 64] });\nconst noise2 = new PerlinNoise({ seed: 42, gridSize: [64, 64] });\n\nconst value1 = noise1.noise([5.5, 5.5]);\nconst value2 = noise2.noise([5.5, 5.5]);\n\nconsole.log(value1 === value2); // true - same seed produces same result\n```\n\n## Examples\n\nRunnable examples live in the [examples/](examples/) directory:\n\n```bash\nnpm run example:basic # Minimal 1D/2D/3D usage, seeding and wrapping\nnpm run example:ascii # Renders a 2D noise field as ASCII art in the terminal\nnpm run example:image # Writes a 256x256 grayscale image (examples/noise.pgm)\n```\n\n## API Reference\n\n### `PerlinNoise`\n\nMain class for generating Perlin noise values. Supports 1 to 10 dimensions.\n\n#### Constructor\n\n```typescript\nnew PerlinNoise(options?: PerlinNoiseOptions)\n```\n\nCreates a new PerlinNoise instance.\n\n**Parameters:**\n\n- `options` (optional): Configuration object\n  - `seed?: number` - Seed for random number generation. If not provided, a random seed is used.\n  - `gridSize?: number[]` - Grid size for each dimension. Default: `[64, 64, 64]`. Each size must be a positive integer, and the array length (the dimension) must be between 1 and 10. The grid wraps around, so smaller values can be used for repeating patterns.\n\n**Example:**\n\n```typescript\n// Default 3D noise\nconst noise1 = new PerlinNoise();\n\n// 2D noise with fixed seed\nconst noise2 = new PerlinNoise({ seed: 42, gridSize: [64, 64] });\n\n// 1D noise\nconst noise3 = new PerlinNoise({ gridSize: [100] });\n```\n\n**Throws:**\n\n- `Error` - If `gridSize` has fewer than 1 or more than 10 entries, or contains anything other than positive integers\n\n#### Methods\n\n##### `noise(coordinates: number[]): number`\n\nGenerates a noise value at the given coordinates.\n\n**Parameters:**\n\n- `coordinates: number[]` - Array of coordinates. The length must match the grid dimension specified in the constructor.\n\n**Returns:**\n\n- `number` - Noise value approximately in the range `[-1, 1]`. The value is exactly `0` at integer grid coordinates, as expected from Perlin noise.\n\n**Example:**\n\n```typescript\nconst noise = new PerlinNoise({ gridSize: [64, 64] });\n\n// 2D coordinates for 2D grid\nconst value = noise.noise([10.5, 20.3]);\n\n// Coordinates wrap around the grid bounds\nconst wrapped = noise.noise([100.0, 200.0]); // Wraps to [36, 8] for 64x64 grid\n```\n\n**Throws:**\n\n- `Error` - If the coordinates array length doesn't match the grid dimension\n\n##### `noise2D(x: number, y: number): number`\n\nConvenience method over `noise` for the common 2D case (e.g. terrain maps). Requires the instance to have been created with a 2D grid.\n\n**Parameters:**\n\n- `x: number` - X coordinate\n- `y: number` - Y coordinate\n\n**Returns:**\n\n- `number` - Noise value approximately in the range `[-1, 1]`, identical to `noise([x, y])`\n\n**Throws:**\n\n- `Error` - If the grid dimension is not 2\n\n##### `fbm(coordinates: number[], options?: FBMOptions): number`\n\nGenerates a fractional Brownian motion (fBm) value by summing several octaves of noise at increasing frequencies and decreasing amplitudes. Produces more natural-looking results than a single octave (e.g. irregular coastlines on terrain maps).\n\n**Parameters:**\n\n- `coordinates: number[]` - Array of coordinates. The length must match the grid dimension specified in the constructor.\n- `options` (optional): fBm configuration\n  - `octaves?: number` - Number of noise layers to sum. Default: `4`. Must be a positive integer.\n  - `lacunarity?: number` - Frequency multiplier between successive octaves. Default: `2`. Must be positive. With integer values the summed noise still wraps seamlessly.\n  - `persistence?: number` - Amplitude multiplier between successive octaves. Default: `0.5`. Must be positive.\n\n**Returns:**\n\n- `number` - fBm value normalized by the total amplitude, approximately in the range `[-1, 1]`\n\n**Example:**\n\n```typescript\nconst noise = new PerlinNoise({ gridSize: [64, 64] });\n\nconst value = noise.fbm([10.5, 20.3], { octaves: 6, persistence: 0.4 });\n```\n\n**Throws:**\n\n- `Error` - If `octaves` is not a positive integer, or `lacunarity` or `persistence` is not a positive number\n- `Error` - If the coordinates array length doesn't match the grid dimension\n\n##### `fbm2D(x: number, y: number, options?: FBMOptions): number`\n\nConvenience method over `fbm` for the common 2D case. Requires the instance to have been created with a 2D grid.\n\n**Parameters:**\n\n- `x: number` - X coordinate\n- `y: number` - Y coordinate\n- `options` (optional): Same fBm configuration as `fbm`\n\n**Returns:**\n\n- `number` - fBm value approximately in the range `[-1, 1]`, identical to `fbm([x, y], options)`\n\n**Throws:**\n\n- `Error` - If the grid dimension is not 2, or if the options are invalid\n\n### `PerlinNoiseOptions`\n\nConfiguration interface for the `PerlinNoise` constructor.\n\n```typescript\ninterface PerlinNoiseOptions {\n  seed?: number;\n  gridSize?: number[];\n}\n```\n\n**Properties:**\n\n- `seed?: number` - Seed for random number generation. Same seed produces the same noise pattern.\n- `gridSize?: number[]` - Grid size for each dimension. Default: `[64, 64, 64]`. Must be an array of 1 to 10 positive integers. The grid wraps around, allowing for repeating patterns.\n\n### `FBMOptions`\n\nConfiguration interface for the `fbm` and `fbm2D` methods.\n\n```typescript\ninterface FBMOptions {\n  octaves?: number;\n  lacunarity?: number;\n  persistence?: number;\n}\n```\n\n**Properties:**\n\n- `octaves?: number` - Number of noise layers to sum. Default: `4`. More octaves add finer detail at increasing computational cost.\n- `lacunarity?: number` - Frequency multiplier between successive octaves. Default: `2`.\n- `persistence?: number` - Amplitude multiplier between successive octaves. Default: `0.5`. Lower values make higher octaves fade faster, giving smoother results.\n\n## Migrating from 0.x\n\n- **Noise values changed**: version 0.x interpolated dimensions in reversed order, which made the noise discontinuous across cell boundaries. This is fixed in 1.0, so values generated for a given seed differ from 0.x.\n- **Trimmed exports**: the internal helpers `generateGradientGrid`, `getGradientAt`, `GridDimension` and `GradientVector` are no longer exported from the package root. The public API is `PerlinNoise`, `PerlinNoiseOptions` and `FBMOptions`.\n\n## Development\n\n```bash\nnpm install\nnpm test              # Run the test suite\nnpm run test:coverage # Run tests with coverage (100% enforced)\nnpm run lint          # ESLint\nnpm run format        # Prettier\nnpm run build         # Compile to dist/\n```\n\n## License\n\nGPL-3.0\n","readmeFilename":"README.md"}