{"_id":"@mux/sync-engine","_rev":"7-9ca800020afea0b6fdff71af82e64428","name":"@mux/sync-engine","dist-tags":{"alpha":"0.0.1-alpha.0","latest":"0.0.5"},"versions":{"0.0.1-alpha.0":{"name":"@mux/sync-engine","version":"0.0.1-alpha.0","keywords":["mux","sync","webhook","postgres","database","supabase","deno"],"author":{"name":"@muxinc"},"license":"MIT","_id":"@mux/sync-engine@0.0.1-alpha.0","maintainers":[{"name":"a-bro","email":"adam@adambrown.io"},{"name":"jsanford8","email":"justin@mux.com"},{"name":"diehlad","email":"adiehl@mux.com"},{"name":"dylanjha","email":"dylanjhaveri@gmail.com"},{"name":"brownsarahv","email":"sbrown@mux.com"},{"name":"electra-mux","email":"echong@mux.com"},{"name":"danielhayes","email":"dhayes@mux.com"},{"name":"jacquimanzi","email":"jacquimanzi@gmail.com"},{"name":"heyimdaveatmux","email":"dkiss@mux.com"},{"name":"mmcc","email":"matt@mmcc.io"},{"name":"rpeckmux","email":"rpeck@mux.com"},{"name":"nidhik82","email":"nkulkarni@mux.com"},{"name":"heff","email":"npm@heff.me"},{"name":"luwes","email":"me@wesleyluyten.com"},{"name":"phil-mux","email":"pcluff@mux.com"},{"name":"mux-npmjs","email":"mux-npmjs@mux.com"},{"name":"stephenmcrowe","email":"scrowe@mux.com"},{"name":"wfrankenberg","email":"wfrankenberg@mux.com"},{"name":"jwienmux","email":"jwien@mux.com"},{"name":"darius-at-mux","email":"dcepulis@mux.com"},{"name":"cpillsburymux","email":"cpillsbury@mux.com"}],"homepage":"https://github.com/muxinc/supabase/sync-engine#readme","bugs":{"url":"https://github.com/muxinc/supabase/issues"},"dist":{"shasum":"77febdee06d34b2e49c30715b0f6939d96794bcd","tarball":"https://registry.npmjs.org/@mux/sync-engine/-/sync-engine-0.0.1-alpha.0.tgz","fileCount":15,"integrity":"sha512-MvbKKGSkNndEcICSiroLAOgwxncHJGblx/IYhTSEUOJtWbOG+Y5EwbomuP6VdywfCyf5RVxHpYFgNvnrzAL/UQ==","signatures":[{"sig":"MEYCIQDwwRmwfYWo5VGkyMUmWHcr6GjUbWxQQ/xOucBMZEoiAAIhAN70TP5km4jR3ZLYdCViCzCH4BYSl77TwK0upO9rX+/S","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":160076},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"b68e067d84970fa58a8c28e7f5d830d80af22f87","scripts":{"lint":"eslint src --ext .ts","test":"vitest","build":"tsup && cp -r src/database/migrations dist/migrations","clean":"rimraf dist","format":"prettier --write \"src/**/*.{ts,js,json,sql}\"","test:ui":"vitest --ui","lint:fix":"eslint src --ext .ts --fix","prebuild":"npm run clean","test:watch":"vitest --watch","format:check":"prettier --check \"src/**/*.{ts,js,json,sql}\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"dylanjha","email":"dylanjhaveri@gmail.com"},"repository":{"url":"git+https://github.com/muxinc/supabase.git","type":"git"},"_npmVersion":"11.4.2","description":"Mux Sync Engine to sync Mux data based on webhooks to Postgres","directories":{},"_nodeVersion":"24.3.0","dependencies":{"pg":"^8.16.0","pino":"^9.7.0","yesql":"^7.0.0","@mux/mux-node":"^12.3.0","pg-node-migrations":"0.0.8"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^9.30.1","rimraf":"^5.0.0","vitest":"^3.2.4","prettier":"^3.6.2","@types/pg":"^8.15.2","@vitest/ui":"^3.2.4","typescript":"^5.0.0","@types/node":"^20.0.0","@types/yesql":"^4.1.4","testcontainers":"^10.11.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.5.1","@typescript-eslint/parser":"^8.36.0","@typescript-eslint/eslint-plugin":"^8.36.0"},"_npmOperationalInternal":{"tmp":"tmp/sync-engine_0.0.1-alpha.0_1757094840672_0.020468233889478604","host":"s3://npm-registry-packages-npm-production"}},"0.0.1":{"name":"@mux/sync-engine","version":"0.0.1","keywords":["mux","sync","webhook","postgres","database","supabase","deno"],"author":{"name":"@muxinc"},"license":"MIT","_id":"@mux/sync-engine@0.0.1","maintainers":[{"name":"a-bro","email":"adam@adambrown.io"},{"name":"jsanford8","email":"justin@mux.com"},{"name":"diehlad","email":"adiehl@mux.com"},{"name":"dylanjha","email":"dylanjhaveri@gmail.com"},{"name":"brownsarahv","email":"sbrown@mux.com"},{"name":"electra-mux","email":"echong@mux.com"},{"name":"danielhayes","email":"dhayes@mux.com"},{"name":"jacquimanzi","email":"jacquimanzi@gmail.com"},{"name":"heyimdaveatmux","email":"dkiss@mux.com"},{"name":"mmcc","email":"matt@mmcc.io"},{"name":"rpeckmux","email":"rpeck@mux.com"},{"name":"nidhik82","email":"nkulkarni@mux.com"},{"name":"heff","email":"npm@heff.me"},{"name":"luwes","email":"me@wesleyluyten.com"},{"name":"phil-mux","email":"pcluff@mux.com"},{"name":"mux-npmjs","email":"mux-npmjs@mux.com"},{"name":"stephenmcrowe","email":"scrowe@mux.com"},{"name":"wfrankenberg","email":"wfrankenberg@mux.com"},{"name":"jwienmux","email":"jwien@mux.com"},{"name":"darius-at-mux","email":"dcepulis@mux.com"},{"name":"cpillsburymux","email":"cpillsbury@mux.com"}],"homepage":"https://github.com/muxinc/supabase/sync-engine#readme","bugs":{"url":"https://github.com/muxinc/supabase/issues"},"dist":{"shasum":"6a580012c231de17cba46361ab56a37e65590476","tarball":"https://registry.npmjs.org/@mux/sync-engine/-/sync-engine-0.0.1.tgz","fileCount":15,"integrity":"sha512-858gOx5RtA2+gLeJw1nLhaUJFj7mW7bUALmQoiP5vr8tMCljmsgzG7yVl6aY4HsSFGWafGP4PXcaqbSFWsGgwA==","signatures":[{"sig":"MEQCIGEnoI1OUe+4H53SWFO0FzEt8cYP73CapfiMYbQCTtXlAiAIbK5+S6AQ6LvzWYcaDbpcxcqSZFXewX5UxGhFN/DShw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":160068},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"d4e12c59343fcead14c085ef8a2b9666044c8eee","scripts":{"lint":"eslint src --ext .ts","test":"vitest","build":"tsup && cp -r src/database/migrations dist/migrations","clean":"rimraf dist","format":"prettier --write \"src/**/*.{ts,js,json,sql}\"","test:ui":"vitest --ui","lint:fix":"eslint src --ext .ts --fix","prebuild":"npm run clean","test:watch":"vitest --watch","format:check":"prettier --check \"src/**/*.{ts,js,json,sql}\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"dylanjha","email":"dylanjhaveri@gmail.com"},"repository":{"url":"git+https://github.com/muxinc/supabase.git","type":"git"},"_npmVersion":"11.4.2","description":"Mux Sync Engine to sync Mux data based on webhooks to Postgres","directories":{},"_nodeVersion":"24.3.0","dependencies":{"pg":"^8.16.0","pino":"^9.7.0","yesql":"^7.0.0","@mux/mux-node":"^12.3.0","pg-node-migrations":"0.0.8"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^9.30.1","rimraf":"^5.0.0","vitest":"^3.2.4","prettier":"^3.6.2","@types/pg":"^8.15.2","@vitest/ui":"^3.2.4","typescript":"^5.0.0","@types/node":"^20.0.0","@types/yesql":"^4.1.4","testcontainers":"^10.11.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.5.1","@typescript-eslint/parser":"^8.36.0","@typescript-eslint/eslint-plugin":"^8.36.0"},"_npmOperationalInternal":{"tmp":"tmp/sync-engine_0.0.1_1757095183143_0.7056933293579146","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@mux/sync-engine","version":"0.0.2","keywords":["mux","sync","webhook","postgres","database","supabase","deno"],"author":{"name":"@muxinc"},"license":"MIT","_id":"@mux/sync-engine@0.0.2","maintainers":[{"name":"a-bro","email":"adam@adambrown.io"},{"name":"jsanford8","email":"justin@mux.com"},{"name":"diehlad","email":"adiehl@mux.com"},{"name":"dylanjha","email":"dylanjhaveri@gmail.com"},{"name":"brownsarahv","email":"sbrown@mux.com"},{"name":"electra-mux","email":"echong@mux.com"},{"name":"danielhayes","email":"dhayes@mux.com"},{"name":"jacquimanzi","email":"jacquimanzi@gmail.com"},{"name":"heyimdaveatmux","email":"dkiss@mux.com"},{"name":"mmcc","email":"matt@mmcc.io"},{"name":"rpeckmux","email":"rpeck@mux.com"},{"name":"nidhik82","email":"nkulkarni@mux.com"},{"name":"heff","email":"npm@heff.me"},{"name":"luwes","email":"me@wesleyluyten.com"},{"name":"phil-mux","email":"pcluff@mux.com"},{"name":"mux-npmjs","email":"mux-npmjs@mux.com"},{"name":"stephenmcrowe","email":"scrowe@mux.com"},{"name":"wfrankenberg","email":"wfrankenberg@mux.com"},{"name":"jwienmux","email":"jwien@mux.com"},{"name":"darius-at-mux","email":"dcepulis@mux.com"},{"name":"cpillsburymux","email":"cpillsbury@mux.com"}],"homepage":"https://github.com/muxinc/supabase/sync-engine#readme","bugs":{"url":"https://github.com/muxinc/supabase/issues"},"dist":{"shasum":"17ccc38f234a0078a3b698c5dad497787e55ee21","tarball":"https://registry.npmjs.org/@mux/sync-engine/-/sync-engine-0.0.2.tgz","fileCount":16,"integrity":"sha512-1L5GnD4zLTGMFMj+omWXCFNpZ1qippMZfHfMTIdvMnHowU4JBHCIO4nMMJzYD/g1U8YIzEKafXpGMh/MlZVIJQ==","signatures":[{"sig":"MEQCICFj1bp/0ZllMrC20rL224zPLuvykWM+eB45CE0YqSICAiBVqoYXYe90IJ5Yom1fXsQBQrEoNzcSP9oIwQqCZDJEFA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":160221},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"3b2030005a006b44e1b3a4dbe212b0ae9da6c87d","scripts":{"lint":"eslint src --ext .ts","test":"vitest","build":"tsup && cp -r src/database/migrations dist/migrations","clean":"rimraf dist","format":"prettier --write \"src/**/*.{ts,js,json,sql}\"","test:ui":"vitest --ui","lint:fix":"eslint src --ext .ts --fix","prebuild":"npm run clean","test:watch":"vitest --watch","format:check":"prettier --check \"src/**/*.{ts,js,json,sql}\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"dylanjha","email":"dylanjhaveri@gmail.com"},"repository":{"url":"git+https://github.com/muxinc/supabase.git","type":"git"},"_npmVersion":"11.4.2","description":"Mux Sync Engine to sync Mux data based on webhooks to Postgres","directories":{},"_nodeVersion":"24.3.0","dependencies":{"pg":"^8.16.0","pino":"^9.7.0","yesql":"^7.0.0","@mux/mux-node":"^12.3.0","pg-node-migrations":"0.0.8"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^9.30.1","rimraf":"^5.0.0","vitest":"^3.2.4","prettier":"^3.6.2","@types/pg":"^8.15.2","@vitest/ui":"^3.2.4","typescript":"^5.0.0","@types/node":"^20.0.0","@types/yesql":"^4.1.4","testcontainers":"^10.11.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.5.1","@typescript-eslint/parser":"^8.36.0","@typescript-eslint/eslint-plugin":"^8.36.0"},"_npmOperationalInternal":{"tmp":"tmp/sync-engine_0.0.2_1758754292648_0.2806175930629313","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@mux/sync-engine","version":"0.0.3","keywords":["mux","sync","webhook","postgres","database","supabase","deno"],"author":{"name":"@muxinc"},"license":"MIT","_id":"@mux/sync-engine@0.0.3","maintainers":[{"name":"a-bro","email":"adam@adambrown.io"},{"name":"jsanford8","email":"justin@mux.com"},{"name":"diehlad","email":"adiehl@mux.com"},{"name":"dylanjha","email":"dylanjhaveri@gmail.com"},{"name":"brownsarahv","email":"sbrown@mux.com"},{"name":"electra-mux","email":"echong@mux.com"},{"name":"danielhayes","email":"dhayes@mux.com"},{"name":"jacquimanzi","email":"jacquimanzi@gmail.com"},{"name":"heyimdaveatmux","email":"dkiss@mux.com"},{"name":"mmcc","email":"matt@mmcc.io"},{"name":"rpeckmux","email":"rpeck@mux.com"},{"name":"nidhik82","email":"nkulkarni@mux.com"},{"name":"heff","email":"npm@heff.me"},{"name":"luwes","email":"me@wesleyluyten.com"},{"name":"phil-mux","email":"pcluff@mux.com"},{"name":"mux-npmjs","email":"mux-npmjs@mux.com"},{"name":"stephenmcrowe","email":"scrowe@mux.com"},{"name":"wfrankenberg","email":"wfrankenberg@mux.com"},{"name":"jwienmux","email":"jwien@mux.com"},{"name":"darius-at-mux","email":"dcepulis@mux.com"},{"name":"cpillsburymux","email":"cpillsbury@mux.com"}],"homepage":"https://github.com/muxinc/supabase/sync-engine#readme","bugs":{"url":"https://github.com/muxinc/supabase/issues"},"dist":{"shasum":"390955c51f823f72b79adbd67ed7b9b4ea29d3ef","tarball":"https://registry.npmjs.org/@mux/sync-engine/-/sync-engine-0.0.3.tgz","fileCount":16,"integrity":"sha512-2JQy2Kb5s+dpAAu5R0aBmA5BlJVtkXsbCa+i04ADhDRiX8myrYcUFkSGSHJcC2OSZQCihsLrpvxSA7MpG8falQ==","signatures":[{"sig":"MEQCIGGOjLdZ7bQ9m2Npf7RZ1x85tO5iK/q5FxM2t1pQQHIJAiB7ma3poz6pbWbB7FEvG95vY+bbid1S3GgXU95GuUX3Eg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":171449},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"9c7b1670e07fa201ce6a2fba0e48ef28c2ff699a","scripts":{"lint":"eslint src --ext .ts","test":"vitest","build":"tsup && cp -r src/database/migrations dist/migrations","clean":"rimraf dist","format":"prettier --write \"src/**/*.{ts,js,json,sql}\"","test:ui":"vitest --ui","lint:fix":"eslint src --ext .ts --fix","prebuild":"npm run clean","test:watch":"vitest --watch","format:check":"prettier --check \"src/**/*.{ts,js,json,sql}\"","prepublishOnly":"npm run build","test:pagination":"node scripts/test-pagination.js"},"_npmUser":{"name":"dylanjha","email":"dylanjhaveri@gmail.com"},"repository":{"url":"git+https://github.com/muxinc/supabase.git","type":"git"},"_npmVersion":"11.4.2","description":"Mux Sync Engine to sync Mux data based on webhooks to Postgres","directories":{},"_nodeVersion":"24.3.0","dependencies":{"pg":"^8.16.0","pino":"^9.7.0","yesql":"^7.0.0","@mux/mux-node":"^12.3.0","pg-node-migrations":"0.0.8"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^9.30.1","rimraf":"^5.0.0","vitest":"^3.2.4","prettier":"^3.6.2","@types/pg":"^8.15.2","@vitest/ui":"^3.2.4","typescript":"^5.0.0","@types/node":"^20.0.0","@types/yesql":"^4.1.4","testcontainers":"^10.11.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.5.1","@typescript-eslint/parser":"^8.36.0","@typescript-eslint/eslint-plugin":"^8.36.0"},"_npmOperationalInternal":{"tmp":"tmp/sync-engine_0.0.3_1758782293541_0.45207881527230454","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@mux/sync-engine","version":"0.0.4","keywords":["mux","sync","webhook","postgres","database","supabase","deno"],"author":{"name":"@muxinc"},"license":"MIT","_id":"@mux/sync-engine@0.0.4","maintainers":[{"name":"a-bro","email":"adam@adambrown.io"},{"name":"jsanford8","email":"justin@mux.com"},{"name":"diehlad","email":"adiehl@mux.com"},{"name":"dylanjha","email":"dylanjhaveri@gmail.com"},{"name":"brownsarahv","email":"sbrown@mux.com"},{"name":"electra-mux","email":"echong@mux.com"},{"name":"danielhayes","email":"dhayes@mux.com"},{"name":"jacquimanzi","email":"jacquimanzi@gmail.com"},{"name":"heyimdaveatmux","email":"dkiss@mux.com"},{"name":"mmcc","email":"matt@mmcc.io"},{"name":"rpeckmux","email":"rpeck@mux.com"},{"name":"nidhik82","email":"nkulkarni@mux.com"},{"name":"heff","email":"npm@heff.me"},{"name":"luwes","email":"me@wesleyluyten.com"},{"name":"phil-mux","email":"pcluff@mux.com"},{"name":"mux-npmjs","email":"mux-npmjs@mux.com"},{"name":"stephenmcrowe","email":"scrowe@mux.com"},{"name":"wfrankenberg","email":"wfrankenberg@mux.com"},{"name":"jwienmux","email":"jwien@mux.com"},{"name":"darius-at-mux","email":"dcepulis@mux.com"},{"name":"cpillsburymux","email":"cpillsbury@mux.com"}],"homepage":"https://github.com/muxinc/supabase/sync-engine#readme","bugs":{"url":"https://github.com/muxinc/supabase/issues"},"dist":{"shasum":"d24213e2213826cc63117f9b7f910610d4dcedf4","tarball":"https://registry.npmjs.org/@mux/sync-engine/-/sync-engine-0.0.4.tgz","fileCount":16,"integrity":"sha512-NkbDgGnxL7UNcIn/ZT2tyvBeCFge1dR5JxHghDAhr09qW9ZEkyjZrUa1DqY3lUCFbSYZQEwiGqX7JCmMcUyXdQ==","signatures":[{"sig":"MEUCIFcBrNm7UMH7ihGuWzti7h1V58NwNq6/UlcAjGRHDWSgAiEAhFSnJQ1Htw9rMSzEhh0buXKMuoOg0zBqJp2TfjZIZWE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":171449},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"70f4b50f72c2a59853cb9129081e79eaa95b88ef","scripts":{"lint":"eslint src --ext .ts","test":"vitest","build":"tsup && cp -r src/database/migrations dist/migrations","clean":"rimraf dist","format":"prettier --write \"src/**/*.{ts,js,json,sql}\"","test:ui":"vitest --ui","lint:fix":"eslint src --ext .ts --fix","prebuild":"npm run clean","test:watch":"vitest --watch","format:check":"prettier --check \"src/**/*.{ts,js,json,sql}\"","prepublishOnly":"npm run build","test:pagination":"node scripts/test-pagination.js"},"_npmUser":{"name":"dylanjha","email":"dylanjhaveri@gmail.com"},"repository":{"url":"git+https://github.com/muxinc/supabase.git","type":"git"},"_npmVersion":"11.4.2","description":"Mux Sync Engine to sync Mux data based on webhooks to Postgres","directories":{},"_nodeVersion":"24.3.0","dependencies":{"pg":"^8.16.0","pino":"^9.7.0","yesql":"^7.0.0","@mux/mux-node":"^12.3.0","pg-node-migrations":"0.0.8"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^9.30.1","rimraf":"^5.0.0","vitest":"^3.2.4","prettier":"^3.6.2","@types/pg":"^8.15.2","@vitest/ui":"^3.2.4","typescript":"^5.0.0","@types/node":"^20.0.0","@types/yesql":"^4.1.4","testcontainers":"^10.11.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.5.1","@typescript-eslint/parser":"^8.36.0","@typescript-eslint/eslint-plugin":"^8.36.0"},"_npmOperationalInternal":{"tmp":"tmp/sync-engine_0.0.4_1759514262107_0.6760334952632325","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@mux/sync-engine","version":"0.0.5","keywords":["mux","sync","webhook","postgres","database","supabase","deno"],"author":{"name":"@muxinc"},"license":"MIT","_id":"@mux/sync-engine@0.0.5","maintainers":[{"name":"a-bro","email":"adam@adambrown.io"},{"name":"jsanford8","email":"justin@mux.com"},{"name":"diehlad","email":"adiehl@mux.com"},{"name":"dylanjha","email":"dylanjhaveri@gmail.com"},{"name":"brownsarahv","email":"sbrown@mux.com"},{"name":"electra-mux","email":"echong@mux.com"},{"name":"danielhayes","email":"dhayes@mux.com"},{"name":"jacquimanzi","email":"jacquimanzi@gmail.com"},{"name":"heyimdaveatmux","email":"dkiss@mux.com"},{"name":"mmcc","email":"matt@mmcc.io"},{"name":"rpeckmux","email":"rpeck@mux.com"},{"name":"nidhik82","email":"nkulkarni@mux.com"},{"name":"heff","email":"npm@heff.me"},{"name":"luwes","email":"me@wesleyluyten.com"},{"name":"phil-mux","email":"pcluff@mux.com"},{"name":"mux-npmjs","email":"mux-npmjs@mux.com"},{"name":"stephenmcrowe","email":"scrowe@mux.com"},{"name":"wfrankenberg","email":"wfrankenberg@mux.com"},{"name":"jwienmux","email":"jwien@mux.com"},{"name":"darius-at-mux","email":"dcepulis@mux.com"},{"name":"cpillsburymux","email":"cpillsbury@mux.com"}],"homepage":"https://github.com/muxinc/supabase/sync-engine#readme","bugs":{"url":"https://github.com/muxinc/supabase/issues"},"dist":{"shasum":"338e3bedf398f5b365c66250cf3c4fe11df810f6","tarball":"https://registry.npmjs.org/@mux/sync-engine/-/sync-engine-0.0.5.tgz","fileCount":16,"integrity":"sha512-OwwxA7+K4dFfafMy7kp0+lyR4y/Iu3IJijnogXX7qhZP1rPVxmB0wXfpm0N+UvpSSqbjQQAeobROFTLo2pAyew==","signatures":[{"sig":"MEQCIBbbfMkLWPMLQ4L2JvRuonRSm4Ml2WG65nmktSRmmw3wAiASXclBhRcLzH/SGxGubiDFC0YjxtZq8QGNTN50aNmSnA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":172289},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"db8155af019ee4f5d0725981819e1be0959844bd","scripts":{"lint":"eslint src --ext .ts","test":"vitest","build":"tsup && cp -r src/database/migrations dist/migrations","clean":"rimraf dist","format":"prettier --write \"src/**/*.{ts,js,json,sql}\"","test:ui":"vitest --ui","lint:fix":"eslint src --ext .ts --fix","prebuild":"npm run clean","test:watch":"vitest --watch","format:check":"prettier --check \"src/**/*.{ts,js,json,sql}\"","prepublishOnly":"npm run build","test:pagination":"node scripts/test-pagination.js"},"_npmUser":{"name":"dylanjha","email":"dylanjhaveri@gmail.com"},"repository":{"url":"git+https://github.com/muxinc/supabase.git","type":"git"},"_npmVersion":"11.4.2","description":"Mux Sync Engine to sync Mux data based on webhooks to Postgres","directories":{},"_nodeVersion":"24.3.0","dependencies":{"pg":"^8.16.0","pino":"^9.7.0","yesql":"^7.0.0","@mux/mux-node":"^12.3.0","pg-node-migrations":"0.0.8"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^9.30.1","rimraf":"^5.0.0","vitest":"^3.2.4","prettier":"^3.6.2","@types/pg":"^8.15.2","@vitest/ui":"^3.2.4","typescript":"^5.0.0","@types/node":"^20.0.0","@types/yesql":"^4.1.4","testcontainers":"^10.11.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.5.1","@typescript-eslint/parser":"^8.36.0","@typescript-eslint/eslint-plugin":"^8.36.0"},"_npmOperationalInternal":{"tmp":"tmp/sync-engine_0.0.5_1760376574480_0.35470023510935555","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2025-09-05T17:54:00.537Z","modified":"2026-03-26T19:48:21.299Z","0.0.1-alpha.0":"2025-09-05T17:54:00.897Z","0.0.1":"2025-09-05T17:59:43.336Z","0.0.2":"2025-09-24T22:51:32.859Z","0.0.3":"2025-09-25T06:38:13.735Z","0.0.4":"2025-10-03T17:57:42.298Z","0.0.5":"2025-10-13T17:29:34.816Z"},"bugs":{"url":"https://github.com/muxinc/supabase/issues"},"author":{"name":"@muxinc"},"license":"MIT","homepage":"https://github.com/muxinc/supabase/sync-engine#readme","keywords":["mux","sync","webhook","postgres","database","supabase","deno"],"repository":{"url":"git+https://github.com/muxinc/supabase.git","type":"git"},"description":"Mux Sync Engine to sync Mux data based on webhooks to Postgres","maintainers":[],"readme":"# Mux Sync Engine\n\nMux Sync Engine is a service that syncs Mux data to Postgres based on webhooks. It provides an easy way to keep your database in sync with your Mux assets, live streams, and uploads.\n\n## Features\n\n- **Automatic webhook signature verification**: Ensures webhook events are genuine and from Mux\n- **Webhook callbacks**: Run custom logic on webhook events\n- **Complete Mux event syncing**: All Mux webhook events are synced to database tables for further analysis\n- **Backfill support**: Sync existing Mux data to your database\n- **Related entity backfilling**: Automatically ensures foreign key integrity by fetching related entities\n\n## What gets synced\n\nThe following Mux resources are automatically synced to your Postgres database under the `mux` schema:\n\n- **Assets** (`assets`): Video assets, including encoding status, playback IDs, and metadata\n- **Live Streams** (`live_streams`): Live streaming configurations and status\n- **Uploads** (`uploads`): Direct upload URLs and their status\n- **Webhook Events** (`webhook_events`): All webhook events for audit and debugging\n\n## Installation\n\n```bash\nnpm install @mux/sync-engine\n```\n\n## Usage\n\n### Basic Setup\n\n```typescript\nimport { MuxSync, runMigrations } from '@mux/sync-engine';\n\n// Run database migrations first\nawait runMigrations({\n  databaseUrl: 'postgresql://user:password@localhost:5432/database',\n});\n\n// Initialize the sync engine\nconst muxSync = new MuxSync({\n  databaseUrl: 'postgresql://user:password@localhost:5432/database',\n  muxTokenId: 'your-mux-token-id',\n  muxTokenSecret: 'your-mux-token-secret',\n  muxWebhookSecret: 'your-webhook-secret',\n});\n\n// Process a webhook (in your webhook handler)\napp.post('/webhook', async (req, res) => {\n  try {\n    await muxSync.processWebhook(req.body, req.headers);\n    res.status(200).send('OK');\n  } catch (error) {\n    console.error('Webhook processing failed:', error);\n    res.status(400).send('Bad Request');\n  }\n});\n```\n\n### Configuration Options\n\n```typescript\nconst muxSync = new MuxSync({\n  databaseUrl: 'postgresql://user:password@localhost:5432/database',\n  muxTokenId: 'your-mux-token-id',\n  muxTokenSecret: 'your-mux-token-secret',\n  muxWebhookSecret: 'your-webhook-secret',\n\n  // Optional: Backfill related entities to ensure foreign key integrity\n  backfillRelatedEntities: true,\n\n  // Optional: Always fetch fresh data from Mux API instead of using webhook data\n  revalidateEntityViaMuxApi: false,\n\n  // Optional: Maximum number of Postgres connections\n  maxPostgresConnections: 10,\n\n  // Optional: Custom logger\n  logger: console,\n});\n```\n\n### Backfilling Existing Data\n\nYou can backfill existing Mux data to your database:\n\n```typescript\n// Backfill all data\nconst result = await muxSync.syncBackfill({ object: 'all' });\nconsole.log(`Synced ${result.muxAssets?.synced} assets`);\nconsole.log(`Synced ${result.muxLiveStreams?.synced} live streams`);\nconsole.log(`Synced ${result.muxUploads?.synced} uploads`);\n\n// Backfill specific object types\nawait muxSync.syncBackfill({ object: 'mux_assets' });\nawait muxSync.syncBackfill({ object: 'mux_live_streams' });\nawait muxSync.syncBackfill({ object: 'mux_uploads' });\n```\n\n## Database Schema\n\nThe sync engine creates tables under the `mux` schema:\n\n- `mux.assets` - Video assets with encoding status and playback information\n- `mux.live_streams` - Live streaming configurations\n- `mux.uploads` - Direct upload URLs and status\n- `mux.webhook_events` - Webhook event metadata and payloads\n\n### Supabase Edge Function Example\n\n```typescript\nimport { serve } from 'https://deno.land/std@0.168.0/http/server.ts';\nimport { MuxSync } from 'npm:@mux/sync-engine';\n\nconst muxSync = new MuxSync({\n  databaseUrl: Deno.env.get('SUPABASE_DB_URL')!,\n  muxTokenId: Deno.env.get('MUX_TOKEN_ID')!,\n  muxTokenSecret: Deno.env.get('MUX_TOKEN_SECRET')!,\n  muxWebhookSecret: Deno.env.get('MUX_WEBHOOK_SECRET')!,\n});\n\nserve(async (req) => {\n  try {\n    const body = await req.text();\n    await muxSync.processWebhook(body, req.headers);\n    return new Response('OK', { status: 200 });\n  } catch (error) {\n    console.error('Webhook processing failed:', error);\n    return new Response('Bad Request', { status: 400 });\n  }\n});\n```\n\n## Development\n\n### Building\n\n```bash\nnpm install\nnpm run build\n```\n\n### Testing\n\nThis package includes comprehensive tests using Vitest and Testcontainers:\n\n```bash\n# Install dependencies\nnpm install\n\n# Run all tests\nnpm test\n\n# Run tests in watch mode\nnpm run test:watch\n\n# Run tests with UI\nnpm run test:ui\n\n```\n\n#### Test Structure\n\n- `src/test/migrations.test.ts` - Tests for database migrations\n- `src/test/backfill.test.ts` - Tests for sync functionality\n- `src/test/helpers/mockMux.ts` - Mock objects for Mux API\n\n#### CI/CD\n\nThe tests are designed to run in CI environments. See `.github/workflows/test.yml` for GitHub Actions configuration.\n\nFor local development, tests use Testcontainers to spin up a PostgreSQL instance automatically.\n\n## Environment Variables\n\nThe following environment variables are required:\n\n- `MUX_TOKEN_ID` - Your Mux token ID\n- `MUX_TOKEN_SECRET` - Your Mux token secret\n- `MUX_WEBHOOK_SECRET` - Your webhook signing secret\n- `DATABASE_URL` - PostgreSQL connection string\n\n## Supported Webhook Events\n\nThe sync engine handles all Mux webhook events, including:\n\n- `video.asset.created`\n- `video.asset.ready`\n- `video.asset.errored`\n- `video.asset.updated`\n- `video.asset.deleted`\n- `video.live_stream.created`\n- `video.live_stream.connected`\n- `video.live_stream.recording`\n- `video.live_stream.active`\n- `video.live_stream.disconnected`\n- `video.live_stream.idle`\n- `video.live_stream.updated`\n- `video.live_stream.deleted`\n- `video.upload.created`\n- `video.upload.asset_created`\n- `video.upload.cancelled`\n- `video.upload.timeout`\n- `video.upload.errored`\n\n## License\n\nMIT\n","readmeFilename":"README.md"}