mirror of
https://github.com/whyour/qinglong.git
synced 2025-05-22 22:36:06 +08:00
修复定时删除日志
This commit is contained in:
parent
cf5f1b6f25
commit
7d6e1d3e3d
|
@ -4,7 +4,7 @@ import { DataTypes, Model, ModelDefined } from 'sequelize';
|
|||
export class Crontab {
|
||||
name?: string;
|
||||
command: string;
|
||||
schedule: string;
|
||||
schedule?: string;
|
||||
timestamp?: string;
|
||||
saved?: boolean;
|
||||
id?: number;
|
||||
|
|
|
@ -7,11 +7,15 @@ import EnvService from '../services/env';
|
|||
import _ from 'lodash';
|
||||
import { DependenceModel } from '../data/dependence';
|
||||
import { Op } from 'sequelize';
|
||||
import SystemService from '../services/system';
|
||||
import ScheduleService from '../services/schedule';
|
||||
|
||||
export default async () => {
|
||||
const cronService = Container.get(CronService);
|
||||
const envService = Container.get(EnvService);
|
||||
const dependenceService = Container.get(DependenceService);
|
||||
const systemService = Container.get(SystemService);
|
||||
const scheduleService = Container.get(ScheduleService);
|
||||
|
||||
// 初始化更新所有任务状态为空闲
|
||||
await CrontabModel.update(
|
||||
|
@ -53,6 +57,20 @@ export default async () => {
|
|||
// 初始化保存一次ck和定时任务数据
|
||||
await cronService.autosave_crontab();
|
||||
await envService.set_envs();
|
||||
|
||||
// 运行删除日志任务
|
||||
const data = await systemService.getLogRemoveFrequency();
|
||||
if (data && data.info && data.info.frequency) {
|
||||
const cron = {
|
||||
id: data.id,
|
||||
name: '删除日志',
|
||||
command: `ql rmlog ${data.info.frequency}`,
|
||||
};
|
||||
await scheduleService.createIntervalTask(cron, {
|
||||
days: data.info.frequency,
|
||||
runImmediately: true,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
function randomSchedule(from: number, to: number) {
|
||||
|
|
|
@ -3,24 +3,33 @@ import winston from 'winston';
|
|||
import nodeSchedule from 'node-schedule';
|
||||
import { Crontab } from '../data/cron';
|
||||
import { exec } from 'child_process';
|
||||
import {
|
||||
ToadScheduler,
|
||||
SimpleIntervalJob,
|
||||
Task,
|
||||
SimpleIntervalSchedule,
|
||||
} from 'toad-scheduler';
|
||||
|
||||
@Service()
|
||||
export default class ScheduleService {
|
||||
private scheduleStacks = new Map<number, nodeSchedule.Job>();
|
||||
private scheduleStacks = new Map<string, nodeSchedule.Job>();
|
||||
|
||||
private intervalSchedule = new ToadScheduler();
|
||||
|
||||
constructor(@Inject('logger') private logger: winston.Logger) {}
|
||||
|
||||
async generateSchedule({ id = 0, command, name, schedule }: Crontab) {
|
||||
async createCronTask({ id = 0, command, name, schedule = '' }: Crontab) {
|
||||
const _id = this.formatId(id);
|
||||
this.logger.info(
|
||||
'[创建定时任务],任务ID: %s,cron: %s,任务名: %s,执行命令: %s',
|
||||
id,
|
||||
'[创建cron任务],任务ID: %s,cron: %s,任务名: %s,执行命令: %s',
|
||||
_id,
|
||||
schedule,
|
||||
name,
|
||||
command,
|
||||
);
|
||||
|
||||
this.scheduleStacks.set(
|
||||
id,
|
||||
_id,
|
||||
nodeSchedule.scheduleJob(id + '', schedule, async () => {
|
||||
try {
|
||||
exec(command, async (error, stdout, stderr) => {
|
||||
|
@ -55,8 +64,67 @@ export default class ScheduleService {
|
|||
);
|
||||
}
|
||||
|
||||
async cancelSchedule({ id = 0, name }: Crontab) {
|
||||
async cancelCronTask({ id = 0, name }: Crontab) {
|
||||
const _id = this.formatId(id);
|
||||
this.logger.info('[取消定时任务],任务名:%s', name);
|
||||
this.scheduleStacks.has(id) && this.scheduleStacks.get(id)?.cancel();
|
||||
this.scheduleStacks.has(_id) && this.scheduleStacks.get(_id)?.cancel();
|
||||
}
|
||||
|
||||
async createIntervalTask(
|
||||
{ id = 0, command, name = '' }: Crontab,
|
||||
schedule: SimpleIntervalSchedule,
|
||||
) {
|
||||
const _id = this.formatId(id);
|
||||
this.logger.info(
|
||||
'[创建interval任务],任务ID: %s,任务名: %s,执行命令: %s',
|
||||
_id,
|
||||
name,
|
||||
command,
|
||||
);
|
||||
const task = new Task(name, async () => {
|
||||
try {
|
||||
exec(command, async (error, stdout, stderr) => {
|
||||
if (error) {
|
||||
await this.logger.info(
|
||||
'执行任务%s失败,时间:%s, 错误信息:%j',
|
||||
command,
|
||||
new Date().toLocaleString(),
|
||||
error,
|
||||
);
|
||||
}
|
||||
|
||||
if (stderr) {
|
||||
await this.logger.info(
|
||||
'执行任务%s失败,时间:%s, 错误信息:%j',
|
||||
command,
|
||||
new Date().toLocaleString(),
|
||||
stderr,
|
||||
);
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
await this.logger.info(
|
||||
'执行任务%s失败,时间:%s, 错误信息:%j',
|
||||
command,
|
||||
new Date().toLocaleString(),
|
||||
error,
|
||||
);
|
||||
} finally {
|
||||
}
|
||||
});
|
||||
|
||||
const job = new SimpleIntervalJob({ ...schedule }, task, _id);
|
||||
|
||||
this.intervalSchedule.addIntervalJob(job);
|
||||
}
|
||||
|
||||
async cancelIntervalTask({ id = 0, name }: Crontab) {
|
||||
const _id = this.formatId(id);
|
||||
this.logger.info('[取消interval任务],任务ID: %s,任务名:%s', _id, name);
|
||||
this.intervalSchedule.removeById(_id);
|
||||
}
|
||||
|
||||
private formatId(id: number): string {
|
||||
return String(id);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@ export default class SystemService {
|
|||
|
||||
public async getLogRemoveFrequency() {
|
||||
const doc = await this.getDb({ type: AuthDataType.removeLogFrequency });
|
||||
return (doc && doc.info) || {};
|
||||
return doc || {};
|
||||
}
|
||||
|
||||
private async updateAuthDb(payload: AuthInfo): Promise<any> {
|
||||
|
@ -65,11 +65,13 @@ export default class SystemService {
|
|||
id: result.id,
|
||||
name: '删除日志',
|
||||
command: `ql rmlog ${frequency}`,
|
||||
schedule: `5 23 */${frequency} * *`,
|
||||
};
|
||||
await this.scheduleService.cancelSchedule(cron);
|
||||
await this.scheduleService.cancelIntervalTask(cron);
|
||||
if (frequency > 0) {
|
||||
await this.scheduleService.generateSchedule(cron);
|
||||
await this.scheduleService.createIntervalTask(cron, {
|
||||
days: frequency,
|
||||
runImmediately: true,
|
||||
});
|
||||
}
|
||||
return { code: 200, data: { ...cron } };
|
||||
}
|
||||
|
|
|
@ -360,9 +360,9 @@ export default class UserService {
|
|||
command: `ql rmlog ${frequency}`,
|
||||
schedule: `5 23 */${frequency} * *`,
|
||||
};
|
||||
await this.scheduleService.cancelSchedule(cron);
|
||||
await this.scheduleService.cancelCronTask(cron);
|
||||
if (frequency > 0) {
|
||||
await this.scheduleService.generateSchedule(cron);
|
||||
await this.scheduleService.createCronTask(cron);
|
||||
}
|
||||
return { code: 200, data: { ...cron } };
|
||||
}
|
||||
|
|
|
@ -51,6 +51,7 @@
|
|||
"serve-handler": "^6.1.3",
|
||||
"sockjs": "^0.3.21",
|
||||
"sqlite3": "^5.0.2",
|
||||
"toad-scheduler": "^1.6.0",
|
||||
"typedi": "^0.8.0",
|
||||
"uuid": "^8.3.2",
|
||||
"winston": "^3.3.3",
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
.container {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding: 50px 130px;
|
||||
flex-wrap: wrap;
|
||||
max-width: 800px;
|
||||
margin: 20px auto;
|
||||
|
||||
.right {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
|
|
|
@ -12,6 +12,7 @@ import {
|
|||
Modal,
|
||||
message,
|
||||
Typography,
|
||||
Input,
|
||||
} from 'antd';
|
||||
import config from '@/utils/config';
|
||||
import { PageContainer } from '@ant-design/pro-layout';
|
||||
|
@ -273,8 +274,10 @@ const Setting = ({
|
|||
request
|
||||
.get(`${config.apiPrefix}system/log/remove`)
|
||||
.then((data: any) => {
|
||||
setLogRemoveFrequency(data.data.frequency);
|
||||
form.setFieldsValue({ frequency: data.data.frequency });
|
||||
if (data.data.info) {
|
||||
const { frequency } = data.data.info;
|
||||
setLogRemoveFrequency(frequency);
|
||||
}
|
||||
})
|
||||
.catch((error: any) => {
|
||||
console.log(error);
|
||||
|
@ -367,14 +370,19 @@ const Setting = ({
|
|||
name="frequency"
|
||||
tooltip="每x天自动删除x天以前的日志"
|
||||
>
|
||||
<InputNumber
|
||||
addonBefore="每"
|
||||
addonAfter="天"
|
||||
style={{ width: 150 }}
|
||||
min={0}
|
||||
onBlur={updateRemoveLogFrequency}
|
||||
onChange={(value) => setLogRemoveFrequency(value)}
|
||||
/>
|
||||
<Input.Group compact>
|
||||
<InputNumber
|
||||
addonBefore="每"
|
||||
addonAfter="天"
|
||||
style={{ width: 150 }}
|
||||
min={0}
|
||||
value={logRemoveFrequency}
|
||||
onChange={(value) => setLogRemoveFrequency(value)}
|
||||
/>
|
||||
<Button type="primary" onClick={updateRemoveLogFrequency}>
|
||||
确认
|
||||
</Button>
|
||||
</Input.Group>
|
||||
</Form.Item>
|
||||
<Form.Item label="检查更新" name="update">
|
||||
<CheckUpdate socketMessage={socketMessage} />
|
||||
|
|
91
yarn.lock
91
yarn.lock
|
@ -868,7 +868,7 @@
|
|||
|
||||
"@sentry/browser@6.17.2":
|
||||
version "6.17.2"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-6.17.2.tgz#8e794b846f43a341068c83420918d896683d903e"
|
||||
resolved "https://registry.npmjs.org/@sentry/browser/-/browser-6.17.2.tgz"
|
||||
integrity sha512-4Ow5z9GxK5dG9+stBNKb7s6NoxE4wgEcHRmO66QTK4gH2NNmzV4R/aaZ7iDoS/lD86sH0M86jm76dpg9uiJPmw==
|
||||
dependencies:
|
||||
"@sentry/core" "6.17.2"
|
||||
|
@ -878,7 +878,7 @@
|
|||
|
||||
"@sentry/core@6.17.2":
|
||||
version "6.17.2"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/core/-/core-6.17.2.tgz#f218920f269ccdbaee20a092bbc90a71a007cc88"
|
||||
resolved "https://registry.npmjs.org/@sentry/core/-/core-6.17.2.tgz"
|
||||
integrity sha512-Uew0CNMr+QvowrF4EJYjOUgHep/sZJ3l5zevPEELugIgqWBodd+ZDCV3fQFR7cr6KOqx1rMgVrgcKIkLl0l+RA==
|
||||
dependencies:
|
||||
"@sentry/hub" "6.17.2"
|
||||
|
@ -889,7 +889,7 @@
|
|||
|
||||
"@sentry/hub@6.17.2":
|
||||
version "6.17.2"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-6.17.2.tgz#d92accada845fa21fff1b2b491d3c6964851693b"
|
||||
resolved "https://registry.npmjs.org/@sentry/hub/-/hub-6.17.2.tgz"
|
||||
integrity sha512-CMi6jU920bTwRTmGHjP4u8toOx4gm1dsx+rsxvp+FKzqRwpwoyi9mOw8oEYERVzaqaYceGdFylyRUrjdf0f77g==
|
||||
dependencies:
|
||||
"@sentry/types" "6.17.2"
|
||||
|
@ -898,7 +898,7 @@
|
|||
|
||||
"@sentry/minimal@6.17.2":
|
||||
version "6.17.2"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-6.17.2.tgz#3b482a0d76aa33b6c9441dd21acbcc3a113e5120"
|
||||
resolved "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.17.2.tgz"
|
||||
integrity sha512-Cdh+iM6QhLKfxwUWWP4mk2K7+EsQj4tuF2dGQke4Zcbp7zQ7wbcMruUcZHiZfvg5kiSYxwNVkH7cXMzcO7AJsg==
|
||||
dependencies:
|
||||
"@sentry/hub" "6.17.2"
|
||||
|
@ -907,7 +907,7 @@
|
|||
|
||||
"@sentry/node@^6.17.2":
|
||||
version "6.17.2"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/node/-/node-6.17.2.tgz#32a5fa00b64a331073daf1e44f500c8c57184eb1"
|
||||
resolved "https://registry.npmjs.org/@sentry/node/-/node-6.17.2.tgz"
|
||||
integrity sha512-358z45WaejnsE8RZVpuLJJiFVCSEi0TRY7P60CljZuz8rnvniD3G0tuXChvu4djVty8NScWZHT/QoxvuJdTHgQ==
|
||||
dependencies:
|
||||
"@sentry/core" "6.17.2"
|
||||
|
@ -922,7 +922,7 @@
|
|||
|
||||
"@sentry/react@^6.17.2":
|
||||
version "6.17.2"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/react/-/react-6.17.2.tgz#ba2a65141ef3f3c2416313b448e06f6764a9f274"
|
||||
resolved "https://registry.npmjs.org/@sentry/react/-/react-6.17.2.tgz"
|
||||
integrity sha512-/5mcHLxBhdh67EI6mGj20NwGCZbBjJdEOmTNTUydvNGXa9Rvrluf1iz2hNSH4sju0d/Qt1rakxC5y8gWy1E5Kw==
|
||||
dependencies:
|
||||
"@sentry/browser" "6.17.2"
|
||||
|
@ -934,7 +934,7 @@
|
|||
|
||||
"@sentry/tracing@6.17.2", "@sentry/tracing@^6.17.2":
|
||||
version "6.17.2"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-6.17.2.tgz#437337071fdeffa319746905b3706518b099ec6b"
|
||||
resolved "https://registry.npmjs.org/@sentry/tracing/-/tracing-6.17.2.tgz"
|
||||
integrity sha512-oWY2Ga+5D5f90utvfF2Y0eQvme+eS768ZWjR+klRYgZWoY8r1v8uWwWsvroYU1g+h6X0G/xh3giFjsdOWtRENw==
|
||||
dependencies:
|
||||
"@sentry/hub" "6.17.2"
|
||||
|
@ -945,12 +945,12 @@
|
|||
|
||||
"@sentry/types@6.17.2":
|
||||
version "6.17.2"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.17.2.tgz#4dde3423db5953e798b19ed29618c28fc7bf2e30"
|
||||
resolved "https://registry.npmjs.org/@sentry/types/-/types-6.17.2.tgz"
|
||||
integrity sha512-UrFLRDz5mn253O8k/XftLxoldF+NyZdkqKLGIQmST5HEVr7ub9nQJ4Y5ZFA3zJYWpraaW8faIbuw+pgetC8hmQ==
|
||||
|
||||
"@sentry/utils@6.17.2":
|
||||
version "6.17.2"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-6.17.2.tgz#e8044e753b47f86068053c8d79e4ae61a39b6732"
|
||||
resolved "https://registry.npmjs.org/@sentry/utils/-/utils-6.17.2.tgz"
|
||||
integrity sha512-ePWtO44KJQwUULOiU86fa1WU3Ird2TH0i39gqB2d3zNS3QyVp9qPlzSdPKSPJ9LdgadzBHw7ikEuE+GY8JTrhA==
|
||||
dependencies:
|
||||
"@sentry/types" "6.17.2"
|
||||
|
@ -1219,13 +1219,6 @@
|
|||
resolved "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz"
|
||||
integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==
|
||||
|
||||
"@types/nedb@^1.8.11":
|
||||
version "1.8.12"
|
||||
resolved "https://registry.npmjs.org/@types/nedb/-/nedb-1.8.12.tgz"
|
||||
integrity sha512-ICDoQMORMjOSqfNFXT4ENXfwwCir1BPblXNm0SPH7C4Q10ou+pvVagcFAJ+rrzf3A47tGU4K/KbzKu7wO9j45Q==
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/node-fetch@^2.5.8":
|
||||
version "2.5.11"
|
||||
resolved "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.11.tgz"
|
||||
|
@ -2290,11 +2283,6 @@ async-validator@^4.0.2:
|
|||
resolved "https://registry.npmjs.org/async-validator/-/async-validator-4.0.3.tgz"
|
||||
integrity sha512-LVoIbJNHPKsO7FMLamo88uxdrvayGkF3vLTMTeiN3CqAbP3qSafLRc6yx3Sq9lHkiEOLNpoA2jwwnfGDdu1SMQ==
|
||||
|
||||
async@0.2.10:
|
||||
version "0.2.10"
|
||||
resolved "https://registry.npmjs.org/async/-/async-0.2.10.tgz"
|
||||
integrity sha1-trvgsGdLnXGXCMo43owjfLUmw9E=
|
||||
|
||||
async@^1.5.0:
|
||||
version "1.5.2"
|
||||
resolved "https://registry.npmjs.org/async/-/async-1.5.2.tgz"
|
||||
|
@ -2492,13 +2480,6 @@ binary-extensions@^2.0.0:
|
|||
resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz"
|
||||
integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
|
||||
|
||||
binary-search-tree@0.2.5:
|
||||
version "0.2.5"
|
||||
resolved "https://registry.npmjs.org/binary-search-tree/-/binary-search-tree-0.2.5.tgz"
|
||||
integrity sha1-fbs7IQ/coIJFDa0jNMMErzm9x4Q=
|
||||
dependencies:
|
||||
underscore "~1.4.4"
|
||||
|
||||
bindings@^1.5.0:
|
||||
version "1.5.0"
|
||||
resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz"
|
||||
|
@ -3169,7 +3150,7 @@ concat-map@0.0.1:
|
|||
|
||||
concurrently@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-7.0.0.tgz#78d31b441cec338dab03316c221a2f9a67c529b0"
|
||||
resolved "https://registry.npmjs.org/concurrently/-/concurrently-7.0.0.tgz"
|
||||
integrity sha512-WKM7PUsI8wyXpF80H+zjHP32fsgsHNQfPLw/e70Z5dYkV7hF+rf8q3D+ScWJIEr57CpkO3OWBko6hwhQLPR8Pw==
|
||||
dependencies:
|
||||
chalk "^4.1.0"
|
||||
|
@ -3523,7 +3504,7 @@ csstype@^3.0.2:
|
|||
|
||||
darkreader@4.9.40:
|
||||
version "4.9.40"
|
||||
resolved "https://registry.yarnpkg.com/darkreader/-/darkreader-4.9.40.tgz#9217a2ae83d8aca0b4dc129bba78a0617aca5bce"
|
||||
resolved "https://registry.npmjs.org/darkreader/-/darkreader-4.9.40.tgz"
|
||||
integrity sha512-Dm8S5jkXSIxvq9WitcvuH4KexV9ZuzGqDMsFOm2VwXzRkMo9VIg8udjq2Mm7cM6SaQSp/zzH4VIWioX93iWayQ==
|
||||
|
||||
dashdash@^1.12.0:
|
||||
|
@ -3558,7 +3539,7 @@ date-fns@2.x:
|
|||
|
||||
date-fns@^2.16.1:
|
||||
version "2.28.0"
|
||||
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2"
|
||||
resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz"
|
||||
integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==
|
||||
|
||||
dayjs@1.x:
|
||||
|
@ -4957,11 +4938,6 @@ ignore-walk@^3.0.1:
|
|||
dependencies:
|
||||
minimatch "^3.0.4"
|
||||
|
||||
immediate@~3.0.5:
|
||||
version "3.0.6"
|
||||
resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz"
|
||||
integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=
|
||||
|
||||
import-cwd@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz"
|
||||
|
@ -6224,13 +6200,6 @@ levn@~0.3.0:
|
|||
prelude-ls "~1.1.2"
|
||||
type-check "~0.3.2"
|
||||
|
||||
lie@3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz"
|
||||
integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=
|
||||
dependencies:
|
||||
immediate "~3.0.5"
|
||||
|
||||
lines-and-columns@^1.1.6:
|
||||
version "1.1.6"
|
||||
resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz"
|
||||
|
@ -6294,13 +6263,6 @@ loader-utils@^1.1.0:
|
|||
emojis-list "^3.0.0"
|
||||
json5 "^1.0.1"
|
||||
|
||||
localforage@^1.3.0:
|
||||
version "1.9.0"
|
||||
resolved "https://registry.npmjs.org/localforage/-/localforage-1.9.0.tgz"
|
||||
integrity sha512-rR1oyNrKulpe+VM9cYmcFn6tsHuokyVHFaCM3+osEmxaHTbEk8oQu6eGDfS6DQLWi/N67XRmB8ECG37OES368g==
|
||||
dependencies:
|
||||
lie "3.1.1"
|
||||
|
||||
locate-path@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz"
|
||||
|
@ -6690,7 +6652,7 @@ mixin-deep@^1.2.0:
|
|||
for-in "^1.0.2"
|
||||
is-extendable "^1.0.1"
|
||||
|
||||
"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.5, mkdirp@~0.5.1:
|
||||
"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.5:
|
||||
version "0.5.5"
|
||||
resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz"
|
||||
integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
|
||||
|
@ -6761,17 +6723,6 @@ natural-compare@^1.4.0:
|
|||
resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
|
||||
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
|
||||
|
||||
nedb@^1.8.0:
|
||||
version "1.8.0"
|
||||
resolved "https://registry.npmjs.org/nedb/-/nedb-1.8.0.tgz"
|
||||
integrity sha1-DjUCzYLABNU1WkPJ5VV3vXvZHYg=
|
||||
dependencies:
|
||||
async "0.2.10"
|
||||
binary-search-tree "0.2.5"
|
||||
localforage "^1.3.0"
|
||||
mkdirp "~0.5.1"
|
||||
underscore "~1.4.4"
|
||||
|
||||
needle@^2.2.1:
|
||||
version "2.9.1"
|
||||
resolved "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz"
|
||||
|
@ -9807,7 +9758,7 @@ source-map@^0.7.3, source-map@~0.7.2:
|
|||
|
||||
spawn-command@^0.0.2-1:
|
||||
version "0.0.2-1"
|
||||
resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0"
|
||||
resolved "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz"
|
||||
integrity sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=
|
||||
|
||||
spdx-correct@^3.0.0:
|
||||
|
@ -10348,6 +10299,11 @@ to-regex@^3.0.1, to-regex@^3.0.2:
|
|||
regex-not "^1.0.2"
|
||||
safe-regex "^1.1.0"
|
||||
|
||||
toad-scheduler@^1.6.0:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/toad-scheduler/-/toad-scheduler-1.6.0.tgz#717b867d2f5da67d13d166ec16adc39d0506c537"
|
||||
integrity sha512-+TdQhHTYLKfjXxLrAi4DgEptoQd99jUcr2teJnQrGlb70MEVrwP4SlVsaQO/dxCsNIM5qmYwZmynQd9tOPDRLQ==
|
||||
|
||||
toggle-selection@^1.0.6:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz"
|
||||
|
@ -10403,7 +10359,7 @@ tr46@^2.1.0:
|
|||
|
||||
tree-kill@^1.2.2:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc"
|
||||
resolved "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz"
|
||||
integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==
|
||||
|
||||
triple-beam@^1.2.0, triple-beam@^1.3.0:
|
||||
|
@ -10548,11 +10504,6 @@ undefsafe@^2.0.3:
|
|||
dependencies:
|
||||
debug "^2.2.0"
|
||||
|
||||
underscore@~1.4.4:
|
||||
version "1.4.4"
|
||||
resolved "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz"
|
||||
integrity sha1-YaajIBBiKvoHljvzJSA88SI51gQ=
|
||||
|
||||
union-value@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz"
|
||||
|
@ -11173,7 +11124,7 @@ yargs@^15.4.1:
|
|||
|
||||
yargs@^16.2.0:
|
||||
version "16.2.0"
|
||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
|
||||
resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz"
|
||||
integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
|
||||
dependencies:
|
||||
cliui "^7.0.2"
|
||||
|
|
Loading…
Reference in New Issue
Block a user