mirror of
https://github.com/OptimalBits/bull.git
synced 2026-07-02 00:17:41 +08:00
refactor: add commandTransform utility (#2736)
This commit is contained in:
@@ -5,3 +5,5 @@ coverage
|
||||
.vscode
|
||||
package-lock.json
|
||||
.nyc_output
|
||||
rawScripts
|
||||
lib/scripts
|
||||
|
||||
@@ -11,3 +11,10 @@ support
|
||||
.gitignore
|
||||
*.md
|
||||
commitlint.config.js
|
||||
rawScripts
|
||||
commandTransform.js
|
||||
docker-compose.yml
|
||||
generateRawScripts.js
|
||||
.nyc_output
|
||||
.mocharc.json
|
||||
lib/commands/*.js
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
'use strict';
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
const { argv } = require('process');
|
||||
|
||||
const readFile = fs.promises.readFile;
|
||||
const writeFile = fs.promises.writeFile;
|
||||
const readdir = fs.promises.readdir;
|
||||
|
||||
const loadScripts = async (readDir, writeDir) => {
|
||||
const normalizedDir = path.normalize(readDir);
|
||||
|
||||
const files = await readdir(normalizedDir);
|
||||
|
||||
const luaFiles = files.filter(file => path.extname(file) === '.lua');
|
||||
const writeFilenamePath = path.normalize(writeDir);
|
||||
|
||||
if (!fs.existsSync(writeFilenamePath)) {
|
||||
fs.mkdirSync(writeFilenamePath);
|
||||
}
|
||||
|
||||
let indexContent = "'use strict';\nmodule.exports = {\n";
|
||||
|
||||
if (luaFiles.length === 0) {
|
||||
/**
|
||||
* To prevent unclarified runtime error "updateDelayset is not a function
|
||||
* @see https://github.com/OptimalBits/bull/issues/920
|
||||
*/
|
||||
throw new Error('No .lua files found!');
|
||||
}
|
||||
|
||||
for (let i = 0; i < luaFiles.length; i++) {
|
||||
const completedFilename = path.join(normalizedDir, luaFiles[i]);
|
||||
const longName = path.basename(luaFiles[i], '.lua');
|
||||
indexContent += ` ["${longName}"]: require('./${longName}'),\n`;
|
||||
|
||||
await loadCommand(completedFilename, longName, writeFilenamePath);
|
||||
}
|
||||
indexContent += `}\n`;
|
||||
|
||||
await writeFile(path.join(writeFilenamePath, 'index.js'), indexContent);
|
||||
};
|
||||
|
||||
const loadCommand = async (filename, longName, writeFilenamePath) => {
|
||||
const filenamePath = path.resolve(filename);
|
||||
|
||||
const content = (await readFile(filenamePath)).toString();
|
||||
|
||||
const [name, num] = longName.split('-');
|
||||
const numberOfKeys = num && parseInt(num, 10);
|
||||
|
||||
const newContent = `'use strict';
|
||||
const content = \`${content}\`;
|
||||
module.exports = {
|
||||
name: '${name}',
|
||||
content,${
|
||||
numberOfKeys
|
||||
? `
|
||||
keys: ${numberOfKeys},`
|
||||
: ''
|
||||
}
|
||||
};
|
||||
`;
|
||||
await writeFile(path.join(writeFilenamePath, longName + '.js'), newContent);
|
||||
};
|
||||
|
||||
loadScripts(argv[2], argv[3]);
|
||||
@@ -0,0 +1,45 @@
|
||||
'use strict';
|
||||
const { ScriptLoader } = require('./lib/commands');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
const { promisify } = require('util');
|
||||
|
||||
const writeFile = promisify(fs.writeFile);
|
||||
|
||||
class RawScriptLoader extends ScriptLoader {
|
||||
/**
|
||||
* Transpile lua scripts in one file, specifying an specific directory to be saved
|
||||
* @param pathname - the path to the directory containing the scripts
|
||||
* @param writeDir - the path to the directory where scripts will be saved
|
||||
*/
|
||||
async transpileScripts(pathname, writeDir) {
|
||||
const writeFilenamePath = path.normalize(writeDir);
|
||||
|
||||
if (!fs.existsSync(writeFilenamePath)) {
|
||||
fs.mkdirSync(writeFilenamePath);
|
||||
}
|
||||
|
||||
const paths = new Set();
|
||||
if (!paths.has(pathname)) {
|
||||
paths.add(pathname);
|
||||
const scripts = await this.loadScripts(pathname);
|
||||
for (const command of scripts) {
|
||||
const {
|
||||
name,
|
||||
options: { numberOfKeys, lua },
|
||||
} = command;
|
||||
await writeFile(
|
||||
path.join(writeFilenamePath, `${name}-${numberOfKeys}.lua`),
|
||||
lua,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const scriptLoader = new RawScriptLoader();
|
||||
|
||||
scriptLoader.transpileScripts(
|
||||
path.join(__dirname, './lib/commands'),
|
||||
path.join(__dirname, './rawScripts'),
|
||||
);
|
||||
+4
-50
@@ -1,54 +1,8 @@
|
||||
/**
|
||||
* Load redis lua scripts.
|
||||
* The name of the script must have the following format:
|
||||
*
|
||||
* cmdName-numKeys.lua
|
||||
*
|
||||
* cmdName must be in camel case format.
|
||||
*
|
||||
* For example:
|
||||
* moveToFinish-3.lua
|
||||
*
|
||||
*/
|
||||
'use strict';
|
||||
const { ScriptLoader } = require('./script-loader');
|
||||
|
||||
const fsAsync = require('fs').promises;
|
||||
const path = require('path');
|
||||
const scriptLoader = new ScriptLoader();
|
||||
|
||||
module.exports = (function() {
|
||||
let scripts;
|
||||
|
||||
return async function(client) {
|
||||
scripts = await (scripts || loadScripts());
|
||||
|
||||
return scripts.map(({ name, options }) =>
|
||||
client.defineCommand(name, options)
|
||||
);
|
||||
};
|
||||
})();
|
||||
|
||||
async function loadScripts() {
|
||||
const scriptsDir = await fsAsync.readdir(__dirname);
|
||||
const luaFiles = scriptsDir.filter(file => path.extname(file) === '.lua');
|
||||
if (luaFiles.length === 0) {
|
||||
/**
|
||||
* To prevent unclarified runtime error "updateDelayset is not a function
|
||||
* @see https://github.com/OptimalBits/bull/issues/920
|
||||
*/
|
||||
throw new Error('No .lua files found!');
|
||||
}
|
||||
return Promise.all(
|
||||
luaFiles.map(async file => {
|
||||
const lua = await fsAsync.readFile(path.join(__dirname, file));
|
||||
const longName = path.basename(file, '.lua');
|
||||
|
||||
return {
|
||||
name: longName.split('-')[0],
|
||||
options: {
|
||||
numberOfKeys: parseInt(longName.split('-')[1]),
|
||||
lua: lua.toString()
|
||||
}
|
||||
};
|
||||
})
|
||||
);
|
||||
module.exports = {
|
||||
ScriptLoader, scriptLoader
|
||||
}
|
||||
|
||||
@@ -75,7 +75,7 @@ if(#stalling > 0) then
|
||||
if(stalledCount > MAX_STALLED_JOB_COUNT) then
|
||||
rcall("ZADD", KEYS[4], ARGV[3], jobId)
|
||||
rcall("HSET", jobKey, "failedReason", "job stalled more than allowable limit")
|
||||
rcall("PUBLISH", KEYS[4], "{\"jobId\":\"" .. jobId .. "\", \"val\": \"job stalled more than maxStalledCount\"}")
|
||||
rcall("PUBLISH", KEYS[4], '{"jobId":"' .. jobId .. '", "val": "job stalled more than maxStalledCount"}')
|
||||
table.insert(failed, jobId)
|
||||
else
|
||||
-- Move the job back to the wait queue, to immediately be picked up by a waiting worker.
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
-- keys, consider that this call may be slow for very large queues.
|
||||
-- The queue needs to be "paused" or it will return an error
|
||||
-- If the queue has currently active jobs then the script by default will return error,
|
||||
-- however this behaviour can be overrided using the `force` option.
|
||||
-- however this behaviour can be overrided using the 'force' option.
|
||||
local maxCount = tonumber(ARGV[1])
|
||||
local baseKey = KEYS[2]
|
||||
|
||||
|
||||
@@ -0,0 +1,545 @@
|
||||
'use strict';
|
||||
const { createHash } = require('crypto');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
const { promisify } = require('util');
|
||||
|
||||
const readFile = promisify(fs.readFile);
|
||||
const readdir = promisify(fs.readdir);
|
||||
|
||||
const GlobOptions = { dot: true, silent: false };
|
||||
const IncludeRegex = /^[-]{2,3}[ \t]*@include[ \t]+(["'])(.+?)\1[; \t\n]*$/m;
|
||||
const EmptyLineRegex = /^\s*[\r\n]/gm;
|
||||
|
||||
class ScriptLoaderError extends Error {
|
||||
/**
|
||||
* The include stack
|
||||
*/
|
||||
|
||||
constructor(
|
||||
message,
|
||||
path,
|
||||
stack = [],
|
||||
line,
|
||||
position = 0,
|
||||
) {
|
||||
super(message);
|
||||
// Ensure the name of this error is the same as the class name
|
||||
this.name = this.constructor.name;
|
||||
Error.captureStackTrace(this, this.constructor);
|
||||
this.includes = stack;
|
||||
this.line = line ? line : 0;
|
||||
this.position = position;
|
||||
}
|
||||
}
|
||||
|
||||
const isPossiblyMappedPath = (path) =>
|
||||
path && ['~', '<'].includes(path[0]);
|
||||
|
||||
/**
|
||||
* Lua script loader with include support
|
||||
*/
|
||||
class ScriptLoader {
|
||||
constructor() {
|
||||
this.pathMapper = new Map();
|
||||
this.clientScripts = new WeakMap();
|
||||
/**
|
||||
* Cache commands by dir
|
||||
*/
|
||||
this.commandCache = new Map();
|
||||
this.rootPath = getPkgJsonDir();
|
||||
this.pathMapper.set('~', this.rootPath);
|
||||
this.pathMapper.set('rootDir', this.rootPath);
|
||||
this.pathMapper.set('base', __dirname);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a script path mapping. Allows includes of the form "<includes>/utils.lua" where `includes` is a user
|
||||
* defined path
|
||||
* @param name - the name of the mapping. Note: do not include angle brackets
|
||||
* @param mappedPath - if a relative path is passed, it's relative to the *caller* of this function.
|
||||
* Mapped paths are also accepted, e.g. "~/server/scripts/lua" or "<base>/includes"
|
||||
*/
|
||||
addPathMapping(name, mappedPath) {
|
||||
let resolved;
|
||||
|
||||
if (isPossiblyMappedPath(mappedPath)) {
|
||||
resolved = this.resolvePath(mappedPath);
|
||||
} else {
|
||||
const caller = getCallerFile();
|
||||
const callerPath = path.dirname(caller);
|
||||
resolved = path.normalize(path.resolve(callerPath, mappedPath));
|
||||
}
|
||||
|
||||
const last = resolved.length - 1;
|
||||
if (resolved[last] === path.sep) {
|
||||
resolved = resolved.substr(0, last);
|
||||
}
|
||||
|
||||
this.pathMapper.set(name, resolved);
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolve the script path considering path mappings
|
||||
* @param scriptName - the name of the script
|
||||
* @param stack - the include stack, for nicer errors
|
||||
*/
|
||||
resolvePath(scriptName, stack = []) {
|
||||
const first = scriptName[0];
|
||||
if (first === '~') {
|
||||
scriptName = path.join(this.rootPath, scriptName.substr(2));
|
||||
} else if (first === '<') {
|
||||
const p = scriptName.indexOf('>');
|
||||
if (p > 0) {
|
||||
const name = scriptName.substring(1, p);
|
||||
const mappedPath = this.pathMapper.get(name);
|
||||
if (!mappedPath) {
|
||||
throw new ScriptLoaderError(
|
||||
`No path mapping found for "${name}"`,
|
||||
scriptName,
|
||||
stack,
|
||||
);
|
||||
}
|
||||
scriptName = path.join(mappedPath, scriptName.substring(p + 1));
|
||||
}
|
||||
}
|
||||
|
||||
return path.normalize(scriptName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Recursively collect all scripts included in a file
|
||||
* @param file - the parent file
|
||||
* @param cache - a cache for file metadata to increase efficiency. Since a file can be included
|
||||
* multiple times, we make sure to load it only once.
|
||||
* @param stack - internal stack to prevent circular references
|
||||
*/
|
||||
async resolveDependencies(
|
||||
file,
|
||||
cache,
|
||||
isInclude = false,
|
||||
stack = [],
|
||||
) {
|
||||
cache = cache ? cache : new Map();
|
||||
|
||||
if (stack.includes(file.path)) {
|
||||
throw new ScriptLoaderError(
|
||||
`circular reference: "${file.path}"`,
|
||||
file.path,
|
||||
stack,
|
||||
);
|
||||
}
|
||||
stack.push(file.path);
|
||||
|
||||
function findPos(content, match) {
|
||||
const pos = content.indexOf(match);
|
||||
const arr = content.slice(0, pos).split('\n');
|
||||
return {
|
||||
line: arr.length,
|
||||
column: arr[arr.length - 1].length + match.indexOf('@include') + 1,
|
||||
};
|
||||
}
|
||||
|
||||
function raiseError(msg, match) {
|
||||
const pos = findPos(file.content, match);
|
||||
throw new ScriptLoaderError(msg, file.path, stack, pos.line, pos.column);
|
||||
}
|
||||
// eslint-disable-next-line node/no-unpublished-require
|
||||
const minimatch = require('minimatch');
|
||||
|
||||
if (!minimatch) {
|
||||
console.warn('Install minimatch as dev-dependency');
|
||||
}
|
||||
|
||||
const Minimatch = minimatch.Minimatch || class Empty {};
|
||||
// eslint-disable-next-line node/no-unpublished-require
|
||||
const fg = require('fast-glob');
|
||||
|
||||
if (!fg) {
|
||||
console.warn('Install fast-glob as dev-dependency');
|
||||
}
|
||||
|
||||
const nonOp = () => {
|
||||
return [''];
|
||||
};
|
||||
const glob = (fg) ? fg.glob : nonOp;
|
||||
|
||||
const hasMagic = (pattern) => {
|
||||
if (!Array.isArray(pattern)) {
|
||||
pattern = [pattern];
|
||||
}
|
||||
for (const p of pattern) {
|
||||
if ((new Minimatch(p, GlobOptions)).hasMagic()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
const hasFilenamePattern = (path) => hasMagic(path);
|
||||
|
||||
async function getFilenamesByPattern(pattern) {
|
||||
return glob(pattern, { dot: true });
|
||||
}
|
||||
|
||||
let res;
|
||||
let content = file.content;
|
||||
|
||||
while ((res = IncludeRegex.exec(content)) !== null) {
|
||||
const [match, , reference] = res;
|
||||
|
||||
const includeFilename = isPossiblyMappedPath(reference)
|
||||
? // mapped paths imply absolute reference
|
||||
this.resolvePath(ensureExt(reference), stack)
|
||||
: // include path is relative to the file being processed
|
||||
path.resolve(path.dirname(file.path), ensureExt(reference));
|
||||
|
||||
let includePaths;
|
||||
|
||||
if (hasFilenamePattern(includeFilename)) {
|
||||
const filesMatched = await getFilenamesByPattern(includeFilename);
|
||||
includePaths = filesMatched.map((x) => path.resolve(x));
|
||||
} else {
|
||||
includePaths = [includeFilename];
|
||||
}
|
||||
|
||||
includePaths = includePaths.filter(
|
||||
(file) => path.extname(file) === '.lua',
|
||||
);
|
||||
|
||||
if (includePaths.length === 0) {
|
||||
raiseError(`include not found: "${reference}"`, match);
|
||||
}
|
||||
|
||||
const tokens = [];
|
||||
|
||||
for (let i = 0; i < includePaths.length; i++) {
|
||||
const includePath = includePaths[i];
|
||||
|
||||
const hasInclude = file.includes.find(
|
||||
(x) => x.path === includePath,
|
||||
);
|
||||
|
||||
if (hasInclude) {
|
||||
/**
|
||||
* We have something like
|
||||
* --- \@include "a"
|
||||
* ...
|
||||
* --- \@include "a"
|
||||
*/
|
||||
raiseError(
|
||||
`file "${reference}" already included in "${file.path}"`,
|
||||
match,
|
||||
);
|
||||
}
|
||||
|
||||
let includeMetadata = cache.get(includePath);
|
||||
let token;
|
||||
|
||||
if (!includeMetadata) {
|
||||
const { name, numberOfKeys } = splitFilename(includePath);
|
||||
let childContent = '';
|
||||
try {
|
||||
const buf = await readFile(includePath, { flag: 'r' });
|
||||
childContent = buf.toString();
|
||||
} catch (err) {
|
||||
if ((err).code === 'ENOENT') {
|
||||
raiseError(`include not found: "${reference}"`, match);
|
||||
} else {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
// this represents a normalized version of the path to make replacement easy
|
||||
token = getPathHash(includePath);
|
||||
includeMetadata = {
|
||||
name,
|
||||
numberOfKeys,
|
||||
path: includePath,
|
||||
content: childContent,
|
||||
token,
|
||||
includes: [],
|
||||
};
|
||||
cache.set(includePath, includeMetadata);
|
||||
} else {
|
||||
token = includeMetadata.token;
|
||||
}
|
||||
|
||||
tokens.push(token);
|
||||
|
||||
file.includes.push(includeMetadata);
|
||||
await this.resolveDependencies(includeMetadata, cache, true, stack);
|
||||
}
|
||||
|
||||
// Replace @includes with normalized path hashes
|
||||
const substitution = tokens.join('\n');
|
||||
content = content.replace(match, substitution);
|
||||
}
|
||||
|
||||
file.content = content;
|
||||
|
||||
if (isInclude) {
|
||||
cache.set(file.path, file);
|
||||
} else {
|
||||
cache.set(file.name, file);
|
||||
}
|
||||
|
||||
stack.pop();
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse a (top-level) lua script
|
||||
* @param filename - the full path to the script
|
||||
* @param content - the content of the script
|
||||
* @param cache - cache
|
||||
*/
|
||||
async parseScript(
|
||||
filename,
|
||||
content,
|
||||
cache,
|
||||
) {
|
||||
const { name, numberOfKeys } = splitFilename(filename);
|
||||
const meta = cache ? cache.get(name):undefined;
|
||||
if (meta && meta.content === content) {
|
||||
return meta;
|
||||
}
|
||||
const fileInfo = {
|
||||
path: filename,
|
||||
token: getPathHash(filename),
|
||||
content,
|
||||
name,
|
||||
numberOfKeys,
|
||||
includes: [],
|
||||
};
|
||||
|
||||
await this.resolveDependencies(fileInfo, cache);
|
||||
return fileInfo;
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct the final version of a file by interpolating its includes in dependency order.
|
||||
* @param file - the file whose content we want to construct
|
||||
* @param processed - a cache to keep track of which includes have already been processed
|
||||
*/
|
||||
interpolate(file, processed) {
|
||||
processed = processed || new Set();
|
||||
let content = file.content;
|
||||
file.includes.forEach((child) => {
|
||||
const emitted = processed? processed.has(child.path):undefined;
|
||||
const fragment = this.interpolate(child, processed);
|
||||
const replacement = emitted ? '' : fragment;
|
||||
|
||||
if (!replacement) {
|
||||
content = replaceAll(content, child.token, '');
|
||||
} else {
|
||||
// replace the first instance with the dependency
|
||||
content = content.replace(child.token, replacement);
|
||||
// remove the rest
|
||||
content = replaceAll(content, child.token, '');
|
||||
}
|
||||
|
||||
if(processed){
|
||||
processed.add(child.path);
|
||||
}
|
||||
});
|
||||
|
||||
return content;
|
||||
}
|
||||
|
||||
async loadCommand(
|
||||
filename,
|
||||
cache,
|
||||
) {
|
||||
filename = path.resolve(filename);
|
||||
|
||||
const { name: scriptName } = splitFilename(filename);
|
||||
let script = cache? cache.get(scriptName) : undefined;
|
||||
if (!script) {
|
||||
const content = (await readFile(filename)).toString();
|
||||
script = await this.parseScript(filename, content, cache);
|
||||
}
|
||||
|
||||
const lua = removeEmptyLines(this.interpolate(script));
|
||||
const { name, numberOfKeys } = script;
|
||||
|
||||
return {
|
||||
name,
|
||||
options: { numberOfKeys: numberOfKeys, lua },
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Load redis lua scripts.
|
||||
* The name of the script must have the following format:
|
||||
*
|
||||
* cmdName-numKeys.lua
|
||||
*
|
||||
* cmdName must be in camel case format.
|
||||
*
|
||||
* For example:
|
||||
* moveToFinish-3.lua
|
||||
*
|
||||
*/
|
||||
async loadScripts(
|
||||
dir,
|
||||
cache,
|
||||
) {
|
||||
dir = path.normalize(dir || __dirname);
|
||||
|
||||
let commands = this.commandCache.get(dir);
|
||||
if (commands) {
|
||||
return commands;
|
||||
}
|
||||
|
||||
const files = await readdir(dir);
|
||||
|
||||
const luaFiles = files.filter(
|
||||
(file) => path.extname(file) === '.lua',
|
||||
);
|
||||
|
||||
if (luaFiles.length === 0) {
|
||||
/**
|
||||
* To prevent unclarified runtime error "updateDelayset is not a function
|
||||
* @see https://github.com/OptimalBits/bull/issues/920
|
||||
*/
|
||||
throw new ScriptLoaderError('No .lua files found!', dir, []);
|
||||
}
|
||||
|
||||
commands = [];
|
||||
cache = cache ? cache : new Map();
|
||||
|
||||
for (let i = 0; i < luaFiles.length; i++) {
|
||||
const file = path.join(dir, luaFiles[i]);
|
||||
|
||||
const command = await this.loadCommand(file, cache);
|
||||
commands.push(command);
|
||||
}
|
||||
|
||||
this.commandCache.set(dir, commands);
|
||||
|
||||
return commands;
|
||||
}
|
||||
|
||||
/**
|
||||
* Attach all lua scripts in a given directory to a client instance
|
||||
* @param client - redis client to attach script to
|
||||
* @param pathname - the path to the directory containing the scripts
|
||||
*/
|
||||
async load(
|
||||
client,
|
||||
pathname,
|
||||
cache,
|
||||
) {
|
||||
let paths = this.clientScripts.get(client);
|
||||
if (!paths) {
|
||||
paths = new Set();
|
||||
this.clientScripts.set(client, paths);
|
||||
}
|
||||
if (!paths.has(pathname)) {
|
||||
paths.add(pathname);
|
||||
const scripts = await this.loadScripts(
|
||||
pathname,
|
||||
cache ? cache : new Map(),
|
||||
);
|
||||
scripts.forEach((command) => {
|
||||
// Only define the command if not already defined
|
||||
if (!(client)[command.name]) {
|
||||
client.defineCommand(command.name, command.options);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears the command cache
|
||||
*/
|
||||
clearCache() {
|
||||
this.commandCache.clear();
|
||||
}
|
||||
}
|
||||
|
||||
function ensureExt(filename, ext = 'lua') {
|
||||
const foundExt = path.extname(filename);
|
||||
if (foundExt && foundExt !== '.') {
|
||||
return filename;
|
||||
}
|
||||
if (ext && ext[0] !== '.') {
|
||||
ext = `.${ext}`;
|
||||
}
|
||||
return `${filename}${ext}`;
|
||||
}
|
||||
|
||||
function splitFilename(filePath) {
|
||||
const longName = path.basename(filePath, '.lua');
|
||||
const [name, num] = longName.split('-');
|
||||
const numberOfKeys = num ? parseInt(num, 10) : undefined;
|
||||
return { name, numberOfKeys };
|
||||
}
|
||||
|
||||
// Determine the project root
|
||||
// https://stackoverflow.com/a/18721515
|
||||
function getPkgJsonDir() {
|
||||
for (const modPath of module.paths || []) {
|
||||
try {
|
||||
const prospectivePkgJsonDir = path.dirname(modPath);
|
||||
fs.accessSync(modPath, fs.constants.F_OK);
|
||||
return prospectivePkgJsonDir;
|
||||
// eslint-disable-next-line no-empty
|
||||
} catch (e) {}
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
// https://stackoverflow.com/a/66842927
|
||||
// some dark magic here :-)
|
||||
// this version is preferred to the simpler version because of
|
||||
// https://github.com/facebook/jest/issues/5303 -
|
||||
// tldr: dont assume you're the only one with the doing something like this
|
||||
function getCallerFile() {
|
||||
const originalFunc = Error.prepareStackTrace;
|
||||
|
||||
let callerFile = '';
|
||||
try {
|
||||
Error.prepareStackTrace = (_, stack) => stack;
|
||||
|
||||
const sites = (new Error().stack);
|
||||
const shiftResponse = sites.shift();
|
||||
const currentFile = shiftResponse ? shiftResponse.getFileName():undefined;
|
||||
|
||||
while (sites.length) {
|
||||
const newShiftResponse = sites.shift();
|
||||
callerFile = newShiftResponse ? newShiftResponse.getFileName() : '';
|
||||
|
||||
if (currentFile !== callerFile) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
// eslint-disable-next-line no-empty
|
||||
} catch (e) {
|
||||
} finally {
|
||||
Error.prepareStackTrace = originalFunc;
|
||||
}
|
||||
|
||||
return callerFile;
|
||||
}
|
||||
|
||||
function sha1(data) {
|
||||
return createHash('sha1').update(data)
|
||||
.digest('hex');
|
||||
}
|
||||
|
||||
function getPathHash(normalizedPath) {
|
||||
return `@@${sha1(normalizedPath)}`;
|
||||
}
|
||||
|
||||
function replaceAll(str, find, replace) {
|
||||
return str.replace(new RegExp(find, 'g'), replace);
|
||||
}
|
||||
|
||||
function removeEmptyLines(str) {
|
||||
return str.replace(EmptyLineRegex, '');
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
ScriptLoaderError,
|
||||
ScriptLoader
|
||||
}
|
||||
+16
-2
@@ -21,7 +21,7 @@ const semver = require('semver');
|
||||
const debuglog = require('util').debuglog('bull');
|
||||
const uuid = require('uuid');
|
||||
|
||||
const commands = require('./commands/');
|
||||
const commands = require('./scripts/');
|
||||
|
||||
/**
|
||||
Gets or creates a new Queue with the given name.
|
||||
@@ -145,6 +145,20 @@ const Queue = function Queue(name, url, opts) {
|
||||
|
||||
this.clients = [];
|
||||
|
||||
const loadCommands = (providedScripts, client) => {
|
||||
const finalScripts =
|
||||
providedScripts || (scripts);
|
||||
for (const property in finalScripts) {
|
||||
// Only define the command if not already defined
|
||||
if (!(client)[finalScripts[property].name]) {
|
||||
(client).defineCommand(finalScripts[property].name, {
|
||||
numberOfKeys: finalScripts[property].keys,
|
||||
lua: finalScripts[property].content,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const lazyClient = redisClientGetter(this, opts, (type, client) => {
|
||||
// bubble up Redis error events
|
||||
const handler = this.emit.bind(this, 'error');
|
||||
@@ -152,7 +166,7 @@ const Queue = function Queue(name, url, opts) {
|
||||
this.once('close', () => client.removeListener('error', handler));
|
||||
|
||||
if (type === 'client') {
|
||||
this._initializing = commands(client).then(
|
||||
this._initializing = (async() => loadCommands(commands, client))().then(
|
||||
() => {
|
||||
debuglog(name + ' queue ready');
|
||||
},
|
||||
|
||||
+10
-2
@@ -45,22 +45,29 @@
|
||||
"eslint-plugin-mocha": "^7.0.1",
|
||||
"eslint-plugin-node": "^8.0.1",
|
||||
"expect.js": "^0.3.1",
|
||||
"fast-glob": "^3.3.2",
|
||||
"husky": "^4.2.5",
|
||||
"istanbul": "^0.4.5",
|
||||
"lint-staged": "^8.2.1",
|
||||
"minimatch": "^7.4.4",
|
||||
"mocha": "^8.1.1",
|
||||
"mocha-lcov-reporter": "^1.3.0",
|
||||
"moment": "^2.24.0",
|
||||
"npm-run-all": "^4.1.5",
|
||||
"nyc": "^15.1.0",
|
||||
"p-reflect": "^1.0.0",
|
||||
"prettier": "^1.19.1",
|
||||
"rimraf": "^3.0.2",
|
||||
"semantic-release": "^17.4.2",
|
||||
"sinon": "^7.5.0"
|
||||
},
|
||||
"scripts": {
|
||||
"clean:scripts": "rimraf rawScripts lib/scripts",
|
||||
"dc:up": "docker-compose -f docker-compose.yml up -d",
|
||||
"dc:down": "docker-compose -f docker-compose.yml down",
|
||||
"pretest": "npm run lint",
|
||||
"dry-run": "npm publish --dry-run",
|
||||
"generate:raw:scripts": "node generateRawScripts.js",
|
||||
"pretest": "npm-run-all clean:scripts generate:raw:scripts transform:commands lint",
|
||||
"lint": "eslint lib test *.js",
|
||||
"test": "NODE_ENV=test nyc mocha -- 'test/test_*' --recursive --exit",
|
||||
"test:nolint": "NODE_ENV=test mocha 'test/test_*' --recursive --exit",
|
||||
@@ -68,7 +75,8 @@
|
||||
"postpublish": "git push && git push --tags",
|
||||
"prettier": "prettier --config package.json --write '**/*.js'",
|
||||
"precommit": "lint-staged",
|
||||
"build": "tsc"
|
||||
"build": "tsc",
|
||||
"transform:commands": "node ./commandTransform.js ./rawScripts ./lib/scripts"
|
||||
},
|
||||
"lint-staged": {
|
||||
"*.{js,json}": [
|
||||
|
||||
@@ -1152,6 +1152,14 @@ arr-union@^3.1.0:
|
||||
resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
|
||||
integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
|
||||
|
||||
array-buffer-byte-length@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f"
|
||||
integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==
|
||||
dependencies:
|
||||
call-bind "^1.0.5"
|
||||
is-array-buffer "^3.0.4"
|
||||
|
||||
array-find-index@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
|
||||
@@ -1189,6 +1197,20 @@ array-unique@^0.3.2:
|
||||
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
|
||||
integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
|
||||
|
||||
arraybuffer.prototype.slice@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6"
|
||||
integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==
|
||||
dependencies:
|
||||
array-buffer-byte-length "^1.0.1"
|
||||
call-bind "^1.0.5"
|
||||
define-properties "^1.2.1"
|
||||
es-abstract "^1.22.3"
|
||||
es-errors "^1.2.1"
|
||||
get-intrinsic "^1.2.3"
|
||||
is-array-buffer "^3.0.4"
|
||||
is-shared-array-buffer "^1.0.2"
|
||||
|
||||
arrify@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
|
||||
@@ -1246,6 +1268,13 @@ atob@^2.1.2:
|
||||
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
|
||||
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
|
||||
|
||||
available-typed-arrays@^1.0.7:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846"
|
||||
integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==
|
||||
dependencies:
|
||||
possible-typed-array-names "^1.0.0"
|
||||
|
||||
aws-sign2@~0.7.0:
|
||||
version "0.7.0"
|
||||
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
|
||||
@@ -1333,6 +1362,13 @@ brace-expansion@^1.1.7:
|
||||
balanced-match "^1.0.0"
|
||||
concat-map "0.0.1"
|
||||
|
||||
brace-expansion@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
|
||||
integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
|
||||
dependencies:
|
||||
balanced-match "^1.0.0"
|
||||
|
||||
braces@^2.3.1:
|
||||
version "2.3.2"
|
||||
resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
|
||||
@@ -1349,7 +1385,7 @@ braces@^2.3.1:
|
||||
split-string "^3.0.2"
|
||||
to-regex "^3.0.1"
|
||||
|
||||
braces@^3.0.1, braces@~3.0.2:
|
||||
braces@^3.0.1, braces@^3.0.2, braces@~3.0.2:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
|
||||
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
|
||||
@@ -1438,6 +1474,17 @@ call-bind@^1.0.0:
|
||||
function-bind "^1.1.1"
|
||||
get-intrinsic "^1.0.2"
|
||||
|
||||
call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9"
|
||||
integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==
|
||||
dependencies:
|
||||
es-define-property "^1.0.0"
|
||||
es-errors "^1.3.0"
|
||||
function-bind "^1.1.2"
|
||||
get-intrinsic "^1.2.4"
|
||||
set-function-length "^1.2.1"
|
||||
|
||||
caller-callsite@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134"
|
||||
@@ -1942,7 +1989,7 @@ cron-parser@^4.2.1:
|
||||
dependencies:
|
||||
luxon "^1.28.0"
|
||||
|
||||
cross-spawn@^6.0.0:
|
||||
cross-spawn@^6.0.0, cross-spawn@^6.0.5:
|
||||
version "6.0.5"
|
||||
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
|
||||
integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
|
||||
@@ -1988,6 +2035,33 @@ dashdash@^1.12.0:
|
||||
dependencies:
|
||||
assert-plus "^1.0.0"
|
||||
|
||||
data-view-buffer@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2"
|
||||
integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==
|
||||
dependencies:
|
||||
call-bind "^1.0.6"
|
||||
es-errors "^1.3.0"
|
||||
is-data-view "^1.0.1"
|
||||
|
||||
data-view-byte-length@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2"
|
||||
integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
es-errors "^1.3.0"
|
||||
is-data-view "^1.0.1"
|
||||
|
||||
data-view-byte-offset@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a"
|
||||
integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==
|
||||
dependencies:
|
||||
call-bind "^1.0.6"
|
||||
es-errors "^1.3.0"
|
||||
is-data-view "^1.0.1"
|
||||
|
||||
date-fns@^1.27.2:
|
||||
version "1.30.1"
|
||||
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c"
|
||||
@@ -2090,6 +2164,24 @@ defaults@^1.0.3:
|
||||
dependencies:
|
||||
clone "^1.0.2"
|
||||
|
||||
define-data-property@^1.0.1, define-data-property@^1.1.4:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
|
||||
integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
|
||||
dependencies:
|
||||
es-define-property "^1.0.0"
|
||||
es-errors "^1.3.0"
|
||||
gopd "^1.0.1"
|
||||
|
||||
define-properties@^1.2.0, define-properties@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c"
|
||||
integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==
|
||||
dependencies:
|
||||
define-data-property "^1.0.1"
|
||||
has-property-descriptors "^1.0.0"
|
||||
object-keys "^1.1.1"
|
||||
|
||||
define-property@^0.2.5:
|
||||
version "0.2.5"
|
||||
resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
|
||||
@@ -2290,6 +2382,95 @@ error-ex@^1.3.1:
|
||||
dependencies:
|
||||
is-arrayish "^0.2.1"
|
||||
|
||||
es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.2:
|
||||
version "1.23.3"
|
||||
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0"
|
||||
integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==
|
||||
dependencies:
|
||||
array-buffer-byte-length "^1.0.1"
|
||||
arraybuffer.prototype.slice "^1.0.3"
|
||||
available-typed-arrays "^1.0.7"
|
||||
call-bind "^1.0.7"
|
||||
data-view-buffer "^1.0.1"
|
||||
data-view-byte-length "^1.0.1"
|
||||
data-view-byte-offset "^1.0.0"
|
||||
es-define-property "^1.0.0"
|
||||
es-errors "^1.3.0"
|
||||
es-object-atoms "^1.0.0"
|
||||
es-set-tostringtag "^2.0.3"
|
||||
es-to-primitive "^1.2.1"
|
||||
function.prototype.name "^1.1.6"
|
||||
get-intrinsic "^1.2.4"
|
||||
get-symbol-description "^1.0.2"
|
||||
globalthis "^1.0.3"
|
||||
gopd "^1.0.1"
|
||||
has-property-descriptors "^1.0.2"
|
||||
has-proto "^1.0.3"
|
||||
has-symbols "^1.0.3"
|
||||
hasown "^2.0.2"
|
||||
internal-slot "^1.0.7"
|
||||
is-array-buffer "^3.0.4"
|
||||
is-callable "^1.2.7"
|
||||
is-data-view "^1.0.1"
|
||||
is-negative-zero "^2.0.3"
|
||||
is-regex "^1.1.4"
|
||||
is-shared-array-buffer "^1.0.3"
|
||||
is-string "^1.0.7"
|
||||
is-typed-array "^1.1.13"
|
||||
is-weakref "^1.0.2"
|
||||
object-inspect "^1.13.1"
|
||||
object-keys "^1.1.1"
|
||||
object.assign "^4.1.5"
|
||||
regexp.prototype.flags "^1.5.2"
|
||||
safe-array-concat "^1.1.2"
|
||||
safe-regex-test "^1.0.3"
|
||||
string.prototype.trim "^1.2.9"
|
||||
string.prototype.trimend "^1.0.8"
|
||||
string.prototype.trimstart "^1.0.8"
|
||||
typed-array-buffer "^1.0.2"
|
||||
typed-array-byte-length "^1.0.1"
|
||||
typed-array-byte-offset "^1.0.2"
|
||||
typed-array-length "^1.0.6"
|
||||
unbox-primitive "^1.0.2"
|
||||
which-typed-array "^1.1.15"
|
||||
|
||||
es-define-property@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845"
|
||||
integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==
|
||||
dependencies:
|
||||
get-intrinsic "^1.2.4"
|
||||
|
||||
es-errors@^1.2.1, es-errors@^1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
|
||||
integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
|
||||
|
||||
es-object-atoms@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941"
|
||||
integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==
|
||||
dependencies:
|
||||
es-errors "^1.3.0"
|
||||
|
||||
es-set-tostringtag@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777"
|
||||
integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==
|
||||
dependencies:
|
||||
get-intrinsic "^1.2.4"
|
||||
has-tostringtag "^1.0.2"
|
||||
hasown "^2.0.1"
|
||||
|
||||
es-to-primitive@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
|
||||
integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
|
||||
dependencies:
|
||||
is-callable "^1.1.4"
|
||||
is-date-object "^1.0.1"
|
||||
is-symbol "^1.0.2"
|
||||
|
||||
es6-error@^4.0.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d"
|
||||
@@ -2600,6 +2781,17 @@ fast-glob@^3.1.1:
|
||||
micromatch "^4.0.2"
|
||||
picomatch "^2.2.1"
|
||||
|
||||
fast-glob@^3.3.2:
|
||||
version "3.3.2"
|
||||
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
|
||||
integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
|
||||
dependencies:
|
||||
"@nodelib/fs.stat" "^2.0.2"
|
||||
"@nodelib/fs.walk" "^1.2.3"
|
||||
glob-parent "^5.1.2"
|
||||
merge2 "^1.3.0"
|
||||
micromatch "^4.0.4"
|
||||
|
||||
fast-json-stable-stringify@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
|
||||
@@ -2725,6 +2917,13 @@ fn-name@~2.0.1:
|
||||
resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7"
|
||||
integrity sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=
|
||||
|
||||
for-each@^0.3.3:
|
||||
version "0.3.3"
|
||||
resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e"
|
||||
integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==
|
||||
dependencies:
|
||||
is-callable "^1.1.3"
|
||||
|
||||
for-in@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
|
||||
@@ -2804,11 +3003,31 @@ function-bind@^1.1.1:
|
||||
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
|
||||
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
|
||||
|
||||
function-bind@^1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
|
||||
integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
|
||||
|
||||
function.prototype.name@^1.1.6:
|
||||
version "1.1.6"
|
||||
resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd"
|
||||
integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==
|
||||
dependencies:
|
||||
call-bind "^1.0.2"
|
||||
define-properties "^1.2.0"
|
||||
es-abstract "^1.22.1"
|
||||
functions-have-names "^1.2.3"
|
||||
|
||||
functional-red-black-tree@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
|
||||
integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
|
||||
|
||||
functions-have-names@^1.2.3:
|
||||
version "1.2.3"
|
||||
resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
|
||||
integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
|
||||
|
||||
g-status@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/g-status/-/g-status-2.0.2.tgz#270fd32119e8fc9496f066fe5fe88e0a6bc78b97"
|
||||
@@ -2856,6 +3075,17 @@ get-intrinsic@^1.0.2:
|
||||
has "^1.0.3"
|
||||
has-symbols "^1.0.1"
|
||||
|
||||
get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4:
|
||||
version "1.2.4"
|
||||
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd"
|
||||
integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==
|
||||
dependencies:
|
||||
es-errors "^1.3.0"
|
||||
function-bind "^1.1.2"
|
||||
has-proto "^1.0.1"
|
||||
has-symbols "^1.0.3"
|
||||
hasown "^2.0.0"
|
||||
|
||||
get-own-enumerable-property-symbols@^3.0.0:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664"
|
||||
@@ -2895,6 +3125,15 @@ get-stream@^6.0.0:
|
||||
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
|
||||
integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
|
||||
|
||||
get-symbol-description@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5"
|
||||
integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==
|
||||
dependencies:
|
||||
call-bind "^1.0.5"
|
||||
es-errors "^1.3.0"
|
||||
get-intrinsic "^1.2.4"
|
||||
|
||||
get-value@^2.0.3, get-value@^2.0.6:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
|
||||
@@ -2930,7 +3169,7 @@ git-raw-commits@^1.3.0:
|
||||
split2 "^2.0.0"
|
||||
through2 "^2.0.0"
|
||||
|
||||
glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0:
|
||||
glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@^5.1.2, glob-parent@~5.1.0:
|
||||
version "5.1.2"
|
||||
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
|
||||
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
|
||||
@@ -2986,6 +3225,14 @@ globals@^13.6.0:
|
||||
dependencies:
|
||||
type-fest "^0.20.2"
|
||||
|
||||
globalthis@^1.0.3:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236"
|
||||
integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==
|
||||
dependencies:
|
||||
define-properties "^1.2.1"
|
||||
gopd "^1.0.1"
|
||||
|
||||
globby@^11.0.0, globby@^11.0.1:
|
||||
version "11.0.3"
|
||||
resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.3.tgz#9b1f0cb523e171dd1ad8c7b2a9fb4b644b9593cb"
|
||||
@@ -3009,6 +3256,13 @@ globby@^6.1.0:
|
||||
pify "^2.0.0"
|
||||
pinkie-promise "^2.0.0"
|
||||
|
||||
gopd@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c"
|
||||
integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
|
||||
dependencies:
|
||||
get-intrinsic "^1.1.3"
|
||||
|
||||
graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.3, graceful-fs@^4.2.4, graceful-fs@^4.2.6:
|
||||
version "4.2.6"
|
||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee"
|
||||
@@ -3056,6 +3310,11 @@ has-ansi@^2.0.0:
|
||||
dependencies:
|
||||
ansi-regex "^2.0.0"
|
||||
|
||||
has-bigints@^1.0.1, has-bigints@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa"
|
||||
integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==
|
||||
|
||||
has-flag@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
|
||||
@@ -3071,11 +3330,35 @@ has-flag@^4.0.0:
|
||||
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
|
||||
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
|
||||
|
||||
has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854"
|
||||
integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
|
||||
dependencies:
|
||||
es-define-property "^1.0.0"
|
||||
|
||||
has-proto@^1.0.1, has-proto@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd"
|
||||
integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==
|
||||
|
||||
has-symbols@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423"
|
||||
integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==
|
||||
|
||||
has-symbols@^1.0.2, has-symbols@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
|
||||
integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
|
||||
|
||||
has-tostringtag@^1.0.0, has-tostringtag@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc"
|
||||
integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==
|
||||
dependencies:
|
||||
has-symbols "^1.0.3"
|
||||
|
||||
has-unicode@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
|
||||
@@ -3127,6 +3410,13 @@ hasha@^5.0.0:
|
||||
is-stream "^2.0.0"
|
||||
type-fest "^0.8.0"
|
||||
|
||||
hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
|
||||
integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
|
||||
dependencies:
|
||||
function-bind "^1.1.2"
|
||||
|
||||
he@1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
|
||||
@@ -3322,6 +3612,15 @@ init-package-json@^2.0.3:
|
||||
validate-npm-package-license "^3.0.4"
|
||||
validate-npm-package-name "^3.0.0"
|
||||
|
||||
internal-slot@^1.0.7:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802"
|
||||
integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==
|
||||
dependencies:
|
||||
es-errors "^1.3.0"
|
||||
hasown "^2.0.0"
|
||||
side-channel "^1.0.4"
|
||||
|
||||
into-stream@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-6.0.0.tgz#4bfc1244c0128224e18b8870e85b2de8e66c6702"
|
||||
@@ -3369,11 +3668,26 @@ is-accessor-descriptor@^1.0.0:
|
||||
dependencies:
|
||||
kind-of "^6.0.0"
|
||||
|
||||
is-array-buffer@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98"
|
||||
integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==
|
||||
dependencies:
|
||||
call-bind "^1.0.2"
|
||||
get-intrinsic "^1.2.1"
|
||||
|
||||
is-arrayish@^0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
|
||||
integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
|
||||
|
||||
is-bigint@^1.0.1:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3"
|
||||
integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==
|
||||
dependencies:
|
||||
has-bigints "^1.0.1"
|
||||
|
||||
is-binary-path@~2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
|
||||
@@ -3393,6 +3707,11 @@ is-buffer@^1.1.5:
|
||||
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
|
||||
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
|
||||
|
||||
is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7:
|
||||
version "1.2.7"
|
||||
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
|
||||
integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
|
||||
|
||||
is-cidr@^4.0.2:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-4.0.2.tgz#94c7585e4c6c77ceabf920f8cde51b8c0fda8814"
|
||||
@@ -3421,6 +3740,20 @@ is-data-descriptor@^1.0.0:
|
||||
dependencies:
|
||||
kind-of "^6.0.0"
|
||||
|
||||
is-data-view@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f"
|
||||
integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==
|
||||
dependencies:
|
||||
is-typed-array "^1.1.13"
|
||||
|
||||
is-date-object@^1.0.1:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f"
|
||||
integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
|
||||
dependencies:
|
||||
has-tostringtag "^1.0.0"
|
||||
|
||||
is-descriptor@^0.1.0:
|
||||
version "0.1.6"
|
||||
resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
|
||||
@@ -3490,6 +3823,11 @@ is-lambda@^1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5"
|
||||
integrity sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=
|
||||
|
||||
is-negative-zero@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747"
|
||||
integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==
|
||||
|
||||
is-number-object@^1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197"
|
||||
@@ -3580,11 +3918,26 @@ is-promise@^2.1.0:
|
||||
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1"
|
||||
integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==
|
||||
|
||||
is-regex@^1.1.4:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
|
||||
integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
|
||||
dependencies:
|
||||
call-bind "^1.0.2"
|
||||
has-tostringtag "^1.0.0"
|
||||
|
||||
is-regexp@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
|
||||
integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk=
|
||||
|
||||
is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688"
|
||||
integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
|
||||
is-stream@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
|
||||
@@ -3600,6 +3953,20 @@ is-string@^1.0.5:
|
||||
resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6"
|
||||
integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==
|
||||
|
||||
is-string@^1.0.7:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd"
|
||||
integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==
|
||||
dependencies:
|
||||
has-tostringtag "^1.0.0"
|
||||
|
||||
is-symbol@^1.0.2, is-symbol@^1.0.3:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c"
|
||||
integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==
|
||||
dependencies:
|
||||
has-symbols "^1.0.2"
|
||||
|
||||
is-text-path@^1.0.0, is-text-path@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e"
|
||||
@@ -3607,11 +3974,25 @@ is-text-path@^1.0.0, is-text-path@^1.0.1:
|
||||
dependencies:
|
||||
text-extensions "^1.0.0"
|
||||
|
||||
is-typed-array@^1.1.13:
|
||||
version "1.1.13"
|
||||
resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229"
|
||||
integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==
|
||||
dependencies:
|
||||
which-typed-array "^1.1.14"
|
||||
|
||||
is-typedarray@^1.0.0, is-typedarray@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
|
||||
integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
|
||||
|
||||
is-weakref@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2"
|
||||
integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==
|
||||
dependencies:
|
||||
call-bind "^1.0.2"
|
||||
|
||||
is-windows@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
|
||||
@@ -3627,6 +4008,11 @@ isarray@1.0.0, isarray@~1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
|
||||
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
|
||||
|
||||
isarray@^2.0.5:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
|
||||
integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
|
||||
|
||||
isexe@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
|
||||
@@ -4373,6 +4759,11 @@ matcher@^1.0.0:
|
||||
dependencies:
|
||||
escape-string-regexp "^1.0.4"
|
||||
|
||||
memorystream@^0.3.1:
|
||||
version "0.3.1"
|
||||
resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"
|
||||
integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==
|
||||
|
||||
meow@5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/meow/-/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4"
|
||||
@@ -4457,6 +4848,14 @@ micromatch@^4.0.0, micromatch@^4.0.2:
|
||||
braces "^3.0.1"
|
||||
picomatch "^2.2.3"
|
||||
|
||||
micromatch@^4.0.4:
|
||||
version "4.0.5"
|
||||
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
|
||||
integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
|
||||
dependencies:
|
||||
braces "^3.0.2"
|
||||
picomatch "^2.3.1"
|
||||
|
||||
mime-db@1.47.0:
|
||||
version "1.47.0"
|
||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c"
|
||||
@@ -4496,6 +4895,13 @@ min-indent@^1.0.0:
|
||||
dependencies:
|
||||
brace-expansion "^1.1.7"
|
||||
|
||||
minimatch@^7.4.4:
|
||||
version "7.4.6"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-7.4.6.tgz#845d6f254d8f4a5e4fd6baf44d5f10c8448365fb"
|
||||
integrity sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==
|
||||
dependencies:
|
||||
brace-expansion "^2.0.1"
|
||||
|
||||
minimist-options@4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619"
|
||||
@@ -4922,6 +5328,21 @@ npm-registry-fetch@^10.0.0, npm-registry-fetch@^10.1.0:
|
||||
minizlib "^2.0.0"
|
||||
npm-package-arg "^8.0.0"
|
||||
|
||||
npm-run-all@^4.1.5:
|
||||
version "4.1.5"
|
||||
resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba"
|
||||
integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==
|
||||
dependencies:
|
||||
ansi-styles "^3.2.1"
|
||||
chalk "^2.4.1"
|
||||
cross-spawn "^6.0.5"
|
||||
memorystream "^0.3.1"
|
||||
minimatch "^3.0.4"
|
||||
pidtree "^0.3.0"
|
||||
read-pkg "^3.0.0"
|
||||
shell-quote "^1.6.1"
|
||||
string.prototype.padend "^3.0.0"
|
||||
|
||||
npm-run-path@^2.0.0:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
|
||||
@@ -5090,6 +5511,16 @@ object-copy@^0.1.0:
|
||||
define-property "^0.2.5"
|
||||
kind-of "^3.0.3"
|
||||
|
||||
object-inspect@^1.13.1:
|
||||
version "1.13.1"
|
||||
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2"
|
||||
integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==
|
||||
|
||||
object-keys@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
|
||||
integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
|
||||
|
||||
object-visit@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
|
||||
@@ -5097,6 +5528,16 @@ object-visit@^1.0.0:
|
||||
dependencies:
|
||||
isobject "^3.0.0"
|
||||
|
||||
object.assign@^4.1.5:
|
||||
version "4.1.5"
|
||||
resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0"
|
||||
integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==
|
||||
dependencies:
|
||||
call-bind "^1.0.5"
|
||||
define-properties "^1.2.1"
|
||||
has-symbols "^1.0.3"
|
||||
object-keys "^1.1.1"
|
||||
|
||||
object.pick@^1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
|
||||
@@ -5418,6 +5859,16 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3:
|
||||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d"
|
||||
integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==
|
||||
|
||||
picomatch@^2.3.1:
|
||||
version "2.3.1"
|
||||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
|
||||
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
|
||||
|
||||
pidtree@^0.3.0:
|
||||
version "0.3.1"
|
||||
resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a"
|
||||
integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==
|
||||
|
||||
pify@^2.0.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
|
||||
@@ -5474,6 +5925,11 @@ posix-character-classes@^0.1.0:
|
||||
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
|
||||
integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
|
||||
|
||||
possible-typed-array-names@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f"
|
||||
integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==
|
||||
|
||||
prelude-ls@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
|
||||
@@ -5779,6 +6235,16 @@ regex-not@^1.0.0, regex-not@^1.0.2:
|
||||
extend-shallow "^3.0.2"
|
||||
safe-regex "^1.1.0"
|
||||
|
||||
regexp.prototype.flags@^1.5.2:
|
||||
version "1.5.2"
|
||||
resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334"
|
||||
integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==
|
||||
dependencies:
|
||||
call-bind "^1.0.6"
|
||||
define-properties "^1.2.1"
|
||||
es-errors "^1.3.0"
|
||||
set-function-name "^2.0.1"
|
||||
|
||||
regexpp@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
|
||||
@@ -5945,6 +6411,16 @@ rxjs@^6.3.3:
|
||||
dependencies:
|
||||
tslib "^1.9.0"
|
||||
|
||||
safe-array-concat@^1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb"
|
||||
integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
get-intrinsic "^1.2.4"
|
||||
has-symbols "^1.0.3"
|
||||
isarray "^2.0.5"
|
||||
|
||||
safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0:
|
||||
version "5.2.1"
|
||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
|
||||
@@ -5955,6 +6431,15 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1:
|
||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
|
||||
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
|
||||
|
||||
safe-regex-test@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377"
|
||||
integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==
|
||||
dependencies:
|
||||
call-bind "^1.0.6"
|
||||
es-errors "^1.3.0"
|
||||
is-regex "^1.1.4"
|
||||
|
||||
safe-regex@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
|
||||
@@ -6059,6 +6544,28 @@ set-blocking@^2.0.0, set-blocking@~2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
|
||||
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
|
||||
|
||||
set-function-length@^1.2.1:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
|
||||
integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
|
||||
dependencies:
|
||||
define-data-property "^1.1.4"
|
||||
es-errors "^1.3.0"
|
||||
function-bind "^1.1.2"
|
||||
get-intrinsic "^1.2.4"
|
||||
gopd "^1.0.1"
|
||||
has-property-descriptors "^1.0.2"
|
||||
|
||||
set-function-name@^2.0.1:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985"
|
||||
integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==
|
||||
dependencies:
|
||||
define-data-property "^1.1.4"
|
||||
es-errors "^1.3.0"
|
||||
functions-have-names "^1.2.3"
|
||||
has-property-descriptors "^1.0.2"
|
||||
|
||||
set-value@^2.0.0, set-value@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
|
||||
@@ -6093,6 +6600,21 @@ shebang-regex@^3.0.0:
|
||||
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
|
||||
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
|
||||
|
||||
shell-quote@^1.6.1:
|
||||
version "1.8.1"
|
||||
resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680"
|
||||
integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==
|
||||
|
||||
side-channel@^1.0.4:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2"
|
||||
integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
es-errors "^1.3.0"
|
||||
get-intrinsic "^1.2.4"
|
||||
object-inspect "^1.13.1"
|
||||
|
||||
signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
|
||||
@@ -6393,6 +6915,44 @@ string-width@^4.1.0, string-width@^4.2.0:
|
||||
is-fullwidth-code-point "^3.0.0"
|
||||
strip-ansi "^6.0.0"
|
||||
|
||||
string.prototype.padend@^3.0.0:
|
||||
version "3.1.6"
|
||||
resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.6.tgz#ba79cf8992609a91c872daa47c6bb144ee7f62a5"
|
||||
integrity sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
define-properties "^1.2.1"
|
||||
es-abstract "^1.23.2"
|
||||
es-object-atoms "^1.0.0"
|
||||
|
||||
string.prototype.trim@^1.2.9:
|
||||
version "1.2.9"
|
||||
resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4"
|
||||
integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
define-properties "^1.2.1"
|
||||
es-abstract "^1.23.0"
|
||||
es-object-atoms "^1.0.0"
|
||||
|
||||
string.prototype.trimend@^1.0.8:
|
||||
version "1.0.8"
|
||||
resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229"
|
||||
integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
define-properties "^1.2.1"
|
||||
es-object-atoms "^1.0.0"
|
||||
|
||||
string.prototype.trimstart@^1.0.8:
|
||||
version "1.0.8"
|
||||
resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde"
|
||||
integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
define-properties "^1.2.1"
|
||||
es-object-atoms "^1.0.0"
|
||||
|
||||
string_decoder@^1.1.1:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
|
||||
@@ -6768,6 +7328,50 @@ type-fest@^0.8.0, type-fest@^0.8.1:
|
||||
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
|
||||
integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
|
||||
|
||||
typed-array-buffer@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3"
|
||||
integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
es-errors "^1.3.0"
|
||||
is-typed-array "^1.1.13"
|
||||
|
||||
typed-array-byte-length@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67"
|
||||
integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
for-each "^0.3.3"
|
||||
gopd "^1.0.1"
|
||||
has-proto "^1.0.3"
|
||||
is-typed-array "^1.1.13"
|
||||
|
||||
typed-array-byte-offset@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063"
|
||||
integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==
|
||||
dependencies:
|
||||
available-typed-arrays "^1.0.7"
|
||||
call-bind "^1.0.7"
|
||||
for-each "^0.3.3"
|
||||
gopd "^1.0.1"
|
||||
has-proto "^1.0.3"
|
||||
is-typed-array "^1.1.13"
|
||||
|
||||
typed-array-length@^1.0.6:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3"
|
||||
integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
for-each "^0.3.3"
|
||||
gopd "^1.0.1"
|
||||
has-proto "^1.0.3"
|
||||
is-typed-array "^1.1.13"
|
||||
possible-typed-array-names "^1.0.0"
|
||||
|
||||
typedarray-to-buffer@^3.1.5:
|
||||
version "3.1.5"
|
||||
resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
|
||||
@@ -6780,6 +7384,16 @@ uglify-js@^3.1.4:
|
||||
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.13.4.tgz#592588bb9f47ae03b24916e2471218d914955574"
|
||||
integrity sha512-kv7fCkIXyQIilD5/yQy8O+uagsYIOt5cZvs890W40/e/rvjMSzJw81o9Bg0tkURxzZBROtDQhW2LFjOGoK3RZw==
|
||||
|
||||
unbox-primitive@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e"
|
||||
integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==
|
||||
dependencies:
|
||||
call-bind "^1.0.2"
|
||||
has-bigints "^1.0.2"
|
||||
has-symbols "^1.0.3"
|
||||
which-boxed-primitive "^1.0.2"
|
||||
|
||||
union-value@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"
|
||||
@@ -6920,6 +7534,17 @@ whatwg-url@^5.0.0:
|
||||
tr46 "~0.0.3"
|
||||
webidl-conversions "^3.0.0"
|
||||
|
||||
which-boxed-primitive@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
|
||||
integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==
|
||||
dependencies:
|
||||
is-bigint "^1.0.1"
|
||||
is-boolean-object "^1.1.0"
|
||||
is-number-object "^1.0.4"
|
||||
is-string "^1.0.5"
|
||||
is-symbol "^1.0.3"
|
||||
|
||||
which-module@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
|
||||
@@ -6930,6 +7555,17 @@ which-pm-runs@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb"
|
||||
integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=
|
||||
|
||||
which-typed-array@^1.1.14, which-typed-array@^1.1.15:
|
||||
version "1.1.15"
|
||||
resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d"
|
||||
integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==
|
||||
dependencies:
|
||||
available-typed-arrays "^1.0.7"
|
||||
call-bind "^1.0.7"
|
||||
for-each "^0.3.3"
|
||||
gopd "^1.0.1"
|
||||
has-tostringtag "^1.0.2"
|
||||
|
||||
which@2.0.2, which@^2.0.1, which@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
|
||||
|
||||
Reference in New Issue
Block a user