diff --git a/package-lock.json b/package-lock.json
index a3dac4497..65b2524e2 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,11 +12,11 @@
"dependencies": {
"@babel/core": "^7.16.0",
"@babel/plugin-transform-runtime": "^7.16.4",
- "@babel/preset-env": "^7.16.0",
+ "@babel/preset-env": "^7.16.4",
"@babel/preset-react": "^7.16.0",
"body-parser": "^1.19.0",
"classnames": "^2.3.1",
- "codemirror": "^5.63.3",
+ "codemirror": "^5.64.0",
"cookie-parser": "^1.4.6",
"create-react-class": "^15.7.0",
"dedent-tabs": "^0.10.1",
@@ -24,14 +24,14 @@
"express-async-handler": "^1.1.4",
"express-static-gzip": "2.1.1",
"fs-extra": "10.0.0",
- "googleapis": "91.0.0",
+ "googleapis": "92.0.0",
"jwt-simple": "^0.5.6",
"less": "^3.13.1",
"lodash": "^4.17.21",
"marked": "3.0.8",
"markedLegacy": "npm:marked@^0.3.19",
"moment": "^2.29.1",
- "mongoose": "^6.0.13",
+ "mongoose": "^6.0.14",
"nanoid": "3.1.30",
"nconf": "^0.11.3",
"prop-types": "15.7.2",
@@ -45,8 +45,8 @@
"vitreum": "git+https://git@github.com/calculuschild/vitreum.git"
},
"devDependencies": {
- "eslint": "^8.2.0",
- "eslint-plugin-react": "^7.27.0",
+ "eslint": "^8.4.0",
+ "eslint-plugin-react": "^7.27.1",
"pico-check": "^2.1.3"
},
"engines": {
@@ -65,9 +65,9 @@
}
},
"node_modules/@babel/compat-data": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.0.tgz",
- "integrity": "sha512-DGjt2QZse5SGd9nfOSqO4WLJ8NN/oHkijbXbPrxuoJO3oIPJL3TciZs9FX+cOHNiY9E9l0opL8g7BmLe3T+9ew==",
+ "version": "7.16.4",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz",
+ "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==",
"engines": {
"node": ">=6.9.0"
}
@@ -191,13 +191,13 @@
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.0.tgz",
- "integrity": "sha512-S7iaOT1SYlqK0sQaCi21RX4+13hmdmnxIEAnQUB/eh7GeAnRjOUgTYpLkUOiRXzD+yog1JxP0qyAQZ7ZxVxLVg==",
+ "version": "7.16.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz",
+ "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==",
"dependencies": {
"@babel/compat-data": "^7.16.0",
"@babel/helper-validator-option": "^7.14.5",
- "browserslist": "^4.16.6",
+ "browserslist": "^4.17.5",
"semver": "^6.3.0"
},
"engines": {
@@ -250,9 +250,9 @@
}
},
"node_modules/@babel/helper-define-polyfill-provider": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.4.tgz",
- "integrity": "sha512-OrpPZ97s+aPi6h2n1OXzdhVis1SGSsMU2aMHgLcOKfsp4/v1NWpx3CWT3lBj5eeBq9cDkPkh+YCfdF7O12uNDQ==",
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz",
+ "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==",
"dependencies": {
"@babel/helper-compilation-targets": "^7.13.0",
"@babel/helper-module-imports": "^7.12.13",
@@ -268,14 +268,19 @@
}
},
"node_modules/@babel/helper-define-polyfill-provider/node_modules/debug": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
- "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+ "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
"dependencies": {
"ms": "2.1.2"
},
"engines": {
"node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
"node_modules/@babel/helper-define-polyfill-provider/node_modules/ms": {
@@ -397,9 +402,9 @@
}
},
"node_modules/@babel/helper-remap-async-to-generator": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.0.tgz",
- "integrity": "sha512-MLM1IOMe9aQBqMWxcRw8dcb9jlM86NIw7KA0Wri91Xkfied+dE0QuBFSBjMNvqzmS0OSIDsMNC24dBEkPUi7ew==",
+ "version": "7.16.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz",
+ "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.16.0",
"@babel/helper-wrap-function": "^7.16.0",
@@ -583,12 +588,12 @@
}
},
"node_modules/@babel/plugin-proposal-async-generator-functions": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.0.tgz",
- "integrity": "sha512-nyYmIo7ZqKsY6P4lnVmBlxp9B3a96CscbLotlsNuktMHahkDwoPYEjXrZHU0Tj844Z9f1IthVxQln57mhkcExw==",
+ "version": "7.16.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz",
+ "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==",
"dependencies": {
"@babel/helper-plugin-utils": "^7.14.5",
- "@babel/helper-remap-async-to-generator": "^7.16.0",
+ "@babel/helper-remap-async-to-generator": "^7.16.4",
"@babel/plugin-syntax-async-generators": "^7.8.4"
},
"engines": {
@@ -1314,9 +1319,9 @@
}
},
"node_modules/@babel/plugin-transform-parameters": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.0.tgz",
- "integrity": "sha512-XgnQEm1CevKROPx+udOi/8f8TiGhrUWiHiaUCIp47tE0tpFDjzXNTZc9E5CmCwxNjXTWEVqvRfWZYOTFvMa/ZQ==",
+ "version": "7.16.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz",
+ "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==",
"dependencies": {
"@babel/helper-plugin-utils": "^7.14.5"
},
@@ -1449,81 +1454,6 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-runtime/node_modules/@babel/helper-define-polyfill-provider": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz",
- "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==",
- "dependencies": {
- "@babel/helper-compilation-targets": "^7.13.0",
- "@babel/helper-module-imports": "^7.12.13",
- "@babel/helper-plugin-utils": "^7.13.0",
- "@babel/traverse": "^7.13.0",
- "debug": "^4.1.1",
- "lodash.debounce": "^4.0.8",
- "resolve": "^1.14.2",
- "semver": "^6.1.2"
- },
- "peerDependencies": {
- "@babel/core": "^7.4.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-runtime/node_modules/babel-plugin-polyfill-corejs2": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz",
- "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==",
- "dependencies": {
- "@babel/compat-data": "^7.13.11",
- "@babel/helper-define-polyfill-provider": "^0.3.0",
- "semver": "^6.1.1"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-runtime/node_modules/babel-plugin-polyfill-corejs3": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz",
- "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==",
- "dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.3.0",
- "core-js-compat": "^3.18.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-runtime/node_modules/babel-plugin-polyfill-regenerator": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz",
- "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==",
- "dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.3.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-runtime/node_modules/debug": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
- "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/@babel/plugin-transform-runtime/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
"node_modules/@babel/plugin-transform-runtime/node_modules/semver": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
@@ -1633,17 +1563,17 @@
}
},
"node_modules/@babel/preset-env": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.0.tgz",
- "integrity": "sha512-cdTu/W0IrviamtnZiTfixPfIncr2M1VqRrkjzZWlr1B4TVYimCFK5jkyOdP4qw2MrlKHi+b3ORj6x8GoCew8Dg==",
+ "version": "7.16.4",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz",
+ "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==",
"dependencies": {
- "@babel/compat-data": "^7.16.0",
- "@babel/helper-compilation-targets": "^7.16.0",
+ "@babel/compat-data": "^7.16.4",
+ "@babel/helper-compilation-targets": "^7.16.3",
"@babel/helper-plugin-utils": "^7.14.5",
"@babel/helper-validator-option": "^7.14.5",
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.0",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2",
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0",
- "@babel/plugin-proposal-async-generator-functions": "^7.16.0",
+ "@babel/plugin-proposal-async-generator-functions": "^7.16.4",
"@babel/plugin-proposal-class-properties": "^7.16.0",
"@babel/plugin-proposal-class-static-block": "^7.16.0",
"@babel/plugin-proposal-dynamic-import": "^7.16.0",
@@ -1693,7 +1623,7 @@
"@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0",
"@babel/plugin-transform-new-target": "^7.16.0",
"@babel/plugin-transform-object-super": "^7.16.0",
- "@babel/plugin-transform-parameters": "^7.16.0",
+ "@babel/plugin-transform-parameters": "^7.16.3",
"@babel/plugin-transform-property-literals": "^7.16.0",
"@babel/plugin-transform-regenerator": "^7.16.0",
"@babel/plugin-transform-reserved-words": "^7.16.0",
@@ -1706,10 +1636,10 @@
"@babel/plugin-transform-unicode-regex": "^7.16.0",
"@babel/preset-modules": "^0.1.5",
"@babel/types": "^7.16.0",
- "babel-plugin-polyfill-corejs2": "^0.2.3",
- "babel-plugin-polyfill-corejs3": "^0.3.0",
- "babel-plugin-polyfill-regenerator": "^0.2.3",
- "core-js-compat": "^3.19.0",
+ "babel-plugin-polyfill-corejs2": "^0.3.0",
+ "babel-plugin-polyfill-corejs3": "^0.4.0",
+ "babel-plugin-polyfill-regenerator": "^0.3.0",
+ "core-js-compat": "^3.19.1",
"semver": "^6.3.0"
},
"engines": {
@@ -1846,14 +1776,14 @@
}
},
"node_modules/@eslint/eslintrc": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz",
- "integrity": "sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz",
+ "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==",
"dev": true,
"dependencies": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
- "espree": "^9.0.0",
+ "espree": "^9.2.0",
"globals": "^13.9.0",
"ignore": "^4.0.6",
"import-fresh": "^3.2.1",
@@ -1866,9 +1796,9 @@
}
},
"node_modules/@eslint/eslintrc/node_modules/debug": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
- "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
+ "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
"dev": true,
"dependencies": {
"ms": "2.1.2"
@@ -1901,12 +1831,12 @@
}
},
"node_modules/@humanwhocodes/config-array": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz",
- "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==",
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz",
+ "integrity": "sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==",
"dev": true,
"dependencies": {
- "@humanwhocodes/object-schema": "^1.2.0",
+ "@humanwhocodes/object-schema": "^1.2.1",
"debug": "^4.1.1",
"minimatch": "^3.0.4"
},
@@ -1915,9 +1845,9 @@
}
},
"node_modules/@humanwhocodes/config-array/node_modules/debug": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
- "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
+ "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
"dev": true,
"dependencies": {
"ms": "2.1.2"
@@ -1938,9 +1868,9 @@
"dev": true
},
"node_modules/@humanwhocodes/object-schema": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz",
- "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
+ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
"dev": true
},
"node_modules/@sindresorhus/is": {
@@ -2400,12 +2330,12 @@
}
},
"node_modules/babel-plugin-polyfill-corejs2": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.3.tgz",
- "integrity": "sha512-NDZ0auNRzmAfE1oDDPW2JhzIMXUk+FFe2ICejmt5T4ocKgiQx3e0VCRx9NCAidcMtL2RUZaWtXnmjTCkx0tcbA==",
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz",
+ "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==",
"dependencies": {
"@babel/compat-data": "^7.13.11",
- "@babel/helper-define-polyfill-provider": "^0.2.4",
+ "@babel/helper-define-polyfill-provider": "^0.3.0",
"semver": "^6.1.1"
},
"peerDependencies": {
@@ -2421,11 +2351,11 @@
}
},
"node_modules/babel-plugin-polyfill-corejs3": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.3.0.tgz",
- "integrity": "sha512-JLwi9vloVdXLjzACL80j24bG6/T1gYxwowG44dg6HN/7aTPdyPbJJidf6ajoA3RPHHtW0j9KMrSOLpIZpAnPpg==",
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz",
+ "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==",
"dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.2.4",
+ "@babel/helper-define-polyfill-provider": "^0.3.0",
"core-js-compat": "^3.18.0"
},
"peerDependencies": {
@@ -2433,11 +2363,11 @@
}
},
"node_modules/babel-plugin-polyfill-regenerator": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.3.tgz",
- "integrity": "sha512-JVE78oRZPKFIeUqFGrSORNzQnrDwZR16oiWeGM8ZyjBn2XAT5OjP+wXx5ESuo33nUsFUEJYjtklnsKbxW5L+7g==",
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz",
+ "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==",
"dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.2.4"
+ "@babel/helper-define-polyfill-provider": "^0.3.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
@@ -3235,9 +3165,9 @@
}
},
"node_modules/codemirror": {
- "version": "5.63.3",
- "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.63.3.tgz",
- "integrity": "sha512-1C+LELr+5grgJYqwZKqxrcbPsHFHapVaVAloBsFBASbpLnQqLw1U8yXJ3gT5D+rhxIiSpo+kTqN+hQ+9ialIXw=="
+ "version": "5.64.0",
+ "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.64.0.tgz",
+ "integrity": "sha512-fqr6CtDQdJ6iNMbD8NX2gH2G876nNDk+TO1rrYkgWnqQdO3O1Xa9tK6q+psqhJJgE5SpbaDcgdfLmukoUVE8pg=="
},
"node_modules/collection-visit": {
"version": "1.0.0",
@@ -3920,13 +3850,13 @@
}
},
"node_modules/eslint": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.2.0.tgz",
- "integrity": "sha512-erw7XmM+CLxTOickrimJ1SiF55jiNlVSp2qqm0NuBWPtHYQCegD5ZMaW0c3i5ytPqL+SSLaCxdvQXFPLJn+ABw==",
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.4.0.tgz",
+ "integrity": "sha512-kv0XQcAQJL/VD9THQKhTQZVqkJKA+tIj/v2ZKNaIHRAADcJWFb+B/BAewUYuF6UVg1s2xC5qXVoDk0G8sKGeTA==",
"dev": true,
"dependencies": {
- "@eslint/eslintrc": "^1.0.4",
- "@humanwhocodes/config-array": "^0.6.0",
+ "@eslint/eslintrc": "^1.0.5",
+ "@humanwhocodes/config-array": "^0.9.2",
"ajv": "^6.10.0",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
@@ -3934,10 +3864,10 @@
"doctrine": "^3.0.0",
"enquirer": "^2.3.5",
"escape-string-regexp": "^4.0.0",
- "eslint-scope": "^6.0.0",
+ "eslint-scope": "^7.1.0",
"eslint-utils": "^3.0.0",
- "eslint-visitor-keys": "^3.0.0",
- "espree": "^9.0.0",
+ "eslint-visitor-keys": "^3.1.0",
+ "espree": "^9.2.0",
"esquery": "^1.4.0",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
@@ -3975,9 +3905,9 @@
}
},
"node_modules/eslint-plugin-react": {
- "version": "7.27.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.27.0.tgz",
- "integrity": "sha512-0Ut+CkzpppgFtoIhdzi2LpdpxxBvgFf99eFqWxJnUrO7mMe0eOiNpou6rvNYeVVV6lWZvTah0BFne7k5xHjARg==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.27.1.tgz",
+ "integrity": "sha512-meyunDjMMYeWr/4EBLTV1op3iSG3mjT/pz5gti38UzfM4OPpNc2m0t2xvKCOMU5D6FSdd34BIMFOvQbW+i8GAA==",
"dev": true,
"dependencies": {
"array-includes": "^3.1.4",
@@ -4034,9 +3964,9 @@
}
},
"node_modules/eslint-scope": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-6.0.0.tgz",
- "integrity": "sha512-uRDL9MWmQCkaFus8RF5K9/L/2fn+80yoW3jkD53l4shjCh26fCtvJGasxjUqP5OT87SYTxCVA3BwTUzuELx9kA==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz",
+ "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==",
"dev": true,
"dependencies": {
"esrecurse": "^4.3.0",
@@ -4074,9 +4004,9 @@
}
},
"node_modules/eslint-visitor-keys": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz",
- "integrity": "sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz",
+ "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -4185,23 +4115,23 @@
}
},
"node_modules/espree": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.0.0.tgz",
- "integrity": "sha512-r5EQJcYZ2oaGbeR0jR0fFVijGOcwai07/690YRXLINuhmVeRY4UKSAsQPe/0BNuDgwP7Ophoc1PRsr2E3tkbdQ==",
+ "version": "9.2.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.2.0.tgz",
+ "integrity": "sha512-oP3utRkynpZWF/F2x/HZJ+AGtnIclaR7z1pYPxy7NYM2fSO6LgK/Rkny8anRSPK/VwEA1eqm2squui0T7ZMOBg==",
"dev": true,
"dependencies": {
- "acorn": "^8.5.0",
+ "acorn": "^8.6.0",
"acorn-jsx": "^5.3.1",
- "eslint-visitor-keys": "^3.0.0"
+ "eslint-visitor-keys": "^3.1.0"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
"node_modules/espree/node_modules/acorn": {
- "version": "8.5.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz",
- "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==",
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz",
+ "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==",
"dev": true,
"bin": {
"acorn": "bin/acorn"
@@ -4913,9 +4843,9 @@
}
},
"node_modules/googleapis": {
- "version": "91.0.0",
- "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-91.0.0.tgz",
- "integrity": "sha512-iHqXZwgYam0g8n0Yyi+YHx8kgwT+H5O4k3fe0LB1JhWRp1dSKYu+ShY4PQbW584zLOE4kK3LHf2B+x1THx+ZPQ==",
+ "version": "92.0.0",
+ "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-92.0.0.tgz",
+ "integrity": "sha512-5HgJg7XvqEEJ+GO+2gvnzd5cAcDuSS/VB6nW7thoyj2GMq9nH4VvJwncSevinjLCnv06a+VSxrXNiL5vePHojA==",
"dependencies": {
"google-auth-library": "^7.0.2",
"googleapis-common": "^5.0.2"
@@ -6491,9 +6421,9 @@
}
},
"node_modules/mongoose": {
- "version": "6.0.13",
- "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.0.13.tgz",
- "integrity": "sha512-/M/YKgx23fCX+j0lwObaHbCibXnMjyWeQrXZf0WaQeS/hL86wQVSmaOxh+kZXfyLOUr+vT2Hl44o50GZHUrKWw==",
+ "version": "6.0.14",
+ "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.0.14.tgz",
+ "integrity": "sha512-SZ0kBlHrz/G70yWdVXLfM/gH4NsY85+as4MZRdtWxBTDEcmoE3rCFAz1/Ho2ycg5mJAeOBwdGZw4a5sn/WrwUA==",
"dependencies": {
"bson": "^4.2.2",
"kareem": "2.3.2",
@@ -9670,9 +9600,9 @@
}
},
"@babel/compat-data": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.0.tgz",
- "integrity": "sha512-DGjt2QZse5SGd9nfOSqO4WLJ8NN/oHkijbXbPrxuoJO3oIPJL3TciZs9FX+cOHNiY9E9l0opL8g7BmLe3T+9ew=="
+ "version": "7.16.4",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz",
+ "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q=="
},
"@babel/core": {
"version": "7.16.0",
@@ -9764,13 +9694,13 @@
}
},
"@babel/helper-compilation-targets": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.0.tgz",
- "integrity": "sha512-S7iaOT1SYlqK0sQaCi21RX4+13hmdmnxIEAnQUB/eh7GeAnRjOUgTYpLkUOiRXzD+yog1JxP0qyAQZ7ZxVxLVg==",
+ "version": "7.16.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz",
+ "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==",
"requires": {
"@babel/compat-data": "^7.16.0",
"@babel/helper-validator-option": "^7.14.5",
- "browserslist": "^4.16.6",
+ "browserslist": "^4.17.5",
"semver": "^6.3.0"
},
"dependencies": {
@@ -9804,9 +9734,9 @@
}
},
"@babel/helper-define-polyfill-provider": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.4.tgz",
- "integrity": "sha512-OrpPZ97s+aPi6h2n1OXzdhVis1SGSsMU2aMHgLcOKfsp4/v1NWpx3CWT3lBj5eeBq9cDkPkh+YCfdF7O12uNDQ==",
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz",
+ "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==",
"requires": {
"@babel/helper-compilation-targets": "^7.13.0",
"@babel/helper-module-imports": "^7.12.13",
@@ -9819,9 +9749,9 @@
},
"dependencies": {
"debug": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
- "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+ "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
"requires": {
"ms": "2.1.2"
}
@@ -9917,9 +9847,9 @@
"integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ=="
},
"@babel/helper-remap-async-to-generator": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.0.tgz",
- "integrity": "sha512-MLM1IOMe9aQBqMWxcRw8dcb9jlM86NIw7KA0Wri91Xkfied+dE0QuBFSBjMNvqzmS0OSIDsMNC24dBEkPUi7ew==",
+ "version": "7.16.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz",
+ "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==",
"requires": {
"@babel/helper-annotate-as-pure": "^7.16.0",
"@babel/helper-wrap-function": "^7.16.0",
@@ -10051,12 +9981,12 @@
}
},
"@babel/plugin-proposal-async-generator-functions": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.0.tgz",
- "integrity": "sha512-nyYmIo7ZqKsY6P4lnVmBlxp9B3a96CscbLotlsNuktMHahkDwoPYEjXrZHU0Tj844Z9f1IthVxQln57mhkcExw==",
+ "version": "7.16.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz",
+ "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==",
"requires": {
"@babel/helper-plugin-utils": "^7.14.5",
- "@babel/helper-remap-async-to-generator": "^7.16.0",
+ "@babel/helper-remap-async-to-generator": "^7.16.4",
"@babel/plugin-syntax-async-generators": "^7.8.4"
}
},
@@ -10511,9 +10441,9 @@
}
},
"@babel/plugin-transform-parameters": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.0.tgz",
- "integrity": "sha512-XgnQEm1CevKROPx+udOi/8f8TiGhrUWiHiaUCIp47tE0tpFDjzXNTZc9E5CmCwxNjXTWEVqvRfWZYOTFvMa/ZQ==",
+ "version": "7.16.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz",
+ "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==",
"requires": {
"@babel/helper-plugin-utils": "^7.14.5"
}
@@ -10592,61 +10522,6 @@
"semver": "^6.3.0"
},
"dependencies": {
- "@babel/helper-define-polyfill-provider": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz",
- "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==",
- "requires": {
- "@babel/helper-compilation-targets": "^7.13.0",
- "@babel/helper-module-imports": "^7.12.13",
- "@babel/helper-plugin-utils": "^7.13.0",
- "@babel/traverse": "^7.13.0",
- "debug": "^4.1.1",
- "lodash.debounce": "^4.0.8",
- "resolve": "^1.14.2",
- "semver": "^6.1.2"
- }
- },
- "babel-plugin-polyfill-corejs2": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz",
- "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==",
- "requires": {
- "@babel/compat-data": "^7.13.11",
- "@babel/helper-define-polyfill-provider": "^0.3.0",
- "semver": "^6.1.1"
- }
- },
- "babel-plugin-polyfill-corejs3": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz",
- "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==",
- "requires": {
- "@babel/helper-define-polyfill-provider": "^0.3.0",
- "core-js-compat": "^3.18.0"
- }
- },
- "babel-plugin-polyfill-regenerator": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz",
- "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==",
- "requires": {
- "@babel/helper-define-polyfill-provider": "^0.3.0"
- }
- },
- "debug": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
- "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
- "requires": {
- "ms": "2.1.2"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
"semver": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
@@ -10713,17 +10588,17 @@
}
},
"@babel/preset-env": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.0.tgz",
- "integrity": "sha512-cdTu/W0IrviamtnZiTfixPfIncr2M1VqRrkjzZWlr1B4TVYimCFK5jkyOdP4qw2MrlKHi+b3ORj6x8GoCew8Dg==",
+ "version": "7.16.4",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz",
+ "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==",
"requires": {
- "@babel/compat-data": "^7.16.0",
- "@babel/helper-compilation-targets": "^7.16.0",
+ "@babel/compat-data": "^7.16.4",
+ "@babel/helper-compilation-targets": "^7.16.3",
"@babel/helper-plugin-utils": "^7.14.5",
"@babel/helper-validator-option": "^7.14.5",
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.0",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2",
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0",
- "@babel/plugin-proposal-async-generator-functions": "^7.16.0",
+ "@babel/plugin-proposal-async-generator-functions": "^7.16.4",
"@babel/plugin-proposal-class-properties": "^7.16.0",
"@babel/plugin-proposal-class-static-block": "^7.16.0",
"@babel/plugin-proposal-dynamic-import": "^7.16.0",
@@ -10773,7 +10648,7 @@
"@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0",
"@babel/plugin-transform-new-target": "^7.16.0",
"@babel/plugin-transform-object-super": "^7.16.0",
- "@babel/plugin-transform-parameters": "^7.16.0",
+ "@babel/plugin-transform-parameters": "^7.16.3",
"@babel/plugin-transform-property-literals": "^7.16.0",
"@babel/plugin-transform-regenerator": "^7.16.0",
"@babel/plugin-transform-reserved-words": "^7.16.0",
@@ -10786,10 +10661,10 @@
"@babel/plugin-transform-unicode-regex": "^7.16.0",
"@babel/preset-modules": "^0.1.5",
"@babel/types": "^7.16.0",
- "babel-plugin-polyfill-corejs2": "^0.2.3",
- "babel-plugin-polyfill-corejs3": "^0.3.0",
- "babel-plugin-polyfill-regenerator": "^0.2.3",
- "core-js-compat": "^3.19.0",
+ "babel-plugin-polyfill-corejs2": "^0.3.0",
+ "babel-plugin-polyfill-corejs3": "^0.4.0",
+ "babel-plugin-polyfill-regenerator": "^0.3.0",
+ "core-js-compat": "^3.19.1",
"semver": "^6.3.0"
},
"dependencies": {
@@ -10896,14 +10771,14 @@
}
},
"@eslint/eslintrc": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz",
- "integrity": "sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz",
+ "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==",
"dev": true,
"requires": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
- "espree": "^9.0.0",
+ "espree": "^9.2.0",
"globals": "^13.9.0",
"ignore": "^4.0.6",
"import-fresh": "^3.2.1",
@@ -10913,9 +10788,9 @@
},
"dependencies": {
"debug": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
- "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
+ "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
"dev": true,
"requires": {
"ms": "2.1.2"
@@ -10936,20 +10811,20 @@
}
},
"@humanwhocodes/config-array": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz",
- "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==",
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz",
+ "integrity": "sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==",
"dev": true,
"requires": {
- "@humanwhocodes/object-schema": "^1.2.0",
+ "@humanwhocodes/object-schema": "^1.2.1",
"debug": "^4.1.1",
"minimatch": "^3.0.4"
},
"dependencies": {
"debug": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
- "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
+ "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
"dev": true,
"requires": {
"ms": "2.1.2"
@@ -10964,9 +10839,9 @@
}
},
"@humanwhocodes/object-schema": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz",
- "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
+ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
"dev": true
},
"@sindresorhus/is": {
@@ -11333,12 +11208,12 @@
}
},
"babel-plugin-polyfill-corejs2": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.3.tgz",
- "integrity": "sha512-NDZ0auNRzmAfE1oDDPW2JhzIMXUk+FFe2ICejmt5T4ocKgiQx3e0VCRx9NCAidcMtL2RUZaWtXnmjTCkx0tcbA==",
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz",
+ "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==",
"requires": {
"@babel/compat-data": "^7.13.11",
- "@babel/helper-define-polyfill-provider": "^0.2.4",
+ "@babel/helper-define-polyfill-provider": "^0.3.0",
"semver": "^6.1.1"
},
"dependencies": {
@@ -11350,20 +11225,20 @@
}
},
"babel-plugin-polyfill-corejs3": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.3.0.tgz",
- "integrity": "sha512-JLwi9vloVdXLjzACL80j24bG6/T1gYxwowG44dg6HN/7aTPdyPbJJidf6ajoA3RPHHtW0j9KMrSOLpIZpAnPpg==",
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz",
+ "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==",
"requires": {
- "@babel/helper-define-polyfill-provider": "^0.2.4",
+ "@babel/helper-define-polyfill-provider": "^0.3.0",
"core-js-compat": "^3.18.0"
}
},
"babel-plugin-polyfill-regenerator": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.3.tgz",
- "integrity": "sha512-JVE78oRZPKFIeUqFGrSORNzQnrDwZR16oiWeGM8ZyjBn2XAT5OjP+wXx5ESuo33nUsFUEJYjtklnsKbxW5L+7g==",
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz",
+ "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==",
"requires": {
- "@babel/helper-define-polyfill-provider": "^0.2.4"
+ "@babel/helper-define-polyfill-provider": "^0.3.0"
}
},
"balanced-match": {
@@ -12013,9 +11888,9 @@
}
},
"codemirror": {
- "version": "5.63.3",
- "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.63.3.tgz",
- "integrity": "sha512-1C+LELr+5grgJYqwZKqxrcbPsHFHapVaVAloBsFBASbpLnQqLw1U8yXJ3gT5D+rhxIiSpo+kTqN+hQ+9ialIXw=="
+ "version": "5.64.0",
+ "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.64.0.tgz",
+ "integrity": "sha512-fqr6CtDQdJ6iNMbD8NX2gH2G876nNDk+TO1rrYkgWnqQdO3O1Xa9tK6q+psqhJJgE5SpbaDcgdfLmukoUVE8pg=="
},
"collection-visit": {
"version": "1.0.0",
@@ -12591,13 +12466,13 @@
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
},
"eslint": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.2.0.tgz",
- "integrity": "sha512-erw7XmM+CLxTOickrimJ1SiF55jiNlVSp2qqm0NuBWPtHYQCegD5ZMaW0c3i5ytPqL+SSLaCxdvQXFPLJn+ABw==",
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.4.0.tgz",
+ "integrity": "sha512-kv0XQcAQJL/VD9THQKhTQZVqkJKA+tIj/v2ZKNaIHRAADcJWFb+B/BAewUYuF6UVg1s2xC5qXVoDk0G8sKGeTA==",
"dev": true,
"requires": {
- "@eslint/eslintrc": "^1.0.4",
- "@humanwhocodes/config-array": "^0.6.0",
+ "@eslint/eslintrc": "^1.0.5",
+ "@humanwhocodes/config-array": "^0.9.2",
"ajv": "^6.10.0",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
@@ -12605,10 +12480,10 @@
"doctrine": "^3.0.0",
"enquirer": "^2.3.5",
"escape-string-regexp": "^4.0.0",
- "eslint-scope": "^6.0.0",
+ "eslint-scope": "^7.1.0",
"eslint-utils": "^3.0.0",
- "eslint-visitor-keys": "^3.0.0",
- "espree": "^9.0.0",
+ "eslint-visitor-keys": "^3.1.0",
+ "espree": "^9.2.0",
"esquery": "^1.4.0",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
@@ -12709,9 +12584,9 @@
}
},
"eslint-plugin-react": {
- "version": "7.27.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.27.0.tgz",
- "integrity": "sha512-0Ut+CkzpppgFtoIhdzi2LpdpxxBvgFf99eFqWxJnUrO7mMe0eOiNpou6rvNYeVVV6lWZvTah0BFne7k5xHjARg==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.27.1.tgz",
+ "integrity": "sha512-meyunDjMMYeWr/4EBLTV1op3iSG3mjT/pz5gti38UzfM4OPpNc2m0t2xvKCOMU5D6FSdd34BIMFOvQbW+i8GAA==",
"dev": true,
"requires": {
"array-includes": "^3.1.4",
@@ -12758,9 +12633,9 @@
}
},
"eslint-scope": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-6.0.0.tgz",
- "integrity": "sha512-uRDL9MWmQCkaFus8RF5K9/L/2fn+80yoW3jkD53l4shjCh26fCtvJGasxjUqP5OT87SYTxCVA3BwTUzuELx9kA==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz",
+ "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==",
"dev": true,
"requires": {
"esrecurse": "^4.3.0",
@@ -12785,26 +12660,26 @@
}
},
"eslint-visitor-keys": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz",
- "integrity": "sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz",
+ "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==",
"dev": true
},
"espree": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.0.0.tgz",
- "integrity": "sha512-r5EQJcYZ2oaGbeR0jR0fFVijGOcwai07/690YRXLINuhmVeRY4UKSAsQPe/0BNuDgwP7Ophoc1PRsr2E3tkbdQ==",
+ "version": "9.2.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.2.0.tgz",
+ "integrity": "sha512-oP3utRkynpZWF/F2x/HZJ+AGtnIclaR7z1pYPxy7NYM2fSO6LgK/Rkny8anRSPK/VwEA1eqm2squui0T7ZMOBg==",
"dev": true,
"requires": {
- "acorn": "^8.5.0",
+ "acorn": "^8.6.0",
"acorn-jsx": "^5.3.1",
- "eslint-visitor-keys": "^3.0.0"
+ "eslint-visitor-keys": "^3.1.0"
},
"dependencies": {
"acorn": {
- "version": "8.5.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz",
- "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==",
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz",
+ "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==",
"dev": true
}
}
@@ -13355,9 +13230,9 @@
}
},
"googleapis": {
- "version": "91.0.0",
- "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-91.0.0.tgz",
- "integrity": "sha512-iHqXZwgYam0g8n0Yyi+YHx8kgwT+H5O4k3fe0LB1JhWRp1dSKYu+ShY4PQbW584zLOE4kK3LHf2B+x1THx+ZPQ==",
+ "version": "92.0.0",
+ "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-92.0.0.tgz",
+ "integrity": "sha512-5HgJg7XvqEEJ+GO+2gvnzd5cAcDuSS/VB6nW7thoyj2GMq9nH4VvJwncSevinjLCnv06a+VSxrXNiL5vePHojA==",
"requires": {
"google-auth-library": "^7.0.2",
"googleapis-common": "^5.0.2"
@@ -14555,9 +14430,9 @@
}
},
"mongoose": {
- "version": "6.0.13",
- "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.0.13.tgz",
- "integrity": "sha512-/M/YKgx23fCX+j0lwObaHbCibXnMjyWeQrXZf0WaQeS/hL86wQVSmaOxh+kZXfyLOUr+vT2Hl44o50GZHUrKWw==",
+ "version": "6.0.14",
+ "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.0.14.tgz",
+ "integrity": "sha512-SZ0kBlHrz/G70yWdVXLfM/gH4NsY85+as4MZRdtWxBTDEcmoE3rCFAz1/Ho2ycg5mJAeOBwdGZw4a5sn/WrwUA==",
"requires": {
"bson": "^4.2.2",
"kareem": "2.3.2",
diff --git a/package.json b/package.json
index 85625f080..75aca3d11 100644
--- a/package.json
+++ b/package.json
@@ -42,11 +42,11 @@
"dependencies": {
"@babel/core": "^7.16.0",
"@babel/plugin-transform-runtime": "^7.16.4",
- "@babel/preset-env": "^7.16.0",
+ "@babel/preset-env": "^7.16.4",
"@babel/preset-react": "^7.16.0",
"body-parser": "^1.19.0",
"classnames": "^2.3.1",
- "codemirror": "^5.63.3",
+ "codemirror": "^5.64.0",
"cookie-parser": "^1.4.6",
"create-react-class": "^15.7.0",
"dedent-tabs": "^0.10.1",
@@ -54,14 +54,14 @@
"express-async-handler": "^1.1.4",
"express-static-gzip": "2.1.1",
"fs-extra": "10.0.0",
- "googleapis": "91.0.0",
+ "googleapis": "92.0.0",
"jwt-simple": "^0.5.6",
"less": "^3.13.1",
"lodash": "^4.17.21",
"marked": "3.0.8",
"markedLegacy": "npm:marked@^0.3.19",
"moment": "^2.29.1",
- "mongoose": "^6.0.13",
+ "mongoose": "^6.0.14",
"nanoid": "3.1.30",
"nconf": "^0.11.3",
"prop-types": "15.7.2",
@@ -75,8 +75,8 @@
"vitreum": "git+https://git@github.com/calculuschild/vitreum.git"
},
"devDependencies": {
- "eslint": "^8.2.0",
- "eslint-plugin-react": "^7.27.0",
+ "eslint": "^8.4.0",
+ "eslint-plugin-react": "^7.27.1",
"pico-check": "^2.1.3"
}
}
diff --git a/shared/naturalcrit/codeEditor/codeEditor.jsx b/shared/naturalcrit/codeEditor/codeEditor.jsx
index 01eca0114..5999df071 100644
--- a/shared/naturalcrit/codeEditor/codeEditor.jsx
+++ b/shared/naturalcrit/codeEditor/codeEditor.jsx
@@ -1,3 +1,4 @@
+/* eslint-disable max-lines */
require('./codeEditor.less');
const React = require('react');
const createClass = require('create-react-class');
@@ -74,18 +75,50 @@ const CodeEditor = createClass({
tabSize : 2,
historyEventDelay : 250,
extraKeys : {
- 'Ctrl-B' : this.makeBold,
- 'Cmd-B' : this.makeBold,
- 'Ctrl-I' : this.makeItalic,
- 'Cmd-I' : this.makeItalic,
- 'Ctrl-M' : this.makeSpan,
- 'Cmd-M' : this.makeSpan,
- 'Ctrl-/' : this.makeComment,
- 'Cmd-/' : this.makeComment,
- 'Ctrl-[' : this.foldAllCode,
- 'Cmd-[' : this.foldAllCode,
- 'Ctrl-]' : this.unfoldAllCode,
- 'Cmd-]' : this.unfoldAllCode
+ 'Ctrl-B' : this.makeBold,
+ 'Cmd-B' : this.makeBold,
+ 'Ctrl-I' : this.makeItalic,
+ 'Cmd-I' : this.makeItalic,
+ 'Ctrl-U' : this.makeUnderline,
+ 'Cmd-U' : this.makeUnderline,
+ 'Ctrl-.' : this.makeNbsp,
+ 'Cmd-.' : this.makeNbsp,
+ 'Shift-Ctrl-.' : this.makeSpace,
+ 'Shift-Cmd-.' : this.makeSpace,
+ 'Shift-Ctrl-,' : this.removeSpace,
+ 'Shift-Cmd-,' : this.removeSpace,
+ 'Ctrl-M' : this.makeSpan,
+ 'Cmd-M' : this.makeSpan,
+ 'Shift-Ctrl-M' : this.makeDiv,
+ 'Shift-Cmd-M' : this.makeDiv,
+ 'Ctrl-/' : this.makeComment,
+ 'Cmd-/' : this.makeComment,
+ 'Ctrl-K' : this.makeLink,
+ 'Cmd-K' : this.makeLink,
+ 'Ctrl-L' : ()=>this.makeList('UL'),
+ 'Cmd-L' : ()=>this.makeList('UL'),
+ 'Shift-Ctrl-L' : ()=>this.makeList('OL'),
+ 'Shift-Cmd-L' : ()=>this.makeList('OL'),
+ 'Shift-Ctrl-1' : ()=>this.makeHeader(1),
+ 'Shift-Ctrl-2' : ()=>this.makeHeader(2),
+ 'Shift-Ctrl-3' : ()=>this.makeHeader(3),
+ 'Shift-Ctrl-4' : ()=>this.makeHeader(4),
+ 'Shift-Ctrl-5' : ()=>this.makeHeader(5),
+ 'Shift-Ctrl-6' : ()=>this.makeHeader(6),
+ 'Shift-Cmd-1' : ()=>this.makeHeader(1),
+ 'Shift-Cmd-2' : ()=>this.makeHeader(2),
+ 'Shift-Cmd-3' : ()=>this.makeHeader(3),
+ 'Shift-Cmd-4' : ()=>this.makeHeader(4),
+ 'Shift-Cmd-5' : ()=>this.makeHeader(5),
+ 'Shift-Cmd-6' : ()=>this.makeHeader(6),
+ 'Shift-Ctrl-Enter' : this.newColumn,
+ 'Shift-Cmd-Enter' : this.newColumn,
+ 'Ctrl-Enter' : this.newPage,
+ 'Cmd-Enter' : this.newPage,
+ 'Ctrl-[' : this.foldAllCode,
+ 'Cmd-[' : this.foldAllCode,
+ 'Ctrl-]' : this.unfoldAllCode,
+ 'Cmd-]' : this.unfoldAllCode
},
foldGutter : true,
foldOptions : {
@@ -117,6 +150,14 @@ const CodeEditor = createClass({
this.updateSize();
},
+ makeHeader : function (number) {
+ const selection = this.codeMirror.getSelection();
+ const header = Array(number).fill('#').join('');
+ this.codeMirror.replaceSelection(`${header} ${selection}`, 'around');
+ const cursor = this.codeMirror.getCursor();
+ this.codeMirror.setCursor({ line: cursor.line, ch: cursor.ch + selection.length + number + 1 });
+ },
+
makeBold : function() {
const selection = this.codeMirror.getSelection(), t = selection.slice(0, 2) === '**' && selection.slice(-2) === '**';
this.codeMirror.replaceSelection(t ? selection.slice(2, -2) : `**${selection}**`, 'around');
@@ -127,14 +168,55 @@ const CodeEditor = createClass({
},
makeItalic : function() {
- const selection = this.codeMirror.getSelection(), t = selection.slice(0, 1) === '_' && selection.slice(-1) === '_';
- this.codeMirror.replaceSelection(t ? selection.slice(1, -1) : `_${selection}_`, 'around');
+ const selection = this.codeMirror.getSelection(), t = selection.slice(0, 1) === '*' && selection.slice(-1) === '*';
+ this.codeMirror.replaceSelection(t ? selection.slice(1, -1) : `*${selection}*`, 'around');
if(selection.length === 0){
const cursor = this.codeMirror.getCursor();
this.codeMirror.setCursor({ line: cursor.line, ch: cursor.ch - 1 });
}
},
+ makeNbsp : function() {
+ this.codeMirror.replaceSelection(' ', 'end');
+ },
+
+ makeSpace : function() {
+ const selection = this.codeMirror.getSelection();
+ const t = selection.slice(0, 8) === '{{width:' && selection.slice(0 -4) === '% }}';
+ if(t){
+ const percent = parseInt(selection.slice(8, -4)) + 10;
+ this.codeMirror.replaceSelection(percent < 90 ? `{{width:${percent}% }}` : '{{width:100% }}', 'around');
+ } else {
+ this.codeMirror.replaceSelection(`{{width:10% }}`, 'around');
+ }
+ },
+
+ removeSpace : function() {
+ const selection = this.codeMirror.getSelection();
+ const t = selection.slice(0, 8) === '{{width:' && selection.slice(0 -4) === '% }}';
+ if(t){
+ const percent = parseInt(selection.slice(8, -4)) - 10;
+ this.codeMirror.replaceSelection(percent > 10 ? `{{width:${percent}% }}` : '', 'around');
+ }
+ },
+
+ newColumn : function() {
+ this.codeMirror.replaceSelection('\n\\column\n\n', 'end');
+ },
+
+ newPage : function() {
+ this.codeMirror.replaceSelection('\n\\page\n\n', 'end');
+ },
+
+ makeUnderline : function() {
+ const selection = this.codeMirror.getSelection(), t = selection.slice(0, 3) === '' && selection.slice(-4) === '';
+ this.codeMirror.replaceSelection(t ? selection.slice(3, -4) : `${selection}`, 'around');
+ if(selection.length === 0){
+ const cursor = this.codeMirror.getCursor();
+ this.codeMirror.setCursor({ line: cursor.line, ch: cursor.ch - 4 });
+ }
+ },
+
makeSpan : function() {
const selection = this.codeMirror.getSelection(), t = selection.slice(0, 2) === '{{' && selection.slice(-2) === '}}';
this.codeMirror.replaceSelection(t ? selection.slice(2, -2) : `{{ ${selection}}}`, 'around');
@@ -144,12 +226,72 @@ const CodeEditor = createClass({
}
},
- makeComment : function() {
- const selection = this.codeMirror.getSelection(), t = selection.slice(0, 4) === '';
- this.codeMirror.replaceSelection(t ? selection.slice(4, -3) : ``, 'around');
+ makeDiv : function() {
+ const selection = this.codeMirror.getSelection(), t = selection.slice(0, 2) === '{{' && selection.slice(-2) === '}}';
+ this.codeMirror.replaceSelection(t ? selection.slice(2, -2) : `{{\n${selection}\n}}`, 'around');
if(selection.length === 0){
const cursor = this.codeMirror.getCursor();
- this.codeMirror.setCursor({ line: cursor.line, ch: cursor.ch - 4 });
+ this.codeMirror.setCursor({ line: cursor.line - 1, ch: cursor.ch }); // set to -2? if wanting to enter classes etc. if so, get rid of first \n when replacing selection
+ }
+ },
+
+ makeComment : function() {
+ let regex;
+ let cursorPos;
+ let newComment;
+ const selection = this.codeMirror.getSelection();
+ if(this.props.language === 'gfm'){
+ regex = /^\s*()\s*$/gs;
+ cursorPos = 4;
+ newComment = ``;
+ } else {
+ regex = /^\s*(\/\*\s?)(.*?)(\s?\*\/)\s*$/gs;
+ cursorPos = 3;
+ newComment = `/* ${selection} */`;
+ }
+ this.codeMirror.replaceSelection(regex.test(selection) == true ? selection.replace(regex, '$2') : newComment, 'around');
+ if(selection.length === 0){
+ const cursor = this.codeMirror.getCursor();
+ this.codeMirror.setCursor({ line: cursor.line, ch: cursor.ch - cursorPos });
+ };
+ },
+
+ makeLink : function() {
+ const isLink = /^\[(.*)\]\((.*)\)$/;
+ const selection = this.codeMirror.getSelection().trim();
+ let match;
+ if(match = isLink.exec(selection)){
+ const altText = match[1];
+ const url = match[2];
+ this.codeMirror.replaceSelection(`${altText} ${url}`);
+ const cursor = this.codeMirror.getCursor();
+ this.codeMirror.setSelection({ line: cursor.line, ch: cursor.ch - url.length }, { line: cursor.line, ch: cursor.ch });
+ } else {
+ this.codeMirror.replaceSelection(`[${selection || 'alt text'}](url)`);
+ const cursor = this.codeMirror.getCursor();
+ this.codeMirror.setSelection({ line: cursor.line, ch: cursor.ch - 4 }, { line: cursor.line, ch: cursor.ch - 1 });
+ }
+ },
+
+ makeList : function(listType) {
+ const selectionStart = this.codeMirror.getCursor('from'), selectionEnd = this.codeMirror.getCursor('to');
+ this.codeMirror.setSelection(
+ { line: selectionStart.line, ch: 0 },
+ { line: selectionEnd.line, ch: this.codeMirror.getLine(selectionEnd.line).length }
+ );
+ const newSelection = this.codeMirror.getSelection();
+
+ const regex = /^\d+\.\s|^-\s/gm;
+ if(newSelection.match(regex) != null){ // if selection IS A LIST
+ this.codeMirror.replaceSelection(newSelection.replace(regex, ''), 'around');
+ } else { // if selection IS NOT A LIST
+ listType == 'UL' ? this.codeMirror.replaceSelection(newSelection.replace(/^/gm, `- `), 'around') :
+ this.codeMirror.replaceSelection(newSelection.replace(/^/gm, (()=>{
+ let n = 1;
+ return ()=>{
+ return `${n++}. `;
+ };
+ })()), 'around');
}
},
diff --git a/themes/5ePhb.style.less b/themes/5ePhb.style.less
index f8af28642..8991e51e7 100644
--- a/themes/5ePhb.style.less
+++ b/themes/5ePhb.style.less
@@ -242,9 +242,6 @@ body {
display : block;
padding-bottom : 0px;
}
- p + p {
- padding-top : .8em;
- }
:last-child {
margin-bottom : 0;
}
@@ -275,9 +272,6 @@ body {
padding-bottom : 0px;
line-height : 1.5em;
}
- p + p {
- padding-top : .8em;
- }
:last-child {
margin-bottom : 0;
}