From 90faa618babbf4350b13d1690a70ac733b6e1a52 Mon Sep 17 00:00:00 2001 From: Koen Klaren Date: Sun, 20 Nov 2022 17:36:56 +0100 Subject: [PATCH 1/6] Use 'prepack' script instead of the deprecated 'prepublish' I _think_ this is the desired behavior, since in my opinion it's weird to build a bunch of C code when running `npm install` with the expectation of just installing the node_modules. The command will now only run before `npm pack` and `npm publish`. See https://docs.npmjs.com/cli/v9/using-npm/scripts#life-cycle-scripts --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b0140655..e31d9622 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "dist/" ], "scripts": { - "prepublish": "make -j4 dist", + "prepack": "make -j4 dist", "build": "webpack", "lint": "eslint src/js", "test": "make tests && npx static build/tests", From 0a20233ef90c4cae9920e847868baf8ffe324db6 Mon Sep 17 00:00:00 2001 From: Koen Klaren Date: Sun, 20 Nov 2022 17:37:39 +0100 Subject: [PATCH 2/6] Automatically update package-lock.json --- package-lock.json | 52 +++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/package-lock.json b/package-lock.json index 29569211..6f4981fa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ogv", - "version": "1.8.8", + "version": "1.8.9", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "ogv", - "version": "1.8.8", + "version": "1.8.9", "license": "MIT", "dependencies": { "@babel/runtime": "^7.16.7" @@ -1928,9 +1928,9 @@ } }, "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -3667,6 +3667,18 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/espree/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/espree/node_modules/eslint-visitor-keys": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", @@ -8204,18 +8216,6 @@ "node": ">=10.13.0" } }, - "node_modules/webpack/node_modules/acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/webpack/node_modules/schema-utils": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", @@ -9907,9 +9907,9 @@ } }, "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", "dev": true }, "acorn-import-assertions": { @@ -11283,6 +11283,12 @@ "eslint-visitor-keys": "^1.3.0" }, "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, "eslint-visitor-keys": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", @@ -14552,12 +14558,6 @@ "webpack-sources": "^3.2.2" }, "dependencies": { - "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", - "dev": true - }, "schema-utils": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", From a9b10559b95fa4067ba8c5ef79087ba44d79bc57 Mon Sep 17 00:00:00 2001 From: Koen Klaren Date: Sun, 20 Nov 2022 17:39:42 +0100 Subject: [PATCH 3/6] Update caniuse-lite See https://github.com/browserslist/update-db#why-you-need-to-call-it-regularly --- package-lock.json | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6f4981fa..c4ba5110 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2557,14 +2557,20 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001298", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001298.tgz", - "integrity": "sha512-AcKqikjMLlvghZL/vfTHorlQsLDhGRalYf1+GmWCf5SCMziSGjRYQW/JEksj14NaYHIR6KIhrFAy0HV5C25UzQ==", + "version": "1.0.30001431", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz", + "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] }, "node_modules/chalk": { "version": "2.4.2", @@ -10404,9 +10410,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001298", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001298.tgz", - "integrity": "sha512-AcKqikjMLlvghZL/vfTHorlQsLDhGRalYf1+GmWCf5SCMziSGjRYQW/JEksj14NaYHIR6KIhrFAy0HV5C25UzQ==", + "version": "1.0.30001431", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz", + "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==", "dev": true }, "chalk": { From 7f7c766baa0f4e00ce40e78975624371b1e82438 Mon Sep 17 00:00:00 2001 From: Koen Klaren Date: Sun, 20 Nov 2022 18:05:01 +0100 Subject: [PATCH 4/6] Specify webpack mode on a per-script basis --- package.json | 6 +++--- webpack.config.js | 6 ------ 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index e31d9622..fc908309 100644 --- a/package.json +++ b/package.json @@ -11,11 +11,11 @@ ], "scripts": { "prepack": "make -j4 dist", - "build": "webpack", + "build": "webpack --mode=production", "lint": "eslint src/js", "test": "make tests && npx static build/tests", - "demo": "webpack serve --open-page=build/demo", - "start": "webpack serve" + "demo": "webpack serve --mode=development --open-page=build/demo", + "start": "webpack serve --mode=development" }, "repository": { "type": "git", diff --git a/webpack.config.js b/webpack.config.js index 0e2c1536..3d11c9e1 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -94,7 +94,6 @@ module.exports = [ { // Main entry point! - ES Module entry: './src/js/ogv.js', - mode: 'production', output: { path: path.resolve(__dirname, BUILD_DIR), publicPath: publicPath(), @@ -114,7 +113,6 @@ module.exports = [ { // Main entry point! - ES5 entry: './src/js/ogv.js', - mode: 'production', output: { path: path.resolve(__dirname, BUILD_DIR), publicPath: publicPath(), @@ -134,7 +132,6 @@ module.exports = [ { // Alt limited entry point for compat testing before loading entry: './src/js/ogv-support.js', - mode: 'production', output: { path: path.resolve(__dirname, BUILD_DIR), publicPath: publicPath(), @@ -151,7 +148,6 @@ module.exports = [ { // Alt limited entry point for just exposting the version marker string entry: './src/js/ogv-version.js', - mode: 'production', output: { path: path.resolve(__dirname, BUILD_DIR), publicPath: publicPath(), @@ -168,7 +164,6 @@ module.exports = [ }, { entry: './src/js/workers/ogv-worker-audio.js', - mode: 'production', output: { path: path.resolve(__dirname, BUILD_DIR), publicPath: publicPath(), @@ -185,7 +180,6 @@ module.exports = [ }, { entry: './src/js/workers/ogv-worker-video.js', - mode: 'production', output: { path: path.resolve(__dirname, BUILD_DIR), publicPath: publicPath(), From 96b8d1fd7f660135684b291250900c92cb529425 Mon Sep 17 00:00:00 2001 From: Koen Klaren Date: Sun, 20 Nov 2022 18:29:19 +0100 Subject: [PATCH 5/6] Update main webpack entries to expose exports directly on `window` via UMD Previously, the compiled ogv-support.js and ogv-version.js files would not actually export anything in AMD/CommonJS and only expose directly on the global object. --- webpack.config.js | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/webpack.config.js b/webpack.config.js index 3d11c9e1..f28b6454 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -98,8 +98,10 @@ module.exports = [ path: path.resolve(__dirname, BUILD_DIR), publicPath: publicPath(), filename: 'ogv-es2017.js', - libraryTarget: 'umd', - library: 'ogvjs' + library: { + // `library.name` is omitted, since we want exports to be assigned directly to the root object + type: 'umd' + } }, plugins: plugins, module: { @@ -117,8 +119,10 @@ module.exports = [ path: path.resolve(__dirname, BUILD_DIR), publicPath: publicPath(), filename: 'ogv.js', - libraryTarget: 'umd', - library: 'ogvjs' + library: { + // `library.name` is omitted, since we want exports to be assigned directly to the root object + type: 'umd' + } }, plugins: plugins, module: { @@ -135,7 +139,11 @@ module.exports = [ output: { path: path.resolve(__dirname, BUILD_DIR), publicPath: publicPath(), - filename: 'ogv-support.js' + filename: 'ogv-support.js', + library: { + // `library.name` is omitted, since we want exports to be assigned directly to the root object + type: 'umd' + } }, plugins: plugins, module: { @@ -151,7 +159,11 @@ module.exports = [ output: { path: path.resolve(__dirname, BUILD_DIR), publicPath: publicPath(), - filename: 'ogv-version.js' + filename: 'ogv-version.js', + library: { + // `library.name` is omitted, since we want exports to be assigned directly to the root object + type: 'umd' + } }, plugins: plugins, module: { From a2c5237f2639992354a9caf0b0dd32ac1625ef65 Mon Sep 17 00:00:00 2001 From: Koen Klaren Date: Sun, 20 Nov 2022 18:31:06 +0100 Subject: [PATCH 6/6] Remove manual assignment of exports on `window` object This is now automatically handled by UMD when the scripts are loaded outside an AMD/CommonJS module environment. --- src/js/ogv-support.js | 6 ------ src/js/ogv-version.js | 5 ----- src/js/ogv.js | 11 ----------- 3 files changed, 22 deletions(-) diff --git a/src/js/ogv-support.js b/src/js/ogv-support.js index 32c26aca..8652259d 100644 --- a/src/js/ogv-support.js +++ b/src/js/ogv-support.js @@ -7,12 +7,6 @@ import OGVCompat from './OGVCompat.js'; const OGVVersion = __OGV_FULL_VERSION__; -if (typeof window === 'object') { - // 1.0-compat globals - window.OGVCompat = OGVCompat; - window.OGVVersion = OGVVersion; -} - export { OGVCompat, OGVVersion diff --git a/src/js/ogv-version.js b/src/js/ogv-version.js index 92c029c2..aa931d30 100644 --- a/src/js/ogv-version.js +++ b/src/js/ogv-version.js @@ -6,9 +6,4 @@ const OGVVersion = __OGV_FULL_VERSION__; -if (typeof window === 'object') { - // 1.0-compat globals - window.OGVVersion = OGVVersion; -} - export {OGVVersion}; diff --git a/src/js/ogv.js b/src/js/ogv.js index 19c242b4..3a9a05de 100644 --- a/src/js/ogv.js +++ b/src/js/ogv.js @@ -12,17 +12,6 @@ import OGVPlayer from './OGVPlayer.js'; import OGVTimeRanges from './OGVTimeRanges.js'; const OGVVersion = __OGV_FULL_VERSION__; -// Version 1.0's web-facing and test-facing interfaces -if (typeof window === 'object') { - window.OGVCompat = OGVCompat; - window.OGVLoader = OGVLoader; - window.OGVMediaError = OGVMediaError; // exposed for testing, for now - window.OGVMediaType = OGVMediaType; - window.OGVTimeRanges = OGVTimeRanges; // exposed for testing, for now - window.OGVPlayer = OGVPlayer; - window.OGVVersion = OGVVersion; -} - export { OGVCompat, OGVLoader,