Pārlūkot izejas kodu

Update build script

simov 3 gadi atpakaļ
vecāks
revīzija
67ce384acf

+ 1 - 0
.gitignore

@@ -2,3 +2,4 @@ npm-debug.log
 coverage/
 node_modules/
 package-lock.json
+*.zip

+ 42 - 0
build/README.md

@@ -0,0 +1,42 @@
+
+# Build
+
+Build the `themes` and `vendor` folders, and create the `markdown-viewer.zip` package:
+
+```bash
+# pick a release tag
+git clone --depth 1 --branch 5.0 https://github.com/simov/markdown-viewer.git
+cd markdown-viewer/
+# build
+sh build/package.sh
+```
+
+## Build Dependencies
+
+- Node.js >= 14
+- git
+- curl
+- zip
+
+## Markdown Viewer Dependencies
+
+| Module              | Version
+| :-                  | :-
+| @material/button    | ^0.37.1
+| @material/ripple    | ^0.37.1
+| @material/switch    | ^0.36.1
+| @material/tabs      | ^0.37.1
+| @material/textfield | ^0.37.1
+| emojione            |  2.2.7
+| marked              |  1.2.7
+| mathjax             |  3.2.2
+| mermaid             |  9.1.6
+| mithril             |  1.1.6
+| prismjs             |  1.22.0
+| remark              | ^13.0.0
+| remark-breaks       | ^2.0.1
+| remark-footnotes    | ^3.0.0
+| remark-frontmatter  | ^3.0.0
+| remark-gfm          | ^1.0.0
+| remark-html         | ^13.0.1
+| remark-slug         | ^6.0.0

+ 6 - 0
build/marked/build.sh

@@ -0,0 +1,6 @@
+#!/bin/bash
+
+# set current working directory to directory of the shell script
+cd "$(dirname "$0")"
+
+curl https://cdnjs.cloudflare.com/ajax/libs/marked/1.2.7/marked.min.js --output ../../vendor/marked.min.js

+ 26 - 0
build/mathjax/build.sh

@@ -0,0 +1,26 @@
+#!/bin/bash
+
+# set current working directory to directory of the shell script
+cd "$(dirname "$0")"
+
+git clone --depth 1 --branch 3.2.2 https://github.com/mathjax/MathJax.git tmp
+
+# https://github.com/mathjax/MathJax#reducing-the-size-of-the-components-directory
+rm -rf tmp/es5/a11y/
+rm -rf tmp/es5/adaptors/
+rm -rf tmp/es5/sre/
+
+rm -f tmp/es5/mml-chtml.js
+rm -f tmp/es5/mml-svg.js
+rm -f tmp/es5/tex-chtml-full.js
+rm -f tmp/es5/tex-chtml-full-speech.js
+rm -f tmp/es5/tex-chtml.js
+rm -f tmp/es5/tex-mml-svg.js
+rm -f tmp/es5/tex-svg-full.js
+rm -f tmp/es5/tex-svg.js
+
+rm -rf tmp/es5/output/svg/
+rm -f tmp/es5/output/svg.js
+
+mv tmp/es5 ../../vendor/mathjax
+rm -rf tmp/

+ 0 - 0
build/.babelrc → build/mdc/.babelrc


+ 6 - 3
build/mdc/mdc.sh → build/mdc/build.sh

@@ -1,8 +1,10 @@
 #!/bin/bash
 
+# set current working directory to directory of the shell script
+cd "$(dirname "$0")"
+
 # before
-cd build/mdc/
-rm -rf tmp/
+npm install
 mkdir -p tmp
 
 # mdc.min.js
@@ -10,7 +12,7 @@ npx rollup --config rollup.js --input mdc.js --file tmp/mdc.js
 npx babel tmp/mdc.js --out-file tmp/mdc.min.js
 
 # mdc.min.css
-npx node-sass --include-path ../../node_modules/ mdc.scss tmp/mdc.css
+npx node-sass --include-path node_modules/ mdc.scss tmp/mdc.css
 npx csso --input tmp/mdc.css --output tmp/mdc.min.css
 
 # copy
@@ -18,3 +20,4 @@ cp tmp/mdc.min.* ../../vendor/
 
 # after
 rm -r tmp/
+rm -rf node_modules/ package-lock.json

+ 25 - 0
build/mdc/package.json

@@ -0,0 +1,25 @@
+{
+  "name": "markdown-viewer",
+  "version": "0.0.0",
+  "description": "Markdown Viewer / Browser Extension",
+  "private": true,
+  "dependencies": {
+    "@material/button": "^0.37.1",
+    "@material/ripple": "^0.37.1",
+    "@material/switch": "^0.36.1",
+    "@material/tabs": "^0.37.1",
+    "@material/textfield": "^0.37.1"
+  },
+  "devDependencies": {
+    "babel-cli": "^6.26.0",
+    "babel-preset-env": "^1.7.0",
+    "csso-cli": "^2.0.2",
+    "node-sass": "^5.0.0",
+    "rollup": "^2.35.1",
+    "rollup-plugin-commonjs": "^10.1.0",
+    "rollup-plugin-node-resolve": "^5.2.0"
+  },
+  "engines": {
+    "node": ">=14.0.0"
+  }
+}

+ 6 - 0
build/mermaid/build.sh

@@ -0,0 +1,6 @@
+#!/bin/bash
+
+# set current working directory to directory of the shell script
+cd "$(dirname "$0")"
+
+curl https://cdnjs.cloudflare.com/ajax/libs/mermaid/9.1.6/mermaid.min.js --output ../../vendor/mermaid.min.js

+ 6 - 0
build/mithril/build.sh

@@ -0,0 +1,6 @@
+#!/bin/bash
+
+# set current working directory to directory of the shell script
+cd "$(dirname "$0")"
+
+curl https://cdnjs.cloudflare.com/ajax/libs/mithril/1.1.6/mithril.min.js --output ../../vendor/mithril.min.js

+ 56 - 0
build/package.sh

@@ -0,0 +1,56 @@
+#!/bin/bash
+
+# exit if any of the intermediate steps fail
+set -e
+
+browser=$1
+
+if [ -z "$browser" ]; then
+  echo "Specify target browser"
+  echo "chrome, firefox, edge"
+  exit 1
+fi
+
+# set current working directory to directory of the shell script
+cd "$(dirname "$0")"
+
+mkdir -p ../themes
+mkdir -p ../vendor
+
+# build deps
+sh marked/build.sh
+sh mathjax/build.sh
+sh mdc/build.sh
+sh mermaid/build.sh
+sh mithril/build.sh
+sh prism/build.sh
+sh remark/build.sh
+sh themes/build.sh
+
+# archive
+mkdir -p tmp
+mkdir -p tmp/markdown-viewer
+cd ..
+cp -r background content icons options popup themes vendor build/tmp/markdown-viewer/
+
+if [ "$browser" = "chrome" ]; then
+  cp manifest.json build/tmp/markdown-viewer/
+elif [ "$browser" = "firefox" ]; then
+  cp manifest.firefox.json build/tmp/markdown-viewer/manifest.json
+elif [ "$browser" = "edge" ]; then
+  cp manifest.edge.json build/tmp/markdown-viewer/manifest.json
+fi
+
+# zip the markdown-viewer folder itself
+if [ "$browser" = "chrome" ] || [ "$browser" = "edge" ]; then
+  cd build/tmp/
+  zip -r ../../markdown-viewer.zip markdown-viewer
+  cd ..
+# zip the contents of the markdown-viewer folder
+elif [ "$browser" = "firefox" ]; then
+  cd build/tmp/markdown-viewer/
+  zip -r ../../../markdown-viewer.zip .
+  cd ../../
+fi
+
+rm -rf tmp/

+ 18 - 0
build/prism/build.sh

@@ -0,0 +1,18 @@
+#!/bin/bash
+
+# set current working directory to directory of the shell script
+cd "$(dirname "$0")"
+
+# before
+npm install
+mkdir -p tmp
+
+# build
+node prism.js
+
+# copy
+cp tmp/prism.min.* ../../vendor/
+
+# after
+rm -r tmp/
+rm -rf node_modules/ package-lock.json

+ 16 - 0
build/prism/package.json

@@ -0,0 +1,16 @@
+{
+  "name": "markdown-viewer",
+  "version": "0.0.0",
+  "description": "Markdown Viewer / Browser Extension",
+  "private": true,
+  "dependencies": {
+    "prismjs": "^1.22.0"
+  },
+  "devDependencies": {
+    "csso-cli": "^2.0.2",
+    "uglify-js": "^3.12.2"
+  },
+  "engines": {
+    "node": ">=14.0.0"
+  }
+}

+ 8 - 8
build/prism/index.js → build/prism/prism.js

@@ -7,7 +7,7 @@ var uglify = require('uglify-js')
 
 // load prism languages
 var include = (file) => {
-  var fpath = path.resolve(__dirname, `../../node_modules/prismjs/${file}.js`)
+  var fpath = path.resolve(__dirname, `node_modules/prismjs/${file}.js`)
   var source = fs.readFileSync(fpath, 'utf8')
   var ctx = vm.createContext()
   vm.runInContext(source, ctx)
@@ -31,29 +31,29 @@ fs.writeFileSync(path.resolve(__dirname, 'prism.json'),
 
 // build prism.min.js
 var core = fs.readFileSync(
-  path.resolve(__dirname, '../../node_modules/prismjs/prism.js'), 'utf8')
+  path.resolve(__dirname, 'node_modules/prismjs/prism.js'), 'utf8')
 // core
 var source = uglify.minify(core, {compress: {}, mangle: true}).code
 // components
 source += config['markdown-viewer'].reduce((source, component) => (
   source += fs.readFileSync(path.resolve(__dirname,
-    `../../node_modules/prismjs/components/prism-${component}.min.js`), 'utf8') + '\n',
+    `node_modules/prismjs/components/prism-${component}.min.js`), 'utf8') + '\n',
   source
 ), '')
 
-fs.writeFileSync(path.resolve(__dirname, '../../vendor/prism.min.js'), source, 'utf8')
+fs.writeFileSync(path.resolve(__dirname, 'tmp/prism.min.js'), source, 'utf8')
 
 
 // build css
 var csso = require('csso')
 
 var source = fs.readFileSync(
-  path.resolve(__dirname, '../../node_modules/prismjs/themes/prism.css'),
+  path.resolve(__dirname, 'node_modules/prismjs/themes/prism.css'),
   'utf8'
 )
 
 fs.writeFileSync(
-  path.resolve(__dirname, '../../vendor/prism.min.css'),
+  path.resolve(__dirname, 'tmp/prism.min.css'),
   csso.minify(source).css,
   'utf8'
 )
@@ -65,7 +65,7 @@ var included = config.all
   .map((name) => ({
     name,
     size: fs.lstatSync(path.resolve(__dirname,
-      `../../node_modules/prismjs/components/prism-${name}.min.js`)).size
+      `node_modules/prismjs/components/prism-${name}.min.js`)).size
   }))
 
 var excluded = config.all
@@ -73,7 +73,7 @@ var excluded = config.all
   .map((name) => ({
     name,
     size: fs.lstatSync(path.resolve(__dirname,
-      `../../node_modules/prismjs/components/prism-${name}.min.js`)).size
+      `node_modules/prismjs/components/prism-${name}.min.js`)).size
   }))
 
 console.log('Excluded:')

+ 63 - 0
build/prism/prism.json

@@ -12,23 +12,33 @@
     "al",
     "antlr4",
     "apacheconf",
+    "apex",
     "apl",
     "applescript",
     "aql",
     "arduino",
     "arff",
+    "armasm",
+    "arturo",
     "asciidoc",
     "aspnet",
     "asm6502",
+    "asmatmel",
     "autohotkey",
     "autoit",
+    "avisynth",
+    "avro-idl",
+    "awk",
     "bash",
     "basic",
     "batch",
     "bbcode",
+    "bbj",
+    "bicep",
     "birb",
     "bison",
     "bnf",
+    "bqn",
     "brainfuck",
     "brightscript",
     "bro",
@@ -36,23 +46,34 @@
     "c",
     "csharp",
     "cpp",
+    "cfscript",
+    "chaiscript",
     "cil",
+    "cilkc",
+    "cilkcpp",
     "clojure",
     "cmake",
+    "cobol",
     "coffeescript",
     "concurnas",
     "csp",
+    "cooklang",
+    "coq",
     "crystal",
     "css-extras",
+    "csv",
+    "cue",
     "cypher",
     "d",
     "dart",
+    "dataweave",
     "dax",
     "dhall",
     "diff",
     "django",
     "dns-zone-file",
     "docker",
+    "dot",
     "ebnf",
     "editorconfig",
     "eiffel",
@@ -65,18 +86,25 @@
     "excel-formula",
     "fsharp",
     "factor",
+    "false",
     "firestore-security-rules",
     "flow",
     "fortran",
     "ftl",
     "gml",
+    "gap",
     "gcode",
     "gdscript",
     "gedcom",
+    "gettext",
     "gherkin",
     "git",
     "glsl",
+    "gn",
+    "linker-script",
     "go",
+    "go-module",
+    "gradle",
     "graphql",
     "groovy",
     "haml",
@@ -85,11 +113,14 @@
     "haxe",
     "hcl",
     "hlsl",
+    "hoon",
     "http",
     "hpkp",
     "hsts",
     "ichigojam",
     "icon",
+    "icu-message-format",
+    "idris",
     "ignore",
     "inform7",
     "ini",
@@ -99,6 +130,7 @@
     "javadoc",
     "javadoclike",
     "javastacktrace",
+    "jexl",
     "jolie",
     "jq",
     "jsdoc",
@@ -109,8 +141,11 @@
     "jsstacktrace",
     "js-templates",
     "julia",
+    "keepalived",
     "keyman",
     "kotlin",
+    "kumir",
+    "kusto",
     "latex",
     "latte",
     "less",
@@ -119,13 +154,19 @@
     "lisp",
     "livescript",
     "llvm",
+    "log",
     "lolcode",
     "lua",
+    "magma",
     "makefile",
     "markdown",
     "markup-templating",
+    "mata",
     "matlab",
+    "maxscript",
     "mel",
+    "mermaid",
+    "metafont",
     "mizar",
     "mongodb",
     "monkey",
@@ -136,29 +177,35 @@
     "naniscript",
     "nasm",
     "neon",
+    "nevod",
     "nginx",
     "nim",
     "nix",
     "nsis",
     "objectivec",
     "ocaml",
+    "odin",
     "opencl",
+    "openqasm",
     "oz",
     "parigp",
     "parser",
     "pascal",
     "pascaligo",
+    "psl",
     "pcaxis",
     "peoplecode",
     "perl",
     "php",
     "phpdoc",
     "php-extras",
+    "plant-uml",
     "plsql",
     "powerquery",
     "powershell",
     "processing",
     "prolog",
+    "promql",
     "properties",
     "protobuf",
     "pug",
@@ -167,16 +214,20 @@
     "purebasic",
     "purescript",
     "python",
+    "qsharp",
     "q",
     "qml",
     "qore",
     "r",
     "racket",
+    "cshtml",
     "jsx",
     "tsx",
     "reason",
     "regex",
+    "rego",
     "renpy",
+    "rescript",
     "rest",
     "rip",
     "roboconf",
@@ -200,10 +251,14 @@
     "splunk-spl",
     "sqf",
     "sql",
+    "squirrel",
     "stan",
+    "stata",
     "iecst",
     "stylus",
+    "supercollider",
     "swift",
+    "systemd",
     "t4-templating",
     "t4-cs",
     "t4-vb",
@@ -212,11 +267,15 @@
     "tt2",
     "textile",
     "toml",
+    "tremor",
     "turtle",
     "twig",
     "typescript",
     "typoscript",
     "unrealscript",
+    "uorazor",
+    "uri",
+    "v",
     "vala",
     "vbnet",
     "velocity",
@@ -226,7 +285,11 @@
     "visual-basic",
     "warpscript",
     "wasm",
+    "web-idl",
+    "wgsl",
     "wiki",
+    "wolfram",
+    "wren",
     "xeora",
     "xml-doc",
     "xojo",

+ 6 - 3
build/remark/build.sh

@@ -1,9 +1,11 @@
 #!/bin/bash
 
+# set current working directory to directory of the shell script
+cd "$(dirname "$0")"
+
 # before
-cd build/remark/
-rm -rf tmp/
-mkdir tmp
+npm install
+mkdir -p tmp
 
 # bundle
 npx browserify index.js -s remark > tmp/remark.js
@@ -15,3 +17,4 @@ cp tmp/remark.min.js ../../vendor/
 
 # after
 rm -r tmp/
+rm -rf node_modules/ package-lock.json

+ 22 - 0
build/remark/package.json

@@ -0,0 +1,22 @@
+{
+  "name": "markdown-viewer",
+  "version": "0.0.0",
+  "description": "Markdown Viewer / Browser Extension",
+  "private": true,
+  "dependencies": {
+    "remark": "^13.0.0",
+    "remark-breaks": "^2.0.1",
+    "remark-footnotes": "^3.0.0",
+    "remark-frontmatter": "^3.0.0",
+    "remark-gfm": "^1.0.0",
+    "remark-html": "^13.0.1",
+    "remark-slug": "^6.0.0"
+  },
+  "devDependencies": {
+    "browserify": "^17.0.0",
+    "terser": "^5.5.1"
+  },
+  "engines": {
+    "node": ">=14.0.0"
+  }
+}

+ 33 - 0
build/themes/build.sh

@@ -0,0 +1,33 @@
+#!/bin/bash
+
+# set current working directory to directory of the shell script
+cd "$(dirname "$0")"
+
+git clone --depth 1 https://github.com/simov/markdown-themes.git
+node fix-github.js
+
+npm install
+
+mkdir -p ../../themes
+npx csso --input markdown-themes/foghorn.css --output ../../themes/foghorn.css
+npx csso --input markdown-themes/ghostwriter.css --output ../../themes/ghostwriter.css
+npx csso --input markdown-themes/github.css --output ../../themes/github.css
+npx csso --input markdown-themes/github-dark.css --output ../../themes/github-dark.css
+npx csso --input markdown-themes/godspeed.css --output ../../themes/godspeed.css
+npx csso --input markdown-themes/markdown5.css --output ../../themes/markdown5.css
+npx csso --input markdown-themes/markdown6.css --output ../../themes/markdown6.css
+npx csso --input markdown-themes/markdown7.css --output ../../themes/markdown7.css
+npx csso --input markdown-themes/markdown8.css --output ../../themes/markdown8.css
+npx csso --input markdown-themes/markdown9.css --output ../../themes/markdown9.css
+npx csso --input markdown-themes/markdown-alt.css --output ../../themes/markdown-alt.css
+npx csso --input markdown-themes/markdown.css --output ../../themes/markdown.css
+npx csso --input markdown-themes/markedapp-byword.css --output ../../themes/markedapp-byword.css
+npx csso --input markdown-themes/new-modern.css --output ../../themes/new-modern.css
+npx csso --input markdown-themes/radar.css --output ../../themes/radar.css
+npx csso --input markdown-themes/screen.css --output ../../themes/screen.css
+npx csso --input markdown-themes/solarized-dark.css --output ../../themes/solarized-dark.css
+npx csso --input markdown-themes/solarized-light.css --output ../../themes/solarized-light.css
+npx csso --input markdown-themes/torpedo.css --output ../../themes/torpedo.css
+npx csso --input markdown-themes/vostok.css --output ../../themes/vostok.css
+
+rm -rf markdown-themes/ node_modules/ package-lock.json

+ 7 - 6
build/themes/fix-github.js

@@ -1,9 +1,10 @@
 
 var fs = require('fs')
+var path = require('path')
 
-var github = fs.readFileSync('./themes/github.css', 'utf8')
-fs.writeFileSync(
-  'themes/github.css',
-  github.replace(/\.markdown-body :root/g, ':root'),
-  'utf8'
-)
+var fpath = path.resolve(__dirname, 'markdown-themes/github.css')
+
+var theme = fs.readFileSync(fpath, 'utf8')
+  .replace(/\.markdown-body :root/g, ':root')
+
+fs.writeFileSync(fpath, theme, 'utf8')

+ 12 - 0
build/themes/package.json

@@ -0,0 +1,12 @@
+{
+  "name": "markdown-viewer",
+  "version": "0.0.0",
+  "description": "Markdown Viewer / Browser Extension",
+  "private": true,
+  "devDependencies": {
+    "csso-cli": "^2.0.2"
+  },
+  "engines": {
+    "node": ">=14.0.0"
+  }
+}

+ 0 - 23
build/themes/themes.sh

@@ -1,23 +0,0 @@
-#!/bin/bash
-
-npx csso --input ../markdown-themes/foghorn.css --output themes/foghorn.css
-npx csso --input ../markdown-themes/ghostwriter.css --output themes/ghostwriter.css
-npx csso --input ../markdown-themes/github.css --output themes/github.css
-npx csso --input ../markdown-themes/github-dark.css --output themes/github-dark.css
-npx csso --input ../markdown-themes/godspeed.css --output themes/godspeed.css
-npx csso --input ../markdown-themes/markdown5.css --output themes/markdown5.css
-npx csso --input ../markdown-themes/markdown6.css --output themes/markdown6.css
-npx csso --input ../markdown-themes/markdown7.css --output themes/markdown7.css
-npx csso --input ../markdown-themes/markdown8.css --output themes/markdown8.css
-npx csso --input ../markdown-themes/markdown9.css --output themes/markdown9.css
-npx csso --input ../markdown-themes/markdown-alt.css --output themes/markdown-alt.css
-npx csso --input ../markdown-themes/markdown.css --output themes/markdown.css
-npx csso --input ../markdown-themes/markedapp-byword.css --output themes/markedapp-byword.css
-npx csso --input ../markdown-themes/new-modern.css --output themes/new-modern.css
-npx csso --input ../markdown-themes/radar.css --output themes/radar.css
-npx csso --input ../markdown-themes/screen.css --output themes/screen.css
-npx csso --input ../markdown-themes/solarized-dark.css --output themes/solarized-dark.css
-npx csso --input ../markdown-themes/solarized-light.css --output themes/solarized-light.css
-npx csso --input ../markdown-themes/torpedo.css --output themes/torpedo.css
-npx csso --input ../markdown-themes/vostok.css --output themes/vostok.css
-node build/themes/fix-github.js

+ 0 - 60
package.json

@@ -1,60 +0,0 @@
-{
-  "name": "markdown-viewer",
-  "version": "0.0.0",
-  "description": "Markdown Viewer / Browser Extension",
-  "private": true,
-  "keywords": [],
-  "license": "MIT",
-  "homepage": "https://github.com/simov/markdown-viewer",
-  "author": "Simeon Velichkov <[email protected]> (https://simov.github.io)",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/simov/markdown-viewer.git"
-  },
-  "dependencies": {
-    "@material/button": "^0.37.1",
-    "@material/ripple": "^0.37.1",
-    "@material/switch": "^0.36.1",
-    "@material/tabs": "^0.37.1",
-    "@material/textfield": "^0.37.1",
-    "marked": "^1.2.7",
-    "mithril": "^1.1.6",
-    "prismjs": "^1.22.0",
-    "remark": "^13.0.0",
-    "remark-breaks": "^2.0.1",
-    "remark-footnotes": "^3.0.0",
-    "remark-frontmatter": "^3.0.0",
-    "remark-gfm": "^1.0.0",
-    "remark-html": "^13.0.1",
-    "remark-slug": "^6.0.0"
-  },
-  "devDependencies": {
-    "babel-cli": "^6.26.0",
-    "babel-preset-env": "^1.7.0",
-    "browserify": "^17.0.0",
-    "csso-cli": "^2.0.2",
-    "iconv-lite": "^0.4.24",
-    "mocha": "^7.2.0",
-    "node-sass": "^5.0.0",
-    "puppeteer": "5.4.1",
-    "rollup": "^2.35.1",
-    "rollup-plugin-commonjs": "^10.1.0",
-    "rollup-plugin-node-resolve": "^5.2.0",
-    "terser": "^5.5.1",
-    "uglify-js": "^3.12.2"
-  },
-  "bin": {},
-  "main": "",
-  "files": [],
-  "scripts": {
-    "test": "mocha --timeout 100000000 --slow 400",
-    "debug": "mocha --inspect-brk --timeout 100000000",
-    "build:mdc": "./build/mdc/mdc.sh",
-    "build:prism": "node build/prism/",
-    "build:remark": "./build/remark/build.sh",
-    "build:themes": "./build/themes/themes.sh"
-  },
-  "engines": {
-    "node": ">=8.0.0"
-  }
-}

+ 18 - 0
test/package.json

@@ -0,0 +1,18 @@
+{
+  "name": "markdown-viewer",
+  "version": "0.0.0",
+  "description": "Markdown Viewer / Browser Extension",
+  "private": true,
+  "devDependencies": {
+    "iconv-lite": "^0.4.24",
+    "mocha": "^7.2.0",
+    "puppeteer": "5.4.1",
+  },
+  "scripts": {
+    "test": "mocha --timeout 100000000 --slow 400",
+    "debug": "mocha --inspect-brk --timeout 100000000"
+  },
+  "engines": {
+    "node": ">=14.0.0"
+  }
+}