From 8db120333829a3bd96d70ce61a45fafa80ca3c3b Mon Sep 17 00:00:00 2001 From: Johannes Raggam Date: Wed, 7 Dec 2022 12:35:10 +0100 Subject: [PATCH 1/4] Reformat Modernizr options. --- .modernizrrc.js | 327 ++++++++++++++++++++++++------------------------ 1 file changed, 162 insertions(+), 165 deletions(-) diff --git a/.modernizrrc.js b/.modernizrrc.js index c6b4331bd..626b43ec8 100644 --- a/.modernizrrc.js +++ b/.modernizrrc.js @@ -1,167 +1,164 @@ module.exports = { - "classPrefix": "", - "options": [ - "addTest", - "atRule", - "domPrefixes", - "hasEvent", - "html5shiv", - "html5printshiv", - "load", - "mq", - "prefixed", - "prefixes", - "prefixedCSS", - "setClasses", - "testAllProps", - "testProp", - "testStyles" - ], - "feature-detects": [ - "a/download", - "applicationcache", - "blob", - "canvas", - "canvas/blending", - "canvas/todataurl", - "canvas/winding", - "canvastext", - "contenteditable", - "contextmenu", - "cookies", - "cors", - "custom-elements", - "css/all", - "css/animations", - "css/appearance", - "css/backdropfilter", - "css/backgroundblendmode", - "css/backgroundcliptext", - "css/backgroundposition-shorthand", - "css/backgroundposition-xy", - "css/backgroundrepeat", - "css/backgroundsize", - "css/backgroundsizecover", - "css/borderimage", - "css/borderradius", - "css/boxshadow", - "css/boxsizing", - "css/calc", - "css/checked", - "css/chunit", - "css/columns", - "css/cssgrid", - "css/cubicbezierrange", - "css/displayrunin", - "css/displaytable", - "css/ellipsis", - "css/escape", - "css/exunit", - "css/filters", - "css/flexbox", - "css/flexboxlegacy", - "css/flexboxtweener", - "css/flexwrap", - "css/fontface", - "css/generatedcontent", - "css/gradients", - "css/hairline", - "css/hsla", - "css/invalid", - "css/lastchild", - "css/mask", - "css/mediaqueries", - "css/multiplebgs", - "css/nthchild", - "css/objectfit", - "css/opacity", - "css/overflow-scrolling", - "css/pointerevents", - "css/positionsticky", - "css/pseudoanimations", - "css/pseudotransitions", - "css/reflections", - "css/regions", - "css/remunit", - "css/resize", - "css/rgba", - "css/scrollbars", - "css/scrollsnappoints", - "css/shapes", - "css/siblinggeneral", - "css/subpixelfont", - "css/supports", - "css/target", - "css/textalignlast", - "css/textshadow", - "css/transforms", - "css/transformslevel2", - "css/transforms3d", - "css/transformstylepreserve3d", - "css/transitions", - "css/userselect", - "css/valid", - "css/vhunit", - "css/vmaxunit", - "css/vminunit", - "css/vwunit", - "css/will-change", - "css/wrapflow", - "dom/classlist", - "dom/createElement-attrs", - "dom/dataset", - "dom/documentfragment", - "dom/hidden", - "dom/microdata", - "dom/mutationObserver", - "dom/passiveeventlisteners", - "event/deviceorientation-motion", - "event/oninput", - "eventlistener", - "exif-orientation", - "forms/capture", - "forms/fileinput", - "forms/fileinputdirectory", - "forms/formattribute", - "forms/placeholder", - "forms/requestautocomplete", - "forms/validation", - "inputtypes", - "fullscreen-api", - "hashchange", - "hiddenscroll", - "history", - "htmlimports", - "iframe/sandbox", - "iframe/seamless", - "iframe/srcdoc", - "json", - "mediaquery/hovermq", - "mediaquery/pointermq", - "notification", - "pagevisibility-api", - "performance", - "postmessage", - "proximity", - "queryselector", - "requestanimationframe", - "storage/localstorage", - "storage/sessionstorage", - "storage/websqldatabase", - "touchevents", - "unicode", - "unicode-range", - "url/bloburls", - "url/data-uri", - "url/parser", - "url/urlsearchparams", - "userdata", - "vibration", - "video", - "video/autoplay", - "video/crossorigin", - "video/loop", - "video/preload", - "xdomainrequest" - ] + "classPrefix": "", + "options": [ + "addTest", + "atRule", + "domPrefixes", + "hasEvent", + "html5shiv", + "html5printshiv", + "load", + "mq", + "prefixed", + "prefixes", + "prefixedCSS", + "setClasses", + ], + "feature-detects": [ + "a/download", + "applicationcache", + "blob", + "canvas", + "canvas/blending", + "canvas/todataurl", + "canvas/winding", + "canvastext", + "contenteditable", + "contextmenu", + "cookies", + "cors", + "custom-elements", + "css/all", + "css/animations", + "css/appearance", + "css/backdropfilter", + "css/backgroundblendmode", + "css/backgroundcliptext", + "css/backgroundposition-shorthand", + "css/backgroundposition-xy", + "css/backgroundrepeat", + "css/backgroundsize", + "css/backgroundsizecover", + "css/borderimage", + "css/borderradius", + "css/boxshadow", + "css/boxsizing", + "css/calc", + "css/checked", + "css/chunit", + "css/columns", + "css/cssgrid", + "css/cubicbezierrange", + "css/displayrunin", + "css/displaytable", + "css/ellipsis", + "css/escape", + "css/exunit", + "css/filters", + "css/flexbox", + "css/flexboxlegacy", + "css/flexboxtweener", + "css/flexwrap", + "css/fontface", + "css/generatedcontent", + "css/gradients", + "css/hairline", + "css/hsla", + "css/invalid", + "css/lastchild", + "css/mask", + "css/mediaqueries", + "css/multiplebgs", + "css/nthchild", + "css/objectfit", + "css/opacity", + "css/overflow-scrolling", + "css/pointerevents", + "css/positionsticky", + "css/pseudoanimations", + "css/pseudotransitions", + "css/reflections", + "css/regions", + "css/remunit", + "css/resize", + "css/rgba", + "css/scrollbars", + "css/scrollsnappoints", + "css/shapes", + "css/siblinggeneral", + "css/subpixelfont", + "css/supports", + "css/target", + "css/textalignlast", + "css/textshadow", + "css/transforms", + "css/transformslevel2", + "css/transforms3d", + "css/transformstylepreserve3d", + "css/transitions", + "css/userselect", + "css/valid", + "css/vhunit", + "css/vmaxunit", + "css/vminunit", + "css/vwunit", + "css/will-change", + "css/wrapflow", + "dom/classlist", + "dom/createElement-attrs", + "dom/dataset", + "dom/documentfragment", + "dom/hidden", + "dom/microdata", + "dom/mutationObserver", + "dom/passiveeventlisteners", + "event/deviceorientation-motion", + "event/oninput", + "eventlistener", + "exif-orientation", + "forms/capture", + "forms/fileinput", + "forms/fileinputdirectory", + "forms/formattribute", + "forms/placeholder", + "forms/requestautocomplete", + "forms/validation", + "inputtypes", + "fullscreen-api", + "hashchange", + "hiddenscroll", + "history", + "htmlimports", + "iframe/sandbox", + "iframe/seamless", + "iframe/srcdoc", + "json", + "mediaquery/hovermq", + "mediaquery/pointermq", + "notification", + "pagevisibility-api", + "performance", + "postmessage", + "proximity", + "queryselector", + "requestanimationframe", + "storage/localstorage", + "storage/sessionstorage", + "storage/websqldatabase", + "touchevents", + "unicode", + "unicode-range", + "url/bloburls", + "url/data-uri", + "url/parser", + "url/urlsearchparams", + "userdata", + "vibration", + "video", + "video/autoplay", + "video/crossorigin", + "video/loop", + "video/preload", + "xdomainrequest", + ], }; From e22f5ccdbcd2f7d9f48fb81db3bee312cd93adff Mon Sep 17 00:00:00 2001 From: Johannes Raggam Date: Wed, 7 Dec 2022 13:36:42 +0100 Subject: [PATCH 2/4] fix(Build): Modernizr - add options to add js/no-js classes. --- .modernizrrc.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.modernizrrc.js b/.modernizrrc.js index 626b43ec8..b4f45aa76 100644 --- a/.modernizrrc.js +++ b/.modernizrrc.js @@ -1,5 +1,7 @@ module.exports = { "classPrefix": "", + "enableClasses": true, + "enableJSClass": true, "options": [ "addTest", "atRule", From 4d1875cd562ef168d8ecaaaf524c7c66c6d38b72 Mon Sep 17 00:00:00 2001 From: Johannes Raggam Date: Wed, 7 Dec 2022 13:16:41 +0100 Subject: [PATCH 3/4] maint(Build): Use val-loader instead of the outdated webpack-modernizr-loader for Modernizr. --- package.json | 3 ++- src/modernizr.js | 14 ++++++++++++++ src/patterns.js | 2 +- webpack/webpack.config.js | 13 ++++++++----- 4 files changed, 25 insertions(+), 7 deletions(-) create mode 100644 src/modernizr.js diff --git a/package.json b/package.json index 7569237b1..d7ea2d0a9 100644 --- a/package.json +++ b/package.json @@ -44,8 +44,9 @@ "@patternslib/pat-tiptap": "^4.7.2", "@patternslib/pat-upload": "^3.1.1", "copy-webpack-plugin": "^11.0.0", + "modernizr": "^3.12.0", "pegjs": "0.11.0-master.b7b87ea", - "webpack-modernizr-loader": "^5.0.0" + "val-loader": "^5.0.1" }, "resolutions": { "jquery": "3.6.2" diff --git a/src/modernizr.js b/src/modernizr.js new file mode 100644 index 000000000..00e3ae7fc --- /dev/null +++ b/src/modernizr.js @@ -0,0 +1,14 @@ +// From: https://github.com/webpack-contrib/val-loader#modernizr +const modernizr = require("modernizr"); + +module.exports = function (options) { + return new Promise(function (resolve) { + // It is impossible to throw an error because modernizr causes the process.exit(1) + modernizr.build(options, function (output) { + resolve({ + cacheable: true, + code: `var modernizr; var hadGlobal = 'Modernizr' in window; var oldGlobal = window.Modernizr; ${output} modernizr = window.Modernizr; if (hadGlobal) { window.Modernizr = oldGlobal; } else { delete window.Modernizr; } export default modernizr;`, + }); + }); + }); +}; diff --git a/src/patterns.js b/src/patterns.js index 32261af9a..162ae377b 100644 --- a/src/patterns.js +++ b/src/patterns.js @@ -79,7 +79,7 @@ import "@patternslib/pat-upload"; // You might want to disable it for your project by setting: // window.__patternslib_disable_modernizr = true; if (!window.__patternslib_disable_modernizr) { - import("modernizr"); + import("./modernizr"); } registry.init(); diff --git a/webpack/webpack.config.js b/webpack/webpack.config.js index aecf95495..b75b5e038 100644 --- a/webpack/webpack.config.js +++ b/webpack/webpack.config.js @@ -5,6 +5,7 @@ const mf_config = require("@patternslib/dev/webpack/webpack.mf"); const package_json = require("../package.json"); const path = require("path"); const webpack_config = require("@patternslib/dev/webpack/webpack.config").config; +const modernizr_config = require("../.modernizrrc.js"); module.exports = () => { let config = { @@ -22,12 +23,14 @@ module.exports = () => { // Modernizr config.module.rules.push({ - test: /\.modernizrrc\.js$/, - loader: "webpack-modernizr-loader", + test: path.resolve(__dirname, "../src/modernizr.js"), + use: [ + { + loader: "val-loader", + options: modernizr_config, + }, + ], }); - config.resolve.alias = { - modernizr$: path.resolve(__dirname, "../.modernizrrc.js"), - }; // Module federation config.plugins.push( From 543872ae4e2236ad4fe483c3ce69a836cf1073b2 Mon Sep 17 00:00:00 2001 From: Johannes Raggam Date: Wed, 7 Dec 2022 13:16:50 +0100 Subject: [PATCH 4/4] yarn install. --- yarn.lock | 41 ++++++----------------------------------- 1 file changed, 6 insertions(+), 35 deletions(-) diff --git a/yarn.lock b/yarn.lock index 0075feb46..46a75b861 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2899,11 +2899,6 @@ before-after-hook@^2.2.0: resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" @@ -3989,11 +3984,6 @@ emoji-regex@^9.2.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -6170,13 +6160,6 @@ json-stringify-safe@^5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - json5@^2.2.1: version "2.2.2" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.2.tgz#64471c5bdcc564c18f7c1d4df2e2297f2457c5ab" @@ -6285,15 +6268,6 @@ loader-runner@^4.2.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== -loader-utils@^1.0.0: - version "1.4.2" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" - integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -6629,7 +6603,7 @@ mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -modernizr@^3.7.1: +modernizr@^3.12.0: version "3.12.0" resolved "https://registry.yarnpkg.com/modernizr/-/modernizr-3.12.0.tgz#38b1aa96eea48d90fe433f2803a8246acd2fefa9" integrity sha512-i5f5xfnxMOb3cePoBpwk4bWjVAyIB3hgm7QrDvZx/R7zUUS8PO9zlyQF7vJKn8kCVxEvL0nRWeZ0PPqVbY31sw== @@ -8935,6 +8909,11 @@ v8-to-istanbul@^9.0.1: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" +val-loader@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/val-loader/-/val-loader-5.0.1.tgz#ce29d3bbe68381f42bef0d693d0f18202fe5efe8" + integrity sha512-r4h7b9AuvGQU1vyC4rAMoJNMG8fJUE6CYAqlM265tOdnZrZC6axVawBg2GlQ9+6osPCJjw4/vyADiSBAFlhzlg== + validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -9100,14 +9079,6 @@ webpack-merge@^5.7.3: clone-deep "^4.0.1" wildcard "^2.0.0" -webpack-modernizr-loader@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webpack-modernizr-loader/-/webpack-modernizr-loader-5.0.0.tgz#6a7c07d3fac4b6e02964ee3be61819cf9ab811cc" - integrity sha512-D+FIZ03QtWNV536+cGp046qbJIcxPYEF0kGqP6YrM8Y1g6PqzXGdx8VYnK7VkfRuBdtqLL5rCerWYk1ncOSjJQ== - dependencies: - loader-utils "^1.0.0" - modernizr "^3.7.1" - webpack-sources@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"