{"_id":"gst-kit","_rev":"33-24d0dc8ad3bac7071426232154639ccc","name":"gst-kit","dist-tags":{"latest":"0.3.1"},"versions":{"0.0.5":{"name":"gst-kit","version":"0.0.5","keywords":["gstreamer","multimedia","streaming","video","audio","pipeline","native","addon","typescript"],"author":{"name":"Serhii Mamedov"},"license":"ISC","_id":"gst-kit@0.0.5","maintainers":[{"name":"repugraf","email":"bboyvivus@gmail.com"}],"dist":{"shasum":"6e5beb1e614ed0907e3a7f2d8021334414f01003","tarball":"https://registry.npmjs.org/gst-kit/-/gst-kit-0.0.5.tgz","fileCount":44,"integrity":"sha512-YcCZRwlhzhA9omLnthGF5y4QYe/blUogjmmaVEiqm3Pex9GHA+QaGQAo8Z4YTM4gJEm0b75bP0ktS9WHFNzwLQ==","signatures":[{"sig":"MEYCIQDDEMWAaJAaRWXUSXu3gmodL5X66MZTp2JkzGFVsLyPfwIhALjKVT44TgV5HFGoq6pbG+CpVI2h/AIKzy4bQJsheL6M","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":105494},"type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"0dcc2e95b46b390881626bd612cbad1918bccf30","scripts":{"lint":"eslint . --ext .ts","test":"npm run test:node && npm run test:unit","build":"npm run clean && npm run build:native && npm run build:ts","clean":"rm -rf build dist","format":"prettier --write \"**/*.{ts,js,json,md}\"","build:ts":"rollup -c rollup.config.mjs","lint:fix":"eslint . --ext .ts --fix","test:bun":"bun modules/common.cjs && bun modules/esm.mjs","test:node":"node modules/common.cjs && node modules/esm.mjs","test:unit":"vitest --no-watch","postinstall":"node scripts/ensure-native-addon.mjs","build:native":"cmake-js compile","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"repugraf","actor":{"name":"repugraf","type":"user","email":"bboyvivus@gmail.com"},"email":"bboyvivus@gmail.com"},"_npmVersion":"10.8.1","description":"Node.js binding for GStreamer, providing high-level APIs for multimedia streaming and processing","directories":{},"_nodeVersion":"20.16.0","dependencies":{"cmake-js":"7.3.1","node-addon-api":"8.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"2.8.1","eslint":"9.28.0","rollup":"4.43.0","vitest":"3.2.3","prettier":"3.5.3","typescript":"5.8.3","@types/node":"24.0.1","rollup-plugin-dts":"6.2.1","@rollup/plugin-commonjs":"28.0.3","@rollup/plugin-typescript":"12.1.2","@typescript-eslint/parser":"8.34.0","@rollup/plugin-node-resolve":"16.0.1","@typescript-eslint/eslint-plugin":"8.34.0"},"_npmOperationalInternal":{"tmp":"tmp/gst-kit_0.0.5_1750612151329_0.6660612015637426","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"gst-kit","version":"0.0.6","keywords":["gstreamer","multimedia","streaming","video","audio","pipeline","native","addon","typescript"],"author":{"name":"Serhii Mamedov"},"license":"ISC","_id":"gst-kit@0.0.6","maintainers":[{"name":"repugraf","email":"bboyvivus@gmail.com"}],"dist":{"shasum":"0cd0cf9bae803c93dce1b94febd22a1a99ba48b2","tarball":"https://registry.npmjs.org/gst-kit/-/gst-kit-0.0.6.tgz","fileCount":45,"integrity":"sha512-/Fwc2wjs8TNG3ahER2x4kJ1couvSct8xESUuVlHFWhBd2m5uTwYXvdSNXLdyf6ru4S0J5gu3udCJ82lFi3BoVg==","signatures":[{"sig":"MEQCIC+G2dnRlfjsHLCRe8c/Hqk8lvvpSRAP++jjXt0xxrH0AiBQZkLItXCDEuXwc88xbtFumZC9SgIUeR9F43tLk03VoQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109328},"type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"466d97cda5e907930133725e9ee896f562517c85","scripts":{"lint":"eslint . --ext .ts","test":"npm run test:node && npm run test:unit","build":"npm run clean && npm run build:native && npm run build:ts","clean":"rm -rf build dist","format":"prettier --write \"**/*.{ts,js,json,md}\"","build:ts":"rollup -c rollup.config.mjs","lint:fix":"eslint . --ext .ts --fix","test:bun":"bun modules/common.cjs && bun modules/esm.mjs","test:node":"node modules/common.cjs && node modules/esm.mjs","test:unit":"vitest --no-watch","postinstall":"node scripts/ensure-native-addon.mjs","build:native":"cmake-js compile","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"repugraf","actor":{"name":"repugraf","type":"user","email":"bboyvivus@gmail.com"},"email":"bboyvivus@gmail.com"},"_npmVersion":"10.8.1","description":"Node.js binding for GStreamer, providing high-level APIs for multimedia streaming and processing","directories":{},"_nodeVersion":"20.16.0","dependencies":{"cmake-js":"7.3.1","node-addon-api":"8.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"2.8.1","eslint":"9.28.0","rollup":"4.43.0","vitest":"3.2.3","prettier":"3.5.3","typescript":"5.8.3","@types/node":"24.0.1","rollup-plugin-dts":"6.2.1","@rollup/plugin-commonjs":"28.0.3","@rollup/plugin-typescript":"12.1.2","@typescript-eslint/parser":"8.34.0","@rollup/plugin-node-resolve":"16.0.1","@typescript-eslint/eslint-plugin":"8.34.0"},"_npmOperationalInternal":{"tmp":"tmp/gst-kit_0.0.6_1750625414774_0.11749582127312497","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"gst-kit","version":"0.0.7","keywords":["gstreamer","multimedia","streaming","video","audio","pipeline","native","addon","typescript"],"author":{"name":"Serhii Mamedov"},"license":"ISC","_id":"gst-kit@0.0.7","maintainers":[{"name":"repugraf","email":"bboyvivus@gmail.com"}],"dist":{"shasum":"91dc8a7803881590c475f1e9e8fdc87c611a2925","tarball":"https://registry.npmjs.org/gst-kit/-/gst-kit-0.0.7.tgz","fileCount":44,"integrity":"sha512-O6mhQiSPYBW0ju3gM6uk6c+dOX5sLnD6SWNuCUrCA+dSkxPPIOvR8sqzGg5MSeD+bG2cYjxqtJPJoePHvk0fKg==","signatures":[{"sig":"MEUCIQDYKnUdPVY3tvvPHlIM9r0mqy++dg0UEhG0ZrUgdat5kQIgSAE+X3h7CcpypX+kg15x0z1rfqdwRqzoA1PGJRLzUsk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113535},"type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"5f192bd933ebc9c66b4c986e3d0698a5f20226f2","scripts":{"lint":"eslint . --ext .ts","test":"npm run test:node && npm run test:unit","build":"npm run clean && npm run build:native && npm run build:ts","clean":"rm -rf build dist","format":"prettier --write \"**/*.{ts,js,json,md}\"","build:ts":"rollup -c rollup.config.mjs","lint:fix":"eslint . --ext .ts --fix","test:bun":"bun modules/common.cjs && bun modules/esm.mjs","test:node":"node modules/common.cjs && node modules/esm.mjs","test:unit":"vitest --no-watch","postinstall":"node scripts/ensure-native-addon.mjs","build:native":"cmake-js compile","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"repugraf","actor":{"name":"repugraf","type":"user","email":"bboyvivus@gmail.com"},"email":"bboyvivus@gmail.com"},"_npmVersion":"10.8.1","description":"Node.js binding for GStreamer, providing high-level APIs for multimedia streaming and processing","directories":{},"_nodeVersion":"20.16.0","dependencies":{"cmake-js":"7.3.1","node-addon-api":"8.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"2.8.1","eslint":"9.28.0","rollup":"4.43.0","vitest":"3.2.3","prettier":"3.5.3","typescript":"5.8.3","@types/node":"24.0.1","rollup-plugin-dts":"6.2.1","@rollup/plugin-commonjs":"28.0.3","@rollup/plugin-typescript":"12.1.2","@typescript-eslint/parser":"8.34.0","@rollup/plugin-node-resolve":"16.0.1","@typescript-eslint/eslint-plugin":"8.34.0"},"_npmOperationalInternal":{"tmp":"tmp/gst-kit_0.0.7_1750627141889_0.13478790405255148","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"gst-kit","version":"0.0.8","keywords":["gstreamer","multimedia","streaming","video","audio","pipeline","native","addon","typescript"],"author":{"name":"Serhii Mamedov"},"license":"ISC","_id":"gst-kit@0.0.8","maintainers":[{"name":"repugraf","email":"bboyvivus@gmail.com"}],"dist":{"shasum":"578f9c58f0238a8c78c81e59cb3adf695a4b49d3","tarball":"https://registry.npmjs.org/gst-kit/-/gst-kit-0.0.8.tgz","fileCount":47,"integrity":"sha512-9/nnZT2q4I8Y8ebydkAZuofFP17jWaGWHmSmrM4tNF+uWarRuxBr7wLaeJ0svEBTSEcL6PabJfgjU3NSc+3ukg==","signatures":[{"sig":"MEQCIHj5WTtPfyrBnHXKie0u3Xc2Qymx8WYRWMjqHc0Ou1x5AiBbLNYGms8VT/F3/bXSLgYGp6gDbkzMul743pKbZq5JUw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":121896},"type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"b6f66552f4ffd262bd7ebe952dcf14a5c477c551","scripts":{"lint":"eslint . --ext .ts","test":"npm run test:node && npm run test:unit","build":"npm run clean && npm run build:native && npm run build:ts","clean":"rm -rf build dist","format":"prettier --write \"**/*.{ts,js,json,md}\"","build:ts":"rollup -c rollup.config.mjs","lint:fix":"eslint . --ext .ts --fix","test:bun":"bun modules/common.cjs && bun modules/esm.mjs","test:node":"node modules/common.cjs && node modules/esm.mjs","test:unit":"vitest --no-watch","postinstall":"node scripts/ensure-native-addon.mjs","build:native":"cmake-js compile","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"repugraf","actor":{"name":"repugraf","type":"user","email":"bboyvivus@gmail.com"},"email":"bboyvivus@gmail.com"},"_npmVersion":"10.8.1","description":"Node.js binding for GStreamer, providing high-level APIs for multimedia streaming and processing","directories":{},"_nodeVersion":"20.16.0","dependencies":{"cmake-js":"7.3.1","node-addon-api":"8.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"2.8.1","eslint":"9.28.0","rollup":"4.43.0","vitest":"3.2.3","prettier":"3.5.3","typescript":"5.8.3","@types/node":"24.0.1","rollup-plugin-dts":"6.2.1","@rollup/plugin-commonjs":"28.0.3","@rollup/plugin-typescript":"12.1.2","@typescript-eslint/parser":"8.34.0","@rollup/plugin-node-resolve":"16.0.1","@typescript-eslint/eslint-plugin":"8.34.0"},"_npmOperationalInternal":{"tmp":"tmp/gst-kit_0.0.8_1751107275859_0.06528427221078714","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"gst-kit","version":"0.0.9","keywords":["gstreamer","multimedia","streaming","video","audio","pipeline","native","addon","typescript"],"author":{"name":"Serhii Mamedov"},"license":"ISC","_id":"gst-kit@0.0.9","maintainers":[{"name":"repugraf","email":"bboyvivus@gmail.com"}],"dist":{"shasum":"3bc80032b1c60773fabb4fbf74d5e1b429829ead","tarball":"https://registry.npmjs.org/gst-kit/-/gst-kit-0.0.9.tgz","fileCount":47,"integrity":"sha512-/IHu7OmDvHoqmMQgDXTK0m6AmC+vqJMHIGuyT4qyX54tKTJ60oN9eu/J9XnNWuNiCXEKN2KkJ8tu/3fFxz+Uiw==","signatures":[{"sig":"MEUCIBCAAgIY1xovGurpkqcT/rod5XhyyURIv667BysW86SxAiEAyfVotvUmGsnUxEBDhv2ugK1x6IyX0VAiX8HTVd2zX6w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122907},"type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"0826f73d56fbb0e0d681d2afdabbc19fbb51a107","scripts":{"lint":"eslint . --ext .ts","test":"npm run test:node && npm run test:unit","build":"npm run clean && npm run build:native && npm run build:ts","clean":"rm -rf build dist","format":"prettier --write \"**/*.{ts,js,json,md}\"","build:ts":"rollup -c rollup.config.mjs","lint:fix":"eslint . --ext .ts --fix","test:bun":"bun modules/common.cjs && bun modules/esm.mjs","test:node":"node modules/common.cjs && node modules/esm.mjs","test:unit":"vitest --no-watch","postinstall":"node scripts/ensure-native-addon.mjs","build:native":"cmake-js compile","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"repugraf","email":"bboyvivus@gmail.com"},"overrides":{"cmake-js":{"axios":"1.11.0"}},"_npmVersion":"10.9.2","description":"Node.js binding for GStreamer, providing high-level APIs for multimedia streaming and processing","directories":{},"_nodeVersion":"22.17.0","dependencies":{"cmake-js":"7.3.1","node-addon-api":"8.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"2.8.1","eslint":"9.34.0","rollup":"4.49.0","vitest":"3.2.4","prettier":"3.6.2","typescript":"5.9.2","@types/node":"24.3.0","rollup-plugin-dts":"6.2.3","@rollup/plugin-commonjs":"28.0.6","@rollup/plugin-typescript":"12.1.4","@typescript-eslint/parser":"8.41.0","@rollup/plugin-node-resolve":"16.0.1","@typescript-eslint/eslint-plugin":"8.41.0"},"_npmOperationalInternal":{"tmp":"tmp/gst-kit_0.0.9_1756490853249_0.7126790283583071","host":"s3://npm-registry-packages-npm-production"}},"0.0.10":{"name":"gst-kit","version":"0.0.10","keywords":["gstreamer","multimedia","streaming","video","audio","pipeline","native","addon","typescript"],"author":{"name":"Serhii Mamedov"},"license":"ISC","_id":"gst-kit@0.0.10","maintainers":[{"name":"repugraf","email":"bboyvivus@gmail.com"}],"dist":{"shasum":"4447e17ceddc231949156204812f168bda8f2a02","tarball":"https://registry.npmjs.org/gst-kit/-/gst-kit-0.0.10.tgz","fileCount":47,"integrity":"sha512-QDPKda8pc8A5IDItlqBy1CtIs9XLmObpPdXkesTyJBRufLoo4gMrflHn1AIKmS3ebKaeVP8kVE+S5PtHLSKCGw==","signatures":[{"sig":"MEQCIE5vitFpnqBodNwmpF2rnzk/YJ8k347clnCw1JLtVEpRAiB5WaUt+aT2vlPCSxaJYS64rkC4Wq/Kq9RlUWVBB0v5aw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122908},"type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"b84b6406dd166c9bd1e57d6f2de5f8ee1ff85730","scripts":{"lint":"eslint . --ext .ts","test":"npm run test:node && npm run test:unit","build":"npm run clean && npm run build:native && npm run build:ts","clean":"rm -rf build dist","format":"prettier --write \"**/*.{ts,js,json,md}\"","build:ts":"rollup -c rollup.config.mjs","lint:fix":"eslint . --ext .ts --fix","test:bun":"bun modules/common.cjs && bun modules/esm.mjs","test:node":"node modules/common.cjs && node modules/esm.mjs","test:unit":"vitest --no-watch","postinstall":"node scripts/ensure-native-addon.mjs","build:native":"cmake-js compile","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"repugraf","email":"bboyvivus@gmail.com"},"overrides":{"cmake-js":{"axios":"1.11.0"}},"_npmVersion":"10.9.2","description":"Node.js binding for GStreamer, providing high-level APIs for multimedia streaming and processing","directories":{},"_nodeVersion":"22.17.0","dependencies":{"cmake-js":"7.3.1","node-addon-api":"8.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"2.8.1","eslint":"9.34.0","rollup":"4.49.0","vitest":"3.2.4","prettier":"3.6.2","typescript":"5.9.2","@types/node":"24.3.0","rollup-plugin-dts":"6.2.3","@rollup/plugin-commonjs":"28.0.6","@rollup/plugin-typescript":"12.1.4","@typescript-eslint/parser":"8.41.0","@rollup/plugin-node-resolve":"16.0.1","@typescript-eslint/eslint-plugin":"8.41.0"},"_npmOperationalInternal":{"tmp":"tmp/gst-kit_0.0.10_1756491995838_0.08053966565955428","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"gst-kit","version":"0.0.11","keywords":["gstreamer","multimedia","streaming","video","audio","pipeline","native","addon","typescript"],"author":{"name":"Serhii Mamedov","email":"bboyvivus@gmail.com"},"license":"ISC","_id":"gst-kit@0.0.11","maintainers":[{"name":"repugraf","email":"bboyvivus@gmail.com"}],"homepage":"https://github.com/repugraf/gst-kit","bugs":{"url":"https://github.com/repugraf/gst-kit/issues"},"dist":{"shasum":"f54f24ec743bed926b0819f5a5aa8952d91f782b","tarball":"https://registry.npmjs.org/gst-kit/-/gst-kit-0.0.11.tgz","fileCount":47,"integrity":"sha512-hmJ4TSk/LyAwiS8nyvx0TOZLsZAV5OFb53fQiiUmCq6gyaNPVzto/3Ekx+/MRKctxT/3pKPf/0YPyKD9QZMj0Q==","signatures":[{"sig":"MEYCIQCXMnJPCjEmg74o6wPf8DIOxG3s8kzJPBg3A50JQsWWmgIhAODly+Sb+wEbULYpuKVnZcaecLbQrfTbbL5Sd4FqPZPy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123106},"type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"39a4e9eb57ffa957e5ec4841de0878440d71a089","scripts":{"lint":"eslint . --ext .ts","test":"npm run test:node && npm run test:unit","build":"npm run clean && npm run build:native && npm run build:ts","clean":"rm -rf build dist","format":"prettier --write \"**/*.{ts,js,json,md}\"","build:ts":"rollup -c rollup.config.mjs","lint:fix":"eslint . --ext .ts --fix","test:bun":"bun modules/common.cjs && bun modules/esm.mjs","test:node":"node modules/common.cjs && node modules/esm.mjs","test:unit":"vitest --no-watch","postinstall":"node scripts/ensure-native-addon.mjs","build:native":"cmake-js compile","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"repugraf","email":"bboyvivus@gmail.com"},"overrides":{"cmake-js":{"axios":"1.11.0"}},"repository":{"url":"git+ssh://git@github.com/repugraf/gst-kit.git","type":"git"},"_npmVersion":"10.9.2","description":"Node.js binding for GStreamer, providing high-level APIs for multimedia streaming and processing","directories":{},"_nodeVersion":"22.17.0","dependencies":{"cmake-js":"7.3.1","node-addon-api":"8.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"2.8.1","eslint":"9.34.0","rollup":"4.49.0","vitest":"3.2.4","prettier":"3.6.2","typescript":"5.9.2","@types/node":"24.3.0","rollup-plugin-dts":"6.2.3","@rollup/plugin-commonjs":"28.0.6","@rollup/plugin-typescript":"12.1.4","@typescript-eslint/parser":"8.41.0","@rollup/plugin-node-resolve":"16.0.1","@typescript-eslint/eslint-plugin":"8.41.0"},"_npmOperationalInternal":{"tmp":"tmp/gst-kit_0.0.11_1756492440887_0.11536497859312567","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"gst-kit","version":"0.0.12","keywords":["gstreamer","multimedia","streaming","video","audio","pipeline","native","addon","typescript"],"author":{"name":"Serhii Mamedov","email":"bboyvivus@gmail.com"},"license":"ISC","_id":"gst-kit@0.0.12","maintainers":[{"name":"repugraf","email":"bboyvivus@gmail.com"}],"homepage":"https://github.com/repugraf/gst-kit","bugs":{"url":"https://github.com/repugraf/gst-kit/issues"},"dist":{"shasum":"655a4366415a74d8f5054aca4062d042d3bf1f4d","tarball":"https://registry.npmjs.org/gst-kit/-/gst-kit-0.0.12.tgz","fileCount":49,"integrity":"sha512-Ig76AhdgezkdeX1fg4D8C6ZWIA0jtLxEgpA5PfOR+e6kq0YbO3dm+au8huUexGtiljeocIlVz45KRs77rt6K/w==","signatures":[{"sig":"MEUCIQCzkpe1gWZbserGKN3AV6isDldkqIsqWGKBxWu7rhM8XgIgJ2VNLn7mSzgOoKr7psKeSd9aZh9QniHMs6FiXjO7kOM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130888},"type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"a2e881af767b63e43d3105118abdb3cc33847cfd","scripts":{"lint":"eslint . --ext .ts","test":"npm run test:node && npm run test:unit","build":"npm run clean && npm run build:native && npm run build:ts","clean":"rm -rf build dist","format":"prettier --write \"**/*.{ts,js,json,md}\"","build:ts":"rollup -c rollup.config.mjs","lint:fix":"eslint . --ext .ts --fix","test:bun":"bun modules/common.cjs && bun modules/esm.mjs","test:node":"node modules/common.cjs && node modules/esm.mjs","test:unit":"vitest --no-watch","postinstall":"node scripts/ensure-native-addon.mjs","build:native":"cmake-js compile","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"repugraf","email":"bboyvivus@gmail.com"},"overrides":{"cmake-js":{"axios":"1.11.0"}},"repository":{"url":"git+ssh://git@github.com/repugraf/gst-kit.git","type":"git"},"_npmVersion":"10.9.2","description":"Node.js binding for GStreamer, providing high-level APIs for multimedia streaming and processing","directories":{},"_nodeVersion":"22.17.0","dependencies":{"cmake-js":"7.3.1","node-addon-api":"8.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"2.8.1","eslint":"9.34.0","rollup":"4.49.0","vitest":"3.2.4","prettier":"3.6.2","typescript":"5.9.2","@types/node":"24.3.0","rollup-plugin-dts":"6.2.3","@rollup/plugin-commonjs":"28.0.6","@rollup/plugin-typescript":"12.1.4","@typescript-eslint/parser":"8.41.0","@rollup/plugin-node-resolve":"16.0.1","@typescript-eslint/eslint-plugin":"8.41.0"},"_npmOperationalInternal":{"tmp":"tmp/gst-kit_0.0.12_1757009215845_0.7917588065951335","host":"s3://npm-registry-packages-npm-production"}},"0.0.13":{"name":"gst-kit","version":"0.0.13","keywords":["gstreamer","multimedia","streaming","video","audio","pipeline","native","addon","typescript"],"author":{"name":"Serhii Mamedov","email":"bboyvivus@gmail.com"},"license":"ISC","_id":"gst-kit@0.0.13","maintainers":[{"name":"repugraf","email":"bboyvivus@gmail.com"}],"homepage":"https://github.com/repugraf/gst-kit","bugs":{"url":"https://github.com/repugraf/gst-kit/issues"},"dist":{"shasum":"0d79a3dbcaabe51a78bd150e4583e7d2a9145de3","tarball":"https://registry.npmjs.org/gst-kit/-/gst-kit-0.0.13.tgz","fileCount":49,"integrity":"sha512-p57EevNzmOt7+cE2/8NTDh8VdNEXQ0Ypnw91fWQ2pJO2I8XOcz6RFRboe2HQB/3yIbKRei9OPsTXMkU8XmHM8A==","signatures":[{"sig":"MEYCIQD6VCLNFGb96529E0Is603hlqbQdREf1a/DBPxMy9NjpQIhAKCNTy+uU/EJ8STHMV+c6FC2v7XaXAEIV9ITC0wh2cXQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131004},"type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"f2385c42e5d351813079ebfa2f8a901bb185d0db","scripts":{"lint":"eslint . --ext .ts","test":"npm run test:node && npm run test:unit","build":"npm run clean && npm run build:native && npm run build:ts","clean":"rm -rf build dist","format":"prettier --write \"**/*.{ts,js,json,md}\"","build:ts":"rollup -c rollup.config.mjs","lint:fix":"eslint . --ext .ts --fix","test:bun":"bun modules/common.cjs && bun modules/esm.mjs","test:node":"node modules/common.cjs && node modules/esm.mjs","test:unit":"vitest --no-watch","postinstall":"node scripts/ensure-native-addon.mjs","build:native":"cmake-js compile","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"repugraf","email":"bboyvivus@gmail.com"},"overrides":{"cmake-js":{"axios":"1.11.0"}},"repository":{"url":"git+ssh://git@github.com/repugraf/gst-kit.git","type":"git"},"_npmVersion":"10.9.2","description":"Node.js binding for GStreamer, providing high-level APIs for multimedia streaming and processing","directories":{},"_nodeVersion":"22.17.0","dependencies":{"cmake-js":"7.3.1","node-addon-api":"8.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"2.8.1","eslint":"9.34.0","rollup":"4.49.0","vitest":"3.2.4","prettier":"3.6.2","typescript":"5.9.2","@types/node":"24.3.0","rollup-plugin-dts":"6.2.3","@rollup/plugin-commonjs":"28.0.6","@rollup/plugin-typescript":"12.1.4","@typescript-eslint/parser":"8.41.0","@rollup/plugin-node-resolve":"16.0.1","@typescript-eslint/eslint-plugin":"8.41.0"},"_npmOperationalInternal":{"tmp":"tmp/gst-kit_0.0.13_1757009923853_0.5831434563457001","host":"s3://npm-registry-packages-npm-production"}},"0.0.14":{"name":"gst-kit","version":"0.0.14","keywords":["gstreamer","multimedia","streaming","video","audio","pipeline","native","addon","typescript"],"author":{"name":"Serhii Mamedov","email":"bboyvivus@gmail.com"},"license":"ISC","_id":"gst-kit@0.0.14","maintainers":[{"name":"repugraf","email":"bboyvivus@gmail.com"}],"homepage":"https://github.com/repugraf/gst-kit","bugs":{"url":"https://github.com/repugraf/gst-kit/issues"},"dist":{"shasum":"52a126c0ffcb345f3f938a084047fb19312bbb2c","tarball":"https://registry.npmjs.org/gst-kit/-/gst-kit-0.0.14.tgz","fileCount":49,"integrity":"sha512-1xuD3Dnigre+WnzgisY4tvYPhKI/1+BaDKTqGTGjylqDcQYPYM8V5Z4cNeAfaJm7wn70WrzGDCaR/SmHnsYYzg==","signatures":[{"sig":"MEUCIQCnzE0JQkHIPZURTmPf9z4Gea4UHwKhlHrbbVyidB49ngIgHvafm/e0QBdG2Qx+zdIZEnL7sn3G27dFRFLeV8b7TiI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":133839},"type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"1a184ca35c324dcf9af022dcb2580ee456ed4803","scripts":{"lint":"eslint . --ext .ts","test":"npm run test:node && npm run test:unit","build":"npm run clean && npm run build:native && npm run build:ts","clean":"rm -rf build dist","format":"prettier --write \"**/*.{ts,js,json,md}\"","build:ts":"rollup -c rollup.config.mjs","lint:fix":"eslint . --ext .ts --fix","test:bun":"bun modules/common.cjs && bun modules/esm.mjs","test:node":"node modules/common.cjs && node modules/esm.mjs","test:unit":"vitest --no-watch","postinstall":"node scripts/ensure-native-addon.mjs","build:native":"cmake-js compile","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"repugraf","email":"bboyvivus@gmail.com"},"overrides":{"cmake-js":{"axios":"1.11.0"}},"repository":{"url":"git+ssh://git@github.com/repugraf/gst-kit.git","type":"git"},"_npmVersion":"10.9.2","description":"Node.js binding for GStreamer, providing high-level APIs for multimedia streaming and processing","directories":{},"_nodeVersion":"22.17.0","dependencies":{"cmake-js":"7.3.1","node-addon-api":"8.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"2.8.1","eslint":"9.34.0","rollup":"4.49.0","vitest":"3.2.4","prettier":"3.6.2","typescript":"5.9.2","@types/node":"24.3.0","rollup-plugin-dts":"6.2.3","@rollup/plugin-commonjs":"28.0.6","@rollup/plugin-typescript":"12.1.4","@typescript-eslint/parser":"8.41.0","@rollup/plugin-node-resolve":"16.0.1","@typescript-eslint/eslint-plugin":"8.41.0"},"_npmOperationalInternal":{"tmp":"tmp/gst-kit_0.0.14_1757340031973_0.47063872457465594","host":"s3://npm-registry-packages-npm-production"}},"0.0.15":{"name":"gst-kit","version":"0.0.15","keywords":["gstreamer","multimedia","streaming","video","audio","pipeline","native","addon","typescript"],"author":{"name":"Serhii Mamedov","email":"bboyvivus@gmail.com"},"license":"ISC","_id":"gst-kit@0.0.15","maintainers":[{"name":"repugraf","email":"bboyvivus@gmail.com"}],"homepage":"https://github.com/repugraf/gst-kit","bugs":{"url":"https://github.com/repugraf/gst-kit/issues"},"dist":{"shasum":"c4052f03e08c01dd302ea5760906cd0073d9a8a5","tarball":"https://registry.npmjs.org/gst-kit/-/gst-kit-0.0.15.tgz","fileCount":49,"integrity":"sha512-sK2ZGvCsNRrwnx0+MLGVfSiquwVDWdhPSd7RCkglX9nnyxmlhpfGfPLBQZd4JQJaX/AN03exVnDDJ+YmPHEj4A==","signatures":[{"sig":"MEUCIQD7tsHsFhG0SECDsWZ4gdwJkwQkslLYNOoPUoR3Yyy20AIgMdco2ZPRFrCfsQbqy9hPPJK0DLIo2tGZFyi3XJviYtI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":133884},"type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"ea2a0bb84ed0999e2cb4da7a67f7de8df2b148dd","scripts":{"lint":"eslint . --ext .ts","test":"npm run test:node && npm run test:unit","build":"npm run clean && npm run build:native && npm run build:ts","clean":"rm -rf build dist","format":"prettier --write \"**/*.{ts,js,json,md}\"","build:ts":"rollup -c rollup.config.mjs","lint:fix":"eslint . --ext .ts --fix","test:bun":"bun modules/common.cjs && bun modules/esm.mjs","test:node":"node modules/common.cjs && node modules/esm.mjs","test:unit":"vitest --no-watch","postinstall":"node scripts/ensure-native-addon.mjs","build:native":"cmake-js compile","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"repugraf","email":"bboyvivus@gmail.com"},"overrides":{"vitest":{"vite":"7.1.5"},"cmake-js":{"axios":"1.12.0"}},"repository":{"url":"git+ssh://git@github.com/repugraf/gst-kit.git","type":"git"},"_npmVersion":"10.9.2","description":"Node.js binding for GStreamer, providing high-level APIs for multimedia streaming and processing","directories":{},"_nodeVersion":"22.17.0","dependencies":{"cmake-js":"7.3.1","node-addon-api":"8.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"2.8.1","eslint":"9.34.0","rollup":"4.49.0","vitest":"3.2.4","prettier":"3.6.2","typescript":"5.9.2","@types/node":"24.3.0","rollup-plugin-dts":"6.2.3","@rollup/plugin-commonjs":"28.0.6","@rollup/plugin-typescript":"12.1.4","@typescript-eslint/parser":"8.41.0","@rollup/plugin-node-resolve":"16.0.1","@typescript-eslint/eslint-plugin":"8.41.0"},"_npmOperationalInternal":{"tmp":"tmp/gst-kit_0.0.15_1757662496672_0.4608268456031426","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"gst-kit","version":"0.1.0","keywords":["gstreamer","multimedia","streaming","video","audio","pipeline","native","addon","typescript"],"author":{"name":"Serhii Mamedov","email":"bboyvivus@gmail.com"},"license":"ISC","_id":"gst-kit@0.1.0","maintainers":[{"name":"repugraf","email":"bboyvivus@gmail.com"}],"homepage":"https://github.com/repugraf/gst-kit","bugs":{"url":"https://github.com/repugraf/gst-kit/issues"},"dist":{"shasum":"0130619f4aaeac89e78cafee1775e741f2680ab5","tarball":"https://registry.npmjs.org/gst-kit/-/gst-kit-0.1.0.tgz","fileCount":50,"integrity":"sha512-SKSItaqM1ewLk16dYGjDz8F4658Iv7d3V5KHOT2D3sQGedyw6alywTDYZfRcsCLQadGpn+8CgtwrYUJ+qeweGw==","signatures":[{"sig":"MEYCIQC+Vi9vMpkS/uu0j6SPXpRC3w3zbeRlKxt0VEw6pOk4fgIhAMvqx5hxx34cVxgD72x5SC+A6VhCCBZ8ViSv1yWCwryD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":135525},"type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"2ba8e08f8afbd137f6e321dbf297dea3c9f8a8cc","scripts":{"lint":"eslint","test":"npm run test:node && npm run test:unit","build":"npm run clean && npm run build:native && npm run build:ts","clean":"rm -rf build dist","format":"prettier --write \"**/*.{ts,js,json,md}\"","build:ts":"rollup -c rollup.config.mjs","lint:fix":"eslint --fix","test:bun":"bun modules/common.cjs && bun modules/esm.mjs","test:node":"node modules/common.cjs && node modules/esm.mjs","test:unit":"vitest --no-watch","postinstall":"node scripts/ensure-native-addon.mjs","build:native":"cmake-js compile","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"repugraf","email":"bboyvivus@gmail.com"},"overrides":{"vitest":{"vite":"7.1.5"},"cmake-js":{"axios":"1.12.0"}},"repository":{"url":"git+ssh://git@github.com/repugraf/gst-kit.git","type":"git"},"_npmVersion":"10.9.2","description":"Node.js binding for GStreamer, providing high-level APIs for multimedia streaming and processing","directories":{},"_nodeVersion":"22.17.0","dependencies":{"cmake-js":"7.3.1","node-addon-api":"8.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"2.8.1","eslint":"9.34.0","rollup":"4.49.0","vitest":"3.2.4","prettier":"3.6.2","typescript":"5.9.2","@types/node":"24.3.0","rollup-plugin-dts":"6.2.3","@rollup/plugin-commonjs":"28.0.6","@rollup/plugin-typescript":"12.1.4","@typescript-eslint/parser":"8.41.0","@rollup/plugin-node-resolve":"16.0.1","@typescript-eslint/eslint-plugin":"8.41.0"},"_npmOperationalInternal":{"tmp":"tmp/gst-kit_0.1.0_1758702339572_0.2659531912645401","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"gst-kit","version":"0.1.1","keywords":["gstreamer","multimedia","streaming","video","audio","pipeline","native","addon","typescript"],"author":{"name":"Serhii Mamedov","email":"bboyvivus@gmail.com"},"license":"ISC","_id":"gst-kit@0.1.1","maintainers":[{"name":"repugraf","email":"bboyvivus@gmail.com"}],"homepage":"https://github.com/repugraf/gst-kit","bugs":{"url":"https://github.com/repugraf/gst-kit/issues"},"dist":{"shasum":"c388de0a465d156d7d728d86ddb3e59560766cf7","tarball":"https://registry.npmjs.org/gst-kit/-/gst-kit-0.1.1.tgz","fileCount":50,"integrity":"sha512-1HD3YehN5rYuSYgeVKZWiDXuyPpsLTimIsX5ALGo3a2prXBCQKSfxtptyAVlnChyWor/WC1h5WyE4KmRvIDb8Q==","signatures":[{"sig":"MEYCIQCkTgr0QnYBOIzNNkMODZQ8QZy2ck2tIe84b1t7EG0gKQIhAOHlarGekK9S7EehErCRk8sDoGKxa3WVDYnZ/r0TK7bj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":135632},"type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"0e03ef8927352f33659a72c0f892035c8d03cdd7","scripts":{"lint":"eslint","test":"npm run test:node && npm run test:unit","build":"npm run clean && npm run build:native && npm run build:ts","clean":"rm -rf build dist","format":"prettier --write \"**/*.{ts,js,json,md}\"","build:ts":"rollup -c rollup.config.mjs","lint:fix":"eslint --fix","test:bun":"bun modules/common.cjs && bun modules/esm.mjs","test:node":"node modules/common.cjs && node modules/esm.mjs","test:unit":"vitest --no-watch","postinstall":"node scripts/ensure-native-addon.mjs","build:native":"cmake-js compile","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"repugraf","email":"bboyvivus@gmail.com"},"overrides":{"vitest":{"vite":"7.1.5"},"cmake-js":{"axios":"1.12.0"}},"repository":{"url":"git+ssh://git@github.com/repugraf/gst-kit.git","type":"git"},"_npmVersion":"10.9.2","description":"Node.js binding for GStreamer, providing high-level APIs for multimedia streaming and processing","directories":{},"_nodeVersion":"22.17.0","dependencies":{"cmake-js":"7.3.1","node-addon-api":"8.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"2.8.1","eslint":"9.34.0","rollup":"4.49.0","vitest":"3.2.4","prettier":"3.6.2","typescript":"5.9.2","@types/node":"24.3.0","rollup-plugin-dts":"6.2.3","@rollup/plugin-commonjs":"28.0.6","@rollup/plugin-typescript":"12.1.4","@typescript-eslint/parser":"8.41.0","@rollup/plugin-node-resolve":"16.0.1","@typescript-eslint/eslint-plugin":"8.41.0"},"_npmOperationalInternal":{"tmp":"tmp/gst-kit_0.1.1_1759509067568_0.3126642689301151","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"gst-kit","version":"0.2.0","keywords":["gstreamer","multimedia","streaming","video","audio","pipeline","native","addon","typescript"],"author":{"name":"Serhii Mamedov","email":"bboyvivus@gmail.com"},"license":"ISC","_id":"gst-kit@0.2.0","maintainers":[{"name":"repugraf","email":"bboyvivus@gmail.com"}],"homepage":"https://github.com/repugraf/gst-kit","bugs":{"url":"https://github.com/repugraf/gst-kit/issues"},"dist":{"shasum":"3ca749ac39c99064531d1cf3ea36b8a5cea99cf0","tarball":"https://registry.npmjs.org/gst-kit/-/gst-kit-0.2.0.tgz","fileCount":50,"integrity":"sha512-heblVSzf9zSi/PMcqgf1hG8xGz4d8KOKwfoYdKub4FJxpWpCACGLSqKU+KSYaeWfwcR6O9v6cVh5BAvHoWhDFQ==","signatures":[{"sig":"MEYCIQCWkHefeSMPgWkN5KzNCQ+WX39oS8i0mdAOI3t4ll6sgAIhAO/HRSdvB8xeyfVBrnyoTrkxu2tL0p4kyfQ41UkMlshJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":133564},"type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"b177f98290efd31675ea044bd7b540196222304d","gypfile":true,"scripts":{"lint":"eslint","test":"npm run test:node && npm run test:unit","build":"npm run clean && npm run build:native && npm run build:ts","clean":"rm -rf build dist","format":"prettier --write \"**/*.{ts,js,json,md}\"","install":"node-gyp rebuild","build:ts":"rollup -c rollup.config.mjs","lint:fix":"eslint --fix","test:bun":"bun modules/common.cjs && bun modules/esm.mjs","test:node":"node modules/common.cjs && node modules/esm.mjs","test:unit":"vitest --no-watch","postinstall":"node scripts/ensure-native-addon.mjs","build:native":"node-gyp rebuild","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"repugraf","email":"bboyvivus@gmail.com"},"overrides":{"vitest":{"vite":"7.2.2"}},"repository":{"url":"git+ssh://git@github.com/repugraf/gst-kit.git","type":"git"},"_npmVersion":"10.9.2","description":"Node.js binding for GStreamer, providing high-level APIs for multimedia streaming and processing","directories":{},"_nodeVersion":"22.17.0","dependencies":{"node-gyp":"11.5.0","node-addon-api":"8.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"2.8.1","eslint":"9.34.0","rollup":"4.49.0","vitest":"4.0.7","prettier":"3.6.2","typescript":"5.9.2","@types/node":"24.3.0","rollup-plugin-dts":"6.2.3","@rollup/plugin-commonjs":"28.0.6","@rollup/plugin-typescript":"12.1.4","@typescript-eslint/parser":"8.41.0","@rollup/plugin-node-resolve":"16.0.1","@typescript-eslint/eslint-plugin":"8.41.0"},"_npmOperationalInternal":{"tmp":"tmp/gst-kit_0.2.0_1762522076895_0.6041050214713308","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"gst-kit","version":"0.2.1","keywords":["gstreamer","multimedia","streaming","video","audio","pipeline","native","addon","typescript"],"author":{"name":"Serhii Mamedov","email":"bboyvivus@gmail.com"},"license":"ISC","_id":"gst-kit@0.2.1","maintainers":[{"name":"repugraf","email":"bboyvivus@gmail.com"}],"homepage":"https://github.com/repugraf/gst-kit","bugs":{"url":"https://github.com/repugraf/gst-kit/issues"},"dist":{"shasum":"759bf04be05193754a468eaef102e372055f796b","tarball":"https://registry.npmjs.org/gst-kit/-/gst-kit-0.2.1.tgz","fileCount":52,"integrity":"sha512-ezgmgFKubc1Kvg+e8LzG4CmkeVhlFcDd6p4Wrc4mSscdw6Lhw4nH7gAF8+hVs89QRmrWPPGjvs2U7pLYCIj/EQ==","signatures":[{"sig":"MEYCIQDFy3JiNnG+p6HsL+FZDd8qK0L1J5pWBBNQESL/DAcQ8wIhAMFpfZBhxi+k1xE7BGoGNY26f0t/zN2+z1fSJ7vugKwP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":135917},"type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"efb570fc8314090f94dc91ca5582b4897458bb9a","gypfile":true,"scripts":{"lint":"eslint","test":"npm run test:node && npm run test:unit","build":"npm run clean && npm run build:native && npm run build:ts","clean":"rm -rf build dist","format":"prettier --write \"**/*.{ts,js,json,md}\"","install":"node-gyp rebuild","build:ts":"rollup -c rollup.config.mjs","lint:fix":"eslint --fix","test:bun":"bun modules/common.cjs && bun modules/esm.mjs","test:node":"node modules/common.cjs && node modules/esm.mjs","test:unit":"vitest --no-watch","postinstall":"node scripts/ensure-native-addon.mjs","build:native":"node-gyp rebuild","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"repugraf","email":"bboyvivus@gmail.com"},"overrides":{"vitest":{"vite":"7.2.2"}},"repository":{"url":"git+ssh://git@github.com/repugraf/gst-kit.git","type":"git"},"_npmVersion":"10.9.2","description":"Node.js binding for GStreamer, providing high-level APIs for multimedia streaming and processing","directories":{},"_nodeVersion":"22.17.0","dependencies":{"node-gyp":"11.5.0","node-addon-api":"8.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"2.8.1","eslint":"9.34.0","rollup":"4.49.0","vitest":"4.0.7","prettier":"3.6.2","typescript":"5.9.2","@types/node":"24.3.0","rollup-plugin-dts":"6.2.3","@rollup/plugin-commonjs":"28.0.6","@rollup/plugin-typescript":"12.1.4","@typescript-eslint/parser":"8.41.0","@rollup/plugin-node-resolve":"16.0.1","@typescript-eslint/eslint-plugin":"8.41.0"},"_npmOperationalInternal":{"tmp":"tmp/gst-kit_0.2.1_1762782586966_0.8258221884929695","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"gst-kit","version":"0.2.2","keywords":["gstreamer","multimedia","streaming","video","audio","pipeline","native","addon","typescript"],"author":{"name":"Serhii Mamedov","email":"bboyvivus@gmail.com"},"license":"ISC","_id":"gst-kit@0.2.2","maintainers":[{"name":"repugraf","email":"bboyvivus@gmail.com"}],"homepage":"https://github.com/repugraf/gst-kit","bugs":{"url":"https://github.com/repugraf/gst-kit/issues"},"dist":{"shasum":"f43d06d37cb300faf35cc1807f0d97ccaf786dfa","tarball":"https://registry.npmjs.org/gst-kit/-/gst-kit-0.2.2.tgz","fileCount":53,"integrity":"sha512-KPOIEXJOk202bok7FypDojzWpnyPPKmf51RYIWGwKMGvI7zs8lVAZTX06Rz4T407cYWQhDGvDrufqvC4RrvEPQ==","signatures":[{"sig":"MEQCIE6ep4D4ToK7n64qKijG8c9vHfY7pPyOf0YzsSdY1oKmAiBS0fooM6ybP8+gqT+1ueJadI7Zf5YmAJeKPUuC4sh89w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136614},"type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"7a97fa06cc0006d64924099aa63566840ed9efdb","gypfile":true,"scripts":{"lint":"eslint","test":"npm run test:node && npm run test:unit","build":"npm run clean && npm run build:native && npm run build:ts","clean":"node scripts/clean.mjs","format":"prettier --write \"**/*.{ts,js,json,md}\"","install":"node-gyp rebuild","build:ts":"rollup -c rollup.config.mjs","lint:fix":"eslint --fix","test:bun":"bun modules/common.cjs && bun modules/esm.mjs","test:node":"node modules/common.cjs && node modules/esm.mjs","test:unit":"vitest --no-watch","postinstall":"node scripts/ensure-native-addon.mjs","build:native":"node-gyp rebuild","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"repugraf","email":"bboyvivus@gmail.com"},"overrides":{"eslint":{"js-yaml":"4.1.1"},"vitest":{"vite":"7.2.4"}},"repository":{"url":"git+ssh://git@github.com/repugraf/gst-kit.git","type":"git"},"_npmVersion":"10.9.2","description":"Node.js binding for GStreamer, providing high-level APIs for multimedia streaming and processing","directories":{},"_nodeVersion":"22.17.0","dependencies":{"node-gyp":"12.1.0","node-addon-api":"8.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"2.8.1","eslint":"9.39.1","rollup":"4.53.3","vitest":"4.0.12","prettier":"3.6.2","typescript":"5.9.3","@types/node":"24.10.1","rollup-plugin-dts":"6.2.3","@rollup/plugin-commonjs":"29.0.0","@rollup/plugin-typescript":"12.3.0","@typescript-eslint/parser":"8.47.0","@rollup/plugin-node-resolve":"16.0.3","@typescript-eslint/eslint-plugin":"8.41.0"},"_npmOperationalInternal":{"tmp":"tmp/gst-kit_0.2.2_1763718633648_0.8732537896661265","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"gst-kit","version":"0.2.3","keywords":["gstreamer","multimedia","streaming","video","audio","pipeline","native","addon","typescript"],"author":{"name":"Serhii Mamedov","email":"bboyvivus@gmail.com"},"license":"ISC","_id":"gst-kit@0.2.3","maintainers":[{"name":"repugraf","email":"bboyvivus@gmail.com"}],"homepage":"https://github.com/repugraf/gst-kit","bugs":{"url":"https://github.com/repugraf/gst-kit/issues"},"dist":{"shasum":"79d6ebc6c7d913d6ac96617c928af5d448339d51","tarball":"https://registry.npmjs.org/gst-kit/-/gst-kit-0.2.3.tgz","fileCount":53,"integrity":"sha512-ynbSi73/XcAX0VGNKCtmLzXfjFLk5VwtDY9l+KoBlwWG4XuA5gDjJrkDZjoi+BVbhrIHeVV0z/8+3c8Yv+fbFQ==","signatures":[{"sig":"MEYCIQC94AoaERbuWSDucwPRSr7IqxLaVF9sqCRaetTl8NTzFAIhANC+03xAVK63Vvd9B/wf7pHWQVqIsmC0UELn3oO+qgfJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136680},"type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"4370ae02aef0b586a8b787041f9113f8e59c8f12","gypfile":true,"scripts":{"lint":"eslint","test":"npm run test:node && npm run test:unit","build":"npm run clean && npm run build:native && npm run build:ts","clean":"node scripts/clean.mjs","format":"prettier --write \"**/*.{ts,js,json,md}\"","install":"node-gyp rebuild","build:ts":"rollup -c rollup.config.mjs","lint:fix":"eslint --fix","test:bun":"bun modules/common.cjs && bun modules/esm.mjs","test:node":"node modules/common.cjs && node modules/esm.mjs","test:unit":"vitest --no-watch","postinstall":"node scripts/ensure-native-addon.mjs","build:native":"node-gyp rebuild","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"repugraf","email":"bboyvivus@gmail.com"},"overrides":{"eslint":{"js-yaml":"4.1.1"},"vitest":{"vite":"7.3.1"},"minimatch":{"@isaacs/brace-expansion":"5.0.1"}},"repository":{"url":"git+ssh://git@github.com/repugraf/gst-kit.git","type":"git"},"_npmVersion":"10.9.2","description":"Node.js binding for GStreamer, providing high-level APIs for multimedia streaming and processing","directories":{},"_nodeVersion":"22.17.0","dependencies":{"node-gyp":"12.2.0","node-addon-api":"8.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"2.8.1","eslint":"9.39.1","rollup":"4.57.1","vitest":"4.0.18","prettier":"3.8.1","typescript":"5.9.3","@types/node":"25.2.2","rollup-plugin-dts":"6.3.0","@rollup/plugin-commonjs":"29.0.0","@rollup/plugin-typescript":"12.3.0","@typescript-eslint/parser":"8.54.0","@rollup/plugin-node-resolve":"16.0.3","@typescript-eslint/eslint-plugin":"8.54.0"},"_npmOperationalInternal":{"tmp":"tmp/gst-kit_0.2.3_1770625764190_0.21039265948972474","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"gst-kit","version":"0.2.4","keywords":["gstreamer","multimedia","streaming","video","audio","pipeline","native","addon","typescript"],"author":{"name":"Serhii Mamedov","email":"bboyvivus@gmail.com"},"license":"ISC","_id":"gst-kit@0.2.4","maintainers":[{"name":"repugraf","email":"bboyvivus@gmail.com"}],"homepage":"https://github.com/repugraf/gst-kit","bugs":{"url":"https://github.com/repugraf/gst-kit/issues"},"dist":{"shasum":"ec997594abbde299fc7821ac2ad162999d61c2c7","tarball":"https://registry.npmjs.org/gst-kit/-/gst-kit-0.2.4.tgz","fileCount":53,"integrity":"sha512-GmCae8fXqrNJdDozNALHqx7GgN9zEaKRGvZc/EOOP3dXgLeKP6doWAvwlEaMm9znGDMfi9KJtvhIzd1goySpsA==","signatures":[{"sig":"MEUCIECakhqlfVQZ18Zk0C7SRP7+LhXskpIRVciW2B9xagiIAiEA0FWkk9WSHAGsHfB7cTiAnbYOpbmrM+X13T0FG1/79Io=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136681},"type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"308996ee162b30e64fe0590edd8b9bca710c6935","gypfile":true,"scripts":{"lint":"eslint","test":"npm run test:node && npm run test:unit","build":"npm run clean && npm run build:native && npm run build:ts","clean":"node scripts/clean.mjs","format":"prettier --write \"**/*.{ts,js,json,md}\"","install":"node-gyp rebuild","build:ts":"rollup -c rollup.config.mjs","lint:fix":"eslint --fix","test:bun":"bun modules/common.cjs && bun modules/esm.mjs","test:node":"node modules/common.cjs && node modules/esm.mjs","test:unit":"vitest --no-watch","postinstall":"node scripts/ensure-native-addon.mjs","build:native":"node-gyp rebuild","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"repugraf","email":"bboyvivus@gmail.com"},"overrides":{"ajv":"8.18.0","tar":"7.5.9","eslint":{"js-yaml":"4.1.1"},"vitest":{"vite":"7.3.1"},"minimatch":"10.2.1"},"repository":{"url":"git+ssh://git@github.com/repugraf/gst-kit.git","type":"git"},"_npmVersion":"10.9.2","description":"Node.js binding for GStreamer, providing high-level APIs for multimedia streaming and processing","directories":{},"_nodeVersion":"22.17.0","dependencies":{"node-gyp":"12.2.0","node-addon-api":"8.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"2.8.1","eslint":"9.39.1","rollup":"4.57.1","vitest":"4.0.18","prettier":"3.8.1","typescript":"5.9.3","@types/node":"25.2.2","rollup-plugin-dts":"6.3.0","@rollup/plugin-commonjs":"29.0.0","@rollup/plugin-typescript":"12.3.0","@typescript-eslint/parser":"8.54.0","@rollup/plugin-node-resolve":"16.0.3","@typescript-eslint/eslint-plugin":"8.54.0"},"_npmOperationalInternal":{"tmp":"tmp/gst-kit_0.2.4_1771505953789_0.20362348642772687","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"gst-kit","version":"0.2.5","keywords":["gstreamer","multimedia","streaming","video","audio","pipeline","native","addon","typescript"],"author":{"name":"Serhii Mamedov","email":"bboyvivus@gmail.com"},"license":"ISC","_id":"gst-kit@0.2.5","maintainers":[{"name":"repugraf","email":"bboyvivus@gmail.com"}],"homepage":"https://github.com/repugraf/gst-kit","bugs":{"url":"https://github.com/repugraf/gst-kit/issues"},"dist":{"shasum":"0fb4f4f37041a79983e482de55673b3f13f73749","tarball":"https://registry.npmjs.org/gst-kit/-/gst-kit-0.2.5.tgz","fileCount":53,"integrity":"sha512-dqd0FFw9pTT+vJfAyy+Ek/RVPgvkGYxLD6pc9cu6Y3pPmRZVQFFI6fy/bAZXh48uEpZJyZaK+d3G9kG8Dxo3Qw==","signatures":[{"sig":"MEUCIASbby0Qt01+tS7bHOKbIyxPnm81aRlz+TTTmtLFAunLAiEA5GAhhB9ot/6xayUaTlHT/xusuc620xp59GnbymCLBrU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136719},"type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"9a2da7fbc3a3e44fef6f73963320c9896619783f","gypfile":true,"scripts":{"lint":"eslint","test":"npm run test:node && npm run test:unit","build":"npm run clean && npm run build:native && npm run build:ts","clean":"node scripts/clean.mjs","format":"prettier --write \"**/*.{ts,js,json,md}\"","install":"node-gyp rebuild","build:ts":"rollup -c rollup.config.mjs","lint:fix":"eslint --fix","test:bun":"bun modules/common.cjs && bun modules/esm.mjs","test:node":"node modules/common.cjs && node modules/esm.mjs","test:unit":"vitest --no-watch","postinstall":"node scripts/ensure-native-addon.mjs","build:native":"node-gyp rebuild","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"repugraf","email":"bboyvivus@gmail.com"},"overrides":{"tar":"7.5.11","eslint":{"js-yaml":"4.1.1"},"vitest":{"vite":"8.0.0"}},"repository":{"url":"git+ssh://git@github.com/repugraf/gst-kit.git","type":"git"},"_npmVersion":"10.9.2","description":"Node.js binding for GStreamer, providing high-level APIs for multimedia streaming and processing","directories":{},"_nodeVersion":"22.17.0","dependencies":{"node-gyp":"12.2.0","node-addon-api":"8.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"2.8.1","eslint":"10.0.3","rollup":"4.59.0","vitest":"4.1.0","globals":"17.4.0","prettier":"3.8.1","@eslint/js":"10.0.1","typescript":"5.9.3","@types/node":"25.5.0","@eslint/eslintrc":"3.3.5","rollup-plugin-dts":"6.4.0","@rollup/plugin-commonjs":"29.0.2","@rollup/plugin-typescript":"12.3.0","@typescript-eslint/parser":"8.57.0","@rollup/plugin-node-resolve":"16.0.3","@typescript-eslint/eslint-plugin":"8.57.0"},"_npmOperationalInternal":{"tmp":"tmp/gst-kit_0.2.5_1773655600068_0.9845298999537828","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"gst-kit","version":"0.2.6","keywords":["gstreamer","multimedia","streaming","video","audio","pipeline","native","addon","typescript"],"author":{"name":"Serhii Mamedov","email":"bboyvivus@gmail.com"},"license":"ISC","_id":"gst-kit@0.2.6","maintainers":[{"name":"repugraf","email":"bboyvivus@gmail.com"}],"homepage":"https://github.com/repugraf/gst-kit","bugs":{"url":"https://github.com/repugraf/gst-kit/issues"},"dist":{"shasum":"e26ce0c8479cac425102c466758b5061b3d0c4e4","tarball":"https://registry.npmjs.org/gst-kit/-/gst-kit-0.2.6.tgz","fileCount":22,"integrity":"sha512-hR3rCXMibvUVqvR10u98yw6mfl7aGbmAetvAKaOHQYi8dSTfVg5TfgCXD867o5saMMc+HL7jc31tSTk5PaYC7A==","signatures":[{"sig":"MEYCIQDcmeWRbzNLz2gW+nR1EspdFZ0vB5n9fAdgpIDZ+F5T5wIhAIsZ2nQrrOlcXkixJtLuiRxQigUXQIM6CtDPYY4Kk97U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":133564},"type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"0dbd8877735414bc534ce91a6b9a2a21e2813e65","gypfile":true,"scripts":{"lint":"oxlint","test":"npm run test:node && npm run test:unit","build":"npm run clean && npm run build:native && npm run build:ts","clean":"node scripts/clean.mjs","format":"prettier --write \"**/*.{ts,js,json,md}\"","install":"node-gyp rebuild","build:ts":"rolldown -c rolldown.config.mjs","lint:fix":"oxlint --fix","test:bun":"bun modules/common.cjs && bun modules/esm.mjs","test:node":"node modules/common.cjs && node modules/esm.mjs","test:unit":"vitest --no-watch","postinstall":"node scripts/ensure-native-addon.mjs","build:native":"node-gyp rebuild","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"repugraf","email":"bboyvivus@gmail.com"},"overrides":{"vitest":{"vite":"8.0.13"}},"repository":{"url":"git+ssh://git@github.com/repugraf/gst-kit.git","type":"git"},"_npmVersion":"11.13.0","description":"Node.js binding for GStreamer, providing high-level APIs for multimedia streaming and processing","directories":{},"_nodeVersion":"24.16.0","dependencies":{"node-gyp":"12.3.0","node-addon-api":"8.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"oxlint":"1.66.0","vitest":"4.1.7","prettier":"3.8.3","rolldown":"1.0.2","typescript":"6.0.3","@types/node":"25.9.1","rolldown-plugin-dts":"0.25.1"},"_npmOperationalInternal":{"tmp":"tmp/gst-kit_0.2.6_1779442741128_0.40122152994065563","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"gst-kit","version":"0.2.7","keywords":["gstreamer","multimedia","streaming","video","audio","pipeline","native","addon","typescript"],"author":{"name":"Serhii Mamedov","email":"bboyvivus@gmail.com"},"license":"ISC","_id":"gst-kit@0.2.7","maintainers":[{"name":"repugraf","email":"bboyvivus@gmail.com"}],"homepage":"https://github.com/repugraf/gst-kit","bugs":{"url":"https://github.com/repugraf/gst-kit/issues"},"dist":{"shasum":"83e3507776223536be292398f7d811efd2c26bb4","tarball":"https://registry.npmjs.org/gst-kit/-/gst-kit-0.2.7.tgz","fileCount":22,"integrity":"sha512-/+Vxq6u59h4xOM7JdcdYucQH/4bBGYWfAA9PtbEA9+F+nJzBrRZegCoYNlfWanLiKINwmAJ+W/1d3FuxXl24IA==","signatures":[{"sig":"MEYCIQCQ24Itw2tJR1Uvzftqn3DkN4YCN1TRbf2my1zCYwYFaQIhAL5kNEeVoX6HP2+3uqlmNBvoCcbj7/W8C66YUSnhEtCs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":134702},"type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"c0b484fd5df2e3a8eb2ecf7467e1b5c7d4a94ef7","gypfile":true,"scripts":{"lint":"oxlint","test":"npm run test:unit","build":"npm run clean && npm run build:native && npm run build:ts","clean":"node scripts/clean.mjs","format":"prettier --write \"**/*.{ts,js,json,md}\"","install":"node-gyp rebuild","build:ts":"rolldown -c rolldown.config.mjs","lint:fix":"oxlint --fix","test:unit":"vitest --no-watch","postinstall":"node scripts/ensure-native-addon.mjs","build:native":"node-gyp rebuild","test:unit:bun":"bun x vitest --no-watch","prepublishOnly":"npm run build:ts","test:unit:deno":"deno run -A --node-modules-dir=auto npm:vitest --no-watch"},"_npmUser":{"name":"repugraf","email":"bboyvivus@gmail.com"},"overrides":{"vitest":{"vite":"8.0.13"}},"repository":{"url":"git+ssh://git@github.com/repugraf/gst-kit.git","type":"git"},"_npmVersion":"11.13.0","description":"Node.js binding for GStreamer, providing high-level APIs for multimedia streaming and processing","directories":{},"_nodeVersion":"24.16.0","dependencies":{"node-gyp":"12.3.0","node-addon-api":"8.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"oxlint":"1.66.0","vitest":"4.1.7","prettier":"3.8.3","rolldown":"1.0.2","typescript":"6.0.3","@types/node":"25.9.1","rolldown-plugin-dts":"0.25.1"},"_npmOperationalInternal":{"tmp":"tmp/gst-kit_0.2.7_1779550177788_0.6210414474129575","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"gst-kit","version":"0.2.8","keywords":["gstreamer","multimedia","streaming","video","audio","pipeline","native","addon","typescript"],"author":{"name":"Serhii Mamedov","email":"bboyvivus@gmail.com"},"license":"ISC","_id":"gst-kit@0.2.8","maintainers":[{"name":"repugraf","email":"bboyvivus@gmail.com"}],"homepage":"https://github.com/repugraf/gst-kit","bugs":{"url":"https://github.com/repugraf/gst-kit/issues"},"dist":{"shasum":"c4286a83efa47cdef4e75e6d4ac19583515d6068","tarball":"https://registry.npmjs.org/gst-kit/-/gst-kit-0.2.8.tgz","fileCount":22,"integrity":"sha512-vg2lksEitzOihCr+KwEK0Pr9bLFbJeFoGAG8G7o6kPmz3a4TJSNhKUJKBprgHKnCC8a5l262dpBc4KI35jnP5g==","signatures":[{"sig":"MEUCIGgWMqS5IZOctXkLovKgQRd/sg+6cVhhDeh1LTWkKbdrAiEAl+Im7H9dJX0jyFHFM4xyhud4BO158OyWd/TCgurAYEs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136797},"type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"2d1b0eeede506ad98ff58705d6c1eb4cf7beea51","gypfile":true,"scripts":{"lint":"oxlint","test":"npm run test:unit","build":"npm run clean && npm run build:native && npm run build:ts","clean":"node scripts/clean.mjs","format":"prettier --write \"**/*.{ts,js,json,md}\"","install":"node-gyp rebuild","build:ts":"rolldown -c rolldown.config.mjs","lint:fix":"oxlint --fix","test:unit":"vitest --no-watch","postinstall":"node scripts/ensure-native-addon.mjs","build:native":"node-gyp rebuild","test:unit:bun":"bun x vitest --no-watch","prepublishOnly":"npm run build:ts","test:unit:deno":"deno run -A --node-modules-dir=auto npm:vitest --no-watch"},"_npmUser":{"name":"repugraf","email":"bboyvivus@gmail.com"},"overrides":{"vitest":{"tar":"7.5.16","vite":"8.0.16"}},"repository":{"url":"git+ssh://git@github.com/repugraf/gst-kit.git","type":"git"},"_npmVersion":"11.13.0","description":"Node.js binding for GStreamer, providing high-level APIs for multimedia streaming and processing","directories":{},"_nodeVersion":"24.16.0","dependencies":{"node-gyp":"13.0.0","node-addon-api":"8.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"oxlint":"1.70.0","vitest":"4.1.9","prettier":"3.8.4","rolldown":"1.1.1","typescript":"6.0.3","@types/node":"25.9.3","rolldown-plugin-dts":"0.25.2"},"_npmOperationalInternal":{"tmp":"tmp/gst-kit_0.2.8_1781675492087_0.9040045058314112","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"gst-kit","version":"0.2.9","keywords":["gstreamer","multimedia","streaming","video","audio","pipeline","native","addon","typescript"],"author":{"name":"Serhii Mamedov","email":"bboyvivus@gmail.com"},"license":"ISC","_id":"gst-kit@0.2.9","maintainers":[{"name":"repugraf","email":"bboyvivus@gmail.com"}],"homepage":"https://github.com/repugraf/gst-kit","bugs":{"url":"https://github.com/repugraf/gst-kit/issues"},"dist":{"shasum":"8853a47f62b153ab0b94b46d82f83205b2fc4f42","tarball":"https://registry.npmjs.org/gst-kit/-/gst-kit-0.2.9.tgz","fileCount":23,"integrity":"sha512-BrOFkw6vNy/+6n3OdAoZrsTCWLirJaekdKBZtEYZ3v64OeKylbju0cG6Fr0biAwvKW768esvK+IhED5KCEWnFw==","signatures":[{"sig":"MEUCIQCB1cZ1PQyQ7vEhQUhEZtE5hmT3uOJSoXYsvrLBhw7+5QIgUmcQFT97NuL+CdkjgA1rw3KK5pnL2PeaSiZrOj2jO9Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137159},"type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"18a9439cc811aa02109599e11522ac10d39f28ea","gypfile":true,"scripts":{"lint":"oxlint","test":"npm run test:unit","build":"npm run clean && npm run build:native && npm run build:ts","clean":"node scripts/clean.mjs","format":"oxfmt --write","install":"node-gyp rebuild","build:ts":"rolldown -c rolldown.config.mjs","lint:fix":"oxlint --fix","test:unit":"vitest --no-watch --no-file-parallelism --sequence.concurrent=false","postinstall":"node scripts/ensure-native-addon.mjs","build:native":"node-gyp rebuild","format:check":"oxfmt --check","test:unit:bun":"bun x vitest --no-watch --no-file-parallelism --sequence.concurrent=false","prepublishOnly":"npm run build:ts","test:unit:deno":"deno run -A --node-modules-dir=auto npm:vitest --no-watch --no-file-parallelism --sequence.concurrent=false"},"_npmUser":{"name":"repugraf","email":"bboyvivus@gmail.com"},"overrides":{"vitest":{"tar":"7.5.16","vite":"8.0.16"}},"repository":{"url":"git+ssh://git@github.com/repugraf/gst-kit.git","type":"git"},"_npmVersion":"11.13.0","description":"Node.js binding for GStreamer, providing high-level APIs for multimedia streaming and processing","directories":{},"_nodeVersion":"24.16.0","dependencies":{"node-gyp":"13.0.0","node-addon-api":"8.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"0.55.0","oxlint":"1.70.0","vitest":"4.1.9","rolldown":"1.1.1","typescript":"6.0.3","@types/node":"25.9.3","rolldown-plugin-dts":"0.25.2"},"_npmOperationalInternal":{"tmp":"tmp/gst-kit_0.2.9_1782477157610_0.3548687758005187","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"gst-kit","version":"0.3.0","keywords":["gstreamer","multimedia","streaming","video","audio","pipeline","native","addon","typescript"],"author":{"name":"Serhii Mamedov","email":"bboyvivus@gmail.com"},"license":"ISC","_id":"gst-kit@0.3.0","maintainers":[{"name":"repugraf","email":"bboyvivus@gmail.com"}],"homepage":"https://github.com/repugraf/gst-kit","bugs":{"url":"https://github.com/repugraf/gst-kit/issues"},"dist":{"shasum":"f3c626d9b8f2e4885adbdf11bbdae71f4c92eaeb","tarball":"https://registry.npmjs.org/gst-kit/-/gst-kit-0.3.0.tgz","fileCount":23,"integrity":"sha512-8/3Ek+l9BsGkshwrPXFiMslUdCci+PiXnajH8KUan8F+ksjaOv0/KTz/QD/1ziZtAT9jv1NcCTv+XGOqF2tHCQ==","signatures":[{"sig":"MEUCIDdQnxkk3L/GkDGdqToR/JN8O64nH/MR4MFXdB3qhc2UAiEAsIAvt31nKgAuL7+KARUx1Sj0Dqj6oFr+3d5IRcbDdG4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":139694},"type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"4b104b734f8b3413132e070763cfb3a12f114f8e","gypfile":true,"scripts":{"lint":"oxlint","test":"npm run test:unit","build":"npm run clean && npm run build:native && npm run build:ts","clean":"node scripts/clean.mjs","format":"oxfmt --write","install":"node-gyp rebuild","build:ts":"rolldown -c rolldown.config.mjs","lint:fix":"oxlint --fix","test:unit":"vitest --no-watch --no-file-parallelism --sequence.concurrent=false","postinstall":"node scripts/ensure-native-addon.mjs","build:native":"node-gyp rebuild","format:check":"oxfmt --check","test:unit:bun":"bun x vitest --no-watch --no-file-parallelism --sequence.concurrent=false","prepublishOnly":"npm run build:ts","test:unit:deno":"deno run -A --node-modules-dir=auto npm:vitest --no-watch --no-file-parallelism --sequence.concurrent=false"},"_npmUser":{"name":"repugraf","email":"bboyvivus@gmail.com"},"overrides":{"tar":"7.5.22","vitest":{"vite":"8.2.0"}},"repository":{"url":"git+ssh://git@github.com/repugraf/gst-kit.git","type":"git"},"_npmVersion":"11.13.0","description":"Node.js binding for GStreamer, providing high-level APIs for multimedia streaming and processing","directories":{},"_nodeVersion":"24.16.0","dependencies":{"node-gyp":"13.0.1","node-addon-api":"8.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"0.61.0","oxlint":"1.76.0","vitest":"4.1.10","rolldown":"1.2.1","typescript":"7.0.2","@types/node":"26.1.2","rolldown-plugin-dts":"0.28.0"},"_npmOperationalInternal":{"tmp":"tmp/gst-kit_0.3.0_1785499501178_0.3723191344180661","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"_id":"gst-kit@0.3.1","bugs":{"url":"https://github.com/repugraf/gst-kit/issues"},"dist":{"shasum":"ccff7d9f8d4e04218475e82fbcd55ade50b001e4","tarball":"https://registry.npmjs.org/gst-kit/-/gst-kit-0.3.1.tgz","fileCount":23,"integrity":"sha512-v9m22gQuuYD9C9wXHNj4UHwA4Dv/OmuS6TvjyGvBeQ0gkxHQcHV9dFEhY2HpKCCPojrrVNBAALzRIBMiaOfeCQ==","signatures":[{"sig":"MEQCIFUyfqVpvH8OT+u+vWb9lvdhZ7XSNX5wOAtGPO3gY+pMAiAa+GvEtLUCP9gDkJL1MSM/9qw2xg4WhTPg5o+ZAZ62rQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICu2cmVQJVxWYzjhcypwjPfeDUGQz+YiBbpyNeBjteGxAiEApliwO5kDwnpM1NpWmGrEJG6CvR+7n+/H26Qhi5IE/do="}],"unpackedSize":149055},"name":"gst-kit","type":"module","types":"./dist/index.d.ts","author":{"name":"Serhii Mamedov","email":"bboyvivus@gmail.com"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.mjs","require":"./dist/cjs/index.cjs"}},"gitHead":"ba8605815901a8e45f8017b54e6613def4c6be34","gypfile":true,"license":"ISC","scripts":{"lint":"oxlint","test":"npm run test:unit","build":"npm run clean && npm run build:native && npm run build:ts","clean":"node scripts/clean.mjs","format":"oxfmt --write","install":"node-gyp rebuild","build:ts":"rolldown -c rolldown.config.mjs","lint:fix":"oxlint --fix","test:unit":"vitest --no-watch --no-file-parallelism --sequence.concurrent=false","postinstall":"node scripts/ensure-native-addon.mjs","build:native":"node-gyp rebuild","format:check":"oxfmt --check","test:unit:bun":"bun x vitest --no-watch --no-file-parallelism --sequence.concurrent=false","prepublishOnly":"npm run build:ts","test:unit:deno":"deno run -A --node-modules-dir=auto npm:vitest --no-watch --no-file-parallelism --sequence.concurrent=false"},"version":"0.3.1","_npmUser":{"name":"repugraf","email":"bboyvivus@gmail.com"},"homepage":"https://github.com/repugraf/gst-kit","keywords":["gstreamer","multimedia","streaming","video","audio","pipeline","native","addon","typescript"],"overrides":{"tar":"7.5.22","vitest":{"vite":"8.3.0"}},"repository":{"url":"git+ssh://git@github.com/repugraf/gst-kit.git","type":"git"},"_npmVersion":"11.19.0","description":"Node.js binding for GStreamer, providing high-level APIs for multimedia streaming and processing","directories":{},"maintainers":[{"name":"repugraf","email":"bboyvivus@gmail.com"}],"_nodeVersion":"24.20.0","dependencies":{"node-gyp":"13.0.2","node-addon-api":"8.9.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"0.67.0","oxlint":"1.82.0","vitest":"5.0.0","rolldown":"1.2.8","typescript":"7.0.2","@types/node":"26.5.1","rolldown-plugin-dts":"0.28.5"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/gst-kit_0.3.1_1790428792221_0.8913645843389513"}}},"time":{"created":"2025-06-22T16:25:21.348Z","modified":"2026-09-26T13:19:52.503Z","0.0.1":"2025-06-22T16:25:21.601Z","0.0.2":"2025-06-22T16:35:09.828Z","0.0.3":"2025-06-22T17:00:22.717Z","0.0.4":"2025-06-22T17:06:28.563Z","0.0.5":"2025-06-22T17:09:11.548Z","0.0.6":"2025-06-22T20:50:15.003Z","0.0.7":"2025-06-22T21:19:02.115Z","0.0.8":"2025-06-28T10:41:16.031Z","0.0.9":"2025-08-29T18:07:33.466Z","0.0.10":"2025-08-29T18:26:36.024Z","0.0.11":"2025-08-29T18:34:01.083Z","0.0.12":"2025-09-04T18:06:56.046Z","0.0.13":"2025-09-04T18:18:44.030Z","0.0.14":"2025-09-08T14:00:32.164Z","0.0.15":"2025-09-12T07:34:56.866Z","0.1.0":"2025-09-24T08:25:39.748Z","0.1.1":"2025-10-03T16:31:07.784Z","0.2.0":"2025-11-07T13:27:57.078Z","0.2.1":"2025-11-10T13:49:47.150Z","0.2.2":"2025-11-21T09:50:33.826Z","0.2.3":"2026-02-09T08:29:24.332Z","0.2.4":"2026-02-19T12:59:13.923Z","0.2.5":"2026-03-16T10:06:40.218Z","0.2.6":"2026-05-22T09:39:01.278Z","0.2.7":"2026-05-23T15:29:37.941Z","0.2.8":"2026-06-17T05:51:32.216Z","0.2.9":"2026-06-26T12:32:37.743Z","0.3.0":"2026-07-31T12:05:01.303Z","0.3.1":"2026-09-26T13:19:52.315Z"},"bugs":{"url":"https://github.com/repugraf/gst-kit/issues"},"author":{"name":"Serhii Mamedov","email":"bboyvivus@gmail.com"},"license":"ISC","homepage":"https://github.com/repugraf/gst-kit","keywords":["gstreamer","multimedia","streaming","video","audio","pipeline","native","addon","typescript"],"repository":{"url":"git+ssh://git@github.com/repugraf/gst-kit.git","type":"git"},"description":"Node.js binding for GStreamer, providing high-level APIs for multimedia streaming and processing","maintainers":[{"name":"repugraf","email":"bboyvivus@gmail.com"}],"readme":"# GStreamer Kit\n\nA modern Node.js binding for GStreamer, providing high-level APIs for multimedia streaming and processing. This project modernizes the legacy node-gstreamer-superficial library with contemporary technologies and improved runtime support.\n\n## Project Goals & Modernization\n\nThis project represents a complete modernization of the old [node-gstreamer-superficial](https://github.com/dturing/node-gstreamer-superficial) library, featuring:\n\n### Modern Runtime Support\n\n- **N-API instead of NAN**: Uses Node-API (N-API) for better runtime stability and version independence\n- **Multi-runtime compatibility**: Supports Node.js 22+, Bun, Deno, and other V8-based runtimes\n- **Version independence**: Not bound to specific V8 versions, ensuring longevity\n\n### Modern Build System\n\n- **Rolldown bundling**: Generates both CommonJS and ESM modules for maximum compatibility\n- **TypeScript-first**: Complete TypeScript support with full type definitions\n- **GYP build system**: Robust C++ compilation with proper dependency management\n- **Modern testing**: Uses Vitest for fast testing instead of legacy test frameworks\n\n### Enhanced Developer Experience\n\n- **Full TypeScript support**: Complete type definitions for all APIs\n- **ESM/CJS dual packaging**: Works with both `import` and `require` statements\n- **Comprehensive testing**: Extensive test coverage with modern test runner\n- **Better documentation**: Clear examples and API documentation\n\n## Complete Feature Set\n\n### Core Pipeline Features\n\n- **Pipeline Management**: Create, play, pause, stop GStreamer pipelines\n- **State Management**: Comprehensive state change handling with detailed results\n- **Element Access**: Get elements by name with proper typing\n- **Property System**: Get/set element properties with type safety\n\n### Advanced Data Access\n\n- **App Sources & Sinks**: Two approaches for data access:\n  - **Pull-based**: Explicitly request samples with `getSample()` (async, controlled timing)\n  - **Push-based**: Reactive callbacks with `onSample()` (automatic, real-time)\n- **Pad Probes**: Add/remove event-driven callbacks to intercept comprehensive buffer data\n- **Buffer Analysis**: Extract raw data, timing information, flags, caps, and metadata\n\n### Media Processing\n\n- **RTP Support**: Extract RTP metadata including timestamps, sequence numbers, SSRC, payload type\n- **Seeking**: Frame-accurate seeking with success feedback\n- **Query System**: Position and duration queries in seconds\n- **Message Bus**: Handle GStreamer messages (EOS, errors, warnings, state changes)\n\n### Runtime Features\n\n- **Multi-format Support**: Video, audio, containers, streaming protocols\n- **Codec Support**: H.264, H.265, VP8, VP9, AV1, and more through GStreamer plugins\n- **Network Streaming**: RTP, RTSP, HLS, DASH, WebRTC protocols\n- **Hardware Acceleration**: GPU-accelerated encoding/decoding where available\n\n## Installation\n\n```bash\nnpm install gst-kit\n```\n\n### System Requirements\n\n- **Runtime**: Node.js 22+, Bun, or Deno\n- **Build-time**: Node.js 22+ is required during installation to run `node-gyp` and the package's postinstall script, even when the target runtime is Bun or Deno. The compiled `.node` addon is runtime-agnostic and loads under any of the three.\n- **System**: GStreamer 1.14 or higher (1.26+ recommended)\n- **Build Tools**: Python 2.7 or 3.x (for node-gyp), pkg-config\n- **Dependencies**: GStreamer development packages and plugins\n\n### Installing with Bun or Deno\n\nBun and Deno block dependency lifecycle scripts by default, so the postinstall step that compiles the native addon won't run unless you opt in.\n\n**Bun** — trust the package explicitly:\n\n```bash\nbun add gst-kit --trust\n```\n\nOr add it to `trustedDependencies` in your `package.json` so future installs run the postinstall automatically:\n\n```json\n{\n  \"trustedDependencies\": [\"gst-kit\"]\n}\n```\n\n**Deno** — allow scripts for this package when installing:\n\n```bash\ndeno install --allow-scripts=npm:gst-kit --node-modules-dir=auto npm:gst-kit\n```\n\nIn both cases, `node` must be on `PATH` during install so the postinstall script can invoke `node-gyp`.\n\n### Platform-Specific Installation Guide\n\n**Cross-Platform Alternative**: For any operating system, you can use the [setup-cpp](https://www.npmjs.com/package/setup-cpp) tool to automatically install compilers, build tools, and package managers:\n\n```bash\n# Install development tools across platforms (Windows, macOS, Linux)\nnpx setup-cpp --compiler auto --pkg-config true\n\n# On Windows, this can also install Chocolatey:\nnpx setup-cpp --compiler msvc --pkg-config true --choco true\n```\n\n#### Ubuntu/Debian (Recommended for Production)\n\n##### Option A: Package Manager (Traditional)\n\n```bash\n# Update package list\nsudo apt-get update\n\n# Install GStreamer core development packages\nsudo apt-get install -y \\\n  libgstreamer1.0-dev \\\n  libgstreamer-plugins-base1.0-dev \\\n  libgstreamer-plugins-bad1.0-dev \\\n  pkg-config\n\n# Install GStreamer plugins (essential for most use cases)\nsudo apt-get install -y \\\n  gstreamer1.0-plugins-base \\\n  gstreamer1.0-plugins-good \\\n  gstreamer1.0-plugins-bad \\\n  gstreamer1.0-plugins-ugly \\\n  gstreamer1.0-libav\n\n# Install build tools\nsudo apt-get install -y build-essential python3\n```\n\n##### Option B: Cross-Platform Setup with setup-cpp (Ubuntu)\n\n```bash\n# Install build tools automatically\nnpx setup-cpp --compiler auto --pkg-config true\n\n# Then install GStreamer packages\nsudo apt-get update\nsudo apt-get install -y \\\n  libgstreamer1.0-dev \\\n  libgstreamer-plugins-base1.0-dev \\\n  libgstreamer-plugins-bad1.0-dev \\\n  gstreamer1.0-plugins-base \\\n  gstreamer1.0-plugins-good \\\n  gstreamer1.0-plugins-bad \\\n  gstreamer1.0-plugins-ugly \\\n  gstreamer1.0-libav\n```\n\n**Verification:**\n\n```bash\npkg-config --cflags --libs gstreamer-1.0\ngst-launch-1.0 --version\n```\n\n#### macOS (Homebrew)\n\n##### Option A: Homebrew (Traditional)\n\n```bash\n# Install GStreamer and plugins\nbrew install gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly pkg-config\n\n# Set environment variables (add to ~/.zshrc or ~/.bash_profile)\nexport PKG_CONFIG_PATH=\"$(brew --prefix)/lib/pkgconfig:$PKG_CONFIG_PATH\"\nexport LIBRARY_PATH=\"$(brew --prefix)/lib:$LIBRARY_PATH\"\nexport LD_LIBRARY_PATH=\"$(brew --prefix)/lib:$LD_LIBRARY_PATH\"\n```\n\n##### Option B: Cross-Platform Setup with setup-cpp (macOS)\n\n```bash\n# Install build tools automatically\nnpx setup-cpp --compiler auto --pkg-config true\n\n# Then install GStreamer via Homebrew\nbrew install gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly\n\n# Set environment variables (add to ~/.zshrc or ~/.bash_profile)\nexport PKG_CONFIG_PATH=\"$(brew --prefix)/lib/pkgconfig:$PKG_CONFIG_PATH\"\nexport LIBRARY_PATH=\"$(brew --prefix)/lib:$LIBRARY_PATH\"\nexport LD_LIBRARY_PATH=\"$(brew --prefix)/lib:$LD_LIBRARY_PATH\"\n```\n\n**Verification:**\n\n```bash\npkg-config --cflags --libs gstreamer-1.0\ngst-launch-1.0 --version\n```\n\n#### Windows\n\n**Complete Installation:**\n\n1. **Install Build Tools:**\n\n   ##### Option A: Manual Installation\n\n   ```powershell\n   # Install Visual Studio Build Tools 2019/2022 (Community edition is free)\n   # Download from: https://visualstudio.microsoft.com/downloads/\n\n   # Install pkg-config (REQUIRED for build to work)\n   choco install pkgconfiglite\n   ```\n\n   ##### Option B: Cross-Platform Setup with setup-cpp (Recommended)\n\n   ```powershell\n   # Use setup-cpp for automated toolchain installation (works on Windows, macOS, Linux)\n   # This tool can install compilers, package managers (including Chocolatey), and build systems\n   npx setup-cpp --compiler msvc --pkg-config true --choco true\n   ```\n\n2. **Install GStreamer 1.26.2:**\n\n   ```powershell\n   # Download both runtime and development MSI packages from:\n   # https://gstreamer.freedesktop.org/download/\n\n   # For 64-bit systems, download and install:\n   # - gstreamer-1.0-msvc-x86_64-1.26.2.msi (runtime)\n   # - gstreamer-1.0-devel-msvc-x86_64-1.26.2.msi (development)\n\n   # Install both MSI files by double-clicking or using:\n   # msiexec /i gstreamer-1.0-msvc-x86_64-1.26.2.msi /quiet\n   # msiexec /i gstreamer-1.0-devel-msvc-x86_64-1.26.2.msi /quiet\n   ```\n\n3. **Set Environment Variables:**\n\n   ```powershell\n   # Add to system PATH (via System Properties → Environment Variables):\n   C:\\Program Files\\gstreamer\\1.0\\msvc_x86_64\\bin\n\n   # Add system environment variables:\n   GSTREAMER_1_0_ROOT_MSVC_X86_64=C:\\Program Files\\gstreamer\\1.0\\msvc_x86_64\n   PKG_CONFIG_PATH=C:\\Program Files\\gstreamer\\1.0\\msvc_x86_64\\lib\\pkgconfig\n   ```\n\n**Verification:**\n\n```powershell\n# Verify pkg-config can find GStreamer (most important for building)\npkg-config --exists gstreamer-1.0; if ($LASTEXITCODE -eq 0) { Write-Host \"GStreamer found\" } else { Write-Host \"GStreamer NOT found\" }\npkg-config --cflags --libs gstreamer-1.0\n```\n\n**Windows-Specific Troubleshooting:**\n\nIf you encounter build errors after installation, try these common fixes:\n\n1. **PKG_CONFIG_PATH Issues:**\n\n   ```powershell\n   # If GStreamer was installed to default location but pkg-config can't find it:\n   setx PKG_CONFIG_PATH \"C:\\Program Files\\gstreamer\\1.0\\msvc_x86_64\\lib\\pkgconfig\"\n\n   # Restart your terminal/command prompt after setting this variable\n   # Verify the fix:\n   pkg-config --exists gstreamer-1.0; if ($LASTEXITCODE -eq 0) { Write-Host \"GStreamer found\" } else { Write-Host \"GStreamer NOT found\" }\n   ```\n\n2. **Missing pkg-config:**\n\n   ```powershell\n   # pkg-config is absolutely required - install if missing:\n   choco install pkgconfiglite\n\n   # Or refresh your PATH if already installed:\n   refreshenv\n   ```\n\n3. **GStreamer Location Mismatch:**\n\n   ```powershell\n   # If GStreamer was installed to a different location, update PKG_CONFIG_PATH accordingly:\n   # For example, if installed to C:\\gstreamer:\n   setx PKG_CONFIG_PATH \"C:\\gstreamer\\1.0\\msvc_x86_64\\lib\\pkgconfig\"\n   ```\n\n### Common Installation Issues\n\n#### Problem: \"Cannot find gstreamer-1.0\"\n\n**Solution:**\n\n```bash\n# Ubuntu/Debian\nsudo apt-get install libgstreamer1.0-dev pkg-config\n\n# macOS\nbrew install gstreamer pkg-config\nexport PKG_CONFIG_PATH=\"$(brew --prefix)/lib/pkgconfig:$PKG_CONFIG_PATH\"\n\n# Windows (PowerShell)\n# Ensure pkg-config is installed:\nchoco install pkgconfiglite\n\n# Ensure environment variables are set correctly:\n# GSTREAMER_1_0_ROOT_MSVC_X86_64=C:\\Program Files\\gstreamer\\1.0\\msvc_x86_64\n# PKG_CONFIG_PATH=C:\\Program Files\\gstreamer\\1.0\\msvc_x86_64\\lib\\pkgconfig\n\n# If GStreamer is installed but pkg-config can't find it, set PKG_CONFIG_PATH:\nsetx PKG_CONFIG_PATH \"C:\\Program Files\\gstreamer\\1.0\\msvc_x86_64\\lib\\pkgconfig\"\n\n# Verify pkg-config can find GStreamer\npkg-config --exists gstreamer-1.0; if ($LASTEXITCODE -eq 0) { Write-Host \"GStreamer found\" } else { Write-Host \"GStreamer NOT found\" }\n```\n\n#### Problem: Missing plugins (playbin/decodebin errors)\n\n**Solution:**\n\n```bash\n# Ubuntu/Debian - install plugin packages\nsudo apt-get install gstreamer1.0-plugins-{base,good,bad,ugly} gstreamer1.0-libav\n\n# macOS - install plugin packages\nbrew install gst-plugins-{base,good,bad,ugly}\n\n# List available plugins\ngst-inspect-1.0 | grep -i plugin\n```\n\n#### Problem: \"Permission denied\" on Linux\n\n**Solution:**\n\n```bash\n# Add user to audio/video groups\nsudo usermod -a -G audio,video $USER\n# Logout and login again\n\n# Or install PulseAudio for audio support\nsudo apt-get install pulseaudio pulseaudio-utils\n```\n\n### Docker Installation\n\nFor containerized applications:\n\n```dockerfile\n# Ubuntu-based container\nFROM ubuntu:latest\n\nRUN apt-get update && apt-get install -y \\\n    nodejs npm \\\n    libgstreamer1.0-dev \\\n    libgstreamer-plugins-base1.0-dev \\\n    libgstreamer-plugins-bad1.0-dev \\\n    gstreamer1.0-plugins-base \\\n    gstreamer1.0-plugins-good \\\n    gstreamer1.0-plugins-bad \\\n    gstreamer1.0-plugins-ugly \\\n    gstreamer1.0-libav \\\n    build-essential pkg-config python3 \\\n    && rm -rf /var/lib/apt/lists/*\n\n# Install your application\nCOPY package*.json ./\nRUN npm ci\nCOPY . .\nRUN npm run build\n```\n\n## Quick Start\n\n### Basic Pipeline\n\n```javascript\nimport { Pipeline } from \"gst-kit\";\n\nconst pipeline = new Pipeline(\"videotestsrc ! autovideosink\");\nawait pipeline.play();\n\n// Stop after 5 seconds\nsetTimeout(async () => {\n  await pipeline.stop();\n}, 5000);\n```\n\n### Checking Element Availability\n\n```javascript\nimport { Pipeline } from \"gst-kit\";\n\n// Check if specific GStreamer elements are available before using them\nif (Pipeline.elementExists(\"x264enc\")) {\n  console.log(\"H.264 encoder is available\");\n  const pipeline = new Pipeline(\"videotestsrc ! x264enc ! mp4mux ! filesink location=output.mp4\");\n} else {\n  console.log(\"x264enc not found, using alternative encoder\");\n  const pipeline = new Pipeline(\"videotestsrc ! vp8enc ! webmmux ! filesink location=output.webm\");\n}\n\n// Check hardware acceleration support\nconst hasVaapi = Pipeline.elementExists(\"vaapih264enc\");\nconst hasNvenc = Pipeline.elementExists(\"nvh264enc\");\nconsole.log(`VAAPI support: ${hasVaapi}, NVENC support: ${hasNvenc}`);\n```\n\n### Working with AppSink (Pull-based Approach)\n\n```javascript\nimport { Pipeline } from \"gst-kit\";\n\nconst pipeline = new Pipeline(\"videotestsrc num-buffers=10 ! videoconvert ! appsink name=sink\");\nconst sink = pipeline.getElementByName(\"sink\");\n\nif (sink?.type === \"app-sink-element\") {\n  await pipeline.play();\n\n  while (true) {\n    const sample = await sink.getSample(); // Explicitly request samples\n    if (!sample) break;\n\n    console.log(\"Received frame:\", sample.buffer?.length, \"bytes\");\n  }\n\n  await pipeline.stop();\n}\n```\n\n### Working with AppSink (Event-Driven/Push Approach)\n\n```javascript\nimport { Pipeline } from \"gst-kit\";\n\nconst pipeline = new Pipeline(\"videotestsrc num-buffers=10 ! videoconvert ! appsink name=sink\");\nconst sink = pipeline.getElementByName(\"sink\");\n\nif (sink?.type === \"app-sink-element\") {\n  let frameCount = 0;\n\n  // Set up reactive callback - samples are pushed automatically\n  const unsubscribe = sink.onSample(sample => {\n    frameCount++;\n    console.log(`Frame ${frameCount}:`, sample.buffer?.length, \"bytes\");\n\n    if (frameCount === 10) {\n      unsubscribe();\n      pipeline.stop();\n    }\n  });\n\n  await pipeline.play();\n}\n```\n\n### Working with AppSrc (Source Input)\n\n```javascript\nimport { Pipeline } from \"gst-kit\";\n\nconst pipeline = new Pipeline(\"appsrc name=source ! videoconvert ! autovideosink\");\nconst source = pipeline.getElementByName(\"source\");\n\nif (source?.type === \"app-src-element\") {\n  source.setElementProperty(\"caps\", \"video/x-raw,format=RGB,width=320,height=240\");\n  source.setElementProperty(\"is-live\", true);\n\n  await pipeline.play();\n\n  // Push random RGB frames\n  setInterval(() => {\n    const buffer = Buffer.alloc(320 * 240 * 3);\n    buffer.fill(Math.floor(Math.random() * 255));\n    source.push(buffer);\n  }, 33); // ~30 FPS\n}\n```\n\n### Working with AppSrc for Custom Data Sources (with EOS)\n\nUse AppSrc with EOS when you need to process data that can't be handled by standard GStreamer elements like `filesrc`:\n\n```javascript\nimport { Pipeline } from \"gst-kit\";\nimport { createReadStream } from \"fs\";\n\n// Real-world scenarios where AppSrc + EOS is needed:\n// 1. Custom encrypted file formats\n// 2. Network streams with custom protocols\n// 3. Database BLOBs containing media data\n// 4. Programmatically generated content with known duration\n// 5. Multi-source aggregation\n\nasync function streamEncryptedVideoFile(encryptedFilePath) {\n  const pipeline = new Pipeline(\"appsrc name=source ! h264parse ! avdec_h264 ! autovideosink\");\n  const source = pipeline.getElementByName(\"source\");\n\n  if (source?.type === \"app-src-element\") {\n    source.setElementProperty(\"caps\", \"video/x-h264,stream-format=byte-stream\");\n    source.setElementProperty(\"is-live\", false); // File-like behavior\n\n    await pipeline.play();\n\n    // Read and decrypt file chunks\n    const encryptedStream = createReadStream(encryptedFilePath);\n\n    for await (const encryptedChunk of encryptedStream) {\n      // Decrypt the chunk (your custom decryption logic)\n      const decryptedBuffer = await decryptChunk(encryptedChunk);\n      source.push(decryptedBuffer);\n    }\n\n    // IMPORTANT: Signal end-of-stream when file is fully processed\n    source.endOfStream();\n\n    // Wait for natural completion\n    while (true) {\n      const message = await pipeline.busPop(1000);\n      if (message?.type === \"eos\") {\n        console.log(\"Encrypted file playback completed\");\n        break;\n      }\n    }\n\n    await pipeline.stop();\n  }\n}\n\n// Example: Stream from database BLOB\nasync function streamFromDatabase(mediaId) {\n  const pipeline = new Pipeline(\"appsrc name=source ! decodebin ! autovideosink\");\n  const source = pipeline.getElementByName(\"source\");\n\n  if (source?.type === \"app-src-element\") {\n    // Note: Let decodebin auto-detect format\n    source.setElementProperty(\"is-live\", false);\n\n    await pipeline.play();\n\n    // Stream media data from database in chunks\n    const mediaChunks = await fetchMediaFromDatabase(mediaId);\n\n    for (const chunk of mediaChunks) {\n      source.push(chunk);\n    }\n\n    source.endOfStream(); // Signal completion\n\n    // Handle completion\n    while (true) {\n      const message = await pipeline.busPop(1000);\n      if (message?.type === \"eos\") break;\n    }\n\n    await pipeline.stop();\n  }\n}\n\n// Placeholder functions - implement according to your needs\nasync function decryptChunk(encryptedData) {\n  // Your decryption logic here\n  return encryptedData; // Return decrypted buffer\n}\n\nasync function fetchMediaFromDatabase(mediaId) {\n  // Your database fetch logic here\n  return []; // Return array of media chunks\n}\n```\n\n### Recording Programmatically Generated Streams to Files\n\nFor recording programmatically generated content (procedural video, custom visualizations, etc.) to video files:\n\n```javascript\nimport { Pipeline } from \"gst-kit\";\nimport path from \"path\";\nimport fs from \"fs\";\n\nasync function recordGeneratedVideoToFile() {\n  const outputFile = path.join(process.cwd(), \"recording.ogv\");\n\n  // Remove existing file if it exists\n  if (fs.existsSync(outputFile)) {\n    fs.unlinkSync(outputFile);\n  }\n\n  // Create recording pipeline (OGV/Theora is most reliable for programmatic content)\n  const pipeline = new Pipeline(`\n    appsrc name=mysource ! \n    videoconvert ! \n    theoraenc ! \n    oggmux ! \n    filesink location=${outputFile}\n  `);\n\n  const appsrc = pipeline.getElementByName(\"mysource\");\n\n  if (appsrc?.type === \"app-src-element\") {\n    // Configure for file recording (not live streaming)\n    appsrc.setElementProperty(\"caps\", \"video/x-raw,format=RGB,width=640,height=480,framerate=30/1\");\n    appsrc.setElementProperty(\"format\", \"time\");\n    appsrc.setElementProperty(\"is-live\", false);\n    appsrc.setElementProperty(\"do-timestamp\", true);\n\n    await pipeline.play();\n\n    // Generate and push frames\n    const frameCount = 300; // 10 seconds at 30fps\n    const width = 640;\n    const height = 480;\n    const frameSize = width * height * 3; // RGB\n\n    for (let i = 0; i < frameCount; i++) {\n      // Generate frame data (replace with your content generation logic)\n      const buffer = generateFrame(i, width, height);\n      appsrc.push(buffer);\n\n      if (i % 30 === 0) {\n        console.log(`📹 Recorded ${i} frames (${i / 30} seconds)`);\n      }\n    }\n\n    // CRITICAL: Signal end-of-stream when done generating content\n    appsrc.endOfStream();\n\n    // Wait for recording completion\n    while (true) {\n      const message = await pipeline.busPop(1000);\n      if (!message) continue;\n\n      if (message.type === \"eos\") {\n        console.log(\"🎉 Recording completed!\");\n        break;\n      } else if (message.type === \"error\") {\n        console.error(\"❌ Recording error:\", message.message);\n        break;\n      }\n    }\n\n    await pipeline.stop();\n\n    // Verify file was created\n    if (fs.existsSync(outputFile)) {\n      const stats = fs.statSync(outputFile);\n      console.log(`✅ File size: ${(stats.size / 1024 / 1024).toFixed(2)} MB`);\n    }\n  }\n}\n\nfunction generateFrame(frameNumber, width, height) {\n  // Example: Generate animated colored frames\n  const buffer = Buffer.alloc(width * height * 3);\n  const red = (frameNumber * 5) % 256;\n  const green = (frameNumber * 3) % 256;\n  const blue = (frameNumber * 7) % 256;\n\n  for (let i = 0; i < buffer.length; i += 3) {\n    buffer[i] = red; // R\n    buffer[i + 1] = green; // G\n    buffer[i + 2] = blue; // B\n  }\n\n  return buffer;\n}\n\n// Usage\nrecordGeneratedVideoToFile();\n```\n\n**Key Points for File Recording:**\n\n- **EOS is Required**: Always call `endOfStream()` when done pushing data\n- **OGV/Theora**: Most reliable format for programmatic content\n- **Non-live Mode**: Set `is-live: false` for file-like behavior\n- **Timestamping**: Enable `do-timestamp: true` for proper timing\n- **Error Handling**: Monitor bus messages for completion and errors\n\n### Extracting Buffer Data with Pad Probes\n\n```javascript\nimport { Pipeline } from \"gst-kit\";\n\nconst pipeline = new Pipeline(\n  \"videotestsrc ! videoconvert ! x264enc ! rtph264pay name=pay ! fakesink\"\n);\nconst payloader = pipeline.getElementByName(\"pay\");\n\nif (payloader) {\n  // Add probe to capture comprehensive buffer data from pad\n  const unsubscribe = payloader.addPadProbe(\"src\", bufferData => {\n    console.log(\"Buffer Data:\", {\n      // Raw buffer data\n      buffer: bufferData.buffer, // Buffer object with raw data\n      size: bufferData.buffer?.length, // Buffer size in bytes\n\n      // Timing information (nanoseconds)\n      pts: bufferData.pts, // Presentation timestamp\n      dts: bufferData.dts, // Decode timestamp\n      duration: bufferData.duration,\n      offset: bufferData.offset,\n      offsetEnd: bufferData.offsetEnd,\n\n      // Buffer metadata\n      flags: bufferData.flags, // GStreamer buffer flags\n\n      // Stream format information\n      caps: bufferData.caps, // Caps object with format details\n\n      // RTP data (only for RTP streams)\n      rtp: bufferData.rtp\n        ? {\n            timestamp: bufferData.rtp.timestamp,\n            sequence: bufferData.rtp.sequence,\n            ssrc: bufferData.rtp.ssrc,\n            payloadType: bufferData.rtp.payloadType,\n          }\n        : undefined,\n    });\n  });\n\n  await pipeline.play();\n\n  // ... later, remove the probe\n  unsubscribe();\n  await pipeline.stop();\n}\n```\n\n### Pipeline State Management\n\n```javascript\nimport { Pipeline } from \"gst-kit\";\n\nconst pipeline = new Pipeline(\"videotestsrc ! autovideosink\");\n\n// State change operations return detailed results\nconst playResult = await pipeline.play();\nconsole.log(\"Play result:\", playResult.result); // 'success', 'async', 'failure', etc.\nconsole.log(\"Current state:\", playResult.finalState);\n\n// Check if pipeline is playing\nconsole.log(\"Is playing:\", pipeline.playing());\n\n// Pause and resume\nawait pipeline.pause();\nawait pipeline.play();\n\n// Stop pipeline\nawait pipeline.stop();\n```\n\n### Position and Duration Queries\n\n```javascript\nimport { Pipeline } from \"gst-kit\";\n\nconst pipeline = new Pipeline(\"videotestsrc ! timeoverlay ! autovideosink\");\nawait pipeline.play();\n\nsetInterval(() => {\n  const position = pipeline.queryPosition(); // Position in seconds\n  const duration = pipeline.queryDuration(); // Duration in seconds\n  console.log(`Position: ${position}s / Duration: ${duration}s`);\n}, 1000);\n```\n\n### Seeking\n\n```javascript\nimport { Pipeline } from \"gst-kit\";\n\nconst pipeline = new Pipeline(\"videotestsrc ! timeoverlay ! autovideosink\");\nawait pipeline.play();\n\n// Seek to 60 seconds\nconst seekSuccess = pipeline.seek(60);\nconsole.log(\"Seek successful:\", seekSuccess);\n```\n\n### Ending a Stream (Pipeline-Level EOS)\n\n```javascript\nimport { Pipeline } from \"gst-kit\";\n\n// Record from a live source and stop cleanly\nconst pipeline = new Pipeline(\"videotestsrc ! theoraenc ! oggmux ! filesink location=out.ogv\");\nawait pipeline.play();\n\n// Record for 5 seconds, then end the stream gracefully\nsetTimeout(async () => {\n  const sent = pipeline.endOfStream();\n  console.log(\"EOS sent:\", sent); // true\n\n  // Wait for the pipeline to finish flushing\n  while (true) {\n    const msg = await pipeline.busPop(1000);\n    if (msg?.type === \"eos\") {\n      console.log(\"Recording complete\");\n      break;\n    }\n  }\n\n  await pipeline.stop();\n}, 5000);\n```\n\n### Releasing a Pipeline (dispose)\n\nCall `dispose()` when you are permanently done with a pipeline to free its native\nmemory right away, instead of waiting for the garbage collector to finalize the\nwrapper.\n\nWhy it matters: the native `GstPipeline` allocation (buffers, decoders, GStreamer\ninternals) lives outside V8's heap and is invisible to its GC accounting. A\npipeline you simply drop is only reclaimed when GC happens to collect the small JS\nwrapper — and with a flat JS heap, V8 feels little pressure to do so. A long\nrunning process that builds a pipeline per recording or transcode can watch RSS\nclimb steadily while the JS heap stays flat. `dispose()` closes that gap: it\ndrives the pipeline to NULL if it is not already there and drops the native\nreference synchronously, so the memory is released as soon as the last reference\ngoes away rather than at some later GC.\n\n```javascript\nimport { Pipeline } from \"gst-kit\";\n\nconst pipeline = new Pipeline(\"videotestsrc ! theoraenc ! oggmux ! filesink location=out.ogv\");\nawait pipeline.play();\n\n// ... record, then finish cleanly ...\npipeline.endOfStream();\nwhile (true) {\n  const msg = await pipeline.busPop(1000);\n  if (msg?.type === \"eos\") break;\n}\nawait pipeline.stop();\n\n// Release the native pipeline now rather than at some later GC.\npipeline.dispose();\n\n// dispose() is terminal and idempotent. Any method call afterward throws\n// \"Pipeline used after dispose()\", and a second dispose() is a harmless no-op.\n```\n\n**Key points:**\n\n- **Stop first (recommended)**: prefer `stop()` (or `endOfStream()` + wait for EOS, then `stop()`) before `dispose()`. If the pipeline has not reached the NULL state, `dispose()` drives it there synchronously before releasing it — GStreamer cannot cleanly free a non-NULL pipeline. That transition is normally instant, but on a not-fully-stopped pipeline it runs on the calling thread and is bounded by a 5s wait, so stopping first keeps `dispose()` cheap and non-blocking.\n- **Terminal**: call it once, when the pipeline will not be used again.\n- **Not a graceful stop**: `dispose()` does the hard release, not a flush.\n- **Release elements first**: any element obtained via `getElementByName()`, and any pad-probe or `onSample()` subscription on it, must be released/unsubscribed before `dispose()`. Elements hold their own reference and are not invalidated by disposing the pipeline.\n- **Idempotent**: calling `dispose()` again does nothing.\n- **Use-after-dispose is loud**: subsequent method calls throw rather than touching freed memory.\n\n### Message Bus Handling\n\n```javascript\nimport { Pipeline } from \"gst-kit\";\n\nconst pipeline = new Pipeline(\"videotestsrc num-buffers=100 ! autovideosink\");\nawait pipeline.play();\n\n// Listen for bus messages\nwhile (true) {\n  const message = await pipeline.busPop(1000); // 1 second timeout\n\n  if (message) {\n    console.log(\"Message:\", message.type, message.srcElementName);\n\n    if (message.type === \"eos\") {\n      console.log(\"End of stream\");\n      break;\n    } else if (message.type === \"error\") {\n      console.error(\"Error:\", message.errorMessage);\n      break;\n    }\n  }\n}\n```\n\n### Element Property Manipulation\n\n```javascript\nimport { Pipeline } from \"gst-kit\";\n\nconst pipeline = new Pipeline(\"videotestsrc name=source ! capsfilter name=filter ! autovideosink\");\n\nconst source = pipeline.getElementByName(\"source\");\nconst filter = pipeline.getElementByName(\"filter\");\n\n// Set various property types\nsource?.setElementProperty(\"pattern\", \"ball\");\nsource?.setElementProperty(\"is-live\", true);\nsource?.setElementProperty(\"num-buffers\", 100);\n\nfilter?.setElementProperty(\"caps\", \"video/x-raw,width=1280,height=720,framerate=30/1\");\n\n// Get property values\nconst patternResult = source?.getElementProperty(\"pattern\");\nconst capsResult = filter?.getElementProperty(\"caps\");\n\n// Access the actual values using the standardized format\nconst pattern = patternResult?.value;\nconst caps = capsResult?.value;\n```\n\n### Pad Manipulation\n\n```javascript\nimport { Pipeline } from \"gst-kit\";\n\nconst pipeline = new Pipeline(\n  \"input-selector name=sel ! autovideosink videotestsrc pattern=0 ! sel.sink_0 videotestsrc pattern=1 ! sel.sink_1\"\n);\n\nconst selector = pipeline.getElementByName(\"sel\");\nawait pipeline.play();\n\n// Switch between input pads\nsetInterval(() => {\n  const activePad = Math.random() > 0.5 ? \"sink_0\" : \"sink_1\";\n  selector?.setPad(\"active-pad\", activePad);\n  console.log(\"Switched to:\", activePad);\n}, 2000);\n\n// Get pad information\nconst srcPad = selector?.getPad(\"src\");\nconsole.log(\"Pad info:\", srcPad?.name, srcPad?.direction, srcPad?.caps);\n```\n\n## API Reference\n\n### Pipeline Class\n\n```typescript\nclass Pipeline {\n  constructor(description: string);\n\n  // Static methods\n  static elementExists(elementName: string): boolean;\n\n  // State management\n  play(timeoutMs?: number): Promise<StateChangeResult>;\n  pause(timeoutMs?: number): Promise<StateChangeResult>;\n  stop(timeoutMs?: number): Promise<StateChangeResult>;\n  playing(): boolean;\n\n  // Element access\n  getElementByName(name: string): Element | AppSinkElement | AppSrcElement | null;\n\n  // Position and seeking\n  queryPosition(): number;\n  queryDuration(): number;\n  seek(positionSeconds: number): boolean;\n\n  // End-of-stream\n  endOfStream(): boolean;\n\n  // Message handling\n  busPop(timeoutMs?: number): Promise<GstMessage | null>;\n\n  // Lifecycle — release the native pipeline and free its memory immediately\n  dispose(): void;\n}\n```\n\n### Element Types\n\n```typescript\n// Base element with common functionality\ninterface Element {\n  readonly type: \"element\";\n  getElementProperty(key: string): GStreamerPropertyResult;\n  setElementProperty(key: string, value: GStreamerPropertyValue): void;\n  addPadProbe(padName: string, callback: (bufferData: BufferData) => void): () => void;\n  setPad(attribute: string, padName: string): void;\n  getPad(padName: string): GstPad | null;\n}\n\n// AppSink element for receiving data\ninterface AppSinkElement extends Element {\n  readonly type: \"app-sink-element\";\n  getSample(timeoutMs?: number): Promise<GStreamerSample | null>;\n  onSample(callback: (sample: GStreamerSample) => void): () => void;\n}\n\n// AppSrc element for providing data\ninterface AppSrcElement extends Element {\n  readonly type: \"app-src-element\";\n  push(buffer: Buffer, pts?: Buffer | number): void;\n  endOfStream(): void;\n}\n```\n\n## Buffer Flags Reference\n\n```javascript\nimport { GstBufferFlags } from \"gst-kit\";\n\n// Check buffer flags\nif (bufferData.flags & GstBufferFlags.GST_BUFFER_FLAG_DELTA_UNIT) {\n  console.log(\"This is a delta frame (not a keyframe)\");\n}\n\nif (bufferData.flags & GstBufferFlags.GST_BUFFER_FLAG_HEADER) {\n  console.log(\"This buffer contains header data\");\n}\n```\n\nAvailable flags include:\n\n- `GST_BUFFER_FLAG_LIVE`: Buffer from live source\n- `GST_BUFFER_FLAG_DECODE_ONLY`: Buffer should only be decoded, not displayed\n- `GST_BUFFER_FLAG_DISCONT`: Buffer represents discontinuity\n- `GST_BUFFER_FLAG_DELTA_UNIT`: Buffer is delta unit (not keyframe)\n- `GST_BUFFER_FLAG_HEADER`: Buffer contains header information\n- And more...\n\n## Property System\n\n### Standardized Property Results\n\nThe `getElementProperty()` method returns a standardized object with type information:\n\n```javascript\n// Property result format\nconst result = element.getElementProperty(\"property-name\");\n\nif (result === null) {\n  console.log(\"Property value is null\");\n} else {\n  console.log(\"Property type:\", result.type); // \"primitive\" | \"array\" | \"object\" | \"buffer\" | \"sample\"\n  console.log(\"Property value:\", result.value); // The actual value\n}\n```\n\n### Property Types\n\n- **`primitive`**: strings, numbers, booleans, bigint (typically uint64s used to store nanoseconds)\n- **`array`**: Arrays of primitive values (strings, numbers, booleans, bigints)\n- **`object`**: GStreamer structures (like stats)\n- **`buffer`**: Raw binary data\n- **`sample`**: Media samples with buffer, caps, and metadata\n\n### Usage Examples\n\n```javascript\n// String property\nconst patternResult = videotestsrc.getElementProperty(\"pattern\");\nif (patternResult?.type === \"primitive\") {\n  console.log(\"Pattern:\", patternResult.value); // e.g., \"ball\"\n}\n\n// Boolean property\nconst isLiveResult = videotestsrc.getElementProperty(\"is-live\");\nif (isLiveResult?.type === \"primitive\") {\n  console.log(\"Is live:\", isLiveResult.value); // true/false\n}\n\n// Structure/Object property (like stats)\nconst statsResult = rtpdepay.getElementProperty(\"stats\");\nif (statsResult?.type === \"object\") {\n  const stats = statsResult.value;\n  console.log(\"RTP timestamp:\", stats.timestamp);\n}\n\n// Sample property\nconst sampleResult = fakesink.getElementProperty(\"last-sample\");\nif (sampleResult?.type === \"sample\") {\n  const sample = sampleResult.value;\n  console.log(\"Buffer size:\", sample.buffer.length);\n  console.log(\"Caps:\", sample.caps);\n}\n```\n\n## Build System & Tools\n\n### Native Code (C++)\n\n- **GYP**: Cross-platform build configuration system\n- **N-API**: Node-API for runtime-independent native bindings\n- **GStreamer Integration**: Full integration with GStreamer 1.0 ecosystem\n- **Compiler Support**: GCC, Clang, MSVC with C++20 standard\n\n### TypeScript/JavaScript\n\n- **Rolldown**: Rust-based module bundler generating both ESM and CJS outputs\n- **TypeScript**: Full type definitions and compilation\n- **Dual Packaging**: Supports both `import` and `require` statements\n- **Source Maps**: Full debugging support\n\n### Testing & Quality\n\n- **Vitest**: Modern, fast test runner\n- **Oxlint**: Fast Rust-based linter with TypeScript support\n- **Oxfmt**: Fast Rust-based code formatter\n- **Coverage**: Built-in test coverage reporting\n\n## Project Structure\n\n```txt\ngst-kit/\n├── src/\n│   ├── cpp/                   # C++ native implementation\n│   │   ├── addon.cpp          # N-API module entry point\n│   │   ├── pipeline.cpp       # Pipeline class implementation\n│   │   ├── element.cpp        # Element class implementation\n│   │   ├── async-workers.cpp  # Async operation workers\n│   │   └── type-conversion.cpp # Type conversion utilities\n│   └── ts/                    # TypeScript implementation\n│       ├── index.ts           # Main API exports and types\n│       └── *.test.ts          # Comprehensive test suite\n├── examples/                  # Usage examples\n│   ├── basic-pipeline.mjs     # Simple pipeline example\n│   ├── element-exists.mjs     # Checking element availability\n│   ├── appsink.mjs           # AppSink usage\n│   ├── appsrc.mjs            # AppSrc usage\n│   ├── appsrc-eos.mjs        # AppSrc with end-of-stream\n│   ├── pipeline-eos.mjs      # Pipeline-level end-of-stream\n│   ├── dispose.mjs           # Releasing a pipeline's native memory\n│   ├── record-to-file.mjs    # Recording to file example\n│   ├── rtp-timestamp.mjs     # RTP handling\n│   ├── bus.mjs               # Message bus handling\n│   ├── seek.mjs              # Seeking functionality\n│   ├── query.mjs             # Position/duration queries\n│   ├── set-pad.mjs           # Pad manipulation\n│   ├── fakesink.mjs          # Fakesink usage\n│   └── glshader.mjs          # OpenGL shader example\n├── build/                     # GYP build output\n├── dist/                      # Rolldown build output\n│   ├── esm/                  # ES modules\n│   ├── cjs/                  # CommonJS modules\n│   └── index.d.ts            # Type definitions\n├── scripts/                   # Build and utility scripts\n├── binding.gyp               # GYP build configuration\n├── rolldown.config.mjs       # Rolldown bundler configuration\n├── vitest.config.ts          # Vitest test configuration\n├── tsconfig.json             # TypeScript configuration\n└── package.json              # Node.js package configuration\n```\n\n## Performance Considerations\n\n- **Efficient Memory Management**: Proper buffer lifecycle management\n- **Async Operations**: Non-blocking operations for better performance\n- **Type Safety**: Compile-time error detection reduces runtime overhead\n\n## Runtime Compatibility\n\n| Runtime     | Support Level | Notes                       |\n| ----------- | ------------- | --------------------------- |\n| Node.js 22+ | ✅ Full       | Minimum required version    |\n| Bun         | ✅ Full       | Alternative runtime support |\n| Deno        | ✅ Full       | Alternative runtime support |\n\n## Platform Compatibility\n\n| Platform     | Local Development | Production Ready | Notes                      |\n| ------------ | ----------------- | ---------------- | -------------------------- |\n| Ubuntu/Linux | ✅ Full           | ✅ Full          | Excellent for servers      |\n| macOS        | ✅ Full           | ✅ Full          | Intel and Apple Silicon    |\n| Windows      | ✅ Full           | ✅ Full          | Requires environment setup |\n| Docker       | ✅ Full           | ✅ Full          | Ubuntu-based containers    |\n\n## License\n\nMIT License - see LICENSE file for details.\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and contribution guidelines.\n","readmeFilename":"README.md"}