From 03b4843c1d9275695ba9f7e0748ac3fc259e2c12 Mon Sep 17 00:00:00 2001 From: Vanilagy <1696106+Vanilagy@users.noreply.github.com> Date: Sat, 26 Jul 2025 00:50:47 +0200 Subject: [PATCH] Fix incorrectly fixed .js imports --- package-lock.json | 4 ++-- package.json | 4 ++-- scripts/add-import-extensions.ts | 37 ++++++++++++++++++++++++++++++++ scripts/check-docblocks.ts | 2 +- 4 files changed, 42 insertions(+), 5 deletions(-) create mode 100644 scripts/add-import-extensions.ts diff --git a/package-lock.json b/package-lock.json index 837e853..11658e6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "mediabunny", - "version": "1.3.2", + "version": "1.3.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "mediabunny", - "version": "1.3.2", + "version": "1.3.3", "license": "MPL-2.0", "dependencies": { "@types/dom-mediacapture-transform": "^0.1.11", diff --git a/package.json b/package.json index 331a80d..0f30764 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "mediabunny", "author": "Vanilagy", - "version": "1.3.2", + "version": "1.3.3", "description": "Pure TypeScript media toolkit for reading, writing, and converting media files, directly in the browser.", "type": "module", "main": "./dist/bundles/mediabunny.cjs", @@ -31,7 +31,7 @@ "docs:preview": "vitepress preview docs", "dev": "vite", "examples:build": "vite build", - "fix-build-import-paths": "find dist -name \"*.js\" -type f -exec sed -i '' \"s/ from '\\([^']*\\)';/ from '\\1.js';/g\" {} \\;", + "fix-build-import-paths": "tsx scripts/add-import-extensions.ts", "append-namespace": "echo 'export as namespace Mediabunny;' >> dist/mediabunny.d.ts" }, "license": "MPL-2.0", diff --git a/scripts/add-import-extensions.ts b/scripts/add-import-extensions.ts new file mode 100644 index 0000000..ee07742 --- /dev/null +++ b/scripts/add-import-extensions.ts @@ -0,0 +1,37 @@ +import * as fs from 'fs'; +import * as path from 'path'; + +// .js extensions are technically required in compliant ECMAScript, and Webpack needs them, so we add them here. + +const walkDir = (dir: string) => { + const files: string[] = []; + const items = fs.readdirSync(dir); + + for (const item of items) { + const fullPath = path.join(dir, item); + const stat = fs.statSync(fullPath); + + if (stat.isDirectory()) { + files.push(...walkDir(fullPath)); + } else if (item.endsWith('.js')) { + files.push(fullPath); + } + } + + return files; +}; + +const fixFile = (filePath: string) => { + const content = fs.readFileSync(filePath, 'utf8'); + const fixed = content.replace( + /(\s+from\s+['"])([^'"]*)(['"])/g, + '$1$2.js$3', + ); + + if (content !== fixed) { + fs.writeFileSync(filePath, fixed); + } +}; + +const jsFiles = walkDir('dist'); +jsFiles.forEach(fixFile); diff --git a/scripts/check-docblocks.ts b/scripts/check-docblocks.ts index 87e7732..9a183e4 100644 --- a/scripts/check-docblocks.ts +++ b/scripts/check-docblocks.ts @@ -1,5 +1,5 @@ import ts from 'typescript'; -import * as fs from 'node:fs'; +import * as fs from 'fs'; const checkDocblocks = (filePath: string) => { const program = ts.createProgram([filePath], {});