├── .gitignore ├── .vscode ├── launch.json └── settings.json ├── LICENSE ├── README.md ├── index.ts ├── package-lock.json ├── package.json ├── src ├── queue.ts ├── types.ts └── utils.ts ├── tsconfig.json └── typing.d.ts /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /index.js 3 | /index.d.ts 4 | /src/*.js 5 | /src/*.d.ts 6 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "type": "node", 9 | "request": "attach", 10 | "name": "Attach by Process ID", 11 | "processId": "${command:PickProcess}", 12 | "skipFiles": [ 13 | "/**" 14 | ] 15 | }, 16 | { 17 | "type": "node", 18 | "request": "attach", 19 | "name": "Debug bull-repl", 20 | "port": 9229 21 | } 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "typescript.tsdk": "node_modules/typescript/lib" 3 | } 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Vladislav Botvin 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # bull-repl 2 | 3 | Bull / BullMQ queue command line REPL. 4 | 5 | ### Version compatibility 6 | 7 | - For bull 3.x.x use `bull-repl@latest` (0.x.x) 8 | - For bullmq use `bull-repl@next` (1.x.x) 9 | 10 | ### Install 11 | 12 | ``` 13 | npm install bull-repl -g 14 | ``` 15 | 16 | ### Run 17 | 18 | ``` 19 | bull-repl 20 | ``` 21 | 22 | ### Overview help 23 | 24 | ``` 25 | help 26 | ``` 27 | 28 | ``` 29 | Commands: 30 | 31 | help [command...] Provides help for a given command. 32 | exit Exits application. 33 | connect [options] Connect to bull queue 34 | connect-list List of saved connections 35 | connect-rm Remove saved connection 36 | connect-save Save current connection 37 | connect-to Connect to saved connection 38 | stats Count of jobs by type 39 | active [options] Fetch active jobs 40 | waiting [options] Fetch waiting jobs 41 | completed [options] Fetch completed jobs 42 | failed [options] Fetch failed jobs 43 | delayed [options] Fetch delayed jobs 44 | pause [options] Pause current queue 45 | resume [options] Resume current queue from pause 46 | get Get job 47 | add [options] Add job to queue e.g. add '{"x": 1}' 48 | rm [options] Remove job 49 | retry [options] Retry job 50 | retry-failed [options] Retry first 100 failed jobs 51 | promote [options] Promote job 52 | fail [options] Move job to failed 53 | complete [options] Move job to completed e.g. complete 1 '{"x": 1}' 54 | clean [options] Clean queue for period ago, period format - https://github.com/zeit/ms#examples 55 | logs [options] Get logs of job 56 | log Add log to job 57 | events-on Turn on logging of queue events 58 | events-off Turn off logging of queue events 59 | ``` 60 | 61 | ### Connect help 62 | 63 | ``` 64 | connect --help 65 | ``` 66 | 67 | ``` 68 | Usage: connect [options] 69 | 70 | Connect to bull queue 71 | 72 | Options: 73 | 74 | --help output usage information 75 | --prefix Prefix to use for all queue jobs 76 | -h, --host Redis host for connection 77 | -p, --port Redis port for connection 78 | -d, --db Redis db for connection 79 | --password Redis password for connection 80 | -c, --cert Absolute path to pem certificate if TLS used 81 | -u, --url Redis sentinel format URL 82 | -e, --exec Exec command 83 | ``` 84 | 85 | ### Fetch jobs by group help 86 | 87 | ``` 88 | active --help 89 | ``` 90 | 91 | ``` 92 | Usage: active [options] 93 | 94 | Fetch active jobs 95 | 96 | Options: 97 | 98 | --help output usage information 99 | -q, --query Query jobs via jq - https://stedolan.github.io/jq/manual/#Basicfilters. Notice, that bull data in root key e.g '[.root[] | select(.progress > 70)]' 100 | -t, --timeAgo Get jobs since time ago via https://github.com/zeit/ms#examples 101 | -s, --start Start index (pagination) 102 | -e, --end End index (pagination) 103 | ``` 104 | 105 | ### Notes 106 | 107 | - You can see help on each command, for example: `connect --help` 108 | - You can predefine startup command, when run bull-repl. For example: `bull-repl connect my-queue` 109 | -------------------------------------------------------------------------------- /index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | import type { 4 | ConnectParams, 5 | ActiveParams, 6 | WaitingParams, 7 | CompletedParams, 8 | FailedParams, 9 | DelayedParams, 10 | GetParams, 11 | AddParams, 12 | RmParams, 13 | RetryParams, 14 | RetryFailedParams, 15 | PromoteParams, 16 | FailParams, 17 | CompleteParams, 18 | CleanParams, 19 | LogsParams, 20 | LogParams, 21 | YesParams 22 | } from "./src/types"; 23 | import Vorpal from "@moleculer/vorpal"; 24 | import ms from "ms"; 25 | import { 26 | showJobs, 27 | getTimeAgoFilter, 28 | jqLink, 29 | msLink, 30 | logArray, 31 | getJob, 32 | answer, 33 | logGreen, 34 | throwYellow, 35 | logYellow, 36 | splitJobsByFound, 37 | wrapTryCatch, 38 | LAST_SAVED_CONNECTION_NAME, 39 | readLines, 40 | getBootCommand 41 | } from "./src/utils"; 42 | import { getQueue, connectToQueue, listenQueueEvents, unlistenQueueEvents } from "./src/queue"; 43 | import type { JobOptions } from "bull"; 44 | 45 | export const vorpal = new Vorpal(); 46 | vorpal.localStorage("bull-repl-default"); 47 | 48 | export const localStorage = (vorpal.localStorage as unknown) as WindowLocalStorage["localStorage"] & { 49 | _localStorage: { _keys: string[] }; 50 | }; 51 | 52 | vorpal 53 | .command("connect ", "Connect to bull queue") 54 | .option("--prefix ", "Prefix to use for all queue jobs") 55 | .option("-h, --host ", "Redis host for connection") 56 | .option("-p, --port ", "Redis port for connection") 57 | .option("-d, --db ", "Redis db for connection") 58 | .option("--password ", "Redis password for connection") 59 | .option("-c, --cert ", "Absolute path to pem certificate if TLS used") 60 | .option("-u, --url ", "Redis sentinel format URL") 61 | .option("-e, --exec ", "Exec command") 62 | .option("-f, --execFile ", "Exec commands from file") 63 | .action( 64 | wrapTryCatch(async (params: ConnectParams) => { 65 | await connectToQueue(params, vorpal); 66 | if (params.options.exec) { 67 | process.nextTick(async () => { 68 | await vorpal.exec(params.options.exec!); 69 | await vorpal.exec('exit'); 70 | }); 71 | } 72 | 73 | if (params.options.execFile) { 74 | process.nextTick(async () => { 75 | const lines = readLines(params.options.execFile!); 76 | for await (const line of lines) { 77 | await logGreen(line); 78 | await vorpal.exec(line); 79 | } 80 | await vorpal.exec('exit'); 81 | }); 82 | } 83 | }) 84 | ); 85 | 86 | vorpal.command("connect-list", "List of saved connections").action( 87 | wrapTryCatch(async () => { 88 | console.table(localStorage._localStorage._keys); 89 | }) 90 | ); 91 | 92 | vorpal.command("connect-rm ", "Remove saved connection").action( 93 | wrapTryCatch(async ({ name }: { name: string }) => { 94 | if (name === LAST_SAVED_CONNECTION_NAME) { 95 | return logYellow(`Can't use reserved name, please use another`); 96 | } 97 | const savedItem = localStorage.getItem(name); 98 | if (savedItem) { 99 | localStorage.removeItem(name); 100 | logGreen(`Connection "${name}" removed`); 101 | } else { 102 | logYellow(`Connection "${name}" not found`); 103 | } 104 | }) 105 | ); 106 | 107 | vorpal.command("connect-save ", "Save current connection").action( 108 | wrapTryCatch(async ({ name: nameForSave }: { name: string }) => { 109 | if (nameForSave === LAST_SAVED_CONNECTION_NAME) { 110 | return logYellow(`Can't use reserved name, please use another`); 111 | } 112 | await getQueue(); 113 | const options = JSON.parse( 114 | localStorage.getItem(LAST_SAVED_CONNECTION_NAME) as string 115 | ) as ConnectParams; 116 | localStorage.setItem(nameForSave, JSON.stringify(options)); 117 | logGreen(`Connection "${nameForSave}" saved`); 118 | }) 119 | ); 120 | 121 | vorpal.command("connect-to ", "Connect to saved connection").action( 122 | wrapTryCatch(async ({ name: connectToName }: { name: string }) => { 123 | const savedItem = localStorage.getItem(connectToName); 124 | if (!savedItem) { 125 | return logYellow(`Connection "${connectToName}" not found`); 126 | } 127 | const options: ConnectParams = JSON.parse(savedItem); 128 | await connectToQueue(options, vorpal); 129 | }) 130 | ); 131 | 132 | vorpal.command("stats", "Count of jobs by type").action( 133 | wrapTryCatch(async () => { 134 | const queue = await getQueue(); 135 | const [counts, paused] = await Promise.all([ 136 | queue.getJobCounts(), 137 | queue.getPausedCount() 138 | ]); 139 | console.table({ ...counts, ...{ paused } }); 140 | }) 141 | ); 142 | 143 | vorpal 144 | .command("active", "Fetch active jobs") 145 | .option("-q, --query ", `Query jobs via jq - ${jqLink}. Notice, that bull data in root key e.g '[.root[] | select(.progress > 70)]'`) 146 | .option("-t, --timeAgo ", `Get jobs since time ago via ${msLink}`) 147 | .option("-s, --start ", "Start index (pagination)") 148 | .option("-e, --end ", "End index (pagination)") 149 | .action( 150 | wrapTryCatch(async ({ options }: ActiveParams) => { 151 | const queue = await getQueue(); 152 | const timeAgoFilter = await getTimeAgoFilter(options.timeAgo); 153 | showJobs(await queue.getActive( 154 | options.start || 0, options.end || 100), 155 | [timeAgoFilter, options.query].filter(v => v).join(' | ')); 156 | }) 157 | ); 158 | 159 | vorpal 160 | .command("waiting", "Fetch waiting jobs") 161 | .option("-q, --query ", `Query jobs via jq - ${jqLink}. Notice, that bull data in root key e.g '[.root[] | select(.progress > 70)]'`) 162 | .option("-t, --timeAgo ", `Get jobs since time ago via ${msLink}`) 163 | .option("-s, --start ", "Start index (pagination)") 164 | .option("-e, --end ", "End index (pagination)") 165 | .action( 166 | wrapTryCatch(async ({ options }: WaitingParams) => { 167 | const queue = await getQueue(); 168 | const timeAgoFilter = await getTimeAgoFilter(options.timeAgo); 169 | showJobs(await queue.getWaiting( 170 | options.start || 0, options.end || 100), 171 | [timeAgoFilter, options.query].filter(v => v).join(' | ')); 172 | }) 173 | ); 174 | 175 | vorpal 176 | .command("completed", "Fetch completed jobs") 177 | .option("-q, --query ", `Query jobs via jq - ${jqLink}. Notice, that bull data in root key e.g '[.root[] | select(.progress > 70)]'`) 178 | .option("-t, --timeAgo ", `Get jobs since time ago via ${msLink}`) 179 | .option("-s, --start ", "Start index (pagination)") 180 | .option("-e, --end ", "End index (pagination)") 181 | .action( 182 | wrapTryCatch(async ({ options }: CompletedParams) => { 183 | const queue = await getQueue(); 184 | const timeAgoFilter = await getTimeAgoFilter(options.timeAgo); 185 | showJobs( 186 | await queue.getCompleted(options.start || 0, options.end || 100), 187 | [timeAgoFilter, options.query].filter(v => v).join(' | ') 188 | ); 189 | }) 190 | ); 191 | 192 | vorpal 193 | .command("failed", "Fetch failed jobs") 194 | .option("-q, --query ", `Query jobs via jq - ${jqLink}. Notice, that bull data in root key e.g '[.root[] | select(.progress > 70)]'`) 195 | .option("-t, --timeAgo ", `Get jobs since time ago via ${msLink}`) 196 | .option("-s, --start ", "Start index (pagination)") 197 | .option("-e, --end ", "End index (pagination)") 198 | .action( 199 | wrapTryCatch(async ({ options }: FailedParams) => { 200 | const queue = await getQueue(); 201 | const timeAgoFilter = await getTimeAgoFilter(options.timeAgo); 202 | showJobs(await queue.getFailed(options.start || 0, options.end || 100), 203 | [timeAgoFilter, options.query].filter(v => v).join(' | ')); 204 | }) 205 | ); 206 | 207 | vorpal 208 | .command("delayed", "Fetch delayed jobs") 209 | .option("-q, --query ", `Query jobs via jq - ${jqLink}. Notice, that bull data in root key e.g '[.root[] | select(.progress > 70)]'`) 210 | .option("-t, --timeAgo ", `get jobs since time ago via ${msLink}`) 211 | .option("-s, --start ", "start index (pagination)") 212 | .option("-e, --end ", "end index (pagination)") 213 | .action( 214 | wrapTryCatch(async ({ options }: DelayedParams) => { 215 | const queue = await getQueue(); 216 | const timeAgoFilter = await getTimeAgoFilter(options.timeAgo); 217 | showJobs(await queue.getDelayed(options.start || 0, options.end || 100), 218 | [timeAgoFilter, options.query].filter(v => v).join(' | ')); 219 | }) 220 | ); 221 | 222 | vorpal 223 | .command("pause", "Pause current queue") 224 | .option( 225 | "-y, --yes", 226 | "Skip answer validation" 227 | ) 228 | .action( 229 | wrapTryCatch(async ({ options }: YesParams) => { 230 | const queue = await getQueue(); 231 | await answer(vorpal, "Pause queue", options.yes); 232 | await queue.pause(false); 233 | logGreen(`Queue paused`); 234 | }) 235 | ); 236 | 237 | vorpal 238 | .command("resume", "Resume current queue from pause") 239 | .option( 240 | "-y, --yes", 241 | "Skip answer validation" 242 | ) 243 | .action( 244 | wrapTryCatch(async ({ options }: YesParams) => { 245 | const queue = await getQueue(); 246 | await answer(vorpal, "Resume queue", options.yes); 247 | await queue.resume(false); 248 | logGreen(`Queue resumed from pause`); 249 | }) 250 | ); 251 | 252 | vorpal.command("get ", "Get job").action( 253 | wrapTryCatch(async ({ jobId }: GetParams) => { 254 | const { notFoundIds, foundJobs } = await splitJobsByFound(jobId); 255 | notFoundIds.length && logYellow(`Not found jobs: ${notFoundIds}`); 256 | foundJobs.length && showJobs(foundJobs, ''); 257 | }) 258 | ); 259 | 260 | vorpal 261 | .command("add ", "Add job to queue e.g. add '{\"x\": 1}'") 262 | .option("-n, --name ", "name for named job") 263 | .option("--jobId ", "Override the job ID - by default") 264 | .option("--priority ", "Optional priority value. ranges from 1 (highest priority) to MAX_INT (lowest priority)") 265 | .option("--delay ", "An amount of milliseconds to wait until this job can be processed") 266 | .option("--attempts ", "The total number of attempts to try the job until it completes") 267 | .option("--repeat ", "Repeat job according to a cron specificatio") 268 | .option("--lifo ", "if true, adds the job to the right of the queue instead of the left (default false)") 269 | .option( 270 | "-y, --yes", 271 | "Skip answer validation" 272 | ) 273 | .action( 274 | wrapTryCatch(async function({ data, options }: AddParams) { 275 | const queue = await getQueue(); 276 | const { 277 | priority, 278 | repeat, 279 | jobId, 280 | delay = 0, 281 | attempts = 1, 282 | lifo = false, 283 | } = options; 284 | let jobData: object; 285 | let jobOptions: JobOptions = Object.fromEntries( 286 | Object.entries({ 287 | jobId, 288 | priority, 289 | repeat, 290 | delay, 291 | attempts, 292 | lifo, 293 | }) 294 | .filter(([, value]) => value != null) 295 | ); 296 | 297 | try { 298 | jobData = JSON.parse(data); 299 | } catch (e) { 300 | return throwYellow(`Error: Argument is invalid: ${e}`); 301 | } 302 | 303 | if (repeat && typeof repeat === 'string') { 304 | try { 305 | jobOptions.repeat = JSON.parse(repeat); 306 | } catch (e) { 307 | return throwYellow(`Error: Option --repeat is invalid: ${e}`); 308 | } 309 | } 310 | 311 | await answer(vorpal, "Add", options.yes); 312 | const jobName: string = options.name || "__default__"; 313 | const addedJob = await queue.add(jobName, jobData, jobOptions); 314 | logGreen(`Job with name '${jobName}', id '${addedJob.id}' added`); 315 | }) 316 | ); 317 | 318 | vorpal 319 | .command("rm ", "Remove job") 320 | .option( 321 | "-y, --yes", 322 | "Skip answer validation" 323 | ) 324 | .action( 325 | wrapTryCatch(async function({ jobId, options }: RmParams) { 326 | await answer(vorpal, "Remove", options.yes); 327 | const { notFoundIds, foundJobs } = await splitJobsByFound(jobId); 328 | await Promise.all(foundJobs.map(j => j.remove())); 329 | notFoundIds.length && logYellow(`Not found jobs: ${notFoundIds}`); 330 | foundJobs.length && logGreen(`Jobs "${foundJobs.map(j => j.id)}" removed`); 331 | }) 332 | ); 333 | 334 | vorpal 335 | .command("retry ", "Retry job") 336 | .option( 337 | "-y, --yes", 338 | "Skip answer validation" 339 | ) 340 | .action( 341 | wrapTryCatch(async function({ jobId, options }: RetryParams) { 342 | await answer(vorpal, "Retry", options.yes); 343 | const { notFoundIds, foundJobs } = await splitJobsByFound(jobId); 344 | await Promise.all(foundJobs.map(j => j.retry())); 345 | notFoundIds.length && logYellow(`Not found jobs: ${notFoundIds}`); 346 | foundJobs.length && logGreen(`Jobs "${foundJobs.map(j => j.id)}" retried`); 347 | }) 348 | ); 349 | 350 | vorpal 351 | .command("retry-failed", "Retry first 100 failed jobs") 352 | .option( 353 | "-n, --number ", 354 | "Number of failed jobs. default: 100" 355 | ) 356 | .option( 357 | "-y, --yes", 358 | "Skip answer validation" 359 | ) 360 | .action( 361 | wrapTryCatch(async function({ options }: RetryFailedParams) { 362 | const queue = await getQueue(); 363 | await answer(vorpal, "Retry failed jobs", options.yes); 364 | const failedJobs = await queue.getFailed(0, options.number || 100); 365 | await Promise.all(failedJobs.map(j => j.retry())); 366 | logGreen("All failed jobs retried"); 367 | }) 368 | ); 369 | 370 | vorpal 371 | .command("promote ", "Promote job") 372 | .option( 373 | "-y, --yes", 374 | "Skip answer validation" 375 | ) 376 | .action( 377 | wrapTryCatch(async function({ jobId, options }: PromoteParams) { 378 | await answer(vorpal, "Promote", options.yes); 379 | const { notFoundIds, foundJobs } = await splitJobsByFound(jobId); 380 | await Promise.all(foundJobs.map(j => j.promote())); 381 | notFoundIds.length && logYellow(`Not found jobs: ${notFoundIds}`); 382 | foundJobs.length && logGreen(`Jobs "${foundJobs.map(j => j.id)}" promoted`); 383 | }) 384 | ); 385 | 386 | vorpal 387 | .command("fail ", "Move job to failed") 388 | .option( 389 | "-y, --yes", 390 | "Skip answer validation" 391 | ) 392 | .action( 393 | wrapTryCatch(async function({ jobId, reason, options }: FailParams) { 394 | await getQueue(); 395 | const job = await getJob(jobId); 396 | await answer(vorpal, "Fail", options.yes); 397 | await job.moveToFailed({ message: reason }, true); 398 | logGreen(`Job "${jobId}" failed`); 399 | }) 400 | ); 401 | 402 | vorpal 403 | .command("complete ", "Move job to completed e.g. complete 1 '{\"x\": 1}'") 404 | .option( 405 | "-y, --yes", 406 | "Skip answer validation" 407 | ) 408 | .action( 409 | wrapTryCatch(async function({ jobId, data, options }: CompleteParams) { 410 | await getQueue(); 411 | const job = await getJob(jobId); 412 | let returnValue: string; 413 | try { 414 | returnValue = JSON.parse(data); 415 | } catch (e) { 416 | return throwYellow(`Error: Argument is invalid: ${e}`); 417 | } 418 | await answer(vorpal, "Complete", options.yes); 419 | await job.moveToCompleted(returnValue, true); 420 | logGreen(`Job "${jobId}" completed`); 421 | }) 422 | ); 423 | 424 | vorpal 425 | .command( 426 | "clean ", 427 | `Clean queue for period ago, period format - ${msLink}` 428 | ) 429 | .option( 430 | "-s, --status ", 431 | "Status of the job to clean, default: completed" 432 | ) 433 | .option( 434 | "-l, --limit ", 435 | "Maximum amount of jobs to clean per call, default: all" 436 | ) 437 | .option( 438 | "-y, --yes", 439 | "Skip answer validation" 440 | ) 441 | .action( 442 | wrapTryCatch(async function({ period, options }: CleanParams) { 443 | const types = ["completed", "wait", "active", "delayed", "failed"]; 444 | const queue = await getQueue(); 445 | const grace = period && period.length ? ms(period as string) : void 0; 446 | if (!grace) { 447 | return throwYellow("Incorrect period"); 448 | } 449 | const status = options.status || "completed"; 450 | if ( 451 | !types.includes(status) 452 | ) { 453 | return throwYellow( 454 | `Unknown status, must be one of: ${types.join(", ")}` 455 | ); 456 | } 457 | await answer(vorpal, "Clean", options.yes); 458 | const limit = Number.isInteger(options.limit as number) 459 | ? options.limit 460 | : void 0; 461 | await queue.clean(grace, status, limit); 462 | logGreen(`Jobs cleaned`); 463 | }) 464 | ); 465 | 466 | vorpal 467 | .command("logs ", "Get logs of job") 468 | .option("-s, --start ", "Start of logs") 469 | .option("-e, --end ", "End of logs") 470 | .action( 471 | wrapTryCatch(async ({ jobId, options }: LogsParams) => { 472 | const queue = await getQueue(); 473 | const { logs, count } = await queue.getJobLogs( 474 | jobId, 475 | options.start, 476 | options.end 477 | ); 478 | console.log(`Count of job logs: ${count}`); 479 | if (logs.length) { 480 | console.log("Logs:"); 481 | logArray(logs); 482 | } 483 | }) 484 | ); 485 | 486 | vorpal 487 | .command("log ", "Add log to job") 488 | .action( 489 | wrapTryCatch(async function({ jobId, data, options }: LogParams) { 490 | await getQueue(); 491 | const job = await getJob(jobId); 492 | await answer(vorpal, "Add log", options.yes); 493 | await job.log(data); 494 | logGreen("Log added to job"); 495 | }) 496 | ); 497 | 498 | vorpal.command("events-on", "Turn on logging of queue events").action( 499 | wrapTryCatch(async function() { 500 | const queue = await getQueue(); 501 | listenQueueEvents(queue); 502 | logGreen(`Logging of queue events enabled`); 503 | }) 504 | ); 505 | 506 | vorpal.command("events-off", "Turn off logging of queue events").action( 507 | wrapTryCatch(async function() { 508 | const queue = await getQueue(); 509 | unlistenQueueEvents(queue); 510 | logGreen(`Logging of queue events disabled`); 511 | }) 512 | ); 513 | 514 | vorpal.history("bull-repl-default"); 515 | 516 | vorpal.delimiter("BULL-REPL> ").show(); 517 | 518 | const command = getBootCommand(); 519 | if (command) { 520 | vorpal.exec(command); 521 | } 522 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bull-repl", 3 | "version": "0.29.1", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "bull-repl", 9 | "version": "0.29.1", 10 | "license": "MIT", 11 | "dependencies": { 12 | "@moleculer/vorpal": "^1.11.5", 13 | "bull": "^4.12.2", 14 | "chalk": "^4.1.0", 15 | "ms": "^2.1.3", 16 | "node-jq": "^6.0.1", 17 | "redis-url-plus": "^1.1.0" 18 | }, 19 | "bin": { 20 | "bull-repl": "index.js" 21 | }, 22 | "devDependencies": { 23 | "@types/ms": "^0.7.34", 24 | "@types/node": "^20.11.19", 25 | "@types/vorpal": "^1.12.6", 26 | "ts-node": "^10.9.2", 27 | "type-coverage": "^2.27.1", 28 | "typescript": "^5.3.3" 29 | } 30 | }, 31 | "node_modules/@cspotcode/source-map-support": { 32 | "version": "0.8.1", 33 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", 34 | "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", 35 | "dev": true, 36 | "dependencies": { 37 | "@jridgewell/trace-mapping": "0.3.9" 38 | }, 39 | "engines": { 40 | "node": ">=12" 41 | } 42 | }, 43 | "node_modules/@ioredis/commands": { 44 | "version": "1.2.0", 45 | "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz", 46 | "integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==" 47 | }, 48 | "node_modules/@isaacs/cliui": { 49 | "version": "8.0.2", 50 | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", 51 | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", 52 | "dependencies": { 53 | "string-width": "^5.1.2", 54 | "string-width-cjs": "npm:string-width@^4.2.0", 55 | "strip-ansi": "^7.0.1", 56 | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", 57 | "wrap-ansi": "^8.1.0", 58 | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" 59 | }, 60 | "engines": { 61 | "node": ">=12" 62 | } 63 | }, 64 | "node_modules/@isaacs/cliui/node_modules/ansi-regex": { 65 | "version": "6.1.0", 66 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", 67 | "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", 68 | "engines": { 69 | "node": ">=12" 70 | }, 71 | "funding": { 72 | "url": "https://github.com/chalk/ansi-regex?sponsor=1" 73 | } 74 | }, 75 | "node_modules/@isaacs/cliui/node_modules/ansi-styles": { 76 | "version": "6.2.1", 77 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 78 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 79 | "engines": { 80 | "node": ">=12" 81 | }, 82 | "funding": { 83 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 84 | } 85 | }, 86 | "node_modules/@isaacs/cliui/node_modules/emoji-regex": { 87 | "version": "9.2.2", 88 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 89 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" 90 | }, 91 | "node_modules/@isaacs/cliui/node_modules/string-width": { 92 | "version": "5.1.2", 93 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 94 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 95 | "dependencies": { 96 | "eastasianwidth": "^0.2.0", 97 | "emoji-regex": "^9.2.2", 98 | "strip-ansi": "^7.0.1" 99 | }, 100 | "engines": { 101 | "node": ">=12" 102 | }, 103 | "funding": { 104 | "url": "https://github.com/sponsors/sindresorhus" 105 | } 106 | }, 107 | "node_modules/@isaacs/cliui/node_modules/strip-ansi": { 108 | "version": "7.1.0", 109 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 110 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 111 | "dependencies": { 112 | "ansi-regex": "^6.0.1" 113 | }, 114 | "engines": { 115 | "node": ">=12" 116 | }, 117 | "funding": { 118 | "url": "https://github.com/chalk/strip-ansi?sponsor=1" 119 | } 120 | }, 121 | "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { 122 | "version": "8.1.0", 123 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", 124 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", 125 | "dependencies": { 126 | "ansi-styles": "^6.1.0", 127 | "string-width": "^5.0.1", 128 | "strip-ansi": "^7.0.1" 129 | }, 130 | "engines": { 131 | "node": ">=12" 132 | }, 133 | "funding": { 134 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 135 | } 136 | }, 137 | "node_modules/@isaacs/fs-minipass": { 138 | "version": "4.0.1", 139 | "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", 140 | "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", 141 | "dependencies": { 142 | "minipass": "^7.0.4" 143 | }, 144 | "engines": { 145 | "node": ">=18.0.0" 146 | } 147 | }, 148 | "node_modules/@jridgewell/resolve-uri": { 149 | "version": "3.1.0", 150 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 151 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", 152 | "dev": true, 153 | "engines": { 154 | "node": ">=6.0.0" 155 | } 156 | }, 157 | "node_modules/@jridgewell/sourcemap-codec": { 158 | "version": "1.4.14", 159 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 160 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 161 | "dev": true 162 | }, 163 | "node_modules/@jridgewell/trace-mapping": { 164 | "version": "0.3.9", 165 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", 166 | "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", 167 | "dev": true, 168 | "dependencies": { 169 | "@jridgewell/resolve-uri": "^3.0.3", 170 | "@jridgewell/sourcemap-codec": "^1.4.10" 171 | } 172 | }, 173 | "node_modules/@moleculer/vorpal": { 174 | "version": "1.11.5", 175 | "resolved": "https://registry.npmjs.org/@moleculer/vorpal/-/vorpal-1.11.5.tgz", 176 | "integrity": "sha512-E1lm/o7Wi5WgbXU3YwRv175fXgvExB1ZzIRAGemV8NH2j7D1hAaYUREfhdA7ut3sMe3VBqfTMNaOKoBO44BxFA==", 177 | "dependencies": { 178 | "babel-polyfill": "^6.3.14", 179 | "chalk": "^2.4.2", 180 | "in-publish": "^2.0.0", 181 | "inquirer": "7.0.0", 182 | "json-stringify-safe": "^5.0.1", 183 | "lodash": "^4.17.15", 184 | "log-update": "^3.3.0", 185 | "minimist": "^1.2.0", 186 | "node-localstorage": "^1.3.1", 187 | "strip-ansi": "^5.2.0", 188 | "wrap-ansi": "^6.0.0" 189 | }, 190 | "engines": { 191 | "node": ">= 8.0.0" 192 | } 193 | }, 194 | "node_modules/@moleculer/vorpal/node_modules/ansi-styles": { 195 | "version": "3.2.1", 196 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 197 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 198 | "dependencies": { 199 | "color-convert": "^1.9.0" 200 | }, 201 | "engines": { 202 | "node": ">=4" 203 | } 204 | }, 205 | "node_modules/@moleculer/vorpal/node_modules/chalk": { 206 | "version": "2.4.2", 207 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 208 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 209 | "dependencies": { 210 | "ansi-styles": "^3.2.1", 211 | "escape-string-regexp": "^1.0.5", 212 | "supports-color": "^5.3.0" 213 | }, 214 | "engines": { 215 | "node": ">=4" 216 | } 217 | }, 218 | "node_modules/@moleculer/vorpal/node_modules/color-convert": { 219 | "version": "1.9.3", 220 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 221 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 222 | "dependencies": { 223 | "color-name": "1.1.3" 224 | } 225 | }, 226 | "node_modules/@moleculer/vorpal/node_modules/color-name": { 227 | "version": "1.1.3", 228 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 229 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 230 | }, 231 | "node_modules/@moleculer/vorpal/node_modules/has-flag": { 232 | "version": "3.0.0", 233 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 234 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 235 | "engines": { 236 | "node": ">=4" 237 | } 238 | }, 239 | "node_modules/@moleculer/vorpal/node_modules/supports-color": { 240 | "version": "5.5.0", 241 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 242 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 243 | "dependencies": { 244 | "has-flag": "^3.0.0" 245 | }, 246 | "engines": { 247 | "node": ">=4" 248 | } 249 | }, 250 | "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { 251 | "version": "3.0.2", 252 | "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz", 253 | "integrity": "sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==", 254 | "cpu": [ 255 | "arm64" 256 | ], 257 | "optional": true, 258 | "os": [ 259 | "darwin" 260 | ] 261 | }, 262 | "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { 263 | "version": "3.0.2", 264 | "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz", 265 | "integrity": "sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==", 266 | "cpu": [ 267 | "x64" 268 | ], 269 | "optional": true, 270 | "os": [ 271 | "darwin" 272 | ] 273 | }, 274 | "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { 275 | "version": "3.0.2", 276 | "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz", 277 | "integrity": "sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==", 278 | "cpu": [ 279 | "arm" 280 | ], 281 | "optional": true, 282 | "os": [ 283 | "linux" 284 | ] 285 | }, 286 | "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { 287 | "version": "3.0.2", 288 | "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz", 289 | "integrity": "sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==", 290 | "cpu": [ 291 | "arm64" 292 | ], 293 | "optional": true, 294 | "os": [ 295 | "linux" 296 | ] 297 | }, 298 | "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { 299 | "version": "3.0.2", 300 | "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz", 301 | "integrity": "sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==", 302 | "cpu": [ 303 | "x64" 304 | ], 305 | "optional": true, 306 | "os": [ 307 | "linux" 308 | ] 309 | }, 310 | "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { 311 | "version": "3.0.2", 312 | "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz", 313 | "integrity": "sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==", 314 | "cpu": [ 315 | "x64" 316 | ], 317 | "optional": true, 318 | "os": [ 319 | "win32" 320 | ] 321 | }, 322 | "node_modules/@nodelib/fs.scandir": { 323 | "version": "2.1.5", 324 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 325 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 326 | "dev": true, 327 | "dependencies": { 328 | "@nodelib/fs.stat": "2.0.5", 329 | "run-parallel": "^1.1.9" 330 | }, 331 | "engines": { 332 | "node": ">= 8" 333 | } 334 | }, 335 | "node_modules/@nodelib/fs.stat": { 336 | "version": "2.0.5", 337 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 338 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 339 | "dev": true, 340 | "engines": { 341 | "node": ">= 8" 342 | } 343 | }, 344 | "node_modules/@nodelib/fs.walk": { 345 | "version": "1.2.8", 346 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 347 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 348 | "dev": true, 349 | "dependencies": { 350 | "@nodelib/fs.scandir": "2.1.5", 351 | "fastq": "^1.6.0" 352 | }, 353 | "engines": { 354 | "node": ">= 8" 355 | } 356 | }, 357 | "node_modules/@pkgjs/parseargs": { 358 | "version": "0.11.0", 359 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", 360 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", 361 | "optional": true, 362 | "engines": { 363 | "node": ">=14" 364 | } 365 | }, 366 | "node_modules/@tsconfig/node10": { 367 | "version": "1.0.8", 368 | "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", 369 | "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", 370 | "dev": true 371 | }, 372 | "node_modules/@tsconfig/node12": { 373 | "version": "1.0.9", 374 | "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", 375 | "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", 376 | "dev": true 377 | }, 378 | "node_modules/@tsconfig/node14": { 379 | "version": "1.0.1", 380 | "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", 381 | "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", 382 | "dev": true 383 | }, 384 | "node_modules/@tsconfig/node16": { 385 | "version": "1.0.2", 386 | "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", 387 | "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", 388 | "dev": true 389 | }, 390 | "node_modules/@types/ms": { 391 | "version": "0.7.34", 392 | "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", 393 | "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", 394 | "dev": true 395 | }, 396 | "node_modules/@types/node": { 397 | "version": "20.11.19", 398 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.19.tgz", 399 | "integrity": "sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==", 400 | "dev": true, 401 | "dependencies": { 402 | "undici-types": "~5.26.4" 403 | } 404 | }, 405 | "node_modules/@types/vorpal": { 406 | "version": "1.12.6", 407 | "resolved": "https://registry.npmjs.org/@types/vorpal/-/vorpal-1.12.6.tgz", 408 | "integrity": "sha512-EXg8BFaujgMBLAgYane2dgSnOwgqLP5VgChrLUfG0RPdFQG2BWtzyR1M0NVKEvNWaD7zJS8UFqu/RVfMbOp9hA==", 409 | "dev": true 410 | }, 411 | "node_modules/acorn": { 412 | "version": "8.7.0", 413 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", 414 | "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", 415 | "dev": true, 416 | "bin": { 417 | "acorn": "bin/acorn" 418 | }, 419 | "engines": { 420 | "node": ">=0.4.0" 421 | } 422 | }, 423 | "node_modules/acorn-walk": { 424 | "version": "8.2.0", 425 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", 426 | "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", 427 | "dev": true, 428 | "engines": { 429 | "node": ">=0.4.0" 430 | } 431 | }, 432 | "node_modules/ansi-escapes": { 433 | "version": "4.3.2", 434 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", 435 | "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", 436 | "dependencies": { 437 | "type-fest": "^0.21.3" 438 | }, 439 | "engines": { 440 | "node": ">=8" 441 | }, 442 | "funding": { 443 | "url": "https://github.com/sponsors/sindresorhus" 444 | } 445 | }, 446 | "node_modules/ansi-regex": { 447 | "version": "4.1.1", 448 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", 449 | "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", 450 | "engines": { 451 | "node": ">=6" 452 | } 453 | }, 454 | "node_modules/ansi-styles": { 455 | "version": "4.3.0", 456 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 457 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 458 | "dependencies": { 459 | "color-convert": "^2.0.1" 460 | }, 461 | "engines": { 462 | "node": ">=8" 463 | }, 464 | "funding": { 465 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 466 | } 467 | }, 468 | "node_modules/arg": { 469 | "version": "4.1.3", 470 | "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", 471 | "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", 472 | "dev": true 473 | }, 474 | "node_modules/babel-polyfill": { 475 | "version": "6.26.0", 476 | "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", 477 | "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", 478 | "dependencies": { 479 | "babel-runtime": "^6.26.0", 480 | "core-js": "^2.5.0", 481 | "regenerator-runtime": "^0.10.5" 482 | } 483 | }, 484 | "node_modules/babel-runtime": { 485 | "version": "6.26.0", 486 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", 487 | "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", 488 | "dependencies": { 489 | "core-js": "^2.4.0", 490 | "regenerator-runtime": "^0.11.0" 491 | } 492 | }, 493 | "node_modules/babel-runtime/node_modules/regenerator-runtime": { 494 | "version": "0.11.1", 495 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", 496 | "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" 497 | }, 498 | "node_modules/balanced-match": { 499 | "version": "1.0.2", 500 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 501 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 502 | }, 503 | "node_modules/brace-expansion": { 504 | "version": "2.0.1", 505 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 506 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 507 | "dependencies": { 508 | "balanced-match": "^1.0.0" 509 | } 510 | }, 511 | "node_modules/braces": { 512 | "version": "3.0.3", 513 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 514 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 515 | "dev": true, 516 | "dependencies": { 517 | "fill-range": "^7.1.1" 518 | }, 519 | "engines": { 520 | "node": ">=8" 521 | } 522 | }, 523 | "node_modules/bull": { 524 | "version": "4.12.2", 525 | "resolved": "https://registry.npmjs.org/bull/-/bull-4.12.2.tgz", 526 | "integrity": "sha512-WPuc0VCYx+cIVMiZtPwRpWyyJFBrj4/OgKJ6n9Jf4tIw7rQNV+HAKQv15UDkcTvfpGFehvod7Fd1YztbYSJIDQ==", 527 | "dependencies": { 528 | "cron-parser": "^4.2.1", 529 | "get-port": "^5.1.1", 530 | "ioredis": "^5.3.2", 531 | "lodash": "^4.17.21", 532 | "msgpackr": "^1.10.1", 533 | "semver": "^7.5.2", 534 | "uuid": "^8.3.0" 535 | }, 536 | "engines": { 537 | "node": ">=12" 538 | } 539 | }, 540 | "node_modules/chalk": { 541 | "version": "4.1.2", 542 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 543 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 544 | "dependencies": { 545 | "ansi-styles": "^4.1.0", 546 | "supports-color": "^7.1.0" 547 | }, 548 | "engines": { 549 | "node": ">=10" 550 | }, 551 | "funding": { 552 | "url": "https://github.com/chalk/chalk?sponsor=1" 553 | } 554 | }, 555 | "node_modules/chardet": { 556 | "version": "0.7.0", 557 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", 558 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" 559 | }, 560 | "node_modules/chownr": { 561 | "version": "3.0.0", 562 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", 563 | "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", 564 | "engines": { 565 | "node": ">=18" 566 | } 567 | }, 568 | "node_modules/cli-cursor": { 569 | "version": "3.1.0", 570 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", 571 | "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", 572 | "dependencies": { 573 | "restore-cursor": "^3.1.0" 574 | }, 575 | "engines": { 576 | "node": ">=8" 577 | } 578 | }, 579 | "node_modules/cli-width": { 580 | "version": "2.2.1", 581 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", 582 | "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" 583 | }, 584 | "node_modules/cluster-key-slot": { 585 | "version": "1.1.0", 586 | "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz", 587 | "integrity": "sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw==", 588 | "engines": { 589 | "node": ">=0.10.0" 590 | } 591 | }, 592 | "node_modules/color-convert": { 593 | "version": "2.0.1", 594 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 595 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 596 | "dependencies": { 597 | "color-name": "~1.1.4" 598 | }, 599 | "engines": { 600 | "node": ">=7.0.0" 601 | } 602 | }, 603 | "node_modules/color-name": { 604 | "version": "1.1.4", 605 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 606 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 607 | }, 608 | "node_modules/core-js": { 609 | "version": "2.6.12", 610 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", 611 | "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", 612 | "deprecated": "core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", 613 | "hasInstallScript": true 614 | }, 615 | "node_modules/create-require": { 616 | "version": "1.1.1", 617 | "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", 618 | "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", 619 | "dev": true 620 | }, 621 | "node_modules/cron-parser": { 622 | "version": "4.7.0", 623 | "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.7.0.tgz", 624 | "integrity": "sha512-BdAELR+MCT2ZWsIBhZKDuUqIUCBjHHulPJnm53OfdRLA4EWBjva3R+KM5NeidJuGsNXdEcZkjC7SCnkW5rAFSA==", 625 | "dependencies": { 626 | "luxon": "^3.1.0" 627 | }, 628 | "engines": { 629 | "node": ">=12.0.0" 630 | } 631 | }, 632 | "node_modules/cross-spawn": { 633 | "version": "7.0.5", 634 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz", 635 | "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==", 636 | "dependencies": { 637 | "path-key": "^3.1.0", 638 | "shebang-command": "^2.0.0", 639 | "which": "^2.0.1" 640 | }, 641 | "engines": { 642 | "node": ">= 8" 643 | } 644 | }, 645 | "node_modules/crypto-random-string": { 646 | "version": "4.0.0", 647 | "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", 648 | "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", 649 | "dependencies": { 650 | "type-fest": "^1.0.1" 651 | }, 652 | "engines": { 653 | "node": ">=12" 654 | }, 655 | "funding": { 656 | "url": "https://github.com/sponsors/sindresorhus" 657 | } 658 | }, 659 | "node_modules/crypto-random-string/node_modules/type-fest": { 660 | "version": "1.4.0", 661 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", 662 | "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", 663 | "engines": { 664 | "node": ">=10" 665 | }, 666 | "funding": { 667 | "url": "https://github.com/sponsors/sindresorhus" 668 | } 669 | }, 670 | "node_modules/debug": { 671 | "version": "4.3.4", 672 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 673 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 674 | "dependencies": { 675 | "ms": "2.1.2" 676 | }, 677 | "engines": { 678 | "node": ">=6.0" 679 | }, 680 | "peerDependenciesMeta": { 681 | "supports-color": { 682 | "optional": true 683 | } 684 | } 685 | }, 686 | "node_modules/debug/node_modules/ms": { 687 | "version": "2.1.2", 688 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 689 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 690 | }, 691 | "node_modules/denque": { 692 | "version": "2.1.0", 693 | "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", 694 | "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", 695 | "engines": { 696 | "node": ">=0.10" 697 | } 698 | }, 699 | "node_modules/diff": { 700 | "version": "4.0.2", 701 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 702 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", 703 | "dev": true, 704 | "engines": { 705 | "node": ">=0.3.1" 706 | } 707 | }, 708 | "node_modules/eastasianwidth": { 709 | "version": "0.2.0", 710 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 711 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" 712 | }, 713 | "node_modules/emoji-regex": { 714 | "version": "8.0.0", 715 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 716 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 717 | }, 718 | "node_modules/escape-string-regexp": { 719 | "version": "1.0.5", 720 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 721 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 722 | "engines": { 723 | "node": ">=0.8.0" 724 | } 725 | }, 726 | "node_modules/external-editor": { 727 | "version": "3.1.0", 728 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", 729 | "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", 730 | "dependencies": { 731 | "chardet": "^0.7.0", 732 | "iconv-lite": "^0.4.24", 733 | "tmp": "^0.0.33" 734 | }, 735 | "engines": { 736 | "node": ">=4" 737 | } 738 | }, 739 | "node_modules/fast-glob": { 740 | "version": "3.3.2", 741 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", 742 | "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", 743 | "dev": true, 744 | "dependencies": { 745 | "@nodelib/fs.stat": "^2.0.2", 746 | "@nodelib/fs.walk": "^1.2.3", 747 | "glob-parent": "^5.1.2", 748 | "merge2": "^1.3.0", 749 | "micromatch": "^4.0.4" 750 | }, 751 | "engines": { 752 | "node": ">=8.6.0" 753 | } 754 | }, 755 | "node_modules/fastq": { 756 | "version": "1.17.1", 757 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", 758 | "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", 759 | "dev": true, 760 | "dependencies": { 761 | "reusify": "^1.0.4" 762 | } 763 | }, 764 | "node_modules/figures": { 765 | "version": "3.2.0", 766 | "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", 767 | "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", 768 | "dependencies": { 769 | "escape-string-regexp": "^1.0.5" 770 | }, 771 | "engines": { 772 | "node": ">=8" 773 | }, 774 | "funding": { 775 | "url": "https://github.com/sponsors/sindresorhus" 776 | } 777 | }, 778 | "node_modules/fill-range": { 779 | "version": "7.1.1", 780 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 781 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 782 | "dev": true, 783 | "dependencies": { 784 | "to-regex-range": "^5.0.1" 785 | }, 786 | "engines": { 787 | "node": ">=8" 788 | } 789 | }, 790 | "node_modules/foreground-child": { 791 | "version": "3.3.0", 792 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", 793 | "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", 794 | "dependencies": { 795 | "cross-spawn": "^7.0.0", 796 | "signal-exit": "^4.0.1" 797 | }, 798 | "engines": { 799 | "node": ">=14" 800 | }, 801 | "funding": { 802 | "url": "https://github.com/sponsors/isaacs" 803 | } 804 | }, 805 | "node_modules/foreground-child/node_modules/signal-exit": { 806 | "version": "4.1.0", 807 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", 808 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", 809 | "engines": { 810 | "node": ">=14" 811 | }, 812 | "funding": { 813 | "url": "https://github.com/sponsors/isaacs" 814 | } 815 | }, 816 | "node_modules/get-port": { 817 | "version": "5.1.1", 818 | "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", 819 | "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", 820 | "engines": { 821 | "node": ">=8" 822 | }, 823 | "funding": { 824 | "url": "https://github.com/sponsors/sindresorhus" 825 | } 826 | }, 827 | "node_modules/glob": { 828 | "version": "10.4.5", 829 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", 830 | "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", 831 | "dependencies": { 832 | "foreground-child": "^3.1.0", 833 | "jackspeak": "^3.1.2", 834 | "minimatch": "^9.0.4", 835 | "minipass": "^7.1.2", 836 | "package-json-from-dist": "^1.0.0", 837 | "path-scurry": "^1.11.1" 838 | }, 839 | "bin": { 840 | "glob": "dist/esm/bin.mjs" 841 | }, 842 | "funding": { 843 | "url": "https://github.com/sponsors/isaacs" 844 | } 845 | }, 846 | "node_modules/glob-parent": { 847 | "version": "5.1.2", 848 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 849 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 850 | "dev": true, 851 | "dependencies": { 852 | "is-glob": "^4.0.1" 853 | }, 854 | "engines": { 855 | "node": ">= 6" 856 | } 857 | }, 858 | "node_modules/glob-parent/node_modules/is-extglob": { 859 | "version": "2.1.1", 860 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 861 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 862 | "dev": true, 863 | "engines": { 864 | "node": ">=0.10.0" 865 | } 866 | }, 867 | "node_modules/glob-parent/node_modules/is-glob": { 868 | "version": "4.0.3", 869 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 870 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 871 | "dev": true, 872 | "dependencies": { 873 | "is-extglob": "^2.1.1" 874 | }, 875 | "engines": { 876 | "node": ">=0.10.0" 877 | } 878 | }, 879 | "node_modules/graceful-fs": { 880 | "version": "4.2.10", 881 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", 882 | "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" 883 | }, 884 | "node_modules/has-flag": { 885 | "version": "4.0.0", 886 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 887 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 888 | "engines": { 889 | "node": ">=8" 890 | } 891 | }, 892 | "node_modules/iconv-lite": { 893 | "version": "0.4.24", 894 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 895 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 896 | "dependencies": { 897 | "safer-buffer": ">= 2.1.2 < 3" 898 | }, 899 | "engines": { 900 | "node": ">=0.10.0" 901 | } 902 | }, 903 | "node_modules/imurmurhash": { 904 | "version": "0.1.4", 905 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 906 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 907 | "engines": { 908 | "node": ">=0.8.19" 909 | } 910 | }, 911 | "node_modules/in-publish": { 912 | "version": "2.0.1", 913 | "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", 914 | "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==", 915 | "bin": { 916 | "in-install": "in-install.js", 917 | "in-publish": "in-publish.js", 918 | "not-in-install": "not-in-install.js", 919 | "not-in-publish": "not-in-publish.js" 920 | } 921 | }, 922 | "node_modules/inquirer": { 923 | "version": "7.0.0", 924 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz", 925 | "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==", 926 | "dependencies": { 927 | "ansi-escapes": "^4.2.1", 928 | "chalk": "^2.4.2", 929 | "cli-cursor": "^3.1.0", 930 | "cli-width": "^2.0.0", 931 | "external-editor": "^3.0.3", 932 | "figures": "^3.0.0", 933 | "lodash": "^4.17.15", 934 | "mute-stream": "0.0.8", 935 | "run-async": "^2.2.0", 936 | "rxjs": "^6.4.0", 937 | "string-width": "^4.1.0", 938 | "strip-ansi": "^5.1.0", 939 | "through": "^2.3.6" 940 | }, 941 | "engines": { 942 | "node": ">=6.0.0" 943 | } 944 | }, 945 | "node_modules/inquirer/node_modules/ansi-styles": { 946 | "version": "3.2.1", 947 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 948 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 949 | "dependencies": { 950 | "color-convert": "^1.9.0" 951 | }, 952 | "engines": { 953 | "node": ">=4" 954 | } 955 | }, 956 | "node_modules/inquirer/node_modules/chalk": { 957 | "version": "2.4.2", 958 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 959 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 960 | "dependencies": { 961 | "ansi-styles": "^3.2.1", 962 | "escape-string-regexp": "^1.0.5", 963 | "supports-color": "^5.3.0" 964 | }, 965 | "engines": { 966 | "node": ">=4" 967 | } 968 | }, 969 | "node_modules/inquirer/node_modules/color-convert": { 970 | "version": "1.9.3", 971 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 972 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 973 | "dependencies": { 974 | "color-name": "1.1.3" 975 | } 976 | }, 977 | "node_modules/inquirer/node_modules/color-name": { 978 | "version": "1.1.3", 979 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 980 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 981 | }, 982 | "node_modules/inquirer/node_modules/has-flag": { 983 | "version": "3.0.0", 984 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 985 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 986 | "engines": { 987 | "node": ">=4" 988 | } 989 | }, 990 | "node_modules/inquirer/node_modules/supports-color": { 991 | "version": "5.5.0", 992 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 993 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 994 | "dependencies": { 995 | "has-flag": "^3.0.0" 996 | }, 997 | "engines": { 998 | "node": ">=4" 999 | } 1000 | }, 1001 | "node_modules/ioredis": { 1002 | "version": "5.3.2", 1003 | "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.3.2.tgz", 1004 | "integrity": "sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==", 1005 | "dependencies": { 1006 | "@ioredis/commands": "^1.1.1", 1007 | "cluster-key-slot": "^1.1.0", 1008 | "debug": "^4.3.4", 1009 | "denque": "^2.1.0", 1010 | "lodash.defaults": "^4.2.0", 1011 | "lodash.isarguments": "^3.1.0", 1012 | "redis-errors": "^1.2.0", 1013 | "redis-parser": "^3.0.0", 1014 | "standard-as-callback": "^2.1.0" 1015 | }, 1016 | "engines": { 1017 | "node": ">=12.22.0" 1018 | }, 1019 | "funding": { 1020 | "type": "opencollective", 1021 | "url": "https://opencollective.com/ioredis" 1022 | } 1023 | }, 1024 | "node_modules/is-extglob": { 1025 | "version": "1.0.0", 1026 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 1027 | "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", 1028 | "engines": { 1029 | "node": ">=0.10.0" 1030 | } 1031 | }, 1032 | "node_modules/is-fullwidth-code-point": { 1033 | "version": "3.0.0", 1034 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1035 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1036 | "engines": { 1037 | "node": ">=8" 1038 | } 1039 | }, 1040 | "node_modules/is-glob": { 1041 | "version": "2.0.1", 1042 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", 1043 | "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", 1044 | "dependencies": { 1045 | "is-extglob": "^1.0.0" 1046 | }, 1047 | "engines": { 1048 | "node": ">=0.10.0" 1049 | } 1050 | }, 1051 | "node_modules/is-invalid-path": { 1052 | "version": "0.1.0", 1053 | "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz", 1054 | "integrity": "sha1-MHqFWzzxqTi0TqcNLGEQYFNxTzQ=", 1055 | "dependencies": { 1056 | "is-glob": "^2.0.0" 1057 | }, 1058 | "engines": { 1059 | "node": ">=0.10.0" 1060 | } 1061 | }, 1062 | "node_modules/is-number": { 1063 | "version": "7.0.0", 1064 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1065 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1066 | "dev": true, 1067 | "engines": { 1068 | "node": ">=0.12.0" 1069 | } 1070 | }, 1071 | "node_modules/is-stream": { 1072 | "version": "3.0.0", 1073 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", 1074 | "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", 1075 | "engines": { 1076 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1077 | }, 1078 | "funding": { 1079 | "url": "https://github.com/sponsors/sindresorhus" 1080 | } 1081 | }, 1082 | "node_modules/is-valid-path": { 1083 | "version": "0.1.1", 1084 | "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz", 1085 | "integrity": "sha1-EQ+f90w39mPh7HkV60UfLbk6yd8=", 1086 | "dependencies": { 1087 | "is-invalid-path": "^0.1.0" 1088 | }, 1089 | "engines": { 1090 | "node": ">=0.10.0" 1091 | } 1092 | }, 1093 | "node_modules/isexe": { 1094 | "version": "2.0.0", 1095 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1096 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" 1097 | }, 1098 | "node_modules/jackspeak": { 1099 | "version": "3.4.3", 1100 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", 1101 | "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", 1102 | "dependencies": { 1103 | "@isaacs/cliui": "^8.0.2" 1104 | }, 1105 | "funding": { 1106 | "url": "https://github.com/sponsors/isaacs" 1107 | }, 1108 | "optionalDependencies": { 1109 | "@pkgjs/parseargs": "^0.11.0" 1110 | } 1111 | }, 1112 | "node_modules/json-stringify-safe": { 1113 | "version": "5.0.1", 1114 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 1115 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" 1116 | }, 1117 | "node_modules/lodash": { 1118 | "version": "4.17.21", 1119 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 1120 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 1121 | }, 1122 | "node_modules/lodash.defaults": { 1123 | "version": "4.2.0", 1124 | "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", 1125 | "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" 1126 | }, 1127 | "node_modules/lodash.isarguments": { 1128 | "version": "3.1.0", 1129 | "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", 1130 | "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" 1131 | }, 1132 | "node_modules/log-update": { 1133 | "version": "3.4.0", 1134 | "resolved": "https://registry.npmjs.org/log-update/-/log-update-3.4.0.tgz", 1135 | "integrity": "sha512-ILKe88NeMt4gmDvk/eb615U/IVn7K9KWGkoYbdatQ69Z65nj1ZzjM6fHXfcs0Uge+e+EGnMW7DY4T9yko8vWFg==", 1136 | "dependencies": { 1137 | "ansi-escapes": "^3.2.0", 1138 | "cli-cursor": "^2.1.0", 1139 | "wrap-ansi": "^5.0.0" 1140 | }, 1141 | "engines": { 1142 | "node": ">=6" 1143 | }, 1144 | "funding": { 1145 | "url": "https://github.com/sponsors/sindresorhus" 1146 | } 1147 | }, 1148 | "node_modules/log-update/node_modules/ansi-escapes": { 1149 | "version": "3.2.0", 1150 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", 1151 | "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", 1152 | "engines": { 1153 | "node": ">=4" 1154 | } 1155 | }, 1156 | "node_modules/log-update/node_modules/ansi-styles": { 1157 | "version": "3.2.1", 1158 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 1159 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 1160 | "dependencies": { 1161 | "color-convert": "^1.9.0" 1162 | }, 1163 | "engines": { 1164 | "node": ">=4" 1165 | } 1166 | }, 1167 | "node_modules/log-update/node_modules/cli-cursor": { 1168 | "version": "2.1.0", 1169 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", 1170 | "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", 1171 | "dependencies": { 1172 | "restore-cursor": "^2.0.0" 1173 | }, 1174 | "engines": { 1175 | "node": ">=4" 1176 | } 1177 | }, 1178 | "node_modules/log-update/node_modules/color-convert": { 1179 | "version": "1.9.3", 1180 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1181 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1182 | "dependencies": { 1183 | "color-name": "1.1.3" 1184 | } 1185 | }, 1186 | "node_modules/log-update/node_modules/color-name": { 1187 | "version": "1.1.3", 1188 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1189 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 1190 | }, 1191 | "node_modules/log-update/node_modules/emoji-regex": { 1192 | "version": "7.0.3", 1193 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 1194 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" 1195 | }, 1196 | "node_modules/log-update/node_modules/is-fullwidth-code-point": { 1197 | "version": "2.0.0", 1198 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1199 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 1200 | "engines": { 1201 | "node": ">=4" 1202 | } 1203 | }, 1204 | "node_modules/log-update/node_modules/mimic-fn": { 1205 | "version": "1.2.0", 1206 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", 1207 | "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", 1208 | "engines": { 1209 | "node": ">=4" 1210 | } 1211 | }, 1212 | "node_modules/log-update/node_modules/onetime": { 1213 | "version": "2.0.1", 1214 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", 1215 | "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", 1216 | "dependencies": { 1217 | "mimic-fn": "^1.0.0" 1218 | }, 1219 | "engines": { 1220 | "node": ">=4" 1221 | } 1222 | }, 1223 | "node_modules/log-update/node_modules/restore-cursor": { 1224 | "version": "2.0.0", 1225 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", 1226 | "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", 1227 | "dependencies": { 1228 | "onetime": "^2.0.0", 1229 | "signal-exit": "^3.0.2" 1230 | }, 1231 | "engines": { 1232 | "node": ">=4" 1233 | } 1234 | }, 1235 | "node_modules/log-update/node_modules/string-width": { 1236 | "version": "3.1.0", 1237 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 1238 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 1239 | "dependencies": { 1240 | "emoji-regex": "^7.0.1", 1241 | "is-fullwidth-code-point": "^2.0.0", 1242 | "strip-ansi": "^5.1.0" 1243 | }, 1244 | "engines": { 1245 | "node": ">=6" 1246 | } 1247 | }, 1248 | "node_modules/log-update/node_modules/wrap-ansi": { 1249 | "version": "5.1.0", 1250 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", 1251 | "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", 1252 | "dependencies": { 1253 | "ansi-styles": "^3.2.0", 1254 | "string-width": "^3.0.0", 1255 | "strip-ansi": "^5.0.0" 1256 | }, 1257 | "engines": { 1258 | "node": ">=6" 1259 | } 1260 | }, 1261 | "node_modules/lru-cache": { 1262 | "version": "10.4.3", 1263 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", 1264 | "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" 1265 | }, 1266 | "node_modules/luxon": { 1267 | "version": "3.2.1", 1268 | "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.2.1.tgz", 1269 | "integrity": "sha512-QrwPArQCNLAKGO/C+ZIilgIuDnEnKx5QYODdDtbFaxzsbZcc/a7WFq7MhsVYgRlwawLtvOUESTlfJ+hc/USqPg==", 1270 | "engines": { 1271 | "node": ">=12" 1272 | } 1273 | }, 1274 | "node_modules/make-error": { 1275 | "version": "1.3.6", 1276 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", 1277 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", 1278 | "dev": true 1279 | }, 1280 | "node_modules/merge2": { 1281 | "version": "1.4.1", 1282 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 1283 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 1284 | "dev": true, 1285 | "engines": { 1286 | "node": ">= 8" 1287 | } 1288 | }, 1289 | "node_modules/micromatch": { 1290 | "version": "4.0.5", 1291 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 1292 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 1293 | "dev": true, 1294 | "dependencies": { 1295 | "braces": "^3.0.2", 1296 | "picomatch": "^2.3.1" 1297 | }, 1298 | "engines": { 1299 | "node": ">=8.6" 1300 | } 1301 | }, 1302 | "node_modules/mimic-fn": { 1303 | "version": "2.1.0", 1304 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 1305 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 1306 | "engines": { 1307 | "node": ">=6" 1308 | } 1309 | }, 1310 | "node_modules/minimatch": { 1311 | "version": "9.0.5", 1312 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 1313 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 1314 | "dependencies": { 1315 | "brace-expansion": "^2.0.1" 1316 | }, 1317 | "engines": { 1318 | "node": ">=16 || 14 >=14.17" 1319 | }, 1320 | "funding": { 1321 | "url": "https://github.com/sponsors/isaacs" 1322 | } 1323 | }, 1324 | "node_modules/minimist": { 1325 | "version": "1.2.6", 1326 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", 1327 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" 1328 | }, 1329 | "node_modules/minipass": { 1330 | "version": "7.1.2", 1331 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", 1332 | "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", 1333 | "engines": { 1334 | "node": ">=16 || 14 >=14.17" 1335 | } 1336 | }, 1337 | "node_modules/minizlib": { 1338 | "version": "3.0.1", 1339 | "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.1.tgz", 1340 | "integrity": "sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==", 1341 | "dependencies": { 1342 | "minipass": "^7.0.4", 1343 | "rimraf": "^5.0.5" 1344 | }, 1345 | "engines": { 1346 | "node": ">= 18" 1347 | } 1348 | }, 1349 | "node_modules/mkdirp": { 1350 | "version": "3.0.1", 1351 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", 1352 | "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", 1353 | "bin": { 1354 | "mkdirp": "dist/cjs/src/bin.js" 1355 | }, 1356 | "engines": { 1357 | "node": ">=10" 1358 | }, 1359 | "funding": { 1360 | "url": "https://github.com/sponsors/isaacs" 1361 | } 1362 | }, 1363 | "node_modules/ms": { 1364 | "version": "2.1.3", 1365 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1366 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1367 | }, 1368 | "node_modules/msgpackr": { 1369 | "version": "1.10.1", 1370 | "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.10.1.tgz", 1371 | "integrity": "sha512-r5VRLv9qouXuLiIBrLpl2d5ZvPt8svdQTl5/vMvE4nzDMyEX4sgW5yWhuBBj5UmgwOTWj8CIdSXn5sAfsHAWIQ==", 1372 | "optionalDependencies": { 1373 | "msgpackr-extract": "^3.0.2" 1374 | } 1375 | }, 1376 | "node_modules/msgpackr-extract": { 1377 | "version": "3.0.2", 1378 | "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz", 1379 | "integrity": "sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==", 1380 | "hasInstallScript": true, 1381 | "optional": true, 1382 | "dependencies": { 1383 | "node-gyp-build-optional-packages": "5.0.7" 1384 | }, 1385 | "bin": { 1386 | "download-msgpackr-prebuilds": "bin/download-prebuilds.js" 1387 | }, 1388 | "optionalDependencies": { 1389 | "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.2", 1390 | "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.2", 1391 | "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.2", 1392 | "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.2", 1393 | "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.2", 1394 | "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.2" 1395 | } 1396 | }, 1397 | "node_modules/mute-stream": { 1398 | "version": "0.0.8", 1399 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", 1400 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" 1401 | }, 1402 | "node_modules/node-gyp-build-optional-packages": { 1403 | "version": "5.0.7", 1404 | "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz", 1405 | "integrity": "sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==", 1406 | "optional": true, 1407 | "bin": { 1408 | "node-gyp-build-optional-packages": "bin.js", 1409 | "node-gyp-build-optional-packages-optional": "optional.js", 1410 | "node-gyp-build-optional-packages-test": "build-test.js" 1411 | } 1412 | }, 1413 | "node_modules/node-jq": { 1414 | "version": "6.0.1", 1415 | "resolved": "https://registry.npmjs.org/node-jq/-/node-jq-6.0.1.tgz", 1416 | "integrity": "sha512-jt1H7i2c/BZUkid7O8uK4KWw5wDZgpsSHq8WAVv8SpedToUOpA6kAgoLnoAHmorAUGJTfICZlniKkMaEl28Uyw==", 1417 | "hasInstallScript": true, 1418 | "dependencies": { 1419 | "is-valid-path": "^0.1.1", 1420 | "strip-final-newline": "^2.0.0", 1421 | "tar": "^7.4.0", 1422 | "tempy": "^3.1.0", 1423 | "zod": "^3.23.8" 1424 | }, 1425 | "bin": { 1426 | "node-jq": "bin/jq" 1427 | }, 1428 | "engines": { 1429 | "node": ">= 18" 1430 | } 1431 | }, 1432 | "node_modules/node-localstorage": { 1433 | "version": "1.3.1", 1434 | "resolved": "https://registry.npmjs.org/node-localstorage/-/node-localstorage-1.3.1.tgz", 1435 | "integrity": "sha512-NMWCSWWc6JbHT5PyWlNT2i8r7PgGYXVntmKawY83k/M0UJScZ5jirb61TLnqKwd815DfBQu+lR3sRw08SPzIaQ==", 1436 | "dependencies": { 1437 | "write-file-atomic": "^1.1.4" 1438 | }, 1439 | "engines": { 1440 | "node": ">=0.12" 1441 | } 1442 | }, 1443 | "node_modules/normalize-path": { 1444 | "version": "3.0.0", 1445 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1446 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1447 | "dev": true, 1448 | "engines": { 1449 | "node": ">=0.10.0" 1450 | } 1451 | }, 1452 | "node_modules/onetime": { 1453 | "version": "5.1.2", 1454 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 1455 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 1456 | "dependencies": { 1457 | "mimic-fn": "^2.1.0" 1458 | }, 1459 | "engines": { 1460 | "node": ">=6" 1461 | }, 1462 | "funding": { 1463 | "url": "https://github.com/sponsors/sindresorhus" 1464 | } 1465 | }, 1466 | "node_modules/os-tmpdir": { 1467 | "version": "1.0.2", 1468 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 1469 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 1470 | "engines": { 1471 | "node": ">=0.10.0" 1472 | } 1473 | }, 1474 | "node_modules/package-json-from-dist": { 1475 | "version": "1.0.1", 1476 | "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", 1477 | "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==" 1478 | }, 1479 | "node_modules/path-key": { 1480 | "version": "3.1.1", 1481 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1482 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1483 | "engines": { 1484 | "node": ">=8" 1485 | } 1486 | }, 1487 | "node_modules/path-scurry": { 1488 | "version": "1.11.1", 1489 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", 1490 | "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", 1491 | "dependencies": { 1492 | "lru-cache": "^10.2.0", 1493 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" 1494 | }, 1495 | "engines": { 1496 | "node": ">=16 || 14 >=14.18" 1497 | }, 1498 | "funding": { 1499 | "url": "https://github.com/sponsors/isaacs" 1500 | } 1501 | }, 1502 | "node_modules/picomatch": { 1503 | "version": "2.3.1", 1504 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1505 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1506 | "dev": true, 1507 | "engines": { 1508 | "node": ">=8.6" 1509 | }, 1510 | "funding": { 1511 | "url": "https://github.com/sponsors/jonschlinkert" 1512 | } 1513 | }, 1514 | "node_modules/queue-microtask": { 1515 | "version": "1.2.3", 1516 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 1517 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 1518 | "dev": true, 1519 | "funding": [ 1520 | { 1521 | "type": "github", 1522 | "url": "https://github.com/sponsors/feross" 1523 | }, 1524 | { 1525 | "type": "patreon", 1526 | "url": "https://www.patreon.com/feross" 1527 | }, 1528 | { 1529 | "type": "consulting", 1530 | "url": "https://feross.org/support" 1531 | } 1532 | ] 1533 | }, 1534 | "node_modules/redis-errors": { 1535 | "version": "1.2.0", 1536 | "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", 1537 | "integrity": "sha1-62LSrbFeTq9GEMBK/hUpOEJQq60=", 1538 | "engines": { 1539 | "node": ">=4" 1540 | } 1541 | }, 1542 | "node_modules/redis-parser": { 1543 | "version": "3.0.0", 1544 | "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", 1545 | "integrity": "sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ=", 1546 | "dependencies": { 1547 | "redis-errors": "^1.0.0" 1548 | }, 1549 | "engines": { 1550 | "node": ">=4" 1551 | } 1552 | }, 1553 | "node_modules/redis-url-plus": { 1554 | "version": "1.1.0", 1555 | "resolved": "https://registry.npmjs.org/redis-url-plus/-/redis-url-plus-1.1.0.tgz", 1556 | "integrity": "sha512-YZJbW28Dv076ioutrsdTp3vZn9yHUklyP39r17XdVHhnlqo2KSfCaZIjqJ+VyaVWClPfjnvdnvdXODEqTh0wsA==" 1557 | }, 1558 | "node_modules/regenerator-runtime": { 1559 | "version": "0.10.5", 1560 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", 1561 | "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" 1562 | }, 1563 | "node_modules/restore-cursor": { 1564 | "version": "3.1.0", 1565 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", 1566 | "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", 1567 | "dependencies": { 1568 | "onetime": "^5.1.0", 1569 | "signal-exit": "^3.0.2" 1570 | }, 1571 | "engines": { 1572 | "node": ">=8" 1573 | } 1574 | }, 1575 | "node_modules/reusify": { 1576 | "version": "1.0.4", 1577 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 1578 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 1579 | "dev": true, 1580 | "engines": { 1581 | "iojs": ">=1.0.0", 1582 | "node": ">=0.10.0" 1583 | } 1584 | }, 1585 | "node_modules/rimraf": { 1586 | "version": "5.0.10", 1587 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", 1588 | "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", 1589 | "dependencies": { 1590 | "glob": "^10.3.7" 1591 | }, 1592 | "bin": { 1593 | "rimraf": "dist/esm/bin.mjs" 1594 | }, 1595 | "funding": { 1596 | "url": "https://github.com/sponsors/isaacs" 1597 | } 1598 | }, 1599 | "node_modules/run-async": { 1600 | "version": "2.4.1", 1601 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", 1602 | "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", 1603 | "engines": { 1604 | "node": ">=0.12.0" 1605 | } 1606 | }, 1607 | "node_modules/run-parallel": { 1608 | "version": "1.2.0", 1609 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 1610 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 1611 | "dev": true, 1612 | "funding": [ 1613 | { 1614 | "type": "github", 1615 | "url": "https://github.com/sponsors/feross" 1616 | }, 1617 | { 1618 | "type": "patreon", 1619 | "url": "https://www.patreon.com/feross" 1620 | }, 1621 | { 1622 | "type": "consulting", 1623 | "url": "https://feross.org/support" 1624 | } 1625 | ], 1626 | "dependencies": { 1627 | "queue-microtask": "^1.2.2" 1628 | } 1629 | }, 1630 | "node_modules/rxjs": { 1631 | "version": "6.6.7", 1632 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", 1633 | "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", 1634 | "dependencies": { 1635 | "tslib": "^1.9.0" 1636 | }, 1637 | "engines": { 1638 | "npm": ">=2.0.0" 1639 | } 1640 | }, 1641 | "node_modules/safer-buffer": { 1642 | "version": "2.1.2", 1643 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1644 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1645 | }, 1646 | "node_modules/semver": { 1647 | "version": "7.5.3", 1648 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", 1649 | "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", 1650 | "dependencies": { 1651 | "lru-cache": "^6.0.0" 1652 | }, 1653 | "bin": { 1654 | "semver": "bin/semver.js" 1655 | }, 1656 | "engines": { 1657 | "node": ">=10" 1658 | } 1659 | }, 1660 | "node_modules/semver/node_modules/lru-cache": { 1661 | "version": "6.0.0", 1662 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 1663 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1664 | "dependencies": { 1665 | "yallist": "^4.0.0" 1666 | }, 1667 | "engines": { 1668 | "node": ">=10" 1669 | } 1670 | }, 1671 | "node_modules/semver/node_modules/yallist": { 1672 | "version": "4.0.0", 1673 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 1674 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 1675 | }, 1676 | "node_modules/shebang-command": { 1677 | "version": "2.0.0", 1678 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1679 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1680 | "dependencies": { 1681 | "shebang-regex": "^3.0.0" 1682 | }, 1683 | "engines": { 1684 | "node": ">=8" 1685 | } 1686 | }, 1687 | "node_modules/shebang-regex": { 1688 | "version": "3.0.0", 1689 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1690 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1691 | "engines": { 1692 | "node": ">=8" 1693 | } 1694 | }, 1695 | "node_modules/signal-exit": { 1696 | "version": "3.0.7", 1697 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 1698 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" 1699 | }, 1700 | "node_modules/slide": { 1701 | "version": "1.1.6", 1702 | "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", 1703 | "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", 1704 | "engines": { 1705 | "node": "*" 1706 | } 1707 | }, 1708 | "node_modules/standard-as-callback": { 1709 | "version": "2.1.0", 1710 | "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", 1711 | "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==" 1712 | }, 1713 | "node_modules/string-width": { 1714 | "version": "4.2.3", 1715 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1716 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1717 | "dependencies": { 1718 | "emoji-regex": "^8.0.0", 1719 | "is-fullwidth-code-point": "^3.0.0", 1720 | "strip-ansi": "^6.0.1" 1721 | }, 1722 | "engines": { 1723 | "node": ">=8" 1724 | } 1725 | }, 1726 | "node_modules/string-width-cjs": { 1727 | "name": "string-width", 1728 | "version": "4.2.3", 1729 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1730 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1731 | "dependencies": { 1732 | "emoji-regex": "^8.0.0", 1733 | "is-fullwidth-code-point": "^3.0.0", 1734 | "strip-ansi": "^6.0.1" 1735 | }, 1736 | "engines": { 1737 | "node": ">=8" 1738 | } 1739 | }, 1740 | "node_modules/string-width-cjs/node_modules/ansi-regex": { 1741 | "version": "5.0.1", 1742 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1743 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 1744 | "engines": { 1745 | "node": ">=8" 1746 | } 1747 | }, 1748 | "node_modules/string-width-cjs/node_modules/strip-ansi": { 1749 | "version": "6.0.1", 1750 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1751 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1752 | "dependencies": { 1753 | "ansi-regex": "^5.0.1" 1754 | }, 1755 | "engines": { 1756 | "node": ">=8" 1757 | } 1758 | }, 1759 | "node_modules/string-width/node_modules/ansi-regex": { 1760 | "version": "5.0.1", 1761 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1762 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 1763 | "engines": { 1764 | "node": ">=8" 1765 | } 1766 | }, 1767 | "node_modules/string-width/node_modules/strip-ansi": { 1768 | "version": "6.0.1", 1769 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1770 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1771 | "dependencies": { 1772 | "ansi-regex": "^5.0.1" 1773 | }, 1774 | "engines": { 1775 | "node": ">=8" 1776 | } 1777 | }, 1778 | "node_modules/strip-ansi": { 1779 | "version": "5.2.0", 1780 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 1781 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 1782 | "dependencies": { 1783 | "ansi-regex": "^4.1.0" 1784 | }, 1785 | "engines": { 1786 | "node": ">=6" 1787 | } 1788 | }, 1789 | "node_modules/strip-ansi-cjs": { 1790 | "name": "strip-ansi", 1791 | "version": "6.0.1", 1792 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1793 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1794 | "dependencies": { 1795 | "ansi-regex": "^5.0.1" 1796 | }, 1797 | "engines": { 1798 | "node": ">=8" 1799 | } 1800 | }, 1801 | "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { 1802 | "version": "5.0.1", 1803 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1804 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 1805 | "engines": { 1806 | "node": ">=8" 1807 | } 1808 | }, 1809 | "node_modules/strip-final-newline": { 1810 | "version": "2.0.0", 1811 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", 1812 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", 1813 | "engines": { 1814 | "node": ">=6" 1815 | } 1816 | }, 1817 | "node_modules/supports-color": { 1818 | "version": "7.2.0", 1819 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1820 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1821 | "dependencies": { 1822 | "has-flag": "^4.0.0" 1823 | }, 1824 | "engines": { 1825 | "node": ">=8" 1826 | } 1827 | }, 1828 | "node_modules/tar": { 1829 | "version": "7.4.3", 1830 | "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", 1831 | "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", 1832 | "dependencies": { 1833 | "@isaacs/fs-minipass": "^4.0.0", 1834 | "chownr": "^3.0.0", 1835 | "minipass": "^7.1.2", 1836 | "minizlib": "^3.0.1", 1837 | "mkdirp": "^3.0.1", 1838 | "yallist": "^5.0.0" 1839 | }, 1840 | "engines": { 1841 | "node": ">=18" 1842 | } 1843 | }, 1844 | "node_modules/temp-dir": { 1845 | "version": "3.0.0", 1846 | "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", 1847 | "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", 1848 | "engines": { 1849 | "node": ">=14.16" 1850 | } 1851 | }, 1852 | "node_modules/tempy": { 1853 | "version": "3.1.0", 1854 | "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", 1855 | "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", 1856 | "dependencies": { 1857 | "is-stream": "^3.0.0", 1858 | "temp-dir": "^3.0.0", 1859 | "type-fest": "^2.12.2", 1860 | "unique-string": "^3.0.0" 1861 | }, 1862 | "engines": { 1863 | "node": ">=14.16" 1864 | }, 1865 | "funding": { 1866 | "url": "https://github.com/sponsors/sindresorhus" 1867 | } 1868 | }, 1869 | "node_modules/tempy/node_modules/type-fest": { 1870 | "version": "2.19.0", 1871 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", 1872 | "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", 1873 | "engines": { 1874 | "node": ">=12.20" 1875 | }, 1876 | "funding": { 1877 | "url": "https://github.com/sponsors/sindresorhus" 1878 | } 1879 | }, 1880 | "node_modules/through": { 1881 | "version": "2.3.8", 1882 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1883 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" 1884 | }, 1885 | "node_modules/tmp": { 1886 | "version": "0.0.33", 1887 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 1888 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 1889 | "dependencies": { 1890 | "os-tmpdir": "~1.0.2" 1891 | }, 1892 | "engines": { 1893 | "node": ">=0.6.0" 1894 | } 1895 | }, 1896 | "node_modules/to-regex-range": { 1897 | "version": "5.0.1", 1898 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1899 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1900 | "dev": true, 1901 | "dependencies": { 1902 | "is-number": "^7.0.0" 1903 | }, 1904 | "engines": { 1905 | "node": ">=8.0" 1906 | } 1907 | }, 1908 | "node_modules/ts-node": { 1909 | "version": "10.9.2", 1910 | "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", 1911 | "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", 1912 | "dev": true, 1913 | "dependencies": { 1914 | "@cspotcode/source-map-support": "^0.8.0", 1915 | "@tsconfig/node10": "^1.0.7", 1916 | "@tsconfig/node12": "^1.0.7", 1917 | "@tsconfig/node14": "^1.0.0", 1918 | "@tsconfig/node16": "^1.0.2", 1919 | "acorn": "^8.4.1", 1920 | "acorn-walk": "^8.1.1", 1921 | "arg": "^4.1.0", 1922 | "create-require": "^1.1.0", 1923 | "diff": "^4.0.1", 1924 | "make-error": "^1.1.1", 1925 | "v8-compile-cache-lib": "^3.0.1", 1926 | "yn": "3.1.1" 1927 | }, 1928 | "bin": { 1929 | "ts-node": "dist/bin.js", 1930 | "ts-node-cwd": "dist/bin-cwd.js", 1931 | "ts-node-esm": "dist/bin-esm.js", 1932 | "ts-node-script": "dist/bin-script.js", 1933 | "ts-node-transpile-only": "dist/bin-transpile.js", 1934 | "ts-script": "dist/bin-script-deprecated.js" 1935 | }, 1936 | "peerDependencies": { 1937 | "@swc/core": ">=1.2.50", 1938 | "@swc/wasm": ">=1.2.50", 1939 | "@types/node": "*", 1940 | "typescript": ">=2.7" 1941 | }, 1942 | "peerDependenciesMeta": { 1943 | "@swc/core": { 1944 | "optional": true 1945 | }, 1946 | "@swc/wasm": { 1947 | "optional": true 1948 | } 1949 | } 1950 | }, 1951 | "node_modules/tslib": { 1952 | "version": "1.14.1", 1953 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 1954 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 1955 | }, 1956 | "node_modules/tsutils": { 1957 | "version": "3.21.0", 1958 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", 1959 | "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", 1960 | "dev": true, 1961 | "dependencies": { 1962 | "tslib": "^1.8.1" 1963 | }, 1964 | "engines": { 1965 | "node": ">= 6" 1966 | }, 1967 | "peerDependencies": { 1968 | "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" 1969 | } 1970 | }, 1971 | "node_modules/type-coverage": { 1972 | "version": "2.27.1", 1973 | "resolved": "https://registry.npmjs.org/type-coverage/-/type-coverage-2.27.1.tgz", 1974 | "integrity": "sha512-KAL2BRRvEACnyh830WoazZ5YJTmFBHEk/mCrJlVxNqjbAPrusJN0c4u3IzRrFMq/yRKsVEvwMp/awQDF4RgLSQ==", 1975 | "dev": true, 1976 | "dependencies": { 1977 | "minimist": "1", 1978 | "type-coverage-core": "^2.27.1" 1979 | }, 1980 | "bin": { 1981 | "type-coverage": "bin/type-coverage" 1982 | } 1983 | }, 1984 | "node_modules/type-coverage-core": { 1985 | "version": "2.27.1", 1986 | "resolved": "https://registry.npmjs.org/type-coverage-core/-/type-coverage-core-2.27.1.tgz", 1987 | "integrity": "sha512-W+PMYbhUsq+UWkrb7UkmyO7zF3zt4qZuQukyDM6eaiCIkMJclcVmR3O02clDk4FKpKPbzHictOmoIu3fYp+53g==", 1988 | "dev": true, 1989 | "dependencies": { 1990 | "fast-glob": "3", 1991 | "minimatch": "6 || 7 || 8 || 9", 1992 | "normalize-path": "3", 1993 | "tslib": "1 || 2", 1994 | "tsutils": "3" 1995 | }, 1996 | "peerDependencies": { 1997 | "typescript": "2 || 3 || 4 || 5" 1998 | } 1999 | }, 2000 | "node_modules/type-fest": { 2001 | "version": "0.21.3", 2002 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", 2003 | "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", 2004 | "engines": { 2005 | "node": ">=10" 2006 | }, 2007 | "funding": { 2008 | "url": "https://github.com/sponsors/sindresorhus" 2009 | } 2010 | }, 2011 | "node_modules/typescript": { 2012 | "version": "5.3.3", 2013 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", 2014 | "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", 2015 | "dev": true, 2016 | "bin": { 2017 | "tsc": "bin/tsc", 2018 | "tsserver": "bin/tsserver" 2019 | }, 2020 | "engines": { 2021 | "node": ">=14.17" 2022 | } 2023 | }, 2024 | "node_modules/undici-types": { 2025 | "version": "5.26.5", 2026 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", 2027 | "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", 2028 | "dev": true 2029 | }, 2030 | "node_modules/unique-string": { 2031 | "version": "3.0.0", 2032 | "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", 2033 | "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", 2034 | "dependencies": { 2035 | "crypto-random-string": "^4.0.0" 2036 | }, 2037 | "engines": { 2038 | "node": ">=12" 2039 | }, 2040 | "funding": { 2041 | "url": "https://github.com/sponsors/sindresorhus" 2042 | } 2043 | }, 2044 | "node_modules/uuid": { 2045 | "version": "8.3.2", 2046 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", 2047 | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", 2048 | "bin": { 2049 | "uuid": "dist/bin/uuid" 2050 | } 2051 | }, 2052 | "node_modules/v8-compile-cache-lib": { 2053 | "version": "3.0.1", 2054 | "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", 2055 | "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", 2056 | "dev": true 2057 | }, 2058 | "node_modules/which": { 2059 | "version": "2.0.2", 2060 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2061 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2062 | "dependencies": { 2063 | "isexe": "^2.0.0" 2064 | }, 2065 | "bin": { 2066 | "node-which": "bin/node-which" 2067 | }, 2068 | "engines": { 2069 | "node": ">= 8" 2070 | } 2071 | }, 2072 | "node_modules/wrap-ansi": { 2073 | "version": "6.2.0", 2074 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", 2075 | "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", 2076 | "dependencies": { 2077 | "ansi-styles": "^4.0.0", 2078 | "string-width": "^4.1.0", 2079 | "strip-ansi": "^6.0.0" 2080 | }, 2081 | "engines": { 2082 | "node": ">=8" 2083 | } 2084 | }, 2085 | "node_modules/wrap-ansi-cjs": { 2086 | "name": "wrap-ansi", 2087 | "version": "7.0.0", 2088 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 2089 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 2090 | "dependencies": { 2091 | "ansi-styles": "^4.0.0", 2092 | "string-width": "^4.1.0", 2093 | "strip-ansi": "^6.0.0" 2094 | }, 2095 | "engines": { 2096 | "node": ">=10" 2097 | }, 2098 | "funding": { 2099 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 2100 | } 2101 | }, 2102 | "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { 2103 | "version": "5.0.1", 2104 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 2105 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 2106 | "engines": { 2107 | "node": ">=8" 2108 | } 2109 | }, 2110 | "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { 2111 | "version": "6.0.1", 2112 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2113 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2114 | "dependencies": { 2115 | "ansi-regex": "^5.0.1" 2116 | }, 2117 | "engines": { 2118 | "node": ">=8" 2119 | } 2120 | }, 2121 | "node_modules/wrap-ansi/node_modules/ansi-regex": { 2122 | "version": "5.0.1", 2123 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 2124 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 2125 | "engines": { 2126 | "node": ">=8" 2127 | } 2128 | }, 2129 | "node_modules/wrap-ansi/node_modules/strip-ansi": { 2130 | "version": "6.0.1", 2131 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2132 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2133 | "dependencies": { 2134 | "ansi-regex": "^5.0.1" 2135 | }, 2136 | "engines": { 2137 | "node": ">=8" 2138 | } 2139 | }, 2140 | "node_modules/write-file-atomic": { 2141 | "version": "1.3.4", 2142 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", 2143 | "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", 2144 | "dependencies": { 2145 | "graceful-fs": "^4.1.11", 2146 | "imurmurhash": "^0.1.4", 2147 | "slide": "^1.1.5" 2148 | } 2149 | }, 2150 | "node_modules/yallist": { 2151 | "version": "5.0.0", 2152 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", 2153 | "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", 2154 | "engines": { 2155 | "node": ">=18" 2156 | } 2157 | }, 2158 | "node_modules/yn": { 2159 | "version": "3.1.1", 2160 | "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", 2161 | "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", 2162 | "dev": true, 2163 | "engines": { 2164 | "node": ">=6" 2165 | } 2166 | }, 2167 | "node_modules/zod": { 2168 | "version": "3.23.8", 2169 | "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", 2170 | "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", 2171 | "funding": { 2172 | "url": "https://github.com/sponsors/colinhacks" 2173 | } 2174 | } 2175 | }, 2176 | "dependencies": { 2177 | "@cspotcode/source-map-support": { 2178 | "version": "0.8.1", 2179 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", 2180 | "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", 2181 | "dev": true, 2182 | "requires": { 2183 | "@jridgewell/trace-mapping": "0.3.9" 2184 | } 2185 | }, 2186 | "@ioredis/commands": { 2187 | "version": "1.2.0", 2188 | "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz", 2189 | "integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==" 2190 | }, 2191 | "@isaacs/cliui": { 2192 | "version": "8.0.2", 2193 | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", 2194 | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", 2195 | "requires": { 2196 | "string-width": "^5.1.2", 2197 | "string-width-cjs": "npm:string-width@^4.2.0", 2198 | "strip-ansi": "^7.0.1", 2199 | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", 2200 | "wrap-ansi": "^8.1.0", 2201 | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" 2202 | }, 2203 | "dependencies": { 2204 | "ansi-regex": { 2205 | "version": "6.1.0", 2206 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", 2207 | "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==" 2208 | }, 2209 | "ansi-styles": { 2210 | "version": "6.2.1", 2211 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 2212 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" 2213 | }, 2214 | "emoji-regex": { 2215 | "version": "9.2.2", 2216 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 2217 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" 2218 | }, 2219 | "string-width": { 2220 | "version": "5.1.2", 2221 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 2222 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 2223 | "requires": { 2224 | "eastasianwidth": "^0.2.0", 2225 | "emoji-regex": "^9.2.2", 2226 | "strip-ansi": "^7.0.1" 2227 | } 2228 | }, 2229 | "strip-ansi": { 2230 | "version": "7.1.0", 2231 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 2232 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 2233 | "requires": { 2234 | "ansi-regex": "^6.0.1" 2235 | } 2236 | }, 2237 | "wrap-ansi": { 2238 | "version": "8.1.0", 2239 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", 2240 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", 2241 | "requires": { 2242 | "ansi-styles": "^6.1.0", 2243 | "string-width": "^5.0.1", 2244 | "strip-ansi": "^7.0.1" 2245 | } 2246 | } 2247 | } 2248 | }, 2249 | "@isaacs/fs-minipass": { 2250 | "version": "4.0.1", 2251 | "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", 2252 | "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", 2253 | "requires": { 2254 | "minipass": "^7.0.4" 2255 | } 2256 | }, 2257 | "@jridgewell/resolve-uri": { 2258 | "version": "3.1.0", 2259 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 2260 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", 2261 | "dev": true 2262 | }, 2263 | "@jridgewell/sourcemap-codec": { 2264 | "version": "1.4.14", 2265 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 2266 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 2267 | "dev": true 2268 | }, 2269 | "@jridgewell/trace-mapping": { 2270 | "version": "0.3.9", 2271 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", 2272 | "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", 2273 | "dev": true, 2274 | "requires": { 2275 | "@jridgewell/resolve-uri": "^3.0.3", 2276 | "@jridgewell/sourcemap-codec": "^1.4.10" 2277 | } 2278 | }, 2279 | "@moleculer/vorpal": { 2280 | "version": "1.11.5", 2281 | "resolved": "https://registry.npmjs.org/@moleculer/vorpal/-/vorpal-1.11.5.tgz", 2282 | "integrity": "sha512-E1lm/o7Wi5WgbXU3YwRv175fXgvExB1ZzIRAGemV8NH2j7D1hAaYUREfhdA7ut3sMe3VBqfTMNaOKoBO44BxFA==", 2283 | "requires": { 2284 | "babel-polyfill": "^6.3.14", 2285 | "chalk": "^2.4.2", 2286 | "in-publish": "^2.0.0", 2287 | "inquirer": "7.0.0", 2288 | "json-stringify-safe": "^5.0.1", 2289 | "lodash": "^4.17.15", 2290 | "log-update": "^3.3.0", 2291 | "minimist": "^1.2.0", 2292 | "node-localstorage": "^1.3.1", 2293 | "strip-ansi": "^5.2.0", 2294 | "wrap-ansi": "^6.0.0" 2295 | }, 2296 | "dependencies": { 2297 | "ansi-styles": { 2298 | "version": "3.2.1", 2299 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 2300 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 2301 | "requires": { 2302 | "color-convert": "^1.9.0" 2303 | } 2304 | }, 2305 | "chalk": { 2306 | "version": "2.4.2", 2307 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 2308 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 2309 | "requires": { 2310 | "ansi-styles": "^3.2.1", 2311 | "escape-string-regexp": "^1.0.5", 2312 | "supports-color": "^5.3.0" 2313 | } 2314 | }, 2315 | "color-convert": { 2316 | "version": "1.9.3", 2317 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 2318 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 2319 | "requires": { 2320 | "color-name": "1.1.3" 2321 | } 2322 | }, 2323 | "color-name": { 2324 | "version": "1.1.3", 2325 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 2326 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 2327 | }, 2328 | "has-flag": { 2329 | "version": "3.0.0", 2330 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 2331 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" 2332 | }, 2333 | "supports-color": { 2334 | "version": "5.5.0", 2335 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2336 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2337 | "requires": { 2338 | "has-flag": "^3.0.0" 2339 | } 2340 | } 2341 | } 2342 | }, 2343 | "@msgpackr-extract/msgpackr-extract-darwin-arm64": { 2344 | "version": "3.0.2", 2345 | "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz", 2346 | "integrity": "sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==", 2347 | "optional": true 2348 | }, 2349 | "@msgpackr-extract/msgpackr-extract-darwin-x64": { 2350 | "version": "3.0.2", 2351 | "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz", 2352 | "integrity": "sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==", 2353 | "optional": true 2354 | }, 2355 | "@msgpackr-extract/msgpackr-extract-linux-arm": { 2356 | "version": "3.0.2", 2357 | "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz", 2358 | "integrity": "sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==", 2359 | "optional": true 2360 | }, 2361 | "@msgpackr-extract/msgpackr-extract-linux-arm64": { 2362 | "version": "3.0.2", 2363 | "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz", 2364 | "integrity": "sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==", 2365 | "optional": true 2366 | }, 2367 | "@msgpackr-extract/msgpackr-extract-linux-x64": { 2368 | "version": "3.0.2", 2369 | "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz", 2370 | "integrity": "sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==", 2371 | "optional": true 2372 | }, 2373 | "@msgpackr-extract/msgpackr-extract-win32-x64": { 2374 | "version": "3.0.2", 2375 | "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz", 2376 | "integrity": "sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==", 2377 | "optional": true 2378 | }, 2379 | "@nodelib/fs.scandir": { 2380 | "version": "2.1.5", 2381 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 2382 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 2383 | "dev": true, 2384 | "requires": { 2385 | "@nodelib/fs.stat": "2.0.5", 2386 | "run-parallel": "^1.1.9" 2387 | } 2388 | }, 2389 | "@nodelib/fs.stat": { 2390 | "version": "2.0.5", 2391 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 2392 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 2393 | "dev": true 2394 | }, 2395 | "@nodelib/fs.walk": { 2396 | "version": "1.2.8", 2397 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 2398 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 2399 | "dev": true, 2400 | "requires": { 2401 | "@nodelib/fs.scandir": "2.1.5", 2402 | "fastq": "^1.6.0" 2403 | } 2404 | }, 2405 | "@pkgjs/parseargs": { 2406 | "version": "0.11.0", 2407 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", 2408 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", 2409 | "optional": true 2410 | }, 2411 | "@tsconfig/node10": { 2412 | "version": "1.0.8", 2413 | "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", 2414 | "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", 2415 | "dev": true 2416 | }, 2417 | "@tsconfig/node12": { 2418 | "version": "1.0.9", 2419 | "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", 2420 | "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", 2421 | "dev": true 2422 | }, 2423 | "@tsconfig/node14": { 2424 | "version": "1.0.1", 2425 | "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", 2426 | "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", 2427 | "dev": true 2428 | }, 2429 | "@tsconfig/node16": { 2430 | "version": "1.0.2", 2431 | "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", 2432 | "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", 2433 | "dev": true 2434 | }, 2435 | "@types/ms": { 2436 | "version": "0.7.34", 2437 | "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", 2438 | "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", 2439 | "dev": true 2440 | }, 2441 | "@types/node": { 2442 | "version": "20.11.19", 2443 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.19.tgz", 2444 | "integrity": "sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==", 2445 | "dev": true, 2446 | "requires": { 2447 | "undici-types": "~5.26.4" 2448 | } 2449 | }, 2450 | "@types/vorpal": { 2451 | "version": "1.12.6", 2452 | "resolved": "https://registry.npmjs.org/@types/vorpal/-/vorpal-1.12.6.tgz", 2453 | "integrity": "sha512-EXg8BFaujgMBLAgYane2dgSnOwgqLP5VgChrLUfG0RPdFQG2BWtzyR1M0NVKEvNWaD7zJS8UFqu/RVfMbOp9hA==", 2454 | "dev": true 2455 | }, 2456 | "acorn": { 2457 | "version": "8.7.0", 2458 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", 2459 | "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", 2460 | "dev": true 2461 | }, 2462 | "acorn-walk": { 2463 | "version": "8.2.0", 2464 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", 2465 | "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", 2466 | "dev": true 2467 | }, 2468 | "ansi-escapes": { 2469 | "version": "4.3.2", 2470 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", 2471 | "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", 2472 | "requires": { 2473 | "type-fest": "^0.21.3" 2474 | } 2475 | }, 2476 | "ansi-regex": { 2477 | "version": "4.1.1", 2478 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", 2479 | "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" 2480 | }, 2481 | "ansi-styles": { 2482 | "version": "4.3.0", 2483 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 2484 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 2485 | "requires": { 2486 | "color-convert": "^2.0.1" 2487 | } 2488 | }, 2489 | "arg": { 2490 | "version": "4.1.3", 2491 | "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", 2492 | "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", 2493 | "dev": true 2494 | }, 2495 | "babel-polyfill": { 2496 | "version": "6.26.0", 2497 | "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", 2498 | "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", 2499 | "requires": { 2500 | "babel-runtime": "^6.26.0", 2501 | "core-js": "^2.5.0", 2502 | "regenerator-runtime": "^0.10.5" 2503 | } 2504 | }, 2505 | "babel-runtime": { 2506 | "version": "6.26.0", 2507 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", 2508 | "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", 2509 | "requires": { 2510 | "core-js": "^2.4.0", 2511 | "regenerator-runtime": "^0.11.0" 2512 | }, 2513 | "dependencies": { 2514 | "regenerator-runtime": { 2515 | "version": "0.11.1", 2516 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", 2517 | "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" 2518 | } 2519 | } 2520 | }, 2521 | "balanced-match": { 2522 | "version": "1.0.2", 2523 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 2524 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 2525 | }, 2526 | "brace-expansion": { 2527 | "version": "2.0.1", 2528 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 2529 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 2530 | "requires": { 2531 | "balanced-match": "^1.0.0" 2532 | } 2533 | }, 2534 | "braces": { 2535 | "version": "3.0.3", 2536 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 2537 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 2538 | "dev": true, 2539 | "requires": { 2540 | "fill-range": "^7.1.1" 2541 | } 2542 | }, 2543 | "bull": { 2544 | "version": "4.12.2", 2545 | "resolved": "https://registry.npmjs.org/bull/-/bull-4.12.2.tgz", 2546 | "integrity": "sha512-WPuc0VCYx+cIVMiZtPwRpWyyJFBrj4/OgKJ6n9Jf4tIw7rQNV+HAKQv15UDkcTvfpGFehvod7Fd1YztbYSJIDQ==", 2547 | "requires": { 2548 | "cron-parser": "^4.2.1", 2549 | "get-port": "^5.1.1", 2550 | "ioredis": "^5.3.2", 2551 | "lodash": "^4.17.21", 2552 | "msgpackr": "^1.10.1", 2553 | "semver": "^7.5.2", 2554 | "uuid": "^8.3.0" 2555 | } 2556 | }, 2557 | "chalk": { 2558 | "version": "4.1.2", 2559 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 2560 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 2561 | "requires": { 2562 | "ansi-styles": "^4.1.0", 2563 | "supports-color": "^7.1.0" 2564 | } 2565 | }, 2566 | "chardet": { 2567 | "version": "0.7.0", 2568 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", 2569 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" 2570 | }, 2571 | "chownr": { 2572 | "version": "3.0.0", 2573 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", 2574 | "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==" 2575 | }, 2576 | "cli-cursor": { 2577 | "version": "3.1.0", 2578 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", 2579 | "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", 2580 | "requires": { 2581 | "restore-cursor": "^3.1.0" 2582 | } 2583 | }, 2584 | "cli-width": { 2585 | "version": "2.2.1", 2586 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", 2587 | "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" 2588 | }, 2589 | "cluster-key-slot": { 2590 | "version": "1.1.0", 2591 | "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz", 2592 | "integrity": "sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw==" 2593 | }, 2594 | "color-convert": { 2595 | "version": "2.0.1", 2596 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2597 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2598 | "requires": { 2599 | "color-name": "~1.1.4" 2600 | } 2601 | }, 2602 | "color-name": { 2603 | "version": "1.1.4", 2604 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2605 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 2606 | }, 2607 | "core-js": { 2608 | "version": "2.6.12", 2609 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", 2610 | "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" 2611 | }, 2612 | "create-require": { 2613 | "version": "1.1.1", 2614 | "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", 2615 | "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", 2616 | "dev": true 2617 | }, 2618 | "cron-parser": { 2619 | "version": "4.7.0", 2620 | "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.7.0.tgz", 2621 | "integrity": "sha512-BdAELR+MCT2ZWsIBhZKDuUqIUCBjHHulPJnm53OfdRLA4EWBjva3R+KM5NeidJuGsNXdEcZkjC7SCnkW5rAFSA==", 2622 | "requires": { 2623 | "luxon": "^3.1.0" 2624 | } 2625 | }, 2626 | "cross-spawn": { 2627 | "version": "7.0.5", 2628 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz", 2629 | "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==", 2630 | "requires": { 2631 | "path-key": "^3.1.0", 2632 | "shebang-command": "^2.0.0", 2633 | "which": "^2.0.1" 2634 | } 2635 | }, 2636 | "crypto-random-string": { 2637 | "version": "4.0.0", 2638 | "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", 2639 | "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", 2640 | "requires": { 2641 | "type-fest": "^1.0.1" 2642 | }, 2643 | "dependencies": { 2644 | "type-fest": { 2645 | "version": "1.4.0", 2646 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", 2647 | "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==" 2648 | } 2649 | } 2650 | }, 2651 | "debug": { 2652 | "version": "4.3.4", 2653 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 2654 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 2655 | "requires": { 2656 | "ms": "2.1.2" 2657 | }, 2658 | "dependencies": { 2659 | "ms": { 2660 | "version": "2.1.2", 2661 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2662 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 2663 | } 2664 | } 2665 | }, 2666 | "denque": { 2667 | "version": "2.1.0", 2668 | "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", 2669 | "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==" 2670 | }, 2671 | "diff": { 2672 | "version": "4.0.2", 2673 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 2674 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", 2675 | "dev": true 2676 | }, 2677 | "eastasianwidth": { 2678 | "version": "0.2.0", 2679 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 2680 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" 2681 | }, 2682 | "emoji-regex": { 2683 | "version": "8.0.0", 2684 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 2685 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 2686 | }, 2687 | "escape-string-regexp": { 2688 | "version": "1.0.5", 2689 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 2690 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 2691 | }, 2692 | "external-editor": { 2693 | "version": "3.1.0", 2694 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", 2695 | "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", 2696 | "requires": { 2697 | "chardet": "^0.7.0", 2698 | "iconv-lite": "^0.4.24", 2699 | "tmp": "^0.0.33" 2700 | } 2701 | }, 2702 | "fast-glob": { 2703 | "version": "3.3.2", 2704 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", 2705 | "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", 2706 | "dev": true, 2707 | "requires": { 2708 | "@nodelib/fs.stat": "^2.0.2", 2709 | "@nodelib/fs.walk": "^1.2.3", 2710 | "glob-parent": "^5.1.2", 2711 | "merge2": "^1.3.0", 2712 | "micromatch": "^4.0.4" 2713 | } 2714 | }, 2715 | "fastq": { 2716 | "version": "1.17.1", 2717 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", 2718 | "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", 2719 | "dev": true, 2720 | "requires": { 2721 | "reusify": "^1.0.4" 2722 | } 2723 | }, 2724 | "figures": { 2725 | "version": "3.2.0", 2726 | "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", 2727 | "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", 2728 | "requires": { 2729 | "escape-string-regexp": "^1.0.5" 2730 | } 2731 | }, 2732 | "fill-range": { 2733 | "version": "7.1.1", 2734 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 2735 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 2736 | "dev": true, 2737 | "requires": { 2738 | "to-regex-range": "^5.0.1" 2739 | } 2740 | }, 2741 | "foreground-child": { 2742 | "version": "3.3.0", 2743 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", 2744 | "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", 2745 | "requires": { 2746 | "cross-spawn": "^7.0.0", 2747 | "signal-exit": "^4.0.1" 2748 | }, 2749 | "dependencies": { 2750 | "signal-exit": { 2751 | "version": "4.1.0", 2752 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", 2753 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" 2754 | } 2755 | } 2756 | }, 2757 | "get-port": { 2758 | "version": "5.1.1", 2759 | "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", 2760 | "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==" 2761 | }, 2762 | "glob": { 2763 | "version": "10.4.5", 2764 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", 2765 | "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", 2766 | "requires": { 2767 | "foreground-child": "^3.1.0", 2768 | "jackspeak": "^3.1.2", 2769 | "minimatch": "^9.0.4", 2770 | "minipass": "^7.1.2", 2771 | "package-json-from-dist": "^1.0.0", 2772 | "path-scurry": "^1.11.1" 2773 | } 2774 | }, 2775 | "glob-parent": { 2776 | "version": "5.1.2", 2777 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 2778 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 2779 | "dev": true, 2780 | "requires": { 2781 | "is-glob": "^4.0.1" 2782 | }, 2783 | "dependencies": { 2784 | "is-extglob": { 2785 | "version": "2.1.1", 2786 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 2787 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 2788 | "dev": true 2789 | }, 2790 | "is-glob": { 2791 | "version": "4.0.3", 2792 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 2793 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 2794 | "dev": true, 2795 | "requires": { 2796 | "is-extglob": "^2.1.1" 2797 | } 2798 | } 2799 | } 2800 | }, 2801 | "graceful-fs": { 2802 | "version": "4.2.10", 2803 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", 2804 | "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" 2805 | }, 2806 | "has-flag": { 2807 | "version": "4.0.0", 2808 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 2809 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 2810 | }, 2811 | "iconv-lite": { 2812 | "version": "0.4.24", 2813 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 2814 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 2815 | "requires": { 2816 | "safer-buffer": ">= 2.1.2 < 3" 2817 | } 2818 | }, 2819 | "imurmurhash": { 2820 | "version": "0.1.4", 2821 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 2822 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" 2823 | }, 2824 | "in-publish": { 2825 | "version": "2.0.1", 2826 | "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", 2827 | "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==" 2828 | }, 2829 | "inquirer": { 2830 | "version": "7.0.0", 2831 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz", 2832 | "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==", 2833 | "requires": { 2834 | "ansi-escapes": "^4.2.1", 2835 | "chalk": "^2.4.2", 2836 | "cli-cursor": "^3.1.0", 2837 | "cli-width": "^2.0.0", 2838 | "external-editor": "^3.0.3", 2839 | "figures": "^3.0.0", 2840 | "lodash": "^4.17.15", 2841 | "mute-stream": "0.0.8", 2842 | "run-async": "^2.2.0", 2843 | "rxjs": "^6.4.0", 2844 | "string-width": "^4.1.0", 2845 | "strip-ansi": "^5.1.0", 2846 | "through": "^2.3.6" 2847 | }, 2848 | "dependencies": { 2849 | "ansi-styles": { 2850 | "version": "3.2.1", 2851 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 2852 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 2853 | "requires": { 2854 | "color-convert": "^1.9.0" 2855 | } 2856 | }, 2857 | "chalk": { 2858 | "version": "2.4.2", 2859 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 2860 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 2861 | "requires": { 2862 | "ansi-styles": "^3.2.1", 2863 | "escape-string-regexp": "^1.0.5", 2864 | "supports-color": "^5.3.0" 2865 | } 2866 | }, 2867 | "color-convert": { 2868 | "version": "1.9.3", 2869 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 2870 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 2871 | "requires": { 2872 | "color-name": "1.1.3" 2873 | } 2874 | }, 2875 | "color-name": { 2876 | "version": "1.1.3", 2877 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 2878 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 2879 | }, 2880 | "has-flag": { 2881 | "version": "3.0.0", 2882 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 2883 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" 2884 | }, 2885 | "supports-color": { 2886 | "version": "5.5.0", 2887 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2888 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2889 | "requires": { 2890 | "has-flag": "^3.0.0" 2891 | } 2892 | } 2893 | } 2894 | }, 2895 | "ioredis": { 2896 | "version": "5.3.2", 2897 | "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.3.2.tgz", 2898 | "integrity": "sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==", 2899 | "requires": { 2900 | "@ioredis/commands": "^1.1.1", 2901 | "cluster-key-slot": "^1.1.0", 2902 | "debug": "^4.3.4", 2903 | "denque": "^2.1.0", 2904 | "lodash.defaults": "^4.2.0", 2905 | "lodash.isarguments": "^3.1.0", 2906 | "redis-errors": "^1.2.0", 2907 | "redis-parser": "^3.0.0", 2908 | "standard-as-callback": "^2.1.0" 2909 | } 2910 | }, 2911 | "is-extglob": { 2912 | "version": "1.0.0", 2913 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 2914 | "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" 2915 | }, 2916 | "is-fullwidth-code-point": { 2917 | "version": "3.0.0", 2918 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 2919 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" 2920 | }, 2921 | "is-glob": { 2922 | "version": "2.0.1", 2923 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", 2924 | "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", 2925 | "requires": { 2926 | "is-extglob": "^1.0.0" 2927 | } 2928 | }, 2929 | "is-invalid-path": { 2930 | "version": "0.1.0", 2931 | "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz", 2932 | "integrity": "sha1-MHqFWzzxqTi0TqcNLGEQYFNxTzQ=", 2933 | "requires": { 2934 | "is-glob": "^2.0.0" 2935 | } 2936 | }, 2937 | "is-number": { 2938 | "version": "7.0.0", 2939 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 2940 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 2941 | "dev": true 2942 | }, 2943 | "is-stream": { 2944 | "version": "3.0.0", 2945 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", 2946 | "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==" 2947 | }, 2948 | "is-valid-path": { 2949 | "version": "0.1.1", 2950 | "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz", 2951 | "integrity": "sha1-EQ+f90w39mPh7HkV60UfLbk6yd8=", 2952 | "requires": { 2953 | "is-invalid-path": "^0.1.0" 2954 | } 2955 | }, 2956 | "isexe": { 2957 | "version": "2.0.0", 2958 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 2959 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" 2960 | }, 2961 | "jackspeak": { 2962 | "version": "3.4.3", 2963 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", 2964 | "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", 2965 | "requires": { 2966 | "@isaacs/cliui": "^8.0.2", 2967 | "@pkgjs/parseargs": "^0.11.0" 2968 | } 2969 | }, 2970 | "json-stringify-safe": { 2971 | "version": "5.0.1", 2972 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 2973 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" 2974 | }, 2975 | "lodash": { 2976 | "version": "4.17.21", 2977 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 2978 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 2979 | }, 2980 | "lodash.defaults": { 2981 | "version": "4.2.0", 2982 | "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", 2983 | "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" 2984 | }, 2985 | "lodash.isarguments": { 2986 | "version": "3.1.0", 2987 | "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", 2988 | "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" 2989 | }, 2990 | "log-update": { 2991 | "version": "3.4.0", 2992 | "resolved": "https://registry.npmjs.org/log-update/-/log-update-3.4.0.tgz", 2993 | "integrity": "sha512-ILKe88NeMt4gmDvk/eb615U/IVn7K9KWGkoYbdatQ69Z65nj1ZzjM6fHXfcs0Uge+e+EGnMW7DY4T9yko8vWFg==", 2994 | "requires": { 2995 | "ansi-escapes": "^3.2.0", 2996 | "cli-cursor": "^2.1.0", 2997 | "wrap-ansi": "^5.0.0" 2998 | }, 2999 | "dependencies": { 3000 | "ansi-escapes": { 3001 | "version": "3.2.0", 3002 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", 3003 | "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" 3004 | }, 3005 | "ansi-styles": { 3006 | "version": "3.2.1", 3007 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 3008 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 3009 | "requires": { 3010 | "color-convert": "^1.9.0" 3011 | } 3012 | }, 3013 | "cli-cursor": { 3014 | "version": "2.1.0", 3015 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", 3016 | "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", 3017 | "requires": { 3018 | "restore-cursor": "^2.0.0" 3019 | } 3020 | }, 3021 | "color-convert": { 3022 | "version": "1.9.3", 3023 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 3024 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 3025 | "requires": { 3026 | "color-name": "1.1.3" 3027 | } 3028 | }, 3029 | "color-name": { 3030 | "version": "1.1.3", 3031 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 3032 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 3033 | }, 3034 | "emoji-regex": { 3035 | "version": "7.0.3", 3036 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 3037 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" 3038 | }, 3039 | "is-fullwidth-code-point": { 3040 | "version": "2.0.0", 3041 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 3042 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" 3043 | }, 3044 | "mimic-fn": { 3045 | "version": "1.2.0", 3046 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", 3047 | "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" 3048 | }, 3049 | "onetime": { 3050 | "version": "2.0.1", 3051 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", 3052 | "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", 3053 | "requires": { 3054 | "mimic-fn": "^1.0.0" 3055 | } 3056 | }, 3057 | "restore-cursor": { 3058 | "version": "2.0.0", 3059 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", 3060 | "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", 3061 | "requires": { 3062 | "onetime": "^2.0.0", 3063 | "signal-exit": "^3.0.2" 3064 | } 3065 | }, 3066 | "string-width": { 3067 | "version": "3.1.0", 3068 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 3069 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 3070 | "requires": { 3071 | "emoji-regex": "^7.0.1", 3072 | "is-fullwidth-code-point": "^2.0.0", 3073 | "strip-ansi": "^5.1.0" 3074 | } 3075 | }, 3076 | "wrap-ansi": { 3077 | "version": "5.1.0", 3078 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", 3079 | "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", 3080 | "requires": { 3081 | "ansi-styles": "^3.2.0", 3082 | "string-width": "^3.0.0", 3083 | "strip-ansi": "^5.0.0" 3084 | } 3085 | } 3086 | } 3087 | }, 3088 | "lru-cache": { 3089 | "version": "10.4.3", 3090 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", 3091 | "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" 3092 | }, 3093 | "luxon": { 3094 | "version": "3.2.1", 3095 | "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.2.1.tgz", 3096 | "integrity": "sha512-QrwPArQCNLAKGO/C+ZIilgIuDnEnKx5QYODdDtbFaxzsbZcc/a7WFq7MhsVYgRlwawLtvOUESTlfJ+hc/USqPg==" 3097 | }, 3098 | "make-error": { 3099 | "version": "1.3.6", 3100 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", 3101 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", 3102 | "dev": true 3103 | }, 3104 | "merge2": { 3105 | "version": "1.4.1", 3106 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 3107 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 3108 | "dev": true 3109 | }, 3110 | "micromatch": { 3111 | "version": "4.0.5", 3112 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 3113 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 3114 | "dev": true, 3115 | "requires": { 3116 | "braces": "^3.0.2", 3117 | "picomatch": "^2.3.1" 3118 | } 3119 | }, 3120 | "mimic-fn": { 3121 | "version": "2.1.0", 3122 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 3123 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" 3124 | }, 3125 | "minimatch": { 3126 | "version": "9.0.5", 3127 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 3128 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 3129 | "requires": { 3130 | "brace-expansion": "^2.0.1" 3131 | } 3132 | }, 3133 | "minimist": { 3134 | "version": "1.2.6", 3135 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", 3136 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" 3137 | }, 3138 | "minipass": { 3139 | "version": "7.1.2", 3140 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", 3141 | "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==" 3142 | }, 3143 | "minizlib": { 3144 | "version": "3.0.1", 3145 | "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.1.tgz", 3146 | "integrity": "sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==", 3147 | "requires": { 3148 | "minipass": "^7.0.4", 3149 | "rimraf": "^5.0.5" 3150 | } 3151 | }, 3152 | "mkdirp": { 3153 | "version": "3.0.1", 3154 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", 3155 | "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==" 3156 | }, 3157 | "ms": { 3158 | "version": "2.1.3", 3159 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 3160 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 3161 | }, 3162 | "msgpackr": { 3163 | "version": "1.10.1", 3164 | "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.10.1.tgz", 3165 | "integrity": "sha512-r5VRLv9qouXuLiIBrLpl2d5ZvPt8svdQTl5/vMvE4nzDMyEX4sgW5yWhuBBj5UmgwOTWj8CIdSXn5sAfsHAWIQ==", 3166 | "requires": { 3167 | "msgpackr-extract": "^3.0.2" 3168 | } 3169 | }, 3170 | "msgpackr-extract": { 3171 | "version": "3.0.2", 3172 | "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz", 3173 | "integrity": "sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==", 3174 | "optional": true, 3175 | "requires": { 3176 | "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.2", 3177 | "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.2", 3178 | "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.2", 3179 | "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.2", 3180 | "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.2", 3181 | "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.2", 3182 | "node-gyp-build-optional-packages": "5.0.7" 3183 | } 3184 | }, 3185 | "mute-stream": { 3186 | "version": "0.0.8", 3187 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", 3188 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" 3189 | }, 3190 | "node-gyp-build-optional-packages": { 3191 | "version": "5.0.7", 3192 | "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz", 3193 | "integrity": "sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==", 3194 | "optional": true 3195 | }, 3196 | "node-jq": { 3197 | "version": "6.0.1", 3198 | "resolved": "https://registry.npmjs.org/node-jq/-/node-jq-6.0.1.tgz", 3199 | "integrity": "sha512-jt1H7i2c/BZUkid7O8uK4KWw5wDZgpsSHq8WAVv8SpedToUOpA6kAgoLnoAHmorAUGJTfICZlniKkMaEl28Uyw==", 3200 | "requires": { 3201 | "is-valid-path": "^0.1.1", 3202 | "strip-final-newline": "^2.0.0", 3203 | "tar": "^7.4.0", 3204 | "tempy": "^3.1.0", 3205 | "zod": "^3.23.8" 3206 | } 3207 | }, 3208 | "node-localstorage": { 3209 | "version": "1.3.1", 3210 | "resolved": "https://registry.npmjs.org/node-localstorage/-/node-localstorage-1.3.1.tgz", 3211 | "integrity": "sha512-NMWCSWWc6JbHT5PyWlNT2i8r7PgGYXVntmKawY83k/M0UJScZ5jirb61TLnqKwd815DfBQu+lR3sRw08SPzIaQ==", 3212 | "requires": { 3213 | "write-file-atomic": "^1.1.4" 3214 | } 3215 | }, 3216 | "normalize-path": { 3217 | "version": "3.0.0", 3218 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 3219 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 3220 | "dev": true 3221 | }, 3222 | "onetime": { 3223 | "version": "5.1.2", 3224 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 3225 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 3226 | "requires": { 3227 | "mimic-fn": "^2.1.0" 3228 | } 3229 | }, 3230 | "os-tmpdir": { 3231 | "version": "1.0.2", 3232 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 3233 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" 3234 | }, 3235 | "package-json-from-dist": { 3236 | "version": "1.0.1", 3237 | "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", 3238 | "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==" 3239 | }, 3240 | "path-key": { 3241 | "version": "3.1.1", 3242 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 3243 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" 3244 | }, 3245 | "path-scurry": { 3246 | "version": "1.11.1", 3247 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", 3248 | "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", 3249 | "requires": { 3250 | "lru-cache": "^10.2.0", 3251 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" 3252 | } 3253 | }, 3254 | "picomatch": { 3255 | "version": "2.3.1", 3256 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 3257 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 3258 | "dev": true 3259 | }, 3260 | "queue-microtask": { 3261 | "version": "1.2.3", 3262 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 3263 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 3264 | "dev": true 3265 | }, 3266 | "redis-errors": { 3267 | "version": "1.2.0", 3268 | "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", 3269 | "integrity": "sha1-62LSrbFeTq9GEMBK/hUpOEJQq60=" 3270 | }, 3271 | "redis-parser": { 3272 | "version": "3.0.0", 3273 | "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", 3274 | "integrity": "sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ=", 3275 | "requires": { 3276 | "redis-errors": "^1.0.0" 3277 | } 3278 | }, 3279 | "redis-url-plus": { 3280 | "version": "1.1.0", 3281 | "resolved": "https://registry.npmjs.org/redis-url-plus/-/redis-url-plus-1.1.0.tgz", 3282 | "integrity": "sha512-YZJbW28Dv076ioutrsdTp3vZn9yHUklyP39r17XdVHhnlqo2KSfCaZIjqJ+VyaVWClPfjnvdnvdXODEqTh0wsA==" 3283 | }, 3284 | "regenerator-runtime": { 3285 | "version": "0.10.5", 3286 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", 3287 | "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" 3288 | }, 3289 | "restore-cursor": { 3290 | "version": "3.1.0", 3291 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", 3292 | "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", 3293 | "requires": { 3294 | "onetime": "^5.1.0", 3295 | "signal-exit": "^3.0.2" 3296 | } 3297 | }, 3298 | "reusify": { 3299 | "version": "1.0.4", 3300 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 3301 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 3302 | "dev": true 3303 | }, 3304 | "rimraf": { 3305 | "version": "5.0.10", 3306 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", 3307 | "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", 3308 | "requires": { 3309 | "glob": "^10.3.7" 3310 | } 3311 | }, 3312 | "run-async": { 3313 | "version": "2.4.1", 3314 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", 3315 | "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" 3316 | }, 3317 | "run-parallel": { 3318 | "version": "1.2.0", 3319 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 3320 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 3321 | "dev": true, 3322 | "requires": { 3323 | "queue-microtask": "^1.2.2" 3324 | } 3325 | }, 3326 | "rxjs": { 3327 | "version": "6.6.7", 3328 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", 3329 | "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", 3330 | "requires": { 3331 | "tslib": "^1.9.0" 3332 | } 3333 | }, 3334 | "safer-buffer": { 3335 | "version": "2.1.2", 3336 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 3337 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 3338 | }, 3339 | "semver": { 3340 | "version": "7.5.3", 3341 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", 3342 | "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", 3343 | "requires": { 3344 | "lru-cache": "^6.0.0" 3345 | }, 3346 | "dependencies": { 3347 | "lru-cache": { 3348 | "version": "6.0.0", 3349 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 3350 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 3351 | "requires": { 3352 | "yallist": "^4.0.0" 3353 | } 3354 | }, 3355 | "yallist": { 3356 | "version": "4.0.0", 3357 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 3358 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 3359 | } 3360 | } 3361 | }, 3362 | "shebang-command": { 3363 | "version": "2.0.0", 3364 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 3365 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 3366 | "requires": { 3367 | "shebang-regex": "^3.0.0" 3368 | } 3369 | }, 3370 | "shebang-regex": { 3371 | "version": "3.0.0", 3372 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 3373 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" 3374 | }, 3375 | "signal-exit": { 3376 | "version": "3.0.7", 3377 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 3378 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" 3379 | }, 3380 | "slide": { 3381 | "version": "1.1.6", 3382 | "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", 3383 | "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=" 3384 | }, 3385 | "standard-as-callback": { 3386 | "version": "2.1.0", 3387 | "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", 3388 | "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==" 3389 | }, 3390 | "string-width": { 3391 | "version": "4.2.3", 3392 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 3393 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 3394 | "requires": { 3395 | "emoji-regex": "^8.0.0", 3396 | "is-fullwidth-code-point": "^3.0.0", 3397 | "strip-ansi": "^6.0.1" 3398 | }, 3399 | "dependencies": { 3400 | "ansi-regex": { 3401 | "version": "5.0.1", 3402 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 3403 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" 3404 | }, 3405 | "strip-ansi": { 3406 | "version": "6.0.1", 3407 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3408 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3409 | "requires": { 3410 | "ansi-regex": "^5.0.1" 3411 | } 3412 | } 3413 | } 3414 | }, 3415 | "string-width-cjs": { 3416 | "version": "npm:string-width@4.2.3", 3417 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 3418 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 3419 | "requires": { 3420 | "emoji-regex": "^8.0.0", 3421 | "is-fullwidth-code-point": "^3.0.0", 3422 | "strip-ansi": "^6.0.1" 3423 | }, 3424 | "dependencies": { 3425 | "ansi-regex": { 3426 | "version": "5.0.1", 3427 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 3428 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" 3429 | }, 3430 | "strip-ansi": { 3431 | "version": "6.0.1", 3432 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3433 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3434 | "requires": { 3435 | "ansi-regex": "^5.0.1" 3436 | } 3437 | } 3438 | } 3439 | }, 3440 | "strip-ansi": { 3441 | "version": "5.2.0", 3442 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 3443 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 3444 | "requires": { 3445 | "ansi-regex": "^4.1.0" 3446 | } 3447 | }, 3448 | "strip-ansi-cjs": { 3449 | "version": "npm:strip-ansi@6.0.1", 3450 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3451 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3452 | "requires": { 3453 | "ansi-regex": "^5.0.1" 3454 | }, 3455 | "dependencies": { 3456 | "ansi-regex": { 3457 | "version": "5.0.1", 3458 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 3459 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" 3460 | } 3461 | } 3462 | }, 3463 | "strip-final-newline": { 3464 | "version": "2.0.0", 3465 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", 3466 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" 3467 | }, 3468 | "supports-color": { 3469 | "version": "7.2.0", 3470 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 3471 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 3472 | "requires": { 3473 | "has-flag": "^4.0.0" 3474 | } 3475 | }, 3476 | "tar": { 3477 | "version": "7.4.3", 3478 | "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", 3479 | "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", 3480 | "requires": { 3481 | "@isaacs/fs-minipass": "^4.0.0", 3482 | "chownr": "^3.0.0", 3483 | "minipass": "^7.1.2", 3484 | "minizlib": "^3.0.1", 3485 | "mkdirp": "^3.0.1", 3486 | "yallist": "^5.0.0" 3487 | } 3488 | }, 3489 | "temp-dir": { 3490 | "version": "3.0.0", 3491 | "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", 3492 | "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==" 3493 | }, 3494 | "tempy": { 3495 | "version": "3.1.0", 3496 | "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", 3497 | "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", 3498 | "requires": { 3499 | "is-stream": "^3.0.0", 3500 | "temp-dir": "^3.0.0", 3501 | "type-fest": "^2.12.2", 3502 | "unique-string": "^3.0.0" 3503 | }, 3504 | "dependencies": { 3505 | "type-fest": { 3506 | "version": "2.19.0", 3507 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", 3508 | "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==" 3509 | } 3510 | } 3511 | }, 3512 | "through": { 3513 | "version": "2.3.8", 3514 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 3515 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" 3516 | }, 3517 | "tmp": { 3518 | "version": "0.0.33", 3519 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 3520 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 3521 | "requires": { 3522 | "os-tmpdir": "~1.0.2" 3523 | } 3524 | }, 3525 | "to-regex-range": { 3526 | "version": "5.0.1", 3527 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 3528 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 3529 | "dev": true, 3530 | "requires": { 3531 | "is-number": "^7.0.0" 3532 | } 3533 | }, 3534 | "ts-node": { 3535 | "version": "10.9.2", 3536 | "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", 3537 | "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", 3538 | "dev": true, 3539 | "requires": { 3540 | "@cspotcode/source-map-support": "^0.8.0", 3541 | "@tsconfig/node10": "^1.0.7", 3542 | "@tsconfig/node12": "^1.0.7", 3543 | "@tsconfig/node14": "^1.0.0", 3544 | "@tsconfig/node16": "^1.0.2", 3545 | "acorn": "^8.4.1", 3546 | "acorn-walk": "^8.1.1", 3547 | "arg": "^4.1.0", 3548 | "create-require": "^1.1.0", 3549 | "diff": "^4.0.1", 3550 | "make-error": "^1.1.1", 3551 | "v8-compile-cache-lib": "^3.0.1", 3552 | "yn": "3.1.1" 3553 | } 3554 | }, 3555 | "tslib": { 3556 | "version": "1.14.1", 3557 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 3558 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 3559 | }, 3560 | "tsutils": { 3561 | "version": "3.21.0", 3562 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", 3563 | "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", 3564 | "dev": true, 3565 | "requires": { 3566 | "tslib": "^1.8.1" 3567 | } 3568 | }, 3569 | "type-coverage": { 3570 | "version": "2.27.1", 3571 | "resolved": "https://registry.npmjs.org/type-coverage/-/type-coverage-2.27.1.tgz", 3572 | "integrity": "sha512-KAL2BRRvEACnyh830WoazZ5YJTmFBHEk/mCrJlVxNqjbAPrusJN0c4u3IzRrFMq/yRKsVEvwMp/awQDF4RgLSQ==", 3573 | "dev": true, 3574 | "requires": { 3575 | "minimist": "1", 3576 | "type-coverage-core": "^2.27.1" 3577 | } 3578 | }, 3579 | "type-coverage-core": { 3580 | "version": "2.27.1", 3581 | "resolved": "https://registry.npmjs.org/type-coverage-core/-/type-coverage-core-2.27.1.tgz", 3582 | "integrity": "sha512-W+PMYbhUsq+UWkrb7UkmyO7zF3zt4qZuQukyDM6eaiCIkMJclcVmR3O02clDk4FKpKPbzHictOmoIu3fYp+53g==", 3583 | "dev": true, 3584 | "requires": { 3585 | "fast-glob": "3", 3586 | "minimatch": "6 || 7 || 8 || 9", 3587 | "normalize-path": "3", 3588 | "tslib": "1 || 2", 3589 | "tsutils": "3" 3590 | } 3591 | }, 3592 | "type-fest": { 3593 | "version": "0.21.3", 3594 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", 3595 | "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" 3596 | }, 3597 | "typescript": { 3598 | "version": "5.3.3", 3599 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", 3600 | "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", 3601 | "dev": true 3602 | }, 3603 | "undici-types": { 3604 | "version": "5.26.5", 3605 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", 3606 | "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", 3607 | "dev": true 3608 | }, 3609 | "unique-string": { 3610 | "version": "3.0.0", 3611 | "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", 3612 | "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", 3613 | "requires": { 3614 | "crypto-random-string": "^4.0.0" 3615 | } 3616 | }, 3617 | "uuid": { 3618 | "version": "8.3.2", 3619 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", 3620 | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" 3621 | }, 3622 | "v8-compile-cache-lib": { 3623 | "version": "3.0.1", 3624 | "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", 3625 | "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", 3626 | "dev": true 3627 | }, 3628 | "which": { 3629 | "version": "2.0.2", 3630 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 3631 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 3632 | "requires": { 3633 | "isexe": "^2.0.0" 3634 | } 3635 | }, 3636 | "wrap-ansi": { 3637 | "version": "6.2.0", 3638 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", 3639 | "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", 3640 | "requires": { 3641 | "ansi-styles": "^4.0.0", 3642 | "string-width": "^4.1.0", 3643 | "strip-ansi": "^6.0.0" 3644 | }, 3645 | "dependencies": { 3646 | "ansi-regex": { 3647 | "version": "5.0.1", 3648 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 3649 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" 3650 | }, 3651 | "strip-ansi": { 3652 | "version": "6.0.1", 3653 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3654 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3655 | "requires": { 3656 | "ansi-regex": "^5.0.1" 3657 | } 3658 | } 3659 | } 3660 | }, 3661 | "wrap-ansi-cjs": { 3662 | "version": "npm:wrap-ansi@7.0.0", 3663 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 3664 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 3665 | "requires": { 3666 | "ansi-styles": "^4.0.0", 3667 | "string-width": "^4.1.0", 3668 | "strip-ansi": "^6.0.0" 3669 | }, 3670 | "dependencies": { 3671 | "ansi-regex": { 3672 | "version": "5.0.1", 3673 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 3674 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" 3675 | }, 3676 | "strip-ansi": { 3677 | "version": "6.0.1", 3678 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3679 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3680 | "requires": { 3681 | "ansi-regex": "^5.0.1" 3682 | } 3683 | } 3684 | } 3685 | }, 3686 | "write-file-atomic": { 3687 | "version": "1.3.4", 3688 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", 3689 | "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", 3690 | "requires": { 3691 | "graceful-fs": "^4.1.11", 3692 | "imurmurhash": "^0.1.4", 3693 | "slide": "^1.1.5" 3694 | } 3695 | }, 3696 | "yallist": { 3697 | "version": "5.0.0", 3698 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", 3699 | "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==" 3700 | }, 3701 | "yn": { 3702 | "version": "3.1.1", 3703 | "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", 3704 | "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", 3705 | "dev": true 3706 | }, 3707 | "zod": { 3708 | "version": "3.23.8", 3709 | "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", 3710 | "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==" 3711 | } 3712 | } 3713 | } 3714 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bull-repl", 3 | "version": "0.29.1", 4 | "description": "Bull / BullMQ queue command line REPL", 5 | "repository": { 6 | "type": "git", 7 | "url": "git://github.com/darky/bull-repl.git" 8 | }, 9 | "main": "index.js", 10 | "types": "index.d.ts", 11 | "bin": { 12 | "bull-repl": "./index.js" 13 | }, 14 | "files": [ 15 | "index.js", 16 | "index.d.ts", 17 | "src/*.js" 18 | ], 19 | "dependencies": { 20 | "@moleculer/vorpal": "^1.11.5", 21 | "bull": "^4.12.2", 22 | "chalk": "^4.1.0", 23 | "ms": "^2.1.3", 24 | "node-jq": "^6.0.1", 25 | "redis-url-plus": "^1.1.0" 26 | }, 27 | "devDependencies": { 28 | "@types/ms": "^0.7.34", 29 | "@types/node": "^20.11.19", 30 | "@types/vorpal": "^1.12.6", 31 | "ts-node": "^10.9.2", 32 | "type-coverage": "^2.27.1", 33 | "typescript": "^5.3.3" 34 | }, 35 | "scripts": { 36 | "build": "npx type-coverage --at-least 100 --ignore-catch; rm index.js; tsc --build tsconfig.json; gsed -i '1 i #!/usr/bin/env node' index.js; chmod +x index.js", 37 | "dev": "TS_NODE_TRANSPILE_ONLY=true TS_NODE_PREFER_TS_EXTS=true node --inspect -r ts-node/register index.ts", 38 | "test": "echo \"Error: no test specified\" && exit 1", 39 | "prepublishOnly": "npm run build" 40 | }, 41 | "keywords": [ 42 | "bull", 43 | "bullmq", 44 | "queue", 45 | "repl", 46 | "cli", 47 | "command line" 48 | ], 49 | "author": "Vladislav Botvin", 50 | "license": "MIT" 51 | } 52 | -------------------------------------------------------------------------------- /src/queue.ts: -------------------------------------------------------------------------------- 1 | import Queue, { Queue as TQueue, QueueOptions } from "bull"; 2 | import { throwYellow, logGreen, LAST_SAVED_CONNECTION_NAME, logBlue, logYellow } from "./utils"; 3 | import type { ConnectParams } from "./types"; 4 | import fs from "fs"; 5 | import type Vorpal from "@moleculer/vorpal"; 6 | import redisUrlPlus from "redis-url-plus"; 7 | 8 | let queue: TQueue | void; 9 | let listenEventsOn = false; 10 | 11 | export async function getQueue() { 12 | if (!queue) { 13 | return throwYellow("Need connect before"); 14 | } 15 | return await queue.isReady(); 16 | } 17 | 18 | export async function setQueue( 19 | name: string, 20 | url: string, 21 | options: QueueOptions 22 | ) { 23 | queue && (await queue.close()); 24 | queue = Queue(name, url, options); 25 | await queue.isReady(); 26 | } 27 | 28 | export async function connectToQueue( 29 | { queue: name, options }: ConnectParams, 30 | vorpal: Vorpal 31 | ) { 32 | const prefix = options.prefix || "bull"; 33 | const redisOptions = options.url ? redisUrlPlus(options.url) : { 34 | host: options.host || "localhost", 35 | port: options.port || 6379, 36 | db: options.db ?? 0, 37 | password: options.password || void 0, 38 | tls: options.cert 39 | ? { 40 | ca: fs.readFileSync(options.cert), 41 | rejectUnauthorized: false 42 | } 43 | : void 0, 44 | }; 45 | 46 | await setQueue(name, "", { 47 | prefix, 48 | redis: redisOptions 49 | }); 50 | ((vorpal.localStorage)).setItem( 51 | LAST_SAVED_CONNECTION_NAME, 52 | JSON.stringify({ 53 | queue: name, 54 | options 55 | } as ConnectParams) 56 | ); 57 | logGreen(`Connected to ${redisOptions.host}:${redisOptions.port}, prefix: ${prefix}, queue: ${name}`); 58 | vorpal.delimiter(`BULL-REPL | ${prefix}.${name}> `).show(); 59 | } 60 | 61 | export function listenQueueEvents(queue: TQueue) { 62 | if (listenEventsOn) { 63 | return; 64 | } 65 | queue.on('global:active', (jobId: unknown) => { 66 | logBlue(`A job with id ${jobId} has started`); 67 | }); 68 | queue.on('global:completed', (jobId: unknown, result: unknown) => { 69 | logBlue(`A job ${jobId} successfully completed with result: ${result}`); 70 | }); 71 | queue.on('global:drained', () => { 72 | logBlue('Queue has processed all the waiting jobs'); 73 | }); 74 | queue.on('global:failed', (jobId: unknown, err: unknown) => { 75 | logYellow(`A job ${jobId} failed with error ${err}`); 76 | }); 77 | queue.on('global:paused', () => { 78 | logBlue('The queue has been paused'); 79 | }); 80 | queue.on('global:progress', (jobId: unknown, progress: unknown) => { 81 | logBlue(`A job ${jobId} progress was updated to ${progress}`); 82 | }); 83 | queue.on('global:resumed', () => { 84 | logBlue('The queue has been resumed'); 85 | }); 86 | queue.on('global:stalled', (jobId: unknown) => { 87 | logYellow(`A job ${jobId} has been marked as stalled`); 88 | }); 89 | queue.on('global:waiting', (jobId: unknown) => { 90 | logBlue(`A job ${jobId} is waiting to be processed`); 91 | }); 92 | listenEventsOn = true; 93 | } 94 | 95 | export function unlistenQueueEvents(queue: TQueue) { 96 | queue.removeAllListeners('global:active'); 97 | queue.removeAllListeners('global:completed'); 98 | queue.removeAllListeners('global:drained'); 99 | queue.removeAllListeners('global:failed'); 100 | queue.removeAllListeners('global:paused'); 101 | queue.removeAllListeners('global:progress'); 102 | queue.removeAllListeners('global:resumed'); 103 | queue.removeAllListeners('global:stalled'); 104 | queue.removeAllListeners('global:waiting'); 105 | listenEventsOn = false; 106 | } 107 | -------------------------------------------------------------------------------- /src/types.ts: -------------------------------------------------------------------------------- 1 | import { CronRepeatOptions, RepeatOptions } from "bull"; 2 | 3 | export type JobAdditional = { 4 | failedReason: string; 5 | delay: number; 6 | _progress: number; 7 | data: object; 8 | returnvalue: object; 9 | }; 10 | 11 | export type Answer = { 12 | a: "y" | "n"; 13 | }; 14 | 15 | export type ConnectParams = { 16 | queue: string; 17 | options: { 18 | prefix?: string; 19 | host?: string; 20 | port?: number; 21 | db?: number; 22 | exec?: string; 23 | execFile?: string; 24 | url?: string; 25 | password?: string; 26 | cert?: string; 27 | }; 28 | }; 29 | 30 | export type ActiveParams = { 31 | options: { 32 | query?: string; 33 | timeAgo?: string; 34 | start?: number; 35 | end?: number; 36 | }; 37 | }; 38 | export type WaitingParams = ActiveParams; 39 | export type CompletedParams = ActiveParams; 40 | export type FailedParams = ActiveParams; 41 | export type DelayedParams = ActiveParams; 42 | 43 | export type GetParams = { 44 | jobId: string[]; 45 | options: { 46 | yes?: boolean; 47 | }; 48 | }; 49 | 50 | export type AddParams = { 51 | data: string; 52 | options: { 53 | name?: string; 54 | jobId?: string; 55 | priority?: string; 56 | delay?: string; 57 | attempts?: string; 58 | repeat?: CronRepeatOptions | RepeatOptions; 59 | lifo?: boolean; 60 | yes?: boolean; 61 | }; 62 | }; 63 | 64 | export type RmParams = GetParams; 65 | export type RetryParams = GetParams; 66 | 67 | export type RetryFailedParams = { 68 | options: { 69 | number?: number; 70 | yes?: boolean; 71 | } 72 | } 73 | 74 | export type PromoteParams = GetParams; 75 | 76 | export type FailParams = { 77 | jobId: string; 78 | reason: string; 79 | options: { 80 | yes?: boolean; 81 | } 82 | }; 83 | 84 | export type CompleteParams = { 85 | jobId: string; 86 | data: string; 87 | options: { 88 | yes?: boolean; 89 | }; 90 | }; 91 | 92 | export type CleanParams = { 93 | period: string; 94 | options: { 95 | status?: "completed" | "wait" | "active" | "delayed" | "failed"; 96 | limit?: number; 97 | yes?: boolean; 98 | }; 99 | }; 100 | 101 | export type LogsParams = { 102 | jobId: string; 103 | options: { 104 | start?: number; 105 | end?: number; 106 | }; 107 | }; 108 | 109 | export type LogParams = { 110 | jobId: string; 111 | data: string; 112 | options: { 113 | yes?: boolean; 114 | } 115 | }; 116 | 117 | export type YesParams = { 118 | options: { 119 | yes?: boolean; 120 | } 121 | } 122 | -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- 1 | import fs from 'fs'; 2 | import readline from 'readline'; 3 | import type { JobAdditional, Answer } from "./types"; 4 | import type { Job } from "bull"; 5 | import { run } from "node-jq"; 6 | import chalk from "chalk"; 7 | import ms from "ms"; 8 | import { getQueue } from "./queue"; 9 | import type Vorpal from "@moleculer/vorpal"; 10 | 11 | export const LAST_SAVED_CONNECTION_NAME = "_last-active"; 12 | 13 | export const getJob = async (jobId: string) => { 14 | const queue = await getQueue(); 15 | const job = await queue.getJob(jobId); 16 | if (!job) { 17 | return throwYellow(`Job "${jobId}" not found`); 18 | } 19 | return job; 20 | }; 21 | 22 | export const showJobs = async (arr: Array, query: string) => { 23 | const jobs = arr as Array; 24 | const root = jobs 25 | .filter(j => j) 26 | .map(job => ({ 27 | id: job.id, 28 | data: (job as JobAdditional).data, 29 | timestamp: Number.isNaN(job.timestamp) 30 | ? job.timestamp 31 | : new Date(job.timestamp), 32 | processedOn: job.processedOn && new Date(job.processedOn), 33 | finishedOn: job.finishedOn && new Date(job.finishedOn), 34 | name: job.name, 35 | failedReason: job.failedReason, 36 | stackTrace: job.stacktrace, 37 | returnValue: (job as JobAdditional).returnvalue, 38 | attemptsMade: job.attemptsMade, 39 | delay: job.delay, 40 | progress: job._progress 41 | })); 42 | const filteredData = query ? ((await run(query, {root}, {input: 'json', output: 'json'})) as unknown) : {root}; 43 | logArray((<{root?: unknown}>filteredData)?.root ?? filteredData); 44 | }; 45 | 46 | export const getTimeAgoFilter = (timeAgo?: string) => { 47 | return new Promise(resolve => { 48 | try { 49 | const msAgo = timeAgo && timeAgo.length ? ms(timeAgo) : void 0; 50 | const filter = msAgo ? `{root: [.root[] | select((.timestamp | split(".")[0] | strptime("%Y-%m-%dT%H:%M:%S") | mktime | . * 1000) >= ${Date.now() - msAgo})]}` : ''; 51 | resolve(filter); 52 | } catch (e) { 53 | throwYellow(`Error: Argument to --timeAgo is invalid: ${e}`); 54 | } 55 | }); 56 | }; 57 | 58 | export const logArray = (arr: unknown) => { 59 | console.dir(arr, { 60 | colors: true, 61 | depth: null, 62 | maxArrayLength: Infinity, 63 | }); 64 | Array.isArray(arr) && console.log(`count: ${chalk.yellow(arr.length)}`) 65 | }; 66 | 67 | export const jqLink = "https://stedolan.github.io/jq/manual/#Basicfilters"; 68 | export const msLink = "https://github.com/zeit/ms#examples"; 69 | 70 | export const answer = async (vorpal: Vorpal, question: string, forceYes?: boolean) => { 71 | if(forceYes){ 72 | logYellow(`Assuming yes for ${question}`); 73 | return; 74 | } 75 | const answer = (await vorpal.activeCommand.prompt({ 76 | name: "a", 77 | message: `${question}? (y/n): ` 78 | })) as Answer; 79 | if (answer.a !== "y") { 80 | throwYellow("You cancel action"); 81 | } 82 | }; 83 | 84 | export const logGreen = (msg: string) => { 85 | console.log(chalk.green(msg)); 86 | }; 87 | 88 | export const logYellow = (msg: string) => { 89 | console.log(chalk.yellow(msg)); 90 | }; 91 | 92 | export const logBlue = (msg: string) => { 93 | console.log(chalk.blueBright(msg)); 94 | }; 95 | 96 | export const throwYellow = (msg: string): never => { 97 | let err = new Error(); 98 | ((err as unknown) as { yellow: boolean }).yellow = true; 99 | err.stack = chalk.yellow(msg); 100 | throw err; 101 | }; 102 | 103 | export async function splitJobsByFound(jobIds: string[]) { 104 | const queue = await getQueue(); 105 | const jobs = await Promise.all(jobIds.map(id => queue.getJob(id))); 106 | let notFoundIds = [] as string[]; 107 | let foundJobs = [] as Job[]; 108 | let i = 0; 109 | for (const jobId of jobIds) { 110 | const job = jobs[i]; 111 | if (job) { 112 | foundJobs.push(job); 113 | } else { 114 | notFoundIds.push(jobId); 115 | } 116 | i++; 117 | } 118 | return { notFoundIds, foundJobs }; 119 | } 120 | 121 | export function readLines(file: string) { 122 | const fileStream = fs.createReadStream(file); 123 | 124 | const rl = readline.createInterface({ 125 | input: fileStream, 126 | crlfDelay: Infinity 127 | }); 128 | 129 | return rl; 130 | } 131 | 132 | export function wrapTryCatch(fn: Function) { 133 | return async function(this: unknown, args: unknown) { 134 | try { 135 | return await fn.call(this, args); 136 | } catch (e) { 137 | if ((e as {yellow: boolean}).yellow) { 138 | throw e; 139 | } 140 | return throwYellow((e as Error).message); 141 | } 142 | }; 143 | } 144 | 145 | export function wrapExecCommand(args: string[]) { 146 | const index = args.findIndex(item => { 147 | if (item === '-e' || item === '--exec') { 148 | return true; 149 | } 150 | }) 151 | 152 | if (index > 0) { 153 | args[index + 1] = '"' + args[index + 1] + '"'; 154 | } 155 | } 156 | 157 | export function getBootCommand() { 158 | const args = process.argv.slice(2); 159 | wrapExecCommand(args); 160 | return args.join(' '); 161 | } 162 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Basic Options */ 4 | "target": "es2019" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */, 5 | "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, 6 | // "lib": [], /* Specify library files to be included in the compilation. */ 7 | // "allowJs": true, /* Allow javascript files to be compiled. */ 8 | // "checkJs": true, /* Report errors in .js files. */ 9 | // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ 10 | "declaration": true /* Generates corresponding '.d.ts' file. */, 11 | // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ 12 | // "sourceMap": true, /* Generates corresponding '.map' file. */ 13 | // "outFile": "./", /* Concatenate and emit output to single file. */ 14 | // "outDir": "./", /* Redirect output structure to the directory. */ 15 | // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ 16 | // "composite": true, /* Enable project compilation */ 17 | // "removeComments": true, /* Do not emit comments to output. */ 18 | // "noEmit": true, /* Do not emit outputs. */ 19 | // "importHelpers": true, /* Import emit helpers from 'tslib'. */ 20 | // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ 21 | // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ 22 | /* Strict Type-Checking Options */ 23 | "strict": true /* Enable all strict type-checking options. */, 24 | // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ 25 | // "strictNullChecks": true, /* Enable strict null checks. */ 26 | // "strictFunctionTypes": true, /* Enable strict checking of function types. */ 27 | // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ 28 | // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ 29 | // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ 30 | // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ 31 | /* Additional Checks */ 32 | "noUnusedLocals": true /* Report errors on unused locals. */, 33 | "noUnusedParameters": true /* Report errors on unused parameters. */, 34 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ 35 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ 36 | /* Module Resolution Options */ 37 | "moduleResolution": "node" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */, 38 | // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ 39 | // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ 40 | // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ 41 | // "typeRoots": [], /* List of folders to include type definitions from. */ 42 | // "types": [], /* Type declaration files to be included in compilation. */ 43 | // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ 44 | "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ 45 | // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ 46 | /* Source Map Options */ 47 | // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ 48 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 49 | // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ 50 | // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ 51 | /* Experimental Options */ 52 | // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ 53 | // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /typing.d.ts: -------------------------------------------------------------------------------- 1 | declare module "@moleculer/vorpal" { 2 | import Vorpal from "vorpal"; 3 | export default Vorpal; 4 | } 5 | 6 | declare module 'redis-url-plus' { 7 | export default function redisUrlPlus(url: string): import('ioredis').RedisOptions; 8 | } --------------------------------------------------------------------------------