{ "name": "lossless-cut", "productName": "LosslessCut", "description": "The swiss army knife of lossless video/audio editing", "copyright": "Copyright © 2026 ${author}", "version": "3.69.0", "main": "./out/main/index.js", "homepage": "./", "type": "module", "scripts": { "clean": "rimraf dist out common-ts-dist main-ts-dist build-resources icon-build", "start": "electron-vite preview", "dev": "electron-vite dev -w", "download-ffmpeg-darwin-x64": "mkdirp ffmpeg/darwin-x64 && cd ffmpeg/darwin-x64 && wget https://github.com/mifi/ffmpeg-build-script/releases/download/8.0-1/ffmpeg-macos-X64 -O ffmpeg && wget https://github.com/mifi/ffmpeg-build-script/releases/download/8.0-1/ffprobe-macos-X64 -O ffprobe && chmod +x ffmpeg && chmod +x ffprobe", "download-ffmpeg-darwin-arm64": "mkdirp ffmpeg/darwin-arm64 && cd ffmpeg/darwin-arm64 && wget https://github.com/mifi/ffmpeg-build-script/releases/download/8.0-1/ffmpeg-macos-ARM64 -O ffmpeg && wget https://github.com/mifi/ffmpeg-build-script/releases/download/8.0-1/ffprobe-macos-ARM64 -O ffprobe && chmod +x ffmpeg && chmod +x ffprobe", "download-ffmpeg-linux-x64": "mkdirp ffmpeg/linux-x64 && cd ffmpeg/linux-x64 && wget https://github.com/mifi/ffmpeg-builds/releases/download/8.0-1/ffmpeg-n8.0-latest-linux64-gpl-shared-8.0.tar.xz -O ffmpeg-ffprobe.xz && tar -xv -f ffmpeg-ffprobe.xz && mv ffmpeg-n8.0-latest-linux64-gpl-shared-8.0 extracted && mkdirp lib && mv extracted/bin/ffmpeg extracted/bin/ffprobe extracted/lib/lib*.so* lib", "download-ffmpeg-win32-x64": "mkdirp ffmpeg/win32-x64 && cd ffmpeg/win32-x64 && npx download-cli https://github.com/mifi/ffmpeg-builds/releases/download/8.0-1/ffmpeg-n8.0-latest-win64-gpl-shared-8.0.zip --out . --filename ffmpeg-ffprobe.zip && 7z x ffmpeg-ffprobe.zip && mkdirp lib && cd ffmpeg-n8.0-latest-win64-gpl-shared-8.0/bin && npx shx mv ffmpeg.exe ffprobe.exe *.dll ../../lib", "download-ffmpeg-win32-arm64": "mkdirp ffmpeg/win32-arm64 && cd ffmpeg/win32-arm64 && npx download-cli https://github.com/mifi/ffmpeg-builds/releases/download/8.0-1/ffmpeg-n8.0.1-76-gfa4ee7ab3c-winarm64-gpl-shared-8.0.zip --out . --filename ffmpeg-ffprobe.zip && 7z x ffmpeg-ffprobe.zip && mkdirp lib && cd ffmpeg-n8.0.1-76-gfa4ee7ab3c-winarm64-gpl-shared-8.0/bin && npx shx mv ffmpeg.exe ffprobe.exe *.dll ../../lib", "build": "yarn generate-icon && electron-vite build", "tsc": "tsc --build", "test": "vitest", "lint": "eslint --ext .js,.ts,.jsx,.tsx,.mjs,.mts .", "check": "yarn tsc && yarn lint && yarn test run && yarn build && yarn check-licenses && yarn scan-i18n && yarn dedupe --check && yarn generate-docs", "pack-mac": "yarn build && electron-builder --mac dmg", "pack-mas-dev": "yarn build && electron-builder --mac mas-dev -c.mas.provisioningProfile=LosslessCut_Dev.provisionprofile -c.mas.identity='Mikael Finstad (JH4PH8B3C8)'", "pack-win": "yarn build && electron-builder --win zip --x64", "postinstall": "electron-builder install-app-deps", "version": "node script/postversion.ts && git add no.mifi.losslesscut.appdata.xml", "pack-linux": "yarn build && electron-builder --linux", "scan-i18n": "i18next-cli -c i18next.config.scan.ts extract", "generate-icon": "mkdirp icon-build build-resources/appx && node script/generateIcon.ts", "generate-licenses": "yarn licenses generate-disclaimer -R > licenses.txt && echo '\n\nffmpeg is licensed under GPL v2+:\n\nhttp://www.gnu.org/licenses/old-licenses/gpl-2.0.html' >> licenses.txt", "generate-docs": "node script/generateDocs.ts", "check-licenses": "node script/checkLicenses.ts", "upload-artifacts": "node script/uploadArtifacts.ts" }, "author": { "name": "Mikael Finstad", "email": "finstaden@gmail.com", "url": "https://mifi.no/" }, "repository": { "type": "git", "url": "https://github.com/mifi/lossless-cut.git" }, "license": "GPL-2.0-only", "devDependencies": { "@actions/artifact": "^6.2.1", "@adamscybot/react-leaflet-component-marker": "^2.0.3", "@dnd-kit/core": "^6.3.1", "@dnd-kit/modifiers": "^9.0.0", "@dnd-kit/sortable": "^10.0.0", "@fontsource/open-sans": "^5.2.7", "@radix-ui/colors": "^3.0.0", "@radix-ui/react-alert-dialog": "^1.1.15", "@radix-ui/react-checkbox": "^1.3.3", "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-dropdown-menu": "^2.1.16", "@radix-ui/react-switch": "^1.2.6", "@radix-ui/themes": "^3.3.0", "@tanstack/react-virtual": "3.13.26", "@tsconfig/node22": "^22.0.5", "@tsconfig/strictest": "^2.0.8", "@tsconfig/vite-react": "^8.0.6", "@types/canvas-confetti": "^1.9.0", "@types/color": "^4.2.1", "@types/css-modules": "^1.0.5", "@types/eslint": "^8.56.12", "@types/express": "^5.0.6", "@types/leaflet": "^1.9.21", "@types/lodash": "^4.17.24", "@types/lodash.debounce": "^4.0.9", "@types/luxon": "^3.7.1", "@types/mime-types": "^3.0.1", "@types/morgan": "^1.9.10", "@types/node": "22.19.19", "@types/react": "^19.2.15", "@types/react-dom": "^19.2.3", "@types/react-syntax-highlighter": "^15.5.13", "@types/semver": "^7.7.1", "@types/smpte-timecode": "^1.2.5", "@types/yargs": "^17.0.35", "@types/yargs-parser": "^21.0.3", "@typescript-eslint/eslint-plugin": "^8.60.0", "@typescript-eslint/parser": "^8.60.0", "@uidotdev/usehooks": "^2.4.1", "@vitejs/plugin-react": "^5.2.0", "canvas-confetti": "^1.9.4", "color": "^5.0.3", "csv-parse": "^6.2.1", "csv-stringify": "^6.7.0", "data-uri-to-buffer": "^8.0.0", "electron": "^42.3.0", "electron-builder": "26.15.2", "electron-vite": "^5.0.0", "eslint": "^8.57.1", "eslint-config-mifi": "^0.1.1", "eslint-plugin-import": "^2.32.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^7.1.1", "eslint-plugin-unicorn": "56.0.1", "fast-xml-parser": "^5.8.0", "i18next-cli": "^1.58.1", "icon-gen": "^5.0.0", "immer": "^11.1.8", "ky": "^2.0.2", "leaflet": "^1.9.4", "lodash": "^4.18.1", "luxon": "^3.7.2", "mkdirp": "^3.0.1", "motion": "^12.40.0", "nanoid": "^5.1.11", "p-map": "^7.0.4", "p-retry": "^8.0.0", "pretty-bytes": "^7.1.0", "react": "^19.2.6", "react-dom": "^19.2.6", "react-i18next": "^17.0.8", "react-icons": "^5.6.0", "react-leaflet": "^5.0.0", "react-lottie-player": "^2.1.0", "react-markdown": "^10.1.0", "react-syntax-highlighter": "^16.1.1", "react-use": "^17.6.0", "sass": "^1.100.0", "screenfull": "^6.0.2", "sharp": "^0.34.5", "smpte-timecode": "^1.3.6", "sweetalert2": "^11.26.17", "sweetalert2-react-content": "^5.1.1", "tiny-invariant": "^1.3.3", "ts-morph": "^28.0.0", "type-fest": "^5.7.0", "typescript": "~6.0.3", "use-debounce": "^10.1.1", "use-trace-update": "^1.3.3", "vite": "7.3.5", "vitest": "^4.1.8", "yargs": "^18.0.0" }, "dependencies": { "@electron/remote": "^2.1.3", "@octokit/core": "7.0.6", "cue-parser": "^0.3.0", "electron-devtools-installer": "^4.0.0", "electron-store": "5.1.1", "electron-unhandled": "^5.0.0", "execa": "^9.6.1", "express": "^5.2.1", "express-async-handler": "^1.2.0", "file-type": "^22.0.1", "i18next": "^26.3.0", "i18next-fs-backend": "^2.6.6", "json5": "^2.2.3", "lodash.debounce": "^4.0.8", "mime-types": "^3.0.2", "mitt": "patch:mitt@npm%3A3.0.1#~/.yarn/patches/mitt-npm-3.0.1-ce290ffa77.patch", "morgan": "^1.10.1", "semver": "^7.8.1", "string-to-stream": "^3.0.1", "winston": "^3.19.0", "yargs-parser": "^22.0.0", "zod": "^4.4.3" }, "build": { "directories": { "buildResources": "build-resources" }, "files": [ "out/**/*" ], "asar": { "smartUnpack": false }, "appId": "no.mifi.losslesscut", "artifactName": "${productName}-${os}-${arch}.${ext}", "extraResources": [ { "from": "locales", "to": "locales" } ], "mac": { "hardenedRuntime": true, "notarize": true, "appId": "no.mifi.losslesscut-mac", "category": "public.app-category.productivity", "target": [ { "target": "mas", "arch": "universal" }, { "target": "dmg", "arch": [ "x64", "arm64" ] } ], "electronLanguages": [ "en" ], "extraResources": [ { "from": "ffmpeg/darwin-${arch}", "to": "." } ], "icon": "icon-build/app.icns", "fileAssociations": [ { "ext": [ "webm", "mkv", "flv", "vob", "ogv", "drc", "gif", "gifv", "mng", "avi", "mts", "m2ts", "ts", "mov", "qt", "wmv", "yuv", "rm", "rmvb", "asf", "amv", "mp4", "m4v", "mpg", "mp2", "mpeg", "mpe", "mpv", "m2v", "svi", "3gp", "3g2", "mxf", "roq", "nsv", "f4v", "f4p", "f4a", "f4b" ], "name": "Video", "description": "Video files", "role": "Viewer" }, { "ext": [ "aa", "aac", "aax", "act", "aiff", "alac", "amr", "ape", "au", "awb", "dct", "dss", "dvf", "flac", "gsm", "iklax", "ivs", "m4a", "m4b", "m4p", "mmf", "mp3", "mpc", "msv", "nmf", "nsf", "ogg", "oga", "mogg", "opus", "ra", "rf64", "sln", "tta", "voc", "vox", "wav", "wma", "wv", "8svx", "cda" ], "name": "Audio", "description": "Audio files", "role": "Viewer" } ] }, "mas": { "artifactName": "${productName}-${os}-${arch}-DONT-USE-THIS-FILE.${ext}", "hardenedRuntime": false, "notarize": false, "entitlements": "entitlements.mas.plist", "entitlementsInherit": "entitlements.mas.inherit.plist", "provisioningProfile": "LosslessCut_Mac_App_Store_provisioning_profile.provisionprofile", "binaries": [ "Contents/Resources/ffmpeg", "Contents/Resources/ffprobe" ] }, "win": { "target": [ { "arch": "x64", "target": "7z" }, { "arch": "x64", "target": "appx" }, { "arch": "arm64", "target": "7z" }, { "arch": "arm64", "target": "appx" } ], "extraResources": [ { "from": "ffmpeg/win32-${arch}/lib", "to": "." } ], "icon": "icon-build/app.ico", "fileAssociations": [ { "ext": [ "webm", "mkv", "flv", "vob", "ogv", "drc", "gif", "gifv", "mng", "avi", "mts", "m2ts", "ts", "mov", "qt", "wmv", "yuv", "rm", "rmvb", "asf", "amv", "mp4", "m4v", "mpg", "mp2", "mpeg", "mpe", "mpv", "m2v", "svi", "3gp", "3g2", "mxf", "roq", "nsv", "f4v", "f4p", "f4a", "f4b" ], "name": "Video", "description": "Video files", "role": "Viewer" }, { "ext": [ "aa", "aac", "aax", "act", "aiff", "alac", "amr", "ape", "au", "awb", "dct", "dss", "dvf", "flac", "gsm", "iklax", "ivs", "m4a", "m4b", "m4p", "mmf", "mp3", "mpc", "msv", "nmf", "nsf", "ogg", "oga", "mogg", "opus", "ra", "rf64", "sln", "tta", "voc", "vox", "wav", "wma", "wv", "8svx", "cda" ], "name": "Audio", "description": "Audio files", "role": "Viewer" } ] }, "appx": { "artifactName": "${productName}-${os}-${arch}-DONT-USE-THIS-FILE.${ext}", "applicationId": "LosslessCut", "identityName": "57275mifi.no.LosslessCut", "publisher": "CN=2C479316-22A8-4D63-BC38-F0FB9AB0B974", "publisherDisplayName": "mifi.no" }, "linux": { "executableName": "losslesscut", "extraResources": [ { "from": "ffmpeg/linux-${arch}/lib", "to": "." } ], "category": "AudioVideo", "icon": "icon-build/app-512.png", "target": [ { "arch": "x64", "target": "tar.bz2" }, { "arch": "x64", "target": "AppImage" }, { "arch": "x64", "target": "snap" }, { "arch": "arm64", "target": "tar.bz2" }, { "arch": "armv7l", "target": "tar.bz2" } ] }, "snap": { "base": "core22", "plugs": [ "default", "removable-media" ] } }, "resolutions": { "icon-gen/sharp": "^0.34.5" }, "packageManager": "yarn@4.11.0" }