mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-17 09:36:08 +08:00
简化模块加载
deprecated hydro-build
This commit is contained in:
1 parent
8aef05a375
commit
8f6968bbbd
41 files changed
+1361
-1957
No files matched your search
@@ -15,8 +15,8 @@ jobs:
|
|||||||
- run: cd ui && yarn && yarn build:production && cd ..
|
- run: cd ui && yarn && yarn build:production && cd ..
|
||||||
- uses: actions/upload-artifact@v1
|
- uses: actions/upload-artifact@v1
|
||||||
with:
|
with:
|
||||||
name: .uibuild
|
name: uibuild
|
||||||
path: .uibuild
|
path: public
|
||||||
- run: |
|
- run: |
|
||||||
yarn
|
yarn
|
||||||
yarn build:production
|
yarn build:production
|
||||||
@@ -26,12 +26,8 @@ jobs:
|
|||||||
path: .build/app.js
|
path: .build/app.js
|
||||||
- uses: actions/upload-artifact@v1
|
- uses: actions/upload-artifact@v1
|
||||||
with:
|
with:
|
||||||
name: install.js
|
name: builtin.hydro
|
||||||
path: .build/install.js
|
path: .build/builtin.hydro
|
||||||
- uses: actions/upload-artifact@v1
|
|
||||||
with:
|
|
||||||
name: module
|
|
||||||
path: .build/module
|
|
||||||
- uses: elgohr/Publish-Docker-Github-Action@master
|
- uses: elgohr/Publish-Docker-Github-Action@master
|
||||||
with:
|
with:
|
||||||
name: hydrooj/hydro:alpine
|
name: hydrooj/hydro:alpine
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@ config.yaml
|
|||||||
config.json
|
config.json
|
||||||
.build/
|
.build/
|
||||||
*.build
|
*.build
|
||||||
.uibuild/
|
public/
|
||||||
dist/
|
dist/
|
||||||
.cache/
|
.cache/
|
||||||
*.cache
|
*.cache
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@ docker-compose.yml
|
|||||||
Dockerfile
|
Dockerfile
|
||||||
.vscode
|
.vscode
|
||||||
.github
|
.github
|
||||||
.uibuild
|
public/
|
||||||
templates
|
templates
|
||||||
ui
|
ui
|
||||||
locales
|
locales
|
||||||
|
|||||||
@@ -1,108 +0,0 @@
|
|||||||
/* eslint-disable import/no-dynamic-require */
|
|
||||||
/* eslint-disable import/no-extraneous-dependencies */
|
|
||||||
/* eslint-disable no-await-in-loop */
|
|
||||||
const fs = require('fs');
|
|
||||||
const zlib = require('zlib');
|
|
||||||
const webpack = require('webpack');
|
|
||||||
const yaml = require('js-yaml');
|
|
||||||
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin');
|
|
||||||
const { root, exist } = require('./utils');
|
|
||||||
const template = require('./template');
|
|
||||||
|
|
||||||
const prepare = ['model', 'lib', 'handler', 'service', 'script'];
|
|
||||||
|
|
||||||
const build = async (type) => {
|
|
||||||
const modules = fs.readdirSync(root('module'));
|
|
||||||
const failed = [];
|
|
||||||
const config = {
|
|
||||||
mode: type,
|
|
||||||
entry: {},
|
|
||||||
output: {
|
|
||||||
filename: 'module/[name].js',
|
|
||||||
path: root('.build'),
|
|
||||||
},
|
|
||||||
target: 'node',
|
|
||||||
module: {},
|
|
||||||
plugins: [
|
|
||||||
new webpack.ProgressPlugin(),
|
|
||||||
new FriendlyErrorsPlugin({
|
|
||||||
clearConsole: false,
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
};
|
|
||||||
for (const i of modules) {
|
|
||||||
if (!i.startsWith('.')) {
|
|
||||||
try {
|
|
||||||
if (exist(`module/${i}/build.js`)) {
|
|
||||||
const builder = require(root(`module/${i}/build.js`));
|
|
||||||
if (builder.prebuild) await builder.prebuild();
|
|
||||||
}
|
|
||||||
for (const j of prepare) {
|
|
||||||
if (exist(`module/${i}/${j}.js`)) {
|
|
||||||
config.entry[`${i}/${j}`] = root(`module/${i}/${j}.js`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
console.error(`Module build fail: ${i}`);
|
|
||||||
console.error(e);
|
|
||||||
failed.push(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const compiler = webpack(config);
|
|
||||||
await new Promise((resolve, reject) => {
|
|
||||||
compiler.run((err, stats) => {
|
|
||||||
if (err) {
|
|
||||||
console.error(err.stack || err);
|
|
||||||
if (err.details) console.error(err.details);
|
|
||||||
reject();
|
|
||||||
}
|
|
||||||
if (stats.hasErrors()) process.exitCode = 1;
|
|
||||||
resolve();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
for (const i of modules) {
|
|
||||||
if (!i.startsWith('.') && !failed.includes(i)) {
|
|
||||||
try {
|
|
||||||
const current = {};
|
|
||||||
for (const j of prepare) {
|
|
||||||
if (exist(`module/${i}/${j}.js`)) {
|
|
||||||
current[j] = fs.readFileSync(root(`.build/module/${i}/${j}.js`)).toString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (exist(`module/${i}/locale`)) {
|
|
||||||
const locales = fs.readdirSync(root(`module/${i}/locale`));
|
|
||||||
const lang = {};
|
|
||||||
for (const j of locales) {
|
|
||||||
const content = fs.readFileSync(root(`module/${i}/locale/${j}`)).toString();
|
|
||||||
lang[j.split('.')[0]] = yaml.safeLoad(content);
|
|
||||||
}
|
|
||||||
current.locale = lang;
|
|
||||||
}
|
|
||||||
if (exist(`module/${i}/template`)) {
|
|
||||||
current.template = template(`module/${i}/template`);
|
|
||||||
}
|
|
||||||
if (exist(`module/${i}/file`)) {
|
|
||||||
const files = fs.readdirSync(root(`module/${i}/file`));
|
|
||||||
current.file = {};
|
|
||||||
for (const file of files) {
|
|
||||||
current.file[file] = fs.readFileSync(root(`module/${i}/file/${file}`)).toString('base64');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const m = require(root(`module/${i}/hydro.json`));
|
|
||||||
current.description = m.description || '';
|
|
||||||
current.requirements = m.requirements || [];
|
|
||||||
current.version = m.version || 'unknown';
|
|
||||||
current.id = m.id;
|
|
||||||
if (m.os) current.os = m.os;
|
|
||||||
const data = zlib.gzipSync(Buffer.from(yaml.safeDump(current)), { level: -1 });
|
|
||||||
fs.writeFileSync(root(`.build/module/${i}.hydro`), data);
|
|
||||||
} catch (e) {
|
|
||||||
console.error(`Module build fail: ${i}`);
|
|
||||||
console.error(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports = build;
|
|
||||||
+5
-76
@@ -1,88 +1,17 @@
|
|||||||
/* eslint-disable no-await-in-loop */
|
/* eslint-disable no-await-in-loop */
|
||||||
const fs = require('fs');
|
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const zlib = require('zlib');
|
const fs = require('fs-extra');
|
||||||
const yaml = require('js-yaml');
|
|
||||||
const argv = require('yargs-parser')(process.argv.slice(2));
|
const argv = require('yargs-parser')(process.argv.slice(2));
|
||||||
const { root, ignoreFailure, rmdir } = require('./utils');
|
|
||||||
const template = require('./template');
|
|
||||||
const hack = require('./hack');
|
const hack = require('./hack');
|
||||||
const wikiBuild = require('./wiki');
|
|
||||||
|
|
||||||
const fsp = fs.promises;
|
|
||||||
|
|
||||||
function getFiles(folder) {
|
|
||||||
const res = [];
|
|
||||||
const files = fs.readdirSync(root(folder));
|
|
||||||
for (const filename of files) {
|
|
||||||
res.push(filename);
|
|
||||||
if (fs.statSync(root(path.join(folder, filename))).isDirectory()) {
|
|
||||||
res.push(...(getFiles(path.join(folder, filename)).map((i) => path.join(filename, i))));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
async function build(type) {
|
async function build(type) {
|
||||||
if (!['development', 'production'].includes(type)) throw new Error(`Unknown type: ${type}`);
|
if (!['development', 'production'].includes(type)) throw new Error(`Unknown type: ${type}`);
|
||||||
ignoreFailure(fs.mkdirSync, root('.build'));
|
fs.ensureDirSync(path.resolve(__dirname, '..', '.build'));
|
||||||
ignoreFailure(fs.mkdirSync, root('.build/module'));
|
for (const task in hack) hack[task]();
|
||||||
|
|
||||||
for (const task in hack) {
|
|
||||||
hack[task]();
|
|
||||||
}
|
|
||||||
|
|
||||||
const langs = fs.readdirSync(root('locales'));
|
|
||||||
const locale = {};
|
|
||||||
for (const i of langs) {
|
|
||||||
const content = fs.readFileSync(root(`locales/${i}`)).toString();
|
|
||||||
locale[i.split('.')[0]] = yaml.safeLoad(content);
|
|
||||||
}
|
|
||||||
const builtin = {
|
|
||||||
id: 'builtin',
|
|
||||||
locale,
|
|
||||||
template: template('templates'),
|
|
||||||
public: {},
|
|
||||||
};
|
|
||||||
const wiki = wikiBuild();
|
|
||||||
builtin.lib = `Object.assign(global.Hydro.wiki,${JSON.stringify(wiki)})`;
|
|
||||||
const files = getFiles('.uibuild');
|
|
||||||
for (const f of files) {
|
|
||||||
if (fs.statSync(root(`.uibuild/${f}`)).isDirectory()) {
|
|
||||||
builtin.public[f] = null;
|
|
||||||
} else {
|
|
||||||
builtin.public[f] = fs.readFileSync(root(`.uibuild/${f}`)).toString('base64');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const data = zlib.gzipSync(Buffer.from(yaml.safeDump(builtin)), { level: -1 });
|
|
||||||
fs.writeFileSync(root('.build/module/builtin.hydro'), data);
|
|
||||||
console.log('Build::Module');
|
|
||||||
await require('./buildModule')(type);
|
|
||||||
console.log('Build::Main');
|
console.log('Build::Main');
|
||||||
await require('./webpack')(type);
|
await require('./webpack')(type);
|
||||||
const t = fs.readdirSync(root('.build/module'));
|
console.log('Build::Resources');
|
||||||
for (const f of t) {
|
require('./resource')(type);
|
||||||
if (fs.statSync(root(`.build/module/${f}`)).isDirectory()) {
|
|
||||||
rmdir(root(`.build/module/${f}`));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const modules = await fsp.readdir(root('.build/module'));
|
|
||||||
const j = {};
|
|
||||||
for (const m of modules) {
|
|
||||||
try {
|
|
||||||
const d = await fsp.readFile(root(`.build/module/${m}`));
|
|
||||||
j[m] = d.toString('base64');
|
|
||||||
} catch (e) {
|
|
||||||
console.error(`Module pack failed: ${m}`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const f = fs.readFileSync(root('.build/app.js')).toString();
|
|
||||||
const installer = fs.readFileSync(root('tool/install.js')).toString();
|
|
||||||
const hydro = {};
|
|
||||||
hydro.app = Buffer.from(f).toString('base64');
|
|
||||||
hydro.modules = j;
|
|
||||||
const d = zlib.gzipSync(Buffer.from(JSON.stringify(hydro)), { level: -1 }).toString('base64');
|
|
||||||
fs.writeFileSync(root('.build/install.js'), `global.Hydro="${d}"; ${installer}`);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
build(argv.development ? 'development' : 'production').catch((e) => {
|
build(argv.development ? 'development' : 'production').catch((e) => {
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
const AdmZip = require('adm-zip');
|
||||||
|
|
||||||
|
function build() {
|
||||||
|
const zip = new AdmZip();
|
||||||
|
zip.addLocalFolder('public', 'public');
|
||||||
|
zip.addLocalFolder('locales', 'locales');
|
||||||
|
zip.addLocalFolder('templates', 'templates');
|
||||||
|
zip.addLocalFolder('wiki', 'wiki');
|
||||||
|
zip.addLocalFile('package.json');
|
||||||
|
zip.writeZip('.build/builtin.hydro');
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = build;
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
const fs = require('fs');
|
|
||||||
const { root } = require('./utils');
|
|
||||||
|
|
||||||
function getFiles(folder) {
|
|
||||||
const files = [];
|
|
||||||
const f = fs.readdirSync(root(folder));
|
|
||||||
for (const i of f) {
|
|
||||||
if (!i.startsWith('.')) {
|
|
||||||
if (fs.statSync(root(`${folder}/${i}`)).isDirectory()) {
|
|
||||||
const g = getFiles(`${folder}/${i}`);
|
|
||||||
for (const j of g) files.push(`${i}/${j}`);
|
|
||||||
} else files.push(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return files;
|
|
||||||
}
|
|
||||||
|
|
||||||
const build = (dirOrObject) => {
|
|
||||||
let templates = {};
|
|
||||||
if (typeof dirOrObject === 'string') {
|
|
||||||
const files = getFiles(dirOrObject);
|
|
||||||
for (const i of files) {
|
|
||||||
const template = fs.readFileSync(root(`${dirOrObject}/${i}`)).toString();
|
|
||||||
templates[i] = template;
|
|
||||||
}
|
|
||||||
} else templates = dirOrObject;
|
|
||||||
return templates;
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports = build;
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
const fs = require('fs');
|
|
||||||
const path = require('path');
|
|
||||||
|
|
||||||
exports.root = (name) => path.resolve(__dirname, '..', name);
|
|
||||||
exports.exist = (name) => {
|
|
||||||
try {
|
|
||||||
fs.statSync(exports.root(name));
|
|
||||||
} catch (e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
};
|
|
||||||
exports.rmdir = function rmdir(p, recursive = true) {
|
|
||||||
if (!fs.existsSync(p)) return;
|
|
||||||
if (recursive) {
|
|
||||||
fs.readdirSync(p).forEach((file) => {
|
|
||||||
const curPath = `${p}/${file}`;
|
|
||||||
if (fs.statSync(curPath).isDirectory()) rmdir(curPath);
|
|
||||||
else fs.unlinkSync(curPath);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
fs.rmdirSync(p);
|
|
||||||
};
|
|
||||||
exports.ignoreFailure = function ignoreFailure(func, ...params) {
|
|
||||||
try {
|
|
||||||
func(...params);
|
|
||||||
} catch (e) { } // eslint-disable-line no-empty
|
|
||||||
};
|
|
||||||
+2
-3
@@ -2,17 +2,16 @@
|
|||||||
const path = require('path');
|
const path = require('path');
|
||||||
const webpack = require('webpack');
|
const webpack = require('webpack');
|
||||||
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin');
|
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin');
|
||||||
const { root } = require('./utils');
|
|
||||||
|
|
||||||
const build = async (type) => {
|
const build = async (type) => {
|
||||||
const config = {
|
const config = {
|
||||||
mode: type,
|
mode: type,
|
||||||
entry: {
|
entry: {
|
||||||
app: root('hydro/loader.ts'),
|
app: path.resolve(__dirname, '..', 'hydro', 'loader.ts'),
|
||||||
},
|
},
|
||||||
output: {
|
output: {
|
||||||
filename: '[name].js',
|
filename: '[name].js',
|
||||||
path: root('.build'),
|
path: path.resolve(__dirname, '..', '.build'),
|
||||||
},
|
},
|
||||||
target: 'node',
|
target: 'node',
|
||||||
module: {
|
module: {
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
const fs = require('fs');
|
|
||||||
const { root } = require('./utils');
|
|
||||||
|
|
||||||
module.exports = () => {
|
|
||||||
const categories = fs.readdirSync(root('wiki'));
|
|
||||||
const r = {};
|
|
||||||
for (const category of categories) {
|
|
||||||
const pages = fs.readdirSync(root(`wiki/${category}`));
|
|
||||||
const res = {};
|
|
||||||
for (const page of pages) {
|
|
||||||
const c = fs.readFileSync(root(`wiki/${category}/${page}`)).toString().split('\n');
|
|
||||||
const pagename = page.split('.')[0];
|
|
||||||
res[pagename] = [];
|
|
||||||
let content = null;
|
|
||||||
for (let i = 0; i < c.length; i++) {
|
|
||||||
const line = c[i];
|
|
||||||
if (line.startsWith('# ')) {
|
|
||||||
if (content) res[pagename].push(content);
|
|
||||||
content = {};
|
|
||||||
const t = line.split('# ')[1].split('|');
|
|
||||||
[content.title, content.id] = t.map((q) => q.trim());
|
|
||||||
content.content = '';
|
|
||||||
} else {
|
|
||||||
content.content = `${content.content}${line}\n`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
r[category] = res;
|
|
||||||
}
|
|
||||||
return r;
|
|
||||||
};
|
|
||||||
+79
-17
@@ -2,6 +2,7 @@
|
|||||||
/* eslint-disable no-eval */
|
/* eslint-disable no-eval */
|
||||||
import os from 'os';
|
import os from 'os';
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
|
import path from 'path';
|
||||||
import yaml from 'js-yaml';
|
import yaml from 'js-yaml';
|
||||||
|
|
||||||
export const builtinLib = [
|
export const builtinLib = [
|
||||||
@@ -29,9 +30,22 @@ export const builtinScript = [
|
|||||||
'blacklist', 'setSuperadmin', 'deleteUser',
|
'blacklist', 'setSuperadmin', 'deleteUser',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
function getFiles(folder, base = '') {
|
||||||
|
const files = [];
|
||||||
|
const f = fs.readdirSync(folder);
|
||||||
|
for (const i of f) {
|
||||||
|
if (!i.startsWith('.')) {
|
||||||
|
if (fs.statSync(path.join(folder, i)).isDirectory()) {
|
||||||
|
files.push(...getFiles(path.join(folder, i), path.join(base, i)));
|
||||||
|
} else files.push(path.join(base, i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return files;
|
||||||
|
}
|
||||||
|
|
||||||
export async function handler(pending, fail) {
|
export async function handler(pending, fail) {
|
||||||
for (const i of pending) {
|
for (const i of pending) {
|
||||||
const p = `${os.tmpdir()}/hydro/tmp/${i}/handler.js`;
|
const p = path.resolve(i, 'handler.js');
|
||||||
if (fs.existsSync(p) && !fail.includes(i)) {
|
if (fs.existsSync(p) && !fail.includes(i)) {
|
||||||
try {
|
try {
|
||||||
console.log(`Handler init: ${i}`);
|
console.log(`Handler init: ${i}`);
|
||||||
@@ -48,10 +62,17 @@ export async function handler(pending, fail) {
|
|||||||
|
|
||||||
export async function locale(pending, fail) {
|
export async function locale(pending, fail) {
|
||||||
for (const i of pending) {
|
for (const i of pending) {
|
||||||
const p = `${os.tmpdir()}/hydro/tmp/${i}/locale.json`;
|
let p = path.resolve(i, 'locales');
|
||||||
if (fs.existsSync(p) && !fail.includes(i)) {
|
if (!fs.existsSync(p)) p = path.resolve(i, 'locale');
|
||||||
|
if (fs.existsSync(p) && fs.statSync(p).isDirectory() && !fail.includes(i)) {
|
||||||
try {
|
try {
|
||||||
global.Hydro.lib.i18n(eval('require')(p));
|
const files = fs.readdirSync(p);
|
||||||
|
const locales = {};
|
||||||
|
for (const file of files) {
|
||||||
|
const content = fs.readFileSync(path.resolve(p, file)).toString();
|
||||||
|
locales[file.split('.')[0]] = yaml.safeLoad(content);
|
||||||
|
}
|
||||||
|
global.Hydro.lib.i18n(locales);
|
||||||
console.log(`Locale init: ${i}`);
|
console.log(`Locale init: ${i}`);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
fail.push(i);
|
fail.push(i);
|
||||||
@@ -61,22 +82,19 @@ export async function locale(pending, fail) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function setting(pending, fail, modelSetting, modelSystem = null) {
|
export async function setting(pending, fail, modelSetting: typeof import('../model/setting')) {
|
||||||
const map = {
|
const map = {
|
||||||
system: modelSetting.SystemSetting,
|
system: modelSetting.SystemSetting,
|
||||||
account: modelSetting.AccountSetting,
|
account: modelSetting.AccountSetting,
|
||||||
preference: modelSetting.PreferenceSetting,
|
preference: modelSetting.PreferenceSetting,
|
||||||
};
|
};
|
||||||
for (const i of pending) {
|
for (const i of pending) {
|
||||||
const p = `${os.tmpdir()}/hydro/tmp/${i}/setting.yaml`;
|
let p = path.resolve(i, 'setting.yaml');
|
||||||
|
if (!fs.existsSync(p)) p = path.resolve(i, 'settings.yaml');
|
||||||
if (fs.existsSync(p) && !fail.includes(i)) {
|
if (fs.existsSync(p) && !fail.includes(i)) {
|
||||||
try {
|
try {
|
||||||
const cfg: any = yaml.safeLoad(fs.readFileSync(p).toString());
|
const cfg: any = yaml.safeLoad(fs.readFileSync(p).toString());
|
||||||
for (const key in cfg) {
|
for (const key in cfg) {
|
||||||
if (cfg[key].default && modelSystem) {
|
|
||||||
const current = await modelSystem.get(`${i}.${key}`);
|
|
||||||
if (!current) await modelSystem.set(`${i}.${key}`, cfg[key].default);
|
|
||||||
}
|
|
||||||
map[cfg[key].category || 'system'](
|
map[cfg[key].category || 'system'](
|
||||||
modelSetting.Setting(
|
modelSetting.Setting(
|
||||||
i, `${i}.${key}`, cfg[key].range, cfg[key].default,
|
i, `${i}.${key}`, cfg[key].range, cfg[key].default,
|
||||||
@@ -93,10 +111,14 @@ export async function setting(pending, fail, modelSetting, modelSystem = null) {
|
|||||||
|
|
||||||
export async function template(pending, fail) {
|
export async function template(pending, fail) {
|
||||||
for (const i of pending) {
|
for (const i of pending) {
|
||||||
const p = `${os.tmpdir()}/hydro/tmp/${i}/template.json`;
|
let p = path.resolve(i, 'templates');
|
||||||
if (fs.existsSync(p) && !fail.includes(i)) {
|
if (!fs.existsSync(p)) p = path.resolve(i, 'template');
|
||||||
|
if (fs.existsSync(p) && fs.statSync(p).isDirectory() && !fail.includes(i)) {
|
||||||
try {
|
try {
|
||||||
Object.assign(global.Hydro.template, eval('require')(p));
|
const files = getFiles(p);
|
||||||
|
for (const file of files) {
|
||||||
|
global.Hydro.template[file] = fs.readFileSync(path.resolve(p, file)).toString();
|
||||||
|
}
|
||||||
console.log(`Template init: ${i}`);
|
console.log(`Template init: ${i}`);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
fail.push(i);
|
fail.push(i);
|
||||||
@@ -108,7 +130,7 @@ export async function template(pending, fail) {
|
|||||||
|
|
||||||
export async function model(pending, fail) {
|
export async function model(pending, fail) {
|
||||||
for (const i of pending) {
|
for (const i of pending) {
|
||||||
const p = `${os.tmpdir()}/hydro/tmp/${i}/model.js`;
|
const p = path.resolve(i, 'model.js');
|
||||||
if (fs.existsSync(p) && !fail.includes(i)) {
|
if (fs.existsSync(p) && !fail.includes(i)) {
|
||||||
try {
|
try {
|
||||||
console.log(`Model init: ${i}`);
|
console.log(`Model init: ${i}`);
|
||||||
@@ -125,7 +147,7 @@ export async function model(pending, fail) {
|
|||||||
|
|
||||||
export async function lib(pending, fail) {
|
export async function lib(pending, fail) {
|
||||||
for (const i of pending) {
|
for (const i of pending) {
|
||||||
const p = `${os.tmpdir()}/hydro/tmp/${i}/lib.js`;
|
const p = path.resolve(i, 'lib.js');
|
||||||
if (fs.existsSync(p) && !fail.includes(i)) {
|
if (fs.existsSync(p) && !fail.includes(i)) {
|
||||||
try {
|
try {
|
||||||
console.log(`Lib init: ${i}`);
|
console.log(`Lib init: ${i}`);
|
||||||
@@ -143,7 +165,7 @@ export async function lib(pending, fail) {
|
|||||||
|
|
||||||
export async function service(pending, fail) {
|
export async function service(pending, fail) {
|
||||||
for (const i of pending) {
|
for (const i of pending) {
|
||||||
const p = `${os.tmpdir()}/hydro/tmp/${i}/service.js`;
|
const p = path.resolve(i, 'service.js');
|
||||||
if (fs.existsSync(p) && !fail.includes(i)) {
|
if (fs.existsSync(p) && !fail.includes(i)) {
|
||||||
try {
|
try {
|
||||||
console.log(`Service init: ${i}`);
|
console.log(`Service init: ${i}`);
|
||||||
@@ -161,7 +183,7 @@ export async function service(pending, fail) {
|
|||||||
|
|
||||||
export async function script(pending, fail, active) {
|
export async function script(pending, fail, active) {
|
||||||
for (const i of pending) {
|
for (const i of pending) {
|
||||||
const p = `${os.tmpdir()}/hydro/tmp/${i}/script.js`;
|
const p = path.resolve(i, 'script.js');
|
||||||
if (fs.existsSync(p) && !fail.includes(i)) {
|
if (fs.existsSync(p) && !fail.includes(i)) {
|
||||||
try {
|
try {
|
||||||
console.time(`Script init: ${i}`);
|
console.time(`Script init: ${i}`);
|
||||||
@@ -176,3 +198,43 @@ export async function script(pending, fail, active) {
|
|||||||
active.push(i);
|
active.push(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function wiki(pending, fail) {
|
||||||
|
for (const i of pending) {
|
||||||
|
const p = path.resolve(i, 'wiki');
|
||||||
|
if (fs.existsSync(p) && fs.statSync(p).isDirectory() && !fail.includes(i)) {
|
||||||
|
try {
|
||||||
|
const r = {};
|
||||||
|
const categories = fs.readdirSync(p);
|
||||||
|
for (const category of categories) {
|
||||||
|
if (!fs.statSync(p).isDirectory()) return;
|
||||||
|
const pages = fs.readdirSync(path.join(p, category));
|
||||||
|
const res = {};
|
||||||
|
for (const page of pages) {
|
||||||
|
const c = fs.readFileSync(path.join(p, category, page)).toString().split('\n');
|
||||||
|
const pagename = page.split('.')[0];
|
||||||
|
res[pagename] = [];
|
||||||
|
let content = null;
|
||||||
|
for (let j = 0; j < c.length; j++) {
|
||||||
|
const line = c[j];
|
||||||
|
if (line.startsWith('# ')) {
|
||||||
|
if (content) res[pagename].push(content);
|
||||||
|
content = {};
|
||||||
|
const t = line.split('# ')[1].split('|');
|
||||||
|
[content.title, content.id] = t.map((q) => q.trim());
|
||||||
|
content.content = '';
|
||||||
|
} else {
|
||||||
|
content.content = `${content.content}${line}\n`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
r[category] = res;
|
||||||
|
}
|
||||||
|
console.log(`Wiki init: ${i}`);
|
||||||
|
} catch (e) {
|
||||||
|
fail.push(i);
|
||||||
|
console.error(`Wiki Load Fail: ${i}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -12,10 +12,9 @@ export async function load(call) {
|
|||||||
require('../utils');
|
require('../utils');
|
||||||
require('../error');
|
require('../error');
|
||||||
try {
|
try {
|
||||||
require('../options');
|
require('../options').default();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
await call({ entry: 'setup' });
|
await call({ entry: 'setup', newProcess: true });
|
||||||
require('../options');
|
|
||||||
}
|
}
|
||||||
const bus = require('../service/bus');
|
const bus = require('../service/bus');
|
||||||
await new Promise((resolve) => {
|
await new Promise((resolve) => {
|
||||||
@@ -49,7 +48,7 @@ export async function load(call) {
|
|||||||
const ins = require('../script/install');
|
const ins = require('../script/install');
|
||||||
await ins.run({ username: 'Root', password: 'rootroot' });
|
await ins.run({ username: 'Root', password: 'rootroot' });
|
||||||
}
|
}
|
||||||
await setting(pending, fail, modelSetting, modelSystem);
|
await setting(pending, fail, modelSetting);
|
||||||
for (const i in global.Hydro.service) {
|
for (const i in global.Hydro.service) {
|
||||||
if (global.Hydro.service[i].postInit) {
|
if (global.Hydro.service[i].postInit) {
|
||||||
try {
|
try {
|
||||||
|
|||||||
+53
-49
@@ -8,6 +8,9 @@ import Router from 'koa-router';
|
|||||||
import cache from 'koa-static-cache';
|
import cache from 'koa-static-cache';
|
||||||
import nunjucks from 'nunjucks';
|
import nunjucks from 'nunjucks';
|
||||||
import mongodb from 'mongodb';
|
import mongodb from 'mongodb';
|
||||||
|
import parse from 'yargs-parser';
|
||||||
|
|
||||||
|
const argv = parse(process.argv.slice(2));
|
||||||
|
|
||||||
class Loader {
|
class Loader {
|
||||||
getSource(name: string) { // eslint-disable-line class-methods-use-this
|
getSource(name: string) { // eslint-disable-line class-methods-use-this
|
||||||
@@ -94,7 +97,7 @@ function render(name) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function load() {
|
export function load() {
|
||||||
const app = new Koa();
|
const app = new Koa();
|
||||||
const server = http.createServer(app.callback());
|
const server = http.createServer(app.callback());
|
||||||
const router = new Router();
|
const router = new Router();
|
||||||
@@ -107,55 +110,56 @@ export async function load() {
|
|||||||
ctx.body = await render('setup.html');
|
ctx.body = await render('setup.html');
|
||||||
ctx.response.type = 'text/html';
|
ctx.response.type = 'text/html';
|
||||||
});
|
});
|
||||||
const p = new Promise((resolve) => {
|
const listenPort = argv.port || 8888;
|
||||||
router.post('/', async (ctx) => {
|
router.post('/', async (ctx) => {
|
||||||
const {
|
const {
|
||||||
|
host, port, name, username, password,
|
||||||
|
} = ctx.request.body;
|
||||||
|
let mongourl = 'mongodb://';
|
||||||
|
if (username) mongourl += `${username}:${password}@`;
|
||||||
|
mongourl += `${host}:${port}/${name}`;
|
||||||
|
try {
|
||||||
|
const Database = await mongodb.MongoClient.connect(mongourl, {
|
||||||
|
useNewUrlParser: true, useUnifiedTopology: true,
|
||||||
|
});
|
||||||
|
const db = Database.db(name);
|
||||||
|
await Promise.all([
|
||||||
|
db.collection('system').updateOne(
|
||||||
|
{ _id: 'server.host' },
|
||||||
|
{ $set: { value: ctx.request.host } },
|
||||||
|
{ upsert: true },
|
||||||
|
),
|
||||||
|
db.collection('system').updateOne(
|
||||||
|
{ _id: 'server.hostname' },
|
||||||
|
{ $set: { value: ctx.request.hostname } },
|
||||||
|
{ upsert: true },
|
||||||
|
),
|
||||||
|
db.collection('system').updateOne(
|
||||||
|
{ _id: 'server.url' },
|
||||||
|
{ $set: { value: ctx.request.href } },
|
||||||
|
{ upsert: true },
|
||||||
|
),
|
||||||
|
db.collection('system').updateOne(
|
||||||
|
{ _id: 'server.port' },
|
||||||
|
{ $set: { value: listenPort } },
|
||||||
|
{ upsert: true },
|
||||||
|
),
|
||||||
|
]);
|
||||||
|
fs.writeFileSync(path.resolve(process.cwd(), 'config.json'), JSON.stringify({
|
||||||
host, port, name, username, password,
|
host, port, name, username, password,
|
||||||
} = ctx.request.body;
|
}));
|
||||||
let mongourl = 'mongodb://';
|
ctx.body = `<h1>This page will reload in 3 secs.</h1>
|
||||||
if (username) mongourl += `${username}:${password}@`;
|
<script>
|
||||||
mongourl += `${host}:${port}/${name}`;
|
setTimeout(function (){
|
||||||
try {
|
window.location.href = '/';
|
||||||
const Database = await mongodb.MongoClient.connect(mongourl, {
|
}, 3000);
|
||||||
useNewUrlParser: true, useUnifiedTopology: true,
|
</script>`;
|
||||||
});
|
setTimeout(() => process.exit(0), 500);
|
||||||
const db = Database.db(name);
|
} catch (e) {
|
||||||
await Promise.all([
|
ctx.body = `Error connecting to database: ${e.message}\n${e.stack}`;
|
||||||
db.collection('system').updateOne(
|
}
|
||||||
{ _id: 'server.host' },
|
|
||||||
{ $set: { value: ctx.request.host } },
|
|
||||||
{ upsert: true },
|
|
||||||
),
|
|
||||||
db.collection('system').updateOne(
|
|
||||||
{ _id: 'server.hostname' },
|
|
||||||
{ $set: { value: ctx.request.hostname } },
|
|
||||||
{ upsert: true },
|
|
||||||
),
|
|
||||||
db.collection('system').updateOne(
|
|
||||||
{ _id: 'server.url' },
|
|
||||||
{ $set: { value: ctx.request.href } },
|
|
||||||
{ upsert: true },
|
|
||||||
),
|
|
||||||
]);
|
|
||||||
fs.writeFileSync(path.resolve(process.cwd(), 'config.json'), JSON.stringify({
|
|
||||||
host, port, name, username, password,
|
|
||||||
}));
|
|
||||||
ctx.redirect('/');
|
|
||||||
resolve();
|
|
||||||
} catch (e) {
|
|
||||||
ctx.body = `Error connecting to database: ${e.message}\n${e.stack}`;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
app.use(router.routes()).use(router.allowedMethods());
|
app.use(router.routes()).use(router.allowedMethods());
|
||||||
server.listen(8888);
|
server.listen(listenPort);
|
||||||
console.log('Server listening at: 8888');
|
console.log('Server listening at:', listenPort);
|
||||||
await p;
|
|
||||||
await new Promise((resolve, reject) => {
|
|
||||||
server.close((err) => {
|
|
||||||
if (err) reject(err);
|
|
||||||
else resolve();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
return 'Done! Restarting...';
|
|
||||||
}
|
}
|
||||||
+53
-108
@@ -1,123 +1,68 @@
|
|||||||
import fs from 'fs';
|
/* eslint-disable no-continue */
|
||||||
import os from 'os';
|
import os from 'os';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import zlib from 'zlib';
|
import AdmZip from 'adm-zip';
|
||||||
import yaml from 'js-yaml';
|
import fs from 'fs-extra';
|
||||||
|
|
||||||
function ensureDir(dir) {
|
const moduleRoots = Array.from(new Set([
|
||||||
if (!fs.existsSync(dir)) {
|
path.resolve(process.cwd(), 'node_modules', '@hydrooj'),
|
||||||
fs.mkdirSync(dir);
|
path.resolve(process.cwd(), 'modules'),
|
||||||
} else if (!fs.statSync(dir).isDirectory()) {
|
path.resolve(process.cwd(), 'module'),
|
||||||
fs.unlinkSync(dir);
|
path.resolve(process.cwd(), '.build'),
|
||||||
fs.mkdirSync(dir);
|
process.cwd(),
|
||||||
}
|
path.resolve(__dirname, 'node_modules', '@hydrooj'),
|
||||||
}
|
path.resolve(__dirname, 'modules'),
|
||||||
|
path.resolve(__dirname, 'module'),
|
||||||
|
path.resolve(__dirname, '.build'),
|
||||||
|
__dirname,
|
||||||
|
path.resolve(os.homedir(), '.hydro', 'module'),
|
||||||
|
]));
|
||||||
|
|
||||||
function root(name) {
|
const moduleTemp = path.resolve(os.tmpdir(), 'hydro', 'module');
|
||||||
return path.resolve(process.cwd(), name);
|
const publicTemp = path.resolve(os.tmpdir(), 'hydro', 'public');
|
||||||
}
|
const tmp = path.resolve(os.tmpdir(), 'hydro', '__');
|
||||||
|
|
||||||
const moduleRoots = [
|
|
||||||
root('.build/module'),
|
|
||||||
root('module'),
|
|
||||||
root(path.resolve(os.homedir(), '.hydro', 'module')),
|
|
||||||
root('.'),
|
|
||||||
];
|
|
||||||
let moduleRoot;
|
|
||||||
for (const i of moduleRoots) {
|
|
||||||
if (fs.existsSync(i) && fs.statSync(i).isDirectory()) {
|
|
||||||
moduleRoot = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function load() {
|
export async function load() {
|
||||||
process.on('unhandledRejection', (e) => {
|
process.on('unhandledRejection', (e) => {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
});
|
});
|
||||||
ensureDir(path.resolve(os.tmpdir(), 'hydro'));
|
fs.ensureDirSync(moduleTemp);
|
||||||
ensureDir(path.resolve(os.tmpdir(), 'hydro', 'tmp'));
|
fs.ensureDirSync(publicTemp);
|
||||||
ensureDir(path.resolve(os.tmpdir(), 'hydro', 'public'));
|
for (const moduleRoot of moduleRoots) {
|
||||||
const files = fs.readdirSync(moduleRoot);
|
if (fs.existsSync(moduleRoot)) {
|
||||||
const t = ['service', 'lib', 'model', 'handler', 'script'];
|
const files = fs.readdirSync(moduleRoot);
|
||||||
for (const file of files) {
|
for (const file of files) {
|
||||||
if (file.endsWith('.hydro')) {
|
try {
|
||||||
try {
|
// This fixs a mistake.
|
||||||
const f = fs.readFileSync(root(`${moduleRoot}/${file}`));
|
// Markdown-it-katex is not a hydro module but a dependency.
|
||||||
const s = fs.statSync(root(`${moduleRoot}/${file}`));
|
if (file === 'markdown-it-katex') continue;
|
||||||
const m: any = yaml.safeLoad(zlib.gunzipSync(f).toString());
|
const modulePath = path.join(moduleRoot, file);
|
||||||
const { id } = m;
|
const packagejson = path.join(modulePath, 'package.json');
|
||||||
if (m.os) {
|
if (fs.statSync(modulePath).isFile() && file.endsWith('.hydro')) {
|
||||||
if (!m.os.includes(os.platform().toLowerCase())) {
|
// Is *.hydro module
|
||||||
console.error(`Module load fail: ${id} ${file.split('.')[0]} Unsupported OS`);
|
const zip = new AdmZip(modulePath);
|
||||||
// eslint-disable-next-line no-continue
|
const targetPath = path.resolve(moduleTemp, file.split('.')[0]);
|
||||||
continue;
|
zip.extractAllTo(targetPath, true);
|
||||||
}
|
const content = fs.readdirSync(targetPath);
|
||||||
}
|
const ipath = path.join(targetPath, content[0]);
|
||||||
ensureDir(`${os.tmpdir()}/hydro/tmp/${id}`);
|
if (content.length === 1 && fs.statSync(ipath).isDirectory()) {
|
||||||
if (m.locale) {
|
fs.moveSync(ipath, tmp);
|
||||||
fs.writeFileSync(
|
fs.rmdirSync(targetPath);
|
||||||
`${os.tmpdir()}/hydro/tmp/${id}/locale.json`,
|
fs.moveSync(tmp, targetPath);
|
||||||
JSON.stringify(m.locale),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if (m.setting) {
|
|
||||||
fs.writeFileSync(
|
|
||||||
`${os.tmpdir()}/hydro/tmp/${id}/setting.yaml`,
|
|
||||||
m.setting,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if (m.template) {
|
|
||||||
fs.writeFileSync(
|
|
||||||
`${os.tmpdir()}/hydro/tmp/${id}/template.json`,
|
|
||||||
JSON.stringify(m.template),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
for (const i of t) {
|
|
||||||
if (m[i]) {
|
|
||||||
fs.writeFileSync(
|
|
||||||
`${os.tmpdir()}/hydro/tmp/${id}/${i}.js`,
|
|
||||||
m[i],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (m.file) {
|
|
||||||
ensureDir(path.resolve(os.tmpdir(), 'hydro', m.id));
|
|
||||||
for (const n in m.file) {
|
|
||||||
if (m.file[n] === null) {
|
|
||||||
ensureDir(path.resolve(os.tmpdir(), 'hydro', m.id, n));
|
|
||||||
} else {
|
|
||||||
const e = path.resolve(os.tmpdir(), 'hydro', m.id, n);
|
|
||||||
fs.writeFileSync(e, Buffer.from(m.file[n], 'base64'), { mode: 755 });
|
|
||||||
}
|
}
|
||||||
}
|
const publicPath = path.resolve(moduleTemp, file.split('.')[0], 'public');
|
||||||
|
if (fs.existsSync(publicPath)) fs.copySync(publicPath, publicTemp);
|
||||||
|
} else if (fs.existsSync(packagejson)) {
|
||||||
|
// Is a npm package
|
||||||
|
const q = fs.readFileSync(packagejson).toString();
|
||||||
|
if (!JSON.parse(q).name.startsWith('@hydrooj/')) continue;
|
||||||
|
const publicPath = path.resolve(modulePath, 'public');
|
||||||
|
if (fs.existsSync(publicPath)) fs.copySync(publicPath, publicTemp);
|
||||||
|
} else continue;
|
||||||
|
} catch (e) {
|
||||||
|
console.error('Module extract fail:', file, e);
|
||||||
}
|
}
|
||||||
if (m.public) {
|
|
||||||
ensureDir(path.resolve(os.tmpdir(), 'hydro', 'public'));
|
|
||||||
for (const n in m.public) {
|
|
||||||
if (m.public[n] === null) {
|
|
||||||
ensureDir(path.resolve(os.tmpdir(), 'hydro', 'public', n));
|
|
||||||
} else {
|
|
||||||
const e = path.resolve(os.tmpdir(), 'hydro', 'public', n);
|
|
||||||
fs.writeFileSync(e, Buffer.from(m.public[n], 'base64'), { mode: 755 });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fs.writeFileSync(
|
|
||||||
root(`${os.tmpdir()}/hydro/tmp/${id}/hydro.json`),
|
|
||||||
JSON.stringify({
|
|
||||||
size: s.size,
|
|
||||||
version: m.version,
|
|
||||||
id: m.id,
|
|
||||||
name: m.name,
|
|
||||||
description: m.description,
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
} catch (e) {
|
|
||||||
if (e.code === 'Z_DATA_ERROR') {
|
|
||||||
console.error(`Module Load Fail: ${file} (File Corrupted)`);
|
|
||||||
} else console.error(`Module Load Fail: ${file} ${e}`);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -92,11 +92,6 @@ class SystemModuleHandler extends SystemHandler {
|
|||||||
await hpm.install(url);
|
await hpm.install(url);
|
||||||
this.back();
|
this.back();
|
||||||
}
|
}
|
||||||
|
|
||||||
async postDelete({ id }) {
|
|
||||||
await hpm.del(id);
|
|
||||||
this.back();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class SystemScriptHandler extends SystemHandler {
|
class SystemScriptHandler extends SystemHandler {
|
||||||
|
|||||||
+31
-42
@@ -7,32 +7,21 @@ import path from 'path';
|
|||||||
import download from './download';
|
import download from './download';
|
||||||
import { folderSize } from '../utils';
|
import { folderSize } from '../utils';
|
||||||
|
|
||||||
function root(name: string) {
|
const moduleRoots = Array.from(new Set([
|
||||||
return path.resolve(process.cwd(), name);
|
path.resolve(process.cwd(), 'node_modules', '@hydrooj'),
|
||||||
}
|
path.resolve(__dirname, 'node_modules', '@hydrooj'),
|
||||||
|
path.resolve(os.tmpdir(), 'hydro', 'module'),
|
||||||
const moduleRoots = [
|
]));
|
||||||
root('.build/module'),
|
|
||||||
root('module'),
|
|
||||||
root(path.resolve(os.homedir(), '.hydro', 'module')),
|
|
||||||
root('.'),
|
|
||||||
];
|
|
||||||
|
|
||||||
let moduleRoot: string;
|
|
||||||
for (const i of moduleRoots) {
|
|
||||||
if (fs.existsSync(i) && fs.statSync(i).isDirectory()) {
|
|
||||||
moduleRoot = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function getInstalled() {
|
export async function getInstalled() {
|
||||||
const modules = [];
|
const modules = [];
|
||||||
const files = fs.readdirSync(`${os.tmpdir()}/hydro/tmp`);
|
for (const moduleRoot of moduleRoots) {
|
||||||
for (const file of files) {
|
if (fs.existsSync(moduleRoot)) {
|
||||||
const info = `${os.tmpdir()}/hydro/tmp/${file}/hydro.json`;
|
const files = fs.readdirSync(moduleRoot);
|
||||||
if (fs.existsSync(info)) {
|
for (const file of files) {
|
||||||
modules.push(file);
|
const info = path.resolve(moduleRoot, file, 'package.json');
|
||||||
|
if (fs.existsSync(info)) modules.push(path.resolve(moduleRoot, file));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return modules;
|
return modules;
|
||||||
@@ -40,31 +29,31 @@ export async function getInstalled() {
|
|||||||
|
|
||||||
export async function getDetail() {
|
export async function getDetail() {
|
||||||
const modules = [];
|
const modules = [];
|
||||||
const files = fs.readdirSync(`${os.tmpdir()}/hydro/tmp`);
|
for (const moduleRoot of moduleRoots) {
|
||||||
for (const file of files) {
|
if (fs.existsSync(moduleRoot)) {
|
||||||
const info = `${os.tmpdir()}/hydro/tmp/${file}/hydro.json`;
|
const files = fs.readdirSync(moduleRoot);
|
||||||
if (fs.existsSync(info)) {
|
for (const file of files) {
|
||||||
const i = JSON.parse(fs.readFileSync(info).toString());
|
const info = path.resolve(moduleRoot, file, 'package.json');
|
||||||
const size = folderSize(`${os.tmpdir()}/hydro/tmp/${file}`);
|
if (fs.existsSync(info)) {
|
||||||
modules.push({
|
const i = JSON.parse(fs.readFileSync(info).toString());
|
||||||
id: i.id,
|
const size = folderSize(path.resolve(moduleRoot, file));
|
||||||
version: i.version,
|
modules.push({
|
||||||
description: i.description,
|
id: i.name,
|
||||||
size,
|
version: i.version,
|
||||||
});
|
description: i.description,
|
||||||
|
size,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return modules;
|
return modules;
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function del(id: string) {
|
export function install(url: string, name: string = '') {
|
||||||
fs.unlinkSync(root(`${moduleRoot}/${id}.hydro`));
|
return download(url, path.resolve(process.cwd(), `${name || String.random(16)}.hydro`));
|
||||||
}
|
|
||||||
|
|
||||||
export function install(url: string) {
|
|
||||||
return download(url, root(`${moduleRoot}/${String.random(16)}.hydro`));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
global.Hydro.lib.hpm = {
|
global.Hydro.lib.hpm = {
|
||||||
getInstalled, getDetail, del, install,
|
getInstalled, getDetail, install,
|
||||||
};
|
};
|
||||||
+3
-1
@@ -42,7 +42,9 @@ async function terminate() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function fork(args: string[] = []) {
|
async function fork(args: string[] = []) {
|
||||||
cluster.setupMaster({ args });
|
const _args = process.argv.slice(2);
|
||||||
|
_args.push(...args);
|
||||||
|
cluster.setupMaster({ args: _args });
|
||||||
return cluster.fork();
|
return cluster.fork();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -154,7 +154,7 @@ export const PERMS = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
let PERM_ALL = 0n;
|
let PERM_ALL = 0n;
|
||||||
for (const p in PERM) if (PERM[p]) PERM_ALL += PERM[p];
|
for (const p in PERM) if (PERM[p]) PERM_ALL |= PERM[p];
|
||||||
PERM.PERM_ALL = PERM_ALL;
|
PERM.PERM_ALL = PERM_ALL;
|
||||||
|
|
||||||
export const PERMS_BY_FAMILY = {};
|
export const PERMS_BY_FAMILY = {};
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import { FindOneAndUpdateOption } from 'mongodb';
|
import { FindOneAndUpdateOption } from 'mongodb';
|
||||||
import { Dictionary } from 'lodash';
|
|
||||||
import * as db from '../service/db';
|
import * as db from '../service/db';
|
||||||
|
|
||||||
const coll = db.collection('system');
|
const coll = db.collection('system');
|
||||||
|
|||||||
+7
-13
@@ -1,17 +1,11 @@
|
|||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
import os from 'os';
|
import os from 'os';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import { defaults } from 'lodash';
|
|
||||||
|
|
||||||
let f = path.resolve(process.cwd(), 'config.json');
|
export default function load() {
|
||||||
if (!fs.existsSync(f)) f = path.resolve(os.homedir(), '.config', 'hydro', 'config.json');
|
let f = path.resolve(process.cwd(), 'config.json');
|
||||||
if (!fs.existsSync(f)) f = path.resolve('/config/config.json');
|
if (!fs.existsSync(f)) f = path.resolve(__dirname, 'config.json');
|
||||||
const t = JSON.parse(fs.readFileSync(f).toString());
|
if (!fs.existsSync(f)) f = path.resolve(os.homedir(), '.config', 'hydro', 'config.json');
|
||||||
|
if (!fs.existsSync(f)) f = path.resolve('/config/config.json');
|
||||||
export default defaults(t, {
|
return JSON.parse(fs.readFileSync(f).toString());
|
||||||
name: 'hydro',
|
}
|
||||||
host: '127.0.0.1',
|
|
||||||
port: 27017,
|
|
||||||
username: '',
|
|
||||||
password: '',
|
|
||||||
});
|
|
||||||
+5
-3
@@ -2,16 +2,18 @@ import mongodb from 'mongodb';
|
|||||||
import * as bus from './bus';
|
import * as bus from './bus';
|
||||||
import options from '../options';
|
import options from '../options';
|
||||||
|
|
||||||
|
const opts = options();
|
||||||
|
|
||||||
let mongourl = 'mongodb://';
|
let mongourl = 'mongodb://';
|
||||||
if (options.username) mongourl += `${options.username}:${options.password}@`;
|
if (opts.username) mongourl += `${opts.username}:${opts.password}@`;
|
||||||
mongourl += `${options.host}:${options.port}/${options.name}`;
|
mongourl += `${opts.host}:${opts.port}/${opts.name}`;
|
||||||
|
|
||||||
// eslint-disable-next-line import/no-mutable-exports
|
// eslint-disable-next-line import/no-mutable-exports
|
||||||
export let db: mongodb.Db = null;
|
export let db: mongodb.Db = null;
|
||||||
|
|
||||||
mongodb.MongoClient.connect(mongourl, { useNewUrlParser: true, useUnifiedTopology: true })
|
mongodb.MongoClient.connect(mongourl, { useNewUrlParser: true, useUnifiedTopology: true })
|
||||||
.then((Client) => {
|
.then((Client) => {
|
||||||
db = Client.db(options.name);
|
db = Client.db(opts.name);
|
||||||
bus.publish('system_database_connected', null);
|
bus.publish('system_database_connected', null);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ Accepted: 已通过
|
|||||||
Access Control: 访问控制
|
Access Control: 访问控制
|
||||||
Action: 动作
|
Action: 动作
|
||||||
Active Sessions: 活动会话
|
Active Sessions: 活动会话
|
||||||
|
Add module: 添加模块
|
||||||
Add new data: 添加新数据
|
Add new data: 添加新数据
|
||||||
Add User: 添加用户
|
Add User: 添加用户
|
||||||
Add: 添加
|
Add: 添加
|
||||||
@@ -151,6 +152,7 @@ Copy QQ Number: 复制QQ号
|
|||||||
Copy WeChat Account: 复制微信号
|
Copy WeChat Account: 复制微信号
|
||||||
Copy: 复制
|
Copy: 复制
|
||||||
Copyright Complaint: 版权申诉
|
Copyright Complaint: 版权申诉
|
||||||
|
CPU Info: CPU信息
|
||||||
Create a contest: 创建一个比赛
|
Create a contest: 创建一个比赛
|
||||||
Create a Discussion: 创建一个讨论
|
Create a Discussion: 创建一个讨论
|
||||||
Create a problem: 创建一个题目
|
Create a problem: 创建一个题目
|
||||||
@@ -177,6 +179,7 @@ Current Email: 当前电子邮件
|
|||||||
Current Location: 当前位置
|
Current Location: 当前位置
|
||||||
Current password doesn't match.: 当前密码输入错误。
|
Current password doesn't match.: 当前密码输入错误。
|
||||||
Current Password: 当前密码
|
Current Password: 当前密码
|
||||||
|
Current Status: 当前状态
|
||||||
currently offline: 目前离线
|
currently offline: 目前离线
|
||||||
Data of Problem {0} not found.: 题目 {0} 的数据缺失。
|
Data of Problem {0} not found.: 题目 {0} 的数据缺失。
|
||||||
Data of problem {1} not found.: 题目 {1} 的数据未找到。
|
Data of problem {1} not found.: 题目 {1} 的数据未找到。
|
||||||
@@ -358,6 +361,7 @@ Inline codes: 行内代码
|
|||||||
Inline formulas: 行内公式
|
Inline formulas: 行内公式
|
||||||
Insert Code: 插入代码
|
Insert Code: 插入代码
|
||||||
Insert Image: 插入图像
|
Insert Image: 插入图像
|
||||||
|
Installed Modules: 已安装的模块
|
||||||
Instead of copying the test data directly, the test data of the copied problems will be linked to the test data of the source problems (called the source test data). Thus, the copied problems can observe the changes in the source test data. The permissions of the test data of the copied problems follow the source test data, e.g., you still might not download them but the judges can. By uploading some new test data, the link will be broken and the new test data will be used.: 虽然测试数据不会被复制,但是系统会将题目的测试数据链接到原题。因此在原题的数据被改动的时候,复制后的题目的数据也会同时改动。链接后的测试数据的权限以原题为准,比如您可能依旧无法下载数据,但是评测机可以。在题目设置页面中可以通过上传新的测试数据的方式,这个数据链接会被删除,以后将使用您的新测试数据。
|
Instead of copying the test data directly, the test data of the copied problems will be linked to the test data of the source problems (called the source test data). Thus, the copied problems can observe the changes in the source test data. The permissions of the test data of the copied problems follow the source test data, e.g., you still might not download them but the judges can. By uploading some new test data, the link will be broken and the new test data will be used.: 虽然测试数据不会被复制,但是系统会将题目的测试数据链接到原题。因此在原题的数据被改动的时候,复制后的题目的数据也会同时改动。链接后的测试数据的权限以原题为准,比如您可能依旧无法下载数据,但是评测机可以。在题目设置页面中可以通过上传新的测试数据的方式,这个数据链接会被删除,以后将使用您的新测试数据。
|
||||||
Introduce must not exceed 500 characters and it will be shown in the list view.: 简介不能超过 500 个字符,将显示在列表页面中。
|
Introduce must not exceed 500 characters and it will be shown in the list view.: 简介不能超过 500 个字符,将显示在列表页面中。
|
||||||
Introduce: 简介
|
Introduce: 简介
|
||||||
@@ -365,6 +369,7 @@ Invalid password for user {0}.: 用户 {0} 的密码错误。
|
|||||||
Invalid: 无效
|
Invalid: 无效
|
||||||
Invitation Code: 邀请码
|
Invitation Code: 邀请码
|
||||||
IO: 输入输出
|
IO: 输入输出
|
||||||
|
Is rated: 计入排名
|
||||||
It works!: 它成了!
|
It works!: 它成了!
|
||||||
Italic: 斜体
|
Italic: 斜体
|
||||||
Join: 加入
|
Join: 加入
|
||||||
@@ -411,6 +416,7 @@ Manager: 管理
|
|||||||
Mark Green: 标绿
|
Mark Green: 标绿
|
||||||
Mark Yellow: 标黄
|
Mark Yellow: 标黄
|
||||||
Memory Cost: 内存占用
|
Memory Cost: 内存占用
|
||||||
|
Memory Info: 内存信息
|
||||||
Memory: 内存
|
Memory: 内存
|
||||||
Message {0} not found.: 消息 {0} 不存在。
|
Message {0} not found.: 消息 {0} 不存在。
|
||||||
Messages: 消息
|
Messages: 消息
|
||||||
@@ -445,6 +451,7 @@ No solutions so far...: 目前还没有题解...
|
|||||||
No Submissions: 没有递交
|
No Submissions: 没有递交
|
||||||
No user is allowed to join this domain: 没有用户可以自助加入此域
|
No user is allowed to join this domain: 没有用户可以自助加入此域
|
||||||
no_translation_warn: ''
|
no_translation_warn: ''
|
||||||
|
None: 无
|
||||||
Not Attended: 未参加
|
Not Attended: 未参加
|
||||||
Not available: 不可用
|
Not available: 不可用
|
||||||
Not Claimed: 未认领
|
Not Claimed: 未认领
|
||||||
@@ -471,6 +478,7 @@ Ops: 运维
|
|||||||
Or, with automatically filled invitation code: 或者,这是可以自动填写邀请码的
|
Or, with automatically filled invitation code: 或者,这是可以自动填写邀请码的
|
||||||
Ordered List: 有序列表
|
Ordered List: 有序列表
|
||||||
Original Score: 原始分数
|
Original Score: 原始分数
|
||||||
|
OS Info: 系统信息
|
||||||
Owner: 所有者
|
Owner: 所有者
|
||||||
page.problem_detail.sidebar.show_category: 点击显示
|
page.problem_detail.sidebar.show_category: 点击显示
|
||||||
page.training_detail.invalid_when_not_enrolled: 未参加训练计划时您不能查看题目详情。
|
page.training_detail.invalid_when_not_enrolled: 未参加训练计划时您不能查看题目详情。
|
||||||
@@ -478,6 +486,7 @@ pager_first: « 第一页
|
|||||||
pager_last: 末页 »
|
pager_last: 末页 »
|
||||||
pager_next: 下一页 ›
|
pager_next: 下一页 ›
|
||||||
pager_previous: ‹ 前一页
|
pager_previous: ‹ 前一页
|
||||||
|
Params: 参数
|
||||||
Partic.: 参赛人数
|
Partic.: 参赛人数
|
||||||
Password reset mail has been sent to your email.: 密码重置邮件已发送到您的电子邮箱。
|
Password reset mail has been sent to your email.: 密码重置邮件已发送到您的电子邮箱。
|
||||||
Password: 密码
|
Password: 密码
|
||||||
@@ -580,6 +589,7 @@ required: 必填
|
|||||||
Reset Password or Find Username: 重置密码或找回用户名
|
Reset Password or Find Username: 重置密码或找回用户名
|
||||||
Reset Password: 重置密码
|
Reset Password: 重置密码
|
||||||
Reset: 重置
|
Reset: 重置
|
||||||
|
Restart: 重新启动
|
||||||
Role Assignment: 角色分配
|
Role Assignment: 角色分配
|
||||||
Role has been updated to {0} for selected users.: 所选用户角色已更新为 {0}。
|
Role has been updated to {0} for selected users.: 所选用户角色已更新为 {0}。
|
||||||
Role has been updated to {0}.: 角色已更新为 {0}。
|
Role has been updated to {0}.: 角色已更新为 {0}。
|
||||||
@@ -752,6 +762,7 @@ Users: 用户
|
|||||||
Using your Hydro universal account: 使用您的 Hydro 通用账户
|
Using your Hydro universal account: 使用您的 Hydro 通用账户
|
||||||
Valid for registered users who are not members of the domain: 对域外注册用户有效
|
Valid for registered users who are not members of the domain: 对域外注册用户有效
|
||||||
Valid for visitors: 对未登录的游客有效
|
Valid for visitors: 对未登录的游客有效
|
||||||
|
Version: 版本
|
||||||
View contest scoreboard: 查看比赛成绩表
|
View contest scoreboard: 查看比赛成绩表
|
||||||
View Contest: 查看比赛
|
View Contest: 查看比赛
|
||||||
View contests: 查看比赛
|
View contests: 查看比赛
|
||||||
|
|||||||
@@ -1,53 +0,0 @@
|
|||||||
const { Route, Handler } = global.Hydro.service.server;
|
|
||||||
const { PRIV: { PRIV_USER_PROFILE } } = global.Hydro.model.builtin;
|
|
||||||
const { pastebin } = global.Hydro.model;
|
|
||||||
const { nav } = global.Hydro.lib;
|
|
||||||
|
|
||||||
class PasteMainHandler extends Handler {
|
|
||||||
async get() {
|
|
||||||
this.response.redirect = this.url('paste_create');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class PasteShowHandler extends Handler {
|
|
||||||
async get({ docId }) {
|
|
||||||
const doc = await pastebin.get(docId);
|
|
||||||
const path = [
|
|
||||||
['Hydro', 'homepage'],
|
|
||||||
['paste_show', null],
|
|
||||||
[doc.title, null, true],
|
|
||||||
];
|
|
||||||
this.response.body = { path, doc };
|
|
||||||
this.response.template = 'paste_show.html';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class PasteCreateHandler extends Handler {
|
|
||||||
async get() {
|
|
||||||
const path = [
|
|
||||||
['Hydro', 'homepage'],
|
|
||||||
['paste_create', null],
|
|
||||||
];
|
|
||||||
this.response.body = { path };
|
|
||||||
this.response.template = 'paste_create.html';
|
|
||||||
}
|
|
||||||
|
|
||||||
async post({
|
|
||||||
language, expire, password, title, content,
|
|
||||||
}) {
|
|
||||||
const docId = await pastebin.add({
|
|
||||||
language, expire, password, owner: this.user._id, title, content,
|
|
||||||
});
|
|
||||||
this.response.body = { docId };
|
|
||||||
this.response.redirect = `/paste/${docId}`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async function apply() {
|
|
||||||
Route('pastebin', '/paste', PasteMainHandler);
|
|
||||||
Route('paste_create', '/paste/create', PasteCreateHandler, PRIV_USER_PROFILE);
|
|
||||||
Route('paste_show', '/paste/:docId', PasteShowHandler);
|
|
||||||
nav('pastebin', null, 'pastebin', PRIV_USER_PROFILE);
|
|
||||||
}
|
|
||||||
|
|
||||||
global.Hydro.handler.pastebin = module.exports = apply;
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "module-pastebin",
|
|
||||||
"version": "1.0.0",
|
|
||||||
"description": "Provide pastebin service."
|
|
||||||
}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
paste_create: Create a paste
|
|
||||||
paste_show: Read a paste
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
pastebin: 剪贴板
|
|
||||||
paste_create: 创建新内容
|
|
||||||
paste_show: 查看内容
|
|
||||||
Provide pastebin service.: 提供云剪贴板服务。
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
const { DocumentNotFoundError } = global.Hydro.error;
|
|
||||||
const { document } = global.Hydro.model;
|
|
||||||
|
|
||||||
document.TYPE_PASTE = 101;
|
|
||||||
|
|
||||||
function add({
|
|
||||||
owner, language, expire, password, title, content,
|
|
||||||
}) {
|
|
||||||
return document.add(
|
|
||||||
'system', content, owner, document.TYPE_PASTE, null, null, null,
|
|
||||||
{
|
|
||||||
language, expire, title, password,
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
async function get(_id) {
|
|
||||||
const doc = await document.get('system', document.TYPE_PASTE, _id);
|
|
||||||
if (!doc) throw new DocumentNotFoundError(_id);
|
|
||||||
return doc;
|
|
||||||
}
|
|
||||||
|
|
||||||
function del(_id) {
|
|
||||||
return document.deleteOne('system', document.TYPE_PASTE, _id);
|
|
||||||
}
|
|
||||||
|
|
||||||
global.Hydro.model.pastebin = module.exports = { add, get, del };
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
{% set page_name = "paste_create" %}
|
|
||||||
{% extends "layout/basic.html" %}
|
|
||||||
{% block content %}
|
|
||||||
<div class="row">
|
|
||||||
<div class="medium-9 columns">
|
|
||||||
<div class="section">
|
|
||||||
<div class="section__body">
|
|
||||||
<form method="post">
|
|
||||||
<div class="row">
|
|
||||||
<div class="medium-7 columns">
|
|
||||||
<label>
|
|
||||||
{{ _('Title') }}
|
|
||||||
<input name="title" placeholder="{{ _('title') }}" class="textbox" autofocus>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div class="medium-3 columns">
|
|
||||||
<label>
|
|
||||||
{{ _('Language') }}
|
|
||||||
<br>
|
|
||||||
<label>
|
|
||||||
<input name="language" placeholder="{{ _('Language of the content') }}" class="textbox">
|
|
||||||
</label>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div class="medium-2 columns">
|
|
||||||
<label>
|
|
||||||
<br>
|
|
||||||
<label class="checkbox">
|
|
||||||
<input type="checkbox" name="private" value="on">{{ _('Private') }}
|
|
||||||
</label>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row"><div class="columns">
|
|
||||||
<label>
|
|
||||||
{{ _('Content') }}
|
|
||||||
<textarea name="content" class="textbox" data-markdown style="height: 500px"></textarea>
|
|
||||||
</label>
|
|
||||||
</div></div>
|
|
||||||
<div class="row"><div class="columns">
|
|
||||||
<input type="hidden" name="csrfToken" value="{{ handler.csrfToken }}">
|
|
||||||
<button type="submit" class="rounded primary button">
|
|
||||||
{{ _('Create') }}
|
|
||||||
</button>
|
|
||||||
</div></div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="medium-3 columns">
|
|
||||||
{% include 'components/md_hint.html' %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
{% set page_name = "paste_create" %}
|
|
||||||
{% extends "layout/basic.html" %}
|
|
||||||
{% block content %}
|
|
||||||
<div class="row">
|
|
||||||
<div class="medium-9 columns">
|
|
||||||
<div class="section">
|
|
||||||
<div class="section__body">
|
|
||||||
<form method="post">
|
|
||||||
<div class="row">
|
|
||||||
<div class="medium-7 columns">
|
|
||||||
<label>
|
|
||||||
{{ _('Title') }}
|
|
||||||
<input name="title" value="{{ doc.title }}" class="textbox" autofocus>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div class="medium-3 columns">
|
|
||||||
<label>
|
|
||||||
{{ _('Language') }}
|
|
||||||
<br>
|
|
||||||
<label>
|
|
||||||
<input name="language" value="{{ doc.language }}" class="textbox">
|
|
||||||
</label>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div class="medium-2 columns">
|
|
||||||
<label>
|
|
||||||
<br>
|
|
||||||
<label class="checkbox">
|
|
||||||
<input type="checkbox" name="private" value="on">{{ _('Private') }}
|
|
||||||
</label>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row"><div class="columns">
|
|
||||||
<label>
|
|
||||||
{{ _('Content') }}
|
|
||||||
<textarea name="content" class="textbox" style="height: 500px">{{ doc.content }}</textarea>
|
|
||||||
</label>
|
|
||||||
</div></div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="medium-3 columns">
|
|
||||||
{% include 'components/md_hint.html' %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
||||||
+13
-3
@@ -1,16 +1,20 @@
|
|||||||
{
|
{
|
||||||
"name": "hydrooj",
|
"name": "hydrooj",
|
||||||
"version": "2.7.5",
|
"version": "2.8.0",
|
||||||
"main": "hydro/loader.ts",
|
"main": "hydro/loader.ts",
|
||||||
"repository": "https://github.com/hydro-dev/Hydro.git",
|
"repository": "https://github.com/hydro-dev/Hydro.git",
|
||||||
"author": "masnn",
|
"author": "masnn",
|
||||||
"license": "GPL-3.0-only",
|
"license": "GPL-3.0-only",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.10"
|
||||||
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@hydrooj/markdown-it-katex": "^2.1.1",
|
"@hydrooj/markdown-it-katex": "^2.1.1",
|
||||||
"@types/lru-cache": "^5.1.0",
|
"@types/lru-cache": "^5.1.0",
|
||||||
"adm-zip": "^0.4.16",
|
"adm-zip": "^0.4.16",
|
||||||
"ansi_up": "^4.0.4",
|
"ansi_up": "^4.0.4",
|
||||||
"detect-browser": "^5.1.1",
|
"detect-browser": "^5.1.1",
|
||||||
|
"fs-extra": "^9.0.1",
|
||||||
"js-yaml": "^3.13.1",
|
"js-yaml": "^3.13.1",
|
||||||
"koa": "^2.13.0",
|
"koa": "^2.13.0",
|
||||||
"koa-body": "^4.2.0",
|
"koa-body": "^4.2.0",
|
||||||
@@ -41,6 +45,7 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/adm-zip": "^0.4.33",
|
"@types/adm-zip": "^0.4.33",
|
||||||
|
"@types/fs-extra": "^9.0.1",
|
||||||
"@types/koa": "^2.11.3",
|
"@types/koa": "^2.11.3",
|
||||||
"@types/koa-morgan": "^1.0.4",
|
"@types/koa-morgan": "^1.0.4",
|
||||||
"@types/koa-router": "^7.4.1",
|
"@types/koa-router": "^7.4.1",
|
||||||
@@ -73,7 +78,7 @@
|
|||||||
"build": "node build --development",
|
"build": "node build --development",
|
||||||
"build:development": "node build --development",
|
"build:development": "node build --development",
|
||||||
"build:production": "node build --production",
|
"build:production": "node build --production",
|
||||||
"build:all": "cd ui && yarn && yarn build:production && cd .. && yarn && yarn build:production",
|
"build:all": "cd ui && yarn && yarn build:production && cd .. && yarn --ignore-optional && yarn build:production",
|
||||||
"start": "ts-node hydro/loader.ts",
|
"start": "ts-node hydro/loader.ts",
|
||||||
"pkg": "pkg .",
|
"pkg": "pkg .",
|
||||||
"lint": "eslint build hydro module tool --ext ts,js --fix",
|
"lint": "eslint build hydro module tool --ext ts,js --fix",
|
||||||
@@ -88,5 +93,10 @@
|
|||||||
".build/module/**"
|
".build/module/**"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"snyk": true
|
"snyk": true,
|
||||||
|
"optionalDependencies": {
|
||||||
|
"@hydrooj/geoip": "^1.1.1",
|
||||||
|
"@hydrooj/migrate-vijos": "^1.1.0",
|
||||||
|
"@hydrooj/pastebin": "^1.0.0"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
columns:4,
|
columns:4,
|
||||||
label:'Rated',
|
label:'Rated',
|
||||||
name:'rated',
|
name:'rated',
|
||||||
placeholder:_('rated'),
|
placeholder:_('Is rated'),
|
||||||
value:tdoc.rated|default(true),
|
value:tdoc.rated|default(true),
|
||||||
row:false
|
row:false
|
||||||
}) }}
|
}) }}
|
||||||
|
|||||||
@@ -67,7 +67,7 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
<button type="submit" class="button hasjs--hide">
|
<button type="submit" class="button hasjs--hide">
|
||||||
{{ _('Go') }}
|
{{ _('Search') }}
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
<div class="section__header">
|
<div class="section__header">
|
||||||
<h1 class="section__title">{{ _('Installed Modules') }}</h1>
|
<h1 class="section__title">{{ _('Installed Modules') }}</h1>
|
||||||
<div class="section__tools">
|
<div class="section__tools">
|
||||||
<button class="primary rounded button" name="add_module"><span class="icon icon-add"></span> {{ _('Add module') }}</button>
|
<button class="primary rounded button" name="add_module"><span class="icon icon-add"></span> {{ _('Add Module') }}</button>
|
||||||
<a class="tool-button" href="{{ url('wiki', page='help', anchor='module') }}"><span class="icon icon-help"></span> {{ _("What's module?") }}</a>
|
<a class="tool-button" href="{{ url('wiki', page='help', anchor='module') }}"><span class="icon icon-help"></span> {{ _("What's module?") }}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -30,7 +30,6 @@
|
|||||||
<col class="col--desc">
|
<col class="col--desc">
|
||||||
<col class="col--size">
|
<col class="col--size">
|
||||||
<col class="col--version">
|
<col class="col--version">
|
||||||
<col class="col--action">
|
|
||||||
</colgroup>
|
</colgroup>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -38,7 +37,6 @@
|
|||||||
<th class="col--desc">{{ _('Description') }}</th>
|
<th class="col--desc">{{ _('Description') }}</th>
|
||||||
<th class="col--size">{{ _('Size') }}</th>
|
<th class="col--size">{{ _('Size') }}</th>
|
||||||
<th class="col--version">{{ _('Version') }}</th>
|
<th class="col--version">{{ _('Version') }}</th>
|
||||||
<th class="col--action">{{ _('Action') }}</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@@ -48,15 +46,6 @@
|
|||||||
<td class="col--desc">{{ _(module.description|default(_('None'))) }}</td>
|
<td class="col--desc">{{ _(module.description|default(_('None'))) }}</td>
|
||||||
<td class="col--size">{{ size(module.size) if module.size else '?' }}</td>
|
<td class="col--size">{{ size(module.size) if module.size else '?' }}</td>
|
||||||
<td class="col--version">{{ module.version|default('?') }}</td>
|
<td class="col--version">{{ module.version|default('?') }}</td>
|
||||||
<td class="col--action">
|
|
||||||
<form method="post">
|
|
||||||
<input type="hidden" name="operation" value="delete">
|
|
||||||
<input type="hidden" name="id" value="{{ module.filename }}">
|
|
||||||
<input type="hidden" name="csrfToken" value="{{ handler.csrfToken }}">
|
|
||||||
<input type="hidden" name="csrfToken" value="{{ handler.csrfToken }}">
|
|
||||||
<input type="submit" class="typo-a" value="{{ _('Delete') }}">
|
|
||||||
</form>
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<p><b>{{ _('Current dataset comes from') }} <a href="{{ pdoc.data.split('from:')[1] }}" target="_blank">{{ pdoc.data.split('from:')[1] }}</a></b></p>
|
<p><b>{{ _('Current dataset comes from') }} <a href="{{ pdoc.data.split('from:')[1] }}" target="_blank">{{ pdoc.data.split('from:')[1] }}</a></b></p>
|
||||||
{% else %}
|
{% else %}
|
||||||
<p>{{ _('Current dataset: {0}').format((pdoc['data'] or _('(None)')).toString()) }}</p>
|
<p>{{ _('Current dataset: {0}').format((pdoc['data'] or _('(None)')).toString()) }}</p>
|
||||||
<p>{{ _('MD5: {0}').format(md5 or _('(None)')) }}</p>
|
<p>{{ _('MD5') }}: {{ md5|default(_('(None)'))) }}</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<p>{{ _('New dataset') }}:
|
<p>{{ _('New dataset') }}:
|
||||||
<input type="hidden" name="csrfToken" value="{{ handler.csrfToken }}">
|
<input type="hidden" name="csrfToken" value="{{ handler.csrfToken }}">
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
function fix(file) {
|
||||||
|
let content = fs.readFileSync(file).toString();
|
||||||
|
content = content.replace(/https:\/\/registry.yarnpkg.com\//gmi, 'https://registry.npm.taobao.org/');
|
||||||
|
fs.writeFileSync(file, content);
|
||||||
|
}
|
||||||
|
|
||||||
|
fix(path.resolve(__dirname, '..', 'yarn.lock'));
|
||||||
|
fix(path.resolve(__dirname, '..', 'ui', 'yarn.lock'));
|
||||||
+27
-14
@@ -2,7 +2,12 @@ const fs = require('fs');
|
|||||||
const path = require('path');
|
const path = require('path');
|
||||||
const yaml = require('js-yaml');
|
const yaml = require('js-yaml');
|
||||||
|
|
||||||
|
const name = process.argv[2];
|
||||||
|
|
||||||
const IGNORE_CHECK = ['en'];
|
const IGNORE_CHECK = ['en'];
|
||||||
|
const IGNORE_MISSING = [
|
||||||
|
'?', 'AC', 'Gravatar', 'ID', 'MD5', 'URL',
|
||||||
|
];
|
||||||
const RE_TEXT = /_\(['"]([\s\S])*?['"]\)/gmi;
|
const RE_TEXT = /_\(['"]([\s\S])*?['"]\)/gmi;
|
||||||
const TEMPLATE_ROOT = path.resolve(__dirname, '..', 'templates');
|
const TEMPLATE_ROOT = path.resolve(__dirname, '..', 'templates');
|
||||||
const LOCALE_ROOT = path.resolve(__dirname, '..', 'locales');
|
const LOCALE_ROOT = path.resolve(__dirname, '..', 'locales');
|
||||||
@@ -36,26 +41,34 @@ function scan(folder, relative = '') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
scan(TEMPLATE_ROOT);
|
scan(TEMPLATE_ROOT);
|
||||||
|
|
||||||
const result = {};
|
const result = {};
|
||||||
|
|
||||||
const locales = fs.readdirSync(LOCALE_ROOT);
|
const locales = fs.readdirSync(LOCALE_ROOT);
|
||||||
for (const locale of locales) {
|
if (!name) {
|
||||||
if (!IGNORE_CHECK.includes(locale.split('.')[0])) {
|
for (const locale of locales) {
|
||||||
const p = path.join(LOCALE_ROOT, locale);
|
if (!IGNORE_CHECK.includes(locale.split('.')[0])) {
|
||||||
const f = fs.readFileSync(p).toString();
|
const p = path.join(LOCALE_ROOT, locale);
|
||||||
const l = yaml.safeLoad(f);
|
const f = fs.readFileSync(p).toString();
|
||||||
for (const str in texts) {
|
const l = yaml.safeLoad(f);
|
||||||
if (!l[str]) {
|
for (const str in texts) {
|
||||||
if (result[str]) result[str].locale.push(locale);
|
if (!l[str]) {
|
||||||
else result[str] = { str, source: texts[str], locale: [locale] };
|
if (result[str]) result[str].locale.push(locale);
|
||||||
|
else result[str] = { source: texts[str], locale: [locale] };
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
const p = path.join(LOCALE_ROOT, name);
|
||||||
|
const f = fs.readFileSync(p).toString();
|
||||||
|
const l = yaml.safeLoad(f);
|
||||||
|
for (const str in texts) {
|
||||||
|
if (!l[str]) {
|
||||||
|
result[str] = texts[str];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
for (const str of IGNORE_MISSING) delete result[str];
|
||||||
console.log(`${Object.keys(result).length} translations missing.`);
|
console.log(`${Object.keys(result).length} translations missing.`);
|
||||||
fs.writeFileSync(path.join(__dirname, '..', '__result.json'), JSON.stringify(result, null, 2));
|
fs.writeFileSync(path.join(__dirname, '..', '__result.json'), JSON.stringify(result, null, 2));
|
||||||
console.log(`result wrote to ${path.resolve(__dirname, '..', '__result.json')}`);
|
console.log(`Result wrote to ${path.resolve(__dirname, '..', '__result.json')}`);
|
||||||
@@ -85,7 +85,7 @@ export default function (env = {}) {
|
|||||||
vj4: './Entry.js',
|
vj4: './Entry.js',
|
||||||
},
|
},
|
||||||
output: {
|
output: {
|
||||||
path: root('../.uibuild'),
|
path: root('../public'),
|
||||||
publicPath: '/', // overwrite in entry.js
|
publicPath: '/', // overwrite in entry.js
|
||||||
hashFunction: 'sha1',
|
hashFunction: 'sha1',
|
||||||
hashDigest: 'hex',
|
hashDigest: 'hex',
|
||||||
|
|||||||
+23
-23
@@ -5,38 +5,38 @@
|
|||||||
"private": true,
|
"private": true,
|
||||||
"license": "AGPL-1.0",
|
"license": "AGPL-1.0",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/cli": "^7.10.3",
|
"@babel/cli": "^7.10.5",
|
||||||
"@babel/core": "^7.10.3",
|
"@babel/core": "^7.10.5",
|
||||||
"@babel/plugin-proposal-class-properties": "^7.10.1",
|
"@babel/plugin-proposal-class-properties": "^7.10.4",
|
||||||
"@babel/plugin-proposal-decorators": "^7.10.3",
|
"@babel/plugin-proposal-decorators": "^7.10.5",
|
||||||
"@babel/plugin-proposal-export-namespace-from": "^7.10.1",
|
"@babel/plugin-proposal-export-namespace-from": "^7.10.4",
|
||||||
"@babel/plugin-proposal-function-sent": "^7.10.1",
|
"@babel/plugin-proposal-function-sent": "^7.10.4",
|
||||||
"@babel/plugin-proposal-json-strings": "^7.10.1",
|
"@babel/plugin-proposal-json-strings": "^7.10.4",
|
||||||
"@babel/plugin-proposal-numeric-separator": "^7.10.1",
|
"@babel/plugin-proposal-numeric-separator": "^7.10.4",
|
||||||
"@babel/plugin-proposal-throw-expressions": "^7.10.1",
|
"@babel/plugin-proposal-throw-expressions": "^7.10.4",
|
||||||
"@babel/plugin-syntax-dynamic-import": "^7.0.0",
|
"@babel/plugin-syntax-dynamic-import": "^7.0.0",
|
||||||
"@babel/plugin-syntax-import-meta": "^7.10.1",
|
"@babel/plugin-syntax-import-meta": "^7.10.4",
|
||||||
"@babel/plugin-transform-runtime": "^7.10.3",
|
"@babel/plugin-transform-runtime": "^7.10.5",
|
||||||
"@babel/preset-env": "^7.10.3",
|
"@babel/preset-env": "^7.10.4",
|
||||||
"@babel/preset-react": "^7.10.1",
|
"@babel/preset-react": "^7.10.4",
|
||||||
"@babel/register": "^7.10.3",
|
"@babel/register": "^7.10.5",
|
||||||
"autoprefixer": "^9.8.4",
|
"autoprefixer": "^9.8.5",
|
||||||
"babel-eslint": "^10.0.1",
|
"babel-eslint": "^10.0.1",
|
||||||
"babel-loader": "^8.0.6",
|
"babel-loader": "^8.0.6",
|
||||||
"babel-plugin-lodash": "^3.3.4",
|
"babel-plugin-lodash": "^3.3.4",
|
||||||
"babel-plugin-prismjs": "^2.0.1",
|
"babel-plugin-prismjs": "^2.0.1",
|
||||||
"chalk": "^4.1.0",
|
"chalk": "^4.1.0",
|
||||||
"copy-webpack-plugin": "^6.0.2",
|
"copy-webpack-plugin": "^6.0.3",
|
||||||
"css-loader": "^3.6.0",
|
"css-loader": "^3.6.0",
|
||||||
"del": "^5.1.0",
|
"del": "^5.1.0",
|
||||||
"eslint": "^7.2.0",
|
"eslint": "^7.4.0",
|
||||||
"eslint-config-airbnb": "^18.2.0",
|
"eslint-config-airbnb": "^18.2.0",
|
||||||
"eslint-import-resolver-webpack": "^0.12.2",
|
"eslint-import-resolver-webpack": "^0.12.2",
|
||||||
"eslint-loader": "^4.0.2",
|
"eslint-loader": "^4.0.2",
|
||||||
"eslint-plugin-babel": "^5.3.0",
|
"eslint-plugin-babel": "^5.3.1",
|
||||||
"eslint-plugin-import": "^2.21.2",
|
"eslint-plugin-import": "^2.22.0",
|
||||||
"eslint-plugin-jsx-a11y": "^6.3.1",
|
"eslint-plugin-jsx-a11y": "^6.3.1",
|
||||||
"eslint-plugin-react": "^7.20.0",
|
"eslint-plugin-react": "^7.20.3",
|
||||||
"file-loader": "^6.0.0",
|
"file-loader": "^6.0.0",
|
||||||
"friendly-errors-webpack-plugin": "^1.7.0",
|
"friendly-errors-webpack-plugin": "^1.7.0",
|
||||||
"fs-extra": "^9.0.1",
|
"fs-extra": "^9.0.1",
|
||||||
@@ -60,10 +60,10 @@
|
|||||||
"uglifyjs-webpack-plugin": "^2.2.0",
|
"uglifyjs-webpack-plugin": "^2.2.0",
|
||||||
"vinyl-buffer": "^1.0.1",
|
"vinyl-buffer": "^1.0.1",
|
||||||
"webpack": "^4.43.0",
|
"webpack": "^4.43.0",
|
||||||
"yargs": "^15.3.1"
|
"yargs": "^15.4.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime-corejs2": "^7.10.3",
|
"@babel/runtime-corejs2": "^7.10.5",
|
||||||
"base-64": "^0.1.0",
|
"base-64": "^0.1.0",
|
||||||
"classnames": "^2.2.6",
|
"classnames": "^2.2.6",
|
||||||
"clipboard": "^2.0.4",
|
"clipboard": "^2.0.4",
|
||||||
@@ -76,7 +76,7 @@
|
|||||||
"jquery.easing": "^1.4.1",
|
"jquery.easing": "^1.4.1",
|
||||||
"jquery.transit": "^0.9.12",
|
"jquery.transit": "^0.9.12",
|
||||||
"katex": "^0.11.1",
|
"katex": "^0.11.1",
|
||||||
"lodash": "^4.17.13",
|
"lodash": "^4.17.19",
|
||||||
"mini-css-extract-plugin": "^0.9.0",
|
"mini-css-extract-plugin": "^0.9.0",
|
||||||
"moment": "^2.27.0",
|
"moment": "^2.27.0",
|
||||||
"monaco-editor": "^0.20.0",
|
"monaco-editor": "^0.20.0",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
.page--manage_module
|
.page--manage_module
|
||||||
.col--id
|
.col--id
|
||||||
width: 70px
|
width: 100px
|
||||||
line-height: 1
|
line-height: 1
|
||||||
|
|
||||||
.col--desc
|
.col--desc
|
||||||
@@ -13,9 +13,6 @@
|
|||||||
.col--version
|
.col--version
|
||||||
width: 40px
|
width: 40px
|
||||||
|
|
||||||
.col--action
|
|
||||||
width: rem(75px)
|
|
||||||
|
|
||||||
+mobile()
|
+mobile()
|
||||||
.col--desc, .col--version
|
.col--desc, .col--version
|
||||||
display: none
|
display: none
|
||||||
+747
-1008
File diff suppressed because it is too large.
Load diff
@@ -2,6 +2,13 @@
|
|||||||
# yarn lockfile v1
|
# yarn lockfile v1
|
||||||
|
|
||||||
|
|
||||||
|
"@arcanis/slice-ansi@^1.0.2":
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@arcanis/slice-ansi/-/slice-ansi-1.0.2.tgz#35331e41a1062e3c53c01ad2ec1555c5c1959d8f"
|
||||||
|
integrity sha512-lDL63z0W/L/WTgqrwVOuNyMAsTv+pvjybd21z9SWdStmQoXT59E/iVWwat3gYjcdTNBf6oHAMoyFm8dtjpXEYw==
|
||||||
|
dependencies:
|
||||||
|
grapheme-splitter "^1.0.4"
|
||||||
|
|
||||||
"@babel/code-frame@^7.0.0":
|
"@babel/code-frame@^7.0.0":
|
||||||
version "7.10.4"
|
version "7.10.4"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a"
|
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a"
|
||||||
@@ -23,6 +30,13 @@
|
|||||||
chalk "^2.0.0"
|
chalk "^2.0.0"
|
||||||
js-tokens "^4.0.0"
|
js-tokens "^4.0.0"
|
||||||
|
|
||||||
|
"@hydrooj/geoip@^1.1.1":
|
||||||
|
version "1.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@hydrooj/geoip/-/geoip-1.1.2.tgz#1dfa02ce06c2aa2690bbce6aea089731eb91d137"
|
||||||
|
integrity sha512-a8OefZxUd+AUlv4w1RweVXqtcb7gxNaTk0oce5/WWDN1CogFbDUK790BPHRvfB3wiSWLm1h0GyjJOFQL9hypwA==
|
||||||
|
dependencies:
|
||||||
|
maxmind "^4.1.3"
|
||||||
|
|
||||||
"@hydrooj/markdown-it-katex@^2.1.1":
|
"@hydrooj/markdown-it-katex@^2.1.1":
|
||||||
version "2.1.1"
|
version "2.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/@hydrooj/markdown-it-katex/-/markdown-it-katex-2.1.1.tgz#0b656483b912593e2a927360592462770e329f25"
|
resolved "https://registry.yarnpkg.com/@hydrooj/markdown-it-katex/-/markdown-it-katex-2.1.1.tgz#0b656483b912593e2a927360592462770e329f25"
|
||||||
@@ -30,6 +44,16 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
katex "^0.11.1"
|
katex "^0.11.1"
|
||||||
|
|
||||||
|
"@hydrooj/migrate-vijos@^1.1.0":
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@hydrooj/migrate-vijos/-/migrate-vijos-1.1.0.tgz#1929ec44accd47be58ff792eda69f4576883e807"
|
||||||
|
integrity sha512-3OqrNyMFQjkIx7LQDzHF0Z/HUzYqWaGPJnRO7JkhblCnZ4wBEhXRzC0ZI4Yil1s/w9+E+POb+5HrzwYPrnV7mw==
|
||||||
|
|
||||||
|
"@hydrooj/pastebin@^1.0.0":
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@hydrooj/pastebin/-/pastebin-1.0.0.tgz#5b3b86097451dfd056bea84d51b9b7c28b00c895"
|
||||||
|
integrity sha512-AFDgqNTR/luBA1zIlP+4tBbcGC35Nq74nzaHtJ/ZCqZL2RZfpP4p90wH3U3Gi0+YD45VXIvDVEVCgruQ4naFvA==
|
||||||
|
|
||||||
"@nodelib/fs.scandir@2.1.3":
|
"@nodelib/fs.scandir@2.1.3":
|
||||||
version "2.1.3"
|
version "2.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b"
|
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b"
|
||||||
@@ -56,10 +80,10 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea"
|
resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea"
|
||||||
integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==
|
integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==
|
||||||
|
|
||||||
"@sindresorhus/is@^2.1.1":
|
"@sindresorhus/is@^3.0.0":
|
||||||
version "2.1.1"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-2.1.1.tgz#ceff6a28a5b4867c2dd4a1ba513de278ccbe8bb1"
|
resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-3.0.0.tgz#78fabc5e295adb6e1ef57eaafe4cc5d7aa35b183"
|
||||||
integrity sha512-/aPsuoj/1Dw/kzhkgz+ES6TxG0zfTMGLwuK2ZG00k/iJzYHTLCE8mVU8EPqEOp/lmxPoq1C1C9RYToRKb2KEfg==
|
integrity sha512-kqA5I6Yun7PBHk8WN9BBP1c7FfN2SrD05GuVSEYPqDb4nerv7HqYfgBfMIKmT/EuejURkJKLZuLyGKGs6WEG9w==
|
||||||
|
|
||||||
"@snyk/cli-interface@1.5.0":
|
"@snyk/cli-interface@1.5.0":
|
||||||
version "1.5.0"
|
version "1.5.0"
|
||||||
@@ -158,6 +182,15 @@
|
|||||||
source-map-support "^0.5.19"
|
source-map-support "^0.5.19"
|
||||||
tslib "^1.13.0"
|
tslib "^1.13.0"
|
||||||
|
|
||||||
|
"@snyk/docker-registry-v2-client@^1.13.5":
|
||||||
|
version "1.13.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@snyk/docker-registry-v2-client/-/docker-registry-v2-client-1.13.5.tgz#8d862f0c53d4a9a25db09cd48b4cd44aa8e385c9"
|
||||||
|
integrity sha512-lgJiC071abCpFVLp47OnykU8MMrhdQe386Wt6QaDmjI0s2DQn/S58NfdLrPU7s6l4zoGT7UwRW9+7paozRgFTA==
|
||||||
|
dependencies:
|
||||||
|
needle "^2.5.0"
|
||||||
|
parse-link-header "^1.0.1"
|
||||||
|
tslib "^1.10.0"
|
||||||
|
|
||||||
"@snyk/gemfile@1.2.0":
|
"@snyk/gemfile@1.2.0":
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/@snyk/gemfile/-/gemfile-1.2.0.tgz#919857944973cce74c650e5428aaf11bcd5c0457"
|
resolved "https://registry.yarnpkg.com/@snyk/gemfile/-/gemfile-1.2.0.tgz#919857944973cce74c650e5428aaf11bcd5c0457"
|
||||||
@@ -267,6 +300,16 @@
|
|||||||
source-map-support "^0.5.7"
|
source-map-support "^0.5.7"
|
||||||
tslib "^2.0.0"
|
tslib "^2.0.0"
|
||||||
|
|
||||||
|
"@snyk/snyk-docker-pull@^3.1.3":
|
||||||
|
version "3.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@snyk/snyk-docker-pull/-/snyk-docker-pull-3.2.0.tgz#07c47b8be2d899d51d720099a73a0d89effe5d99"
|
||||||
|
integrity sha512-uWKtjh29I/d0mfmfBN7w6RwwNBQxQVKrauF5ND/gqb0PVsKV22GIpkI+viWjI7KNKso6/B0tMmsv7TX2tsNcLQ==
|
||||||
|
dependencies:
|
||||||
|
"@snyk/docker-registry-v2-client" "^1.13.5"
|
||||||
|
child-process "^1.0.2"
|
||||||
|
tar-stream "^2.1.2"
|
||||||
|
tmp "^0.1.0"
|
||||||
|
|
||||||
"@szmarczak/http-timer@^1.1.2":
|
"@szmarczak/http-timer@^1.1.2":
|
||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421"
|
resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421"
|
||||||
@@ -382,9 +425,9 @@
|
|||||||
"@types/range-parser" "*"
|
"@types/range-parser" "*"
|
||||||
|
|
||||||
"@types/express@*":
|
"@types/express@*":
|
||||||
version "4.17.6"
|
version "4.17.7"
|
||||||
resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.6.tgz#6bce49e49570507b86ea1b07b806f04697fac45e"
|
resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.7.tgz#42045be6475636d9801369cd4418ef65cdb0dd59"
|
||||||
integrity sha512-n/mr9tZI83kd4azlPG5y997C/M4DNABK9yErhFM6hKdym4kkmd9j0vtsJyjFIwfRBxtrxZtAfGZCNRIBMFLK5w==
|
integrity sha512-dCOT5lcmV/uC2J9k0rPafATeeyz+99xTt54ReX11/LObZgfzJqZNcW27zGhYyX+9iSEGXGt5qLPwRSvBZcLvtQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/body-parser" "*"
|
"@types/body-parser" "*"
|
||||||
"@types/express-serve-static-core" "*"
|
"@types/express-serve-static-core" "*"
|
||||||
@@ -399,10 +442,17 @@
|
|||||||
"@types/events" "*"
|
"@types/events" "*"
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
|
|
||||||
|
"@types/fs-extra@^9.0.1":
|
||||||
|
version "9.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.1.tgz#91c8fc4c51f6d5dbe44c2ca9ab09310bd00c7918"
|
||||||
|
integrity sha512-B42Sxuaz09MhC3DDeW5kubRcQ5by4iuVQ0cRRWM2lggLzAa/KVom0Aft/208NgMvNQQZ86s5rVcqDdn/SH0/mg==
|
||||||
|
dependencies:
|
||||||
|
"@types/node" "*"
|
||||||
|
|
||||||
"@types/glob@^7.1.1":
|
"@types/glob@^7.1.1":
|
||||||
version "7.1.2"
|
version "7.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.2.tgz#06ca26521353a545d94a0adc74f38a59d232c987"
|
resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183"
|
||||||
integrity sha512-VgNIkxK+j7Nz5P7jvUZlRvhuPSmsEfS03b0alKcq5V/STUKAa3Plemsn5mrQUO7am6OErJ4rhGEGJbACclrtRA==
|
integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/minimatch" "*"
|
"@types/minimatch" "*"
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
@@ -544,20 +594,15 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
|
|
||||||
"@types/node@*":
|
"@types/node@*", "@types/node@^14.0.22":
|
||||||
version "14.0.14"
|
version "14.0.23"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.14.tgz#24a0b5959f16ac141aeb0c5b3cd7a15b7c64cbce"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.23.tgz#676fa0883450ed9da0bb24156213636290892806"
|
||||||
integrity sha512-syUgf67ZQpaJj01/tRTknkMNoBBLWJOBODF0Zm4NrXmiSuxjymFrxnTu1QVYRubhVkRcZLYZG8STTwJRdVm/WQ==
|
integrity sha512-Z4U8yDAl5TFkmYsZdFPdjeMa57NOvnaf1tljHzhouaPEp7LCj2JKkejpI1ODviIAQuW4CcQmxkQ77rnLsOOoKw==
|
||||||
|
|
||||||
"@types/node@^13.7.0":
|
"@types/node@^13.7.0":
|
||||||
version "13.13.12"
|
version "13.13.14"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.12.tgz#9c72e865380a7dc99999ea0ef20fc9635b503d20"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.14.tgz#20cd7d2a98f0c3b08d379f4ea9e6b315d2019529"
|
||||||
integrity sha512-zWz/8NEPxoXNT9YyF2osqyA9WjssZukYpgI4UYZpOjcyqwIUqWGkcCionaEb9Ki+FULyPyvNFpg/329Kd2/pbw==
|
integrity sha512-Az3QsOt1U/K1pbCQ0TXGELTuTkPLOiFIQf3ILzbOyo0FqgV9SxRnxbxM5QlAveERZMHpZY+7u3Jz2tKyl+yg6g==
|
||||||
|
|
||||||
"@types/node@^14.0.22":
|
|
||||||
version "14.0.22"
|
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.22.tgz#23ea4d88189cec7d58f9e6b66f786b215eb61bdc"
|
|
||||||
integrity sha512-emeGcJvdiZ4Z3ohbmw93E/64jRzUHAItSHt8nF7M4TGgQTiWqFVGB8KNpLGFmUHmHLvjvBgFwVlqNcq+VuGv9g==
|
|
||||||
|
|
||||||
"@types/node@^6.14.4", "@types/node@^6.14.7":
|
"@types/node@^6.14.4", "@types/node@^6.14.7":
|
||||||
version "6.14.10"
|
version "6.14.10"
|
||||||
@@ -653,51 +698,51 @@
|
|||||||
"@types/yargs-parser" "*"
|
"@types/yargs-parser" "*"
|
||||||
|
|
||||||
"@typescript-eslint/eslint-plugin@^3.6.0":
|
"@typescript-eslint/eslint-plugin@^3.6.0":
|
||||||
version "3.6.0"
|
version "3.6.1"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.6.0.tgz#ba2b6cae478b8fca3f2e58ff1313e4198eea2d8a"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.6.1.tgz#5ced8fd2087fbb83a76973dea4a0d39d9cb4a642"
|
||||||
integrity sha512-ubHlHVt1lsPQB/CZdEov9XuOFhNG9YRC//kuiS1cMQI6Bs1SsqKrEmZnpgRwthGR09/kEDtr9MywlqXyyYd8GA==
|
integrity sha512-06lfjo76naNeOMDl+mWG9Fh/a0UHKLGhin+mGaIw72FUMbMGBkdi/FEJmgEDzh4eE73KIYzHWvOCYJ0ak7nrJQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/experimental-utils" "3.6.0"
|
"@typescript-eslint/experimental-utils" "3.6.1"
|
||||||
debug "^4.1.1"
|
debug "^4.1.1"
|
||||||
functional-red-black-tree "^1.0.1"
|
functional-red-black-tree "^1.0.1"
|
||||||
regexpp "^3.0.0"
|
regexpp "^3.0.0"
|
||||||
semver "^7.3.2"
|
semver "^7.3.2"
|
||||||
tsutils "^3.17.1"
|
tsutils "^3.17.1"
|
||||||
|
|
||||||
"@typescript-eslint/experimental-utils@3.6.0":
|
"@typescript-eslint/experimental-utils@3.6.1":
|
||||||
version "3.6.0"
|
version "3.6.1"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.6.0.tgz#0138152d66e3e53a6340f606793fb257bf2d76a1"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.6.1.tgz#b5a2738ebbceb3fa90c5b07d50bb1225403c4a54"
|
||||||
integrity sha512-4Vdf2hvYMUnTdkCNZu+yYlFtL2v+N2R7JOynIOkFbPjf9o9wQvRwRkzUdWlFd2YiiUwJLbuuLnl5civNg5ykOQ==
|
integrity sha512-oS+hihzQE5M84ewXrTlVx7eTgc52eu+sVmG7ayLfOhyZmJ8Unvf3osyFQNADHP26yoThFfbxcibbO0d2FjnYhg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/json-schema" "^7.0.3"
|
"@types/json-schema" "^7.0.3"
|
||||||
"@typescript-eslint/types" "3.6.0"
|
"@typescript-eslint/types" "3.6.1"
|
||||||
"@typescript-eslint/typescript-estree" "3.6.0"
|
"@typescript-eslint/typescript-estree" "3.6.1"
|
||||||
eslint-scope "^5.0.0"
|
eslint-scope "^5.0.0"
|
||||||
eslint-utils "^2.0.0"
|
eslint-utils "^2.0.0"
|
||||||
|
|
||||||
"@typescript-eslint/parser@^3.6.0":
|
"@typescript-eslint/parser@^3.6.0":
|
||||||
version "3.6.0"
|
version "3.6.1"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.6.0.tgz#79b5232e1a2d06f1fc745942b690cd87aca7b60e"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.6.1.tgz#216e8adf4ee9c629f77c985476a2ea07fb80e1dc"
|
||||||
integrity sha512-taghDxuLhbDAD1U5Fk8vF+MnR0yiFE9Z3v2/bYScFb0N1I9SK8eKHkdJl1DAD48OGFDMFTeOTX0z7g0W6SYUXw==
|
integrity sha512-SLihQU8RMe77YJ/jGTqOt0lMq7k3hlPVfp7v/cxMnXA9T0bQYoMDfTsNgHXpwSJM1Iq2aAJ8WqekxUwGv5F67Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/eslint-visitor-keys" "^1.0.0"
|
"@types/eslint-visitor-keys" "^1.0.0"
|
||||||
"@typescript-eslint/experimental-utils" "3.6.0"
|
"@typescript-eslint/experimental-utils" "3.6.1"
|
||||||
"@typescript-eslint/types" "3.6.0"
|
"@typescript-eslint/types" "3.6.1"
|
||||||
"@typescript-eslint/typescript-estree" "3.6.0"
|
"@typescript-eslint/typescript-estree" "3.6.1"
|
||||||
eslint-visitor-keys "^1.1.0"
|
eslint-visitor-keys "^1.1.0"
|
||||||
|
|
||||||
"@typescript-eslint/types@3.6.0":
|
"@typescript-eslint/types@3.6.1":
|
||||||
version "3.6.0"
|
version "3.6.1"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.6.0.tgz#4bd6eee55d2f9d35a4b36c4804be1880bf68f7bc"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.6.1.tgz#87600fe79a1874235d3cc1cf5c7e1a12eea69eee"
|
||||||
integrity sha512-JwVj74ohUSt0ZPG+LZ7hb95fW8DFOqBuR6gE7qzq55KDI3BepqsCtHfBIoa0+Xi1AI7fq5nCu2VQL8z4eYftqg==
|
integrity sha512-NPxd5yXG63gx57WDTW1rp0cF3XlNuuFFB5G+Kc48zZ+51ZnQn9yjDEsjTPQ+aWM+V+Z0I4kuTFKjKvgcT1F7xQ==
|
||||||
|
|
||||||
"@typescript-eslint/typescript-estree@3.6.0":
|
"@typescript-eslint/typescript-estree@3.6.1":
|
||||||
version "3.6.0"
|
version "3.6.1"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.6.0.tgz#9b4cab43f1192b64ff51530815b8919f166ce177"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.6.1.tgz#a5c91fcc5497cce7922ff86bc37d5e5891dcdefa"
|
||||||
integrity sha512-G57NDSABHjvob7zVV09ehWyD1K6/YUKjz5+AufObFyjNO4DVmKejj47MHjVHHlZZKgmpJD2yyH9lfCXHrPITFg==
|
integrity sha512-G4XRe/ZbCZkL1fy09DPN3U0mR6SayIv1zSeBNquRFRk7CnVLgkC2ZPj8llEMJg5Y8dJ3T76SvTGtceytniaztQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/types" "3.6.0"
|
"@typescript-eslint/types" "3.6.1"
|
||||||
"@typescript-eslint/visitor-keys" "3.6.0"
|
"@typescript-eslint/visitor-keys" "3.6.1"
|
||||||
debug "^4.1.1"
|
debug "^4.1.1"
|
||||||
glob "^7.1.6"
|
glob "^7.1.6"
|
||||||
is-glob "^4.0.1"
|
is-glob "^4.0.1"
|
||||||
@@ -705,10 +750,10 @@
|
|||||||
semver "^7.3.2"
|
semver "^7.3.2"
|
||||||
tsutils "^3.17.1"
|
tsutils "^3.17.1"
|
||||||
|
|
||||||
"@typescript-eslint/visitor-keys@3.6.0":
|
"@typescript-eslint/visitor-keys@3.6.1":
|
||||||
version "3.6.0"
|
version "3.6.1"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.6.0.tgz#44185eb0cc47651034faa95c5e2e8b314ecebb26"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.6.1.tgz#5c57a7772f4dd623cfeacc219303e7d46f963b37"
|
||||||
integrity sha512-p1izllL2Ubwunite0ITjubuMQRBGgjdVYwyG7lXPX8GbrA6qF0uwSRz9MnXZaHMxID4948gX0Ez8v9tUDi/KfQ==
|
integrity sha512-qC8Olwz5ZyMTZrh4Wl3K4U6tfms0R/mzU4/5W3XeUZptVraGVmbptJbn6h2Ey6Rb3hOs3zWoAUebZk8t47KGiQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
eslint-visitor-keys "^1.1.0"
|
eslint-visitor-keys "^1.1.0"
|
||||||
|
|
||||||
@@ -867,25 +912,26 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
|
resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
|
||||||
integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
|
integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
|
||||||
|
|
||||||
"@yarnpkg/core@^2.0.0-rc.26":
|
"@yarnpkg/core@^2.0.0-rc.29":
|
||||||
version "2.0.0-rc.30"
|
version "2.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/@yarnpkg/core/-/core-2.0.0-rc.30.tgz#fd304711299630c8eee791081e56eeb1e0411fd2"
|
resolved "https://registry.yarnpkg.com/@yarnpkg/core/-/core-2.1.1.tgz#637786eb2acd09b48db7af59f2287934a0a5afd7"
|
||||||
integrity sha512-EMtSAi10ObT2d12YzT6bHyxEZ2p3CYgTtStQ5sZmTD4+iYKoOCBQX0z21PjWEzjeUnUCJnqZ/GAORIVkAUF0Fw==
|
integrity sha512-qeBxz8nHjKAbGTP2ZcXBnXGfM7+cN0A73mIai/24uru1ayvCIgfjWL1uIj/MM+m+K5lJX0Dcn94ZBHWits9JWQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@yarnpkg/fslib" "^2.0.0-rc.22"
|
"@arcanis/slice-ansi" "^1.0.2"
|
||||||
"@yarnpkg/json-proxy" "^2.0.0-rc.9"
|
"@yarnpkg/fslib" "^2.1.0"
|
||||||
"@yarnpkg/libzip" "^2.0.0-rc.13"
|
"@yarnpkg/json-proxy" "^2.1.0"
|
||||||
"@yarnpkg/parsers" "^2.0.0-rc.13"
|
"@yarnpkg/libzip" "^2.1.0"
|
||||||
"@yarnpkg/pnp" "^2.0.0-rc.23"
|
"@yarnpkg/parsers" "^2.1.0"
|
||||||
"@yarnpkg/shell" "^2.0.0-rc.13"
|
"@yarnpkg/pnp" "^2.1.0"
|
||||||
|
"@yarnpkg/shell" "^2.1.0"
|
||||||
camelcase "^5.3.1"
|
camelcase "^5.3.1"
|
||||||
chalk "^3.0.0"
|
chalk "^3.0.0"
|
||||||
clipanion "^2.4.1"
|
ci-info "^2.0.0"
|
||||||
|
clipanion "^2.4.2"
|
||||||
cross-spawn "7.0.3"
|
cross-spawn "7.0.3"
|
||||||
diff "^4.0.1"
|
diff "^4.0.1"
|
||||||
globby "^10.0.1"
|
globby "^10.0.1"
|
||||||
got "^11.1.3"
|
got "^11.1.3"
|
||||||
is-ci "^2.0.0"
|
|
||||||
json-file-plus "^3.3.1"
|
json-file-plus "^3.3.1"
|
||||||
logic-solver "^2.0.1"
|
logic-solver "^2.0.1"
|
||||||
micromatch "^4.0.2"
|
micromatch "^4.0.2"
|
||||||
@@ -899,26 +945,26 @@
|
|||||||
tslib "^1.13.0"
|
tslib "^1.13.0"
|
||||||
tunnel "^0.0.6"
|
tunnel "^0.0.6"
|
||||||
|
|
||||||
"@yarnpkg/fslib@^2.0.0-rc.22":
|
"@yarnpkg/fslib@^2.1.0":
|
||||||
version "2.0.0-rc.22"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/@yarnpkg/fslib/-/fslib-2.0.0-rc.22.tgz#517650b9fa0ab1463087f592104e15e1d60b3ea7"
|
resolved "https://registry.yarnpkg.com/@yarnpkg/fslib/-/fslib-2.1.0.tgz#c7039ec369a8fde06932cbddb3d3e473d789c458"
|
||||||
integrity sha512-O6sF4ceVtY7oXcoL98qb9/Xj7bzZBYDmMLAWvbS/85atB+3//l47hfelQuvMa/p4lt1s+ZLjGehxPAbTmcGbSA==
|
integrity sha512-E+f8w5yQZnTf1soyTWy7qdf+GmHsY+A0yEN4Di44/Txk6XRIMruyc1ShDi93mOI6ilnXxD87rNms18zJ8WnspA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@yarnpkg/libzip" "^2.0.0-rc.13"
|
"@yarnpkg/libzip" "^2.1.0"
|
||||||
tslib "^1.13.0"
|
tslib "^1.13.0"
|
||||||
|
|
||||||
"@yarnpkg/json-proxy@^2.0.0-rc.9":
|
"@yarnpkg/json-proxy@^2.1.0":
|
||||||
version "2.0.0-rc.9"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/@yarnpkg/json-proxy/-/json-proxy-2.0.0-rc.9.tgz#c4c2a2f0bdaa4f99912dbda07d71d6abd6a25eb7"
|
resolved "https://registry.yarnpkg.com/@yarnpkg/json-proxy/-/json-proxy-2.1.0.tgz#362a161678cd7dda74b47b4fc848a2f1730d16cd"
|
||||||
integrity sha512-ndaNE2DtoSZDMD/mDNYWIMKV+bJsrUzFeqDlFrHN7A1b3XXgsxD3B/HxL5O5eZYttVNHj+tG0MjYCqmC8s0KdA==
|
integrity sha512-rOgCg2DkyviLgr80mUMTt9vzdf5RGOujQB26yPiXjlz4WNePLBshKlTNG9rKSoKQSOYEQcw6cUmosfOKDatrCw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@yarnpkg/fslib" "^2.0.0-rc.22"
|
"@yarnpkg/fslib" "^2.1.0"
|
||||||
tslib "^1.13.0"
|
tslib "^1.13.0"
|
||||||
|
|
||||||
"@yarnpkg/libzip@^2.0.0-rc.13":
|
"@yarnpkg/libzip@^2.1.0":
|
||||||
version "2.0.0-rc.13"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/@yarnpkg/libzip/-/libzip-2.0.0-rc.13.tgz#e4e936a122b87e9be4b60805a32734b458a39421"
|
resolved "https://registry.yarnpkg.com/@yarnpkg/libzip/-/libzip-2.1.0.tgz#f45d861a853555a063f90a85142199e7cf181b71"
|
||||||
integrity sha512-DKAG6nhFHepKzoxsKSrNUiM4LWelx/APUU0YE/x+PRXHEcuGjL7Z4t/deRX1FxcICFZyshIQ4kZUNaTt3pXHNg==
|
integrity sha512-39c7KuSWcYUqVxlBLZwfqdD/D6lS+jplNVWd6uAnk8EpnacaYGJRegvkqWyfw5c8KHukNMeEGF5JHrXPZYBM0w==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/emscripten" "^1.38.0"
|
"@types/emscripten" "^1.38.0"
|
||||||
tslib "^1.13.0"
|
tslib "^1.13.0"
|
||||||
@@ -928,31 +974,31 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31"
|
resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31"
|
||||||
integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==
|
integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==
|
||||||
|
|
||||||
"@yarnpkg/parsers@^2.0.0-rc.13":
|
"@yarnpkg/parsers@^2.1.0":
|
||||||
version "2.0.0-rc.13"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/@yarnpkg/parsers/-/parsers-2.0.0-rc.13.tgz#b1e7d5a2171362a83a2f2b4cefcefd988e7c6518"
|
resolved "https://registry.yarnpkg.com/@yarnpkg/parsers/-/parsers-2.1.0.tgz#52615acdb54803d6404d6fb8f15fa124936bff1f"
|
||||||
integrity sha512-R6dJTiy6Bx33uH3kDXJ3MfjG6vWBman+L+3Ycdz5DQeTRyD+ABUtssgsM2gKnJ8KgOOV0BWoX5cpS5yWCa/tbg==
|
integrity sha512-75OYQ6PMs1C3zm+W+T1xhLyVDX78zXQGEVHpWd4o/QwpAbhneB3/5FXVGRzI3gjPPWWSb/pKOPB1S6p0xmQD2Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
js-yaml "^3.10.0"
|
js-yaml "^3.10.0"
|
||||||
tslib "^1.13.0"
|
tslib "^1.13.0"
|
||||||
|
|
||||||
"@yarnpkg/pnp@^2.0.0-rc.23":
|
"@yarnpkg/pnp@^2.1.0":
|
||||||
version "2.0.0-rc.23"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/@yarnpkg/pnp/-/pnp-2.0.0-rc.23.tgz#645a93c5dae4a78c71a9a09877daf4497e523f18"
|
resolved "https://registry.yarnpkg.com/@yarnpkg/pnp/-/pnp-2.1.0.tgz#0eba881ccd4675594198e7f1e327fe11a845291b"
|
||||||
integrity sha512-ROBvzkQ+7nGq4GWaPgKS7S7p2OFmChnoPy/I6wsBfCo2KAWyEW+xsSLrx9Tr4bzm4XVg44gAWLmx6ncR2V4fcw==
|
integrity sha512-b8NlB71EFifv1jDX47nFaRXrykROxHcS7YuGb2dQ+Gp9gqJ0thIaZ3yB9+qWF8acdWtNcMpjCug4xkfAAR5Odw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/node" "^13.7.0"
|
"@types/node" "^13.7.0"
|
||||||
"@yarnpkg/fslib" "^2.0.0-rc.22"
|
"@yarnpkg/fslib" "^2.1.0"
|
||||||
tslib "^1.13.0"
|
tslib "^1.13.0"
|
||||||
|
|
||||||
"@yarnpkg/shell@^2.0.0-rc.13":
|
"@yarnpkg/shell@^2.1.0":
|
||||||
version "2.0.0-rc.13"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/@yarnpkg/shell/-/shell-2.0.0-rc.13.tgz#61312707d2a8f3c73692ac674c2937c9d4c3cbfe"
|
resolved "https://registry.yarnpkg.com/@yarnpkg/shell/-/shell-2.1.0.tgz#e0855e59d4df663d8fe9044950a7fd390110cd4b"
|
||||||
integrity sha512-W00zIxLDVOH5QgGWT61FhD80nW2Doy9Mc+vTwodlv1Suh/AqUnmtkn5k4O+JV+Ky6Qhn+NQsHdq/OV8Hd0CzQA==
|
integrity sha512-9i9ZWqeKHGV0DOfdxTVq5zl73Li8Fg947v57uLBEaytNF+HywkDfouNkg/6HfgBrpI0WH8OJ9Pz/uDaE5cpctw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@yarnpkg/fslib" "^2.0.0-rc.22"
|
"@yarnpkg/fslib" "^2.1.0"
|
||||||
"@yarnpkg/parsers" "^2.0.0-rc.13"
|
"@yarnpkg/parsers" "^2.1.0"
|
||||||
clipanion "^2.4.1"
|
clipanion "^2.4.2"
|
||||||
cross-spawn "7.0.3"
|
cross-spawn "7.0.3"
|
||||||
fast-glob "^3.2.2"
|
fast-glob "^3.2.2"
|
||||||
stream-buffers "^3.0.2"
|
stream-buffers "^3.0.2"
|
||||||
@@ -1016,21 +1062,11 @@ ajv-errors@^1.0.0:
|
|||||||
integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==
|
integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==
|
||||||
|
|
||||||
ajv-keywords@^3.1.0, ajv-keywords@^3.4.1:
|
ajv-keywords@^3.1.0, ajv-keywords@^3.4.1:
|
||||||
version "3.5.0"
|
version "3.5.1"
|
||||||
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.0.tgz#5c894537098785926d71e696114a53ce768ed773"
|
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.1.tgz#b83ca89c5d42d69031f424cad49aada0236c6957"
|
||||||
integrity sha512-eyoaac3btgU8eJlvh01En8OCKzRqlLe2G5jDsCr3RiE2uLGMEEB1aaGwVVpwR8M95956tGH6R+9edC++OvzaVw==
|
integrity sha512-KWcq3xN8fDjSB+IMoh2VaXVhRI0BBGxoYp3rx7Pkb6z0cFjYR9Q9l4yZqqals0/zsioCmocC5H6UvsGD4MoIBA==
|
||||||
|
|
||||||
ajv@^6.1.0, ajv@^6.10.2:
|
ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2:
|
||||||
version "6.12.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd"
|
|
||||||
integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==
|
|
||||||
dependencies:
|
|
||||||
fast-deep-equal "^3.1.1"
|
|
||||||
fast-json-stable-stringify "^2.0.0"
|
|
||||||
json-schema-traverse "^0.4.1"
|
|
||||||
uri-js "^4.2.2"
|
|
||||||
|
|
||||||
ajv@^6.10.0, ajv@^6.12.2:
|
|
||||||
version "6.12.3"
|
version "6.12.3"
|
||||||
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706"
|
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706"
|
||||||
integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==
|
integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==
|
||||||
@@ -1246,6 +1282,11 @@ asynckit@^0.4.0:
|
|||||||
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
|
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
|
||||||
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
|
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
|
||||||
|
|
||||||
|
at-least-node@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
|
||||||
|
integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
|
||||||
|
|
||||||
atob@^2.1.2:
|
atob@^2.1.2:
|
||||||
version "2.1.2"
|
version "2.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
|
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
|
||||||
@@ -1650,6 +1691,11 @@ chardet@^0.7.0:
|
|||||||
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
|
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
|
||||||
integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
|
integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
|
||||||
|
|
||||||
|
child-process@^1.0.2:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/child-process/-/child-process-1.0.2.tgz#98974dc7ed1ee4c6229f8e305fa7313a6885a7f2"
|
||||||
|
integrity sha1-mJdNx+0e5MYin44wX6cxOmiFp/I=
|
||||||
|
|
||||||
chokidar@^2.1.8:
|
chokidar@^2.1.8:
|
||||||
version "2.1.8"
|
version "2.1.8"
|
||||||
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
|
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
|
||||||
@@ -1741,7 +1787,7 @@ cli-width@^2.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48"
|
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48"
|
||||||
integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==
|
integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==
|
||||||
|
|
||||||
clipanion@^2.4.1:
|
clipanion@^2.4.2:
|
||||||
version "2.4.2"
|
version "2.4.2"
|
||||||
resolved "https://registry.yarnpkg.com/clipanion/-/clipanion-2.4.2.tgz#2dfd52f7eb3cd472752c35d868dd4eb47cb98145"
|
resolved "https://registry.yarnpkg.com/clipanion/-/clipanion-2.4.2.tgz#2dfd52f7eb3cd472752c35d868dd4eb47cb98145"
|
||||||
integrity sha512-kBCYtQKI4/R/zjierdwoDAsNUSvoh4pX2tseYxgLYQcKIpdPsHZrFWiQOfbe2Scd/btsqJEc4q6g55q0p5DZAw==
|
integrity sha512-kBCYtQKI4/R/zjierdwoDAsNUSvoh4pX2tseYxgLYQcKIpdPsHZrFWiQOfbe2Scd/btsqJEc4q6g55q0p5DZAw==
|
||||||
@@ -2346,9 +2392,9 @@ end-of-stream@~1.1.0:
|
|||||||
once "~1.3.0"
|
once "~1.3.0"
|
||||||
|
|
||||||
enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0:
|
enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0:
|
||||||
version "4.2.0"
|
version "4.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.2.0.tgz#5d43bda4a0fd447cb0ebbe71bef8deff8805ad0d"
|
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126"
|
||||||
integrity sha512-S7eiFb/erugyd1rLb6mQ3Vuq+EXHv5cpCkNqqIkYkBgN2QdFnyCZzFBleqwGEx4lgNGYij81BWnCrFNK7vxvjQ==
|
integrity sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
graceful-fs "^4.1.2"
|
graceful-fs "^4.1.2"
|
||||||
memory-fs "^0.5.0"
|
memory-fs "^0.5.0"
|
||||||
@@ -2923,6 +2969,16 @@ fs-constants@^1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
|
resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
|
||||||
integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
|
integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
|
||||||
|
|
||||||
|
fs-extra@^9.0.1:
|
||||||
|
version "9.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc"
|
||||||
|
integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==
|
||||||
|
dependencies:
|
||||||
|
at-least-node "^1.0.0"
|
||||||
|
graceful-fs "^4.2.0"
|
||||||
|
jsonfile "^6.0.1"
|
||||||
|
universalify "^1.0.0"
|
||||||
|
|
||||||
fs-minipass@^1.2.5:
|
fs-minipass@^1.2.5:
|
||||||
version "1.2.7"
|
version "1.2.7"
|
||||||
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7"
|
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7"
|
||||||
@@ -3085,19 +3141,18 @@ good-listener@^1.2.2:
|
|||||||
delegate "^3.1.2"
|
delegate "^3.1.2"
|
||||||
|
|
||||||
got@^11.1.3:
|
got@^11.1.3:
|
||||||
version "11.3.0"
|
version "11.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/got/-/got-11.3.0.tgz#25e8da8b0125b3b984613a6b719e678dd2e20406"
|
resolved "https://registry.yarnpkg.com/got/-/got-11.5.0.tgz#55dd61050f666679f46c49c877e1b2e064a7a523"
|
||||||
integrity sha512-yi/kiZY2tNMtt5IfbfX8UL3hAZWb2gZruxYZ72AY28pU5p0TZjZdl0uRsuaFbnC0JopdUi3I+Mh1F3dPQ9Dh0Q==
|
integrity sha512-vOZEcEaK0b6x11uniY0HcblZObKPRO75Jvz53VKuqGSaKCM/zEt0sj2LGYVdqDYJzO3wYdG+FPQQ1hsgoXy7vQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@sindresorhus/is" "^2.1.1"
|
"@sindresorhus/is" "^3.0.0"
|
||||||
"@szmarczak/http-timer" "^4.0.5"
|
"@szmarczak/http-timer" "^4.0.5"
|
||||||
"@types/cacheable-request" "^6.0.1"
|
"@types/cacheable-request" "^6.0.1"
|
||||||
"@types/responselike" "^1.0.0"
|
"@types/responselike" "^1.0.0"
|
||||||
cacheable-lookup "^5.0.3"
|
cacheable-lookup "^5.0.3"
|
||||||
cacheable-request "^7.0.1"
|
cacheable-request "^7.0.1"
|
||||||
decompress-response "^6.0.0"
|
decompress-response "^6.0.0"
|
||||||
get-stream "^5.1.0"
|
http2-wrapper "^1.0.0-beta.4.8"
|
||||||
http2-wrapper "^1.0.0-beta.4.5"
|
|
||||||
lowercase-keys "^2.0.0"
|
lowercase-keys "^2.0.0"
|
||||||
p-cancelable "^2.0.0"
|
p-cancelable "^2.0.0"
|
||||||
responselike "^2.0.0"
|
responselike "^2.0.0"
|
||||||
@@ -3119,11 +3174,16 @@ got@^9.6.0:
|
|||||||
to-readable-stream "^1.0.0"
|
to-readable-stream "^1.0.0"
|
||||||
url-parse-lax "^3.0.0"
|
url-parse-lax "^3.0.0"
|
||||||
|
|
||||||
graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2:
|
graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0:
|
||||||
version "4.2.4"
|
version "4.2.4"
|
||||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
|
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
|
||||||
integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
|
integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
|
||||||
|
|
||||||
|
grapheme-splitter@^1.0.4:
|
||||||
|
version "1.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e"
|
||||||
|
integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==
|
||||||
|
|
||||||
gunzip-maybe@^1.4.2:
|
gunzip-maybe@^1.4.2:
|
||||||
version "1.4.2"
|
version "1.4.2"
|
||||||
resolved "https://registry.yarnpkg.com/gunzip-maybe/-/gunzip-maybe-1.4.2.tgz#b913564ae3be0eda6f3de36464837a9cd94b98ac"
|
resolved "https://registry.yarnpkg.com/gunzip-maybe/-/gunzip-maybe-1.4.2.tgz#b913564ae3be0eda6f3de36464837a9cd94b98ac"
|
||||||
@@ -3233,11 +3293,11 @@ hosted-git-info@^2.1.4, hosted-git-info@^2.7.1:
|
|||||||
integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==
|
integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==
|
||||||
|
|
||||||
hosted-git-info@^3.0.4:
|
hosted-git-info@^3.0.4:
|
||||||
version "3.0.4"
|
version "3.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.4.tgz#be4973eb1fd2737b11c9c7c19380739bb249f60d"
|
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.5.tgz#bea87905ef7317442e8df3087faa3c842397df03"
|
||||||
integrity sha512-4oT62d2jwSDBbLLFLZE+1vPuQ1h8p9wjrJ8Mqx5TjsyWmBMV5B13eJqn8pvluqubLf3cJPTfiYCIwNwDNmzScQ==
|
integrity sha512-i4dpK6xj9BIpVOTboXIlKG9+8HMKggcrMX7WA24xZtKwX0TPelq/rbaS5rCKeNX8sJXZJGdSxpnEGtta+wismQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
lru-cache "^5.1.1"
|
lru-cache "^6.0.0"
|
||||||
|
|
||||||
http-assert@^1.3.0:
|
http-assert@^1.3.0:
|
||||||
version "1.4.1"
|
version "1.4.1"
|
||||||
@@ -3287,12 +3347,12 @@ http-proxy-agent@^2.1.0:
|
|||||||
agent-base "4"
|
agent-base "4"
|
||||||
debug "3.1.0"
|
debug "3.1.0"
|
||||||
|
|
||||||
http2-wrapper@^1.0.0-beta.4.5:
|
http2-wrapper@^1.0.0-beta.4.8:
|
||||||
version "1.0.0-beta.4.6"
|
version "1.0.0-beta.5.2"
|
||||||
resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.0-beta.4.6.tgz#9438f0fceb946c8cbd365076c228a4d3bd4d0143"
|
resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.0-beta.5.2.tgz#8b923deb90144aea65cf834b016a340fc98556f3"
|
||||||
integrity sha512-9oB4BiGDTI1FmIBlOF9OJ5hwJvcBEmPCqk/hy314Uhy2uq5TjekUZM8w8SPLLlUEM+mxNhXdPAXfrJN2Zbb/GQ==
|
integrity sha512-xYz9goEyBnC8XwXDTuC/MZ6t+MrKVQZOk4s7+PaDkwIsQd8IwqvM+0M6bA/2lvG8GHXcPdf+MejTUeO2LCPCeQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
quick-lru "^5.0.0"
|
quick-lru "^5.1.1"
|
||||||
resolve-alpn "^1.0.0"
|
resolve-alpn "^1.0.0"
|
||||||
|
|
||||||
https-browserify@^1.0.0:
|
https-browserify@^1.0.0:
|
||||||
@@ -3742,6 +3802,15 @@ json5@^1.0.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
minimist "^1.2.0"
|
minimist "^1.2.0"
|
||||||
|
|
||||||
|
jsonfile@^6.0.1:
|
||||||
|
version "6.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179"
|
||||||
|
integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==
|
||||||
|
dependencies:
|
||||||
|
universalify "^1.0.0"
|
||||||
|
optionalDependencies:
|
||||||
|
graceful-fs "^4.1.6"
|
||||||
|
|
||||||
jszip@3.3.0:
|
jszip@3.3.0:
|
||||||
version "3.3.0"
|
version "3.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.3.0.tgz#29d72c21a54990fa885b11fc843db320640d5271"
|
resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.3.0.tgz#29d72c21a54990fa885b11fc843db320640d5271"
|
||||||
@@ -4028,6 +4097,11 @@ lodash.filter@^4.6.0:
|
|||||||
resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace"
|
resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace"
|
||||||
integrity sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=
|
integrity sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=
|
||||||
|
|
||||||
|
lodash.flatmap@^4.5.0:
|
||||||
|
version "4.5.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz#ef8cbf408f6e48268663345305c6acc0b778702e"
|
||||||
|
integrity sha1-74y/QI9uSCaGYzRTBcaswLd4cC4=
|
||||||
|
|
||||||
lodash.flatten@^4.4.0:
|
lodash.flatten@^4.4.0:
|
||||||
version "4.4.0"
|
version "4.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
|
resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
|
||||||
@@ -4128,12 +4202,7 @@ lodash.values@^4.3.0:
|
|||||||
resolved "https://registry.yarnpkg.com/lodash.values/-/lodash.values-4.3.0.tgz#a3a6c2b0ebecc5c2cba1c17e6e620fe81b53d347"
|
resolved "https://registry.yarnpkg.com/lodash.values/-/lodash.values-4.3.0.tgz#a3a6c2b0ebecc5c2cba1c17e6e620fe81b53d347"
|
||||||
integrity sha1-o6bCsOvsxcLLocF+bmIP6BtT00c=
|
integrity sha1-o6bCsOvsxcLLocF+bmIP6BtT00c=
|
||||||
|
|
||||||
lodash@^4.17.14, lodash@^4.17.15:
|
lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19:
|
||||||
version "4.17.15"
|
|
||||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
|
|
||||||
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
|
|
||||||
|
|
||||||
lodash@^4.17.19:
|
|
||||||
version "4.17.19"
|
version "4.17.19"
|
||||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b"
|
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b"
|
||||||
integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==
|
integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==
|
||||||
@@ -4250,6 +4319,13 @@ markdown-it@^11.0.0:
|
|||||||
mdurl "^1.0.1"
|
mdurl "^1.0.1"
|
||||||
uc.micro "^1.0.5"
|
uc.micro "^1.0.5"
|
||||||
|
|
||||||
|
maxmind@^4.1.3:
|
||||||
|
version "4.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/maxmind/-/maxmind-4.1.3.tgz#ed1060f45085b7ae2dc95cf5c1672f593d7fa076"
|
||||||
|
integrity sha512-6foBs2wNAfZ7Hu3Ag3nFiIs0gVlHtP1UioHHOuYBi2fH24Ngc5XujUi2GLk0r2HJLjRAaYgaSSTnRoIPs/RWNw==
|
||||||
|
dependencies:
|
||||||
|
tiny-lru "7.0.6"
|
||||||
|
|
||||||
md5.js@^1.3.4:
|
md5.js@^1.3.4:
|
||||||
version "1.3.5"
|
version "1.3.5"
|
||||||
resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
|
resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
|
||||||
@@ -4559,9 +4635,9 @@ negotiator@0.6.2:
|
|||||||
integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
|
integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
|
||||||
|
|
||||||
neo-async@^2.5.0, neo-async@^2.6.1:
|
neo-async@^2.5.0, neo-async@^2.6.1:
|
||||||
version "2.6.1"
|
version "2.6.2"
|
||||||
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
|
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
|
||||||
integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
|
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
|
||||||
|
|
||||||
netmask@^1.0.6:
|
netmask@^1.0.6:
|
||||||
version "1.0.6"
|
version "1.0.6"
|
||||||
@@ -4977,6 +5053,13 @@ parse-json@^2.2.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
error-ex "^1.2.0"
|
error-ex "^1.2.0"
|
||||||
|
|
||||||
|
parse-link-header@^1.0.1:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/parse-link-header/-/parse-link-header-1.0.1.tgz#bedfe0d2118aeb84be75e7b025419ec8a61140a7"
|
||||||
|
integrity sha1-vt/g0hGK64S+deewJUGeyKYRQKc=
|
||||||
|
dependencies:
|
||||||
|
xtend "~4.0.1"
|
||||||
|
|
||||||
parseurl@^1.3.2:
|
parseurl@^1.3.2:
|
||||||
version "1.3.3"
|
version "1.3.3"
|
||||||
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
|
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
|
||||||
@@ -5284,7 +5367,7 @@ querystring@0.2.0:
|
|||||||
resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
|
resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
|
||||||
integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
|
integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
|
||||||
|
|
||||||
quick-lru@^5.0.0:
|
quick-lru@^5.1.1:
|
||||||
version "5.1.1"
|
version "5.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
|
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
|
||||||
integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
|
integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
|
||||||
@@ -5403,9 +5486,9 @@ regexpp@^3.0.0, regexpp@^3.1.0:
|
|||||||
integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==
|
integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==
|
||||||
|
|
||||||
registry-auth-token@^4.0.0:
|
registry-auth-token@^4.0.0:
|
||||||
version "4.1.1"
|
version "4.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.1.1.tgz#40a33be1e82539460f94328b0f7f0f84c16d9479"
|
resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.0.tgz#1d37dffda72bbecd0f581e4715540213a65eb7da"
|
||||||
integrity sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA==
|
integrity sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w==
|
||||||
dependencies:
|
dependencies:
|
||||||
rc "^1.2.8"
|
rc "^1.2.8"
|
||||||
|
|
||||||
@@ -5783,12 +5866,13 @@ snyk-config@^3.0.0:
|
|||||||
lodash.merge "^4.6.2"
|
lodash.merge "^4.6.2"
|
||||||
nconf "^0.10.0"
|
nconf "^0.10.0"
|
||||||
|
|
||||||
snyk-docker-plugin@3.12.3:
|
snyk-docker-plugin@3.13.1:
|
||||||
version "3.12.3"
|
version "3.13.1"
|
||||||
resolved "https://registry.yarnpkg.com/snyk-docker-plugin/-/snyk-docker-plugin-3.12.3.tgz#3b451139ac3b59c896d3c2703113da7c975f650f"
|
resolved "https://registry.yarnpkg.com/snyk-docker-plugin/-/snyk-docker-plugin-3.13.1.tgz#d7befe89dce13a597ce0528595b9a9e0981348f4"
|
||||||
integrity sha512-Ysv7ZDvXFt6K11f1m6wJaqYS3yM7c8YhzOIPoEmrYZW+4tL+Al5DiyKaAQBudbfYEA7xa6S6qGqE3QRitHZ5nQ==
|
integrity sha512-4GEZ8Rx+1K33i0SuMRO03T+n8jAosLae4iuo1TZu9ugkxdQzbBStzVFz2N6x1s0GI/psWQNOWSLKfzFJYMOctw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@snyk/rpm-parser" "^2.0.0"
|
"@snyk/rpm-parser" "^2.0.0"
|
||||||
|
"@snyk/snyk-docker-pull" "^3.1.3"
|
||||||
debug "^4.1.1"
|
debug "^4.1.1"
|
||||||
docker-modem "2.1.3"
|
docker-modem "2.1.3"
|
||||||
dockerfile-ast "0.0.19"
|
dockerfile-ast "0.0.19"
|
||||||
@@ -5797,6 +5881,7 @@ snyk-docker-plugin@3.12.3:
|
|||||||
semver "^6.1.0"
|
semver "^6.1.0"
|
||||||
snyk-nodejs-lockfile-parser "1.22.0"
|
snyk-nodejs-lockfile-parser "1.22.0"
|
||||||
tar-stream "^2.1.0"
|
tar-stream "^2.1.0"
|
||||||
|
tmp "^0.2.1"
|
||||||
tslib "^1"
|
tslib "^1"
|
||||||
|
|
||||||
snyk-go-parser@1.4.1:
|
snyk-go-parser@1.4.1:
|
||||||
@@ -5884,16 +5969,17 @@ snyk-nodejs-lockfile-parser@1.22.0:
|
|||||||
tslib "^1.9.3"
|
tslib "^1.9.3"
|
||||||
uuid "^3.3.2"
|
uuid "^3.3.2"
|
||||||
|
|
||||||
snyk-nodejs-lockfile-parser@1.25.0:
|
snyk-nodejs-lockfile-parser@1.26.3:
|
||||||
version "1.25.0"
|
version "1.26.3"
|
||||||
resolved "https://registry.yarnpkg.com/snyk-nodejs-lockfile-parser/-/snyk-nodejs-lockfile-parser-1.25.0.tgz#f11717987fc319fb57b6862646299bc63397be23"
|
resolved "https://registry.yarnpkg.com/snyk-nodejs-lockfile-parser/-/snyk-nodejs-lockfile-parser-1.26.3.tgz#3c530b1ead4f419a12bc0811dbbe820d6ff51342"
|
||||||
integrity sha512-eikMzCCxwViIh885TMRgr5X1DjDYJI7eK+F9bqtpL/UuPealpnefUoH/LGicPtUSRknMcZvI4nzM0QSNMJ3+5w==
|
integrity sha512-mBQ6vhnXAeyMxlnl9amjJWpA+/3qqXwM8Sj/P+9uH2TByOFLxdGzMNQFcl3q/H2yUdcs/epVdXJp09A2dK2glA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@snyk/graphlib" "2.1.9-patch"
|
"@snyk/graphlib" "2.1.9-patch"
|
||||||
"@yarnpkg/core" "^2.0.0-rc.26"
|
"@yarnpkg/core" "^2.0.0-rc.29"
|
||||||
"@yarnpkg/lockfile" "^1.1.0"
|
"@yarnpkg/lockfile" "^1.1.0"
|
||||||
event-loop-spinner "^2.0.0"
|
event-loop-spinner "^2.0.0"
|
||||||
lodash.clonedeep "^4.5.0"
|
lodash.clonedeep "^4.5.0"
|
||||||
|
lodash.flatmap "^4.5.0"
|
||||||
lodash.isempty "^4.4.0"
|
lodash.isempty "^4.4.0"
|
||||||
lodash.set "^4.3.2"
|
lodash.set "^4.3.2"
|
||||||
lodash.topairs "^4.3.0"
|
lodash.topairs "^4.3.0"
|
||||||
@@ -6016,9 +6102,9 @@ snyk-try-require@1.3.1, snyk-try-require@^1.1.1, snyk-try-require@^1.3.1:
|
|||||||
then-fs "^2.0.0"
|
then-fs "^2.0.0"
|
||||||
|
|
||||||
snyk@^1.354.0:
|
snyk@^1.354.0:
|
||||||
version "1.359.0"
|
version "1.362.0"
|
||||||
resolved "https://registry.yarnpkg.com/snyk/-/snyk-1.359.0.tgz#88a936e7b898ad1def4bba2dfe30dc53a760c4d8"
|
resolved "https://registry.yarnpkg.com/snyk/-/snyk-1.362.0.tgz#d735297b83e49254c5d5d968dd1e32ed39659242"
|
||||||
integrity sha512-FkEtEUbuENZyhscXybO9Dej66P7sKwmEOnVZCCXRT7GDGclsTMaLUfedGmj1xvYic4fj5MRqBPS+khS7yOErcg==
|
integrity sha512-NT6OH1aPjDv9MvXriB0GVok7hmmWmo/TrTrUOKQsmKJi6ILqEAmDFk2EhaSHP2Niz5lrrFkSetYUmHAlWela6w==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@snyk/cli-interface" "2.8.0"
|
"@snyk/cli-interface" "2.8.0"
|
||||||
"@snyk/dep-graph" "1.18.3"
|
"@snyk/dep-graph" "1.18.3"
|
||||||
@@ -6043,12 +6129,12 @@ snyk@^1.354.0:
|
|||||||
proxy-from-env "^1.0.0"
|
proxy-from-env "^1.0.0"
|
||||||
semver "^6.0.0"
|
semver "^6.0.0"
|
||||||
snyk-config "3.1.0"
|
snyk-config "3.1.0"
|
||||||
snyk-docker-plugin "3.12.3"
|
snyk-docker-plugin "3.13.1"
|
||||||
snyk-go-plugin "1.14.2"
|
snyk-go-plugin "1.14.2"
|
||||||
snyk-gradle-plugin "3.5.1"
|
snyk-gradle-plugin "3.5.1"
|
||||||
snyk-module "3.1.0"
|
snyk-module "3.1.0"
|
||||||
snyk-mvn-plugin "2.17.1"
|
snyk-mvn-plugin "2.17.1"
|
||||||
snyk-nodejs-lockfile-parser "1.25.0"
|
snyk-nodejs-lockfile-parser "1.26.3"
|
||||||
snyk-nuget-plugin "1.18.1"
|
snyk-nuget-plugin "1.18.1"
|
||||||
snyk-php-plugin "1.9.0"
|
snyk-php-plugin "1.9.0"
|
||||||
snyk-policy "1.14.1"
|
snyk-policy "1.14.1"
|
||||||
@@ -6387,9 +6473,9 @@ strip-eof@^1.0.0:
|
|||||||
integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
|
integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
|
||||||
|
|
||||||
strip-json-comments@^3.1.0:
|
strip-json-comments@^3.1.0:
|
||||||
version "3.1.0"
|
version "3.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180"
|
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
|
||||||
integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==
|
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
|
||||||
|
|
||||||
strip-json-comments@~2.0.1:
|
strip-json-comments@~2.0.1:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
@@ -6460,10 +6546,10 @@ tapable@^1.0.0, tapable@^1.1.3:
|
|||||||
resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
|
resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
|
||||||
integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
|
integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
|
||||||
|
|
||||||
tar-stream@^2.1.0:
|
tar-stream@^2.1.0, tar-stream@^2.1.2:
|
||||||
version "2.1.2"
|
version "2.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.2.tgz#6d5ef1a7e5783a95ff70b69b97455a5968dc1325"
|
resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.3.tgz#1e2022559221b7866161660f118255e20fa79e41"
|
||||||
integrity sha512-UaF6FoJ32WqALZGOIAApXx+OdxhekNMChu6axLJR85zMMjXKWFGjbIRe+J6P4UnRGg9rAwWvbTT0oI7hD/Un7Q==
|
integrity sha512-Z9yri56Dih8IaK8gncVPx4Wqt86NDmQTSh49XLZgjWpGZL9GK9HKParS2scqHCC4w6X9Gh2jwaU45V47XTKwVA==
|
||||||
dependencies:
|
dependencies:
|
||||||
bl "^4.0.1"
|
bl "^4.0.1"
|
||||||
end-of-stream "^1.4.1"
|
end-of-stream "^1.4.1"
|
||||||
@@ -6595,6 +6681,11 @@ tiny-glob@^0.2.6:
|
|||||||
globalyzer "^0.1.0"
|
globalyzer "^0.1.0"
|
||||||
globrex "^0.1.1"
|
globrex "^0.1.1"
|
||||||
|
|
||||||
|
tiny-lru@7.0.6:
|
||||||
|
version "7.0.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/tiny-lru/-/tiny-lru-7.0.6.tgz#b0c3cdede1e5882aa2d1ae21cb2ceccf2a331f24"
|
||||||
|
integrity sha512-zNYO0Kvgn5rXzWpL0y3RS09sMK67eGaQj9805jlK9G6pSadfriTczzLHFXa/xcW4mIRfmlB9HyQ/+SgL0V1uow==
|
||||||
|
|
||||||
tmp@0.0.33, tmp@^0.0.33:
|
tmp@0.0.33, tmp@^0.0.33:
|
||||||
version "0.0.33"
|
version "0.0.33"
|
||||||
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
|
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
|
||||||
@@ -6609,7 +6700,7 @@ tmp@0.1.0, tmp@^0.1.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
rimraf "^2.6.3"
|
rimraf "^2.6.3"
|
||||||
|
|
||||||
tmp@0.2.1:
|
tmp@0.2.1, tmp@^0.2.1:
|
||||||
version "0.2.1"
|
version "0.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14"
|
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14"
|
||||||
integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==
|
integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==
|
||||||
@@ -6674,9 +6765,9 @@ tree-kill@^1.2.2:
|
|||||||
integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==
|
integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==
|
||||||
|
|
||||||
ts-loader@^8.0.0:
|
ts-loader@^8.0.0:
|
||||||
version "8.0.0"
|
version "8.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-8.0.0.tgz#faf4b1617dcc4a24c2925d92c5b19e9c6621064d"
|
resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-8.0.1.tgz#9670dcbce2a8c8506d01a37fee042350d02c8c21"
|
||||||
integrity sha512-giEW167rtK1V6eX/DnXEtOgcawwoIp6hqznqYNNSmraUZOq36zMhwBq12JMlYhxf50BC58bscsTSKKtE42zAuw==
|
integrity sha512-I9Nmly0ufJoZRMuAT9d5ijsC2B7oSPvUnOJt/GhgoATlPGYfa17VicDKPcqwUCrHpOkCxr/ybLYwbnS4cOxmvQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
chalk "^2.3.0"
|
chalk "^2.3.0"
|
||||||
enhanced-resolve "^4.0.0"
|
enhanced-resolve "^4.0.0"
|
||||||
@@ -6821,6 +6912,11 @@ unique-string@^2.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
crypto-random-string "^2.0.0"
|
crypto-random-string "^2.0.0"
|
||||||
|
|
||||||
|
universalify@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d"
|
||||||
|
integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==
|
||||||
|
|
||||||
unpipe@1.0.0:
|
unpipe@1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
|
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
|
||||||
|
|||||||
Reference in new issue
Block a user