{"_id":"@bigmistqke/view.gl","_rev":"28-02249ed37dc17a236a766326d55dcada","name":"@bigmistqke/view.gl","dist-tags":{"latest":"0.8.0"},"versions":{"0.1.0":{"name":"@bigmistqke/view.gl","version":"0.1.0","keywords":[],"author":"","license":"ISC","_id":"@bigmistqke/view.gl@0.1.0","maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"dist":{"shasum":"5df3add0a904f7d6fffbcf3d66fde3cb9325f404","tarball":"https://registry.npmjs.org/@bigmistqke/view.gl/-/view.gl-0.1.0.tgz","fileCount":21,"integrity":"sha512-eqrUClDvk2k6lcKSGL1Bmag/vEsJ+rjRsXKvVXJe0GLTg+ONICpFoQg7X+i5ITRhtKcn5SQi3JoO4nVStsH/3Q==","signatures":[{"sig":"MEYCIQDt7pcKKsdtSahSBzTH5W9/tQelFOmR9q1IHQfMsPAxQwIhAPm3lMes61AAvqU+h8Shnt0kbdVIPB04k6YeEqrTDTZY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116455},"_from":"file:bigmistqke-view.gl-0.1.0.tgz","exports":{".":{"types":"./index.d.mts","import":"./index.mjs"},"./tag":{"types":"./tag.d.mts","import":"./tag.mjs"}},"scripts":{"dev":"vite serve dev","build":"tsup"},"_npmUser":{"name":"bigmistqke","email":"vandijckv@gmail.com"},"_resolved":"/private/var/folders/kf/33x7c6xs76l2v21jmt7lmhpm0000gn/T/344da55bd82d431f0f2729b85493b15b/bigmistqke-view.gl-0.1.0.tgz","_integrity":"sha512-eqrUClDvk2k6lcKSGL1Bmag/vEsJ+rjRsXKvVXJe0GLTg+ONICpFoQg7X+i5ITRhtKcn5SQi3JoO4nVStsH/3Q==","_npmVersion":"10.9.3","description":"Minimal library for WebGL shader resource management with type-safe GLSL template literals.","directories":{},"_nodeVersion":"22.20.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite":"^7.0.2","typescript":"^5.8.3","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/view.gl_0.1.0_1760180499236_0.9980452403637285","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@bigmistqke/view.gl","version":"0.1.1","keywords":[],"author":"","license":"ISC","_id":"@bigmistqke/view.gl@0.1.1","maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"dist":{"shasum":"8745fcb215ced456f88bf94afcf2fdb487c98392","tarball":"https://registry.npmjs.org/@bigmistqke/view.gl/-/view.gl-0.1.1.tgz","fileCount":27,"integrity":"sha512-rn6bp+DS9KbkqrX4QikUIReKQhsl4Myj4HfJQZ3rS/PMIlyecwEJD3FSIxq0yTdgNGEeEjM4VqfK91B1oTQsxw==","signatures":[{"sig":"MEYCIQDO/JrPvXSbw7vV9SVRV7zH/WDkQ9PtKfi0SZzpEW99bwIhALvMPnBcSQDq9qUYPyz1BIYTPdfuR23bnqykO/QEJO9m","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188487},"_from":"file:bigmistqke-view.gl-0.1.1.tgz","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./tag":{"types":"./dist/tag.d.mts","import":"./dist/tag.mjs"}},"scripts":{"dev":"vite serve dev","build":"tsup","prepublish":"pnpm build"},"_npmUser":{"name":"bigmistqke","email":"vandijckv@gmail.com"},"_resolved":"/private/var/folders/kf/33x7c6xs76l2v21jmt7lmhpm0000gn/T/e5abc80d963d84724ae279a4dd89a37e/bigmistqke-view.gl-0.1.1.tgz","_integrity":"sha512-rn6bp+DS9KbkqrX4QikUIReKQhsl4Myj4HfJQZ3rS/PMIlyecwEJD3FSIxq0yTdgNGEeEjM4VqfK91B1oTQsxw==","_npmVersion":"10.9.3","description":"Minimal library for WebGL shader resource management with type-safe GLSL template literals.","directories":{},"_nodeVersion":"22.20.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite":"^7.0.2","typescript":"^5.8.3","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/view.gl_0.1.1_1760181123841_0.6800533596038079","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@bigmistqke/view.gl","version":"0.1.2","keywords":["WebGL"],"author":"","license":"ISC","_id":"@bigmistqke/view.gl@0.1.2","maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"dist":{"shasum":"265d06f382318a6f2f9dc91b2b7b36070a1dd6a2","tarball":"https://registry.npmjs.org/@bigmistqke/view.gl/-/view.gl-0.1.2.tgz","fileCount":57,"integrity":"sha512-j7PrwyKDUQCy6U4BylpoxP9QH0qE+OpXVDvUx8+NHLszsjzD8F2AnIEJEQ7ZNRxNaFhR5gMuPEx2rJgsPs7GxA==","signatures":[{"sig":"MEUCIEBa93TGxPrb7N8VmO9umh780gL4ht+bnbfs2txdrKxUAiEA+4UPupMPs1Ab9shzCc66wc3WEHDwRPmBF9hBsLYXqLU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":357008},"_from":"file:bigmistqke-view.gl-0.1.2.tgz","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./tag":{"types":"./dist/tag.d.mts","import":"./dist/tag.mjs"}},"scripts":{"dev":"vite serve dev","test":"vitest --run","build":"tsup","format":"prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"","test:ui":"vitest --ui","dev:build":"vite build dev","dev:watch":"concurrently \"pnpm dev:preview\" \"vite dev:build --watch\"","prepublish":"pnpm build","dev:preview":"vite preview dev","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"bigmistqke","email":"vandijckv@gmail.com"},"_resolved":"/private/var/folders/kf/33x7c6xs76l2v21jmt7lmhpm0000gn/T/b8606d6ff5c1a9d17a13efbc1543ddb4/bigmistqke-view.gl-0.1.2.tgz","_integrity":"sha512-j7PrwyKDUQCy6U4BylpoxP9QH0qE+OpXVDvUx8+NHLszsjzD8F2AnIEJEQ7ZNRxNaFhR5gMuPEx2rJgsPs7GxA==","_npmVersion":"10.9.3","description":"🪟 Utilities for managing WebGL resources.","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite":"^7.0.2","vitest":"^3.2.4","prettier":"^3.6.2","happy-dom":"^20.0.0","@vitest/ui":"^3.2.4","typescript":"^5.8.3","concurrently":"^9.2.1","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/view.gl_0.1.2_1760492317868_0.23379646426864942","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@bigmistqke/view.gl","version":"0.1.3","keywords":["WebGL"],"author":"","license":"ISC","_id":"@bigmistqke/view.gl@0.1.3","maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"dist":{"shasum":"000da92fa93033c3ff8627e7218136802bf0daf8","tarball":"https://registry.npmjs.org/@bigmistqke/view.gl/-/view.gl-0.1.3.tgz","fileCount":57,"integrity":"sha512-NitDccOalSk8l72eT52U4IVGwCSpFDRTheacHBhmeqoxaZQ0rR4p/1vLBSEQ3k65PZRpcFIi9Drts4/zkFOyuQ==","signatures":[{"sig":"MEQCIBNOFqZK/BN1LcqFPeZqi9OsNiD4iGQ+qMEqY9l730LiAiA+xF//3UKXzR9EYEHOECyll16aLie2TR4SYRMgU+Mj8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":360514},"_from":"file:bigmistqke-view.gl-0.1.3.tgz","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./tag":{"types":"./dist/tag.d.mts","import":"./dist/tag.mjs"}},"scripts":{"dev":"vite serve dev","test":"vitest --run","build":"tsup","format":"prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"","test:ui":"vitest --ui","dev:build":"vite build dev","dev:watch":"concurrently \"pnpm dev:preview\" \"vite dev:build --watch\"","prepublish":"pnpm build","dev:preview":"vite preview dev","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"bigmistqke","email":"vandijckv@gmail.com"},"_resolved":"/private/var/folders/kf/33x7c6xs76l2v21jmt7lmhpm0000gn/T/43399de21dc85c6cde5ab3a271faa1d2/bigmistqke-view.gl-0.1.3.tgz","_integrity":"sha512-NitDccOalSk8l72eT52U4IVGwCSpFDRTheacHBhmeqoxaZQ0rR4p/1vLBSEQ3k65PZRpcFIi9Drts4/zkFOyuQ==","_npmVersion":"10.9.3","description":"🪟 Utilities for managing WebGL resources.","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite":"^7.0.2","vitest":"^3.2.4","prettier":"^3.6.2","happy-dom":"^20.0.0","@vitest/ui":"^3.2.4","typescript":"^5.8.3","concurrently":"^9.2.1","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/view.gl_0.1.3_1760495046748_0.4631528747685818","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@bigmistqke/view.gl","version":"0.1.4","keywords":["WebGL"],"author":"","license":"ISC","_id":"@bigmistqke/view.gl@0.1.4","maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"dist":{"shasum":"112ce655584a618f13df65dd2ada32e949bfaa83","tarball":"https://registry.npmjs.org/@bigmistqke/view.gl/-/view.gl-0.1.4.tgz","fileCount":58,"integrity":"sha512-icx9WiLvmiJxrztMqFl+1qO7HDeLlzi/0T4vUx5K0F1CiSI4vYi7CUqAvgTUEixMMp2yzUuakXtAv2M5s7qWOg==","signatures":[{"sig":"MEQCIHxedokNYHb0PwNM7UH9aYzgEp25raBphZqJhqzUZRp3AiAUhutBboMgm0s8zK0IrpC3GiRWjnBbTPorkHTabMFnsQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":408144},"_from":"file:bigmistqke-view.gl-0.1.4.tgz","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./tag":{"types":"./dist/tag.d.mts","import":"./dist/tag.mjs"}},"scripts":{"dev":"vite serve dev","test":"vitest --run","build":"tsup","format":"prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"","test:ui":"vitest --ui","dev:build":"vite build dev","dev:watch":"concurrently \"pnpm dev:preview\" \"vite dev:build --watch\"","lint:types":"tsc --noEmit","prepublish":"pnpm build","dev:preview":"vite preview dev","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"bigmistqke","email":"vandijckv@gmail.com"},"_resolved":"/private/var/folders/kf/33x7c6xs76l2v21jmt7lmhpm0000gn/T/0b1b9aa6a57c924a9c0a1b0a9de9c453/bigmistqke-view.gl-0.1.4.tgz","_integrity":"sha512-icx9WiLvmiJxrztMqFl+1qO7HDeLlzi/0T4vUx5K0F1CiSI4vYi7CUqAvgTUEixMMp2yzUuakXtAv2M5s7qWOg==","_npmVersion":"10.9.3","description":"🪟 Utilities for managing WebGL resources.","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite":"^7.0.2","vitest":"^3.2.4","prettier":"^3.6.2","happy-dom":"^20.0.0","@vitest/ui":"^3.2.4","typescript":"^5.8.3","concurrently":"^9.2.1","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/view.gl_0.1.4_1760652664359_0.3677380702322488","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@bigmistqke/view.gl","version":"0.1.5","keywords":["WebGL"],"author":"","license":"ISC","_id":"@bigmistqke/view.gl@0.1.5","maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"dist":{"shasum":"7c8e987d3a8398355338b3acf7c8adf85b5893ac","tarball":"https://registry.npmjs.org/@bigmistqke/view.gl/-/view.gl-0.1.5.tgz","fileCount":59,"integrity":"sha512-4/gpv8UsOg9tOBE4HaDQNXzv47vxZLreJsZCqIt8OLAflsOAM/RMjICSiWEObwW4TmgLp+v3p9A3LnGtNsr04Q==","signatures":[{"sig":"MEUCIQC02KL8ciEPXqIvXhU9Jr55traQ0oBeqPgdmuegwfnTTgIgVJ3DPm2xx/wpRiQWaZF48CpxbyzKd/xAAwxu78DTa48=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":418299},"_from":"file:bigmistqke-view.gl-0.1.5.tgz","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./tag":{"types":"./dist/tag.d.mts","import":"./dist/tag.mjs"}},"scripts":{"dev":"vite serve dev","test":"vitest --run","build":"tsup","format":"prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"","test:ui":"vitest --ui","dev:build":"vite build dev","dev:watch":"concurrently \"pnpm dev:preview\" \"vite dev:build --watch\"","lint:types":"tsc --noEmit","prepublish":"pnpm build","dev:preview":"vite preview dev","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"bigmistqke","email":"vandijckv@gmail.com"},"_resolved":"/private/var/folders/kf/33x7c6xs76l2v21jmt7lmhpm0000gn/T/de79b0e9e8a262fa28d13b2f32f2faa9/bigmistqke-view.gl-0.1.5.tgz","_integrity":"sha512-4/gpv8UsOg9tOBE4HaDQNXzv47vxZLreJsZCqIt8OLAflsOAM/RMjICSiWEObwW4TmgLp+v3p9A3LnGtNsr04Q==","_npmVersion":"10.9.3","description":"🪟 Utilities for managing WebGL resources.","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite":"^7.0.2","vitest":"^3.2.4","prettier":"^3.6.2","happy-dom":"^20.0.0","@vitest/ui":"^3.2.4","typescript":"^5.8.3","concurrently":"^9.2.1","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/view.gl_0.1.5_1760658033284_0.18655737984518383","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@bigmistqke/view.gl","version":"0.1.6","keywords":["WebGL"],"author":"","license":"ISC","_id":"@bigmistqke/view.gl@0.1.6","maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"dist":{"shasum":"6ff9f9add64135c7ac8edc42989b0f87ba9d11fd","tarball":"https://registry.npmjs.org/@bigmistqke/view.gl/-/view.gl-0.1.6.tgz","fileCount":59,"integrity":"sha512-SRWmBT1jp5v6PjPnCjeIzme1ZSKU4Wrj5K1XtQZ6539ApqjRFHygvwdaCkqvTAjA2aDdAUj19S0UmmzqXmMZfQ==","signatures":[{"sig":"MEUCIQDdDuj+UYcReRS6V//IwqmpWAyflHPLPPYnU69SDDxO+wIgbEWul0WIigc6syJrJyjtEdt32izuXxEALY8BDt/nO7E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":427433},"_from":"file:bigmistqke-view.gl-0.1.6.tgz","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./tag":{"types":"./dist/tag.d.mts","import":"./dist/tag.mjs"}},"scripts":{"dev":"vite serve dev","test":"vitest --run","build":"tsup","format":"prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"","test:ui":"vitest --ui","dev:build":"vite build dev","dev:watch":"concurrently \"pnpm dev:preview\" \"vite dev:build --watch\"","lint:types":"tsc --noEmit","prepublish":"pnpm build","dev:preview":"vite preview dev","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"bigmistqke","email":"vandijckv@gmail.com"},"_resolved":"/private/var/folders/kf/33x7c6xs76l2v21jmt7lmhpm0000gn/T/ed9c98d67d9c984a82a539115d512113/bigmistqke-view.gl-0.1.6.tgz","_integrity":"sha512-SRWmBT1jp5v6PjPnCjeIzme1ZSKU4Wrj5K1XtQZ6539ApqjRFHygvwdaCkqvTAjA2aDdAUj19S0UmmzqXmMZfQ==","_npmVersion":"10.9.3","description":"🪟 Utilities for managing WebGL resources.","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite":"^7.0.2","vitest":"^3.2.4","prettier":"^3.6.2","happy-dom":"^20.0.0","@vitest/ui":"^3.2.4","typescript":"^5.8.3","concurrently":"^9.2.1","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/view.gl_0.1.6_1760661844803_0.8852343078676184","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@bigmistqke/view.gl","version":"0.1.7","keywords":["WebGL"],"author":"","license":"ISC","_id":"@bigmistqke/view.gl@0.1.7","maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"dist":{"shasum":"3d80aa3e45b4cc567f8183868e3de23b7e188e4f","tarball":"https://registry.npmjs.org/@bigmistqke/view.gl/-/view.gl-0.1.7.tgz","fileCount":60,"integrity":"sha512-C73S6uKg7qJxN/z1KdDfWB1JOtWV3SGX22hLSW7EjVSj5nTSvUsEu0UQPPk3A/FJzz84kv7S1QoDRT/v/Y30bg==","signatures":[{"sig":"MEUCIAy4mhShBcFE4t9l/+cF5FvJEjoXaUMzW2nMdvhpAFx1AiEAiLaLOOrG8no6cX3qLV4vx4K7J4dhZ7R3y86gH8lClQw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":434152},"_from":"file:bigmistqke-view.gl-0.1.7.tgz","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./tag":{"types":"./dist/tag.d.mts","import":"./dist/tag.mjs"}},"scripts":{"dev":"vite serve dev","test":"vitest --run","build":"tsup","format":"prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"","test:ui":"vitest --ui","dev:build":"vite build dev","dev:watch":"concurrently \"pnpm dev:preview\" \"vite dev:build --watch\"","lint:types":"tsc --noEmit","prepublish":"pnpm build","dev:preview":"vite preview dev","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"bigmistqke","email":"vandijckv@gmail.com"},"_resolved":"/private/var/folders/kf/33x7c6xs76l2v21jmt7lmhpm0000gn/T/726dd86ca2940a9867f29ba4bf778042/bigmistqke-view.gl-0.1.7.tgz","_integrity":"sha512-C73S6uKg7qJxN/z1KdDfWB1JOtWV3SGX22hLSW7EjVSj5nTSvUsEu0UQPPk3A/FJzz84kv7S1QoDRT/v/Y30bg==","_npmVersion":"10.9.3","description":"👀 Utilities for managing WebGL resources.","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite":"^7.0.2","vitest":"^3.2.4","prettier":"^3.6.2","happy-dom":"^20.0.0","@vitest/ui":"^3.2.4","typescript":"^5.8.3","concurrently":"^9.2.1","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/view.gl_0.1.7_1760703100457_0.5833306266882152","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@bigmistqke/view.gl","version":"0.1.8","keywords":["WebGL"],"author":"","license":"ISC","_id":"@bigmistqke/view.gl@0.1.8","maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"dist":{"shasum":"cf503cd87772fb95f6e98375b3463cb089eb1eb4","tarball":"https://registry.npmjs.org/@bigmistqke/view.gl/-/view.gl-0.1.8.tgz","fileCount":60,"integrity":"sha512-6iG/Ok2GhAQpaXyxuIFGvGAKmnRElYDimViBPCVfd+WoTOp9xQYXZlohRQlhLCRcfduuqyx2enCzCOLwy6ZC4A==","signatures":[{"sig":"MEQCICpIy+cBDBYMf12rAIs4qGyVvCzPtbrdxO2WA/EyZUzRAiBpPFJAz1mXGzlZgbzLf0juVfNcQn0BI1LtI+zIgGC/hg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":442438},"_from":"file:bigmistqke-view.gl-0.1.8.tgz","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./tag":{"types":"./dist/tag.d.mts","import":"./dist/tag.mjs"}},"scripts":{"dev":"vite serve dev","test":"vitest --run","build":"tsup","format":"prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"","test:ui":"vitest --ui","dev:build":"vite build dev","dev:watch":"concurrently \"pnpm dev:preview\" \"vite dev:build --watch\"","lint:types":"tsc --noEmit","prepublish":"pnpm build","dev:preview":"vite preview dev","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"bigmistqke","email":"vandijckv@gmail.com"},"_resolved":"/private/var/folders/kf/33x7c6xs76l2v21jmt7lmhpm0000gn/T/36b06db571bfa4d3184435192e1f5fca/bigmistqke-view.gl-0.1.8.tgz","_integrity":"sha512-6iG/Ok2GhAQpaXyxuIFGvGAKmnRElYDimViBPCVfd+WoTOp9xQYXZlohRQlhLCRcfduuqyx2enCzCOLwy6ZC4A==","_npmVersion":"10.9.3","description":"👀 Utilities for managing WebGL resources.","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite":"^7.0.2","vitest":"^3.2.4","prettier":"^3.6.2","happy-dom":"^20.0.0","@vitest/ui":"^3.2.4","typescript":"^5.8.3","concurrently":"^9.2.1","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/view.gl_0.1.8_1760735900783_0.8372234235104534","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@bigmistqke/view.gl","version":"0.1.9","keywords":["WebGL"],"author":"","license":"ISC","_id":"@bigmistqke/view.gl@0.1.9","maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"dist":{"shasum":"d578e65b32f6918b333d7bce0bc079f47320bb8b","tarball":"https://registry.npmjs.org/@bigmistqke/view.gl/-/view.gl-0.1.9.tgz","fileCount":62,"integrity":"sha512-Xxi6EHwNRwLSmKEtTCDAjlmA9Q9MxVznXfZ73mIcXD/1zTVuV4z8ycVYCNW2w+1TDqXtUYuvv2H1+crf+VV9GA==","signatures":[{"sig":"MEQCIDC/uRASLWQagLdd74cNsMM4GETujMiIMjkkfC+rp6XsAiAgW6k3ofGNwUC9+8CQTJ7R+feT/CbFSGWd6BUBFqwatw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":480053},"_from":"file:bigmistqke-view.gl-0.1.9.tgz","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./tag":{"types":"./dist/tag.d.mts","import":"./dist/tag.mjs"}},"scripts":{"dev":"vite serve dev","test":"vitest --run","build":"tsup","format":"prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"","test:ui":"vitest --ui","dev:build":"vite build dev","dev:watch":"concurrently \"pnpm dev:preview\" \"vite dev:build --watch\"","lint:types":"tsc --noEmit","prepublish":"pnpm build","dev:preview":"vite preview dev","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"bigmistqke","email":"vandijckv@gmail.com"},"_resolved":"/private/var/folders/kf/33x7c6xs76l2v21jmt7lmhpm0000gn/T/5ee198456b0337cbf785f0b79f756569/bigmistqke-view.gl-0.1.9.tgz","_integrity":"sha512-Xxi6EHwNRwLSmKEtTCDAjlmA9Q9MxVznXfZ73mIcXD/1zTVuV4z8ycVYCNW2w+1TDqXtUYuvv2H1+crf+VV9GA==","_npmVersion":"10.9.3","description":"👀 Utilities for managing WebGL resources.","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite":"^7.0.2","vitest":"^3.2.4","prettier":"^3.6.2","happy-dom":"^20.0.0","@vitest/ui":"^3.2.4","typescript":"^5.8.3","concurrently":"^9.2.1","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/view.gl_0.1.9_1760801958268_0.3770353050152033","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@bigmistqke/view.gl","version":"0.1.10","keywords":["WebGL"],"author":"","license":"ISC","_id":"@bigmistqke/view.gl@0.1.10","maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"dist":{"shasum":"01ebafeb92e500162c8b628affed4603b14bd3ac","tarball":"https://registry.npmjs.org/@bigmistqke/view.gl/-/view.gl-0.1.10.tgz","fileCount":52,"integrity":"sha512-ZNsa+eC/RxvrfQyr5OeAK0bIcAHBh/dJS/7uR8CYrP3epqaMvs8Wxgc5btkLi6g0JLaHsz4xVteR6KWXSOHL/A==","signatures":[{"sig":"MEQCIHReCCjWC9GXe7In7eWMq9aRORfPnNjyg0LcBLCjQJbZAiBlTyUq42x8q2vbxGx03tGl9g5EjrRCbLp4NQIeoEgxNw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":408506},"_from":"file:bigmistqke-view.gl-0.1.10.tgz","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./gl":{"types":"./dist/gl.d.mts","import":"./dist/gl.mjs"},"./tag":{"types":"./dist/tag.d.mts","import":"./dist/tag.mjs"}},"scripts":{"dev":"vite serve dev","bump":"bumpp","test":"vitest --run","build":"tsup","format":"prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"","test:ui":"vitest --ui","dev:build":"vite build dev","dev:watch":"concurrently \"pnpm dev:preview\" \"vite dev:build --watch\"","lint:types":"tsc --noEmit","prepublish":"pnpm test && pnpm build","dev:preview":"vite preview dev","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"bigmistqke","email":"vandijckv@gmail.com"},"_resolved":"/private/var/folders/g1/m1n9pj9x2b184xp93pb9_6d00000gn/T/53cdcc83b1069c1d6e96a056764d76d1/bigmistqke-view.gl-0.1.10.tgz","_integrity":"sha512-ZNsa+eC/RxvrfQyr5OeAK0bIcAHBh/dJS/7uR8CYrP3epqaMvs8Wxgc5btkLi6g0JLaHsz4xVteR6KWXSOHL/A==","_npmVersion":"11.5.1","description":"👀 Utilities for managing WebGL resources.","directories":{},"_nodeVersion":"24.5.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite":"^7.0.2","bumpp":"^10.3.2","vitest":"^3.2.4","prettier":"^3.6.2","happy-dom":"^20.0.0","@vitest/ui":"^3.2.4","typescript":"^5.8.3","concurrently":"^9.2.1","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/view.gl_0.1.10_1767788127760_0.3755760518270883","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@bigmistqke/view.gl","version":"0.1.11","keywords":["WebGL"],"author":"","license":"ISC","_id":"@bigmistqke/view.gl@0.1.11","maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"dist":{"shasum":"700f49f706ae4ecbe66716618530553139cf47f3","tarball":"https://registry.npmjs.org/@bigmistqke/view.gl/-/view.gl-0.1.11.tgz","fileCount":51,"integrity":"sha512-Sm9oulBG9cTOcpktXXLsiIYldcJNEJfRNUWGygjq0K0WuHblS7mEnnLdZI228/n03eXd2ET1RXS4t21sPyUcaA==","signatures":[{"sig":"MEQCIBuHBjGvOAhOelYFJxZ1x1i54N2FQAsYSUfM4rwZr3EGAiBHVsf4hNE8hA13EMFVOTSrFaWXchEuiRrWP9cxSsi1KQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":414039},"_from":"file:bigmistqke-view.gl-0.1.11.tgz","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./gl":{"types":"./dist/gl.d.mts","import":"./dist/gl.mjs"},"./tag":{"types":"./dist/tag.d.mts","import":"./dist/tag.mjs"}},"scripts":{"dev":"vite serve dev","bump":"bumpp","test":"vitest --run","build":"tsup","format":"prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"","test:ui":"vitest --ui","dev:build":"vite build dev","dev:watch":"concurrently \"pnpm dev:preview\" \"vite dev:build --watch\"","lint:types":"tsc --noEmit","prepublish":"pnpm test && pnpm build","dev:preview":"vite preview dev","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"bigmistqke","email":"vandijckv@gmail.com"},"_resolved":"/private/var/folders/g1/m1n9pj9x2b184xp93pb9_6d00000gn/T/09a2b2818a7f8bc4673d9d4bcc499476/bigmistqke-view.gl-0.1.11.tgz","_integrity":"sha512-Sm9oulBG9cTOcpktXXLsiIYldcJNEJfRNUWGygjq0K0WuHblS7mEnnLdZI228/n03eXd2ET1RXS4t21sPyUcaA==","_npmVersion":"11.5.1","description":"👀 Utilities for managing WebGL resources.","directories":{},"_nodeVersion":"24.5.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite":"^7.0.2","bumpp":"^10.3.2","vitest":"^3.2.4","prettier":"^3.6.2","happy-dom":"^20.0.0","@vitest/ui":"^3.2.4","typescript":"^5.8.3","concurrently":"^9.2.1","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/view.gl_0.1.11_1767788434490_0.8700745846094387","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@bigmistqke/view.gl","version":"0.1.12","keywords":["WebGL"],"author":"","license":"ISC","_id":"@bigmistqke/view.gl@0.1.12","maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"dist":{"shasum":"f892e51214e6f0c27d49ae6bd0a2a74768d143ce","tarball":"https://registry.npmjs.org/@bigmistqke/view.gl/-/view.gl-0.1.12.tgz","fileCount":65,"integrity":"sha512-Fs7c3samdrVicTtlUJQTZ3ij3QeUN2qTccZBbETBOHekLADy8xQonPT7RtyZGy0AetGCAoObtWZ7Kfkoq3jAqA==","signatures":[{"sig":"MEQCIE5wNuMa7qmDu1lZqp7xZwD3+B6uZnqdbLm0XJHSXUJYAiAYSRnGB/agTr9OYzyCCuHbNiImhTIwn6dmeqwgxd7yWg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":471154},"_from":"file:bigmistqke-view.gl-0.1.12.tgz","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./tag":{"types":"./dist/tag.d.mts","import":"./dist/tag.mjs"}},"scripts":{"dev":"vite serve dev","bump":"bumpp","test":"vitest --run","build":"tsup","format":"prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"","test:ui":"vitest --ui","dev:build":"vite build dev","dev:watch":"concurrently \"pnpm dev:preview\" \"vite dev:build --watch\"","lint:types":"tsc --noEmit","prepublish":"pnpm build","dev:preview":"vite preview dev","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"bigmistqke","email":"vandijckv@gmail.com"},"_resolved":"/private/var/folders/kf/33x7c6xs76l2v21jmt7lmhpm0000gn/T/111242608f113e40436e547851ff50f6/bigmistqke-view.gl-0.1.12.tgz","_integrity":"sha512-Fs7c3samdrVicTtlUJQTZ3ij3QeUN2qTccZBbETBOHekLADy8xQonPT7RtyZGy0AetGCAoObtWZ7Kfkoq3jAqA==","_npmVersion":"11.6.2","description":"👀 Utilities for managing WebGL resources.","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite":"^7.0.2","bumpp":"^10.4.0","vitest":"^3.2.4","prettier":"^3.6.2","happy-dom":"^20.0.0","@vitest/ui":"^3.2.4","typescript":"^5.8.3","concurrently":"^9.2.1","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/view.gl_0.1.12_1768748912341_0.5051895913992448","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@bigmistqke/view.gl","version":"0.1.13","keywords":["WebGL"],"author":"","license":"ISC","_id":"@bigmistqke/view.gl@0.1.13","maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"dist":{"shasum":"53c56af9ae8d5fe9543c8f8af8c548aebb14c995","tarball":"https://registry.npmjs.org/@bigmistqke/view.gl/-/view.gl-0.1.13.tgz","fileCount":65,"integrity":"sha512-kqp1KS4Sf/2pPwHw3dAzjmCXp/CvjhYYO5jJx54WAJIWACOU0+rG3gm56kYxEGwDfN5qdnkfP17Dvq50dB6OIg==","signatures":[{"sig":"MEUCID2i7Ij4vb1Ytz4I2xfx509/Aet41qsEblkcpvnZnQrjAiEAq2ZgFH2ArDgDDbQ96W/8I4EBlEp4RvUgiVcQZCFrP14=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":471610},"_from":"file:bigmistqke-view.gl-0.1.13.tgz","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./tag":{"types":"./dist/tag.d.mts","import":"./dist/tag.mjs"}},"scripts":{"dev":"vite serve dev","bump":"bumpp","test":"vitest --run","build":"tsup","format":"prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"","test:ui":"vitest --ui","dev:build":"vite build dev","dev:watch":"concurrently \"pnpm dev:preview\" \"vite dev:build --watch\"","lint:types":"tsc --noEmit","prepublish":"pnpm build","dev:preview":"vite preview dev","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"bigmistqke","email":"vandijckv@gmail.com"},"_resolved":"/private/var/folders/kf/33x7c6xs76l2v21jmt7lmhpm0000gn/T/0d0f4e3a7b513e86c5d7279cf4cf47f2/bigmistqke-view.gl-0.1.13.tgz","_integrity":"sha512-kqp1KS4Sf/2pPwHw3dAzjmCXp/CvjhYYO5jJx54WAJIWACOU0+rG3gm56kYxEGwDfN5qdnkfP17Dvq50dB6OIg==","_npmVersion":"11.6.2","description":"👀 Utilities for managing WebGL resources.","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite":"^7.0.2","bumpp":"^10.4.0","vitest":"^3.2.4","prettier":"^3.6.2","happy-dom":"^20.0.0","@vitest/ui":"^3.2.4","typescript":"^5.8.3","concurrently":"^9.2.1","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/view.gl_0.1.13_1768783463971_0.6965414610115883","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"@bigmistqke/view.gl","version":"0.1.14","keywords":["WebGL"],"author":"","license":"ISC","_id":"@bigmistqke/view.gl@0.1.14","maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"dist":{"shasum":"53a43b8d8a3d52626bc1bcc2cee895585817c7eb","tarball":"https://registry.npmjs.org/@bigmistqke/view.gl/-/view.gl-0.1.14.tgz","fileCount":51,"integrity":"sha512-+ADD/rlPIwbFOET08QBr6v5569XOXU1GNVjPpFpOsRpKFqAzZAjOiSkKDauJtw4FktVBNRbGanP/WvkW1wzY0Q==","signatures":[{"sig":"MEYCIQDgdiYR24jhSjrfP+xKoEimwV8oQrXxv3XL+OK3zadJcQIhAP2ltZ5XiSKNh56LnO7QnQ6JmPnG991lp4msJ6FNZh6g","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":397958},"_from":"file:bigmistqke-view.gl-0.1.14.tgz","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./tag":{"types":"./dist/tag.d.mts","import":"./dist/tag.mjs"}},"scripts":{"dev":"vite serve dev","bump":"bumpp","test":"vitest --run","build":"tsup","format":"prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"","test:ui":"vitest --ui","dev:build":"vite build dev","dev:watch":"concurrently \"pnpm dev:preview\" \"vite dev:build --watch\"","lint:types":"tsc --noEmit","prepublish":"pnpm build","dev:preview":"vite preview dev","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"bigmistqke","email":"vandijckv@gmail.com"},"_resolved":"/private/var/folders/g1/m1n9pj9x2b184xp93pb9_6d00000gn/T/a0d7d55d6fa03bbfff8e1955f20f0b1b/bigmistqke-view.gl-0.1.14.tgz","_integrity":"sha512-+ADD/rlPIwbFOET08QBr6v5569XOXU1GNVjPpFpOsRpKFqAzZAjOiSkKDauJtw4FktVBNRbGanP/WvkW1wzY0Q==","_npmVersion":"11.5.1","description":"👀 Utilities for managing WebGL resources.","directories":{},"_nodeVersion":"24.5.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite":"^7.0.2","bumpp":"^10.4.0","vitest":"^3.2.4","prettier":"^3.6.2","happy-dom":"^20.0.0","@vitest/ui":"^3.2.4","typescript":"^5.8.3","concurrently":"^9.2.1","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/view.gl_0.1.14_1769771040359_0.24000065379395674","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"@bigmistqke/view.gl","version":"0.1.15","keywords":["WebGL"],"author":"","license":"ISC","_id":"@bigmistqke/view.gl@0.1.15","maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"dist":{"shasum":"71dd588b171042ec55038fca8237d480ad8cb64e","tarball":"https://registry.npmjs.org/@bigmistqke/view.gl/-/view.gl-0.1.15.tgz","fileCount":56,"integrity":"sha512-oVem5fE/EQqaLs9lr2n8p+8yrUb35XhBCaXK2jIxQ7LUEP8DKl7rmtkXuwtJCpxUF9Ap0H9fesJ2nagkON0k+g==","signatures":[{"sig":"MEQCIEe+pEXI+2WRqPme3lnRT+6aj+naWQXIf7xstVki38BtAiA2N5U4Ui6D3i+n1amPFMVixLQ6XMQ90ayi2Hc1z0cYoQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":402799},"_from":"file:bigmistqke-view.gl-0.1.15.tgz","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./gl":{"types":"./dist/gl.d.mts","import":"./dist/gl.mjs"},"./tag":{"types":"./dist/tag.d.mts","import":"./dist/tag.mjs"}},"scripts":{"dev":"vite serve dev","bump":"bumpp","test":"vitest --run","build":"tsup","format":"prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"","test:ui":"vitest --ui","dev:build":"vite build dev","dev:watch":"concurrently \"pnpm dev:preview\" \"vite dev:build --watch\"","lint:types":"tsc --noEmit","prepublish":"pnpm build","dev:preview":"vite preview dev","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"bigmistqke","email":"vandijckv@gmail.com"},"_resolved":"/private/var/folders/g1/m1n9pj9x2b184xp93pb9_6d00000gn/T/ffac3d8c345a83f571886faecd7e340b/bigmistqke-view.gl-0.1.15.tgz","_integrity":"sha512-oVem5fE/EQqaLs9lr2n8p+8yrUb35XhBCaXK2jIxQ7LUEP8DKl7rmtkXuwtJCpxUF9Ap0H9fesJ2nagkON0k+g==","_npmVersion":"11.5.1","description":"👀 Utilities for managing WebGL resources.","directories":{},"_nodeVersion":"24.5.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite":"^7.0.2","bumpp":"^10.4.0","vitest":"^3.2.4","prettier":"^3.6.2","happy-dom":"^20.0.0","@vitest/ui":"^3.2.4","typescript":"^5.8.3","concurrently":"^9.2.1","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/view.gl_0.1.15_1769772191197_0.8042648152644849","host":"s3://npm-registry-packages-npm-production"}},"0.1.16":{"name":"@bigmistqke/view.gl","version":"0.1.16","keywords":["WebGL"],"author":"","license":"ISC","_id":"@bigmistqke/view.gl@0.1.16","maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"dist":{"shasum":"d49e1183f676bf012e9730f61fd43c9d90ffa23b","tarball":"https://registry.npmjs.org/@bigmistqke/view.gl/-/view.gl-0.1.16.tgz","fileCount":56,"integrity":"sha512-BZEVGxFyTTMwQAn5eTkpEArrc0+NlKhQ4LyhfOB2BfxHEmWiC6pdED43qPN4zq4gHkdIzNgPq4I6PXrVW0QeOg==","signatures":[{"sig":"MEUCIQCq7mWbVsjPCnRVdrIUxwQLQm+f+WCfq/58E/7zVtOqOgIgQUMMTUN6lXA6gxYgMHMhs7w8mFoJuv0vztz7Gap7f3I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":403443},"_from":"file:bigmistqke-view.gl-0.1.16.tgz","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./gl":{"types":"./dist/gl.d.mts","import":"./dist/gl.mjs"},"./tag":{"types":"./dist/tag.d.mts","import":"./dist/tag.mjs"}},"scripts":{"dev":"vite serve dev","bump":"bumpp","test":"vitest --run","build":"tsup","format":"prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"","test:ui":"vitest --ui","dev:build":"vite build dev","dev:watch":"concurrently \"pnpm dev:preview\" \"vite dev:build --watch\"","lint:types":"tsc --noEmit","prepublish":"pnpm test && pnpm build","dev:preview":"vite preview dev","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"bigmistqke","email":"vandijckv@gmail.com"},"_resolved":"/private/var/folders/g1/m1n9pj9x2b184xp93pb9_6d00000gn/T/67034ad478864485212723b67aaca7ae/bigmistqke-view.gl-0.1.16.tgz","_integrity":"sha512-BZEVGxFyTTMwQAn5eTkpEArrc0+NlKhQ4LyhfOB2BfxHEmWiC6pdED43qPN4zq4gHkdIzNgPq4I6PXrVW0QeOg==","_npmVersion":"11.5.1","description":"👀 Utilities for managing WebGL resources.","directories":{},"_nodeVersion":"24.5.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite":"^7.0.2","bumpp":"^10.4.0","vitest":"^3.2.4","prettier":"^3.6.2","happy-dom":"^20.0.0","@vitest/ui":"^3.2.4","typescript":"^5.8.3","concurrently":"^9.2.1","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/view.gl_0.1.16_1772704182312_0.7472019096403013","host":"s3://npm-registry-packages-npm-production"}},"0.1.17":{"name":"@bigmistqke/view.gl","version":"0.1.17","keywords":["WebGL"],"author":"","license":"ISC","_id":"@bigmistqke/view.gl@0.1.17","maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"dist":{"shasum":"05891ff4f74ac940cd2c7e66247c2d69a1d7c72c","tarball":"https://registry.npmjs.org/@bigmistqke/view.gl/-/view.gl-0.1.17.tgz","fileCount":56,"integrity":"sha512-wVDhsXeBx8C825efuEO43ozWj+Hf2c7DeaNZLyuli647B+WMGixKPTLEBBsTBsx0n7Y1g524cxhlKyahW7vH5w==","signatures":[{"sig":"MEYCIQDUoyn6TWLyhSfrtHciX0Hts/Q+gJrhUjKypR6tQ+TTRAIhAJK9eRGWanN6+LPgrKj/vThuQb9WQ+FV13N+8TCxHJah","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":405751},"_from":"file:bigmistqke-view.gl-0.1.17.tgz","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./gl":{"types":"./dist/gl.d.mts","import":"./dist/gl.mjs"},"./tag":{"types":"./dist/tag.d.mts","import":"./dist/tag.mjs"}},"scripts":{"dev":"vite serve dev","bump":"bumpp","test":"vitest --run","build":"tsup","format":"prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"","test:ui":"vitest --ui","dev:build":"vite build dev","dev:watch":"concurrently \"pnpm dev:preview\" \"vite dev:build --watch\"","lint:types":"tsc --noEmit","prepublish":"pnpm test && pnpm build","dev:preview":"vite preview dev","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"bigmistqke","email":"vandijckv@gmail.com"},"_resolved":"/private/var/folders/g1/m1n9pj9x2b184xp93pb9_6d00000gn/T/a706b1017b34b7979c1f38080f95135b/bigmistqke-view.gl-0.1.17.tgz","_integrity":"sha512-wVDhsXeBx8C825efuEO43ozWj+Hf2c7DeaNZLyuli647B+WMGixKPTLEBBsTBsx0n7Y1g524cxhlKyahW7vH5w==","_npmVersion":"11.5.1","description":"👀 Utilities for managing WebGL resources.","directories":{},"_nodeVersion":"24.5.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite":"^7.0.2","bumpp":"^10.4.0","vitest":"^3.2.4","prettier":"^3.6.2","happy-dom":"^20.0.0","@vitest/ui":"^3.2.4","typescript":"^5.8.3","concurrently":"^9.2.1","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/view.gl_0.1.17_1775132548880_0.7104638933933118","host":"s3://npm-registry-packages-npm-production"}},"0.1.18":{"name":"@bigmistqke/view.gl","version":"0.1.18","keywords":["WebGL"],"author":"","license":"ISC","_id":"@bigmistqke/view.gl@0.1.18","maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"dist":{"shasum":"95ea14fbd65291b4d6fd785041d1e8f0cedfbf85","tarball":"https://registry.npmjs.org/@bigmistqke/view.gl/-/view.gl-0.1.18.tgz","fileCount":56,"integrity":"sha512-fkuKjN6qf49S6y/lo8lYaTCg4hhqw8QmnUJLkZDyVrusV8hJo9AOH3vEAuOhRPiNhiIdQGizTHSaYxD9Mixf9g==","signatures":[{"sig":"MEYCIQCgKJCohJONwSXqdxY2wwCGhPtlh8Brn7DZ4CwEawhaIAIhALplErxBcSQYBy8l1nckKNK2iv8QB3oTAxtkVZe4Dds2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":413718},"_from":"file:bigmistqke-view.gl-0.1.18.tgz","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./gl":{"types":"./dist/gl.d.mts","import":"./dist/gl.mjs"},"./tag":{"types":"./dist/tag.d.mts","import":"./dist/tag.mjs"}},"scripts":{"dev":"vite serve dev","bump":"bumpp","test":"vitest --run","build":"tsup","format":"prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"","test:ui":"vitest --ui","dev:build":"vite build dev","dev:watch":"concurrently \"pnpm dev:preview\" \"vite dev:build --watch\"","lint:types":"tsc --noEmit","prepublish":"pnpm test && pnpm build","dev:preview":"vite preview dev","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"bigmistqke","email":"vandijckv@gmail.com"},"_resolved":"/private/var/folders/g1/m1n9pj9x2b184xp93pb9_6d00000gn/T/b7ee6e0ab608eb2b1e10f3609c7dd395/bigmistqke-view.gl-0.1.18.tgz","_integrity":"sha512-fkuKjN6qf49S6y/lo8lYaTCg4hhqw8QmnUJLkZDyVrusV8hJo9AOH3vEAuOhRPiNhiIdQGizTHSaYxD9Mixf9g==","_npmVersion":"11.5.1","description":"👀 Utilities for managing WebGL resources.","directories":{},"_nodeVersion":"24.5.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite":"^7.0.2","bumpp":"^10.4.0","vitest":"^3.2.4","prettier":"^3.6.2","happy-dom":"^20.0.0","@vitest/ui":"^3.2.4","typescript":"^5.8.3","concurrently":"^9.2.1","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/view.gl_0.1.18_1775133847500_0.4874123082670154","host":"s3://npm-registry-packages-npm-production"}},"0.1.19":{"name":"@bigmistqke/view.gl","version":"0.1.19","keywords":["WebGL"],"author":"","license":"ISC","_id":"@bigmistqke/view.gl@0.1.19","maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"dist":{"shasum":"0eed9cae5c49caeedb2366416b1baa87598b2804","tarball":"https://registry.npmjs.org/@bigmistqke/view.gl/-/view.gl-0.1.19.tgz","fileCount":56,"integrity":"sha512-WCnfnSlx0HNoNeDkXX2xZrYm37OwHBjD1LmyoK0753TQQ8LP67ByoIkCmDCFw4CDhRfsnZxrHPPDfOmRBioORA==","signatures":[{"sig":"MEQCIBWRczN7KZITdOXwfoMML9BNBQVlzmMyYo9IuzJ5vb+rAiBH+JsxeJstjN3vRSf/aXzZIvWAWjaq0Wa6QqrZOFQ0Zw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":428486},"_from":"file:bigmistqke-view.gl-0.1.19.tgz","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./gl":{"types":"./dist/gl.d.mts","import":"./dist/gl.mjs"},"./tag":{"types":"./dist/tag.d.mts","import":"./dist/tag.mjs"}},"scripts":{"dev":"vite serve dev","bump":"bumpp","test":"vitest --run","build":"tsup","format":"prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"","test:ui":"vitest --ui","dev:build":"vite build dev","dev:watch":"concurrently \"pnpm dev:preview\" \"vite dev:build --watch\"","lint:types":"tsc --noEmit","prepublish":"pnpm test && pnpm build","dev:preview":"vite preview dev","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"bigmistqke","email":"vandijckv@gmail.com"},"_resolved":"/private/var/folders/g1/m1n9pj9x2b184xp93pb9_6d00000gn/T/8f2009194e94c13788d48f98e9d3ebb5/bigmistqke-view.gl-0.1.19.tgz","_integrity":"sha512-WCnfnSlx0HNoNeDkXX2xZrYm37OwHBjD1LmyoK0753TQQ8LP67ByoIkCmDCFw4CDhRfsnZxrHPPDfOmRBioORA==","_npmVersion":"11.16.0","description":"👀 Utilities for managing WebGL resources.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite":"^7.0.2","bumpp":"^10.4.0","vitest":"^3.2.4","prettier":"^3.6.2","happy-dom":"^20.0.0","@vitest/ui":"^3.2.4","typescript":"^5.8.3","concurrently":"^9.2.1","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/view.gl_0.1.19_1786631828039_0.8297106052668124","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@bigmistqke/view.gl","version":"0.2.0","keywords":["WebGL"],"author":"","license":"ISC","_id":"@bigmistqke/view.gl@0.2.0","maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"dist":{"shasum":"f7fc2e15c6742d37cb0766e8129f65937161cc83","tarball":"https://registry.npmjs.org/@bigmistqke/view.gl/-/view.gl-0.2.0.tgz","fileCount":56,"integrity":"sha512-ALslSIWBODEattMWJTNH3ZH5uG3k53CwTqawSK/8vZhmGXSKb9RXsRGYXRF9MZBZ1bGl0XNXBjd3Gqfy2uF2OQ==","signatures":[{"sig":"MEYCIQCwWPqCtN5WaDbYgvc9mp7O9glPi0rcYZBCAc9adx8hpAIhAOjUtMZKSehJVxi12j2b+ZBziz9PHGZoNCSdfzKtK1iN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":463184},"_from":"file:bigmistqke-view.gl-0.2.0.tgz","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./gl":{"types":"./dist/gl.d.mts","import":"./dist/gl.mjs"},"./tag":{"types":"./dist/tag.d.mts","import":"./dist/tag.mjs"}},"scripts":{"dev":"vite serve dev","bump":"bumpp","test":"vitest --run","build":"tsup","format":"prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"","test:ui":"vitest --ui","dev:build":"vite build dev","dev:watch":"concurrently \"pnpm dev:preview\" \"vite dev:build --watch\"","lint:types":"tsc --noEmit","prepublish":"pnpm test && pnpm build","dev:preview":"vite preview dev","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"bigmistqke","email":"vandijckv@gmail.com"},"_resolved":"/private/var/folders/g1/m1n9pj9x2b184xp93pb9_6d00000gn/T/e2b112eff1f248b55e6821e1f414d514/bigmistqke-view.gl-0.2.0.tgz","_integrity":"sha512-ALslSIWBODEattMWJTNH3ZH5uG3k53CwTqawSK/8vZhmGXSKb9RXsRGYXRF9MZBZ1bGl0XNXBjd3Gqfy2uF2OQ==","_npmVersion":"11.5.1","description":"👀 Utilities for managing WebGL resources.","directories":{},"_nodeVersion":"24.5.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite":"^7.0.2","bumpp":"^10.4.0","vitest":"^3.2.4","prettier":"^3.6.2","happy-dom":"^20.0.0","@vitest/ui":"^3.2.4","typescript":"^5.8.3","concurrently":"^9.2.1","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/view.gl_0.2.0_1787836931775_0.703714260571588","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@bigmistqke/view.gl","version":"0.3.0","keywords":["WebGL"],"author":"","license":"ISC","_id":"@bigmistqke/view.gl@0.3.0","maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"dist":{"shasum":"f64d3f17ef26f045067103fe3b504342570fcd33","tarball":"https://registry.npmjs.org/@bigmistqke/view.gl/-/view.gl-0.3.0.tgz","fileCount":74,"integrity":"sha512-jMK9hExQC2hc8jgy5Tfmf8tIhKfCqyQtJY1mYfmzFu0hi3u53/B8o6lUhh0DprHolMRWzZEglMTjPNWRVGXm0g==","signatures":[{"sig":"MEUCIQCX9feQXLC9yTyvwUUyc1uun5XPF5BoVMoBsFzVCoja0QIgY5xk+jIHnCMolHAoqbxVaS5AqViA73OvQ+WAaAe3sBk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":610652},"_from":"file:bigmistqke-view.gl-0.3.0.tgz","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./gl":{"types":"./dist/gl.d.mts","import":"./dist/gl.mjs"},"./tag":{"types":"./dist/tag.d.mts","import":"./dist/tag.mjs"}},"scripts":{"dev":"vite serve dev","bump":"bumpp","test":"vitest --run","build":"tsup","format":"prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"","test:ui":"vitest --ui","dev:build":"vite build dev","dev:watch":"concurrently \"pnpm dev:preview\" \"vite dev:build --watch\"","lint:types":"tsc --noEmit","prepublish":"pnpm test && pnpm build","dev:preview":"vite preview dev","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"bigmistqke","email":"vandijckv@gmail.com"},"_resolved":"/private/var/folders/g1/m1n9pj9x2b184xp93pb9_6d00000gn/T/9a36a47326bdc8a814eda44f1e186e45/bigmistqke-view.gl-0.3.0.tgz","_integrity":"sha512-jMK9hExQC2hc8jgy5Tfmf8tIhKfCqyQtJY1mYfmzFu0hi3u53/B8o6lUhh0DprHolMRWzZEglMTjPNWRVGXm0g==","_npmVersion":"11.5.1","description":"👀 Utilities for managing WebGL resources.","directories":{},"_nodeVersion":"24.5.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite":"^7.0.2","bumpp":"^10.4.0","vitest":"^3.2.4","prettier":"^3.6.2","happy-dom":"^20.0.0","@vitest/ui":"^3.2.4","typescript":"^5.8.3","concurrently":"^9.2.1","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/view.gl_0.3.0_1788188874873_0.23234933361263344","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@bigmistqke/view.gl","version":"0.4.0","keywords":["WebGL"],"author":"","license":"ISC","_id":"@bigmistqke/view.gl@0.4.0","maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"dist":{"shasum":"399b61a15f7ea475ceaf704116e436f3429657eb","tarball":"https://registry.npmjs.org/@bigmistqke/view.gl/-/view.gl-0.4.0.tgz","fileCount":74,"integrity":"sha512-R3E/XsTcUP32Wa1fBkfP9rpOAzwsK2YNm9pphiIahExpK0cieuGHZ7pENkJxoOYfjXlGjrVK+Fe6xRhLvg1M0w==","signatures":[{"sig":"MEUCIQDqPrWCytVFlA/K6qBkXTNQtecdO7Mn28hjSq868GzEAAIgBLcUjHcrq2Ss89C2OC/xIzuDjpKpQ0sHZradg+boE/A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":616185},"_from":"file:bigmistqke-view.gl-0.4.0.tgz","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./gl":{"types":"./dist/gl.d.mts","import":"./dist/gl.mjs"},"./tag":{"types":"./dist/tag.d.mts","import":"./dist/tag.mjs"}},"scripts":{"dev":"vite serve dev","bump":"bumpp","test":"vitest --run","build":"tsup","format":"prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"","test:ui":"vitest --ui","dev:build":"vite build dev","dev:watch":"concurrently \"pnpm dev:preview\" \"vite dev:build --watch\"","lint:types":"tsc --noEmit","prepublish":"pnpm test && pnpm build","dev:preview":"vite preview dev","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"bigmistqke","email":"vandijckv@gmail.com"},"_resolved":"/private/var/folders/g1/m1n9pj9x2b184xp93pb9_6d00000gn/T/f6ab11c8640599e75589cf5f46fdd890/bigmistqke-view.gl-0.4.0.tgz","_integrity":"sha512-R3E/XsTcUP32Wa1fBkfP9rpOAzwsK2YNm9pphiIahExpK0cieuGHZ7pENkJxoOYfjXlGjrVK+Fe6xRhLvg1M0w==","_npmVersion":"11.5.1","description":"👀 Utilities for managing WebGL resources.","directories":{},"_nodeVersion":"24.5.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vite":"^7.0.2","bumpp":"^10.4.0","vitest":"^3.2.4","prettier":"^3.6.2","happy-dom":"^20.0.0","@vitest/ui":"^3.2.4","typescript":"^5.8.3","concurrently":"^9.2.1","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/view.gl_0.4.0_1788350137536_0.621875239187283","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@bigmistqke/view.gl","version":"0.5.0","keywords":["WebGL"],"author":"","license":"ISC","_id":"@bigmistqke/view.gl@0.5.0","maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"dist":{"shasum":"b3d668189846416adffba7d07abf16da65169b54","tarball":"https://registry.npmjs.org/@bigmistqke/view.gl/-/view.gl-0.5.0.tgz","fileCount":74,"integrity":"sha512-/mARu6xbdvdI5MUKQyo+Xq0Cn94ARuGvpmybnvnagU3ZxTEX6Vo//SKEjdi4yHOCu0WZ1tixrhMBW3KpKAMH0A==","signatures":[{"sig":"MEUCICdT2guvgBsv1AHTHSHeVSC4pUGOU926ZeXbaYU0IChiAiEAypTBvNTSeLI/7khBvAZ482B8FxIeQXNVW2z08A2srUQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDeuRrZ5g75pUnT3bxttUUVhZpX/oWuFqoS9LEhMscf7AiEAu5BSpte8rqDxK9yWORauNZQseFk8f9Ll1jX6sVU/V0M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":619601},"exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./gl":{"types":"./dist/gl.d.mts","import":"./dist/gl.mjs"},"./tag":{"types":"./dist/tag.d.mts","import":"./dist/tag.mjs"}},"gitHead":"1374103a7348e173c3fd2baa2c3760aa86c4c159","scripts":{"dev":"vite serve dev","bump":"bumpp","test":"vitest --run","build":"tsup","format":"prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"","test:ui":"vitest --ui","dev:build":"vite build dev","dev:watch":"concurrently \"pnpm dev:preview\" \"vite dev:build --watch\"","lint:types":"tsc --noEmit","prepublish":"pnpm test && pnpm build","dev:preview":"vite preview dev","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"bigmistqke","email":"vandijckv@gmail.com"},"_npmVersion":"11.5.1","description":"👀 Utilities for managing WebGL resources.","directories":{},"_nodeVersion":"24.5.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.5.1","devDependencies":{"tsup":"^8.5.0","vite":"^7.0.2","bumpp":"^10.4.0","vitest":"^3.2.4","prettier":"^3.6.2","happy-dom":"^20.0.0","@vitest/ui":"^3.2.4","typescript":"^5.8.3","concurrently":"^9.2.1","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/view.gl_0.5.0_1790692671436_0.3303843021631425","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@bigmistqke/view.gl","version":"0.7.0","keywords":["WebGL"],"author":"","license":"ISC","_id":"@bigmistqke/view.gl@0.7.0","maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"dist":{"shasum":"8422f669462f38508d3673bb86322992441b800f","tarball":"https://registry.npmjs.org/@bigmistqke/view.gl/-/view.gl-0.7.0.tgz","fileCount":74,"integrity":"sha512-MdlHoG3uATqcB7ALt1twEsBNDHogxp+beGoqE2OAFDbXMhVoYHQkrU8iHoVe/68rJtMZ28vdL5eIrpzHt+ZjvA==","signatures":[{"sig":"MEUCIHIVBPVsuOTav9qBaCi8kIrq3/f3x96r12BR+pMfbe9FAiEAkcrMZpLrx7NcLeFcFSCJbcXuV1Mfu0qWXwJSp+Y8zLw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDOwFOxTx+yiahP3O7kHpSpmqLdCkAcXd44mtuXa4WTwAiEA/E5z8BXjJp0nseoJdP1S9qjQ/U4RZTyu12ydN68632I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":623586},"exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./gl":{"types":"./dist/gl.d.mts","import":"./dist/gl.mjs"},"./tag":{"types":"./dist/tag.d.mts","import":"./dist/tag.mjs"}},"gitHead":"0a45804e647d28531fe60307c167edc90dde4b41","scripts":{"dev":"vite serve dev","bump":"bumpp","test":"vitest --run","build":"tsup","format":"prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"","test:ui":"vitest --ui","dev:build":"vite build dev","dev:watch":"concurrently \"pnpm dev:preview\" \"vite dev:build --watch\"","lint:types":"tsc --noEmit","prepublish":"pnpm test && pnpm build","dev:preview":"vite preview dev","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"bigmistqke","email":"vandijckv@gmail.com"},"_npmVersion":"11.5.1","description":"👀 Utilities for managing WebGL resources.","directories":{},"_nodeVersion":"24.5.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.5.1","devDependencies":{"tsup":"^8.5.0","vite":"^7.0.2","bumpp":"^10.4.0","vitest":"^3.2.4","prettier":"^3.6.2","happy-dom":"^20.0.0","@vitest/ui":"^3.2.4","typescript":"^5.8.3","concurrently":"^9.2.1","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/view.gl_0.7.0_1790693284661_0.8256443333077759","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@bigmistqke/view.gl","version":"0.6.0","keywords":["WebGL"],"author":"","license":"ISC","_id":"@bigmistqke/view.gl@0.6.0","maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"dist":{"shasum":"beb520a5352ba269677d0df48779689e6544502d","tarball":"https://registry.npmjs.org/@bigmistqke/view.gl/-/view.gl-0.6.0.tgz","fileCount":74,"integrity":"sha512-hCgt6XjhbW3BU/ivmN7fgcDkftTBT4vsfel+hNzg3Zu1TJh5PNnSwd9W0mCBxUbStNOghKkdVq5nh59c4fO4AQ==","signatures":[{"sig":"MEUCIQD23hBRdlnBBT7WttTGYHVfxCHTOYoByxYRFZBKEAjm/AIgB/fRqq6mycH7L1OWQQuQ3h2/IT6wR/2i1u63Hw2HrNI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCMQgwAwBvZnHtoeuYrDJOcNE416Z9ZjDdQAlF50/3JVgIhANzMy8g2mEh6OuGzKwJbWuLnHstx/xmWEhi03jzsvvAW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":621854},"exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./gl":{"types":"./dist/gl.d.mts","import":"./dist/gl.mjs"},"./tag":{"types":"./dist/tag.d.mts","import":"./dist/tag.mjs"}},"gitHead":"b346dc85bbcdee9e33196184f3accf8df45755c9","scripts":{"dev":"vite serve dev","bump":"bumpp","test":"vitest --run","build":"tsup","format":"prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"","test:ui":"vitest --ui","dev:build":"vite build dev","dev:watch":"concurrently \"pnpm dev:preview\" \"vite dev:build --watch\"","lint:types":"tsc --noEmit","prepublish":"pnpm test && pnpm build","dev:preview":"vite preview dev","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"bigmistqke","email":"vandijckv@gmail.com"},"_npmVersion":"11.5.1","description":"👀 Utilities for managing WebGL resources.","directories":{},"_nodeVersion":"24.5.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.5.1","readmeFilename":"README.md","devDependencies":{"tsup":"^8.5.0","vite":"^7.0.2","bumpp":"^10.4.0","vitest":"^3.2.4","prettier":"^3.6.2","happy-dom":"^20.0.0","@vitest/ui":"^3.2.4","typescript":"^5.8.3","concurrently":"^9.2.1","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/view.gl_0.6.0_1790693286490_0.5229498450954773","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@bigmistqke/view.gl","version":"0.7.1","keywords":["WebGL"],"author":"","license":"ISC","_id":"@bigmistqke/view.gl@0.7.1","maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"dist":{"shasum":"4cea9f3834ad0b40bbdf861c0f6d7bf33c60ba30","tarball":"https://registry.npmjs.org/@bigmistqke/view.gl/-/view.gl-0.7.1.tgz","fileCount":74,"integrity":"sha512-Hmo60tQZWeigeWM4dg24bQWfLRkRgSUTz83kKzqQzbXJ/nRzxGmh8/drsnGa58hOzPHB/MV9YqTufDN3Yx3Wkw==","signatures":[{"sig":"MEUCIQD1A76x3UBcFaASWdg+F64ViHDvU1YO5oNLZXkCgZPWMAIgGDuuRvbcdhoOZoVjzoKwNHtxkBX9ukGACCo23rdJS2E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD33SmU3lK3/49/VP4JUXuz4VQPh8o1ozne8NKjpXOieAIgVa6W6gWxN9N/coFFhqKHHWMZTL4MztmDAalgo/PcRY0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":626604},"exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./gl":{"types":"./dist/gl.d.mts","import":"./dist/gl.mjs"},"./tag":{"types":"./dist/tag.d.mts","import":"./dist/tag.mjs"}},"gitHead":"c31fb71ec5f682a396eab5c2a7a71f39a6b159c3","scripts":{"dev":"vite serve dev","bump":"bumpp","test":"vitest --run","build":"tsup","format":"prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"","test:ui":"vitest --ui","dev:build":"vite build dev","dev:watch":"concurrently \"pnpm dev:preview\" \"vite dev:build --watch\"","lint:types":"tsc --noEmit","dev:preview":"vite preview dev","test:coverage":"vitest run --coverage","prepublishOnly":"pnpm test && pnpm build"},"_npmUser":{"name":"bigmistqke","email":"vandijckv@gmail.com"},"_npmVersion":"11.5.1","description":"👀 Utilities for managing WebGL resources.","directories":{},"_nodeVersion":"24.5.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.5.1","devDependencies":{"tsup":"^8.5.0","vite":"^7.0.2","bumpp":"^10.4.0","vitest":"^3.2.4","prettier":"^3.6.2","happy-dom":"^20.0.0","@vitest/ui":"^3.2.4","typescript":"^5.8.3","concurrently":"^9.2.1","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/view.gl_0.7.1_1790693681347_0.08296263922872238","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"_id":"@bigmistqke/view.gl@0.8.0","dist":{"shasum":"232b5f3e435812212c7ba48378d4a5e79a667b08","tarball":"https://registry.npmjs.org/@bigmistqke/view.gl/-/view.gl-0.8.0.tgz","fileCount":76,"integrity":"sha512-h3y0pKrHKMJI6uiXdqLCUcXmxmse/8oygYK6dZaDVaDsS6BU7O+6QYjUUsHf2JnRSCb+c1wMd6MdPooM9P+04A==","signatures":[{"sig":"MEUCIQD3cAaJFSeQ5F0lVUucTJuNgys68iGr8+hhcmMBNbcmugIgeO6GxxEZyIfr1MtoLSQNzJpC2HncaX7/CU7LW8rUYSU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGfS+KwvDSdowVwLBFcxixHzkinWrqQeBNmmsbhCqIpMAiEA2/kdc1f0ZEZuWLuDbidjfhKSxVlPJcbW6BihucbF2gA="}],"unpackedSize":640470},"name":"@bigmistqke/view.gl","author":"","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./gl":{"types":"./dist/gl.d.mts","import":"./dist/gl.mjs"},"./tag":{"types":"./dist/tag.d.mts","import":"./dist/tag.mjs"}},"gitHead":"1e56de165ff686477b164d7a2e6314b324710a2e","license":"ISC","scripts":{"dev":"vite serve dev","bump":"bumpp","test":"vitest --run","build":"tsup","format":"prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"","test:ui":"vitest --ui","dev:build":"vite build dev","dev:watch":"concurrently \"pnpm dev:preview\" \"vite dev:build --watch\"","lint:types":"tsc --noEmit","dev:preview":"vite preview dev","test:coverage":"vitest run --coverage","prepublishOnly":"pnpm test && pnpm build"},"version":"0.8.0","_npmUser":{"name":"bigmistqke","email":"vandijckv@gmail.com"},"keywords":["WebGL"],"_npmVersion":"11.5.1","description":"👀 Utilities for managing WebGL resources.","directories":{},"maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"_nodeVersion":"24.5.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.5.1","devDependencies":{"tsup":"^8.5.0","vite":"^7.0.2","bumpp":"^10.4.0","vitest":"^3.2.4","prettier":"^3.6.2","happy-dom":"^20.0.0","@vitest/ui":"^3.2.4","typescript":"^5.8.3","concurrently":"^9.2.1","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/view.gl_0.8.0_1790698082275_0.6606244606834413"}}},"time":{"created":"2025-10-11T11:01:39.105Z","modified":"2026-09-29T16:08:02.572Z","0.1.0":"2025-10-11T11:01:39.434Z","0.1.1":"2025-10-11T11:12:04.038Z","0.1.2":"2025-10-15T01:38:38.076Z","0.1.3":"2025-10-15T02:24:06.947Z","0.1.4":"2025-10-16T22:11:04.623Z","0.1.5":"2025-10-16T23:40:33.452Z","0.1.6":"2025-10-17T00:44:05.023Z","0.1.7":"2025-10-17T12:11:40.678Z","0.1.8":"2025-10-17T21:18:20.997Z","0.1.9":"2025-10-18T15:39:18.461Z","0.1.10":"2026-01-07T12:15:27.924Z","0.1.11":"2026-01-07T12:20:34.650Z","0.1.12":"2026-01-18T15:08:32.496Z","0.1.13":"2026-01-19T00:44:24.140Z","0.1.14":"2026-01-30T11:04:00.503Z","0.1.15":"2026-01-30T11:23:11.369Z","0.1.16":"2026-03-05T09:49:42.475Z","0.1.17":"2026-04-02T12:22:29.043Z","0.1.18":"2026-04-02T12:44:07.714Z","0.1.19":"2026-08-13T14:37:08.283Z","0.2.0":"2026-08-27T13:22:11.922Z","0.3.0":"2026-08-31T15:07:55.053Z","0.4.0":"2026-09-02T11:55:37.686Z","0.5.0":"2026-09-29T14:37:51.534Z","0.7.0":"2026-09-29T14:48:04.778Z","0.6.0":"2026-09-29T14:48:06.595Z","0.7.1":"2026-09-29T14:54:41.446Z","0.8.0":"2026-09-29T16:08:02.367Z"},"license":"ISC","keywords":["WebGL"],"description":"👀 Utilities for managing WebGL resources.","maintainers":[{"name":"bigmistqke","email":"vandijckv@gmail.com"}],"readme":"# 👁️ @bigmistqke/view.gl\n\n🔧 Utilities for managing WebGL resources: uniforms, (interleaved) attributes and buffers.\n\n- schema-based resource management [`view-gl`](#️-viewgl)\n- compose schema and shader simultaneously via a tag template literal [`view-gl/tag`](#️-viewgltag)\n\n## Table of Contents\n\n- 📦 [Install](#-install)\n- 👁️ [view.gl](#️-viewgl)\n  - 🚀 [Basic Usage](#-basic-usage)\n  - 👁️ [view](#️-view)\n    - 📋 [ViewSchema](#-viewschema)\n  - 👀 [Resource Views](#-resource-views)\n    - 🎯 [uniformView](#-uniformview)\n      - 📋 [UniformSchema](#-uniformschema)\n    - 📝 [attributeView](#-attributeview)\n      - 📋 [AttributeSchema](#-attributeschema)\n    - 🔗 [interleavedAttributeView](#-interleavedattributeview)\n      - 📋 [InterleavedAttributeSchema](#-interleavedattributeschema)\n    - 🗂️ [bufferView](#-bufferview)\n      - 📋 [BufferSchema](#-bufferschema)\n- 🏷️ [view.gl/tag](#️-viewgltag)\n  - 🚀 [Basic Usage](#-basic-usage-1)\n  - 📝 [glsl](#-glsl)\n    - 🧩 [GLSL Fragment](#-glsl-fragment)\n    - 🔒 [Symbol Variables](#-symbol-variables)\n    - [WebGL Version Support](#webgl-version-support)\n  - 🏷️ [Resource Tokens](#️-resource-tokens)\n    - 🎯 [uniform[kind](name, options?)](#-uniformkindname-options)\n    - 📝 [attribute[kind](name, options?)](#-attributekindname-options)\n    - 🔗 [interleave(name, layout, options?)](#-interleavename-layout-options)\n  - ⚙️ [compile(gl, vertex, fragment)](#️-compilegl-vertex-fragment)\n    - 🔄 [compile.toQuad(gl, fragment)](#-compiletoquadgl-fragment-options)\n    - 🔍 [compile.toString(shader)](#-compiletostringshader)\n    - 📋 [compile.toSchema(shader)](#-compiletoschemaschader)\n- 🛠️ [Utils](#️-utils)\n  - 🏗️ [createProgram](#️-createprogram)\n  - 🖼️ [createTexture](#️-createtexture)\n  - 🖥️ [createFramebuffer](#️-createframebuffer)\n- 🚨 [Errors](#-errors)\n- 🔍 [WebGL Type Compatibility](#-webgl-type-compatibility)\n  - 🎯 [Uniform Types](#-uniform-types)\n  - 📝 [Attribute Types](#-attribute-types)\n\n## 📦 Install\n\n```shell\nnpm install @bigmistqke/view.gl\n```\n```shell\npnpm add @bigmistqke/view.gl\n```\n```shell\nyarn add @bigmistqke/view.gl\n```\n```shell\nbun add @bigmistqke/view.gl\n```\n\n## 👁️ view.gl\n\nThe view system provides type-safe WebGL resource management for uniforms and attributes\n\n### 🚀 Basic Usage\n\n```typescript\nconst { uniforms, attributes } = view(gl, program, {\n  uniforms: {\n    time: { kind: 'float' },\n    resolution: { kind: 'vec2' },\n  },\n  attributes: {\n    position: { kind: 'vec3' },\n    uv: { kind: 'vec2' },\n  },\n})\n\n// Type-safe uniform setting\nuniforms.time.set(performance.now())\nuniforms.resolution.set(canvas.width, canvas.height)\n\n// Attribute management\nattributes.position.set(positionData)\nattributes.position.bind()\n```\n\n### 👁️ view\n\nThe `view()` function creates type-safe WebGL resource managers from a schema.\n\n```typescript\nconst { uniforms, attributes } = view(gl, program, schema)\n```\n\n**Parameters:**\n\n- `gl`: WebGL rendering context\n- `program`: Compiled WebGL program\n- `schema`: see [`ViewSchema`](#viewschema)\n\n**Returns:**\n\n- `uniforms`: Type-safe uniform setters\n- `attributes`: Attribute managers with buffer handling\n- `dispose`: Deletes everything the view made — see [Disposal](#-disposal)\n\n#### 📋 ViewSchema\nThe complete schema object that defines all WebGL resources. Contains mappings for:\n- [`UniformSchema`](#-uniformschema) - uniform variable definitions\n- [`AttributeSchema`](#-attributeschema) - vertex attribute definitions  \n- [`InterleavedAttributeSchema`](#-interleavedattributeschema) - interleaved vertex data definitions\n- [`BufferSchema`](#-bufferschema) - buffers the view owns\n\nA buffer is the one schema member with no name in the source, so it is not\nresolved against the program the way a uniform or an attribute is — a buffer key\nis a label for the reader. What putting it in the schema decides is its\n**lifetime**, and that is the question worth answering at the declaration:\n\n| the buffer | declare it | disposed by |\n| --- | --- | --- |\n| lives and dies with the view | `buffers:` in the schema | the view |\n| outlives the view, or is shared between views | a standalone [`bufferView`](#-bufferview) | you |\n| belongs to somebody else | name it on an attribute | nobody — it is borrowed |\n\nAn index buffer whose lifetime is its program's belongs in the schema, beside\nthe attributes it is drawn with, on the one signal. A quad cached per context,\nor a buffer handed from one program's view to another's, is its own thing.\n\n<details>\n<summary>TypeScript Types</summary>\n\n```typescript\ninterface ViewSchema {\n  uniforms: UniformSchema\n  attributes: AttributeSchema\n  interleavedAttributes: InterleavedAttributeSchema\n}\n```\n\n</details>\n\n### 🗑️ Disposal\n\nEverything that creates a WebGL resource takes an `AbortSignal` and offers a\n`dispose()`, and the two are the same teardown reached two ways:\n\n```typescript\nconst controller = new AbortController()\n\nconst { view, dispose } = compile(gl, vertex, fragment, { signal: controller.signal })\nconst buffers = bufferView(gl, { indices: {} }, { signal: controller.signal })\nconst target = createFramebuffer(gl, definition, { signal: controller.signal })\n\ncontroller.abort() // deletes the program, the buffers, the vertex arrays, the framebuffer\n```\n\nTwo rules make this safe to reach for.\n\n**Only what it made.** A resource handed in from outside is borrowed, never\ndeleted: a buffer named by an attribute schema, a texture passed to\n`createFramebuffer`. Those belong to whoever created them, and the same buffer\noften feeds several views. Delete one out from under its owner and WebGL does\nnot fault where it happened — the object survives while it is bound, so the\nhandle is invalidated and the *other* view fails later, on its next upload.\n\n**Once.** Every `dispose()` is idempotent. Disposing by hand and then aborting,\nor aborting twice, deletes each resource exactly once.\n\n| creates | disposed by |\n| --- | --- |\n| `view()` | its own attribute, layout and schema buffers, and vertex arrays still held from `vao()` |\n| `compile()` | the program, and its view |\n| `attributeView` / `interleavedAttributeView` | the buffer, unless the schema named one |\n| `bufferView` | its buffers |\n| `vaoView` | the vertex array, never its participants |\n| `createProgram` | the program |\n| `createTexture` | the texture |\n| `createFramebuffer` | the framebuffer, and the texture unless one was passed in |\n\n`uniformView` takes no signal: a uniform location is not a resource, so there is\nnothing to delete.\n\n### 👀 Resource Views\n\nEach view type can be imported individually.\n\n#### 🎯 uniformView\n\nManages shader uniform variables.\n\n```typescript\nconst uniforms = uniformView(gl, program, {\n  time: { kind: 'float' },\n  lights: { kind: 'vec3', size: 8 }, // Array uniform: vec3[8]\n  transform: { kind: 'mat4' },\n})\n\nuniforms.time.set(performance.now())\nuniforms.lights.set(lightData) // Takes Float32Array for array uniforms\n```\n\n##### 📋 UniformSchema\n\nA mapping of uniform names to their configuration.\n\n- `kind`: GLSL type (see [Uniform Types](#-uniform-types) for full list and WebGL compatibility)\n- `size`: Array size (optional) - converts uniform to array type\n\n<details>\n<summary>TypeScript Types</summary>\n\n```typescript\ntype UniformKind =\n  | 'float'\n  | 'int'\n  | 'bool'\n  | 'vec2'\n  | 'vec3'\n  | 'vec4'\n  | 'ivec2'\n  | 'ivec3'\n  | 'ivec4'\n  | 'bvec2'\n  | 'bvec3'\n  | 'bvec4'\n  | 'mat2'\n  | 'mat3'\n  | 'mat4'\n  | 'sampler2D'\n  | 'samplerCube'\n\ninterface UniformDefinition {\n  kind: UniformKind\n  size?: number                               // Creates array uniform with Float32Array setter\n}\n\ntype UniformSchema = Record<string | symbol, UniformDefinition>\n```\n\n</details>\n\n#### 📝 attributeView\n\nManages vertex attributes with automatic buffer creation and binding.\n\n```typescript\nconst attributes = attributeView(gl, program, {\n  position: { kind: 'vec3' },\n  instanceOffset: { kind: 'vec2', instanced: true },\n})\n\nattributes.position.set(positionData).bind()\nattributes.instanceOffset.set(instanceData).bind()\n\ngl.drawArraysInstanced(gl.TRIANGLES, 0, 3, 100)\n```\n\n`bind()` returns a disposer that restores the state it changed — here the\ninstancing divisor, which belongs to the attribute location rather than to the\nprogram, and so is inherited by whatever binds there next. Ignore it when the\nview owns its locations for the lifetime of the program; call it when they are\nshared:\n\n```typescript\nconst unbind = attributes.instanceOffset.set(instanceData).bind()\ngl.drawArraysInstanced(gl.TRIANGLES, 0, 3, 100)\nunbind()\n```\n\nA large buffer can be sized first and filled in parts, counting in elements of\nthe attribute's format:\n\n```typescript\nattributes.position.allocate(totalElements)   // sizes the buffer, contents undefined\nattributes.position.write(chunk, offset)      // overwrites a range with bufferSubData\n```\n\n##### 📋 AttributeSchema\n\nA mapping of attribute names to their configuration.\n\n- `kind`: GLSL type (see [Attribute Types](#-attribute-types) for full list and WebGL compatibility)\n- `instanced`: Boolean (optional) - enables instanced rendering\n- `buffer`: Custom WebGLBuffer (optional) - by default it gets created automatically during compilation\n\n<details>\n<summary>TypeScript Types</summary>\n\n```typescript\ntype AttributeKind =\n  | 'float'\n  | 'vec2'\n  | 'vec3'\n  | 'vec4'\n  | 'mat2'\n  | 'mat3'\n  | 'mat4'\n  | 'int'\n  | 'ivec2'\n  | 'ivec3'\n  | 'ivec4'\n\ninterface AttributeDefinition {\n  kind: AttributeKind\n  instanced?: boolean                         // Enables vertexAttribDivisor\n  buffer?: WebGLBuffer                        // Custom buffer, auto-created if not provided\n}\n\ntype AttributeSchema = Record<string | symbol, AttributeDefinition>\n```\n\n</details>\n\n#### 🔗 interleavedAttributeView\n\nManages interleaved vertex data with automatic stride/offset calculation.\n\n```typescript\nconst interleavedAttributes = interleavedAttributeView(gl, program, {\n  vertexData: {\n    layout: [\n      { key: 'position', kind: 'vec3' },\n      { key: 'normal', kind: 'vec3' },\n      { key: 'uv', kind: 'vec2' },\n    ],\n  },\n})\n\ninterleavedAttributes.vertexData.buffer.set(interleavedVertexData)\n```\n\nWhere vertex array objects are available `bind()` binds one, and it stays\nselected for every later draw — which would then write its own attributes into\nit. The disposer returned by `bind()` selects the previous array again:\n\n```typescript\nconst unbind = interleavedAttributes.vertexData.buffer.bind()\ngl.drawElements(gl.TRIANGLES, count, gl.UNSIGNED_SHORT, 0)\nunbind()\n```\n\nWhether the buffer steps once per vertex or once per instance is chosen per\ndraw, not in the schema: `buffer` steps per vertex, `buffer.perInstance` per\ninstance. `constant` sets the same layout as constant attribute values, for a\ndraw that needs one set of values without a buffer.\n\nA large buffer can be sized first and filled in parts, so it never has to exist\nwhole in JavaScript. Both count in floats:\n\n```typescript\nconst { buffer } = interleavedAttributes.vertexData\nbuffer.allocate(totalFloats)             // sizes the buffer, contents undefined\nbuffer.write(chunk, offsetFloats)        // overwrites a range with bufferSubData\n```\n\n##### 📋 InterleavedAttributeSchema\n\nA mapping of interleaved buffer names to their layout configuration. Each layout defines multiple attributes packed into a single buffer.\n\n- `layout`: Array of attribute definitions with `key` and `kind` (see [Attribute Types](#-attribute-types))\n\n<details>\n<summary>TypeScript Types</summary>\n\n```typescript\ninterface InterleavedAttributeDefinition {\n  layout: Array<{\n    key: string | symbol\n    kind: AttributeKind\n  }>\n}\n\ntype InterleavedAttributeSchema = Record<string | symbol, InterleavedAttributeDefinition>\n```\n\n</details>\n\n#### 🗂️ bufferView\n\nManages generic WebGL buffers.\n\n```typescript\nconst buffers = bufferView(gl, {\n  indices: { target: 'ELEMENT_ARRAY_BUFFER' },\n  data: { target: 'ARRAY_BUFFER', usage: 'DYNAMIC_DRAW' },\n})\n\nbuffers.indices.set(indexData)\nbuffers.data.set(dynamicData)\n\nconst unbind = buffers.indices.bind()\n\n// bind() returns a disposer restoring the previous binding for that target.\n// Worth calling for ELEMENT_ARRAY_BUFFER, whose binding is recorded in the\n// bound vertex array object.\n```\n\nA large buffer can be sized first and filled in parts. A buffer has no element\ntype of its own, so these count in bytes:\n\n```typescript\nbuffers.data.allocate(byteLength)        // sizes the buffer, contents undefined\nbuffers.data.write(chunk, byteOffset)    // overwrites a range with bufferSubData\n```\n\n##### 📋 BufferSchema\nA mapping of buffer names to their configuration. Each buffer has a target type and optional usage pattern.\n\n- `target`: Buffer target (`'ARRAY_BUFFER'`, `'ELEMENT_ARRAY_BUFFER'`)\n- `usage`: Usage pattern (`'STATIC_DRAW'`, `'DYNAMIC_DRAW'`, `'STREAM_DRAW'`)\n\n<details>\n<summary>TypeScript Types</summary>\n\n```typescript\ninterface BufferDefinition {\n  target: 'ARRAY_BUFFER' | 'ELEMENT_ARRAY_BUFFER'\n  usage?: 'STATIC_DRAW' | 'DYNAMIC_DRAW' | 'STREAM_DRAW' // Defaults to 'STATIC_DRAW'\n}\n\ntype BufferSchema = Record<string | symbol, BufferDefinition>\n```\n\n</details>\n\n## 🏷️ view.gl/tag\n\nType-safe GLSL template literals with automatic schema extraction and view creation.\n\n- **Embedded Resources**: Define uniforms, attributes, and interleaved layouts directly in GLSL\n- **Type Inference**: Automatically infers schema types and creates type-safe view\n- **Unique Variables**: Prevent naming collisions using symbols for unique shader variables\n- **GLSL Composition**: Compose reusable GLSL fragments with automatic dependency resolution\n\n### 🚀 Basic Usage\n\n```typescript\nconst vertexShader = glsl`\n  ${attribute.vec3('position')}\n  ${uniform.mat4('model')}\n  \n  varying vec2 vUv;\n  \n  void main() {\n    vUv = uv;\n    gl_Position = model * vec4(position, 1.0);\n  }\n`\n\nconst fragmentShader = glsl`\n  ${uniform.sampler2D('texture')}\n  \n  varying vec2 vUv;\n  \n  void main() {\n    gl_FragColor = texture2D(texture, vUv);\n  }\n`\n\nconst { program, schema } = compile(gl, vertexShader, fragmentShader)\n```\n\n### 📝 glsl\n\nTemplate literal processor that handles GLSL code and embedded resources. Supports interpolation of:\n\n- **[Resource tags](#️-resource-tags)**: `uniform.*()`, `attribute.*()`, `interleave()`\n- **[GLSL fragments](#-glsl-fragment)**: Reusable shader code snippets\n- **[Symbol Variables](#-symbol-variables)**: Unique variable names to prevent collisions\n- **Strings**: Interpolated as-is into the shader code\n- **Arrays**: Arrays of any supported interpolation types\n\n```typescript\nconst precision = 'precision mediump float;'\nconst functionName = Symbol('function')\n\nconst shader = glsl`\n  ${precision}                                // String interpolated as-is\n  ${uniform.vec2('resolution')}\n  ${[attribute.vec3('position'), attribute.vec2('uv')]}  // Array interpolation\n  \n  vec3 ${functionName}(vec2 uv) {             // Symbol interpolated to unique identifier\n    return vec3(uv, 0.5);\n  }\n  \n  void main() {\n    gl_Position = vec4(position, 1.0);\n  }\n`\n```\n\n#### 🧩 GLSL Fragment\n\nCompose reusable GLSL code fragments to build complex shaders:\n\n```typescript\nconst lighting = glsl`\n  vec3 calculateLighting(vec3 normal, vec3 lightDir) {\n    float diff = max(dot(normal, lightDir), 0.0);\n    return vec3(diff);\n  }\n`\n\nconst vertexShader = glsl`\n  ${attribute.vec3('direction')}\n  ${attribute.vec3('normal')}\n  ${lighting}                                 // Include the lighting fragment\n  \n  varying vec3 vLighting;\n  \n  void main() {\n    vLighting = calculateLighting(normal, direction);\n  }\n`\n```\n\n#### 🔒 Symbol Variables\n\nUse JavaScript symbols to prevent naming collisions:\n\n```typescript\nconst sum = Symbol('sum')\n\nconst sumFragment = glsl`\nfloat ${sum}(float a, float b){\n  return a + b;\n}`\n\nconst shader = glsl`\n${sumFragment}\n\nvoid main(){\n  float result = ${sum}(1.0, 2.0);\n}\n`\n```\n\nSymbols are converted to unique identifiers during the compilation of the shader.\n\n#### WebGL Version Support\n\nThe glsl-function supports both WebGL1 and WebGL2 syntax, automatically using the correct keywords for resource tags:\n\n```typescript\n// WebGL1 (default)\nconst shader = glsl`\n  ${attribute.vec3('position')}               // → attribute vec3 position;\n  varying vec2 vUv;\n`\n```\n\nIf the shader starts with `#version 300 es`, resource tags generate WebGL2 syntax:\n\n```typescript\n// WebGL2\nconst shader = glsl`#version 300 es\n  ${attribute.vec3('position')}               // → in vec3 position;\n  out vec2 vUv;\n`\n```\n\n### 🏷️ Resource Tokens\n\nUtilities for defining WebGL resources directly in GLSL templates. These create metadata that the [`compile`](#️-compilegl-vertex-fragment-overrideschema) consumes to generate the typesafe schema and view.\n\n#### 🎯 uniform[kind](name, options?)\n\nDefine uniform variables in GLSL templates (see [Uniform Types](#-uniform-types)).\n\n```typescript\nconst uniqueTime = Symbol('time')\n\nconst shader = glsl`\n  ${uniform.float('time')}                    // String key\n  ${uniform.float(uniqueTime)}                // Symbol key\n  ${uniform.vec3('lights', { size: 8 })}      // Array uniform: vec3[8]\n  \n  void main() {\n    float wave = sin(time * 2.0 + ${uniqueTime});\n    vec3 totalLight = vec3(0.0);\n    for(int i = 0; i < 8; i++) {\n      totalLight += lights[i] * wave;\n    }\n    gl_FragColor = vec4(totalLight, 1.0);\n  }\n`\n```\n\n**Parameters**:\n\n- `name`: Uniform name (string or symbol for unique variables)\n- `options`: Optional configuration object\n  - `size`: Array size (creates array uniform with Float32Array setter)\n\n#### 📝 attribute[kind](name, options?)\n\nDefine vertex attributes in GLSL templates (see [Attribute Types](#-attribute-types)).\n\n```typescript\nconst uniquePosition = Symbol('position')\n\nconst vertexShader = glsl`\n  ${attribute.vec3('position')}               // String key\n  ${attribute.vec3(uniquePosition)}           // Symbol key\n  ${attribute.vec2('offset', { instanced: true })}\n  \n  void main() {\n    gl_Position = vec4(position + vec3(offset, 0.0), 1.0);\n  }\n`\n```\n\n**Parameters**:\n\n- `name`: Attribute name (string or symbol for unique variables)\n- `options`: Optional configuration object\n  - `instanced`: Boolean - enables instanced rendering with `vertexAttribDivisor`\n  - `buffer`: Custom WebGLBuffer (optional)\n\n#### 🔗 interleave(name, layout, options?)\n\nDefine interleaved attribute layouts for efficient vertex data.\n\n```typescript\nconst uniqueVertexData = Symbol('vertexData')\nconst uniquePosition = Symbol('position')\n\nconst vertexShader = glsl`\n  ${interleave('vertexData', [\n    // String key\n    { key: 'position', kind: 'vec3' },\n    { key: 'uv', kind: 'vec2' },\n  ])}\n  ${interleave(uniqueVertexData, [\n    // Symbol key\n    { key: uniquePosition, kind: 'vec3' },    // Symbol keys in layout\n    { key: 'uv', kind: 'vec2' },\n  ])}\n  \n  void main() {\n    gl_Position = vec4(position + vec3(uv, 0.0), 1.0);\n  }\n`\n```\n\n**Parameters**:\n\n- `name`: Buffer name (string or symbol for unique variables)\n- `layout`: Array of attribute definitions\n  - `key`: Attribute name (string or symbol for unique variables)\n  - `kind`: GLSL type (see [Attribute Types](#-attribute-types))\n- `options`: Optional configuration object\n  - `instanced`: Boolean - applies `vertexAttribDivisor` to all attributes\n\n### ⚙️ compile(gl, vertex, fragment, overrideSchema?)\n\nCompiles shaders to a `WebGLProgram` and extracts typesafe schema and view.\n\n### 🔄 compile.toQuad(gl, fragment, options?)\n\nConvenient helper for fullscreen quad rendering with fragment shaders. Automatically creates a vertex shader with a quad geometry and handles vertex buffer setup.\n\n```typescript\nconst { program, schema, view } = compile.toQuad(gl, fragmentShader)\n\n// Ready to render - no vertex setup required\nview.uniforms.time.set(performance.now())\ngl.drawArrays(gl.TRIANGLES, 0, 6)\n```\n\n**Perfect for:**\n- Fragment shader effects (ray-marching, post-processing, etc.)\n- Fullscreen compute-style shaders\n- Quick prototyping and experimentation\n\n**Generated vertex shader:**\n- Creates `a_quad` attribute automatically\n- Outputs `uv` varying (same as vertex position: `[-1,1]` range)\n- Sets up clip-space quad covering the entire screen\n\n**Parameters:**\n- `gl`: WebGL rendering context\n- `fragment`: Fragment shader with embedded resources\n- `options`: Optional compilation options (same as `compile()`)\n\n**Returns:** Same as `compile()` with pre-configured quad rendering\n\n```typescript\nconst { program, schema, view, vertex, fragment } = compile(gl, vertexShader, fragmentShader)\n\n// Use the view directly\nview.uniforms.time.set(performance.now())\nview.attributes.position.set(vertexData).bind()\n\n// Access the compiled shader strings\nconsole.log(vertex)                           // Compiled vertex shader GLSL\nconsole.log(fragment)                         // Compiled fragment shader GLSL\n\n// Or access the extracted schema\nconsole.log(schema.uniforms)                  // { time: { kind: 'float' }, ... }\nconsole.log(schema.attributes)                // { position: { kind: 'vec3' }, ... }\n```\n\n**Override Schema:**\n\nYou can provide an optional override schema to enhance or override the automatically extracted schema:\n\n```typescript\nconst { program, schema, view } = compile(gl, vertexShader, fragmentShader, {\n  schema: {\n    uniforms: {\n      // Add additional uniforms not automatically inferred\n      customTime: { kind: 'float' },\n    },\n  },\n})\n\n// The override schema is merged with the extracted schema\nview.uniforms.customTime.set(123.45)\n\n// An index buffer that outlives this program — shared between views, or cached\n// per context — is its own thing. One that dies with the view goes in the\n// schema instead, and is disposed with it.\nconst buffers = bufferView(gl, { indices: { target: 'ELEMENT_ARRAY_BUFFER' } })\nbuffers.indices.set(indexData)\nconst vao = view.vao([view.attributes.position, buffers.indices])\n```\n\n**Returns**:\n\n- `program`: Compiled WebGL program\n- `schema`: Merged schema (extracted + override)\n- `view`: Ready-to-use view with type-safe resource access\n- `vertex`: Compiled vertex shader GLSL string\n- `fragment`: Compiled fragment shader GLSL string\n\n#### 🔍 compile.toString(shader)\n\nConverts a GLSL tagged template to a shader string without compilation of the `WebGLProgram`. Useful for debugging or when you need the raw shader code.\n\n```typescript\nconst vertexShader = glsl`\n  ${attribute.vec3('position')}\n  ${uniform.mat4('mvpMatrix')}\n  \n  void main() {\n    gl_Position = mvpMatrix * vec4(position, 1.0);\n  }\n`\n\nconst shaderString = compile.toString(vertexShader)\nconsole.log(shaderString)\n// Output:\n// attribute vec3 position;\n// uniform mat4 mvpMatrix;\n// \n// void main() {\n//   gl_Position = mvpMatrix * vec4(position, 1.0);\n// }\n```\n\n**Features**:\n- Converts resource tags to GLSL declarations\n- Handles WebGL1/WebGL2 syntax automatically\n- Resolves symbol variables to unique identifiers\n- Processes nested GLSL fragments and arrays\n\n#### 📋 compile.toSchema(shader)\n\nExtracts the [`ViewSchema`](#viewschema) from a GLSL tagged template without compilation of the `WebGLProgram`. Returns the type-safe schema that could be used by [`view()`](#️-view).\n\n```typescript\nconst shader = glsl`\n  ${uniform.float('time')}\n  ${uniform.vec3('lightPos', { size: 4 })}\n  ${attribute.vec3('position')}\n  ${interleave('vertexData', [\n    attribute.vec2('uv'),\n    attribute.vec4('color')\n  ])}\n`\n\nconst schema = compile.toSchema(shader)\nconsole.log(schema)\n// Output:\n// {\n//   uniforms: {\n//     time: { kind: 'float' },\n//     lightPos: { kind: 'vec3', size: 4 }\n//   },\n//   attributes: {\n//     position: { kind: 'vec3' }\n//   },\n//   interleavedAttributes: {\n//     vertexData: {\n//       layout: [\n//         { key: 'uv', kind: 'vec2' },\n//         { key: 'color', kind: 'vec4' }\n//       ],\n//       instanced: false\n//     }\n//   }\n// }\n```\n\n**Use Cases**:\n- Analyze shader resources without GL context\n- Generate TypeScript types from shaders\n- Validate shader compatibility before compilation\n- Build tooling around shader resources\n\n<details>\n<summary>Usage with vanilla view.gl</summary>\n\nWhen manually constructing GLSL strings, use `toID()` to convert symbols to valid, unique identifiers:\n\n```typescript\nconst u_time = Symbol('time')\nconst a_position = Symbol('position')\n\nconst vertex = `\n  attribute vec3 ${toID(a_position)};\n  uniform float ${toID(u_time)};\n\n  void main() {\n    gl_Position = vec4(${toID(a_position)}, ${toID(u_time)});\n  }\n`\n\nconst fragment = `\n  precision mediump float;\n  uniform float ${toID(u_time)};\n\n  void main() {\n    gl_FragColor = vec4(1.0, 1.0, 1.0, sin(${toID(u_time)}));\n  }\n`\n\nconst program = createProgram(gl, vertex, fragment)\n\nconst { attributes, uniforms } = view(gl, program, {\n  uniforms: { [u_time]: { kind: 'float' } },\n  attributes: { [a_position]: { kind: 'vec3' } },\n})\n\nattributes[a_position].set(vertexData)\nuniforms[u_time].set(performance.now())\n```\n\n</details>\n\n## 🛠️ Utils\n\n### 🏗️ createProgram\n\nCreates and links a WebGL program from vertex and fragment shader sources.\n\n```typescript\nconst program = createProgram(gl, vertexShaderSource, fragmentShaderSource, { signal })\n```\n\n### 🖼️ createTexture\n\nCreates a WebGL texture with specified parameters.\n\n```typescript\nconst texture = createTexture(\n  gl,\n  {\n    width: 512,\n    height: 512,\n    internalFormat: 'RGBA',\n    format: 'RGBA',\n    type: 'UNSIGNED_BYTE',\n    minFilter: 'LINEAR',\n    magFilter: 'LINEAR',\n    wrapS: 'CLAMP_TO_EDGE',\n    wrapT: 'CLAMP_TO_EDGE',\n  },\n  data,\n  { signal },\n)\n```\n\nAutomatically validates WebGL2-only formats and provides fallbacks for WebGL1.\n\n### 🖥️ createFramebuffer\n\nCreates a framebuffer with attached texture for render-to-texture operations.\n\n```typescript\nconst { framebuffer, texture, dispose } = createFramebuffer(\n  gl,\n  {\n    width: 512,\n    height: 512,\n    attachment: 'color',\n    internalFormat: 'RGBA',\n    format: 'RGBA',\n    type: 'UNSIGNED_BYTE',\n  },\n  { signal },\n)\n```\n\nSupports color, depth, stencil, and combined depth-stencil attachments with completeness validation.\n\nPass a `texture` to attach one you already have — ping-ponging a pair of\nframebuffers over shared textures, say. `dispose()` then deletes the framebuffer\nand leaves that texture alone, because it is not the framebuffer's to delete.\n\n## 🚨 Errors\n\nEvery error view.gl throws for a GL call that failed is a class exported from `@bigmistqke/view.gl`, carrying what the GL answered:\n\n| Error | Thrown when | Carries |\n| --- | --- | --- |\n| `ShaderCompileError` | a shader does not compile | `stage`, `infoLog` (`string \\| null`, as the driver answered it), `glError` |\n| `ProgramLinkError` | a program does not link | `infoLog` (`string \\| null`), `glError` |\n| `GLCreateError` | a `create*` call answers `null` | `resource`: `'shader'`, `'program'`, `'buffer'`, `'vertexArray'`, `'texture'` or `'framebuffer'` |\n| `AttributeNotFoundError` | `getAttribLocation` answers -1 | `attribute` |\n\nA lost WebGL context answers every call with a default: `null` from a `create*`, -1 for an attribute, `false` with an empty or `null` log for a compile or link. So an empty `infoLog` or a `GLCreateError` carries no cause, where a non-empty `infoLog` is the driver's own reason.\n\n```typescript\nimport { createProgram } from '@bigmistqke/view.gl/gl'\nimport { ShaderCompileError } from '@bigmistqke/view.gl'\n\ntry {\n  createProgram(gl, vertex, fragment)\n} catch (error) {\n  if (error instanceof ShaderCompileError && error.infoLog?.trim()) {\n    console.error(`${error.stage} shader rejected:`, error.infoLog)\n  }\n}\n```\n\n## 🔍 WebGL Type Compatibility\n\n### 🎯 Uniform Types\n\n| Type                   | WebGL 1 | WebGL 2 |\n| ---------------------- | ------- | ------- |\n| `float`                | ✅      | ✅      |\n| `int`                  | ✅      | ✅      |\n| `bool`                 | ✅      | ✅      |\n| `vec2`                 | ✅      | ✅      |\n| `vec3`                 | ✅      | ✅      |\n| `vec4`                 | ✅      | ✅      |\n| `ivec2`                | ✅      | ✅      |\n| `ivec3`                | ✅      | ✅      |\n| `ivec4`                | ✅      | ✅      |\n| `bvec2`                | ✅      | ✅      |\n| `bvec3`                | ✅      | ✅      |\n| `bvec4`                | ✅      | ✅      |\n| `mat2`                 | ✅      | ✅      |\n| `mat3`                 | ✅      | ✅      |\n| `mat4`                 | ✅      | ✅      |\n| `sampler2D`            | ✅      | ✅      |\n| `samplerCube`          | ✅      | ✅      |\n| `uint`                 | ❌      | ✅      |\n| `uvec2`                | ❌      | ✅      |\n| `uvec3`                | ❌      | ✅      |\n| `uvec4`                | ❌      | ✅      |\n| `mat2x3`               | ❌      | ✅      |\n| `mat2x4`               | ❌      | ✅      |\n| `mat3x2`               | ❌      | ✅      |\n| `mat3x4`               | ❌      | ✅      |\n| `mat4x2`               | ❌      | ✅      |\n| `mat4x3`               | ❌      | ✅      |\n| `sampler3D`            | ❌      | ✅      |\n| `sampler2DArray`       | ❌      | ✅      |\n| `sampler2DShadow`      | ❌      | ✅      |\n| `samplerCubeShadow`    | ❌      | ✅      |\n| `sampler2DArrayShadow` | ❌      | ✅      |\n| `isampler2D`           | ❌      | ✅      |\n| `isampler3D`           | ❌      | ✅      |\n| `isamplerCube`         | ❌      | ✅      |\n| `isampler2DArray`      | ❌      | ✅      |\n| `usampler2D`           | ❌      | ✅      |\n| `usampler3D`           | ❌      | ✅      |\n| `usamplerCube`         | ❌      | ✅      |\n| `usampler2DArray`      | ❌      | ✅      |\n\n### 📝 Attribute Types\n\n| Type     | WebGL 1 | WebGL 2 |\n| -------- | ------- | ------- |\n| `float`  | ✅      | ✅      |\n| `vec2`   | ✅      | ✅      |\n| `vec3`   | ✅      | ✅      |\n| `vec4`   | ✅      | ✅      |\n| `mat2`   | ✅      | ✅      |\n| `mat3`   | ✅      | ✅      |\n| `mat4`   | ✅      | ✅      |\n| `int`    | ❌      | ✅      |\n| `ivec2`  | ❌      | ✅      |\n| `ivec3`  | ❌      | ✅      |\n| `ivec4`  | ❌      | ✅      |\n| `uint`   | ❌      | ✅      |\n| `uvec2`  | ❌      | ✅      |\n| `uvec3`  | ❌      | ✅      |\n| `uvec4`  | ❌      | ✅      |\n| `mat2x3` | ❌      | ✅      |\n| `mat2x4` | ❌      | ✅      |\n| `mat3x2` | ❌      | ✅      |\n| `mat3x4` | ❌      | ✅      |\n| `mat4x2` | ❌      | ✅      |\n| `mat4x3` | ❌      | ✅      |\n","readmeFilename":"README.md"}