From 028ce21c4c793264a541e24a1819a947b8bb5447 Mon Sep 17 00:00:00 2001 From: Stanislav Ulegin Date: Wed, 4 Mar 2026 18:06:13 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=9F=D0=B5=D1=80=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D1=81=D1=82=D0=B8=20=D0=BF=D0=B0=D1=82=D1=87=20videojs=20?= =?UTF-8?q?=D0=B2=20=D0=B1=D0=B8=D0=B1=D0=BB=D0=B8=D0=BE=D1=82=D0=B5=D0=BA?= =?UTF-8?q?=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/video-player/package.json | 6 ++- .../scripts/apply-videojs-patch.mjs | 45 +++++++++++++++++++ 2 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 packages/video-player/scripts/apply-videojs-patch.mjs diff --git a/packages/video-player/package.json b/packages/video-player/package.json index dc5364c..bb7d4e4 100644 --- a/packages/video-player/package.json +++ b/packages/video-player/package.json @@ -1,6 +1,6 @@ { "name": "@hublib-web/video-player", - "version": "0.1.0", + "version": "0.1.1", "description": "Cross-framework video player package for React and Angular", "license": "MIT", "type": "module", @@ -10,7 +10,8 @@ "sideEffects": true, "files": [ "dist", - "README.md" + "README.md", + "scripts" ], "typesVersions": { "*": { @@ -48,6 +49,7 @@ } }, "scripts": { + "postinstall": "node ./scripts/apply-videojs-patch.mjs", "build": "yarn clean && node ./scripts/build.mjs", "clean": "rm -rf dist storybook-static", "typecheck": "tsc -p ./tsconfig.json --noEmit", diff --git a/packages/video-player/scripts/apply-videojs-patch.mjs b/packages/video-player/scripts/apply-videojs-patch.mjs new file mode 100644 index 0000000..ca6d3d9 --- /dev/null +++ b/packages/video-player/scripts/apply-videojs-patch.mjs @@ -0,0 +1,45 @@ +import { readFileSync, writeFileSync } from "node:fs"; +import { dirname, join } from "node:path"; +import { createRequire } from "node:module"; + +const require = createRequire(import.meta.url); + +const originalSnippet = ` const originalAbort = request.abort; + request.abort = function () { + request.aborted = true; + return originalAbort.apply(request, arguments); + };`; + +const patchedSnippet = ` // const originalAbort = request.abort; + // request.abort = function () { + // request.aborted = true; + // return originalAbort.apply(request, arguments); + // };`; + +function run() { + const packageJsonPath = require.resolve("video.js/package.json"); + const videoEsPath = join(dirname(packageJsonPath), "dist", "video.es.js"); + const source = readFileSync(videoEsPath, "utf8"); + + if (source.includes(patchedSnippet)) { + console.log("[video-player] video.js patch already applied"); + return; + } + + if (!source.includes(originalSnippet)) { + throw new Error( + "[video-player] Cannot apply video.js patch: target snippet not found. Expected video.js 8.23.4 source." + ); + } + + const patched = source.replace(originalSnippet, patchedSnippet); + writeFileSync(videoEsPath, patched, "utf8"); + console.log("[video-player] Applied video.js patch"); +} + +try { + run(); +} catch (error) { + console.error(error instanceof Error ? error.message : String(error)); + process.exit(1); +}