├── .gitignore
├── .prettierignore
├── LICENSE.md
├── README.md
├── bin
└── test.ts
├── commands
├── inspire_command.ts
├── scheduler_command.ts
└── scheduler_list_command.ts
├── configure.ts
├── example.png
├── index.ts
├── package.json
├── pnpm-lock.yaml
├── providers
└── scheduler_provider.ts
├── services
└── main.ts
├── src
├── decorator.ts
├── scheduler.ts
├── utils.ts
└── worker.ts
├── stubs
├── main.ts
└── start
│ └── scheduler.stub
├── tests
└── expression.spec.ts
└── tsconfig.json
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | coverage
3 | test/__app
4 | .DS_STORE
5 | .nyc_output
6 | .idea
7 | .vscode/
8 | *.sublime-project
9 | *.sublime-workspace
10 | *.log
11 | build
12 | dist
13 | shrinkwrap.yaml
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | build
2 | README.md
3 | docs
4 | *.md
5 | *.html
6 | config.json
7 | .eslintrc.json
8 | package.json
9 | *.txt
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | # The MIT License
2 |
3 | Copyright 2022 Georges KABBOUCHI, contributors
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6 |
7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8 |
9 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
10 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
AdonisJS Scheduler
3 |
4 |
Task scheduler for AdonisJS v6
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
24 |
25 | ## Installation
26 |
27 | Install the package from npm using the following command:
28 |
29 | ```bash
30 | node ace add adonisjs-scheduler
31 | ```
32 |
33 | ## Running The Scheduler
34 |
35 | ```sh
36 | node ace scheduler:run
37 | # or
38 | node ace scheduler:work
39 |
40 | # automatically restart the scheduler when files are modified during development mode
41 | node ace scheduler:run --watch
42 | ```
43 |
44 | ## Defining Schedules
45 |
46 | ```ts
47 | // start/scheduler.ts
48 |
49 | import scheduler from 'adonisjs-scheduler/services/main'
50 |
51 | import PurgeUsers from '../commands/purge_users'
52 |
53 | scheduler.command('inspire').everyFiveSeconds()
54 | scheduler.command(PurgeUsers, ['30 days']).everyFiveSeconds().withoutOverlapping()
55 |
56 | scheduler.withoutOverlapping(
57 | () => {
58 | scheduler.command('inspire').everySecond()
59 | scheduler.command(PurgeUsers, ['30 days']).everyFiveSeconds()
60 | },
61 | { expiresAt: 30_000 }
62 | )
63 |
64 | scheduler
65 | .call(() => {
66 | console.log('Pruge DB!')
67 | })
68 | .weekly()
69 | ```
70 |
71 | or define schedule directly on command
72 |
73 | ```ts
74 | import { BaseCommand, args } from '@adonisjs/core/ace'
75 | import { schedule } from 'adonisjs-scheduler'
76 |
77 | @schedule("* * * * *", ["30 days"])
78 | @schedule((s) => s.everyFiveSeconds().immediate(), ["7 days"])
79 | @schedule((s) => s.everyMinute(), ["42 days"])
80 | export default class PurgeUsers extends BaseCommand {
81 | static commandName = 'purge:users'
82 | static description = ''
83 |
84 | static options: CommandOptions = {}
85 |
86 | @args.string()
87 | declare olderThan: string
88 |
89 | async run() {
90 | //
91 | }
92 | }
93 | ```
94 |
95 |
96 | ## Schedule Frequency Options
97 |
98 | | Method | Description |
99 | | -------------------------------- | ------------------------------------------------------- |
100 | | `.cron('* * * * *');` | Run the task on a custom cron schedule |
101 | | `.everyMinute();` | Run the task every minute |
102 | | `.everyTwoMinutes();` | Run the task every two minutes |
103 | | `.everyThreeMinutes();` | Run the task every three minutes |
104 | | `.everyFourMinutes();` | Run the task every four minutes |
105 | | `.everyFiveMinutes();` | Run the task every five minutes |
106 | | `.everyTenMinutes();` | Run the task every ten minutes |
107 | | `.everyFifteenMinutes();` | Run the task every fifteen minutes |
108 | | `.everyThirtyMinutes();` | Run the task every thirty minutes |
109 | | `.hourly();` | Run the task every hour |
110 | | `.hourlyAt(17);` | Run the task every hour at 17 minutes past the hour. |
111 | | `.everyTwoHours();` | Run the task every two hours |
112 | | `.everyThreeHours();` | Run the task every three hours |
113 | | `.everyFourHours();` | Run the task every four hours |
114 | | `.everyFiveHours();` | Run the task every five hours |
115 | | `.everySixHours();` | Run the task every six hours |
116 | | `.daily();` | Run the task every day at midnight |
117 | | `.dailyAt('13:00');` | Run the task every day at 13:00. |
118 | | `.twiceDaily(1, 13);` | Run the task daily at 1:00 & 13:00. |
119 | | `.twiceDailyAt(1, 13, 15);` | Run the task daily at 1:15 & 13:15. |
120 | | `.weekly();` | Run the task every Sunday at 00:00 |
121 | | `.weeklyOn(1, '8:00');` | Run the task every week on Monday at 8:00. |
122 | | `.monthly();` | Run the task on the first day of every month at 00:00 |
123 | | `.monthlyOn(4, '15:00');` | Run the task every month on the 4th at 15:00. |
124 | | `.twiceMonthly(1, 16, '13:00');` | Run the task monthly on the 1st and 16th at 13:00. |
125 | | `.lastDayOfMonth('15:00');` | Run the task on the last day of the month at 15:00. |
126 | | `.quarterly();` | Run the task on the first day of every quarter at 00:00.|
127 | | `.quarterlyOn(4, '14:00');` | Run the task every quarter on the 4th at 14:00. |
128 | | `.yearly();` | Run the task on the first day of every year at 00:00. |
129 | | `.yearlyOn(6, 1, '17:00');` | Run the task every year on June 1st at 17:00. |
130 | | `.timezone('America/New_York');` | Set the timezone for the task. |
131 | | `.immediate();` | Run the task on startup |
132 | | `.withoutOverlapping();` | Run the task without overlapping |
133 |
134 |
135 | ## Alternative Ways to Run the Scheduler
136 |
137 | Besides using `node ace scheduler:run`, you can also manually initialize and control the scheduler worker in your code:
138 |
139 | ```ts
140 | import { Worker } from 'adonisjs-scheduler'
141 | import app from '@adonisjs/core/services/app'
142 |
143 | const worker = new Worker(app)
144 |
145 | app.terminating(async () => {
146 | await worker.stop()
147 | })
148 |
149 | await worker.start()
150 | ```
151 |
152 |
153 | Note: make sure to modify `adonisrc.ts` and include the environment where the worker is running.
154 |
155 | ```ts
156 | import { defineConfig } from '@adonisjs/core/app'
157 |
158 | export default defineConfig({
159 | providers: [
160 | {
161 | file: () => import('adonisjs-scheduler/scheduler_provider'),
162 | environment: ['console', 'web'], // <---
163 | },
164 |
165 | // or enable for all environments
166 | () => import('adonisjs-scheduler/scheduler_provider'),
167 | })
168 | ```
169 |
--------------------------------------------------------------------------------
/bin/test.ts:
--------------------------------------------------------------------------------
1 | import { assert } from '@japa/assert'
2 | import { configure, processCLIArgs, run } from '@japa/runner'
3 |
4 | processCLIArgs(process.argv.slice(2))
5 |
6 | configure({
7 | files: ['tests/**/*.spec.ts'],
8 | plugins: [assert()],
9 | })
10 |
11 | run()
12 |
--------------------------------------------------------------------------------
/commands/inspire_command.ts:
--------------------------------------------------------------------------------
1 | import { BaseCommand } from '@adonisjs/core/ace'
2 | import { CommandOptions } from '@adonisjs/core/types/ace'
3 |
4 | const quotes = [
5 | 'Act only according to that maxim whereby you can, at the same time, will that it should become a universal law. - Immanuel Kant',
6 | 'An unexamined life is not worth living. - Socrates',
7 | 'Be present above all else. - Naval Ravikant',
8 | 'Do what you can, with what you have, where you are. - Theodore Roosevelt',
9 | 'Happiness is not something readymade. It comes from your own actions. - Dalai Lama',
10 | 'He who is contented is rich. - Laozi',
11 | 'I begin to speak only when I am certain what I will say is not better left unsaid. - Cato the Younger',
12 | 'I have not failed. I\'ve just found 10,000 ways that won\'t work. - Thomas Edison',
13 | 'If you do not have a consistent goal in life, you can not live it in a consistent way. - Marcus Aurelius',
14 | 'It is never too late to be what you might have been. - George Eliot',
15 | 'It is not the man who has too little, but the man who craves more, that is poor. - Seneca',
16 | 'It is quality rather than quantity that matters. - Lucius Annaeus Seneca',
17 | 'Knowing is not enough; we must apply. Being willing is not enough; we must do. - Leonardo da Vinci',
18 | 'Let all your things have their places; let each part of your business have its time. - Benjamin Franklin',
19 | 'Live as if you were to die tomorrow. Learn as if you were to live forever. - Mahatma Gandhi',
20 | 'No surplus words or unnecessary actions. - Marcus Aurelius',
21 | 'Nothing worth having comes easy. - Theodore Roosevelt',
22 | 'Order your soul. Reduce your wants. - Augustine',
23 | 'People find pleasure in different ways. I find it in keeping my mind clear. - Marcus Aurelius',
24 | 'Simplicity is an acquired taste. - Katharine Gerould',
25 | 'Simplicity is the consequence of refined emotions. - Jean D\'Alembert',
26 | 'Simplicity is the essence of happiness. - Cedric Bledsoe',
27 | 'Simplicity is the ultimate sophistication. - Leonardo da Vinci',
28 | 'Smile, breathe, and go slowly. - Thich Nhat Hanh',
29 | 'The only way to do great work is to love what you do. - Steve Jobs',
30 | 'The whole future lies in uncertainty: live immediately. - Seneca',
31 | 'Very little is needed to make a happy life. - Marcus Aurelius',
32 | 'Waste no more time arguing what a good man should be, be one. - Marcus Aurelius',
33 | 'Well begun is half done. - Aristotle',
34 | 'When there is no desire, all things are at peace. - Laozi',
35 | 'Walk as if you are kissing the Earth with your feet. - Thich Nhat Hanh',
36 | 'Because you are alive, everything is possible. - Thich Nhat Hanh',
37 | 'Breathing in, I calm body and mind. Breathing out, I smile. - Thich Nhat Hanh',
38 | 'Life is available only in the present moment. - Thich Nhat Hanh',
39 | 'The best way to take care of the future is to take care of the present moment. - Thich Nhat Hanh',
40 | 'Nothing in life is to be feared, it is only to be understood. Now is the time to understand more, so that we may fear less. - Marie Curie',
41 | 'The biggest battle is the war against ignorance. - Mustafa Kemal Atatürk',
42 | 'Always remember that you are absolutely unique. Just like everyone else. - Margaret Mead',
43 | 'You must be the change you wish to see in the world. - Mahatma Gandhi',
44 | ];
45 |
46 | export default class InspireCommand extends BaseCommand {
47 | static commandName = 'inspire'
48 | static description = ''
49 |
50 | static options: CommandOptions = {
51 | startApp: true
52 | }
53 |
54 | public async run() {
55 | this.logger.info(quotes[Math.floor(Math.random() * quotes.length)]);
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/commands/scheduler_command.ts:
--------------------------------------------------------------------------------
1 | import { BaseCommand, flags } from '@adonisjs/core/ace'
2 | import { CommandOptions } from '@adonisjs/core/types/ace'
3 | import { ChildProcess, spawn } from 'child_process'
4 | import chokidar from 'chokidar'
5 | import { Worker } from '../src/worker.js'
6 |
7 | export default class SchedulerCommand extends BaseCommand {
8 | static commandName = 'scheduler:run'
9 | static description = ''
10 | static aliases: string[] = ['scheduler:work', 'schedule:work', 'schedule:run']
11 |
12 | static options: CommandOptions = {
13 | startApp: true,
14 | staysAlive: true,
15 | }
16 |
17 | @flags.boolean({ description: 'Restart the scheduler on file changes' })
18 | declare watch: boolean
19 |
20 | declare worker: Worker
21 |
22 | prepare() {
23 | this.app.terminating(async () => {
24 | if (this.worker) await this.worker.stop()
25 | })
26 | }
27 |
28 | public async run() {
29 | if (this.watch) {
30 | return await this.runAndWatch()
31 | }
32 |
33 | this.worker = new Worker(this.app)
34 | await this.worker.start()
35 | }
36 |
37 | public async runAndWatch() {
38 | const logger = await this.app.container.make('logger')
39 | let child: ChildProcess
40 |
41 | const startProcess = () => {
42 | if (child) child.kill()
43 | child = spawn('node', ['ace.js', 'scheduler:run'], { stdio: 'inherit' })
44 | }
45 |
46 | const watcher = chokidar.watch([this.app.appRoot.pathname], {
47 | //@ts-ignore
48 | ignored: (path, stats) => {
49 | if (path.includes('node_modules') || path.includes('.git') || path.includes('build')) {
50 | return true
51 | }
52 |
53 | return stats?.isFile() && !path.endsWith('.ts') && !path.endsWith('.js')
54 | },
55 | persistent: true,
56 | ignoreInitial: true,
57 | })
58 |
59 | let timeoutId: NodeJS.Timeout
60 |
61 | watcher.on('all', (event, path) => {
62 | if (typeof path === 'string') {
63 | logger.info(
64 | `File ${path.replace(this.app.appRoot.pathname, '')} changed (${event}), restarting...`
65 | )
66 | }
67 | clearTimeout(timeoutId)
68 | timeoutId = setTimeout(() => {
69 | startProcess()
70 | }, 300)
71 | })
72 |
73 | startProcess()
74 |
75 | this.app.terminating(async () => {
76 | if (child) child.kill()
77 | process.exit()
78 | })
79 | }
80 | }
81 |
--------------------------------------------------------------------------------
/commands/scheduler_list_command.ts:
--------------------------------------------------------------------------------
1 | import { BaseCommand, cliHelpers } from '@adonisjs/core/ace'
2 | import { CommandOptions } from '@adonisjs/core/types/ace'
3 | import { CronExpressionParser } from 'cron-parser'
4 | import { DateTime } from 'luxon'
5 | import stringWidth from 'string-width'
6 |
7 | export default class SchedulerCommand extends BaseCommand {
8 | static commandName = 'scheduler:list'
9 | static description = ''
10 |
11 | static options: CommandOptions = {
12 | startApp: true,
13 | }
14 |
15 | public async run() {
16 | const schedule = await this.app.container.make('scheduler')
17 | await schedule.boot()
18 |
19 | const items: any[] = []
20 | for (let index = 0; index < schedule.items.length; index++) {
21 | const command = schedule.items[index]
22 |
23 | const commandName =
24 | command.type === 'callback'
25 | ? `Closure #${index + 1}`
26 | : `node ace ${command.commandName}` +
27 | (command.commandArgs.length
28 | ? ` ${this.ui.colors.cyan(command.commandArgs.join(' '))}`
29 | : '')
30 |
31 | const cron = CronExpressionParser.parse(command.expression, {
32 | tz: command.config.timezone,
33 | })
34 |
35 | const nextDueDate = DateTime.fromJSDate(cron.next().toDate()).toRelative()
36 |
37 | items.push({
38 | expression: ` ${this.ui.colors.yellow(command.expression)} `,
39 | commandName: ` ${commandName} `,
40 | nextDueDate: this.ui.colors.dim(` Next Due: ${nextDueDate}`),
41 | })
42 | }
43 |
44 | const expressions = items.map((item) => item.expression)
45 | const largestExpressionLength = Math.max(...expressions.map((e) => stringWidth(e)))
46 | const formattedExpressions = cliHelpers.justify(expressions, {
47 | maxWidth: largestExpressionLength,
48 | })
49 |
50 | const commands = items.map((item) => item.commandName)
51 | const largestCommandLength = Math.max(...commands.map((e) => stringWidth(e)))
52 | const formattedCommands = cliHelpers.justify(commands, {
53 | maxWidth: largestCommandLength,
54 | paddingChar: this.ui.colors.dim('.'),
55 | })
56 |
57 | const dates = items.map((item) => item.nextDueDate)
58 | const largestDateLength =
59 | cliHelpers.TERMINAL_SIZE - (largestExpressionLength + largestCommandLength) - 10
60 | const formattedDates = cliHelpers.truncate(
61 | cliHelpers.justify(dates, {
62 | maxWidth: largestDateLength,
63 | align: 'right',
64 | paddingChar: this.ui.colors.dim('.'),
65 | }),
66 | {
67 | maxWidth: largestDateLength,
68 | }
69 | )
70 |
71 | for (let index = 0; index < formattedExpressions.length; index++) {
72 | const expression = formattedExpressions[index]
73 | const command = formattedCommands[index]
74 | const date = formattedDates[index]
75 |
76 | this.logger.log(`${expression}${command}${date}`)
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/configure.ts:
--------------------------------------------------------------------------------
1 | /*
2 | |--------------------------------------------------------------------------
3 | | Configure hook
4 | |--------------------------------------------------------------------------
5 | |
6 | | The configure hook is called when someone runs "node ace configure "
7 | | command. You are free to perform any operations inside this function to
8 | | configure the package.
9 | |
10 | | To make things easier, you have access to the underlying "ConfigureCommand"
11 | | instance and you can use codemods to modify the source files.
12 | |
13 | */
14 |
15 | import ConfigureCommand from '@adonisjs/core/commands/configure'
16 | import { stubsRoot } from './stubs/main.js'
17 |
18 | export async function configure(command: ConfigureCommand) {
19 | const codemods = await command.createCodemods()
20 |
21 | await codemods.makeUsingStub(stubsRoot, 'start/scheduler.stub', {})
22 |
23 |
24 | await codemods.updateRcFile((rcFile: any) => {
25 | rcFile.addProvider('adonisjs-scheduler/scheduler_provider', ['console'])
26 | rcFile.addCommand('adonisjs-scheduler/commands')
27 | rcFile.addPreloadFile('#start/scheduler', ['console'])
28 | })
29 | }
--------------------------------------------------------------------------------
/example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KABBOUCHI/adonisjs-scheduler/c698f08c71ea5cc21f04f322d931f35c38a24d37/example.png
--------------------------------------------------------------------------------
/index.ts:
--------------------------------------------------------------------------------
1 | /*
2 | |--------------------------------------------------------------------------
3 | | Package entrypoint
4 | |--------------------------------------------------------------------------
5 | |
6 | | Export values from the package entrypoint as you see fit.
7 | |
8 | */
9 |
10 | export { configure } from './configure.js'
11 | export { stubsRoot } from './stubs/main.js'
12 | export { Scheduler } from './src/scheduler.js'
13 | export { Worker } from './src/worker.js'
14 | export { schedule } from './src/decorator.js'
15 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "adonisjs-scheduler",
3 | "version": "2.4.0",
4 | "description": "Task scheduler for AdonisJS",
5 | "homepage": "https://github.com/KABBOUCHI/adonisjs-scheduler#readme",
6 | "license": "MIT",
7 | "keywords": [
8 | "adonisjs",
9 | "scheduler",
10 | "crons"
11 | ],
12 | "type": "module",
13 | "author": "Georges KABBOUCHI ",
14 | "main": "build/providers/scheduler_provider.js",
15 | "files": [
16 | "build"
17 | ],
18 | "scripts": {
19 | "build": "npm run clean && npm run build-only && npm run copyfiles",
20 | "copyfiles": "copyfiles \"stubs/**/*.stub\" build",
21 | "build-only": "tsc && npm run index:commands",
22 | "clean": "rimraf build",
23 | "prepublishOnly": "npm run build",
24 | "index:commands": "adonis-kit index build/commands",
25 | "test": "node --enable-source-maps --import=ts-node-maintained/register/esm bin/test.ts"
26 | },
27 | "exports": {
28 | ".": "./build/index.js",
29 | "./services/main": "./build/services/main.js",
30 | "./scheduler_provider": "./build/providers/scheduler_provider.js",
31 | "./commands": "./build/commands/main.js"
32 | },
33 | "devDependencies": {
34 | "@adonisjs/core": "^6.2.0",
35 | "@adonisjs/eslint-config": "^1.2.1",
36 | "@adonisjs/prettier-config": "^1.2.1",
37 | "@adonisjs/tsconfig": "^1.2.1",
38 | "@japa/assert": "^4.0.0",
39 | "@japa/runner": "^3.1.4",
40 | "@swc/core": "^1.3.102",
41 | "@types/async-lock": "^1.4.2",
42 | "@types/luxon": "^3.4.2",
43 | "@types/node": "^22.10.1",
44 | "@types/node-cron": "^3.0.7",
45 | "copyfiles": "^2.4.1",
46 | "eslint": "^8.19.0",
47 | "prettier": "^2.7.1",
48 | "rimraf": "^3.0.2",
49 | "ts-node-maintained": "^10.9.4",
50 | "typescript": "^5.3.3"
51 | },
52 | "publishConfig": {
53 | "tag": "latest",
54 | "access": "public"
55 | },
56 | "repository": {
57 | "type": "git",
58 | "url": "git+https://github.com/KABBOUCHI/adonisjs-scheduler.git"
59 | },
60 | "bugs": {
61 | "url": "https://github.com/KABBOUCHI/adonisjs-scheduler/issues"
62 | },
63 | "eslintConfig": {
64 | "extends": "@adonisjs/eslint-config/package"
65 | },
66 | "prettier": "@adonisjs/prettier-config",
67 | "dependencies": {
68 | "async-lock": "^1.4.1",
69 | "chokidar": "^4.0.2",
70 | "cron-parser": "^5.0.4",
71 | "luxon": "^3.5.0",
72 | "node-cron": "^3.0.2",
73 | "string-width": "^7.2.0"
74 | },
75 | "peerDependencies": {
76 | "@adonisjs/core": "^6.2.0"
77 | }
78 | }
79 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | dependencies:
11 | async-lock:
12 | specifier: ^1.4.1
13 | version: 1.4.1
14 | chokidar:
15 | specifier: ^4.0.2
16 | version: 4.0.2
17 | cron-parser:
18 | specifier: ^5.0.4
19 | version: 5.0.4
20 | luxon:
21 | specifier: ^3.5.0
22 | version: 3.5.0
23 | node-cron:
24 | specifier: ^3.0.2
25 | version: 3.0.3
26 | string-width:
27 | specifier: ^7.2.0
28 | version: 7.2.0
29 | devDependencies:
30 | '@adonisjs/core':
31 | specifier: ^6.2.0
32 | version: 6.2.1
33 | '@adonisjs/eslint-config':
34 | specifier: ^1.2.1
35 | version: 1.2.1(eslint@8.56.0)(prettier@2.8.8)(typescript@5.3.3)
36 | '@adonisjs/prettier-config':
37 | specifier: ^1.2.1
38 | version: 1.2.1
39 | '@adonisjs/tsconfig':
40 | specifier: ^1.2.1
41 | version: 1.2.1
42 | '@japa/assert':
43 | specifier: ^4.0.0
44 | version: 4.0.0(@japa/runner@3.1.4)
45 | '@japa/runner':
46 | specifier: ^3.1.4
47 | version: 3.1.4
48 | '@swc/core':
49 | specifier: ^1.3.102
50 | version: 1.3.105
51 | '@types/async-lock':
52 | specifier: ^1.4.2
53 | version: 1.4.2
54 | '@types/luxon':
55 | specifier: ^3.4.2
56 | version: 3.4.2
57 | '@types/node':
58 | specifier: ^22.10.1
59 | version: 22.10.1
60 | '@types/node-cron':
61 | specifier: ^3.0.7
62 | version: 3.0.11
63 | copyfiles:
64 | specifier: ^2.4.1
65 | version: 2.4.1
66 | eslint:
67 | specifier: ^8.19.0
68 | version: 8.56.0
69 | prettier:
70 | specifier: ^2.7.1
71 | version: 2.8.8
72 | rimraf:
73 | specifier: ^3.0.2
74 | version: 3.0.2
75 | ts-node-maintained:
76 | specifier: ^10.9.4
77 | version: 10.9.4(@swc/core@1.3.105)(@types/node@22.10.1)(typescript@5.3.3)
78 | typescript:
79 | specifier: ^5.3.3
80 | version: 5.3.3
81 |
82 | packages:
83 |
84 | '@aashutoshrathi/word-wrap@1.2.6':
85 | resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
86 | engines: {node: '>=0.10.0'}
87 |
88 | '@adonisjs/ace@13.0.0':
89 | resolution: {integrity: sha512-Hj5QjRgYnMUXiYuzMH5gQtzHH2hBNo4BO8VW7Jkrbbvh/YlUeFBkTSpTY010EBxmxSrslZKuHQynJ9JVRFExyQ==}
90 | engines: {node: '>=18.16.0'}
91 |
92 | '@adonisjs/application@8.0.2':
93 | resolution: {integrity: sha512-BQ21lTQJKcz4W12SVF5QZ60u+oSO1Ihh5YLc9HjgNNC4QhByY5f/QBnrCqS/ietu10IucX4ZncJ0HFU+F8t1Uw==}
94 | engines: {node: '>=18.16.0'}
95 | peerDependencies:
96 | '@adonisjs/config': ^5.0.0
97 | '@adonisjs/fold': ^10.0.0
98 |
99 | '@adonisjs/bodyparser@10.0.1':
100 | resolution: {integrity: sha512-Q5NvSjqSt8yNN/CObu7pRDgMRpFVnPHL1CReBK1Y9ZdPpSCJ+/n/GpOYsUh+ChhFMjRNdFy4rDk3RJ2QUOTHIQ==}
101 | engines: {node: '>=18.16.0'}
102 | peerDependencies:
103 | '@adonisjs/http-server': ^7.0.2
104 |
105 | '@adonisjs/config@5.0.1':
106 | resolution: {integrity: sha512-hyednyDBGsoBthbcf7S8r8M68tS8Y7rnIBPIZKHhQikXOXgf/E9IkQWgWjJR9+ODbaiMY69roJYR5L9dElre7w==}
107 | engines: {node: '>=18.16.0'}
108 |
109 | '@adonisjs/core@6.2.1':
110 | resolution: {integrity: sha512-6qDlwpJiolBIo9t+zClvdUIpku0MCL7NfNvVA4jaAjn9BGDS8azhasRsVRCvVFQeQrCxIap42QbV4kxoatyFLw==}
111 | engines: {node: '>=18.16.0'}
112 | hasBin: true
113 | peerDependencies:
114 | '@adonisjs/assembler': ^7.0.0
115 | '@vinejs/vine': ^1.7.0
116 | argon2: ^0.31.1
117 | bcrypt: ^5.1.1
118 | edge.js: ^6.0.1
119 | peerDependenciesMeta:
120 | '@adonisjs/assembler':
121 | optional: true
122 | '@vinejs/vine':
123 | optional: true
124 | argon2:
125 | optional: true
126 | bcrypt:
127 | optional: true
128 | edge.js:
129 | optional: true
130 |
131 | '@adonisjs/encryption@6.0.1':
132 | resolution: {integrity: sha512-9Vz2xU8cryCvRgQDri+4khZIeRDM6yJFe35PdR6xyhgQaT91Qn7fJ2oAcg3yVuNp3WKxg6PTRcxva+ZTfdP3SA==}
133 | engines: {node: '>=18.16.0'}
134 |
135 | '@adonisjs/env@5.0.1':
136 | resolution: {integrity: sha512-jka5D+LHjG0Cuy1IpuOv7NfO5Pu4SZ41UzX5csPeXzBIWyuD9as+HphxctHZpsD2KZ97EuSbVJv6zzxJfZ4Edg==}
137 | engines: {node: '>=18.16.0'}
138 |
139 | '@adonisjs/eslint-config@1.2.1':
140 | resolution: {integrity: sha512-kCGvnLcRWyw21YVEnka1TDNquJKrqkY6K7EENxM6tWwoHUyn0j99ssX4+Hv3d2UVvVezcC4KF1l8YZKzLqlgjA==}
141 | peerDependencies:
142 | eslint: '>=7.4.0'
143 | prettier: '>=2.0.0'
144 |
145 | '@adonisjs/eslint-plugin@1.2.1':
146 | resolution: {integrity: sha512-dwL0x5An5n/q1sy4ZL3eUqqTGlTJKn/Z8m53m7/DpAHtvq4QZTaxUZ3rF5WgnNiI5Q8+wyc/JcQ+lvQ4T0vH+A==}
147 |
148 | '@adonisjs/events@9.0.1':
149 | resolution: {integrity: sha512-1tOwBrwrJLE7zLB+/KzbAzBUq8IeQMLdqUFVC0d5A+Bq0ko/kn4O2xoRAybhrG9NHxQtFoSrOx+Ynb/8d+YffQ==}
150 | engines: {node: '>=18.16.0'}
151 | peerDependencies:
152 | '@adonisjs/application': ^8.0.2
153 | '@adonisjs/fold': ^10.0.1
154 |
155 | '@adonisjs/fold@10.0.1':
156 | resolution: {integrity: sha512-3SqwopxFtvy3WDs1Z3ZOdjS1M3JfTX8r0dCEQ+ascXhiLYwmv0LCoCY3vcmwVL+wpuyOG1qkKWkjZP1sB3+/bA==}
157 | engines: {node: '>=18.16.0'}
158 |
159 | '@adonisjs/hash@9.0.1':
160 | resolution: {integrity: sha512-K1jHQWr7ovXf6zHoo+70fmAt33op50GVygZd6ilvyQfCCEPx3lRqGoxqmRdgzDW5eCAfxCwy+nH7zxf8BhX4GQ==}
161 | engines: {node: '>=18.16.0'}
162 | peerDependencies:
163 | argon2: ^0.31.2
164 | bcrypt: ^5.1.1
165 | peerDependenciesMeta:
166 | argon2:
167 | optional: true
168 | bcrypt:
169 | optional: true
170 |
171 | '@adonisjs/http-server@7.0.2':
172 | resolution: {integrity: sha512-WFMTPxHdr4U9YXZqPxsTCXznlcj4g5phZHhe4JRT21Atedtz/hPMzRCmNOts2wIU9AP5YD6CYCyFnE/1VC2ecA==}
173 | engines: {node: '>=18.16.0'}
174 | peerDependencies:
175 | '@adonisjs/application': ^8.0.2
176 | '@adonisjs/encryption': ^6.0.0
177 | '@adonisjs/events': ^9.0.0
178 | '@adonisjs/fold': ^10.0.1
179 | '@adonisjs/logger': ^6.0.1
180 |
181 | '@adonisjs/logger@6.0.1':
182 | resolution: {integrity: sha512-zt3G2XPWZcreO6okdZ4A9CXfZhPBaAUTbsJZrLEYILdb5E0r5ZGw/MH6enK4uiN7BI+Y90W6HjXfQzKmXnNV2g==}
183 | engines: {node: '>=18.16.0'}
184 |
185 | '@adonisjs/prettier-config@1.2.1':
186 | resolution: {integrity: sha512-lE9vJNKvknB+RO7uf11C2aT4nPjCxrP6IqPDjVu3HU7qy1VPY1e44SEsxdCOvOm7aFbv9hRV8ZN7sOl37Wa8ww==}
187 |
188 | '@adonisjs/repl@4.0.1':
189 | resolution: {integrity: sha512-fgDRC5I8RBKHzsJPM4rRQF/OWI0K9cNihCIf4yHdqQt3mhFqWSOUjSi4sXWykdICLiddmyBO86au7i0d0dj5vQ==}
190 | engines: {node: '>=18.16.0'}
191 |
192 | '@adonisjs/tsconfig@1.2.1':
193 | resolution: {integrity: sha512-N8zdNw/bC3ft64e7CGr/LfYDCumoWe3wwePEqq2LRTCjBN/ICyxywW6f60QHLr+q17yHMU6fRFDt0GuRLXtPSA==}
194 |
195 | '@arr/every@1.0.1':
196 | resolution: {integrity: sha512-UQFQ6SgyJ6LX42W8rHCs8KVc0JS0tzVL9ct4XYedJukskYVWTo49tNiMEK9C2HTyarbNiT/RVIRSY82vH+6sTg==}
197 | engines: {node: '>=4'}
198 |
199 | '@babel/code-frame@7.23.5':
200 | resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==}
201 | engines: {node: '>=6.9.0'}
202 |
203 | '@babel/helper-validator-identifier@7.22.20':
204 | resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
205 | engines: {node: '>=6.9.0'}
206 |
207 | '@babel/highlight@7.23.4':
208 | resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==}
209 | engines: {node: '>=6.9.0'}
210 |
211 | '@colors/colors@1.5.0':
212 | resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==}
213 | engines: {node: '>=0.1.90'}
214 |
215 | '@cspotcode/source-map-support@0.8.1':
216 | resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
217 | engines: {node: '>=12'}
218 |
219 | '@eslint-community/eslint-utils@4.4.0':
220 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
221 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
222 | peerDependencies:
223 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
224 |
225 | '@eslint-community/regexpp@4.10.0':
226 | resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==}
227 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
228 |
229 | '@eslint/eslintrc@2.1.4':
230 | resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
231 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
232 |
233 | '@eslint/js@8.56.0':
234 | resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==}
235 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
236 |
237 | '@humanwhocodes/config-array@0.11.14':
238 | resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
239 | engines: {node: '>=10.10.0'}
240 |
241 | '@humanwhocodes/module-importer@1.0.1':
242 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
243 | engines: {node: '>=12.22'}
244 |
245 | '@humanwhocodes/object-schema@2.0.2':
246 | resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==}
247 |
248 | '@japa/assert@4.0.0':
249 | resolution: {integrity: sha512-f1qQGT3haTQANUD62GqBX8fl7MVjtQFsxjbGCfYhZW4esD25epgbeuA1KhnDhwno885B7IA9RZqgyYlmYQ483A==}
250 | engines: {node: '>=18.16.0'}
251 | peerDependencies:
252 | '@japa/runner': ^3.1.2
253 |
254 | '@japa/core@9.0.1':
255 | resolution: {integrity: sha512-snngJNbvYC92nn+dB69DT2iyosWZLXPRnOp8NJnVEeotkkKAWSmcDqBKw9qq2+MVdshwClvKFVXTxko4MtmlEQ==}
256 | engines: {node: '>=18.16.0'}
257 |
258 | '@japa/errors-printer@3.0.4':
259 | resolution: {integrity: sha512-gqBWkc8X6n5y91HH7H8fXyfe3rKV1+YeMNgE/+CY6hXf0/BS7J55s/QldosKEV2ZiWj/WmE6UPZiFH8W873fGw==}
260 | engines: {node: '>=18.16.0'}
261 |
262 | '@japa/runner@3.1.4':
263 | resolution: {integrity: sha512-ShaVZLdYq3GbFwyNiqQMCfdEoNq9vgYC0P6Z9gflqPcSUfOmN5jeJTLrLpChCBM5Sx9kYuAm5Bh6cqv1ZrArkQ==}
264 | engines: {node: '>=18.16.0'}
265 |
266 | '@jest/schemas@29.6.3':
267 | resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
268 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
269 |
270 | '@jridgewell/resolve-uri@3.1.1':
271 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==}
272 | engines: {node: '>=6.0.0'}
273 |
274 | '@jridgewell/sourcemap-codec@1.4.15':
275 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
276 |
277 | '@jridgewell/trace-mapping@0.3.9':
278 | resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
279 |
280 | '@lukeed/ms@2.0.2':
281 | resolution: {integrity: sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==}
282 | engines: {node: '>=8'}
283 |
284 | '@noble/hashes@1.3.3':
285 | resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==}
286 | engines: {node: '>= 16'}
287 |
288 | '@nodelib/fs.scandir@2.1.5':
289 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
290 | engines: {node: '>= 8'}
291 |
292 | '@nodelib/fs.stat@2.0.5':
293 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
294 | engines: {node: '>= 8'}
295 |
296 | '@nodelib/fs.walk@1.2.8':
297 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
298 | engines: {node: '>= 8'}
299 |
300 | '@paralleldrive/cuid2@2.2.2':
301 | resolution: {integrity: sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==}
302 |
303 | '@phc/format@1.0.0':
304 | resolution: {integrity: sha512-m7X9U6BG2+J+R1lSOdCiITLLrxm+cWlNI3HUFA92oLO77ObGNzaKdh8pMLqdZcshtkKuV84olNNXDfMc4FezBQ==}
305 | engines: {node: '>=10'}
306 |
307 | '@pkgr/core@0.1.1':
308 | resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==}
309 | engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
310 |
311 | '@poppinss/cliui@6.3.0':
312 | resolution: {integrity: sha512-GEu/IsJ9SanzAGa9NaHsHneumwlScLfhBJHU8uYcB6GyaTvQQg38OuiGnn5U95Wk3a/roUOSsrEVU1bnVvYtoQ==}
313 | engines: {node: '>=18.16.0'}
314 |
315 | '@poppinss/cliui@6.4.2':
316 | resolution: {integrity: sha512-+zx32scWjFUReNAzi75/QBwTiQrQ70a3khF5TNnyJVA8V2I9wTRPBLPdLWt83E5m1nTufoilF2MI7UBALkFH1Q==}
317 | engines: {node: '>=18.16.0'}
318 |
319 | '@poppinss/colors@4.1.2':
320 | resolution: {integrity: sha512-+qLfhQrdLa7RqJNZmGIc1ERVz2JtMD3kLI41tNfKhQBZt0wiWoYMhP/Tv+eopPnMy3NwANWgDSbqsi+teY1oig==}
321 | engines: {node: '>=18.16.0'}
322 |
323 | '@poppinss/colors@4.1.4':
324 | resolution: {integrity: sha512-FA+nTU8p6OcSH4tLDY5JilGYr1bVWHpNmcLr7xmMEdbWmKHa+3QZ+DqefrXKmdjO/brHTnQZo20lLSjaO7ydog==}
325 | engines: {node: '>=18.16.0'}
326 |
327 | '@poppinss/hooks@7.2.2':
328 | resolution: {integrity: sha512-EDivPMt9sAUV5kNhH2bvtVjuLvHhQ6SKVP19OjvvcyRalqAa6KqCItJ2qeU8A93s0cr1a28Sytu+KSwsmOY8pg==}
329 | engines: {node: '>=18.16.0'}
330 |
331 | '@poppinss/hooks@7.2.5':
332 | resolution: {integrity: sha512-mxORKQ5CFzQNi6yK3zwCGWfGS507w23IhV3kFq42QzWlv/vpvf4aMJDbtfMCR5p52ghVoe0d1wmgp77ak2ORhQ==}
333 | engines: {node: '>=18.16.0'}
334 |
335 | '@poppinss/macroable@1.0.1':
336 | resolution: {integrity: sha512-bO3+rnqGhE+gdx4DOyYjY9jCm2+c5Ncyl2Gmst0w271rIFnsB00btonpdmAqvFNzS8rcas+APGm+47fYMmkpQA==}
337 | engines: {node: '>=18.16.0'}
338 |
339 | '@poppinss/macroable@1.0.4':
340 | resolution: {integrity: sha512-ct43jurbe7lsUX5eIrj4ijO3j/6zIPp7CDnFWXDs7UPAbw1Pu1iH3oAmFdP4jcskKJBURH5M9oTtyeiUXyHX8Q==}
341 | engines: {node: '>=18.16.0'}
342 |
343 | '@poppinss/matchit@3.1.2':
344 | resolution: {integrity: sha512-Bx+jY+vmdQFmwYiHliiPjr+oVBaGnh79B1h1FSAm3jME1QylLFt8PPYC0ymO8Q5PzJj/KuE3jeTnZhRHOWqq8g==}
345 |
346 | '@poppinss/middleware@3.2.2':
347 | resolution: {integrity: sha512-73AJXODpZcfpO3b9Fr4SQNksXtATpUpCAnKgIUVDfZqAsS1gzLGhDfYo/Qi44hH29P8q28MXqmaoYY2oTpdZFQ==}
348 | engines: {node: '>=18.16.0'}
349 |
350 | '@poppinss/multiparty@2.0.1':
351 | resolution: {integrity: sha512-Pf3V9PFyZDIkDBBiAOT2hdmA+1l/+hverHbUnMzNzwtwgO50s2ZPt5KxUydVA0hceg9gryo5unQ0WUF1SO9tkQ==}
352 |
353 | '@poppinss/prompts@3.1.2':
354 | resolution: {integrity: sha512-wjAWTZkZz2kH5dVGbEPx9IRxJcIy6Nzn614TdGsn2kzeMI5woPaKWKxrLEQfK/teIxUrOVUmbjcorDohBkIjiw==}
355 | engines: {node: '>=18.16.0'}
356 |
357 | '@poppinss/utils@6.7.1':
358 | resolution: {integrity: sha512-M/IiE/lp493QEcDXpFHqlJGU4Tw0mw2JLCH1NgmL2UtL9QL4aTgd0MPwjIYOtikA0ug/oJwM1e7z1NKTGig/rw==}
359 | engines: {node: '>=18.16.0'}
360 |
361 | '@poppinss/validator-lite@1.0.3':
362 | resolution: {integrity: sha512-u4dmT7PDHwNtxY3q1jHVp/u+hMEEcBlkzd37QwwM4tVt/0mLlEDttSfPQ+TT7sqPG4VEtWKwVSlMInwPUYyJpA==}
363 |
364 | '@sinclair/typebox@0.27.8':
365 | resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
366 |
367 | '@sindresorhus/is@6.1.0':
368 | resolution: {integrity: sha512-BuvU07zq3tQ/2SIgBsEuxKYDyDjC0n7Zir52bpHy2xnBbW81+po43aLFPLbeV3HRAheFbGud1qgcqSYfhtHMAg==}
369 | engines: {node: '>=16'}
370 |
371 | '@swc/core-darwin-arm64@1.3.105':
372 | resolution: {integrity: sha512-buWeweLVDXXmcnfIemH4PGnpjwsDTUGitnPchdftb0u1FU8zSSP/lw/pUCBDG/XvWAp7c/aFxgN4CyG0j7eayA==}
373 | engines: {node: '>=10'}
374 | cpu: [arm64]
375 | os: [darwin]
376 |
377 | '@swc/core-darwin-x64@1.3.105':
378 | resolution: {integrity: sha512-hFmXPApqjA/8sy/9NpljHVaKi1OvL9QkJ2MbbTCCbJERuHMpMUeMBUWipHRfepGHFhU+9B9zkEup/qJaJR4XIg==}
379 | engines: {node: '>=10'}
380 | cpu: [x64]
381 | os: [darwin]
382 |
383 | '@swc/core-linux-arm-gnueabihf@1.3.105':
384 | resolution: {integrity: sha512-mwXyMC41oMKkKrPpL8uJpOxw7fyfQoVtIw3Y5p0Blabk+espNYqix0E8VymHdRKuLmM//z5wVmMsuHdGBHvZeg==}
385 | engines: {node: '>=10'}
386 | cpu: [arm]
387 | os: [linux]
388 |
389 | '@swc/core-linux-arm64-gnu@1.3.105':
390 | resolution: {integrity: sha512-H7yEIVydnUtqBSUxwmO6vpIQn7j+Rr0DF6ZOORPyd/SFzQJK9cJRtmJQ3ZMzlJ1Bb+1gr3MvjgLEnmyCYEm2Hg==}
391 | engines: {node: '>=10'}
392 | cpu: [arm64]
393 | os: [linux]
394 |
395 | '@swc/core-linux-arm64-musl@1.3.105':
396 | resolution: {integrity: sha512-Jg7RTFT3pGFdGt5elPV6oDkinRy7q9cXpenjXnJnM2uvx3jOwnsAhexPyCDHom8SHL0j+9kaLLC66T3Gz1E4UA==}
397 | engines: {node: '>=10'}
398 | cpu: [arm64]
399 | os: [linux]
400 |
401 | '@swc/core-linux-x64-gnu@1.3.105':
402 | resolution: {integrity: sha512-DJghplpyusAmp1X5pW/y93MmS/u83Sx5GrpJxI6KLPa82+NItTgMcl8KBQmW5GYAJpVKZyaIvBanS5TdR8aN2w==}
403 | engines: {node: '>=10'}
404 | cpu: [x64]
405 | os: [linux]
406 |
407 | '@swc/core-linux-x64-musl@1.3.105':
408 | resolution: {integrity: sha512-wD5jL2dZH/5nPNssBo6jhOvkI0lmWnVR4vnOXWjuXgjq1S0AJpO5jdre/6pYLmf26hft3M42bteDnjR4AAZ38w==}
409 | engines: {node: '>=10'}
410 | cpu: [x64]
411 | os: [linux]
412 |
413 | '@swc/core-win32-arm64-msvc@1.3.105':
414 | resolution: {integrity: sha512-UqJtwILUHRw2+3UTPnRkZrzM/bGdQtbR4UFdp79mZQYfryeOUVNg7aJj/bWUTkKtLiZ3o+FBNrM/x2X1mJX5bA==}
415 | engines: {node: '>=10'}
416 | cpu: [arm64]
417 | os: [win32]
418 |
419 | '@swc/core-win32-ia32-msvc@1.3.105':
420 | resolution: {integrity: sha512-Z95C6vZgBEJ1snidYyjVKnVWiy/ZpPiIFIXGWkDr4ZyBgL3eZX12M6LzZ+NApHKffrbO4enbFyFomueBQgS2oA==}
421 | engines: {node: '>=10'}
422 | cpu: [ia32]
423 | os: [win32]
424 |
425 | '@swc/core-win32-x64-msvc@1.3.105':
426 | resolution: {integrity: sha512-3J8fkyDPFsS3mszuYUY4Wfk7/B2oio9qXUwF3DzOs2MK+XgdyMLIptIxL7gdfitXJBH8k39uVjrIw1JGJDjyFA==}
427 | engines: {node: '>=10'}
428 | cpu: [x64]
429 | os: [win32]
430 |
431 | '@swc/core@1.3.105':
432 | resolution: {integrity: sha512-me2VZyr3OjqRpFrYQJJYy7x/zbFSl9nt+MAGnIcBtjDsN00iTVqEaKxBjPBFQV9BDAgPz2SRWes/DhhVm5SmMw==}
433 | engines: {node: '>=10'}
434 | peerDependencies:
435 | '@swc/helpers': ^0.5.0
436 | peerDependenciesMeta:
437 | '@swc/helpers':
438 | optional: true
439 |
440 | '@swc/counter@0.1.2':
441 | resolution: {integrity: sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==}
442 |
443 | '@swc/types@0.1.5':
444 | resolution: {integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==}
445 |
446 | '@tokenizer/token@0.3.0':
447 | resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==}
448 |
449 | '@tsconfig/node10@1.0.9':
450 | resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==}
451 |
452 | '@tsconfig/node12@1.0.11':
453 | resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==}
454 |
455 | '@tsconfig/node14@1.0.3':
456 | resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==}
457 |
458 | '@tsconfig/node16@1.0.4':
459 | resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==}
460 |
461 | '@types/async-lock@1.4.2':
462 | resolution: {integrity: sha512-HlZ6Dcr205BmNhwkdXqrg2vkFMN2PluI7Lgr8In3B3wE5PiQHhjRqtW/lGdVU9gw+sM0JcIDx2AN+cW8oSWIcw==}
463 |
464 | '@types/bytes@3.1.4':
465 | resolution: {integrity: sha512-A0uYgOj3zNc4hNjHc5lYUfJQ/HVyBXiUMKdXd7ysclaE6k9oJdavQzODHuwjpUu2/boCP8afjQYi8z/GtvNCWA==}
466 |
467 | '@types/chai@5.0.1':
468 | resolution: {integrity: sha512-5T8ajsg3M/FOncpLYW7sdOcD6yf4+722sze/tc4KQV0P8Z2rAr3SAuHCIkYmYpt8VbcQlnz8SxlOlPQYefe4cA==}
469 |
470 | '@types/deep-eql@4.0.2':
471 | resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==}
472 |
473 | '@types/he@1.2.3':
474 | resolution: {integrity: sha512-q67/qwlxblDzEDvzHhVkwc1gzVWxaNxeyHUBF4xElrvjL11O+Ytze+1fGpBHlr/H9myiBUaUXNnNPmBHxxfAcA==}
475 |
476 | '@types/json-schema@7.0.15':
477 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
478 |
479 | '@types/luxon@3.4.2':
480 | resolution: {integrity: sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==}
481 |
482 | '@types/node-cron@3.0.11':
483 | resolution: {integrity: sha512-0ikrnug3/IyneSHqCBeslAhlK2aBfYek1fGo4bP4QnZPmiqSGRK+Oy7ZMisLWkesffJvQ1cqAcBnJC+8+nxIAg==}
484 |
485 | '@types/node@22.10.1':
486 | resolution: {integrity: sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==}
487 |
488 | '@types/normalize-package-data@2.4.4':
489 | resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
490 |
491 | '@types/pluralize@0.0.33':
492 | resolution: {integrity: sha512-JOqsl+ZoCpP4e8TDke9W79FDcSgPAR0l6pixx2JHkhnRjvShyYiAYw2LVsnA7K08Y6DeOnaU6ujmENO4os/cYg==}
493 |
494 | '@types/qs@6.9.11':
495 | resolution: {integrity: sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==}
496 |
497 | '@types/semver@7.5.6':
498 | resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==}
499 |
500 | '@typescript-eslint/eslint-plugin@6.19.1':
501 | resolution: {integrity: sha512-roQScUGFruWod9CEyoV5KlCYrubC/fvG8/1zXuT0WTcxX87GnMMmnksMwSg99lo1xiKrBzw2icsJPMAw1OtKxg==}
502 | engines: {node: ^16.0.0 || >=18.0.0}
503 | peerDependencies:
504 | '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
505 | eslint: ^7.0.0 || ^8.0.0
506 | typescript: '*'
507 | peerDependenciesMeta:
508 | typescript:
509 | optional: true
510 |
511 | '@typescript-eslint/parser@6.19.1':
512 | resolution: {integrity: sha512-WEfX22ziAh6pRE9jnbkkLGp/4RhTpffr2ZK5bJ18M8mIfA8A+k97U9ZyaXCEJRlmMHh7R9MJZWXp/r73DzINVQ==}
513 | engines: {node: ^16.0.0 || >=18.0.0}
514 | peerDependencies:
515 | eslint: ^7.0.0 || ^8.0.0
516 | typescript: '*'
517 | peerDependenciesMeta:
518 | typescript:
519 | optional: true
520 |
521 | '@typescript-eslint/scope-manager@6.19.1':
522 | resolution: {integrity: sha512-4CdXYjKf6/6aKNMSly/BP4iCSOpvMmqtDzRtqFyyAae3z5kkqEjKndR5vDHL8rSuMIIWP8u4Mw4VxLyxZW6D5w==}
523 | engines: {node: ^16.0.0 || >=18.0.0}
524 |
525 | '@typescript-eslint/type-utils@6.19.1':
526 | resolution: {integrity: sha512-0vdyld3ecfxJuddDjACUvlAeYNrHP/pDeQk2pWBR2ESeEzQhg52DF53AbI9QCBkYE23lgkhLCZNkHn2hEXXYIg==}
527 | engines: {node: ^16.0.0 || >=18.0.0}
528 | peerDependencies:
529 | eslint: ^7.0.0 || ^8.0.0
530 | typescript: '*'
531 | peerDependenciesMeta:
532 | typescript:
533 | optional: true
534 |
535 | '@typescript-eslint/types@6.19.1':
536 | resolution: {integrity: sha512-6+bk6FEtBhvfYvpHsDgAL3uo4BfvnTnoge5LrrCj2eJN8g3IJdLTD4B/jK3Q6vo4Ql/Hoip9I8aB6fF+6RfDqg==}
537 | engines: {node: ^16.0.0 || >=18.0.0}
538 |
539 | '@typescript-eslint/typescript-estree@6.19.1':
540 | resolution: {integrity: sha512-aFdAxuhzBFRWhy+H20nYu19+Km+gFfwNO4TEqyszkMcgBDYQjmPJ61erHxuT2ESJXhlhrO7I5EFIlZ+qGR8oVA==}
541 | engines: {node: ^16.0.0 || >=18.0.0}
542 | peerDependencies:
543 | typescript: '*'
544 | peerDependenciesMeta:
545 | typescript:
546 | optional: true
547 |
548 | '@typescript-eslint/utils@6.19.1':
549 | resolution: {integrity: sha512-JvjfEZuP5WoMqwh9SPAPDSHSg9FBHHGhjPugSRxu5jMfjvBpq5/sGTD+9M9aQ5sh6iJ8AY/Kk/oUYVEMAPwi7w==}
550 | engines: {node: ^16.0.0 || >=18.0.0}
551 | peerDependencies:
552 | eslint: ^7.0.0 || ^8.0.0
553 |
554 | '@typescript-eslint/visitor-keys@6.19.1':
555 | resolution: {integrity: sha512-gkdtIO+xSO/SmI0W68DBg4u1KElmIUo3vXzgHyGPs6cxgB0sa3TlptRAAE0hUY1hM6FcDKEv7aIwiTGm76cXfQ==}
556 | engines: {node: ^16.0.0 || >=18.0.0}
557 |
558 | '@ungap/structured-clone@1.2.0':
559 | resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
560 |
561 | abort-controller@3.0.0:
562 | resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
563 | engines: {node: '>=6.5'}
564 |
565 | abstract-logging@2.0.1:
566 | resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==}
567 |
568 | accepts@1.3.8:
569 | resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
570 | engines: {node: '>= 0.6'}
571 |
572 | acorn-jsx@5.3.2:
573 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
574 | peerDependencies:
575 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
576 |
577 | acorn-walk@8.3.2:
578 | resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==}
579 | engines: {node: '>=0.4.0'}
580 |
581 | acorn@8.11.3:
582 | resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
583 | engines: {node: '>=0.4.0'}
584 | hasBin: true
585 |
586 | ajv@6.12.6:
587 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
588 |
589 | ansi-colors@4.1.3:
590 | resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
591 | engines: {node: '>=6'}
592 |
593 | ansi-escapes@6.2.0:
594 | resolution: {integrity: sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==}
595 | engines: {node: '>=14.16'}
596 |
597 | ansi-escapes@7.0.0:
598 | resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==}
599 | engines: {node: '>=18'}
600 |
601 | ansi-regex@5.0.1:
602 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
603 | engines: {node: '>=8'}
604 |
605 | ansi-regex@6.0.1:
606 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
607 | engines: {node: '>=12'}
608 |
609 | ansi-styles@3.2.1:
610 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
611 | engines: {node: '>=4'}
612 |
613 | ansi-styles@4.3.0:
614 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
615 | engines: {node: '>=8'}
616 |
617 | ansi-styles@5.2.0:
618 | resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
619 | engines: {node: '>=10'}
620 |
621 | ansi-styles@6.2.1:
622 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
623 | engines: {node: '>=12'}
624 |
625 | arg@4.1.3:
626 | resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
627 |
628 | argparse@2.0.1:
629 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
630 |
631 | array-union@2.1.0:
632 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
633 | engines: {node: '>=8'}
634 |
635 | as-table@1.0.55:
636 | resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==}
637 |
638 | assertion-error@2.0.1:
639 | resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
640 | engines: {node: '>=12'}
641 |
642 | async-lock@1.4.1:
643 | resolution: {integrity: sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==}
644 |
645 | async-retry@1.3.3:
646 | resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==}
647 |
648 | atomic-sleep@1.0.0:
649 | resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==}
650 | engines: {node: '>=8.0.0'}
651 |
652 | balanced-match@1.0.2:
653 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
654 |
655 | base64-js@1.5.1:
656 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
657 |
658 | brace-expansion@1.1.11:
659 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
660 |
661 | brace-expansion@2.0.1:
662 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
663 |
664 | braces@3.0.2:
665 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
666 | engines: {node: '>=8'}
667 |
668 | buffer@6.0.3:
669 | resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
670 |
671 | builtin-modules@3.3.0:
672 | resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==}
673 | engines: {node: '>=6'}
674 |
675 | bytes@3.1.2:
676 | resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
677 | engines: {node: '>= 0.8'}
678 |
679 | call-bind@1.0.5:
680 | resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==}
681 |
682 | callsites@3.1.0:
683 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
684 | engines: {node: '>=6'}
685 |
686 | case-anything@2.1.13:
687 | resolution: {integrity: sha512-zlOQ80VrQ2Ue+ymH5OuM/DlDq64mEm+B9UTdHULv5osUMD6HalNTblf2b1u/m6QecjsnOkBpqVZ+XPwIVsy7Ng==}
688 | engines: {node: '>=12.13'}
689 |
690 | chai@5.1.2:
691 | resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==}
692 | engines: {node: '>=12'}
693 |
694 | chalk@2.4.2:
695 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
696 | engines: {node: '>=4'}
697 |
698 | chalk@4.1.2:
699 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
700 | engines: {node: '>=10'}
701 |
702 | check-error@2.1.1:
703 | resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==}
704 | engines: {node: '>= 16'}
705 |
706 | chokidar@4.0.2:
707 | resolution: {integrity: sha512-/b57FK+bblSU+dfewfFe0rT1YjVDfOmeLQwCAuC+vwvgLkXboATqqmy+Ipux6JrF6L5joe5CBnFOw+gLWH6yKg==}
708 | engines: {node: '>= 14.16.0'}
709 |
710 | ci-info@3.9.0:
711 | resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
712 | engines: {node: '>=8'}
713 |
714 | clean-regexp@1.0.0:
715 | resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==}
716 | engines: {node: '>=4'}
717 |
718 | cli-boxes@3.0.0:
719 | resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==}
720 | engines: {node: '>=10'}
721 |
722 | cli-boxes@4.0.1:
723 | resolution: {integrity: sha512-5IOn+jcCEHEraYolBPs/sT4BxYCe2nHg374OPiItB1O96KZFseS2gthU4twyYzeDcFew4DaUM/xwc5BQf08JJw==}
724 | engines: {node: '>=18.20 <19 || >=20.10'}
725 |
726 | cli-cursor@4.0.0:
727 | resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==}
728 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
729 |
730 | cli-cursor@5.0.0:
731 | resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==}
732 | engines: {node: '>=18'}
733 |
734 | cli-table3@0.6.3:
735 | resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==}
736 | engines: {node: 10.* || >= 12.*}
737 |
738 | cli-table3@0.6.5:
739 | resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==}
740 | engines: {node: 10.* || >= 12.*}
741 |
742 | cli-truncate@4.0.0:
743 | resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==}
744 | engines: {node: '>=18'}
745 |
746 | cliui@7.0.4:
747 | resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==}
748 |
749 | color-convert@1.9.3:
750 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
751 |
752 | color-convert@2.0.1:
753 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
754 | engines: {node: '>=7.0.0'}
755 |
756 | color-name@1.1.3:
757 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
758 |
759 | color-name@1.1.4:
760 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
761 |
762 | common-path-prefix@3.0.0:
763 | resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==}
764 |
765 | concat-map@0.0.1:
766 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
767 |
768 | content-disposition@0.5.4:
769 | resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
770 | engines: {node: '>= 0.6'}
771 |
772 | convert-hrtime@5.0.0:
773 | resolution: {integrity: sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==}
774 | engines: {node: '>=12'}
775 |
776 | cookie@0.5.0:
777 | resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==}
778 | engines: {node: '>= 0.6'}
779 |
780 | cookie@0.6.0:
781 | resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
782 | engines: {node: '>= 0.6'}
783 |
784 | copyfiles@2.4.1:
785 | resolution: {integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==}
786 | hasBin: true
787 |
788 | core-util-is@1.0.3:
789 | resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
790 |
791 | create-require@1.1.1:
792 | resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
793 |
794 | cron-parser@5.0.4:
795 | resolution: {integrity: sha512-ud6L7uGE4a7QxKndq106+99iKMlhG1/gSVlA4SH7qy3xO/R/EUoXFTJFMBOogdk00mZiXPONRI4wFKAcymKp6w==}
796 | engines: {node: '>=18'}
797 |
798 | cross-spawn@7.0.3:
799 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
800 | engines: {node: '>= 8'}
801 |
802 | data-uri-to-buffer@2.0.2:
803 | resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==}
804 |
805 | debug@4.3.4:
806 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
807 | engines: {node: '>=6.0'}
808 | peerDependencies:
809 | supports-color: '*'
810 | peerDependenciesMeta:
811 | supports-color:
812 | optional: true
813 |
814 | deep-eql@5.0.2:
815 | resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
816 | engines: {node: '>=6'}
817 |
818 | deep-is@0.1.4:
819 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
820 |
821 | define-data-property@1.1.1:
822 | resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==}
823 | engines: {node: '>= 0.4'}
824 |
825 | depd@2.0.0:
826 | resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
827 | engines: {node: '>= 0.8'}
828 |
829 | destroy@1.2.0:
830 | resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
831 | engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
832 |
833 | diff-sequences@29.6.3:
834 | resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
835 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
836 |
837 | diff@4.0.2:
838 | resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
839 | engines: {node: '>=0.3.1'}
840 |
841 | dir-glob@3.0.1:
842 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
843 | engines: {node: '>=8'}
844 |
845 | doctrine@3.0.0:
846 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
847 | engines: {node: '>=6.0.0'}
848 |
849 | dotenv@16.4.1:
850 | resolution: {integrity: sha512-CjA3y+Dr3FyFDOAMnxZEGtnW9KBR2M0JvvUtXNW+dYJL5ROWxP9DUHCwgFqpMk0OXCc0ljhaNTr2w/kutYIcHQ==}
851 | engines: {node: '>=12'}
852 |
853 | ee-first@1.1.1:
854 | resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
855 |
856 | emittery@1.0.1:
857 | resolution: {integrity: sha512-2ID6FdrMD9KDLldGesP6317G78K7km/kMcwItRtVFva7I/cSEOIaLpewaUb+YLXVwdAp3Ctfxh/V5zIl1sj7dQ==}
858 | engines: {node: '>=14.16'}
859 |
860 | emittery@1.0.3:
861 | resolution: {integrity: sha512-tJdCJitoy2lrC2ldJcqN4vkqJ00lT+tOWNT1hBJjO/3FDMJa5TTIiYGCKGkn/WfCyOzUMObeohbVTj00fhiLiA==}
862 | engines: {node: '>=14.16'}
863 |
864 | emoji-regex@10.3.0:
865 | resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==}
866 |
867 | emoji-regex@8.0.0:
868 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
869 |
870 | encodeurl@1.0.2:
871 | resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
872 | engines: {node: '>= 0.8'}
873 |
874 | enquirer@2.4.1:
875 | resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==}
876 | engines: {node: '>=8.6'}
877 |
878 | environment@1.1.0:
879 | resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==}
880 | engines: {node: '>=18'}
881 |
882 | error-ex@1.3.2:
883 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
884 |
885 | es-module-lexer@1.4.1:
886 | resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==}
887 |
888 | escalade@3.1.1:
889 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
890 | engines: {node: '>=6'}
891 |
892 | escape-string-regexp@1.0.5:
893 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
894 | engines: {node: '>=0.8.0'}
895 |
896 | escape-string-regexp@4.0.0:
897 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
898 | engines: {node: '>=10'}
899 |
900 | eslint-compat-utils@0.4.1:
901 | resolution: {integrity: sha512-5N7ZaJG5pZxUeNNJfUchurLVrunD1xJvyg5kYOIVF8kg1f3ajTikmAu/5fZ9w100omNPOoMjngRszh/Q/uFGMg==}
902 | engines: {node: '>=12'}
903 | peerDependencies:
904 | eslint: '>=6.0.0'
905 |
906 | eslint-config-prettier@8.10.0:
907 | resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==}
908 | hasBin: true
909 | peerDependencies:
910 | eslint: '>=7.0.0'
911 |
912 | eslint-plugin-jsonc@2.13.0:
913 | resolution: {integrity: sha512-2wWdJfpO/UbZzPDABuUVvlUQjfMJa2p2iQfYt/oWxOMpXCcjuiMUSaA02gtY/Dbu82vpaSqc+O7Xq6ECHwtIxA==}
914 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
915 | peerDependencies:
916 | eslint: '>=6.0.0'
917 |
918 | eslint-plugin-prettier@5.1.3:
919 | resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==}
920 | engines: {node: ^14.18.0 || >=16.0.0}
921 | peerDependencies:
922 | '@types/eslint': '>=8.0.0'
923 | eslint: '>=8.0.0'
924 | eslint-config-prettier: '*'
925 | prettier: '>=3.0.0'
926 | peerDependenciesMeta:
927 | '@types/eslint':
928 | optional: true
929 | eslint-config-prettier:
930 | optional: true
931 |
932 | eslint-plugin-unicorn@47.0.0:
933 | resolution: {integrity: sha512-ivB3bKk7fDIeWOUmmMm9o3Ax9zbMz1Bsza/R2qm46ufw4T6VBFBaJIR1uN3pCKSmSXm8/9Nri8V+iUut1NhQGA==}
934 | engines: {node: '>=16'}
935 | peerDependencies:
936 | eslint: '>=8.38.0'
937 |
938 | eslint-scope@7.2.2:
939 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
940 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
941 |
942 | eslint-visitor-keys@3.4.3:
943 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
944 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
945 |
946 | eslint@8.56.0:
947 | resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==}
948 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
949 | hasBin: true
950 |
951 | espree@9.6.1:
952 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
953 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
954 |
955 | esquery@1.5.0:
956 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
957 | engines: {node: '>=0.10'}
958 |
959 | esrecurse@4.3.0:
960 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
961 | engines: {node: '>=4.0'}
962 |
963 | estraverse@5.3.0:
964 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
965 | engines: {node: '>=4.0'}
966 |
967 | esutils@2.0.3:
968 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
969 | engines: {node: '>=0.10.0'}
970 |
971 | etag@1.8.1:
972 | resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
973 | engines: {node: '>= 0.6'}
974 |
975 | event-target-shim@5.0.1:
976 | resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
977 | engines: {node: '>=6'}
978 |
979 | events@3.3.0:
980 | resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
981 | engines: {node: '>=0.8.x'}
982 |
983 | fast-deep-equal@3.1.3:
984 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
985 |
986 | fast-diff@1.3.0:
987 | resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
988 |
989 | fast-glob@3.3.2:
990 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
991 | engines: {node: '>=8.6.0'}
992 |
993 | fast-json-stable-stringify@2.1.0:
994 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
995 |
996 | fast-levenshtein@2.0.6:
997 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
998 |
999 | fast-redact@3.3.0:
1000 | resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==}
1001 | engines: {node: '>=6'}
1002 |
1003 | fastest-levenshtein@1.0.16:
1004 | resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==}
1005 | engines: {node: '>= 4.9.1'}
1006 |
1007 | fastq@1.16.0:
1008 | resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==}
1009 |
1010 | file-entry-cache@6.0.1:
1011 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
1012 | engines: {node: ^10.12.0 || >=12.0.0}
1013 |
1014 | file-type@19.0.0:
1015 | resolution: {integrity: sha512-s7cxa7/leUWLiXO78DVVfBVse+milos9FitauDLG1pI7lNaJ2+5lzPnr2N24ym+84HVwJL6hVuGfgVE+ALvU8Q==}
1016 | engines: {node: '>=18'}
1017 |
1018 | fill-range@7.0.1:
1019 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
1020 | engines: {node: '>=8'}
1021 |
1022 | find-cache-dir@5.0.0:
1023 | resolution: {integrity: sha512-OuWNfjfP05JcpAP3JPgAKUhWefjMRfI5iAoSsvE24ANYWJaepAtlSgWECSVEuRgSXpyNEc9DJwG/TZpgcOqyig==}
1024 | engines: {node: '>=16'}
1025 |
1026 | find-up@4.1.0:
1027 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
1028 | engines: {node: '>=8'}
1029 |
1030 | find-up@5.0.0:
1031 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
1032 | engines: {node: '>=10'}
1033 |
1034 | find-up@6.3.0:
1035 | resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==}
1036 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1037 |
1038 | flat-cache@3.2.0:
1039 | resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
1040 | engines: {node: ^10.12.0 || >=12.0.0}
1041 |
1042 | flatted@3.2.9:
1043 | resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==}
1044 |
1045 | flattie@1.1.0:
1046 | resolution: {integrity: sha512-xU99gDEnciIwJdGcBmNHnzTJ/w5AT+VFJOu6sTB6WM8diOYNA3Sa+K1DiEBQ7XH4QikQq3iFW1U+jRVcotQnBw==}
1047 | engines: {node: '>=8'}
1048 |
1049 | forwarded@0.2.0:
1050 | resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
1051 | engines: {node: '>= 0.6'}
1052 |
1053 | fresh@0.5.2:
1054 | resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
1055 | engines: {node: '>= 0.6'}
1056 |
1057 | fs.realpath@1.0.0:
1058 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
1059 |
1060 | function-bind@1.1.2:
1061 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
1062 |
1063 | get-caller-file@2.0.5:
1064 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
1065 | engines: {node: 6.* || 8.* || >= 10.*}
1066 |
1067 | get-east-asian-width@1.2.0:
1068 | resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==}
1069 | engines: {node: '>=18'}
1070 |
1071 | get-intrinsic@1.2.2:
1072 | resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==}
1073 |
1074 | get-source@2.0.12:
1075 | resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==}
1076 |
1077 | getopts@2.3.0:
1078 | resolution: {integrity: sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==}
1079 |
1080 | glob-parent@5.1.2:
1081 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
1082 | engines: {node: '>= 6'}
1083 |
1084 | glob-parent@6.0.2:
1085 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
1086 | engines: {node: '>=10.13.0'}
1087 |
1088 | glob@7.2.3:
1089 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
1090 |
1091 | globals@13.24.0:
1092 | resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
1093 | engines: {node: '>=8'}
1094 |
1095 | globby@11.1.0:
1096 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
1097 | engines: {node: '>=10'}
1098 |
1099 | gopd@1.0.1:
1100 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
1101 |
1102 | graphemer@1.4.0:
1103 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
1104 |
1105 | has-flag@3.0.0:
1106 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
1107 | engines: {node: '>=4'}
1108 |
1109 | has-flag@4.0.0:
1110 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
1111 | engines: {node: '>=8'}
1112 |
1113 | has-property-descriptors@1.0.1:
1114 | resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==}
1115 |
1116 | has-proto@1.0.1:
1117 | resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
1118 | engines: {node: '>= 0.4'}
1119 |
1120 | has-symbols@1.0.3:
1121 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
1122 | engines: {node: '>= 0.4'}
1123 |
1124 | hasown@2.0.0:
1125 | resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==}
1126 | engines: {node: '>= 0.4'}
1127 |
1128 | he@1.2.0:
1129 | resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
1130 | hasBin: true
1131 |
1132 | hosted-git-info@2.8.9:
1133 | resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
1134 |
1135 | http-errors@2.0.0:
1136 | resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
1137 | engines: {node: '>= 0.8'}
1138 |
1139 | iconv-lite@0.4.24:
1140 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
1141 | engines: {node: '>=0.10.0'}
1142 |
1143 | ieee754@1.2.1:
1144 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
1145 |
1146 | ignore@5.3.0:
1147 | resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==}
1148 | engines: {node: '>= 4'}
1149 |
1150 | import-fresh@3.3.0:
1151 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
1152 | engines: {node: '>=6'}
1153 |
1154 | imurmurhash@0.1.4:
1155 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
1156 | engines: {node: '>=0.8.19'}
1157 |
1158 | indent-string@4.0.0:
1159 | resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
1160 | engines: {node: '>=8'}
1161 |
1162 | inflation@2.1.0:
1163 | resolution: {integrity: sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ==}
1164 | engines: {node: '>= 0.8.0'}
1165 |
1166 | inflight@1.0.6:
1167 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
1168 |
1169 | inherits@2.0.4:
1170 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
1171 |
1172 | ipaddr.js@1.9.1:
1173 | resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
1174 | engines: {node: '>= 0.10'}
1175 |
1176 | is-arrayish@0.2.1:
1177 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
1178 |
1179 | is-builtin-module@3.2.1:
1180 | resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==}
1181 | engines: {node: '>=6'}
1182 |
1183 | is-core-module@2.13.1:
1184 | resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
1185 |
1186 | is-extglob@2.1.1:
1187 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1188 | engines: {node: '>=0.10.0'}
1189 |
1190 | is-fullwidth-code-point@3.0.0:
1191 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
1192 | engines: {node: '>=8'}
1193 |
1194 | is-fullwidth-code-point@4.0.0:
1195 | resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==}
1196 | engines: {node: '>=12'}
1197 |
1198 | is-fullwidth-code-point@5.0.0:
1199 | resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==}
1200 | engines: {node: '>=18'}
1201 |
1202 | is-glob@4.0.3:
1203 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1204 | engines: {node: '>=0.10.0'}
1205 |
1206 | is-number@7.0.0:
1207 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1208 | engines: {node: '>=0.12.0'}
1209 |
1210 | is-path-inside@3.0.3:
1211 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
1212 | engines: {node: '>=8'}
1213 |
1214 | isarray@0.0.1:
1215 | resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==}
1216 |
1217 | isarray@1.0.0:
1218 | resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
1219 |
1220 | isexe@2.0.0:
1221 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1222 |
1223 | jest-diff@29.7.0:
1224 | resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==}
1225 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1226 |
1227 | jest-get-type@29.6.3:
1228 | resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==}
1229 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1230 |
1231 | js-tokens@4.0.0:
1232 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
1233 |
1234 | js-yaml@4.1.0:
1235 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
1236 | hasBin: true
1237 |
1238 | jsesc@0.5.0:
1239 | resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==}
1240 | hasBin: true
1241 |
1242 | jsesc@3.0.2:
1243 | resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==}
1244 | engines: {node: '>=6'}
1245 | hasBin: true
1246 |
1247 | json-buffer@3.0.1:
1248 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
1249 |
1250 | json-parse-even-better-errors@2.3.1:
1251 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
1252 |
1253 | json-schema-traverse@0.4.1:
1254 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
1255 |
1256 | json-stable-stringify-without-jsonify@1.0.1:
1257 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
1258 |
1259 | jsonc-eslint-parser@2.4.0:
1260 | resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==}
1261 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1262 |
1263 | jsonschema@1.4.1:
1264 | resolution: {integrity: sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==}
1265 |
1266 | keyv@4.5.4:
1267 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
1268 |
1269 | kleur@4.1.5:
1270 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
1271 | engines: {node: '>=6'}
1272 |
1273 | levn@0.4.1:
1274 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
1275 | engines: {node: '>= 0.8.0'}
1276 |
1277 | lines-and-columns@1.2.4:
1278 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
1279 |
1280 | locate-path@5.0.0:
1281 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
1282 | engines: {node: '>=8'}
1283 |
1284 | locate-path@6.0.0:
1285 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
1286 | engines: {node: '>=10'}
1287 |
1288 | locate-path@7.2.0:
1289 | resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==}
1290 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1291 |
1292 | lodash.merge@4.6.2:
1293 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
1294 |
1295 | lodash@4.17.21:
1296 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
1297 |
1298 | log-update@6.0.0:
1299 | resolution: {integrity: sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==}
1300 | engines: {node: '>=18'}
1301 |
1302 | log-update@6.1.0:
1303 | resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==}
1304 | engines: {node: '>=18'}
1305 |
1306 | loupe@3.1.2:
1307 | resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==}
1308 |
1309 | lru-cache@6.0.0:
1310 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
1311 | engines: {node: '>=10'}
1312 |
1313 | luxon@3.5.0:
1314 | resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==}
1315 | engines: {node: '>=12'}
1316 |
1317 | make-error@1.3.6:
1318 | resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
1319 |
1320 | media-typer@0.3.0:
1321 | resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
1322 | engines: {node: '>= 0.6'}
1323 |
1324 | media-typer@1.1.0:
1325 | resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==}
1326 | engines: {node: '>= 0.8'}
1327 |
1328 | merge2@1.4.1:
1329 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1330 | engines: {node: '>= 8'}
1331 |
1332 | micromatch@4.0.5:
1333 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
1334 | engines: {node: '>=8.6'}
1335 |
1336 | mime-db@1.52.0:
1337 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
1338 | engines: {node: '>= 0.6'}
1339 |
1340 | mime-types@2.1.35:
1341 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
1342 | engines: {node: '>= 0.6'}
1343 |
1344 | mimic-fn@2.1.0:
1345 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
1346 | engines: {node: '>=6'}
1347 |
1348 | mimic-function@5.0.1:
1349 | resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==}
1350 | engines: {node: '>=18'}
1351 |
1352 | min-indent@1.0.1:
1353 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
1354 | engines: {node: '>=4'}
1355 |
1356 | minimatch@3.1.2:
1357 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1358 |
1359 | minimatch@9.0.3:
1360 | resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==}
1361 | engines: {node: '>=16 || 14 >=14.17'}
1362 |
1363 | mkdirp@1.0.4:
1364 | resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
1365 | engines: {node: '>=10'}
1366 | hasBin: true
1367 |
1368 | ms@2.1.2:
1369 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
1370 |
1371 | ms@2.1.3:
1372 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
1373 |
1374 | mustache@4.2.0:
1375 | resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==}
1376 | hasBin: true
1377 |
1378 | natural-compare@1.4.0:
1379 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
1380 |
1381 | negotiator@0.6.3:
1382 | resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
1383 | engines: {node: '>= 0.6'}
1384 |
1385 | node-cron@3.0.3:
1386 | resolution: {integrity: sha512-dOal67//nohNgYWb+nWmg5dkFdIwDm8EpeGYMekPMrngV3637lqnX0lbUcCtgibHTz6SEz7DAIjKvKDFYCnO1A==}
1387 | engines: {node: '>=6.0.0'}
1388 |
1389 | noms@0.0.0:
1390 | resolution: {integrity: sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==}
1391 |
1392 | normalize-package-data@2.5.0:
1393 | resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
1394 |
1395 | object-inspect@1.13.1:
1396 | resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==}
1397 |
1398 | on-exit-leak-free@2.1.2:
1399 | resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==}
1400 | engines: {node: '>=14.0.0'}
1401 |
1402 | on-finished@2.4.1:
1403 | resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
1404 | engines: {node: '>= 0.8'}
1405 |
1406 | once@1.4.0:
1407 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
1408 |
1409 | onetime@5.1.2:
1410 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
1411 | engines: {node: '>=6'}
1412 |
1413 | onetime@7.0.0:
1414 | resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==}
1415 | engines: {node: '>=18'}
1416 |
1417 | optionator@0.9.3:
1418 | resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
1419 | engines: {node: '>= 0.8.0'}
1420 |
1421 | p-limit@2.3.0:
1422 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
1423 | engines: {node: '>=6'}
1424 |
1425 | p-limit@3.1.0:
1426 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
1427 | engines: {node: '>=10'}
1428 |
1429 | p-limit@4.0.0:
1430 | resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==}
1431 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1432 |
1433 | p-locate@4.1.0:
1434 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
1435 | engines: {node: '>=8'}
1436 |
1437 | p-locate@5.0.0:
1438 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
1439 | engines: {node: '>=10'}
1440 |
1441 | p-locate@6.0.0:
1442 | resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==}
1443 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1444 |
1445 | p-try@2.2.0:
1446 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
1447 | engines: {node: '>=6'}
1448 |
1449 | parent-module@1.0.1:
1450 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
1451 | engines: {node: '>=6'}
1452 |
1453 | parse-imports@1.1.2:
1454 | resolution: {integrity: sha512-UgTSNWlBvx+f4nxVSH3fOyJPJKol8GkFuG8mN8q9FqtmJgwaEx0azPRlXXX0klNlRxoP2gwme00TPDSm6rm/IA==}
1455 | engines: {node: '>= 12.17'}
1456 |
1457 | parse-json@5.2.0:
1458 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
1459 | engines: {node: '>=8'}
1460 |
1461 | path-exists@4.0.0:
1462 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
1463 | engines: {node: '>=8'}
1464 |
1465 | path-exists@5.0.0:
1466 | resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==}
1467 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1468 |
1469 | path-is-absolute@1.0.1:
1470 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
1471 | engines: {node: '>=0.10.0'}
1472 |
1473 | path-key@3.1.1:
1474 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
1475 | engines: {node: '>=8'}
1476 |
1477 | path-parse@1.0.7:
1478 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
1479 |
1480 | path-type@4.0.0:
1481 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
1482 | engines: {node: '>=8'}
1483 |
1484 | pathval@2.0.0:
1485 | resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==}
1486 | engines: {node: '>= 14.16'}
1487 |
1488 | peek-readable@5.0.0:
1489 | resolution: {integrity: sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==}
1490 | engines: {node: '>=14.16'}
1491 |
1492 | picomatch@2.3.1:
1493 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1494 | engines: {node: '>=8.6'}
1495 |
1496 | pino-abstract-transport@1.1.0:
1497 | resolution: {integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==}
1498 |
1499 | pino-std-serializers@6.2.2:
1500 | resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==}
1501 |
1502 | pino@8.17.2:
1503 | resolution: {integrity: sha512-LA6qKgeDMLr2ux2y/YiUt47EfgQ+S9LznBWOJdN3q1dx2sv0ziDLUBeVpyVv17TEcGCBuWf0zNtg3M5m1NhhWQ==}
1504 | hasBin: true
1505 |
1506 | pkg-dir@7.0.0:
1507 | resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==}
1508 | engines: {node: '>=14.16'}
1509 |
1510 | pluralize@8.0.0:
1511 | resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
1512 | engines: {node: '>=4'}
1513 |
1514 | prelude-ls@1.2.1:
1515 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
1516 | engines: {node: '>= 0.8.0'}
1517 |
1518 | prettier-linter-helpers@1.0.0:
1519 | resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
1520 | engines: {node: '>=6.0.0'}
1521 |
1522 | prettier@2.8.8:
1523 | resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
1524 | engines: {node: '>=10.13.0'}
1525 | hasBin: true
1526 |
1527 | pretty-format@29.7.0:
1528 | resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
1529 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1530 |
1531 | pretty-hrtime@1.0.3:
1532 | resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==}
1533 | engines: {node: '>= 0.8'}
1534 |
1535 | printable-characters@1.0.42:
1536 | resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==}
1537 |
1538 | process-nextick-args@2.0.1:
1539 | resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
1540 |
1541 | process-warning@3.0.0:
1542 | resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==}
1543 |
1544 | process@0.11.10:
1545 | resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
1546 | engines: {node: '>= 0.6.0'}
1547 |
1548 | proxy-addr@2.0.7:
1549 | resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
1550 | engines: {node: '>= 0.10'}
1551 |
1552 | punycode@2.3.1:
1553 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
1554 | engines: {node: '>=6'}
1555 |
1556 | qs@6.11.2:
1557 | resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==}
1558 | engines: {node: '>=0.6'}
1559 |
1560 | queue-microtask@1.2.3:
1561 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1562 |
1563 | quick-format-unescaped@4.0.4:
1564 | resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==}
1565 |
1566 | random-bytes@1.0.0:
1567 | resolution: {integrity: sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==}
1568 | engines: {node: '>= 0.8'}
1569 |
1570 | raw-body@2.5.2:
1571 | resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==}
1572 | engines: {node: '>= 0.8'}
1573 |
1574 | react-is@18.3.1:
1575 | resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
1576 |
1577 | read-pkg-up@7.0.1:
1578 | resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
1579 | engines: {node: '>=8'}
1580 |
1581 | read-pkg@5.2.0:
1582 | resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==}
1583 | engines: {node: '>=8'}
1584 |
1585 | readable-stream@1.0.34:
1586 | resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==}
1587 |
1588 | readable-stream@2.3.8:
1589 | resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
1590 |
1591 | readable-stream@3.6.2:
1592 | resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
1593 | engines: {node: '>= 6'}
1594 |
1595 | readable-stream@4.5.2:
1596 | resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==}
1597 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1598 |
1599 | readable-web-to-node-stream@3.0.2:
1600 | resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==}
1601 | engines: {node: '>=8'}
1602 |
1603 | readdirp@4.0.2:
1604 | resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==}
1605 | engines: {node: '>= 14.16.0'}
1606 |
1607 | real-require@0.2.0:
1608 | resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==}
1609 | engines: {node: '>= 12.13.0'}
1610 |
1611 | regexp-tree@0.1.27:
1612 | resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==}
1613 | hasBin: true
1614 |
1615 | regjsparser@0.10.0:
1616 | resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==}
1617 | hasBin: true
1618 |
1619 | require-directory@2.1.1:
1620 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
1621 | engines: {node: '>=0.10.0'}
1622 |
1623 | resolve-from@4.0.0:
1624 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
1625 | engines: {node: '>=4'}
1626 |
1627 | resolve@1.22.8:
1628 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
1629 | hasBin: true
1630 |
1631 | restore-cursor@4.0.0:
1632 | resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==}
1633 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1634 |
1635 | restore-cursor@5.1.0:
1636 | resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==}
1637 | engines: {node: '>=18'}
1638 |
1639 | retry@0.13.1:
1640 | resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==}
1641 | engines: {node: '>= 4'}
1642 |
1643 | reusify@1.0.4:
1644 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
1645 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
1646 |
1647 | rimraf@3.0.2:
1648 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
1649 | hasBin: true
1650 |
1651 | run-parallel@1.2.0:
1652 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
1653 |
1654 | safe-buffer@5.1.2:
1655 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
1656 |
1657 | safe-buffer@5.2.1:
1658 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
1659 |
1660 | safe-regex@2.1.1:
1661 | resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==}
1662 |
1663 | safe-stable-stringify@2.4.3:
1664 | resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==}
1665 | engines: {node: '>=10'}
1666 |
1667 | safer-buffer@2.1.2:
1668 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
1669 |
1670 | secure-json-parse@2.7.0:
1671 | resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==}
1672 |
1673 | semver@5.7.2:
1674 | resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
1675 | hasBin: true
1676 |
1677 | semver@7.5.4:
1678 | resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
1679 | engines: {node: '>=10'}
1680 | hasBin: true
1681 |
1682 | serialize-error@11.0.3:
1683 | resolution: {integrity: sha512-2G2y++21dhj2R7iHAdd0FIzjGwuKZld+7Pl/bTU6YIkrC2ZMbVUjm+luj6A6V34Rv9XfKJDKpTWu9W4Gse1D9g==}
1684 | engines: {node: '>=14.16'}
1685 |
1686 | set-function-length@1.2.0:
1687 | resolution: {integrity: sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==}
1688 | engines: {node: '>= 0.4'}
1689 |
1690 | setprototypeof@1.2.0:
1691 | resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
1692 |
1693 | shebang-command@2.0.0:
1694 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
1695 | engines: {node: '>=8'}
1696 |
1697 | shebang-regex@3.0.0:
1698 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
1699 | engines: {node: '>=8'}
1700 |
1701 | side-channel@1.0.4:
1702 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
1703 |
1704 | signal-exit@3.0.7:
1705 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
1706 |
1707 | signal-exit@4.1.0:
1708 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
1709 | engines: {node: '>=14'}
1710 |
1711 | slash@3.0.0:
1712 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
1713 | engines: {node: '>=8'}
1714 |
1715 | slash@5.1.0:
1716 | resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==}
1717 | engines: {node: '>=14.16'}
1718 |
1719 | slashes@3.0.12:
1720 | resolution: {integrity: sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==}
1721 |
1722 | slice-ansi@5.0.0:
1723 | resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==}
1724 | engines: {node: '>=12'}
1725 |
1726 | slice-ansi@7.1.0:
1727 | resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==}
1728 | engines: {node: '>=18'}
1729 |
1730 | slugify@1.6.6:
1731 | resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==}
1732 | engines: {node: '>=8.0.0'}
1733 |
1734 | sonic-boom@3.8.0:
1735 | resolution: {integrity: sha512-ybz6OYOUjoQQCQ/i4LU8kaToD8ACtYP+Cj5qd2AO36bwbdewxWJ3ArmJ2cr6AvxlL2o0PqnCcPGUgkILbfkaCA==}
1736 |
1737 | source-map@0.6.1:
1738 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
1739 | engines: {node: '>=0.10.0'}
1740 |
1741 | spdx-correct@3.2.0:
1742 | resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
1743 |
1744 | spdx-exceptions@2.4.0:
1745 | resolution: {integrity: sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==}
1746 |
1747 | spdx-expression-parse@3.0.1:
1748 | resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
1749 |
1750 | spdx-license-ids@3.0.16:
1751 | resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==}
1752 |
1753 | split-lines@3.0.0:
1754 | resolution: {integrity: sha512-d0TpRBL/VfKDXsk8JxPF7zgF5pCUDdBMSlEL36xBgVeaX448t+yGXcJaikUyzkoKOJ0l6KpMfygzJU9naIuivw==}
1755 | engines: {node: '>=12'}
1756 |
1757 | split2@4.2.0:
1758 | resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
1759 | engines: {node: '>= 10.x'}
1760 |
1761 | stacktracey@2.1.8:
1762 | resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==}
1763 |
1764 | statuses@2.0.1:
1765 | resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
1766 | engines: {node: '>= 0.8'}
1767 |
1768 | string-width@4.2.3:
1769 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
1770 | engines: {node: '>=8'}
1771 |
1772 | string-width@7.2.0:
1773 | resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==}
1774 | engines: {node: '>=18'}
1775 |
1776 | string_decoder@0.10.31:
1777 | resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==}
1778 |
1779 | string_decoder@1.1.1:
1780 | resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
1781 |
1782 | string_decoder@1.3.0:
1783 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
1784 |
1785 | strip-ansi@6.0.1:
1786 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
1787 | engines: {node: '>=8'}
1788 |
1789 | strip-ansi@7.1.0:
1790 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
1791 | engines: {node: '>=12'}
1792 |
1793 | strip-indent@3.0.0:
1794 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
1795 | engines: {node: '>=8'}
1796 |
1797 | strip-json-comments@3.1.1:
1798 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
1799 | engines: {node: '>=8'}
1800 |
1801 | strtok3@7.0.0:
1802 | resolution: {integrity: sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==}
1803 | engines: {node: '>=14.16'}
1804 |
1805 | supports-color@10.0.0:
1806 | resolution: {integrity: sha512-HRVVSbCCMbj7/kdWF9Q+bbckjBHLtHMEoJWlkmYzzdwhYMkjkOwubLM6t7NbWKjgKamGDrWL1++KrjUO1t9oAQ==}
1807 | engines: {node: '>=18'}
1808 |
1809 | supports-color@5.5.0:
1810 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
1811 | engines: {node: '>=4'}
1812 |
1813 | supports-color@7.2.0:
1814 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
1815 | engines: {node: '>=8'}
1816 |
1817 | supports-color@9.4.0:
1818 | resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==}
1819 | engines: {node: '>=12'}
1820 |
1821 | supports-preserve-symlinks-flag@1.0.0:
1822 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
1823 | engines: {node: '>= 0.4'}
1824 |
1825 | synckit@0.6.2:
1826 | resolution: {integrity: sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==}
1827 | engines: {node: '>=12.20'}
1828 |
1829 | synckit@0.8.8:
1830 | resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==}
1831 | engines: {node: ^14.18.0 || >=16.0.0}
1832 |
1833 | tempura@0.4.0:
1834 | resolution: {integrity: sha512-ghCAK7t3Yuy40NUA/pmS1aDY8M5MfZT4+S465S8YvwwDdgk3jLm/5BGwtMG/rMICDYY8T7Owe1qm91ArBOKd6w==}
1835 | engines: {node: '>=10'}
1836 |
1837 | terminal-size@4.0.0:
1838 | resolution: {integrity: sha512-rcdty1xZ2/BkWa4ANjWRp4JGpda2quksXIHgn5TMjNBPZfwzJIgR68DKfSYiTL+CZWowDX/sbOo5ME/FRURvYQ==}
1839 | engines: {node: '>=18'}
1840 |
1841 | text-table@0.2.0:
1842 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
1843 |
1844 | thread-stream@2.4.1:
1845 | resolution: {integrity: sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg==}
1846 |
1847 | through2@2.0.5:
1848 | resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==}
1849 |
1850 | time-span@5.1.0:
1851 | resolution: {integrity: sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==}
1852 | engines: {node: '>=12'}
1853 |
1854 | tmp-cache@1.1.0:
1855 | resolution: {integrity: sha512-j040fkL/x+XAZQ9K3bKGEPwgYhOZNBQLa3NXEADUiuno9C+3N2JJA4bVPDREixp604G3/vTXWA3DIPpA9lu1RQ==}
1856 | engines: {node: '>=6'}
1857 |
1858 | to-regex-range@5.0.1:
1859 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
1860 | engines: {node: '>=8.0'}
1861 |
1862 | toidentifier@1.0.1:
1863 | resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
1864 | engines: {node: '>=0.6'}
1865 |
1866 | token-types@5.0.1:
1867 | resolution: {integrity: sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==}
1868 | engines: {node: '>=14.16'}
1869 |
1870 | truncatise@0.0.8:
1871 | resolution: {integrity: sha512-cXzueh9pzBCsLzhToB4X4gZCb3KYkrsAcBAX97JnazE74HOl3cpBJYEV7nabHeG/6/WXCU5Yujlde/WPBUwnsg==}
1872 |
1873 | ts-api-utils@1.0.3:
1874 | resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==}
1875 | engines: {node: '>=16.13.0'}
1876 | peerDependencies:
1877 | typescript: '>=4.2.0'
1878 |
1879 | ts-node-maintained@10.9.4:
1880 | resolution: {integrity: sha512-Fq4c+LoWee4E0YWDBsotcBR8CB9pStBYBUuanQjXuOlLFescZ4uEODG8mdpDGGWYSCCaQXBjEgXzLIGu/NbyNw==}
1881 | hasBin: true
1882 | peerDependencies:
1883 | '@swc/core': '>=1.2.50'
1884 | '@swc/wasm': '>=1.2.50'
1885 | '@types/node': '*'
1886 | typescript: '>=2.7'
1887 | peerDependenciesMeta:
1888 | '@swc/core':
1889 | optional: true
1890 | '@swc/wasm':
1891 | optional: true
1892 |
1893 | tslib@2.6.2:
1894 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
1895 |
1896 | type-check@0.4.0:
1897 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
1898 | engines: {node: '>= 0.8.0'}
1899 |
1900 | type-fest@0.20.2:
1901 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
1902 | engines: {node: '>=10'}
1903 |
1904 | type-fest@0.6.0:
1905 | resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==}
1906 | engines: {node: '>=8'}
1907 |
1908 | type-fest@0.8.1:
1909 | resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==}
1910 | engines: {node: '>=8'}
1911 |
1912 | type-fest@2.19.0:
1913 | resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==}
1914 | engines: {node: '>=12.20'}
1915 |
1916 | type-fest@3.13.1:
1917 | resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==}
1918 | engines: {node: '>=14.16'}
1919 |
1920 | type-is@1.6.18:
1921 | resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
1922 | engines: {node: '>= 0.6'}
1923 |
1924 | typescript@5.3.3:
1925 | resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==}
1926 | engines: {node: '>=14.17'}
1927 | hasBin: true
1928 |
1929 | uid-safe@2.1.5:
1930 | resolution: {integrity: sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==}
1931 | engines: {node: '>= 0.8'}
1932 |
1933 | undici-types@6.20.0:
1934 | resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
1935 |
1936 | unpipe@1.0.0:
1937 | resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
1938 | engines: {node: '>= 0.8'}
1939 |
1940 | untildify@4.0.0:
1941 | resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==}
1942 | engines: {node: '>=8'}
1943 |
1944 | uri-js@4.4.1:
1945 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
1946 |
1947 | util-deprecate@1.0.2:
1948 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
1949 |
1950 | uuid@8.3.2:
1951 | resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
1952 | hasBin: true
1953 |
1954 | v8-compile-cache-lib@3.0.1:
1955 | resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
1956 |
1957 | validate-npm-package-license@3.0.4:
1958 | resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
1959 |
1960 | validator@13.11.0:
1961 | resolution: {integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==}
1962 | engines: {node: '>= 0.10'}
1963 |
1964 | vary@1.1.2:
1965 | resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
1966 | engines: {node: '>= 0.8'}
1967 |
1968 | which@2.0.2:
1969 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
1970 | engines: {node: '>= 8'}
1971 | hasBin: true
1972 |
1973 | wordwrap@1.0.0:
1974 | resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==}
1975 |
1976 | wrap-ansi@7.0.0:
1977 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
1978 | engines: {node: '>=10'}
1979 |
1980 | wrap-ansi@9.0.0:
1981 | resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==}
1982 | engines: {node: '>=18'}
1983 |
1984 | wrappy@1.0.2:
1985 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
1986 |
1987 | xtend@4.0.2:
1988 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
1989 | engines: {node: '>=0.4'}
1990 |
1991 | y18n@5.0.8:
1992 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
1993 | engines: {node: '>=10'}
1994 |
1995 | yallist@4.0.0:
1996 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
1997 |
1998 | yargs-parser@20.2.9:
1999 | resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
2000 | engines: {node: '>=10'}
2001 |
2002 | yargs-parser@21.1.1:
2003 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
2004 | engines: {node: '>=12'}
2005 |
2006 | yargs@16.2.0:
2007 | resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==}
2008 | engines: {node: '>=10'}
2009 |
2010 | yn@3.1.1:
2011 | resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
2012 | engines: {node: '>=6'}
2013 |
2014 | yocto-queue@0.1.0:
2015 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
2016 | engines: {node: '>=10'}
2017 |
2018 | yocto-queue@1.1.1:
2019 | resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==}
2020 | engines: {node: '>=12.20'}
2021 |
2022 | youch-terminal@2.2.3:
2023 | resolution: {integrity: sha512-/PE77ZwG072tXBvF47S9RL9/G80u86icZ5QwyjblyM67L4n/T5qQeM3Xrecbu8kkDDr/9T/PTj/X+6G/OSRQug==}
2024 |
2025 | youch@3.3.3:
2026 | resolution: {integrity: sha512-qSFXUk3UZBLfggAW3dJKg0BMblG5biqSF8M34E06o5CSsZtH92u9Hqmj2RzGiHDi64fhe83+4tENFP2DB6t6ZA==}
2027 |
2028 | snapshots:
2029 |
2030 | '@aashutoshrathi/word-wrap@1.2.6': {}
2031 |
2032 | '@adonisjs/ace@13.0.0':
2033 | dependencies:
2034 | '@poppinss/cliui': 6.3.0
2035 | '@poppinss/hooks': 7.2.2
2036 | '@poppinss/macroable': 1.0.1
2037 | '@poppinss/prompts': 3.1.2
2038 | '@poppinss/utils': 6.7.1
2039 | fastest-levenshtein: 1.0.16
2040 | jsonschema: 1.4.1
2041 | string-width: 7.2.0
2042 | yargs-parser: 21.1.1
2043 | youch: 3.3.3
2044 | youch-terminal: 2.2.3
2045 |
2046 | '@adonisjs/application@8.0.2(@adonisjs/config@5.0.1)(@adonisjs/fold@10.0.1)':
2047 | dependencies:
2048 | '@adonisjs/config': 5.0.1
2049 | '@adonisjs/fold': 10.0.1
2050 | '@poppinss/hooks': 7.2.2
2051 | '@poppinss/macroable': 1.0.1
2052 | '@poppinss/utils': 6.7.1
2053 | glob-parent: 6.0.2
2054 | tempura: 0.4.0
2055 |
2056 | '@adonisjs/bodyparser@10.0.1(@adonisjs/http-server@7.0.2(@adonisjs/application@8.0.2(@adonisjs/config@5.0.1)(@adonisjs/fold@10.0.1))(@adonisjs/encryption@6.0.1)(@adonisjs/events@9.0.1(@adonisjs/application@8.0.2(@adonisjs/config@5.0.1)(@adonisjs/fold@10.0.1))(@adonisjs/fold@10.0.1))(@adonisjs/fold@10.0.1)(@adonisjs/logger@6.0.1))':
2057 | dependencies:
2058 | '@adonisjs/http-server': 7.0.2(@adonisjs/application@8.0.2(@adonisjs/config@5.0.1)(@adonisjs/fold@10.0.1))(@adonisjs/encryption@6.0.1)(@adonisjs/events@9.0.1(@adonisjs/application@8.0.2(@adonisjs/config@5.0.1)(@adonisjs/fold@10.0.1))(@adonisjs/fold@10.0.1))(@adonisjs/fold@10.0.1)(@adonisjs/logger@6.0.1)
2059 | '@paralleldrive/cuid2': 2.2.2
2060 | '@poppinss/macroable': 1.0.1
2061 | '@poppinss/multiparty': 2.0.1
2062 | '@poppinss/utils': 6.7.1
2063 | '@types/qs': 6.9.11
2064 | bytes: 3.1.2
2065 | file-type: 19.0.0
2066 | inflation: 2.1.0
2067 | media-typer: 1.1.0
2068 | qs: 6.11.2
2069 | raw-body: 2.5.2
2070 |
2071 | '@adonisjs/config@5.0.1':
2072 | dependencies:
2073 | '@poppinss/utils': 6.7.1
2074 |
2075 | '@adonisjs/core@6.2.1':
2076 | dependencies:
2077 | '@adonisjs/ace': 13.0.0
2078 | '@adonisjs/application': 8.0.2(@adonisjs/config@5.0.1)(@adonisjs/fold@10.0.1)
2079 | '@adonisjs/bodyparser': 10.0.1(@adonisjs/http-server@7.0.2(@adonisjs/application@8.0.2(@adonisjs/config@5.0.1)(@adonisjs/fold@10.0.1))(@adonisjs/encryption@6.0.1)(@adonisjs/events@9.0.1(@adonisjs/application@8.0.2(@adonisjs/config@5.0.1)(@adonisjs/fold@10.0.1))(@adonisjs/fold@10.0.1))(@adonisjs/fold@10.0.1)(@adonisjs/logger@6.0.1))
2080 | '@adonisjs/config': 5.0.1
2081 | '@adonisjs/encryption': 6.0.1
2082 | '@adonisjs/env': 5.0.1
2083 | '@adonisjs/events': 9.0.1(@adonisjs/application@8.0.2(@adonisjs/config@5.0.1)(@adonisjs/fold@10.0.1))(@adonisjs/fold@10.0.1)
2084 | '@adonisjs/fold': 10.0.1
2085 | '@adonisjs/hash': 9.0.1
2086 | '@adonisjs/http-server': 7.0.2(@adonisjs/application@8.0.2(@adonisjs/config@5.0.1)(@adonisjs/fold@10.0.1))(@adonisjs/encryption@6.0.1)(@adonisjs/events@9.0.1(@adonisjs/application@8.0.2(@adonisjs/config@5.0.1)(@adonisjs/fold@10.0.1))(@adonisjs/fold@10.0.1))(@adonisjs/fold@10.0.1)(@adonisjs/logger@6.0.1)
2087 | '@adonisjs/logger': 6.0.1
2088 | '@adonisjs/repl': 4.0.1
2089 | '@paralleldrive/cuid2': 2.2.2
2090 | '@poppinss/macroable': 1.0.1
2091 | '@poppinss/utils': 6.7.1
2092 | '@sindresorhus/is': 6.1.0
2093 | '@types/he': 1.2.3
2094 | he: 1.2.0
2095 | parse-imports: 1.1.2
2096 | pretty-hrtime: 1.0.3
2097 | string-width: 7.2.0
2098 | youch: 3.3.3
2099 | youch-terminal: 2.2.3
2100 |
2101 | '@adonisjs/encryption@6.0.1':
2102 | dependencies:
2103 | '@poppinss/utils': 6.7.1
2104 |
2105 | '@adonisjs/env@5.0.1':
2106 | dependencies:
2107 | '@poppinss/utils': 6.7.1
2108 | '@poppinss/validator-lite': 1.0.3
2109 | dotenv: 16.4.1
2110 | split-lines: 3.0.0
2111 |
2112 | '@adonisjs/eslint-config@1.2.1(eslint@8.56.0)(prettier@2.8.8)(typescript@5.3.3)':
2113 | dependencies:
2114 | '@adonisjs/eslint-plugin': 1.2.1(eslint@8.56.0)(typescript@5.3.3)
2115 | '@typescript-eslint/eslint-plugin': 6.19.1(@typescript-eslint/parser@6.19.1(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3)
2116 | '@typescript-eslint/parser': 6.19.1(eslint@8.56.0)(typescript@5.3.3)
2117 | eslint: 8.56.0
2118 | eslint-config-prettier: 8.10.0(eslint@8.56.0)
2119 | eslint-plugin-jsonc: 2.13.0(eslint@8.56.0)
2120 | eslint-plugin-prettier: 5.1.3(eslint-config-prettier@8.10.0(eslint@8.56.0))(eslint@8.56.0)(prettier@2.8.8)
2121 | eslint-plugin-unicorn: 47.0.0(eslint@8.56.0)
2122 | jsonc-eslint-parser: 2.4.0
2123 | prettier: 2.8.8
2124 | transitivePeerDependencies:
2125 | - '@types/eslint'
2126 | - supports-color
2127 | - typescript
2128 |
2129 | '@adonisjs/eslint-plugin@1.2.1(eslint@8.56.0)(typescript@5.3.3)':
2130 | dependencies:
2131 | '@typescript-eslint/utils': 6.19.1(eslint@8.56.0)(typescript@5.3.3)
2132 | transitivePeerDependencies:
2133 | - eslint
2134 | - supports-color
2135 | - typescript
2136 |
2137 | '@adonisjs/events@9.0.1(@adonisjs/application@8.0.2(@adonisjs/config@5.0.1)(@adonisjs/fold@10.0.1))(@adonisjs/fold@10.0.1)':
2138 | dependencies:
2139 | '@adonisjs/application': 8.0.2(@adonisjs/config@5.0.1)(@adonisjs/fold@10.0.1)
2140 | '@adonisjs/fold': 10.0.1
2141 | '@poppinss/utils': 6.7.1
2142 | '@sindresorhus/is': 6.1.0
2143 | emittery: 1.0.1
2144 |
2145 | '@adonisjs/fold@10.0.1':
2146 | dependencies:
2147 | '@poppinss/utils': 6.7.1
2148 |
2149 | '@adonisjs/hash@9.0.1':
2150 | dependencies:
2151 | '@phc/format': 1.0.0
2152 | '@poppinss/utils': 6.7.1
2153 |
2154 | '@adonisjs/http-server@7.0.2(@adonisjs/application@8.0.2(@adonisjs/config@5.0.1)(@adonisjs/fold@10.0.1))(@adonisjs/encryption@6.0.1)(@adonisjs/events@9.0.1(@adonisjs/application@8.0.2(@adonisjs/config@5.0.1)(@adonisjs/fold@10.0.1))(@adonisjs/fold@10.0.1))(@adonisjs/fold@10.0.1)(@adonisjs/logger@6.0.1)':
2155 | dependencies:
2156 | '@adonisjs/application': 8.0.2(@adonisjs/config@5.0.1)(@adonisjs/fold@10.0.1)
2157 | '@adonisjs/encryption': 6.0.1
2158 | '@adonisjs/events': 9.0.1(@adonisjs/application@8.0.2(@adonisjs/config@5.0.1)(@adonisjs/fold@10.0.1))(@adonisjs/fold@10.0.1)
2159 | '@adonisjs/fold': 10.0.1
2160 | '@adonisjs/logger': 6.0.1
2161 | '@paralleldrive/cuid2': 2.2.2
2162 | '@poppinss/macroable': 1.0.1
2163 | '@poppinss/matchit': 3.1.2
2164 | '@poppinss/middleware': 3.2.2
2165 | '@poppinss/utils': 6.7.1
2166 | '@sindresorhus/is': 6.1.0
2167 | accepts: 1.3.8
2168 | content-disposition: 0.5.4
2169 | cookie: 0.6.0
2170 | destroy: 1.2.0
2171 | encodeurl: 1.0.2
2172 | etag: 1.8.1
2173 | fresh: 0.5.2
2174 | mime-types: 2.1.35
2175 | on-finished: 2.4.1
2176 | proxy-addr: 2.0.7
2177 | qs: 6.11.2
2178 | tmp-cache: 1.1.0
2179 | type-is: 1.6.18
2180 | vary: 1.1.2
2181 | youch: 3.3.3
2182 |
2183 | '@adonisjs/logger@6.0.1':
2184 | dependencies:
2185 | '@poppinss/utils': 6.7.1
2186 | abstract-logging: 2.0.1
2187 | pino: 8.17.2
2188 |
2189 | '@adonisjs/prettier-config@1.2.1': {}
2190 |
2191 | '@adonisjs/repl@4.0.1':
2192 | dependencies:
2193 | '@poppinss/colors': 4.1.2
2194 | string-width: 7.2.0
2195 |
2196 | '@adonisjs/tsconfig@1.2.1': {}
2197 |
2198 | '@arr/every@1.0.1': {}
2199 |
2200 | '@babel/code-frame@7.23.5':
2201 | dependencies:
2202 | '@babel/highlight': 7.23.4
2203 | chalk: 2.4.2
2204 |
2205 | '@babel/helper-validator-identifier@7.22.20': {}
2206 |
2207 | '@babel/highlight@7.23.4':
2208 | dependencies:
2209 | '@babel/helper-validator-identifier': 7.22.20
2210 | chalk: 2.4.2
2211 | js-tokens: 4.0.0
2212 |
2213 | '@colors/colors@1.5.0':
2214 | optional: true
2215 |
2216 | '@cspotcode/source-map-support@0.8.1':
2217 | dependencies:
2218 | '@jridgewell/trace-mapping': 0.3.9
2219 |
2220 | '@eslint-community/eslint-utils@4.4.0(eslint@8.56.0)':
2221 | dependencies:
2222 | eslint: 8.56.0
2223 | eslint-visitor-keys: 3.4.3
2224 |
2225 | '@eslint-community/regexpp@4.10.0': {}
2226 |
2227 | '@eslint/eslintrc@2.1.4':
2228 | dependencies:
2229 | ajv: 6.12.6
2230 | debug: 4.3.4
2231 | espree: 9.6.1
2232 | globals: 13.24.0
2233 | ignore: 5.3.0
2234 | import-fresh: 3.3.0
2235 | js-yaml: 4.1.0
2236 | minimatch: 3.1.2
2237 | strip-json-comments: 3.1.1
2238 | transitivePeerDependencies:
2239 | - supports-color
2240 |
2241 | '@eslint/js@8.56.0': {}
2242 |
2243 | '@humanwhocodes/config-array@0.11.14':
2244 | dependencies:
2245 | '@humanwhocodes/object-schema': 2.0.2
2246 | debug: 4.3.4
2247 | minimatch: 3.1.2
2248 | transitivePeerDependencies:
2249 | - supports-color
2250 |
2251 | '@humanwhocodes/module-importer@1.0.1': {}
2252 |
2253 | '@humanwhocodes/object-schema@2.0.2': {}
2254 |
2255 | '@japa/assert@4.0.0(@japa/runner@3.1.4)':
2256 | dependencies:
2257 | '@japa/runner': 3.1.4
2258 | '@poppinss/macroable': 1.0.4
2259 | '@types/chai': 5.0.1
2260 | assertion-error: 2.0.1
2261 | chai: 5.1.2
2262 |
2263 | '@japa/core@9.0.1':
2264 | dependencies:
2265 | '@poppinss/cliui': 6.4.2
2266 | '@poppinss/hooks': 7.2.5
2267 | '@poppinss/macroable': 1.0.4
2268 | async-retry: 1.3.3
2269 | emittery: 1.0.3
2270 | string-width: 7.2.0
2271 | time-span: 5.1.0
2272 |
2273 | '@japa/errors-printer@3.0.4':
2274 | dependencies:
2275 | '@poppinss/colors': 4.1.4
2276 | jest-diff: 29.7.0
2277 | supports-color: 9.4.0
2278 | youch: 3.3.3
2279 | youch-terminal: 2.2.3
2280 |
2281 | '@japa/runner@3.1.4':
2282 | dependencies:
2283 | '@japa/core': 9.0.1
2284 | '@japa/errors-printer': 3.0.4
2285 | '@poppinss/colors': 4.1.4
2286 | '@poppinss/hooks': 7.2.5
2287 | fast-glob: 3.3.2
2288 | find-cache-dir: 5.0.0
2289 | getopts: 2.3.0
2290 | ms: 2.1.3
2291 | serialize-error: 11.0.3
2292 | slash: 5.1.0
2293 | supports-color: 9.4.0
2294 |
2295 | '@jest/schemas@29.6.3':
2296 | dependencies:
2297 | '@sinclair/typebox': 0.27.8
2298 |
2299 | '@jridgewell/resolve-uri@3.1.1': {}
2300 |
2301 | '@jridgewell/sourcemap-codec@1.4.15': {}
2302 |
2303 | '@jridgewell/trace-mapping@0.3.9':
2304 | dependencies:
2305 | '@jridgewell/resolve-uri': 3.1.1
2306 | '@jridgewell/sourcemap-codec': 1.4.15
2307 |
2308 | '@lukeed/ms@2.0.2': {}
2309 |
2310 | '@noble/hashes@1.3.3': {}
2311 |
2312 | '@nodelib/fs.scandir@2.1.5':
2313 | dependencies:
2314 | '@nodelib/fs.stat': 2.0.5
2315 | run-parallel: 1.2.0
2316 |
2317 | '@nodelib/fs.stat@2.0.5': {}
2318 |
2319 | '@nodelib/fs.walk@1.2.8':
2320 | dependencies:
2321 | '@nodelib/fs.scandir': 2.1.5
2322 | fastq: 1.16.0
2323 |
2324 | '@paralleldrive/cuid2@2.2.2':
2325 | dependencies:
2326 | '@noble/hashes': 1.3.3
2327 |
2328 | '@phc/format@1.0.0': {}
2329 |
2330 | '@pkgr/core@0.1.1': {}
2331 |
2332 | '@poppinss/cliui@6.3.0':
2333 | dependencies:
2334 | '@poppinss/colors': 4.1.2
2335 | cli-boxes: 3.0.0
2336 | cli-table3: 0.6.3
2337 | cli-truncate: 4.0.0
2338 | log-update: 6.0.0
2339 | pretty-hrtime: 1.0.3
2340 | string-width: 7.2.0
2341 | supports-color: 9.4.0
2342 | terminal-size: 4.0.0
2343 | wordwrap: 1.0.0
2344 |
2345 | '@poppinss/cliui@6.4.2':
2346 | dependencies:
2347 | '@poppinss/colors': 4.1.4
2348 | cli-boxes: 4.0.1
2349 | cli-table3: 0.6.5
2350 | cli-truncate: 4.0.0
2351 | log-update: 6.1.0
2352 | pretty-hrtime: 1.0.3
2353 | string-width: 7.2.0
2354 | supports-color: 10.0.0
2355 | terminal-size: 4.0.0
2356 | wordwrap: 1.0.0
2357 |
2358 | '@poppinss/colors@4.1.2':
2359 | dependencies:
2360 | kleur: 4.1.5
2361 |
2362 | '@poppinss/colors@4.1.4':
2363 | dependencies:
2364 | kleur: 4.1.5
2365 |
2366 | '@poppinss/hooks@7.2.2': {}
2367 |
2368 | '@poppinss/hooks@7.2.5': {}
2369 |
2370 | '@poppinss/macroable@1.0.1': {}
2371 |
2372 | '@poppinss/macroable@1.0.4': {}
2373 |
2374 | '@poppinss/matchit@3.1.2':
2375 | dependencies:
2376 | '@arr/every': 1.0.1
2377 |
2378 | '@poppinss/middleware@3.2.2': {}
2379 |
2380 | '@poppinss/multiparty@2.0.1':
2381 | dependencies:
2382 | http-errors: 2.0.0
2383 | safe-buffer: 5.2.1
2384 | uid-safe: 2.1.5
2385 |
2386 | '@poppinss/prompts@3.1.2':
2387 | dependencies:
2388 | '@poppinss/colors': 4.1.2
2389 | '@poppinss/utils': 6.7.1
2390 | enquirer: 2.4.1
2391 |
2392 | '@poppinss/utils@6.7.1':
2393 | dependencies:
2394 | '@lukeed/ms': 2.0.2
2395 | '@types/bytes': 3.1.4
2396 | '@types/pluralize': 0.0.33
2397 | bytes: 3.1.2
2398 | case-anything: 2.1.13
2399 | flattie: 1.1.0
2400 | pluralize: 8.0.0
2401 | safe-stable-stringify: 2.4.3
2402 | secure-json-parse: 2.7.0
2403 | slash: 5.1.0
2404 | slugify: 1.6.6
2405 | truncatise: 0.0.8
2406 |
2407 | '@poppinss/validator-lite@1.0.3':
2408 | dependencies:
2409 | validator: 13.11.0
2410 |
2411 | '@sinclair/typebox@0.27.8': {}
2412 |
2413 | '@sindresorhus/is@6.1.0': {}
2414 |
2415 | '@swc/core-darwin-arm64@1.3.105':
2416 | optional: true
2417 |
2418 | '@swc/core-darwin-x64@1.3.105':
2419 | optional: true
2420 |
2421 | '@swc/core-linux-arm-gnueabihf@1.3.105':
2422 | optional: true
2423 |
2424 | '@swc/core-linux-arm64-gnu@1.3.105':
2425 | optional: true
2426 |
2427 | '@swc/core-linux-arm64-musl@1.3.105':
2428 | optional: true
2429 |
2430 | '@swc/core-linux-x64-gnu@1.3.105':
2431 | optional: true
2432 |
2433 | '@swc/core-linux-x64-musl@1.3.105':
2434 | optional: true
2435 |
2436 | '@swc/core-win32-arm64-msvc@1.3.105':
2437 | optional: true
2438 |
2439 | '@swc/core-win32-ia32-msvc@1.3.105':
2440 | optional: true
2441 |
2442 | '@swc/core-win32-x64-msvc@1.3.105':
2443 | optional: true
2444 |
2445 | '@swc/core@1.3.105':
2446 | dependencies:
2447 | '@swc/counter': 0.1.2
2448 | '@swc/types': 0.1.5
2449 | optionalDependencies:
2450 | '@swc/core-darwin-arm64': 1.3.105
2451 | '@swc/core-darwin-x64': 1.3.105
2452 | '@swc/core-linux-arm-gnueabihf': 1.3.105
2453 | '@swc/core-linux-arm64-gnu': 1.3.105
2454 | '@swc/core-linux-arm64-musl': 1.3.105
2455 | '@swc/core-linux-x64-gnu': 1.3.105
2456 | '@swc/core-linux-x64-musl': 1.3.105
2457 | '@swc/core-win32-arm64-msvc': 1.3.105
2458 | '@swc/core-win32-ia32-msvc': 1.3.105
2459 | '@swc/core-win32-x64-msvc': 1.3.105
2460 |
2461 | '@swc/counter@0.1.2': {}
2462 |
2463 | '@swc/types@0.1.5': {}
2464 |
2465 | '@tokenizer/token@0.3.0': {}
2466 |
2467 | '@tsconfig/node10@1.0.9': {}
2468 |
2469 | '@tsconfig/node12@1.0.11': {}
2470 |
2471 | '@tsconfig/node14@1.0.3': {}
2472 |
2473 | '@tsconfig/node16@1.0.4': {}
2474 |
2475 | '@types/async-lock@1.4.2': {}
2476 |
2477 | '@types/bytes@3.1.4': {}
2478 |
2479 | '@types/chai@5.0.1':
2480 | dependencies:
2481 | '@types/deep-eql': 4.0.2
2482 |
2483 | '@types/deep-eql@4.0.2': {}
2484 |
2485 | '@types/he@1.2.3': {}
2486 |
2487 | '@types/json-schema@7.0.15': {}
2488 |
2489 | '@types/luxon@3.4.2': {}
2490 |
2491 | '@types/node-cron@3.0.11': {}
2492 |
2493 | '@types/node@22.10.1':
2494 | dependencies:
2495 | undici-types: 6.20.0
2496 |
2497 | '@types/normalize-package-data@2.4.4': {}
2498 |
2499 | '@types/pluralize@0.0.33': {}
2500 |
2501 | '@types/qs@6.9.11': {}
2502 |
2503 | '@types/semver@7.5.6': {}
2504 |
2505 | '@typescript-eslint/eslint-plugin@6.19.1(@typescript-eslint/parser@6.19.1(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3)':
2506 | dependencies:
2507 | '@eslint-community/regexpp': 4.10.0
2508 | '@typescript-eslint/parser': 6.19.1(eslint@8.56.0)(typescript@5.3.3)
2509 | '@typescript-eslint/scope-manager': 6.19.1
2510 | '@typescript-eslint/type-utils': 6.19.1(eslint@8.56.0)(typescript@5.3.3)
2511 | '@typescript-eslint/utils': 6.19.1(eslint@8.56.0)(typescript@5.3.3)
2512 | '@typescript-eslint/visitor-keys': 6.19.1
2513 | debug: 4.3.4
2514 | eslint: 8.56.0
2515 | graphemer: 1.4.0
2516 | ignore: 5.3.0
2517 | natural-compare: 1.4.0
2518 | semver: 7.5.4
2519 | ts-api-utils: 1.0.3(typescript@5.3.3)
2520 | optionalDependencies:
2521 | typescript: 5.3.3
2522 | transitivePeerDependencies:
2523 | - supports-color
2524 |
2525 | '@typescript-eslint/parser@6.19.1(eslint@8.56.0)(typescript@5.3.3)':
2526 | dependencies:
2527 | '@typescript-eslint/scope-manager': 6.19.1
2528 | '@typescript-eslint/types': 6.19.1
2529 | '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.3.3)
2530 | '@typescript-eslint/visitor-keys': 6.19.1
2531 | debug: 4.3.4
2532 | eslint: 8.56.0
2533 | optionalDependencies:
2534 | typescript: 5.3.3
2535 | transitivePeerDependencies:
2536 | - supports-color
2537 |
2538 | '@typescript-eslint/scope-manager@6.19.1':
2539 | dependencies:
2540 | '@typescript-eslint/types': 6.19.1
2541 | '@typescript-eslint/visitor-keys': 6.19.1
2542 |
2543 | '@typescript-eslint/type-utils@6.19.1(eslint@8.56.0)(typescript@5.3.3)':
2544 | dependencies:
2545 | '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.3.3)
2546 | '@typescript-eslint/utils': 6.19.1(eslint@8.56.0)(typescript@5.3.3)
2547 | debug: 4.3.4
2548 | eslint: 8.56.0
2549 | ts-api-utils: 1.0.3(typescript@5.3.3)
2550 | optionalDependencies:
2551 | typescript: 5.3.3
2552 | transitivePeerDependencies:
2553 | - supports-color
2554 |
2555 | '@typescript-eslint/types@6.19.1': {}
2556 |
2557 | '@typescript-eslint/typescript-estree@6.19.1(typescript@5.3.3)':
2558 | dependencies:
2559 | '@typescript-eslint/types': 6.19.1
2560 | '@typescript-eslint/visitor-keys': 6.19.1
2561 | debug: 4.3.4
2562 | globby: 11.1.0
2563 | is-glob: 4.0.3
2564 | minimatch: 9.0.3
2565 | semver: 7.5.4
2566 | ts-api-utils: 1.0.3(typescript@5.3.3)
2567 | optionalDependencies:
2568 | typescript: 5.3.3
2569 | transitivePeerDependencies:
2570 | - supports-color
2571 |
2572 | '@typescript-eslint/utils@6.19.1(eslint@8.56.0)(typescript@5.3.3)':
2573 | dependencies:
2574 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
2575 | '@types/json-schema': 7.0.15
2576 | '@types/semver': 7.5.6
2577 | '@typescript-eslint/scope-manager': 6.19.1
2578 | '@typescript-eslint/types': 6.19.1
2579 | '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.3.3)
2580 | eslint: 8.56.0
2581 | semver: 7.5.4
2582 | transitivePeerDependencies:
2583 | - supports-color
2584 | - typescript
2585 |
2586 | '@typescript-eslint/visitor-keys@6.19.1':
2587 | dependencies:
2588 | '@typescript-eslint/types': 6.19.1
2589 | eslint-visitor-keys: 3.4.3
2590 |
2591 | '@ungap/structured-clone@1.2.0': {}
2592 |
2593 | abort-controller@3.0.0:
2594 | dependencies:
2595 | event-target-shim: 5.0.1
2596 |
2597 | abstract-logging@2.0.1: {}
2598 |
2599 | accepts@1.3.8:
2600 | dependencies:
2601 | mime-types: 2.1.35
2602 | negotiator: 0.6.3
2603 |
2604 | acorn-jsx@5.3.2(acorn@8.11.3):
2605 | dependencies:
2606 | acorn: 8.11.3
2607 |
2608 | acorn-walk@8.3.2: {}
2609 |
2610 | acorn@8.11.3: {}
2611 |
2612 | ajv@6.12.6:
2613 | dependencies:
2614 | fast-deep-equal: 3.1.3
2615 | fast-json-stable-stringify: 2.1.0
2616 | json-schema-traverse: 0.4.1
2617 | uri-js: 4.4.1
2618 |
2619 | ansi-colors@4.1.3: {}
2620 |
2621 | ansi-escapes@6.2.0:
2622 | dependencies:
2623 | type-fest: 3.13.1
2624 |
2625 | ansi-escapes@7.0.0:
2626 | dependencies:
2627 | environment: 1.1.0
2628 |
2629 | ansi-regex@5.0.1: {}
2630 |
2631 | ansi-regex@6.0.1: {}
2632 |
2633 | ansi-styles@3.2.1:
2634 | dependencies:
2635 | color-convert: 1.9.3
2636 |
2637 | ansi-styles@4.3.0:
2638 | dependencies:
2639 | color-convert: 2.0.1
2640 |
2641 | ansi-styles@5.2.0: {}
2642 |
2643 | ansi-styles@6.2.1: {}
2644 |
2645 | arg@4.1.3: {}
2646 |
2647 | argparse@2.0.1: {}
2648 |
2649 | array-union@2.1.0: {}
2650 |
2651 | as-table@1.0.55:
2652 | dependencies:
2653 | printable-characters: 1.0.42
2654 |
2655 | assertion-error@2.0.1: {}
2656 |
2657 | async-lock@1.4.1: {}
2658 |
2659 | async-retry@1.3.3:
2660 | dependencies:
2661 | retry: 0.13.1
2662 |
2663 | atomic-sleep@1.0.0: {}
2664 |
2665 | balanced-match@1.0.2: {}
2666 |
2667 | base64-js@1.5.1: {}
2668 |
2669 | brace-expansion@1.1.11:
2670 | dependencies:
2671 | balanced-match: 1.0.2
2672 | concat-map: 0.0.1
2673 |
2674 | brace-expansion@2.0.1:
2675 | dependencies:
2676 | balanced-match: 1.0.2
2677 |
2678 | braces@3.0.2:
2679 | dependencies:
2680 | fill-range: 7.0.1
2681 |
2682 | buffer@6.0.3:
2683 | dependencies:
2684 | base64-js: 1.5.1
2685 | ieee754: 1.2.1
2686 |
2687 | builtin-modules@3.3.0: {}
2688 |
2689 | bytes@3.1.2: {}
2690 |
2691 | call-bind@1.0.5:
2692 | dependencies:
2693 | function-bind: 1.1.2
2694 | get-intrinsic: 1.2.2
2695 | set-function-length: 1.2.0
2696 |
2697 | callsites@3.1.0: {}
2698 |
2699 | case-anything@2.1.13: {}
2700 |
2701 | chai@5.1.2:
2702 | dependencies:
2703 | assertion-error: 2.0.1
2704 | check-error: 2.1.1
2705 | deep-eql: 5.0.2
2706 | loupe: 3.1.2
2707 | pathval: 2.0.0
2708 |
2709 | chalk@2.4.2:
2710 | dependencies:
2711 | ansi-styles: 3.2.1
2712 | escape-string-regexp: 1.0.5
2713 | supports-color: 5.5.0
2714 |
2715 | chalk@4.1.2:
2716 | dependencies:
2717 | ansi-styles: 4.3.0
2718 | supports-color: 7.2.0
2719 |
2720 | check-error@2.1.1: {}
2721 |
2722 | chokidar@4.0.2:
2723 | dependencies:
2724 | readdirp: 4.0.2
2725 |
2726 | ci-info@3.9.0: {}
2727 |
2728 | clean-regexp@1.0.0:
2729 | dependencies:
2730 | escape-string-regexp: 1.0.5
2731 |
2732 | cli-boxes@3.0.0: {}
2733 |
2734 | cli-boxes@4.0.1: {}
2735 |
2736 | cli-cursor@4.0.0:
2737 | dependencies:
2738 | restore-cursor: 4.0.0
2739 |
2740 | cli-cursor@5.0.0:
2741 | dependencies:
2742 | restore-cursor: 5.1.0
2743 |
2744 | cli-table3@0.6.3:
2745 | dependencies:
2746 | string-width: 4.2.3
2747 | optionalDependencies:
2748 | '@colors/colors': 1.5.0
2749 |
2750 | cli-table3@0.6.5:
2751 | dependencies:
2752 | string-width: 4.2.3
2753 | optionalDependencies:
2754 | '@colors/colors': 1.5.0
2755 |
2756 | cli-truncate@4.0.0:
2757 | dependencies:
2758 | slice-ansi: 5.0.0
2759 | string-width: 7.2.0
2760 |
2761 | cliui@7.0.4:
2762 | dependencies:
2763 | string-width: 4.2.3
2764 | strip-ansi: 6.0.1
2765 | wrap-ansi: 7.0.0
2766 |
2767 | color-convert@1.9.3:
2768 | dependencies:
2769 | color-name: 1.1.3
2770 |
2771 | color-convert@2.0.1:
2772 | dependencies:
2773 | color-name: 1.1.4
2774 |
2775 | color-name@1.1.3: {}
2776 |
2777 | color-name@1.1.4: {}
2778 |
2779 | common-path-prefix@3.0.0: {}
2780 |
2781 | concat-map@0.0.1: {}
2782 |
2783 | content-disposition@0.5.4:
2784 | dependencies:
2785 | safe-buffer: 5.2.1
2786 |
2787 | convert-hrtime@5.0.0: {}
2788 |
2789 | cookie@0.5.0: {}
2790 |
2791 | cookie@0.6.0: {}
2792 |
2793 | copyfiles@2.4.1:
2794 | dependencies:
2795 | glob: 7.2.3
2796 | minimatch: 3.1.2
2797 | mkdirp: 1.0.4
2798 | noms: 0.0.0
2799 | through2: 2.0.5
2800 | untildify: 4.0.0
2801 | yargs: 16.2.0
2802 |
2803 | core-util-is@1.0.3: {}
2804 |
2805 | create-require@1.1.1: {}
2806 |
2807 | cron-parser@5.0.4:
2808 | dependencies:
2809 | luxon: 3.5.0
2810 |
2811 | cross-spawn@7.0.3:
2812 | dependencies:
2813 | path-key: 3.1.1
2814 | shebang-command: 2.0.0
2815 | which: 2.0.2
2816 |
2817 | data-uri-to-buffer@2.0.2: {}
2818 |
2819 | debug@4.3.4:
2820 | dependencies:
2821 | ms: 2.1.2
2822 |
2823 | deep-eql@5.0.2: {}
2824 |
2825 | deep-is@0.1.4: {}
2826 |
2827 | define-data-property@1.1.1:
2828 | dependencies:
2829 | get-intrinsic: 1.2.2
2830 | gopd: 1.0.1
2831 | has-property-descriptors: 1.0.1
2832 |
2833 | depd@2.0.0: {}
2834 |
2835 | destroy@1.2.0: {}
2836 |
2837 | diff-sequences@29.6.3: {}
2838 |
2839 | diff@4.0.2: {}
2840 |
2841 | dir-glob@3.0.1:
2842 | dependencies:
2843 | path-type: 4.0.0
2844 |
2845 | doctrine@3.0.0:
2846 | dependencies:
2847 | esutils: 2.0.3
2848 |
2849 | dotenv@16.4.1: {}
2850 |
2851 | ee-first@1.1.1: {}
2852 |
2853 | emittery@1.0.1: {}
2854 |
2855 | emittery@1.0.3: {}
2856 |
2857 | emoji-regex@10.3.0: {}
2858 |
2859 | emoji-regex@8.0.0: {}
2860 |
2861 | encodeurl@1.0.2: {}
2862 |
2863 | enquirer@2.4.1:
2864 | dependencies:
2865 | ansi-colors: 4.1.3
2866 | strip-ansi: 6.0.1
2867 |
2868 | environment@1.1.0: {}
2869 |
2870 | error-ex@1.3.2:
2871 | dependencies:
2872 | is-arrayish: 0.2.1
2873 |
2874 | es-module-lexer@1.4.1: {}
2875 |
2876 | escalade@3.1.1: {}
2877 |
2878 | escape-string-regexp@1.0.5: {}
2879 |
2880 | escape-string-regexp@4.0.0: {}
2881 |
2882 | eslint-compat-utils@0.4.1(eslint@8.56.0):
2883 | dependencies:
2884 | eslint: 8.56.0
2885 | semver: 7.5.4
2886 |
2887 | eslint-config-prettier@8.10.0(eslint@8.56.0):
2888 | dependencies:
2889 | eslint: 8.56.0
2890 |
2891 | eslint-plugin-jsonc@2.13.0(eslint@8.56.0):
2892 | dependencies:
2893 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
2894 | eslint: 8.56.0
2895 | eslint-compat-utils: 0.4.1(eslint@8.56.0)
2896 | espree: 9.6.1
2897 | graphemer: 1.4.0
2898 | jsonc-eslint-parser: 2.4.0
2899 | natural-compare: 1.4.0
2900 | synckit: 0.6.2
2901 |
2902 | eslint-plugin-prettier@5.1.3(eslint-config-prettier@8.10.0(eslint@8.56.0))(eslint@8.56.0)(prettier@2.8.8):
2903 | dependencies:
2904 | eslint: 8.56.0
2905 | prettier: 2.8.8
2906 | prettier-linter-helpers: 1.0.0
2907 | synckit: 0.8.8
2908 | optionalDependencies:
2909 | eslint-config-prettier: 8.10.0(eslint@8.56.0)
2910 |
2911 | eslint-plugin-unicorn@47.0.0(eslint@8.56.0):
2912 | dependencies:
2913 | '@babel/helper-validator-identifier': 7.22.20
2914 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
2915 | ci-info: 3.9.0
2916 | clean-regexp: 1.0.0
2917 | eslint: 8.56.0
2918 | esquery: 1.5.0
2919 | indent-string: 4.0.0
2920 | is-builtin-module: 3.2.1
2921 | jsesc: 3.0.2
2922 | lodash: 4.17.21
2923 | pluralize: 8.0.0
2924 | read-pkg-up: 7.0.1
2925 | regexp-tree: 0.1.27
2926 | regjsparser: 0.10.0
2927 | safe-regex: 2.1.1
2928 | semver: 7.5.4
2929 | strip-indent: 3.0.0
2930 |
2931 | eslint-scope@7.2.2:
2932 | dependencies:
2933 | esrecurse: 4.3.0
2934 | estraverse: 5.3.0
2935 |
2936 | eslint-visitor-keys@3.4.3: {}
2937 |
2938 | eslint@8.56.0:
2939 | dependencies:
2940 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
2941 | '@eslint-community/regexpp': 4.10.0
2942 | '@eslint/eslintrc': 2.1.4
2943 | '@eslint/js': 8.56.0
2944 | '@humanwhocodes/config-array': 0.11.14
2945 | '@humanwhocodes/module-importer': 1.0.1
2946 | '@nodelib/fs.walk': 1.2.8
2947 | '@ungap/structured-clone': 1.2.0
2948 | ajv: 6.12.6
2949 | chalk: 4.1.2
2950 | cross-spawn: 7.0.3
2951 | debug: 4.3.4
2952 | doctrine: 3.0.0
2953 | escape-string-regexp: 4.0.0
2954 | eslint-scope: 7.2.2
2955 | eslint-visitor-keys: 3.4.3
2956 | espree: 9.6.1
2957 | esquery: 1.5.0
2958 | esutils: 2.0.3
2959 | fast-deep-equal: 3.1.3
2960 | file-entry-cache: 6.0.1
2961 | find-up: 5.0.0
2962 | glob-parent: 6.0.2
2963 | globals: 13.24.0
2964 | graphemer: 1.4.0
2965 | ignore: 5.3.0
2966 | imurmurhash: 0.1.4
2967 | is-glob: 4.0.3
2968 | is-path-inside: 3.0.3
2969 | js-yaml: 4.1.0
2970 | json-stable-stringify-without-jsonify: 1.0.1
2971 | levn: 0.4.1
2972 | lodash.merge: 4.6.2
2973 | minimatch: 3.1.2
2974 | natural-compare: 1.4.0
2975 | optionator: 0.9.3
2976 | strip-ansi: 6.0.1
2977 | text-table: 0.2.0
2978 | transitivePeerDependencies:
2979 | - supports-color
2980 |
2981 | espree@9.6.1:
2982 | dependencies:
2983 | acorn: 8.11.3
2984 | acorn-jsx: 5.3.2(acorn@8.11.3)
2985 | eslint-visitor-keys: 3.4.3
2986 |
2987 | esquery@1.5.0:
2988 | dependencies:
2989 | estraverse: 5.3.0
2990 |
2991 | esrecurse@4.3.0:
2992 | dependencies:
2993 | estraverse: 5.3.0
2994 |
2995 | estraverse@5.3.0: {}
2996 |
2997 | esutils@2.0.3: {}
2998 |
2999 | etag@1.8.1: {}
3000 |
3001 | event-target-shim@5.0.1: {}
3002 |
3003 | events@3.3.0: {}
3004 |
3005 | fast-deep-equal@3.1.3: {}
3006 |
3007 | fast-diff@1.3.0: {}
3008 |
3009 | fast-glob@3.3.2:
3010 | dependencies:
3011 | '@nodelib/fs.stat': 2.0.5
3012 | '@nodelib/fs.walk': 1.2.8
3013 | glob-parent: 5.1.2
3014 | merge2: 1.4.1
3015 | micromatch: 4.0.5
3016 |
3017 | fast-json-stable-stringify@2.1.0: {}
3018 |
3019 | fast-levenshtein@2.0.6: {}
3020 |
3021 | fast-redact@3.3.0: {}
3022 |
3023 | fastest-levenshtein@1.0.16: {}
3024 |
3025 | fastq@1.16.0:
3026 | dependencies:
3027 | reusify: 1.0.4
3028 |
3029 | file-entry-cache@6.0.1:
3030 | dependencies:
3031 | flat-cache: 3.2.0
3032 |
3033 | file-type@19.0.0:
3034 | dependencies:
3035 | readable-web-to-node-stream: 3.0.2
3036 | strtok3: 7.0.0
3037 | token-types: 5.0.1
3038 |
3039 | fill-range@7.0.1:
3040 | dependencies:
3041 | to-regex-range: 5.0.1
3042 |
3043 | find-cache-dir@5.0.0:
3044 | dependencies:
3045 | common-path-prefix: 3.0.0
3046 | pkg-dir: 7.0.0
3047 |
3048 | find-up@4.1.0:
3049 | dependencies:
3050 | locate-path: 5.0.0
3051 | path-exists: 4.0.0
3052 |
3053 | find-up@5.0.0:
3054 | dependencies:
3055 | locate-path: 6.0.0
3056 | path-exists: 4.0.0
3057 |
3058 | find-up@6.3.0:
3059 | dependencies:
3060 | locate-path: 7.2.0
3061 | path-exists: 5.0.0
3062 |
3063 | flat-cache@3.2.0:
3064 | dependencies:
3065 | flatted: 3.2.9
3066 | keyv: 4.5.4
3067 | rimraf: 3.0.2
3068 |
3069 | flatted@3.2.9: {}
3070 |
3071 | flattie@1.1.0: {}
3072 |
3073 | forwarded@0.2.0: {}
3074 |
3075 | fresh@0.5.2: {}
3076 |
3077 | fs.realpath@1.0.0: {}
3078 |
3079 | function-bind@1.1.2: {}
3080 |
3081 | get-caller-file@2.0.5: {}
3082 |
3083 | get-east-asian-width@1.2.0: {}
3084 |
3085 | get-intrinsic@1.2.2:
3086 | dependencies:
3087 | function-bind: 1.1.2
3088 | has-proto: 1.0.1
3089 | has-symbols: 1.0.3
3090 | hasown: 2.0.0
3091 |
3092 | get-source@2.0.12:
3093 | dependencies:
3094 | data-uri-to-buffer: 2.0.2
3095 | source-map: 0.6.1
3096 |
3097 | getopts@2.3.0: {}
3098 |
3099 | glob-parent@5.1.2:
3100 | dependencies:
3101 | is-glob: 4.0.3
3102 |
3103 | glob-parent@6.0.2:
3104 | dependencies:
3105 | is-glob: 4.0.3
3106 |
3107 | glob@7.2.3:
3108 | dependencies:
3109 | fs.realpath: 1.0.0
3110 | inflight: 1.0.6
3111 | inherits: 2.0.4
3112 | minimatch: 3.1.2
3113 | once: 1.4.0
3114 | path-is-absolute: 1.0.1
3115 |
3116 | globals@13.24.0:
3117 | dependencies:
3118 | type-fest: 0.20.2
3119 |
3120 | globby@11.1.0:
3121 | dependencies:
3122 | array-union: 2.1.0
3123 | dir-glob: 3.0.1
3124 | fast-glob: 3.3.2
3125 | ignore: 5.3.0
3126 | merge2: 1.4.1
3127 | slash: 3.0.0
3128 |
3129 | gopd@1.0.1:
3130 | dependencies:
3131 | get-intrinsic: 1.2.2
3132 |
3133 | graphemer@1.4.0: {}
3134 |
3135 | has-flag@3.0.0: {}
3136 |
3137 | has-flag@4.0.0: {}
3138 |
3139 | has-property-descriptors@1.0.1:
3140 | dependencies:
3141 | get-intrinsic: 1.2.2
3142 |
3143 | has-proto@1.0.1: {}
3144 |
3145 | has-symbols@1.0.3: {}
3146 |
3147 | hasown@2.0.0:
3148 | dependencies:
3149 | function-bind: 1.1.2
3150 |
3151 | he@1.2.0: {}
3152 |
3153 | hosted-git-info@2.8.9: {}
3154 |
3155 | http-errors@2.0.0:
3156 | dependencies:
3157 | depd: 2.0.0
3158 | inherits: 2.0.4
3159 | setprototypeof: 1.2.0
3160 | statuses: 2.0.1
3161 | toidentifier: 1.0.1
3162 |
3163 | iconv-lite@0.4.24:
3164 | dependencies:
3165 | safer-buffer: 2.1.2
3166 |
3167 | ieee754@1.2.1: {}
3168 |
3169 | ignore@5.3.0: {}
3170 |
3171 | import-fresh@3.3.0:
3172 | dependencies:
3173 | parent-module: 1.0.1
3174 | resolve-from: 4.0.0
3175 |
3176 | imurmurhash@0.1.4: {}
3177 |
3178 | indent-string@4.0.0: {}
3179 |
3180 | inflation@2.1.0: {}
3181 |
3182 | inflight@1.0.6:
3183 | dependencies:
3184 | once: 1.4.0
3185 | wrappy: 1.0.2
3186 |
3187 | inherits@2.0.4: {}
3188 |
3189 | ipaddr.js@1.9.1: {}
3190 |
3191 | is-arrayish@0.2.1: {}
3192 |
3193 | is-builtin-module@3.2.1:
3194 | dependencies:
3195 | builtin-modules: 3.3.0
3196 |
3197 | is-core-module@2.13.1:
3198 | dependencies:
3199 | hasown: 2.0.0
3200 |
3201 | is-extglob@2.1.1: {}
3202 |
3203 | is-fullwidth-code-point@3.0.0: {}
3204 |
3205 | is-fullwidth-code-point@4.0.0: {}
3206 |
3207 | is-fullwidth-code-point@5.0.0:
3208 | dependencies:
3209 | get-east-asian-width: 1.2.0
3210 |
3211 | is-glob@4.0.3:
3212 | dependencies:
3213 | is-extglob: 2.1.1
3214 |
3215 | is-number@7.0.0: {}
3216 |
3217 | is-path-inside@3.0.3: {}
3218 |
3219 | isarray@0.0.1: {}
3220 |
3221 | isarray@1.0.0: {}
3222 |
3223 | isexe@2.0.0: {}
3224 |
3225 | jest-diff@29.7.0:
3226 | dependencies:
3227 | chalk: 4.1.2
3228 | diff-sequences: 29.6.3
3229 | jest-get-type: 29.6.3
3230 | pretty-format: 29.7.0
3231 |
3232 | jest-get-type@29.6.3: {}
3233 |
3234 | js-tokens@4.0.0: {}
3235 |
3236 | js-yaml@4.1.0:
3237 | dependencies:
3238 | argparse: 2.0.1
3239 |
3240 | jsesc@0.5.0: {}
3241 |
3242 | jsesc@3.0.2: {}
3243 |
3244 | json-buffer@3.0.1: {}
3245 |
3246 | json-parse-even-better-errors@2.3.1: {}
3247 |
3248 | json-schema-traverse@0.4.1: {}
3249 |
3250 | json-stable-stringify-without-jsonify@1.0.1: {}
3251 |
3252 | jsonc-eslint-parser@2.4.0:
3253 | dependencies:
3254 | acorn: 8.11.3
3255 | eslint-visitor-keys: 3.4.3
3256 | espree: 9.6.1
3257 | semver: 7.5.4
3258 |
3259 | jsonschema@1.4.1: {}
3260 |
3261 | keyv@4.5.4:
3262 | dependencies:
3263 | json-buffer: 3.0.1
3264 |
3265 | kleur@4.1.5: {}
3266 |
3267 | levn@0.4.1:
3268 | dependencies:
3269 | prelude-ls: 1.2.1
3270 | type-check: 0.4.0
3271 |
3272 | lines-and-columns@1.2.4: {}
3273 |
3274 | locate-path@5.0.0:
3275 | dependencies:
3276 | p-locate: 4.1.0
3277 |
3278 | locate-path@6.0.0:
3279 | dependencies:
3280 | p-locate: 5.0.0
3281 |
3282 | locate-path@7.2.0:
3283 | dependencies:
3284 | p-locate: 6.0.0
3285 |
3286 | lodash.merge@4.6.2: {}
3287 |
3288 | lodash@4.17.21: {}
3289 |
3290 | log-update@6.0.0:
3291 | dependencies:
3292 | ansi-escapes: 6.2.0
3293 | cli-cursor: 4.0.0
3294 | slice-ansi: 7.1.0
3295 | strip-ansi: 7.1.0
3296 | wrap-ansi: 9.0.0
3297 |
3298 | log-update@6.1.0:
3299 | dependencies:
3300 | ansi-escapes: 7.0.0
3301 | cli-cursor: 5.0.0
3302 | slice-ansi: 7.1.0
3303 | strip-ansi: 7.1.0
3304 | wrap-ansi: 9.0.0
3305 |
3306 | loupe@3.1.2: {}
3307 |
3308 | lru-cache@6.0.0:
3309 | dependencies:
3310 | yallist: 4.0.0
3311 |
3312 | luxon@3.5.0: {}
3313 |
3314 | make-error@1.3.6: {}
3315 |
3316 | media-typer@0.3.0: {}
3317 |
3318 | media-typer@1.1.0: {}
3319 |
3320 | merge2@1.4.1: {}
3321 |
3322 | micromatch@4.0.5:
3323 | dependencies:
3324 | braces: 3.0.2
3325 | picomatch: 2.3.1
3326 |
3327 | mime-db@1.52.0: {}
3328 |
3329 | mime-types@2.1.35:
3330 | dependencies:
3331 | mime-db: 1.52.0
3332 |
3333 | mimic-fn@2.1.0: {}
3334 |
3335 | mimic-function@5.0.1: {}
3336 |
3337 | min-indent@1.0.1: {}
3338 |
3339 | minimatch@3.1.2:
3340 | dependencies:
3341 | brace-expansion: 1.1.11
3342 |
3343 | minimatch@9.0.3:
3344 | dependencies:
3345 | brace-expansion: 2.0.1
3346 |
3347 | mkdirp@1.0.4: {}
3348 |
3349 | ms@2.1.2: {}
3350 |
3351 | ms@2.1.3: {}
3352 |
3353 | mustache@4.2.0: {}
3354 |
3355 | natural-compare@1.4.0: {}
3356 |
3357 | negotiator@0.6.3: {}
3358 |
3359 | node-cron@3.0.3:
3360 | dependencies:
3361 | uuid: 8.3.2
3362 |
3363 | noms@0.0.0:
3364 | dependencies:
3365 | inherits: 2.0.4
3366 | readable-stream: 1.0.34
3367 |
3368 | normalize-package-data@2.5.0:
3369 | dependencies:
3370 | hosted-git-info: 2.8.9
3371 | resolve: 1.22.8
3372 | semver: 5.7.2
3373 | validate-npm-package-license: 3.0.4
3374 |
3375 | object-inspect@1.13.1: {}
3376 |
3377 | on-exit-leak-free@2.1.2: {}
3378 |
3379 | on-finished@2.4.1:
3380 | dependencies:
3381 | ee-first: 1.1.1
3382 |
3383 | once@1.4.0:
3384 | dependencies:
3385 | wrappy: 1.0.2
3386 |
3387 | onetime@5.1.2:
3388 | dependencies:
3389 | mimic-fn: 2.1.0
3390 |
3391 | onetime@7.0.0:
3392 | dependencies:
3393 | mimic-function: 5.0.1
3394 |
3395 | optionator@0.9.3:
3396 | dependencies:
3397 | '@aashutoshrathi/word-wrap': 1.2.6
3398 | deep-is: 0.1.4
3399 | fast-levenshtein: 2.0.6
3400 | levn: 0.4.1
3401 | prelude-ls: 1.2.1
3402 | type-check: 0.4.0
3403 |
3404 | p-limit@2.3.0:
3405 | dependencies:
3406 | p-try: 2.2.0
3407 |
3408 | p-limit@3.1.0:
3409 | dependencies:
3410 | yocto-queue: 0.1.0
3411 |
3412 | p-limit@4.0.0:
3413 | dependencies:
3414 | yocto-queue: 1.1.1
3415 |
3416 | p-locate@4.1.0:
3417 | dependencies:
3418 | p-limit: 2.3.0
3419 |
3420 | p-locate@5.0.0:
3421 | dependencies:
3422 | p-limit: 3.1.0
3423 |
3424 | p-locate@6.0.0:
3425 | dependencies:
3426 | p-limit: 4.0.0
3427 |
3428 | p-try@2.2.0: {}
3429 |
3430 | parent-module@1.0.1:
3431 | dependencies:
3432 | callsites: 3.1.0
3433 |
3434 | parse-imports@1.1.2:
3435 | dependencies:
3436 | es-module-lexer: 1.4.1
3437 | slashes: 3.0.12
3438 |
3439 | parse-json@5.2.0:
3440 | dependencies:
3441 | '@babel/code-frame': 7.23.5
3442 | error-ex: 1.3.2
3443 | json-parse-even-better-errors: 2.3.1
3444 | lines-and-columns: 1.2.4
3445 |
3446 | path-exists@4.0.0: {}
3447 |
3448 | path-exists@5.0.0: {}
3449 |
3450 | path-is-absolute@1.0.1: {}
3451 |
3452 | path-key@3.1.1: {}
3453 |
3454 | path-parse@1.0.7: {}
3455 |
3456 | path-type@4.0.0: {}
3457 |
3458 | pathval@2.0.0: {}
3459 |
3460 | peek-readable@5.0.0: {}
3461 |
3462 | picomatch@2.3.1: {}
3463 |
3464 | pino-abstract-transport@1.1.0:
3465 | dependencies:
3466 | readable-stream: 4.5.2
3467 | split2: 4.2.0
3468 |
3469 | pino-std-serializers@6.2.2: {}
3470 |
3471 | pino@8.17.2:
3472 | dependencies:
3473 | atomic-sleep: 1.0.0
3474 | fast-redact: 3.3.0
3475 | on-exit-leak-free: 2.1.2
3476 | pino-abstract-transport: 1.1.0
3477 | pino-std-serializers: 6.2.2
3478 | process-warning: 3.0.0
3479 | quick-format-unescaped: 4.0.4
3480 | real-require: 0.2.0
3481 | safe-stable-stringify: 2.4.3
3482 | sonic-boom: 3.8.0
3483 | thread-stream: 2.4.1
3484 |
3485 | pkg-dir@7.0.0:
3486 | dependencies:
3487 | find-up: 6.3.0
3488 |
3489 | pluralize@8.0.0: {}
3490 |
3491 | prelude-ls@1.2.1: {}
3492 |
3493 | prettier-linter-helpers@1.0.0:
3494 | dependencies:
3495 | fast-diff: 1.3.0
3496 |
3497 | prettier@2.8.8: {}
3498 |
3499 | pretty-format@29.7.0:
3500 | dependencies:
3501 | '@jest/schemas': 29.6.3
3502 | ansi-styles: 5.2.0
3503 | react-is: 18.3.1
3504 |
3505 | pretty-hrtime@1.0.3: {}
3506 |
3507 | printable-characters@1.0.42: {}
3508 |
3509 | process-nextick-args@2.0.1: {}
3510 |
3511 | process-warning@3.0.0: {}
3512 |
3513 | process@0.11.10: {}
3514 |
3515 | proxy-addr@2.0.7:
3516 | dependencies:
3517 | forwarded: 0.2.0
3518 | ipaddr.js: 1.9.1
3519 |
3520 | punycode@2.3.1: {}
3521 |
3522 | qs@6.11.2:
3523 | dependencies:
3524 | side-channel: 1.0.4
3525 |
3526 | queue-microtask@1.2.3: {}
3527 |
3528 | quick-format-unescaped@4.0.4: {}
3529 |
3530 | random-bytes@1.0.0: {}
3531 |
3532 | raw-body@2.5.2:
3533 | dependencies:
3534 | bytes: 3.1.2
3535 | http-errors: 2.0.0
3536 | iconv-lite: 0.4.24
3537 | unpipe: 1.0.0
3538 |
3539 | react-is@18.3.1: {}
3540 |
3541 | read-pkg-up@7.0.1:
3542 | dependencies:
3543 | find-up: 4.1.0
3544 | read-pkg: 5.2.0
3545 | type-fest: 0.8.1
3546 |
3547 | read-pkg@5.2.0:
3548 | dependencies:
3549 | '@types/normalize-package-data': 2.4.4
3550 | normalize-package-data: 2.5.0
3551 | parse-json: 5.2.0
3552 | type-fest: 0.6.0
3553 |
3554 | readable-stream@1.0.34:
3555 | dependencies:
3556 | core-util-is: 1.0.3
3557 | inherits: 2.0.4
3558 | isarray: 0.0.1
3559 | string_decoder: 0.10.31
3560 |
3561 | readable-stream@2.3.8:
3562 | dependencies:
3563 | core-util-is: 1.0.3
3564 | inherits: 2.0.4
3565 | isarray: 1.0.0
3566 | process-nextick-args: 2.0.1
3567 | safe-buffer: 5.1.2
3568 | string_decoder: 1.1.1
3569 | util-deprecate: 1.0.2
3570 |
3571 | readable-stream@3.6.2:
3572 | dependencies:
3573 | inherits: 2.0.4
3574 | string_decoder: 1.3.0
3575 | util-deprecate: 1.0.2
3576 |
3577 | readable-stream@4.5.2:
3578 | dependencies:
3579 | abort-controller: 3.0.0
3580 | buffer: 6.0.3
3581 | events: 3.3.0
3582 | process: 0.11.10
3583 | string_decoder: 1.3.0
3584 |
3585 | readable-web-to-node-stream@3.0.2:
3586 | dependencies:
3587 | readable-stream: 3.6.2
3588 |
3589 | readdirp@4.0.2: {}
3590 |
3591 | real-require@0.2.0: {}
3592 |
3593 | regexp-tree@0.1.27: {}
3594 |
3595 | regjsparser@0.10.0:
3596 | dependencies:
3597 | jsesc: 0.5.0
3598 |
3599 | require-directory@2.1.1: {}
3600 |
3601 | resolve-from@4.0.0: {}
3602 |
3603 | resolve@1.22.8:
3604 | dependencies:
3605 | is-core-module: 2.13.1
3606 | path-parse: 1.0.7
3607 | supports-preserve-symlinks-flag: 1.0.0
3608 |
3609 | restore-cursor@4.0.0:
3610 | dependencies:
3611 | onetime: 5.1.2
3612 | signal-exit: 3.0.7
3613 |
3614 | restore-cursor@5.1.0:
3615 | dependencies:
3616 | onetime: 7.0.0
3617 | signal-exit: 4.1.0
3618 |
3619 | retry@0.13.1: {}
3620 |
3621 | reusify@1.0.4: {}
3622 |
3623 | rimraf@3.0.2:
3624 | dependencies:
3625 | glob: 7.2.3
3626 |
3627 | run-parallel@1.2.0:
3628 | dependencies:
3629 | queue-microtask: 1.2.3
3630 |
3631 | safe-buffer@5.1.2: {}
3632 |
3633 | safe-buffer@5.2.1: {}
3634 |
3635 | safe-regex@2.1.1:
3636 | dependencies:
3637 | regexp-tree: 0.1.27
3638 |
3639 | safe-stable-stringify@2.4.3: {}
3640 |
3641 | safer-buffer@2.1.2: {}
3642 |
3643 | secure-json-parse@2.7.0: {}
3644 |
3645 | semver@5.7.2: {}
3646 |
3647 | semver@7.5.4:
3648 | dependencies:
3649 | lru-cache: 6.0.0
3650 |
3651 | serialize-error@11.0.3:
3652 | dependencies:
3653 | type-fest: 2.19.0
3654 |
3655 | set-function-length@1.2.0:
3656 | dependencies:
3657 | define-data-property: 1.1.1
3658 | function-bind: 1.1.2
3659 | get-intrinsic: 1.2.2
3660 | gopd: 1.0.1
3661 | has-property-descriptors: 1.0.1
3662 |
3663 | setprototypeof@1.2.0: {}
3664 |
3665 | shebang-command@2.0.0:
3666 | dependencies:
3667 | shebang-regex: 3.0.0
3668 |
3669 | shebang-regex@3.0.0: {}
3670 |
3671 | side-channel@1.0.4:
3672 | dependencies:
3673 | call-bind: 1.0.5
3674 | get-intrinsic: 1.2.2
3675 | object-inspect: 1.13.1
3676 |
3677 | signal-exit@3.0.7: {}
3678 |
3679 | signal-exit@4.1.0: {}
3680 |
3681 | slash@3.0.0: {}
3682 |
3683 | slash@5.1.0: {}
3684 |
3685 | slashes@3.0.12: {}
3686 |
3687 | slice-ansi@5.0.0:
3688 | dependencies:
3689 | ansi-styles: 6.2.1
3690 | is-fullwidth-code-point: 4.0.0
3691 |
3692 | slice-ansi@7.1.0:
3693 | dependencies:
3694 | ansi-styles: 6.2.1
3695 | is-fullwidth-code-point: 5.0.0
3696 |
3697 | slugify@1.6.6: {}
3698 |
3699 | sonic-boom@3.8.0:
3700 | dependencies:
3701 | atomic-sleep: 1.0.0
3702 |
3703 | source-map@0.6.1: {}
3704 |
3705 | spdx-correct@3.2.0:
3706 | dependencies:
3707 | spdx-expression-parse: 3.0.1
3708 | spdx-license-ids: 3.0.16
3709 |
3710 | spdx-exceptions@2.4.0: {}
3711 |
3712 | spdx-expression-parse@3.0.1:
3713 | dependencies:
3714 | spdx-exceptions: 2.4.0
3715 | spdx-license-ids: 3.0.16
3716 |
3717 | spdx-license-ids@3.0.16: {}
3718 |
3719 | split-lines@3.0.0: {}
3720 |
3721 | split2@4.2.0: {}
3722 |
3723 | stacktracey@2.1.8:
3724 | dependencies:
3725 | as-table: 1.0.55
3726 | get-source: 2.0.12
3727 |
3728 | statuses@2.0.1: {}
3729 |
3730 | string-width@4.2.3:
3731 | dependencies:
3732 | emoji-regex: 8.0.0
3733 | is-fullwidth-code-point: 3.0.0
3734 | strip-ansi: 6.0.1
3735 |
3736 | string-width@7.2.0:
3737 | dependencies:
3738 | emoji-regex: 10.3.0
3739 | get-east-asian-width: 1.2.0
3740 | strip-ansi: 7.1.0
3741 |
3742 | string_decoder@0.10.31: {}
3743 |
3744 | string_decoder@1.1.1:
3745 | dependencies:
3746 | safe-buffer: 5.1.2
3747 |
3748 | string_decoder@1.3.0:
3749 | dependencies:
3750 | safe-buffer: 5.2.1
3751 |
3752 | strip-ansi@6.0.1:
3753 | dependencies:
3754 | ansi-regex: 5.0.1
3755 |
3756 | strip-ansi@7.1.0:
3757 | dependencies:
3758 | ansi-regex: 6.0.1
3759 |
3760 | strip-indent@3.0.0:
3761 | dependencies:
3762 | min-indent: 1.0.1
3763 |
3764 | strip-json-comments@3.1.1: {}
3765 |
3766 | strtok3@7.0.0:
3767 | dependencies:
3768 | '@tokenizer/token': 0.3.0
3769 | peek-readable: 5.0.0
3770 |
3771 | supports-color@10.0.0: {}
3772 |
3773 | supports-color@5.5.0:
3774 | dependencies:
3775 | has-flag: 3.0.0
3776 |
3777 | supports-color@7.2.0:
3778 | dependencies:
3779 | has-flag: 4.0.0
3780 |
3781 | supports-color@9.4.0: {}
3782 |
3783 | supports-preserve-symlinks-flag@1.0.0: {}
3784 |
3785 | synckit@0.6.2:
3786 | dependencies:
3787 | tslib: 2.6.2
3788 |
3789 | synckit@0.8.8:
3790 | dependencies:
3791 | '@pkgr/core': 0.1.1
3792 | tslib: 2.6.2
3793 |
3794 | tempura@0.4.0: {}
3795 |
3796 | terminal-size@4.0.0: {}
3797 |
3798 | text-table@0.2.0: {}
3799 |
3800 | thread-stream@2.4.1:
3801 | dependencies:
3802 | real-require: 0.2.0
3803 |
3804 | through2@2.0.5:
3805 | dependencies:
3806 | readable-stream: 2.3.8
3807 | xtend: 4.0.2
3808 |
3809 | time-span@5.1.0:
3810 | dependencies:
3811 | convert-hrtime: 5.0.0
3812 |
3813 | tmp-cache@1.1.0: {}
3814 |
3815 | to-regex-range@5.0.1:
3816 | dependencies:
3817 | is-number: 7.0.0
3818 |
3819 | toidentifier@1.0.1: {}
3820 |
3821 | token-types@5.0.1:
3822 | dependencies:
3823 | '@tokenizer/token': 0.3.0
3824 | ieee754: 1.2.1
3825 |
3826 | truncatise@0.0.8: {}
3827 |
3828 | ts-api-utils@1.0.3(typescript@5.3.3):
3829 | dependencies:
3830 | typescript: 5.3.3
3831 |
3832 | ts-node-maintained@10.9.4(@swc/core@1.3.105)(@types/node@22.10.1)(typescript@5.3.3):
3833 | dependencies:
3834 | '@cspotcode/source-map-support': 0.8.1
3835 | '@tsconfig/node10': 1.0.9
3836 | '@tsconfig/node12': 1.0.11
3837 | '@tsconfig/node14': 1.0.3
3838 | '@tsconfig/node16': 1.0.4
3839 | '@types/node': 22.10.1
3840 | acorn: 8.11.3
3841 | acorn-walk: 8.3.2
3842 | arg: 4.1.3
3843 | create-require: 1.1.1
3844 | diff: 4.0.2
3845 | make-error: 1.3.6
3846 | typescript: 5.3.3
3847 | v8-compile-cache-lib: 3.0.1
3848 | yn: 3.1.1
3849 | optionalDependencies:
3850 | '@swc/core': 1.3.105
3851 |
3852 | tslib@2.6.2: {}
3853 |
3854 | type-check@0.4.0:
3855 | dependencies:
3856 | prelude-ls: 1.2.1
3857 |
3858 | type-fest@0.20.2: {}
3859 |
3860 | type-fest@0.6.0: {}
3861 |
3862 | type-fest@0.8.1: {}
3863 |
3864 | type-fest@2.19.0: {}
3865 |
3866 | type-fest@3.13.1: {}
3867 |
3868 | type-is@1.6.18:
3869 | dependencies:
3870 | media-typer: 0.3.0
3871 | mime-types: 2.1.35
3872 |
3873 | typescript@5.3.3: {}
3874 |
3875 | uid-safe@2.1.5:
3876 | dependencies:
3877 | random-bytes: 1.0.0
3878 |
3879 | undici-types@6.20.0: {}
3880 |
3881 | unpipe@1.0.0: {}
3882 |
3883 | untildify@4.0.0: {}
3884 |
3885 | uri-js@4.4.1:
3886 | dependencies:
3887 | punycode: 2.3.1
3888 |
3889 | util-deprecate@1.0.2: {}
3890 |
3891 | uuid@8.3.2: {}
3892 |
3893 | v8-compile-cache-lib@3.0.1: {}
3894 |
3895 | validate-npm-package-license@3.0.4:
3896 | dependencies:
3897 | spdx-correct: 3.2.0
3898 | spdx-expression-parse: 3.0.1
3899 |
3900 | validator@13.11.0: {}
3901 |
3902 | vary@1.1.2: {}
3903 |
3904 | which@2.0.2:
3905 | dependencies:
3906 | isexe: 2.0.0
3907 |
3908 | wordwrap@1.0.0: {}
3909 |
3910 | wrap-ansi@7.0.0:
3911 | dependencies:
3912 | ansi-styles: 4.3.0
3913 | string-width: 4.2.3
3914 | strip-ansi: 6.0.1
3915 |
3916 | wrap-ansi@9.0.0:
3917 | dependencies:
3918 | ansi-styles: 6.2.1
3919 | string-width: 7.2.0
3920 | strip-ansi: 7.1.0
3921 |
3922 | wrappy@1.0.2: {}
3923 |
3924 | xtend@4.0.2: {}
3925 |
3926 | y18n@5.0.8: {}
3927 |
3928 | yallist@4.0.0: {}
3929 |
3930 | yargs-parser@20.2.9: {}
3931 |
3932 | yargs-parser@21.1.1: {}
3933 |
3934 | yargs@16.2.0:
3935 | dependencies:
3936 | cliui: 7.0.4
3937 | escalade: 3.1.1
3938 | get-caller-file: 2.0.5
3939 | require-directory: 2.1.1
3940 | string-width: 4.2.3
3941 | y18n: 5.0.8
3942 | yargs-parser: 20.2.9
3943 |
3944 | yn@3.1.1: {}
3945 |
3946 | yocto-queue@0.1.0: {}
3947 |
3948 | yocto-queue@1.1.1: {}
3949 |
3950 | youch-terminal@2.2.3:
3951 | dependencies:
3952 | kleur: 4.1.5
3953 | string-width: 4.2.3
3954 | wordwrap: 1.0.0
3955 |
3956 | youch@3.3.3:
3957 | dependencies:
3958 | cookie: 0.5.0
3959 | mustache: 4.2.0
3960 | stacktracey: 2.1.8
3961 |
--------------------------------------------------------------------------------
/providers/scheduler_provider.ts:
--------------------------------------------------------------------------------
1 | import type { ApplicationService } from '@adonisjs/core/types'
2 | import { Scheduler } from '../src/scheduler.js'
3 |
4 | declare module '@adonisjs/core/types' {
5 | export interface ContainerBindings {
6 | scheduler: Scheduler
7 | }
8 | }
9 |
10 | export default class SchedulerProvider {
11 | constructor(protected app: ApplicationService) {}
12 |
13 | public boot() {
14 | this.app.container.singleton('scheduler', () => {
15 | return new Scheduler(this.app)
16 | })
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/services/main.ts:
--------------------------------------------------------------------------------
1 | import type { Scheduler } from '../src/scheduler.js'
2 | import app from '@adonisjs/core/services/app'
3 |
4 | let scheduler: Scheduler
5 |
6 | await app.booted(async () => {
7 | scheduler = await app.container.make("scheduler")
8 | })
9 |
10 | export { scheduler as default }
--------------------------------------------------------------------------------
/src/decorator.ts:
--------------------------------------------------------------------------------
1 | import type { BaseCommand } from '@adonisjs/core/ace'
2 | import { ScheduleCommand, Scheduler } from './scheduler.js'
3 | import { arrayWrap } from './utils.js'
4 |
5 | export function schedule(
6 | expression: string | ((s: ScheduleCommand) => ScheduleCommand),
7 | args: string | string[] = []
8 | ) {
9 | return function (target: T) {
10 | if (typeof expression === 'string') {
11 | Scheduler.__decorator_schedules.push(
12 | new ScheduleCommand(target.commandName, arrayWrap(args)).cron(expression)
13 | )
14 | } else {
15 | Scheduler.__decorator_schedules.push(
16 | expression(new ScheduleCommand(target.commandName, arrayWrap(args)))
17 | )
18 | }
19 |
20 | return target
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/scheduler.ts:
--------------------------------------------------------------------------------
1 | import { BaseCommand, FsLoader } from '@adonisjs/core/ace'
2 | import type { ApplicationService } from '@adonisjs/core/types'
3 | import { DateTime } from 'luxon'
4 | import { arrayWrap } from './utils.js'
5 |
6 | type Range<
7 | START extends number,
8 | END extends number,
9 | ARR extends unknown[] = [],
10 | ACC extends number = never
11 | > = ARR['length'] extends END
12 | ? ACC | START | END
13 | : Range
14 |
15 | export abstract class BaseSchedule {
16 | abstract type: string
17 | expression: string = '0 * * * * *' // seconds minutes hours dayOfMonth month dayOfWeek
18 | config = {
19 | enabled: true,
20 | immediate: false,
21 | withoutOverlapping: false,
22 | expiresAt: 3600000,
23 | timezone: undefined as string | undefined,
24 | }
25 |
26 | beforeCallbacks: (() => Promise)[] = []
27 | afterCallbacks: (() => Promise)[] = []
28 |
29 | public before(callback: () => Promise) {
30 | this.beforeCallbacks.push(callback)
31 |
32 | return this
33 | }
34 |
35 | public after(callback: () => Promise) {
36 | this.afterCallbacks.push(callback)
37 |
38 | return this
39 | }
40 |
41 | public timezone(timezone: string) {
42 | this.config.timezone = timezone
43 |
44 | return this
45 | }
46 |
47 | public skip(state: boolean = true) {
48 | this.config.enabled = !state
49 |
50 | return this
51 | }
52 |
53 | public immediate(state: boolean = true) {
54 | this.config.immediate = state
55 |
56 | return this
57 | }
58 |
59 | public withoutOverlapping(expiresAt: number = 3600000) {
60 | this.config.withoutOverlapping = true
61 | this.config.expiresAt = expiresAt
62 |
63 | return this
64 | }
65 |
66 | public everyMinutes(minutes: number) {
67 | return this.spliceIntoPosition(1, `*/${minutes}`)
68 | }
69 |
70 | public everyMinute() {
71 | return this.spliceIntoPosition(1, '*')
72 | }
73 |
74 | public everyTwoMinutes() {
75 | return this.everyMinutes(2)
76 | }
77 |
78 | public everyThreeMinutes() {
79 | return this.everyMinutes(3)
80 | }
81 |
82 | public everyFourMinutes() {
83 | return this.everyMinutes(4)
84 | }
85 |
86 | public everyFiveMinutes() {
87 | return this.everyMinutes(5)
88 | }
89 |
90 | public everyTenMinutes() {
91 | return this.everyMinutes(10)
92 | }
93 |
94 | public everyFifteenMinutes() {
95 | return this.everyMinutes(15)
96 | }
97 |
98 | public everyThirtyMinutes() {
99 | return this.everyMinutes(30)
100 | }
101 |
102 | public hourly() {
103 | return this.spliceIntoPosition(1, 0)
104 | }
105 |
106 | public hourlyAt(offset: string | number | Range<0, 59> | Range<0, 59>[]) {
107 | return this.hourBasedSchedule(offset, '*')
108 | }
109 |
110 | public everyHours(hours: number, offset: any[] | string | number = 0) {
111 | return this.hourBasedSchedule(offset, `*/${hours}`)
112 | }
113 | public everyOddHour(offset: any[] | string | number = 0) {
114 | return this.hourBasedSchedule(offset, '1-23/2')
115 | }
116 |
117 | public everyTwoHours(offset: any[] | string | number = 0) {
118 | return this.everyHours(2, offset)
119 | }
120 |
121 | public everyThreeHours(offset: any[] | string | number = 0) {
122 | return this.everyHours(3, offset)
123 | }
124 |
125 | public everyFourHours(offset: any[] | string | number = 0) {
126 | return this.everyHours(4, offset)
127 | }
128 |
129 | public everyFiveHours(offset: any[] | string | number = 0) {
130 | return this.everyHours(5, offset)
131 | }
132 |
133 | public everySixHours(offset: any[] | string | number = 0) {
134 | return this.everyHours(6, offset)
135 | }
136 |
137 | public daily() {
138 | return this.hourBasedSchedule(0, 0)
139 | }
140 |
141 | public weekdays() {
142 | return this.spliceIntoPosition(5, '1-5')
143 | }
144 |
145 | public weekends() {
146 | return this.spliceIntoPosition(5, '6,0')
147 | }
148 |
149 | public mondays() {
150 | return this.days(1)
151 | }
152 |
153 | public tuesdays() {
154 | return this.days(2)
155 | }
156 |
157 | public wednesdays() {
158 | return this.days(3)
159 | }
160 |
161 | public thursdays() {
162 | return this.days(4)
163 | }
164 |
165 | public fridays() {
166 | return this.days(5)
167 | }
168 |
169 | public saturdays() {
170 | return this.days(6)
171 | }
172 |
173 | public sundays() {
174 | return this.days(0)
175 | }
176 |
177 | public weekly() {
178 | return this.spliceIntoPosition(1, 0).spliceIntoPosition(2, 0).spliceIntoPosition(5, 0)
179 | }
180 |
181 | public weeklyOn(dayOfWeek: Range<0, 7> = 1, time: string = '0:0') {
182 | this.dailyAt(time)
183 |
184 | return this.days(dayOfWeek as any)
185 | }
186 |
187 | public monthly() {
188 | return this.spliceIntoPosition(1, 0).spliceIntoPosition(2, 0).spliceIntoPosition(3, 1)
189 | }
190 |
191 | public quarterly() {
192 | return this.spliceIntoPosition(1, 0)
193 | .spliceIntoPosition(2, 0)
194 | .spliceIntoPosition(3, 1)
195 | .spliceIntoPosition(4, '1-12/3')
196 | }
197 |
198 | public yearly() {
199 | return this.spliceIntoPosition(1, 0)
200 | .spliceIntoPosition(2, 0)
201 | .spliceIntoPosition(3, 1)
202 | .spliceIntoPosition(4, 1)
203 | }
204 |
205 | public yearlyOn(month: number = 1, dayOfMonth: string | Range<1, 31> = 1, time: string = '0:0') {
206 | this.dailyAt(time)
207 |
208 | return this.spliceIntoPosition(3, dayOfMonth).spliceIntoPosition(4, month)
209 | }
210 |
211 | public everySecond() {
212 | return this.spliceIntoPosition(0, '*')
213 | }
214 |
215 | public everySeconds(second: Range<1, 59>) {
216 | return this.spliceIntoPosition(0, `*/${second}`)
217 | }
218 |
219 | public everyFiveSeconds() {
220 | return this.everySeconds(5)
221 | }
222 |
223 | public everyTenSeconds() {
224 | return this.everySeconds(10)
225 | }
226 |
227 | public everyFifteenSeconds() {
228 | return this.everySeconds(15)
229 | }
230 |
231 | public everyThirtySeconds() {
232 | return this.everySeconds(30)
233 | }
234 |
235 | public cron(expression: string) {
236 | this.expression = expression
237 |
238 | return this
239 | }
240 |
241 | protected spliceIntoPosition(position: number, value: string | number) {
242 | const segements = this.expression.split(' ')
243 |
244 | segements[position] = String(value)
245 |
246 | this.cron(segements.join(' '))
247 |
248 | return this
249 | }
250 |
251 | protected hourBasedSchedule(
252 | minutes: string | number | Range<0, 59>[],
253 | hours: string | number | Range<0, 59>[]
254 | ) {
255 | minutes = Array.isArray(minutes) ? minutes.join(',') : minutes
256 | hours = Array.isArray(hours) ? hours.join(',') : hours
257 |
258 | return this.spliceIntoPosition(1, minutes).spliceIntoPosition(2, hours)
259 | }
260 |
261 | public days(days: string | number | string[] | number[] | any[]) {
262 | return this.spliceIntoPosition(5, Array.isArray(days) ? days.join(',') : days)
263 | }
264 |
265 | public at(time: string) {
266 | return this.dailyAt(time)
267 | }
268 |
269 | public dailyAt(time: string) {
270 | let segments = time.split(':')
271 |
272 | return this.hourBasedSchedule(
273 | segments.length === 2 ? Number(segments[1]) : '0',
274 | Number(segments[0])
275 | )
276 | }
277 |
278 | public twiceDailyAt(first: Range<0, 23> = 1, second: Range<0, 23> = 13, offset = 0) {
279 | const hours = first + ',' + second
280 |
281 | return this.hourBasedSchedule(offset, hours)
282 | }
283 |
284 | public twiceDaily(first: Range<0, 23> = 1, second: Range<0, 23> = 13) {
285 | return this.twiceDailyAt(first, second, 0)
286 | }
287 |
288 | public twiceMonthly(first: Range<1, 31> = 1, second: Range<1, 31> = 13, time: string = '0:0') {
289 | const dayOfMonth = first + ',' + second
290 |
291 | this.dailyAt(time)
292 |
293 | return this.spliceIntoPosition(3, dayOfMonth)
294 | }
295 |
296 | public lastDayOfMonth(time: string = '0:0') {
297 | this.dailyAt(time)
298 |
299 | return this.spliceIntoPosition(3, DateTime.now().endOf('month').day)
300 | }
301 |
302 | public monthlyOn(dayOfMonth: Range<1, 31> = 1, time: string = '0:0') {
303 | this.dailyAt(time)
304 |
305 | return this.spliceIntoPosition(3, dayOfMonth)
306 | }
307 |
308 | public getExpression() {
309 | return this.expression
310 | }
311 | }
312 |
313 | export class ScheduleCommand extends BaseSchedule {
314 | type: 'command' = 'command'
315 |
316 | commandName: string
317 | commandArgs: string[]
318 |
319 | constructor(commandName: string, commandArgs: string[] = []) {
320 | super()
321 |
322 | this.commandName = commandName
323 | this.commandArgs = commandArgs
324 | }
325 | }
326 |
327 | export class ScheduleCallback extends BaseSchedule {
328 | type: 'callback' = 'callback'
329 |
330 | callback: Function
331 |
332 | constructor(callback: Function) {
333 | super()
334 |
335 | this.callback = callback
336 | }
337 | }
338 |
339 | export class Scheduler {
340 | constructor(protected app: ApplicationService) {
341 | this.app = app
342 | }
343 |
344 | static __decorator_schedules: (ScheduleCallback | ScheduleCommand)[] = []
345 |
346 | items: (ScheduleCallback | ScheduleCommand)[] = []
347 |
348 | onStartingCallback?: () => void | Promise
349 | onStartedCallback?: () => void | Promise
350 |
351 | public async boot() {
352 | const fsLoader = new FsLoader(this.app.commandsPath())
353 | await fsLoader.getMetaData()
354 |
355 | for (const command of this.app.rcFile.commands) {
356 | const loader = await (typeof command === 'function' ? command() : command)
357 | await loader.getMetaData()
358 | }
359 |
360 | if (!Scheduler.__decorator_schedules || Scheduler.__decorator_schedules.length === 0) return
361 |
362 | this.items.push(...Scheduler.__decorator_schedules)
363 | }
364 |
365 | public command(name: string | typeof BaseCommand, args: string | string[] = []) {
366 | let newCommand = new ScheduleCommand(
367 | typeof name === 'string' ? name : name.commandName,
368 | arrayWrap(args)
369 | )
370 |
371 | this.items.push(newCommand)
372 |
373 | return newCommand
374 | }
375 |
376 | public call(callback: Function) {
377 | let newCommand = new ScheduleCallback(callback)
378 |
379 | this.items.push(newCommand)
380 |
381 | return newCommand
382 | }
383 |
384 | public withoutOverlapping(callback: () => void, config = { expiresAt: 3600000 }) {
385 | const lastLength = this.items.length
386 | callback()
387 | const currentLength = this.items.length
388 |
389 | const newItems = this.items.slice(lastLength, currentLength)
390 |
391 | for (const item of newItems) {
392 | item.withoutOverlapping(config.expiresAt)
393 | }
394 | }
395 |
396 | public onStarting(callback: () => void | Promise) {
397 | this.onStartingCallback = callback
398 | }
399 |
400 | public onStarted(callback: () => void | Promise) {
401 | this.onStartedCallback = callback
402 | }
403 | }
404 |
--------------------------------------------------------------------------------
/src/utils.ts:
--------------------------------------------------------------------------------
1 | export const arrayWrap = (value: T | T[]): T[] => {
2 | return Array.isArray(value) ? value : [value]
3 | }
4 |
--------------------------------------------------------------------------------
/src/worker.ts:
--------------------------------------------------------------------------------
1 | import type { ApplicationService } from '@adonisjs/core/types'
2 | import cron from 'node-cron'
3 | import AsyncLock from 'async-lock'
4 | import { FsLoader, type BaseCommand, Kernel } from '@adonisjs/core/ace'
5 |
6 | const lock = new AsyncLock()
7 |
8 | interface IRunOptions {
9 | enabled: boolean
10 | timeout: number
11 | key: string
12 | onBusy?: () => any | PromiseLike
13 | }
14 |
15 | const run = async (cb: () => any | PromiseLike, options: IRunOptions) => {
16 | if (!options.enabled) return await cb()
17 |
18 | if (lock.isBusy(options.key)) {
19 | if (options.onBusy) {
20 | await options.onBusy()
21 | }
22 | return
23 | }
24 |
25 | await lock.acquire(options.key, cb, { maxPending: 1, timeout: options.timeout })
26 | }
27 |
28 | export class Worker {
29 | tasks: cron.ScheduledTask[] = []
30 | loaders: any[] = []
31 | booted = false
32 |
33 | constructor(public app: ApplicationService) {}
34 |
35 | async boot() {
36 | if (this.booted) return
37 |
38 | const schedule = await this.app.container.make('scheduler')
39 | await schedule.boot()
40 |
41 | const fsLoader = new FsLoader(this.app.commandsPath())
42 | this.loaders = [fsLoader]
43 |
44 | this.app.rcFile.commands.forEach((commandModule) => {
45 | this.loaders.push(() =>
46 | typeof commandModule === 'function' ? commandModule() : this.app.import(commandModule)
47 | )
48 | })
49 |
50 | this.booted = true
51 | }
52 |
53 | async start() {
54 | await this.boot()
55 |
56 | const schedule = await this.app.container.make('scheduler')
57 | const logger = await this.app.container.make('logger')
58 |
59 | if (schedule.onStartingCallback) {
60 | await schedule.onStartingCallback()
61 | }
62 |
63 | for (let index = 0; index < schedule.items.length; index++) {
64 | const command = schedule.items[index]
65 | this.tasks.push(
66 | cron.schedule(
67 | command.expression,
68 | async () => {
69 | try {
70 | switch (command.type) {
71 | case 'command':
72 | const ace = new Kernel(this.app)
73 |
74 | for (const loader of this.loaders) {
75 | ace.addLoader(loader)
76 | }
77 |
78 | for (const callback of command.beforeCallbacks) {
79 | await callback()
80 | }
81 | await run(() => ace.exec(command.commandName, command.commandArgs), {
82 | enabled: command.config.withoutOverlapping,
83 | timeout: command.config.expiresAt,
84 | key: `${index}-${command.commandName}-${command.commandArgs}`,
85 | onBusy: () => {
86 | logger.warn(
87 | `Command ${index}-${command.commandName}-${command.commandArgs} is busy`
88 | )
89 | },
90 | })
91 | for (const callback of command.afterCallbacks) {
92 | await callback()
93 | }
94 | break
95 |
96 | case 'callback':
97 | for (const callback of command.beforeCallbacks) {
98 | await callback()
99 | }
100 | await run(() => command.callback(), {
101 | enabled: command.config.withoutOverlapping,
102 | timeout: command.config.expiresAt,
103 | key: `${index}-callback`,
104 | onBusy: () => {
105 | logger.warn(`Callback ${index} is busy`)
106 | },
107 | })
108 | for (const callback of command.afterCallbacks) {
109 | await callback()
110 | }
111 |
112 | default:
113 | break
114 | }
115 | } catch (error) {
116 | logger.error(error)
117 | }
118 | },
119 | {
120 | scheduled: command.config.enabled,
121 | timezone: command.config.timezone,
122 | runOnInit: command.config.enabled && command.config.immediate,
123 | }
124 | )
125 | )
126 | }
127 |
128 | logger.info(`Schedule worker started successfully.`)
129 |
130 | if (schedule.onStartedCallback) {
131 | await schedule.onStartedCallback()
132 | }
133 | }
134 |
135 | async stop() {
136 | await Promise.all(this.tasks.map((task) => task.stop()))
137 | }
138 | }
139 |
--------------------------------------------------------------------------------
/stubs/main.ts:
--------------------------------------------------------------------------------
1 | import { dirname } from 'node:path'
2 | import { fileURLToPath } from 'node:url'
3 |
4 | /**
5 | * Path to the root directory where the stubs are stored. We use
6 | * this path within commands and the configure hook
7 | */
8 | export const stubsRoot = dirname(fileURLToPath(import.meta.url))
9 |
--------------------------------------------------------------------------------
/stubs/start/scheduler.stub:
--------------------------------------------------------------------------------
1 | {{{
2 | exports({ to: app.startPath('scheduler.ts') })
3 | }}}
4 |
5 | import scheduler from 'adonisjs-scheduler/services/main'
6 |
7 | scheduler.command("inspire").everyFiveSeconds();
8 |
9 | scheduler.call(() => {
10 | console.log("Pruge DB!");
11 | }).weekly();
--------------------------------------------------------------------------------
/tests/expression.spec.ts:
--------------------------------------------------------------------------------
1 | import { test } from '@japa/runner'
2 | import { BaseSchedule } from '../src/scheduler.js'
3 | import { DateTime } from 'luxon'
4 |
5 | class TestSchedule extends BaseSchedule {
6 | type: string = 'test'
7 | }
8 |
9 | const schedule = () => new TestSchedule()
10 |
11 | test.group('Expression', () => {
12 | test('every second', ({ assert }) => {
13 | assert.equal('* * * * * *', schedule().everySecond().getExpression())
14 | })
15 |
16 | test('every x seconds', ({ assert }) => {
17 | assert.equal('*/5 * * * * *', schedule().everyFiveSeconds().getExpression())
18 | assert.equal('*/10 * * * * *', schedule().everyTenSeconds().getExpression())
19 | assert.equal('*/15 * * * * *', schedule().everyFifteenSeconds().getExpression())
20 | assert.equal('*/42 * * * * *', schedule().everySeconds(42).getExpression())
21 | })
22 |
23 | test('every minute', ({ assert }) => {
24 | assert.equal('0 * * * * *', schedule().getExpression())
25 | assert.equal('0 * * * * *', schedule().everyMinute().getExpression())
26 | })
27 |
28 | test('every x minutes', ({ assert }) => {
29 | assert.equal('0 */2 * * * *', schedule().everyTwoMinutes().getExpression())
30 | assert.equal('0 */3 * * * *', schedule().everyThreeMinutes().getExpression())
31 | assert.equal('0 */5 * * * *', schedule().everyFiveMinutes().getExpression())
32 | assert.equal('0 */10 * * * *', schedule().everyTenMinutes().getExpression())
33 | assert.equal('0 */15 * * * *', schedule().everyFifteenMinutes().getExpression())
34 | assert.equal('0 */42 * * * *', schedule().everyMinutes(42).getExpression())
35 | })
36 |
37 | test('daily', ({ assert }) => {
38 | assert.equal('0 0 0 * * *', schedule().daily().getExpression())
39 | })
40 |
41 | test('daily at', ({ assert }) => {
42 | assert.equal('0 8 13 * * *', schedule().dailyAt('13:08').getExpression())
43 | })
44 |
45 | test('twice daily', ({ assert }) => {
46 | assert.equal('0 0 3,15 * * *', schedule().twiceDaily(3, 15).getExpression())
47 | })
48 |
49 | test('twice daily at', ({ assert }) => {
50 | assert.equal('0 5 3,15 * * *', schedule().twiceDailyAt(3, 15, 5).getExpression())
51 | })
52 |
53 | test('weekly', ({ assert }) => {
54 | assert.equal('0 0 0 * * 0', schedule().weekly().getExpression())
55 | })
56 |
57 | test('weekly on', ({ assert }) => {
58 | assert.equal('0 0 8 * * 1', schedule().weeklyOn(1, '8:00').getExpression())
59 | })
60 |
61 | test('override with hourly', ({ assert }) => {
62 | assert.equal('0 0 * * * *', schedule().everyFiveMinutes().hourly().getExpression())
63 | assert.equal('0 37 * * * *', schedule().hourlyAt(37).getExpression())
64 | assert.equal('0 */10 * * * *', schedule().hourlyAt('*/10').getExpression())
65 | assert.equal('0 15,30,45 * * * *', schedule().hourlyAt([15, 30, 45]).getExpression())
66 | })
67 |
68 | test('hourly', ({ assert }) => {
69 | assert.equal('0 0 1-23/2 * * *', schedule().everyOddHour().getExpression())
70 | assert.equal('0 0 */2 * * *', schedule().everyTwoHours().getExpression())
71 | assert.equal('0 0 */3 * * *', schedule().everyThreeHours().getExpression())
72 | assert.equal('0 0 */4 * * *', schedule().everyFourHours().getExpression())
73 | assert.equal('0 0 */6 * * *', schedule().everySixHours().getExpression())
74 |
75 | assert.equal('0 37 1-23/2 * * *', schedule().everyOddHour(37).getExpression())
76 | assert.equal('0 37 */2 * * *', schedule().everyTwoHours(37).getExpression())
77 | assert.equal('0 37 */3 * * *', schedule().everyThreeHours(37).getExpression())
78 | assert.equal('0 37 */4 * * *', schedule().everyFourHours(37).getExpression())
79 | assert.equal('0 37 */6 * * *', schedule().everySixHours(37).getExpression())
80 |
81 | assert.equal('0 */10 1-23/2 * * *', schedule().everyOddHour('*/10').getExpression())
82 | assert.equal('0 */10 */2 * * *', schedule().everyTwoHours('*/10').getExpression())
83 | assert.equal('0 */10 */3 * * *', schedule().everyThreeHours('*/10').getExpression())
84 | assert.equal('0 */10 */4 * * *', schedule().everyFourHours('*/10').getExpression())
85 | assert.equal('0 */10 */6 * * *', schedule().everySixHours('*/10').getExpression())
86 |
87 | assert.equal('0 15,30,45 1-23/2 * * *', schedule().everyOddHour([15, 30, 45]).getExpression())
88 | assert.equal('0 15,30,45 */2 * * *', schedule().everyTwoHours([15, 30, 45]).getExpression())
89 | assert.equal('0 15,30,45 */3 * * *', schedule().everyThreeHours([15, 30, 45]).getExpression())
90 | assert.equal('0 15,30,45 */4 * * *', schedule().everyFourHours([15, 30, 45]).getExpression())
91 | assert.equal('0 15,30,45 */6 * * *', schedule().everySixHours([15, 30, 45]).getExpression())
92 | })
93 |
94 | test('monthly', ({ assert }) => {
95 | assert.equal('0 0 0 1 * *', schedule().monthly().getExpression())
96 | })
97 |
98 | test('monthly on', ({ assert }) => {
99 | assert.equal('0 0 15 4 * *', schedule().monthlyOn(4, '15:00').getExpression())
100 | })
101 |
102 | test('LastDayOfMonth', ({ assert }) => {
103 | const lastDayOfMonth = DateTime.now().endOf('month').day
104 |
105 | assert.equal(`0 0 0 ${lastDayOfMonth} * *`, schedule().lastDayOfMonth().getExpression())
106 | })
107 |
108 | test('twice monthly', ({ assert }) => {
109 | assert.equal('0 0 0 1,16 * *', schedule().twiceMonthly(1, 16).getExpression())
110 | })
111 |
112 | test('twice monthlyAtTime', ({ assert }) => {
113 | assert.equal('0 30 1 1,16 * *', schedule().twiceMonthly(1, 16, '1:30').getExpression())
114 | })
115 |
116 | test('monthly on with minutes', ({ assert }) => {
117 | assert.equal('0 15 15 4 * *', schedule().monthlyOn(4, '15:15').getExpression())
118 | })
119 |
120 | test('weekdays daily', ({ assert }) => {
121 | assert.equal('0 0 0 * * 1-5', schedule().weekdays().daily().getExpression())
122 | })
123 |
124 | test('weekdays hourly', ({ assert }) => {
125 | assert.equal('0 0 * * * 1-5', schedule().weekdays().hourly().getExpression())
126 | })
127 | test('weekdays', ({ assert }) => {
128 | assert.equal('0 * * * * 1-5', schedule().weekdays().getExpression())
129 | })
130 |
131 | test('weekends', ({ assert }) => {
132 | assert.equal('0 * * * * 6,0', schedule().weekends().getExpression())
133 | })
134 |
135 | test('sundays', ({ assert }) => {
136 | assert.equal('0 * * * * 0', schedule().sundays().getExpression())
137 | })
138 |
139 | test('mondays', ({ assert }) => {
140 | assert.equal('0 * * * * 1', schedule().mondays().getExpression())
141 | })
142 |
143 | test('tuesdays', ({ assert }) => {
144 | assert.equal('0 * * * * 2', schedule().tuesdays().getExpression())
145 | })
146 |
147 | test('wednesdays', ({ assert }) => {
148 | assert.equal('0 * * * * 3', schedule().wednesdays().getExpression())
149 | })
150 |
151 | test('thursdays', ({ assert }) => {
152 | assert.equal('0 * * * * 4', schedule().thursdays().getExpression())
153 | })
154 | test('fridays', ({ assert }) => {
155 | assert.equal('0 * * * * 5', schedule().fridays().getExpression())
156 | })
157 |
158 | test('saturdays', ({ assert }) => {
159 | assert.equal('0 * * * * 6', schedule().saturdays().getExpression())
160 | })
161 |
162 | test('quarterly', ({ assert }) => {
163 | assert.equal('0 0 0 1 1-12/3 *', schedule().quarterly().getExpression())
164 | })
165 | test('yearly', ({ assert }) => {
166 | assert.equal('0 0 0 1 1 *', schedule().yearly().getExpression())
167 | })
168 |
169 | test('yearly on', ({ assert }) => {
170 | assert.equal('0 8 15 5 4 *', schedule().yearlyOn(4, 5, '15:08').getExpression())
171 | })
172 |
173 | test('yearly on and mondays only', ({ assert }) => {
174 | assert.equal('0 1 9 * 7 1', schedule().mondays().yearlyOn(7, '*', '09:01').getExpression())
175 | })
176 |
177 | test('yearly on tuesdays And DayOfMonth 20', ({ assert }) => {
178 | assert.equal('0 1 9 20 7 2', schedule().tuesdays().yearlyOn(7, 20, '09:01').getExpression())
179 | })
180 | })
181 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@adonisjs/tsconfig/tsconfig.package.json",
3 | "compilerOptions": {
4 | "rootDir": "./",
5 | "outDir": "./build"
6 | }
7 | }
--------------------------------------------------------------------------------