Merge branch 'master' of https://github.com/janderedev/automod
This commit is contained in:
commit
3c45dd110c
18 changed files with 1558 additions and 17 deletions
|
@ -90,7 +90,7 @@ export default {
|
|||
try {
|
||||
let user = await parseUserOrId(userStr);
|
||||
if (!user) {
|
||||
embeds.push(embed(`I can't resolve \`${sanitizeMessageContent(userStr).trim()}\` to a user.`, null, '#ff785d'));
|
||||
embeds.push(embed(`I can't resolve \`${sanitizeMessageContent(userStr).trim()}\` to a user.`, null, EmbedColor.SoftError));
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
@ -59,7 +59,7 @@ export default {
|
|||
try {
|
||||
let user = await parseUserOrId(userStr);
|
||||
if (!user) {
|
||||
embeds.push(embed(`I can't resolve \`${sanitizeMessageContent(userStr).trim()}\` to a user.`, null, '#ff785d'));
|
||||
embeds.push(embed(`I can't resolve \`${sanitizeMessageContent(userStr).trim()}\` to a user.`, null, EmbedColor.SoftError));
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
@ -58,7 +58,7 @@ export default {
|
|||
reason = reason ? `${userInput} ${reason}` : userInput;
|
||||
}
|
||||
else {
|
||||
embeds.push(embed(`I can't resolve \`${sanitizeMessageContent(userStr).trim()}\` to a user.`, null, '#ff785d'));
|
||||
embeds.push(embed(`I can't resolve \`${sanitizeMessageContent(userStr).trim()}\` to a user.`, null, EmbedColor.SoftError));
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import Monk, { IMonkManager } from 'monk';
|
||||
import Monk, { ICollection, IMonkManager } from 'monk';
|
||||
import { dbs } from '..';
|
||||
import logger from './logger';
|
||||
|
||||
export default (): IMonkManager => {
|
||||
|
@ -27,3 +28,32 @@ function getDBUrl() {
|
|||
|
||||
return dburl;
|
||||
}
|
||||
|
||||
async function databaseMigrations() {
|
||||
async function setIndexes(collection: ICollection, toIndex: string[]) {
|
||||
try {
|
||||
const indexes = await collection.indexes();
|
||||
for (const index of toIndex) {
|
||||
if (!Object.values(indexes).find(v => v[0][0] == index)) {
|
||||
logger.info(`Creating index ${index} on ${collection.name}`);
|
||||
await collection.createIndex(index);
|
||||
}
|
||||
}
|
||||
} catch(e) {
|
||||
logger.warn(`Failed to run migrations for ${collection.name}: ${e}`);
|
||||
}
|
||||
}
|
||||
|
||||
await setIndexes(dbs.BRIDGE_CONFIG, [ 'discord', 'revolt' ]);
|
||||
await setIndexes(dbs.BRIDGE_REQUESTS, [ 'id', 'revolt' ]);
|
||||
await setIndexes(dbs.BRIDGED_MESSAGES, [ 'discord.messageId', 'revolt.messageId', 'revolt.nonce' ]);
|
||||
await setIndexes(dbs.INFRACTIONS, [ 'createdBy', 'user', 'server' ]);
|
||||
await setIndexes(dbs.PENDING_LOGINS, [ 'code', 'user' ]);
|
||||
await setIndexes(dbs.SERVERS, [ 'id' ]);
|
||||
await setIndexes(dbs.SESSIONS, [ 'user', 'token' ]);
|
||||
await setIndexes(dbs.TEMPBANS, [ 'id', 'until' ]);
|
||||
await setIndexes(dbs.USERS, [ 'id' ]);
|
||||
await setIndexes(dbs.VOTEKICKS, [ 'id', 'server', 'target' ]);
|
||||
}
|
||||
|
||||
export { databaseMigrations }
|
||||
|
|
9
bot/src/bot/modules/raid_detection.ts
Normal file
9
bot/src/bot/modules/raid_detection.ts
Normal file
|
@ -0,0 +1,9 @@
|
|||
import path from 'path';
|
||||
import { client } from '../..';
|
||||
import logger from '../logger';
|
||||
|
||||
if (process.env['AUTOMOD_LOAD_SPAM_DETECTION']) {
|
||||
logger.info('Importing spam detection');
|
||||
import(path.join(process.cwd(), '..', 'private', 'automod-spam-detection', 'dist', 'index.js'))
|
||||
.then(mod => mod.raidDetection(client as any, logger, client.db, process.env.REDIS_URL));
|
||||
}
|
|
@ -191,7 +191,7 @@ async function sendLogMessage(config: LogConfig, content: LogMessage) {
|
|||
const embed = new MessageEmbed();
|
||||
if (c.title) embed.setTitle(content.title);
|
||||
if (c.description) embed.setDescription(c.description);
|
||||
if (c.color) embed.setColor(c.color as ColorResolvable);
|
||||
if (c.color?.match(/^#[0-9a-fA-F]+$/)) embed.setColor(c.color as ColorResolvable);
|
||||
if (c.fields?.length) {
|
||||
for (const field of c.fields) {
|
||||
embed.addField(field.title, field.content.trim() || "\u200b", field.inline);
|
||||
|
@ -313,10 +313,10 @@ function sanitizeMessageContent(msg: string): string {
|
|||
}
|
||||
|
||||
enum EmbedColor {
|
||||
Error = "#ff450c",
|
||||
SoftError = "#ff785d",
|
||||
Warning = "#ffda55",
|
||||
Success = "#23ff91",
|
||||
Error = "var(--error)",
|
||||
SoftError = "var(--warning)",
|
||||
Warning = "var(--warning)",
|
||||
Success = "var(--success)",
|
||||
}
|
||||
|
||||
function embed(content: string, title?: string|null, color?: string|EmbedColor): SendableEmbed {
|
||||
|
|
|
@ -3,7 +3,7 @@ config();
|
|||
|
||||
import logger from './bot/logger';
|
||||
import AutomodClient, { login } from './struct/AutomodClient';
|
||||
import MongoDB from './bot/db';
|
||||
import MongoDB, { databaseMigrations } from './bot/db';
|
||||
import DbUser from 'automod/dist/types/DbUser';
|
||||
import ServerConfig from 'automod/dist/types/ServerConfig';
|
||||
import Infraction from 'automod/dist/types/antispam/Infraction';
|
||||
|
@ -56,6 +56,9 @@ logger.info(`\
|
|||
await db.get('servers').findOne({});
|
||||
logger.done('DB ready!');
|
||||
|
||||
logger.info('Running database migrations...');
|
||||
await databaseMigrations();
|
||||
|
||||
// Load modules
|
||||
import('./bot/modules/command_handler');
|
||||
import('./bot/modules/mod_logs');
|
||||
|
@ -65,4 +68,5 @@ logger.info(`\
|
|||
import('./bot/modules/metrics');
|
||||
import('./bot/modules/bot_status');
|
||||
import('./bot/modules/fetch_all');
|
||||
import('./bot/modules/raid_detection');
|
||||
})();
|
||||
|
|
|
@ -196,6 +196,11 @@ client.on('messageCreate', async message => {
|
|||
masquerade: {
|
||||
name: message.author.username,
|
||||
avatar: message.author.displayAvatarURL({ size: 128 }),
|
||||
colour: channel.server?.havePermission('ManageRole')
|
||||
? message.member?.displayColor // Discord.js returns black or 0 instead of undefined when no role color is set
|
||||
? message.member?.displayHexColor
|
||||
: 'var(--foreground)'
|
||||
: undefined,
|
||||
},
|
||||
embeds: message.embeds.length
|
||||
? message.embeds.map(e => new GenericEmbed(e).toRevolt())
|
||||
|
|
|
@ -19,7 +19,7 @@ export default class GenericEmbed {
|
|||
if (embed.title) this.title = embed.title;
|
||||
if (embed.description) this.description = embed.description;
|
||||
if (embed.icon_url?.match(/^http(s)?\:\/\//)) this.icon = embed.icon_url;
|
||||
if (embed.colour) this.color = (embed.colour as any);
|
||||
if (embed.colour?.match(/^#[0-9a-fA-F]+$/)) this.color = (embed.colour as any);
|
||||
if (embed.url) this.url = embed.url;
|
||||
}
|
||||
}
|
||||
|
|
7
lib/.gitignore
vendored
Normal file
7
lib/.gitignore
vendored
Normal file
|
@ -0,0 +1,7 @@
|
|||
.pnp.*
|
||||
.yarn/*
|
||||
!.yarn/patches
|
||||
!.yarn/plugins
|
||||
!.yarn/releases
|
||||
!.yarn/sdks
|
||||
!.yarn/versions
|
Binary file not shown.
Binary file not shown.
786
lib/.yarn/releases/yarn-3.2.1.cjs
vendored
Executable file
786
lib/.yarn/releases/yarn-3.2.1.cjs
vendored
Executable file
File diff suppressed because one or more lines are too long
|
@ -1 +1,3 @@
|
|||
nodeLinker: node-modules
|
||||
|
||||
yarnPath: .yarn/releases/yarn-3.2.1.cjs
|
||||
|
|
|
@ -3,13 +3,18 @@
|
|||
"version": "1.0.0",
|
||||
"description": "Shared code for AutoMod",
|
||||
"scripts": {
|
||||
"build": "rm -rf dist && tsc"
|
||||
"build": "rm -rf dist && tsc",
|
||||
"dev": "rm -rf dist && tsc-watch"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"devDependencies": {
|
||||
"@types/node": "^18.0.4",
|
||||
"monk": "^7.3.4",
|
||||
"redis": "^4.2.0",
|
||||
"tsc-watch": "^5.0.3",
|
||||
"typescript": "^4.7.4"
|
||||
}
|
||||
},
|
||||
"packageManager": "yarn@3.2.1"
|
||||
}
|
||||
|
|
112
lib/src/misc/database.ts
Normal file
112
lib/src/misc/database.ts
Normal file
|
@ -0,0 +1,112 @@
|
|||
/**
|
||||
* Mongodb wrapper that uses redis for caching. I found out I don't
|
||||
* actually need this but I already wrote it so I'm keeping it here
|
||||
*
|
||||
* I also don't know how well it works
|
||||
*/
|
||||
|
||||
import { FindOneResult, ICollection, IObjectID } from 'monk';
|
||||
import { createClient } from 'redis';
|
||||
|
||||
// createClient() returns a wacky ass type and this is the only way I can think of to get it
|
||||
const _redisClient = createClient();
|
||||
type RedisClient = typeof _redisClient;
|
||||
|
||||
class CachedDb<T> {
|
||||
db: ICollection<T>;
|
||||
redis: RedisClient;
|
||||
ttl: number = 300;
|
||||
redisPrefix: string;
|
||||
mongoIndexKey: string;
|
||||
debug: boolean = false;
|
||||
|
||||
constructor(db: ICollection<T>, redis: RedisClient, indexKey: string) {
|
||||
this.db = db;
|
||||
this.redis = redis;
|
||||
this.redisPrefix = db.name;
|
||||
this.mongoIndexKey = indexKey;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a database entry and returns it
|
||||
* @param key
|
||||
*/
|
||||
get(key: string): Promise<({ _id: string | IObjectID } & T) | T | undefined> {
|
||||
return new Promise(async (resolve, reject) => {
|
||||
try {
|
||||
const res = await this.redis.GET(`${this.redisPrefix}:${key}`);
|
||||
if (res) {
|
||||
if (this.debug) console.debug('Db: Answering from cache');
|
||||
resolve(JSON.parse(res));
|
||||
return;
|
||||
}
|
||||
else if (this.debug) console.debug('Db: Fetching from database');
|
||||
|
||||
const mongoRes = await this.db.findOne({ [this.mongoIndexKey]: key } as any);
|
||||
resolve(mongoRes ?? undefined);
|
||||
|
||||
try {
|
||||
await this.redis.SET(`${this.redisPrefix}:${key}`, JSON.stringify(mongoRes));
|
||||
await this.redis.EXPIRE(`${this.redisPrefix}:${key}`, this.ttl);
|
||||
} catch(e) {
|
||||
console.warn('Failed to cache to redis:', e);
|
||||
}
|
||||
} catch(e) { reject(e) }
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Inserts or updates a database entry and caches it. Overwrites existing keys
|
||||
* @param value
|
||||
*/
|
||||
set(value: T): Promise<{ ok: number; n: number; nModified: number; }> {
|
||||
return new Promise(async (resolve, reject) => {
|
||||
const key = (value as any)[this.mongoIndexKey];
|
||||
try {
|
||||
const res = await this.db.update(
|
||||
{ [this.mongoIndexKey]: key } as any,
|
||||
value,
|
||||
{ upsert: true, replace: true, single: true }
|
||||
);
|
||||
resolve(res);
|
||||
if (!res.ok) return console.debug('Db: Not caching;', res);
|
||||
} catch(e) { reject(e) }
|
||||
|
||||
try {
|
||||
if (this.debug) console.debug('Db: Caching updated document');
|
||||
await this.redis.SET(`${this.redisPrefix}:${key}`, JSON.stringify(value));
|
||||
await this.redis.EXPIRE(`${this.redisPrefix}:${key}`, this.ttl);
|
||||
} catch(e) {
|
||||
console.warn('Failed to cache to redis:', e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Inserts or updates a database entry without overwriting other keys
|
||||
* @param value
|
||||
* @returns The updated/created document
|
||||
*/
|
||||
update(key: string, value: Partial<T>): Promise<FindOneResult<T>> {
|
||||
return new Promise(async (resolve, reject) => {
|
||||
try {
|
||||
const res = await this.db.findOneAndUpdate(
|
||||
{ [this.mongoIndexKey]: key } as any,
|
||||
{ $set: value },
|
||||
{ upsert: true, returnOriginal: true } // monk is a steaming pile of garbage, i need to set the deprecated returnOriginal
|
||||
); // because the fuckwarts who wrote it made it default to `false`
|
||||
resolve(res);
|
||||
if (!res) return;
|
||||
|
||||
try {
|
||||
await this.redis.SET(`${this.redisPrefix}:${key}`, JSON.stringify(res));
|
||||
await this.redis.EXPIRE(`${this.redisPrefix}:${key}`, this.ttl);
|
||||
} catch(e) {
|
||||
console.warn('Failed to cache to redis:', e);
|
||||
}
|
||||
} catch(e) { reject(e) }
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export { CachedDb }
|
|
@ -6,6 +6,7 @@ class ServerConfig {
|
|||
prefix?: string;
|
||||
spaceAfterPrefix?: boolean;
|
||||
automodSettings?: AutomodSettings;
|
||||
antispamEnabled?: boolean; // Used by private spam detection module
|
||||
botManagers?: string[];
|
||||
moderators?: string[];
|
||||
votekick?: {
|
||||
|
|
588
lib/yarn.lock
588
lib/yarn.lock
|
@ -5,10 +5,92 @@ __metadata:
|
|||
version: 6
|
||||
cacheKey: 8
|
||||
|
||||
"@types/node@npm:^18.0.4":
|
||||
version: 18.0.4
|
||||
resolution: "@types/node@npm:18.0.4"
|
||||
checksum: 981284fd57941f233f0e77038087c122f56e3c2b4fc4e090dfc7f0a93abfc526d5ccdd59eb3ef551d713245cf3943e37c7b957f12ba699209341a447c39fab59
|
||||
"@redis/bloom@npm:1.0.2":
|
||||
version: 1.0.2
|
||||
resolution: "@redis/bloom@npm:1.0.2"
|
||||
peerDependencies:
|
||||
"@redis/client": ^1.0.0
|
||||
checksum: 4872e7e5e4ff03d63349ca88d3164d487f62805651ada91924de2592995993401c98a01cb93bff8d71e9a2e54985b2485b6cb0e084a7e8b1283e2ebb8bc4b833
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@redis/client@npm:1.2.0":
|
||||
version: 1.2.0
|
||||
resolution: "@redis/client@npm:1.2.0"
|
||||
dependencies:
|
||||
cluster-key-slot: 1.1.0
|
||||
generic-pool: 3.8.2
|
||||
yallist: 4.0.0
|
||||
checksum: 098a550a6728d9d3babb432a1c32f1678cbda5ad7fa3d59316fc334be42ef05d778fc4cf2e3d873a34817447870a5fc0486e62793698a279404b3b086ba7422e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@redis/graph@npm:1.0.1":
|
||||
version: 1.0.1
|
||||
resolution: "@redis/graph@npm:1.0.1"
|
||||
peerDependencies:
|
||||
"@redis/client": ^1.0.0
|
||||
checksum: 72e485efa416bdff10420f6e13c9cb4e1e5c70752e5172717adf62fc1d4d9ba12e708229fd87876f3a93270ff74c4bcd4d916987438dc36a94f7f12c9785fa44
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@redis/json@npm:1.0.3":
|
||||
version: 1.0.3
|
||||
resolution: "@redis/json@npm:1.0.3"
|
||||
peerDependencies:
|
||||
"@redis/client": ^1.0.0
|
||||
checksum: 26a7003c2fbacfa5998671e3a301cb2285432bf90f237adedcf76c0be0d379528e6710d469a8ea93c04bbd22951f9c2f41d460dbd79e85856f199248c4a250d5
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@redis/search@npm:1.0.6":
|
||||
version: 1.0.6
|
||||
resolution: "@redis/search@npm:1.0.6"
|
||||
peerDependencies:
|
||||
"@redis/client": ^1.0.0
|
||||
checksum: 5c776143520b11ae2e49a05e7fe3df514a01460f2be90759b15e4f097bf4a985784c48c2184ac2c275ced3ec5a0c77b208a4d46a50161d1ad6025e3ab2990aa7
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@redis/time-series@npm:1.0.3":
|
||||
version: 1.0.3
|
||||
resolution: "@redis/time-series@npm:1.0.3"
|
||||
peerDependencies:
|
||||
"@redis/client": ^1.0.0
|
||||
checksum: 4d11518185dd15f31c5b4a433902e53a3ebc24614a0221080ab12abf4f6fc60b3db00a71a83de7b4b10f11077de611dc1c273274573646d63481d40ca246f82d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/bson@npm:*":
|
||||
version: 4.2.0
|
||||
resolution: "@types/bson@npm:4.2.0"
|
||||
dependencies:
|
||||
bson: "*"
|
||||
checksum: 55abf60c57b7f05655c210b386392636a299a7df18b89cec2cde0aa87374d97dd4ac9632226b0f6fe135d16ad4296ae5ddc782f6e9132d38c53dd26a6df8e704
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/mongodb@npm:^3.5.25":
|
||||
version: 3.6.20
|
||||
resolution: "@types/mongodb@npm:3.6.20"
|
||||
dependencies:
|
||||
"@types/bson": "*"
|
||||
"@types/node": "*"
|
||||
checksum: e5397ada2ed728997f7c3f5424e8c28f682a635488be967c9c18a5de27b1641cf28bb42bc12026ac6d475c457a880e27097e13c8120350ba13219f4ccc030656
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/node@npm:*, @types/node@npm:^18.0.4":
|
||||
version: 18.0.5
|
||||
resolution: "@types/node@npm:18.0.5"
|
||||
checksum: cc9c67d0074252f798d226dd95a22e0e8851cf7fc623ef4a603d9ad2c2b46650f930147062ea33719008b1de67f08f499ad693307d02f8396e6f1fead8144329
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ansi-regex@npm:^5.0.1":
|
||||
version: 5.0.1
|
||||
resolution: "ansi-regex@npm:5.0.1"
|
||||
checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -17,10 +99,483 @@ __metadata:
|
|||
resolution: "automod@workspace:."
|
||||
dependencies:
|
||||
"@types/node": ^18.0.4
|
||||
monk: ^7.3.4
|
||||
redis: ^4.2.0
|
||||
tsc-watch: ^5.0.3
|
||||
typescript: ^4.7.4
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"base64-js@npm:^1.3.1":
|
||||
version: 1.5.1
|
||||
resolution: "base64-js@npm:1.5.1"
|
||||
checksum: 669632eb3745404c2f822a18fc3a0122d2f9a7a13f7fb8b5823ee19d1d2ff9ee5b52c53367176ea4ad093c332fd5ab4bd0ebae5a8e27917a4105a4cfc86b1005
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"bl@npm:^2.2.1":
|
||||
version: 2.2.1
|
||||
resolution: "bl@npm:2.2.1"
|
||||
dependencies:
|
||||
readable-stream: ^2.3.5
|
||||
safe-buffer: ^5.1.1
|
||||
checksum: 4f5d9b258919646a8d02f1731379e53b6f6309e34596ae02afbc3aeb183910bd2d0b70681f889b7c620ca48f65dc1cd0992ee1266c90d6d7c3be60688d141233
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"bson@npm:*":
|
||||
version: 4.6.5
|
||||
resolution: "bson@npm:4.6.5"
|
||||
dependencies:
|
||||
buffer: ^5.6.0
|
||||
checksum: b9d4856241e76f6bacf6825b5280f993a867b74fa47bb62b3a20d835d9f02979e1a10a6c38536ac86cb485dc96aabdacb0c6922fca7a784603a781a00e23c336
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"bson@npm:^1.1.4":
|
||||
version: 1.1.6
|
||||
resolution: "bson@npm:1.1.6"
|
||||
checksum: 75762c9b7e0b3156cb0f38c7eb9ffcade53f0b04ac87dece9cba38f6dc570d9af91251de6a8988b294063cfaa21894c60ac9e85c34176accb3674acb092d66a7
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"buffer@npm:^5.6.0":
|
||||
version: 5.7.1
|
||||
resolution: "buffer@npm:5.7.1"
|
||||
dependencies:
|
||||
base64-js: ^1.3.1
|
||||
ieee754: ^1.1.13
|
||||
checksum: e2cf8429e1c4c7b8cbd30834ac09bd61da46ce35f5c22a78e6c2f04497d6d25541b16881e30a019c6fd3154150650ccee27a308eff3e26229d788bbdeb08ab84
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"cluster-key-slot@npm:1.1.0":
|
||||
version: 1.1.0
|
||||
resolution: "cluster-key-slot@npm:1.1.0"
|
||||
checksum: fc953c75209b1ef9088081bab4e40a0b2586491c974ab93460569c014515ca5a2e31c043f185285e177007162fc353d07836d98f570c171dbe055775430e495b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"core-util-is@npm:~1.0.0":
|
||||
version: 1.0.3
|
||||
resolution: "core-util-is@npm:1.0.3"
|
||||
checksum: 9de8597363a8e9b9952491ebe18167e3b36e7707569eed0ebf14f8bba773611376466ae34575bca8cfe3c767890c859c74056084738f09d4e4a6f902b2ad7d99
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"cross-spawn@npm:^7.0.3":
|
||||
version: 7.0.3
|
||||
resolution: "cross-spawn@npm:7.0.3"
|
||||
dependencies:
|
||||
path-key: ^3.1.0
|
||||
shebang-command: ^2.0.0
|
||||
which: ^2.0.1
|
||||
checksum: 671cc7c7288c3a8406f3c69a3ae2fc85555c04169e9d611def9a675635472614f1c0ed0ef80955d5b6d4e724f6ced67f0ad1bb006c2ea643488fcfef994d7f52
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"debug@npm:*":
|
||||
version: 4.3.4
|
||||
resolution: "debug@npm:4.3.4"
|
||||
dependencies:
|
||||
ms: 2.1.2
|
||||
peerDependenciesMeta:
|
||||
supports-color:
|
||||
optional: true
|
||||
checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"denque@npm:^1.4.1":
|
||||
version: 1.5.1
|
||||
resolution: "denque@npm:1.5.1"
|
||||
checksum: 4375ad19d5cea99f90effa82a8cecdaa10f4eb261fbcd7e47cd753ff2737f037aac8f7f4e031cc77f3966314c491c86a0d3b20c128aeee57f791b4662c45108e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"duplexer@npm:~0.1.1":
|
||||
version: 0.1.2
|
||||
resolution: "duplexer@npm:0.1.2"
|
||||
checksum: 62ba61a830c56801db28ff6305c7d289b6dc9f859054e8c982abd8ee0b0a14d2e9a8e7d086ffee12e868d43e2bbe8a964be55ddbd8c8957714c87373c7a4f9b0
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"event-stream@npm:=3.3.4":
|
||||
version: 3.3.4
|
||||
resolution: "event-stream@npm:3.3.4"
|
||||
dependencies:
|
||||
duplexer: ~0.1.1
|
||||
from: ~0
|
||||
map-stream: ~0.1.0
|
||||
pause-stream: 0.0.11
|
||||
split: 0.3
|
||||
stream-combiner: ~0.0.4
|
||||
through: ~2.3.1
|
||||
checksum: 80b467820b6daf824d9fb4345d2daf115a056e5c104463f2e98534e92d196a27f2df5ea2aa085624db26f4c45698905499e881d13bc7c01f7a13eac85be72a22
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"from@npm:~0":
|
||||
version: 0.1.7
|
||||
resolution: "from@npm:0.1.7"
|
||||
checksum: b85125b7890489656eb2e4f208f7654a93ec26e3aefaf3bbbcc0d496fc1941e4405834fcc9fe7333192aa2187905510ace70417bbf9ac6f6f4784a731d986939
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"generic-pool@npm:3.8.2":
|
||||
version: 3.8.2
|
||||
resolution: "generic-pool@npm:3.8.2"
|
||||
checksum: f549077d90265e5e4d32a2410205b357ec61cf73d17861f1013637984390e09fe7bf537129a2c6ed30ae57662a57c8d54194f80046408d3349836330f422dbde
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ieee754@npm:^1.1.13":
|
||||
version: 1.2.1
|
||||
resolution: "ieee754@npm:1.2.1"
|
||||
checksum: 5144c0c9815e54ada181d80a0b810221a253562422e7c6c3a60b1901154184f49326ec239d618c416c1c5945a2e197107aee8d986a3dd836b53dffefd99b5e7e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"inherits@npm:~2.0.3":
|
||||
version: 2.0.4
|
||||
resolution: "inherits@npm:2.0.4"
|
||||
checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"isarray@npm:~1.0.0":
|
||||
version: 1.0.0
|
||||
resolution: "isarray@npm:1.0.0"
|
||||
checksum: f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"isexe@npm:^2.0.0":
|
||||
version: 2.0.0
|
||||
resolution: "isexe@npm:2.0.0"
|
||||
checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"map-stream@npm:~0.1.0":
|
||||
version: 0.1.0
|
||||
resolution: "map-stream@npm:0.1.0"
|
||||
checksum: 38abbe4eb883888031e6b2fc0630bc583c99396be16b8ace5794b937b682a8a081f03e8b15bfd4914d1bc88318f0e9ac73ba3512ae65955cd449f63256ddb31d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"memory-pager@npm:^1.0.2":
|
||||
version: 1.5.0
|
||||
resolution: "memory-pager@npm:1.5.0"
|
||||
checksum: d1a2e684583ef55c61cd3a49101da645b11ad57014dfc565e0b43baa9004b743f7e4ab81493d8fff2ab24e9950987cc3209c94bcc4fc8d7e30a475489a1f15e9
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"mongodb@npm:^3.2.3":
|
||||
version: 3.7.3
|
||||
resolution: "mongodb@npm:3.7.3"
|
||||
dependencies:
|
||||
bl: ^2.2.1
|
||||
bson: ^1.1.4
|
||||
denque: ^1.4.1
|
||||
optional-require: ^1.1.8
|
||||
safe-buffer: ^5.1.2
|
||||
saslprep: ^1.0.0
|
||||
dependenciesMeta:
|
||||
saslprep:
|
||||
optional: true
|
||||
peerDependenciesMeta:
|
||||
aws4:
|
||||
optional: true
|
||||
bson-ext:
|
||||
optional: true
|
||||
kerberos:
|
||||
optional: true
|
||||
mongodb-client-encryption:
|
||||
optional: true
|
||||
mongodb-extjson:
|
||||
optional: true
|
||||
snappy:
|
||||
optional: true
|
||||
checksum: ef7690fe6ee7d1752f121b14e59b3fabfddc60ff0536babce6c945703ad0010de9e6fa7de4c91b99275c256876a72a06899ce27893aba0838c2b542088bd1044
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"monk-middleware-cast-ids@npm:^0.2.1":
|
||||
version: 0.2.1
|
||||
resolution: "monk-middleware-cast-ids@npm:0.2.1"
|
||||
checksum: fb5d60eb65d9465cfc9debea1e4fa99d3373b0c20a8e20847414c3fb7e7163888e9253d1d8f8b9bd8ad182739f04a21a945193122d09df65b44fa0e2829e4226
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"monk-middleware-fields@npm:^0.2.0":
|
||||
version: 0.2.0
|
||||
resolution: "monk-middleware-fields@npm:0.2.0"
|
||||
checksum: acc670026526296dc59b811d8a3ae54a04b153ba78e419828340eb3b3607bb1e84d0fe6128a851e3d663699c0df7ca1f9fd2e81686a2fa8ecd239db60091b452
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"monk-middleware-handle-callback@npm:^0.2.0":
|
||||
version: 0.2.2
|
||||
resolution: "monk-middleware-handle-callback@npm:0.2.2"
|
||||
checksum: 3c921ead69171e84af9f16c97894cf8ad6828b3cd0ee9990167cc6bfdda947dcbd9241123bfec74addc7755baaf689248a4c9b738289dcfa5eff69e6baa9b252
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"monk-middleware-options@npm:^0.2.1":
|
||||
version: 0.2.1
|
||||
resolution: "monk-middleware-options@npm:0.2.1"
|
||||
checksum: 6ecb2b55913cc514ddf79d40e356915d4a1beadf82151b32ce46ba5652f2a97d7d77f28901951002be6ee7bcb14e80d577ae3a66fd7da7a2ef3b20252bf2b504
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"monk-middleware-query@npm:^0.2.0":
|
||||
version: 0.2.0
|
||||
resolution: "monk-middleware-query@npm:0.2.0"
|
||||
checksum: 7950b535ca397938b73c651b6b755ec18204886760a665fc386ea78dd24ca2d04ca64cb9567759d84b844bd0b5108c7306eafb860955959309cbc9d2bf66f073
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"monk-middleware-wait-for-connection@npm:^0.2.0":
|
||||
version: 0.2.0
|
||||
resolution: "monk-middleware-wait-for-connection@npm:0.2.0"
|
||||
checksum: 1c3f23ddb3568fc01cabb777df550f7ef6eaf6f4701e4a2f6354c01c86f391225af96d9a8f3f1a7f542487e8a3f6ec18b44ec8d55102b3e1ee166d9c6751752a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"monk@npm:^7.3.4":
|
||||
version: 7.3.4
|
||||
resolution: "monk@npm:7.3.4"
|
||||
dependencies:
|
||||
"@types/mongodb": ^3.5.25
|
||||
debug: "*"
|
||||
mongodb: ^3.2.3
|
||||
monk-middleware-cast-ids: ^0.2.1
|
||||
monk-middleware-fields: ^0.2.0
|
||||
monk-middleware-handle-callback: ^0.2.0
|
||||
monk-middleware-options: ^0.2.1
|
||||
monk-middleware-query: ^0.2.0
|
||||
monk-middleware-wait-for-connection: ^0.2.0
|
||||
object-assign: ^4.1.1
|
||||
checksum: 6eb230e9dd6c25e0a1374f903f0caeb4067eef2df6d8b3672785eb9bff2041ab509b067f29756c0946ff2276912b251d1c84bded3d204f56b082e632c469de77
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ms@npm:2.1.2":
|
||||
version: 2.1.2
|
||||
resolution: "ms@npm:2.1.2"
|
||||
checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"node-cleanup@npm:^2.1.2":
|
||||
version: 2.1.2
|
||||
resolution: "node-cleanup@npm:2.1.2"
|
||||
checksum: 584cdc3e42560a998b4579f91ed8f936b27011628f3102e5a1093205f0691cdf8d899287d1f2e4d2071ea4ab1d615810bad6dbe2b988ef173a1cbaa76d8165b3
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"object-assign@npm:^4.1.1":
|
||||
version: 4.1.1
|
||||
resolution: "object-assign@npm:4.1.1"
|
||||
checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"optional-require@npm:^1.1.8":
|
||||
version: 1.1.8
|
||||
resolution: "optional-require@npm:1.1.8"
|
||||
dependencies:
|
||||
require-at: ^1.0.6
|
||||
checksum: 437db76f713052925185ae80837b593877f75101154e8937f50d33b0b07bd500c214efc9016748642109b6e3e1197eb0513a2963eb06bcf3890f88a2724b1c87
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"path-key@npm:^3.1.0":
|
||||
version: 3.1.1
|
||||
resolution: "path-key@npm:3.1.1"
|
||||
checksum: 55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pause-stream@npm:0.0.11":
|
||||
version: 0.0.11
|
||||
resolution: "pause-stream@npm:0.0.11"
|
||||
dependencies:
|
||||
through: ~2.3
|
||||
checksum: 3c4a14052a638b92e0c96eb00c0d7977df7f79ea28395250c525d197f1fc02d34ce1165d5362e2e6ebbb251524b94a76f3f0d4abc39ab8b016d97449fe15583c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"process-nextick-args@npm:~2.0.0":
|
||||
version: 2.0.1
|
||||
resolution: "process-nextick-args@npm:2.0.1"
|
||||
checksum: 1d38588e520dab7cea67cbbe2efdd86a10cc7a074c09657635e34f035277b59fbb57d09d8638346bf7090f8e8ebc070c96fa5fd183b777fff4f5edff5e9466cf
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ps-tree@npm:^1.2.0":
|
||||
version: 1.2.0
|
||||
resolution: "ps-tree@npm:1.2.0"
|
||||
dependencies:
|
||||
event-stream: =3.3.4
|
||||
bin:
|
||||
ps-tree: ./bin/ps-tree.js
|
||||
checksum: e635dd00f53d30d31696cf5f95b3a8dbdf9b1aeb36d4391578ce8e8cd22949b7c5536c73b0dc18c78615ea3ddd4be96101166be59ca2e3e3cb1e2f79ba3c7f98
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"readable-stream@npm:^2.3.5":
|
||||
version: 2.3.7
|
||||
resolution: "readable-stream@npm:2.3.7"
|
||||
dependencies:
|
||||
core-util-is: ~1.0.0
|
||||
inherits: ~2.0.3
|
||||
isarray: ~1.0.0
|
||||
process-nextick-args: ~2.0.0
|
||||
safe-buffer: ~5.1.1
|
||||
string_decoder: ~1.1.1
|
||||
util-deprecate: ~1.0.1
|
||||
checksum: e4920cf7549a60f8aaf694d483a0e61b2a878b969d224f89b3bc788b8d920075132c4b55a7494ee944c7b6a9a0eada28a7f6220d80b0312ece70bbf08eeca755
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"redis@npm:^4.2.0":
|
||||
version: 4.2.0
|
||||
resolution: "redis@npm:4.2.0"
|
||||
dependencies:
|
||||
"@redis/bloom": 1.0.2
|
||||
"@redis/client": 1.2.0
|
||||
"@redis/graph": 1.0.1
|
||||
"@redis/json": 1.0.3
|
||||
"@redis/search": 1.0.6
|
||||
"@redis/time-series": 1.0.3
|
||||
checksum: 6c35b56c6b685e82973c5698c5736c07ccbc59f3bc18d8de61e45ead2df4b8fc82062e5618452f4d3f8c23f02ff8c0b847c8d6a681f909c403a0fb96adcc2b98
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"require-at@npm:^1.0.6":
|
||||
version: 1.0.6
|
||||
resolution: "require-at@npm:1.0.6"
|
||||
checksum: 7753a6ebad99855ef015d5533a787c65e883c94c23371368eebf6f1c7e2a078811013b204823152cbab206a00e825e8e5ca09416fd835a489fa30bf064fbe6d9
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2":
|
||||
version: 5.2.1
|
||||
resolution: "safe-buffer@npm:5.2.1"
|
||||
checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1":
|
||||
version: 5.1.2
|
||||
resolution: "safe-buffer@npm:5.1.2"
|
||||
checksum: f2f1f7943ca44a594893a852894055cf619c1fbcb611237fc39e461ae751187e7baf4dc391a72125e0ac4fb2d8c5c0b3c71529622e6a58f46b960211e704903c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"saslprep@npm:^1.0.0":
|
||||
version: 1.0.3
|
||||
resolution: "saslprep@npm:1.0.3"
|
||||
dependencies:
|
||||
sparse-bitfield: ^3.0.3
|
||||
checksum: 4fdc0b70fb5e523f977de405e12cca111f1f10dd68a0cfae0ca52c1a7919a94d1556598ba2d35f447655c3b32879846c77f9274c90806f6673248ae3cea6ee43
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"shebang-command@npm:^2.0.0":
|
||||
version: 2.0.0
|
||||
resolution: "shebang-command@npm:2.0.0"
|
||||
dependencies:
|
||||
shebang-regex: ^3.0.0
|
||||
checksum: 6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"shebang-regex@npm:^3.0.0":
|
||||
version: 3.0.0
|
||||
resolution: "shebang-regex@npm:3.0.0"
|
||||
checksum: 1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"sparse-bitfield@npm:^3.0.3":
|
||||
version: 3.0.3
|
||||
resolution: "sparse-bitfield@npm:3.0.3"
|
||||
dependencies:
|
||||
memory-pager: ^1.0.2
|
||||
checksum: 174da88dbbcc783d5dbd26921931cc83830280b8055fb05333786ebe6fc015b9601b24972b3d55920dd2d9f5fb120576fbfa2469b08e5222c9cadf3f05210aab
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"split@npm:0.3":
|
||||
version: 0.3.3
|
||||
resolution: "split@npm:0.3.3"
|
||||
dependencies:
|
||||
through: 2
|
||||
checksum: 2e076634c9637cfdc54ab4387b6a243b8c33b360874a25adf6f327a5647f07cb3bf1c755d515248eb3afee4e382278d01f62c62d87263c118f28065b86f74f02
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"stream-combiner@npm:~0.0.4":
|
||||
version: 0.0.4
|
||||
resolution: "stream-combiner@npm:0.0.4"
|
||||
dependencies:
|
||||
duplexer: ~0.1.1
|
||||
checksum: 844b622cfe8b9de45a6007404f613b60aaf85200ab9862299066204242f89a7c8033b1c356c998aa6cfc630f6cd9eba119ec1c6dc1f93e245982be4a847aee7d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"string-argv@npm:^0.1.1":
|
||||
version: 0.1.2
|
||||
resolution: "string-argv@npm:0.1.2"
|
||||
checksum: 6877bd72af145f6e6eafa932818014a57b2f39225c924562b7fccb50f1fcee73717bbcd5e528fd4d86cec32835c14749c32a9d35f06e0bf96637d1e73158203f
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"string_decoder@npm:~1.1.1":
|
||||
version: 1.1.1
|
||||
resolution: "string_decoder@npm:1.1.1"
|
||||
dependencies:
|
||||
safe-buffer: ~5.1.0
|
||||
checksum: 9ab7e56f9d60a28f2be697419917c50cac19f3e8e6c28ef26ed5f4852289fe0de5d6997d29becf59028556f2c62983790c1d9ba1e2a3cc401768ca12d5183a5b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"strip-ansi@npm:^6.0.0":
|
||||
version: 6.0.1
|
||||
resolution: "strip-ansi@npm:6.0.1"
|
||||
dependencies:
|
||||
ansi-regex: ^5.0.1
|
||||
checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"through@npm:2, through@npm:~2.3, through@npm:~2.3.1":
|
||||
version: 2.3.8
|
||||
resolution: "through@npm:2.3.8"
|
||||
checksum: a38c3e059853c494af95d50c072b83f8b676a9ba2818dcc5b108ef252230735c54e0185437618596c790bbba8fcdaef5b290405981ffa09dce67b1f1bf190cbd
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tsc-watch@npm:^5.0.3":
|
||||
version: 5.0.3
|
||||
resolution: "tsc-watch@npm:5.0.3"
|
||||
dependencies:
|
||||
cross-spawn: ^7.0.3
|
||||
node-cleanup: ^2.1.2
|
||||
ps-tree: ^1.2.0
|
||||
string-argv: ^0.1.1
|
||||
strip-ansi: ^6.0.0
|
||||
peerDependencies:
|
||||
typescript: "*"
|
||||
bin:
|
||||
tsc-watch: index.js
|
||||
checksum: abd63295dd5fda098a45d27912031e6c35a95f1aa20d7a86d6ad1469580400069e6476f2ffd4b88e37886d016443e60b1ae2dbcaf756e324efc67d0fa713fb15
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"typescript@npm:^4.7.4":
|
||||
version: 4.7.4
|
||||
resolution: "typescript@npm:4.7.4"
|
||||
|
@ -40,3 +595,28 @@ __metadata:
|
|||
checksum: 9096d8f6c16cb80ef3bf96fcbbd055bf1c4a43bd14f3b7be45a9fbe7ada46ec977f604d5feed3263b4f2aa7d4c7477ce5f9cd87de0d6feedec69a983f3a4f93e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"util-deprecate@npm:~1.0.1":
|
||||
version: 1.0.2
|
||||
resolution: "util-deprecate@npm:1.0.2"
|
||||
checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"which@npm:^2.0.1":
|
||||
version: 2.0.2
|
||||
resolution: "which@npm:2.0.2"
|
||||
dependencies:
|
||||
isexe: ^2.0.0
|
||||
bin:
|
||||
node-which: ./bin/node-which
|
||||
checksum: 1a5c563d3c1b52d5f893c8b61afe11abc3bab4afac492e8da5bde69d550de701cf9806235f20a47b5c8fa8a1d6a9135841de2596535e998027a54589000e66d1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"yallist@npm:4.0.0":
|
||||
version: 4.0.0
|
||||
resolution: "yallist@npm:4.0.0"
|
||||
checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
|
Loading…
Reference in a new issue