diff --git a/Gemfile b/Gemfile index 4791ef1e..2ebe1a60 100644 --- a/Gemfile +++ b/Gemfile @@ -2,11 +2,10 @@ source "https://rubygems.org" gem "rails", "~> 7.0.1" +gem "sprockets-rails" gem "jsbundling-rails" gem "terser" -gem "sass-rails" - gem "non-stupid-digest-assets" gem "pg", :platforms => [:ruby, :mingw] diff --git a/Gemfile.lock b/Gemfile.lock index 939d7d78..fb87717e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -197,16 +197,6 @@ GEM zeitwerk (~> 2.5) raindrops (0.20.0) rake (13.0.6) - sass-rails (6.0.0) - sassc-rails (~> 2.1, >= 2.1.1) - sassc (2.4.0) - ffi (~> 1.9) - sassc-rails (2.1.2) - railties (>= 4.0.0) - sassc (>= 2.0) - sprockets (> 3.0) - sprockets-rails - tilt sitemap_generator (6.1.2) builder (~> 3.0) spoon (0.0.6) @@ -222,7 +212,6 @@ GEM terser (1.1.8) execjs (>= 0.3.0, < 3) thor (1.2.1) - tilt (2.0.10) timeout (0.2.0) tzinfo (2.0.4) concurrent-ruby (~> 1.0) @@ -268,8 +257,8 @@ DEPENDENCIES rails (~> 7.0.1) rails-controller-testing rails-i18n - sass-rails sitemap_generator + sprockets-rails terser unicorn unicorn-worker-killer diff --git a/app/assets/config/manifest.js b/app/assets/config/manifest.js index f7db183a..dceeab9b 100644 --- a/app/assets/config/manifest.js +++ b/app/assets/config/manifest.js @@ -1,7 +1,6 @@ // JS and CSS bundles // //= link application_classic.js -//= link application.css // //= link 404.html //= link 429.html diff --git a/app/assets/stylesheets/_variables.scss b/app/assets/stylesheets/_variables.scss deleted file mode 100644 index a3b1cf87..00000000 --- a/app/assets/stylesheets/_variables.scss +++ /dev/null @@ -1,5 +0,0 @@ -$c-dark: #222; -$c-highlight: #e87; - -$page-width: 900px; -$sidebar-width: 200px; diff --git a/app/assets/stylesheets/application-error.scss b/app/javascript/application-error.less similarity index 100% rename from app/assets/stylesheets/application-error.scss rename to app/javascript/application-error.less diff --git a/app/assets/stylesheets/application.scss b/app/javascript/application.less similarity index 96% rename from app/assets/stylesheets/application.scss rename to app/javascript/application.less index 83060ea4..b2abef80 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/javascript/application.less @@ -1,15 +1,21 @@ -@import 'cropperjs/dist/cropper'; -@import 'autocompleter/autocomplete'; -@import 'variables'; -@import 'components/*'; -@import "webtoolkit.clearfix"; +@import (inline) 'cropperjs/dist/cropper.css'; +@import (inline) 'autocompleter/autocomplete.css'; +@import 'stylesheets/variables'; +@import 'stylesheets/components/forum-post-form'; +@import 'stylesheets/components/image-crop-preview'; +@import 'stylesheets/components/image-crop'; +@import 'stylesheets/components/page-main'; +@import 'stylesheets/components/sidebar-menu'; +@import 'stylesheets/components/wiki-edit'; +@import 'stylesheets/components/wiki-form'; +@import 'stylesheets/webtoolkit.clearfix.css'; -@import "autocomplete"; -@import "filter_spam"; -@import "menu"; -@import "pool"; -@import "profiler"; -@import "related_tags"; +@import "stylesheets/autocomplete"; +@import "stylesheets/filter_spam.css"; +@import "stylesheets/menu.css"; +@import "stylesheets/pool.css"; +@import "stylesheets/profiler.css"; +@import "stylesheets/related_tags"; html { box-sizing: border-box; @@ -48,7 +54,7 @@ body { html.progress { cursor: progress !important; } body.dragging { cursor: pointer !important; } html.hourglass { cursor: wait !important; } -body.hide-cursor { cursor: image-url('blank.gif'), pointer !important; } +body.hide-cursor { cursor: url('blank.gif'), pointer !important; } body.n-resize { cursor: n-resize !important; } body.s-resize { cursor: s-resize !important; } body.e-resize { cursor: e-resize !important; } @@ -73,7 +79,7 @@ a:link { text-decoration: none; } -a.star { background: transparent image-url('blank.gif') no-repeat; } +a.star { background: transparent url('blank.gif') no-repeat; } .blacklisted-tags-disabled { color: #AAA !important; @@ -157,7 +163,7 @@ h1#static-index-header a { text-indent: -3000em; margin: 0; padding:75px 300px 75px 300px; - background: transparent image-url("logo.png") no-repeat scroll center center; + background: transparent url("logo.png") no-repeat scroll center center; } h2 { @@ -197,7 +203,7 @@ div#static-more div#title { #site-link { display: block; font-size: 0px; - background: transparent image-url("logo_small.png") no-repeat scroll top left; + background: transparent url("logo_small.png") no-repeat scroll top left; margin: 0 0 .5em 0; padding: 37px 242px 38px 242px; } @@ -1325,7 +1331,7 @@ ul#post-list-posts li { /* inline-block hack for IE: */ zoom: 1; - *display: inline; + //display: inline; } img.preview { @@ -1658,7 +1664,7 @@ img.service-icon#source { /* inline-block hack for IE: */ zoom: 1; - *display: inline; + //display: inline; } /* The borders cause odd overflows if the width: 100% inputs are shortened by @@ -1868,7 +1874,7 @@ body.not-dragging .frame-box-handle.se-resize { cursor: se-resize; } position: fixed; left: 0; top: 0; - background: image-url("login-background.png") repeat scroll center center; + background: url("login-background.png") repeat scroll center center; } #login-container { diff --git a/app/assets/stylesheets/autocomplete.scss b/app/javascript/stylesheets/autocomplete.less similarity index 56% rename from app/assets/stylesheets/autocomplete.scss rename to app/javascript/stylesheets/autocomplete.less index 71f467b1..ab2c941a 100644 --- a/app/assets/stylesheets/autocomplete.scss +++ b/app/javascript/stylesheets/autocomplete.less @@ -1,8 +1,8 @@ .autocomplete { - background: $c-dark; + background: @c-dark; > div:hover:not(.group), > div.selected { - background: $c-highlight; + background: @c-highlight; } } diff --git a/app/assets/stylesheets/components/forum-post-form.scss b/app/javascript/stylesheets/components/forum-post-form.less similarity index 93% rename from app/assets/stylesheets/components/forum-post-form.scss rename to app/javascript/stylesheets/components/forum-post-form.less index 3f7c72f2..5f08904c 100644 --- a/app/assets/stylesheets/components/forum-post-form.scss +++ b/app/javascript/stylesheets/components/forum-post-form.less @@ -3,7 +3,7 @@ flex-direction: column; margin: -2px 0; - width: $page-width; + width: @page-width; max-width: 100%; &__row { diff --git a/app/assets/stylesheets/components/image-crop-preview.scss b/app/javascript/stylesheets/components/image-crop-preview.less similarity index 100% rename from app/assets/stylesheets/components/image-crop-preview.scss rename to app/javascript/stylesheets/components/image-crop-preview.less diff --git a/app/assets/stylesheets/components/image-crop.scss b/app/javascript/stylesheets/components/image-crop.less similarity index 100% rename from app/assets/stylesheets/components/image-crop.scss rename to app/javascript/stylesheets/components/image-crop.less diff --git a/app/assets/stylesheets/components/page-main.scss b/app/javascript/stylesheets/components/page-main.less similarity index 100% rename from app/assets/stylesheets/components/page-main.scss rename to app/javascript/stylesheets/components/page-main.less diff --git a/app/assets/stylesheets/components/sidebar-menu.scss b/app/javascript/stylesheets/components/sidebar-menu.less similarity index 80% rename from app/assets/stylesheets/components/sidebar-menu.scss rename to app/javascript/stylesheets/components/sidebar-menu.less index 747d7442..b89e53fe 100644 --- a/app/assets/stylesheets/components/sidebar-menu.scss +++ b/app/javascript/stylesheets/components/sidebar-menu.less @@ -1,6 +1,6 @@ .sidebar-menu { flex: none; - width: $sidebar-width; + width: @sidebar-width; margin-right: 20px; list-style: none; diff --git a/app/assets/stylesheets/components/wiki-edit.scss b/app/javascript/stylesheets/components/wiki-edit.less similarity index 95% rename from app/assets/stylesheets/components/wiki-edit.scss rename to app/javascript/stylesheets/components/wiki-edit.less index dac79664..b35ea37c 100644 --- a/app/assets/stylesheets/components/wiki-edit.scss +++ b/app/javascript/stylesheets/components/wiki-edit.less @@ -18,7 +18,7 @@ } &--sidebar { - width: $sidebar-width; + width: @sidebar-width; // overrides existing sidebar class // FIXME: update sidebar to use up full width or something .sidebar.sidebar { diff --git a/app/assets/stylesheets/components/wiki-form.scss b/app/javascript/stylesheets/components/wiki-form.less similarity index 100% rename from app/assets/stylesheets/components/wiki-form.scss rename to app/javascript/stylesheets/components/wiki-form.less diff --git a/app/assets/stylesheets/filter_spam.css b/app/javascript/stylesheets/filter_spam.css similarity index 100% rename from app/assets/stylesheets/filter_spam.css rename to app/javascript/stylesheets/filter_spam.css diff --git a/app/assets/stylesheets/menu.css b/app/javascript/stylesheets/menu.css similarity index 100% rename from app/assets/stylesheets/menu.css rename to app/javascript/stylesheets/menu.css diff --git a/app/assets/stylesheets/pool.css b/app/javascript/stylesheets/pool.css similarity index 100% rename from app/assets/stylesheets/pool.css rename to app/javascript/stylesheets/pool.css diff --git a/app/assets/stylesheets/profiler.css b/app/javascript/stylesheets/profiler.css similarity index 100% rename from app/assets/stylesheets/profiler.css rename to app/javascript/stylesheets/profiler.css diff --git a/app/assets/stylesheets/related_tags.scss b/app/javascript/stylesheets/related_tags.less similarity index 100% rename from app/assets/stylesheets/related_tags.scss rename to app/javascript/stylesheets/related_tags.less diff --git a/app/javascript/stylesheets/variables.less b/app/javascript/stylesheets/variables.less new file mode 100644 index 00000000..ab63d7db --- /dev/null +++ b/app/javascript/stylesheets/variables.less @@ -0,0 +1,5 @@ +@c-dark: #222; +@c-highlight: #e87; + +@page-width: 900px; +@sidebar-width: 200px; diff --git a/lib/assets/stylesheets/webtoolkit.clearfix.css b/app/javascript/stylesheets/webtoolkit.clearfix.css similarity index 100% rename from lib/assets/stylesheets/webtoolkit.clearfix.css rename to app/javascript/stylesheets/webtoolkit.clearfix.css diff --git a/build.js b/build.js index ef454457..2a093817 100755 --- a/build.js +++ b/build.js @@ -4,39 +4,50 @@ import babel from '@babel/core' import { createHash } from 'crypto' import esbuild from 'esbuild' import coffeeScriptPlugin from 'esbuild-coffeescript' +import { lessLoader } from 'esbuild-plugin-less' import fsPromises from 'fs/promises' +import glob from 'glob' -const outfileName = 'application.jsout' -const outfileEsbuild = `tmp/${outfileName}` -const outfileBabel = `app/assets/builds/${outfileName}` +const outdir = 'app/assets/builds' const plugins = [ coffeeScriptPlugin({ bare: true, inlineMap: true }), + lessLoader({ + rootpath: '', + sourceMap: { + sourceMapFileInline: false + } + }), { name: 'babel', setup (build) { build.onEnd(async () => { + const esbuildFilepath = `${outdir}/application.js` + const inputSourceMap = JSON.parse(await fsPromises.readFile(`${esbuildFilepath}.map`)) const options = { + inputSourceMap, minified: true, presets: [ ['@babel/preset-env'] ], sourceMaps: true } - const outEsbuild = await fsPromises.readFile(outfileEsbuild) - const result = await babel.transformAsync(outEsbuild, options) + const esbuildOutput = await fsPromises.readFile(esbuildFilepath) + const result = await babel.transformAsync(esbuildOutput, options) + const filename = 'application.jsout' + const outfileBabel = `${outdir}/${filename}` result.map.sources = result.map.sources // CoffeeScript sourcemap and Esbuild sourcemap combined generates duplicated source paths - .map((path) => path.replace(/\.\.\/app\/javascript(\/.+)?\/app\/javascript\//, '../app/javascript/')) + .map((path) => path.replace(/\.\.\/\.\.\/javascript(\/.+)?\/app\/javascript\//, '../app/javascript/')) const resultMap = JSON.stringify(result.map) const resultMapHash = createHash('sha256').update(resultMap).digest('hex') return Promise.all([ // add hash so it matches sprocket output - fsPromises.writeFile(outfileBabel, `${result.code}\n//# sourceMappingURL=${outfileName}-${resultMapHash}.map`), + fsPromises.writeFile(outfileBabel, `${result.code}\n//# sourceMappingURL=${filename}-${resultMapHash}.map`), fsPromises.writeFile(`${outfileBabel}.map`, JSON.stringify(result.map)) ]) }) @@ -53,7 +64,7 @@ const plugins = [ } }) } - }, + } ] const args = process.argv.slice(2) @@ -61,15 +72,26 @@ const options = { watch: args.includes('--watch'), analyze: args.includes('--analyze') } +const watch = options.watch + ? { + onRebuild (error) { + if (error == null) { + console.log('Rebuild succeeded') + } + } + } + : false esbuild.build({ bundle: true, - entryPoints: ['app/javascript/application.coffee'], + entryPoints: glob.sync('app/javascript/*.*'), + external: ['*.gif', '*.png'], metafile: options.analyze, nodePaths: ['app/javascript'], - outfile: outfileEsbuild, + outdir, plugins, resolveExtensions: ['.coffee', '.js'], - sourcemap: 'inline', - watch: options.watch -}) + sourcemap: 'external', + watch +}).then(() => console.log('Build succeeded')) + .catch((e) => console.debug(e)) diff --git a/package.json b/package.json index 60dc8c5b..089e5d16 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,8 @@ "cropperjs": "^1.5.12", "esbuild": "^0.14.16", "esbuild-coffeescript": "^2.0.0", + "esbuild-plugin-less": "^1.1.6", + "glob": "^7.2.0", "jquery": "^3.6.0", "js-cookie": "^3.0.1", "mousetrap": "^1.6.5", diff --git a/yarn.lock b/yarn.lock index 4953dbd3..58b77cea 100644 --- a/yarn.lock +++ b/yarn.lock @@ -914,6 +914,11 @@ resolved "https://registry.yarnpkg.com/@rails/ujs/-/ujs-7.0.1.tgz#cb515d52c85be107908dd00822042f04e52cdea7" integrity sha512-ZUkgsbz5KFLfBwjIQ2D/kvyq+2w5BuNnkUJf3940VVJxov9GECu6n2BSXUTmyNAx+R6JQdibzXBuR7nz3crZYw== +"@types/less@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/less/-/less-3.0.3.tgz#f9451dbb9548d25391107d65d6401a0cfb15db92" + integrity sha512-1YXyYH83h6We1djyoUEqTlVyQtCfJAFXELSKW2ZRtjHD4hQ82CC4lvrv5D0l0FLcKBaiPbXyi3MpMsI9ZRgKsw== + ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -957,6 +962,19 @@ babel-plugin-polyfill-regenerator@^0.3.0: dependencies: "@babel/helper-define-polyfill-provider" "^0.3.1" +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + browserslist@^4.17.5, browserslist@^4.19.1: version "4.19.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" @@ -1007,6 +1025,11 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + convert-source-map@^1.7.0: version "1.8.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" @@ -1014,6 +1037,13 @@ convert-source-map@^1.7.0: dependencies: safe-buffer "~5.1.1" +copy-anything@^2.0.1: + version "2.0.6" + resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480" + integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== + dependencies: + is-what "^3.14.1" + core-js-compat@^3.20.2, core-js-compat@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.21.0.tgz#bcc86aa5a589cee358e7a7fa0a4979d5a76c3885" @@ -1027,6 +1057,13 @@ cropperjs@^1.5.12: resolved "https://registry.yarnpkg.com/cropperjs/-/cropperjs-1.5.12.tgz#d9c0db2bfb8c0d769d51739e8f916bbc44e10f50" integrity sha512-re7UdjE5UnwdrovyhNzZ6gathI4Rs3KGCBSc8HCIjUo5hO42CtzyblmWLj6QWVw7huHyDMfpKxhiO2II77nhDw== +debug@^3.2.6: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + debug@^4.1.0, debug@^4.1.1: version "4.3.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" @@ -1046,6 +1083,13 @@ electron-to-chromium@^1.4.17: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.64.tgz#8b1b5372f77ca208f2c498c6490da0e51176bd81" integrity sha512-8mec/99xgLUZCIZZq3wt61Tpxg55jnOSpxGYapE/1Ma9MpFEYYaz4QNYm0CM1rrnCo7i3FRHhbaWjeCLsveGjQ== +errno@^0.1.1: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + esbuild-android-arm64@0.14.16: version "0.14.16" resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.16.tgz#75dceceffd05fd8127e3590298bf057e04d20602" @@ -1124,6 +1168,14 @@ esbuild-openbsd-64@0.14.16: resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.16.tgz#cca41262619dfd6c2b7ea4f128b14ac02d79028d" integrity sha512-8SbZNAV902FmcGnc+j86HWY8PyTD1H7T39RsPXXS5IC1psi3yzFr2d8NoOxb6cQd5XUVHmHT1naJsbtEAyKIPA== +esbuild-plugin-less@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/esbuild-plugin-less/-/esbuild-plugin-less-1.1.6.tgz#747eec8d94682942a22e3b029c5d7d9067b79359" + integrity sha512-zDZPXNCnaYodobJaMV01/5olDgFv4JACrhCo84xsbJJgU+f+JI8FW0E2nqDbsbV3tWyqRW+qU3uCEYTulRjong== + dependencies: + "@types/less" "^3.0.3" + less "^4.1.1" + esbuild-sunos-64@0.14.16: version "0.14.16" resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.16.tgz#bb03853049171e6441a0fcc06f3ce04a693f86ba" @@ -1183,6 +1235,11 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -1202,11 +1259,28 @@ get-intrinsic@^1.0.2: has "^1.0.3" has-symbols "^1.0.1" +glob@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +graceful-fs@^4.1.2: + version "4.2.9" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" + integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -1224,6 +1298,31 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +iconv-lite@^0.4.4: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + is-core-module@^2.8.1: version "2.8.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" @@ -1231,6 +1330,11 @@ is-core-module@^2.8.1: dependencies: has "^1.0.3" +is-what@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" + integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== + "jquery@>=1.5.0 <4.0", jquery@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470" @@ -1263,11 +1367,48 @@ json5@^2.1.2: dependencies: minimist "^1.2.5" +less@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/less/-/less-4.1.2.tgz#6099ee584999750c2624b65f80145f8674e4b4b0" + integrity sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA== + dependencies: + copy-anything "^2.0.1" + parse-node-version "^1.0.1" + tslib "^2.3.0" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + make-dir "^2.1.0" + mime "^1.4.1" + needle "^2.5.2" + source-map "~0.6.0" + lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= +make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +mime@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +minimatch@^3.0.4: + version "3.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" + integrity sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw== + dependencies: + brace-expansion "^1.1.7" + minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" @@ -1283,6 +1424,20 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +needle@^2.5.2: + version "2.9.1" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.9.1.tgz#22d1dffbe3490c2b83e301f7709b6736cd8f2684" + integrity sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ== + dependencies: + debug "^3.2.6" + iconv-lite "^0.4.4" + sax "^1.2.4" + node-releases@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" @@ -1303,6 +1458,23 @@ object.assign@^4.1.0: has-symbols "^1.0.1" object-keys "^1.1.1" +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +parse-node-version@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" @@ -1313,6 +1485,16 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + regenerate-unicode-properties@^10.0.1: version "10.0.1" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" @@ -1375,11 +1557,26 @@ safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + semver@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== +semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" @@ -1390,6 +1587,11 @@ source-map@^0.5.0: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= +source-map@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + sourcemap-codec@1.4.8: version "1.4.8" resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" @@ -1419,6 +1621,11 @@ to-fast-properties@^2.0.0: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= +tslib@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" + integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== + unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" @@ -1441,3 +1648,8 @@ unicode-property-aliases-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=