diff --git a/cmds/clean/all.js b/cmds/clean/all.js index b8bcb90b..531de095 100644 --- a/cmds/clean/all.js +++ b/cmds/clean/all.js @@ -17,9 +17,11 @@ "use strict"; -exports.command = ['all', 'everything']; -exports.desc = 'Do all cleaning tasks'; +import { e_call } from '../../src/util.js'; -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'clean/all'); +export const command = ['all', 'everything']; +export const desc = 'Do all cleaning tasks'; + +export const handler = async (argv) => { + await e_call(argv, 'clean/all'); }; diff --git a/cmds/clean/autoloads.js b/cmds/clean/autoloads.js index 4a9dd766..1719e48e 100644 --- a/cmds/clean/autoloads.js +++ b/cmds/clean/autoloads.js @@ -17,9 +17,11 @@ "use strict"; -exports.command = ['autoloads']; -exports.desc = 'Remove the generated autoloads file'; +import { e_call } from '../../src/util.js'; -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'clean/autoloads', argv.dest); +export const command = ['autoloads']; +export const desc = 'Remove the generated autoloads file'; + +export const handler = async (argv) => { + await e_call(argv, 'clean/autoloads', argv.dest); }; diff --git a/cmds/clean/dist.js b/cmds/clean/dist.js index dc23a6c9..59428e25 100644 --- a/cmds/clean/dist.js +++ b/cmds/clean/dist.js @@ -17,9 +17,11 @@ "use strict"; -exports.command = ['dist [destination]', 'distribution [destination]']; -exports.desc = 'Delete the dist directory where the build output is stored'; -exports.builder = yargs => yargs +import { e_call } from '../../src/util.js'; + +export const command = ['dist [destination]', 'distribution [destination]']; +export const desc = 'Delete the dist directory where the build output is stored'; +export const builder = yargs => yargs .positional( 'destination', { description: 'destination path/folder to clean up', @@ -27,6 +29,6 @@ exports.builder = yargs => yargs type: 'string', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'clean/dist', argv.dest); +export const handler = async (argv) => { + await e_call(argv, 'clean/dist', argv.dest); }; diff --git a/cmds/clean/elc.js b/cmds/clean/elc.js index 4c8efaf3..d1a12db9 100644 --- a/cmds/clean/elc.js +++ b/cmds/clean/elc.js @@ -17,9 +17,11 @@ "use strict"; -exports.command = ['elc']; -exports.desc = 'Remove byte compiled files generated by eask compile'; +import { e_call } from '../../src/util.js'; -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'clean/elc'); +export const command = ['elc']; +export const desc = 'Remove byte compiled files generated by eask compile'; + +export const handler = async (argv) => { + await e_call(argv, 'clean/elc'); }; diff --git a/cmds/clean/log-file.js b/cmds/clean/log-file.js index 9b3ba74d..07bb2191 100644 --- a/cmds/clean/log-file.js +++ b/cmds/clean/log-file.js @@ -17,9 +17,11 @@ "use strict"; -exports.command = ['log-file']; -exports.desc = 'Remove all generated log files'; +import { e_call } from '../../src/util.js'; -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'clean/log-file'); +export const command = ['log-file']; +export const desc = 'Remove all generated log files'; + +export const handler = async (argv) => { + await e_call(argv, 'clean/log-file'); }; diff --git a/cmds/clean/pkg-file.js b/cmds/clean/pkg-file.js index 88b50357..9f4ef233 100644 --- a/cmds/clean/pkg-file.js +++ b/cmds/clean/pkg-file.js @@ -17,9 +17,11 @@ "use strict"; -exports.command = ['pkg-file']; -exports.desc = 'Remove the generated pkg-file'; +import { e_call } from '../../src/util.js'; -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'clean/pkg-file'); +export const command = ['pkg-file']; +export const desc = 'Remove the generated pkg-file'; + +export const handler = async (argv) => { + await e_call(argv, 'clean/pkg-file'); }; diff --git a/cmds/clean/workspace.js b/cmds/clean/workspace.js index c7027af3..377991f7 100644 --- a/cmds/clean/workspace.js +++ b/cmds/clean/workspace.js @@ -17,9 +17,11 @@ "use strict"; -exports.command = ['workspace', '.eask']; -exports.desc = 'Clean up the .eask directory'; +import { e_call } from '../../src/util.js'; -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'clean/workspace'); +export const command = ['workspace', '.eask']; +export const desc = 'Clean up the .eask directory'; + +export const handler = async (argv) => { + await e_call(argv, 'clean/workspace'); }; diff --git a/cmds/core/analyze.js b/cmds/core/analyze.js index 6209a42b..b49c6aea 100644 --- a/cmds/core/analyze.js +++ b/cmds/core/analyze.js @@ -17,9 +17,12 @@ "use strict"; -exports.command = ['analyze [files..]']; -exports.desc = 'Run Eask checker'; -exports.builder = yargs => yargs +import { TITLE_CMD_OPTION } from "../../src/env.js"; +import { e_call, def_flag } from '../../src/util.js'; + +export const command = ['analyze [files..]']; +export const desc = 'Run Eask checker'; +export const builder = yargs => yargs .positional( '[files..]', { description: 'specify Eask-files for checker to lint', @@ -39,9 +42,9 @@ exports.builder = yargs => yargs }, }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/analyze' - , argv.files - , UTIL.def_flag(argv.json, '--json') - , UTIL.def_flag(argv.output, '--output', argv.output)); +export const handler = async (argv) => { + await e_call(argv, 'core/analyze' + , argv.files + , def_flag(argv.json, '--json') + , def_flag(argv.output, '--output', argv.output)); }; diff --git a/cmds/core/archives.js b/cmds/core/archives.js index 3f20e2d5..0ee92b08 100644 --- a/cmds/core/archives.js +++ b/cmds/core/archives.js @@ -17,9 +17,11 @@ "use strict"; -exports.command = ['archives', 'sources']; -exports.desc = 'List out all package archives'; +import { e_call } from '../../src/util.js'; -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/archives'); +export const command = ['archives', 'sources']; +export const desc = 'List out all package archives'; + +export const handler = async (argv) => { + await e_call(argv, 'core/archives'); }; diff --git a/cmds/core/bump.js b/cmds/core/bump.js index 156f6797..834e9f32 100644 --- a/cmds/core/bump.js +++ b/cmds/core/bump.js @@ -17,16 +17,18 @@ "use strict"; -exports.command = ['bump [levels..]']; -exports.desc = UTIL.hide_cmd('Bump version for your project'); -exports.builder = yargs => yargs +import { e_call, hide_cmd } from '../../src/util.js'; + +export const command = ['bump [levels..]']; +export const desc = hide_cmd('Bump version for your project'); +export const builder = yargs => yargs .positional( '[levels..]', { description: "version level to bump; accept `major', `minor' or `patch'", type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/bump' - , argv.levels); +export const handler = async (argv) => { + await e_call(argv, 'core/bump' + , argv.levels); }; diff --git a/cmds/core/cat.js b/cmds/core/cat.js index 52d0cb47..20ed1036 100644 --- a/cmds/core/cat.js +++ b/cmds/core/cat.js @@ -17,9 +17,12 @@ "use strict"; -exports.command = ['cat ', 'type ']; -exports.desc = UTIL.hide_cmd('View filename(s)'); -exports.builder = yargs => yargs +import { TITLE_CMD_OPTION } from "../../src/env.js"; +import { e_call, hide_cmd, def_flag } from '../../src/util.js'; + +export const command = ['cat ', 'type ']; +export const desc = hide_cmd('View filename(s)'); +export const builder = yargs => yargs .positional( '', { description: 'patterns you want to search (wildcard)', @@ -35,8 +38,8 @@ exports.builder = yargs => yargs }, }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/cat' - , argv.patterns - , UTIL.def_flag(argv.number, '--number')); +export const handler = async (argv) => { + await e_call(argv, 'core/cat' + , argv.patterns + , def_flag(argv.number, '--number')); }; diff --git a/cmds/core/clean.js b/cmds/core/clean.js index 36e9cfd8..2aa4a952 100644 --- a/cmds/core/clean.js +++ b/cmds/core/clean.js @@ -17,17 +17,22 @@ "use strict"; -exports.command = ['clean ']; -exports.desc = 'Delete various files produced during building'; -exports.builder = function (yargs) { - yargs.usage(`${exports.desc} +import path from 'path'; +import { cmd_count } from '../../src/util.js'; + +const __dirname = import.meta.dirname; + +export const command = ['clean ']; +export const desc = 'Delete various files produced during building'; +export const builder = function (yargs) { + yargs.usage(`${desc} Usage: eask clean [options..]`) - .commandDir('../clean/') + .commandDir(path.join(__dirname, '../clean/')) .demandCommand(); /* XXX: Configure only in the menu. */ - if (UTIL.cmd_count() == 1) { + if (cmd_count() == 1) { yargs.positional( '', { description: 'type of the cleaning task', @@ -35,4 +40,4 @@ Usage: eask clean [options..]`) } } -exports.handler = async (argv) => { }; +export const handler = async (argv) => { }; diff --git a/cmds/core/compile.js b/cmds/core/compile.js index 4ffa3326..d388fcc1 100644 --- a/cmds/core/compile.js +++ b/cmds/core/compile.js @@ -17,9 +17,12 @@ "use strict"; -exports.command = ['compile [names..]']; -exports.desc = "Byte-compile `.el' files"; -exports.builder = yargs => yargs +import { TITLE_CMD_OPTION } from "../../src/env.js"; +import { e_call, def_flag } from '../../src/util.js'; + +export const command = ['compile [names..]']; +export const desc = "Byte-compile `.el' files"; +export const builder = yargs => yargs .positional( '[names..]', { description: 'specify files to byte-compile', @@ -33,8 +36,8 @@ exports.builder = yargs => yargs }, }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/compile' +export const handler = async (argv) => { + await e_call(argv, 'core/compile' , argv.names - , UTIL.def_flag(argv.clean, '--clean')); + , def_flag(argv.clean, '--clean')); }; diff --git a/cmds/core/concat.js b/cmds/core/concat.js index f6d164ed..a2318b27 100644 --- a/cmds/core/concat.js +++ b/cmds/core/concat.js @@ -17,9 +17,12 @@ "use strict"; -exports.command = ['concat [names..]', 'concatenate [names..]']; -exports.desc = UTIL.hide_cmd('Concatenate elisp files'); -exports.builder = yargs => yargs +import { TITLE_CMD_OPTION } from "../../src/env.js"; +import { e_call, hide_cmd, def_flag } from '../../src/util.js'; + +export const command = ['concat [names..]', 'concatenate [names..]']; +export const desc = hide_cmd('Concatenate elisp files'); +export const builder = yargs => yargs .positional( '[names..]', { description: 'specify files to concatenate', @@ -41,9 +44,9 @@ exports.builder = yargs => yargs }, }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/concat' - , argv.names - , UTIL.def_flag(argv.dest, '--dest', argv.dest) - , UTIL.def_flag(argv.output, '--output', argv.output)); +export const handler = async (argv) => { + await e_call(argv, 'core/concat' + , argv.names + , def_flag(argv.dest, '--dest', argv.dest) + , def_flag(argv.output, '--output', argv.output)); }; diff --git a/cmds/core/create.js b/cmds/core/create.js index c91b3d4e..4a4526cc 100644 --- a/cmds/core/create.js +++ b/cmds/core/create.js @@ -17,17 +17,22 @@ "use strict"; -exports.command = ['create ']; -exports.desc = 'Create a new elisp project'; -exports.builder = function (yargs) { - yargs.usage(`${exports.desc} +import path from 'path'; +import { cmd_count } from '../../src/util.js'; + +const __dirname = import.meta.dirname; + +export const command = ['create ']; +export const desc = 'Create a new elisp project'; +export const builder = function (yargs) { + yargs.usage(`${desc} Usage: eask create [options..]`) - .commandDir('../create/') + .commandDir(path.join(__dirname, '../create/')) .demandCommand(); /* XXX: Configure only in the menu. */ - if (UTIL.cmd_count() == 1) { + if (cmd_count() == 1) { yargs.positional( '', { description: 'type of the creation', @@ -35,4 +40,4 @@ Usage: eask create [options..]`) } } -exports.handler = async (argv) => { }; +export const handler = async (argv) => { }; diff --git a/cmds/core/docker.js b/cmds/core/docker.js index 0ab6552e..80c5ce49 100644 --- a/cmds/core/docker.js +++ b/cmds/core/docker.js @@ -17,12 +17,13 @@ "use strict"; -const path = require('path'); -const child_process = require("child_process"); +import path from 'path'; +import child_process from "child_process"; +import { which, cli_args, slash } from '../../src/util.js'; -exports.command = ['docker [args..]']; -exports.desc = 'Launch specified Emacs version in a Docker container'; -exports.builder = async (yargs) => { +export const command = ['docker [args..]']; +export const desc = 'Launch specified Emacs version in a Docker container'; +export const builder = async (yargs) => { yargs.help(false); yargs.version(false); yargs.getOptions().narg = []; @@ -33,8 +34,8 @@ exports.builder = async (yargs) => { }); }; -exports.handler = async (argv) => { - if (!UTIL.which('docker')) { +export const handler = async (argv) => { + if (!which('docker')) { console.warn("Docker is not installed (cannot find `docker' executable)"); return; } @@ -67,7 +68,7 @@ exports.handler = async (argv) => { let cmd = default_cmd.concat(rest); - let proc = child_process.spawn(UTIL.cli_args(cmd), { stdio: 'inherit', shell: true }); + let proc = child_process.spawn(cli_args(cmd), { stdio: 'inherit', shell: true }); proc.on('close', function (code) { if (code == 0) return; @@ -80,7 +81,7 @@ exports.handler = async (argv) => { * @param { String } path - Path to convert. */ function convert_path(path) { - return UTIL.slash(path).replaceAll(':', ''); + return slash(path).replaceAll(':', ''); } /** diff --git a/cmds/core/docs.js b/cmds/core/docs.js index 7bb2b9bf..bec1f7c2 100644 --- a/cmds/core/docs.js +++ b/cmds/core/docs.js @@ -17,17 +17,22 @@ "use strict"; -exports.command = ['docs ', 'doc ']; -exports.desc = 'Build documentation'; -exports.builder = function (yargs) { - yargs.usage(`${exports.desc} +import path from 'path'; +import { cmd_count } from '../../src/util.js'; + +const __dirname = import.meta.dirname; + +export const command = ['docs ', 'doc ']; +export const desc = 'Build documentation'; +export const builder = function (yargs) { + yargs.usage(`${desc} Usage: eask docs [options..]`) - .commandDir('../docs/') + .commandDir(path.join(__dirname, '../docs/')) .demandCommand(); /* XXX: Configure only in the menu. */ - if (UTIL.cmd_count() == 1) { + if (cmd_count() == 1) { yargs.positional( '', { description: 'type of the generator', @@ -35,4 +40,4 @@ Usage: eask docs [options..]`) } } -exports.handler = async (argv) => { }; +export const handler = async (argv) => { }; diff --git a/cmds/core/emacs.js b/cmds/core/emacs.js index 4581d0b9..c43d0775 100644 --- a/cmds/core/emacs.js +++ b/cmds/core/emacs.js @@ -17,26 +17,28 @@ "use strict"; -const child_process = require("child_process"); +import child_process from "child_process"; +import { EASK_EMACS } from '../../src/env.js'; +import { el_script, setup_env, cli_args } from '../../src/util.js'; -exports.command = ['emacs [args..]']; -exports.desc = 'Execute emacs with the appropriate environment'; -exports.builder = async (yargs) => { +export const command = ['emacs [args..]']; +export const desc = 'Execute emacs with the appropriate environment'; +export const builder = async (yargs) => { yargs.help(false); yargs.version(false); yargs.getOptions().narg = []; yargs.strict(false); }; -exports.handler = async (argv) => { - let s_path = UTIL.el_script('core/emacs'); +export const handler = async (argv) => { + let s_path = el_script('core/emacs'); let default_cmd = [EASK_EMACS, '-Q', '-l', s_path]; let rest = process.argv.slice(3); let cmd = default_cmd.concat(rest); - UTIL.setup_env(); - let proc = child_process.spawn(UTIL.cli_args(cmd), { stdio: 'inherit', shell: true }); + setup_env(); + let proc = child_process.spawn(cli_args(cmd), { stdio: 'inherit', shell: true }); proc.on('close', function (code) { if (code == 0) return; diff --git a/cmds/core/eval.js b/cmds/core/eval.js index 82e394b8..e10ada6c 100644 --- a/cmds/core/eval.js +++ b/cmds/core/eval.js @@ -17,20 +17,22 @@ "use strict"; -const fs = require('fs'); -const child_process = require("child_process"); +import fs from 'fs'; +import child_process from "child_process"; +import { EASK_HOMEDIR } from "../../src/env.js"; +import { e_call, cli_args } from '../../src/util.js'; -exports.command = ['eval [form]']; -exports.desc = 'Evaluate lisp form with a proper PATH'; -exports.builder = yargs => yargs +export const command = ['eval [form]']; +export const desc = 'Evaluate lisp form with a proper PATH'; +export const builder = yargs => yargs .positional( '[form]', { description: 'lisp form', type: 'string', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/eval', argv.form); +export const handler = async (argv) => { + await e_call(argv, 'core/eval', argv.form); if (!fs.existsSync(EASK_HOMEDIR)) { return; @@ -53,7 +55,7 @@ exports.handler = async (argv) => { let cmd = ['emacs', '--batch', '--eval', argv.form]; - let proc = child_process.spawn(UTIL.cli_args(cmd), { stdio: 'inherit', shell: true }); + let proc = child_process.spawn(cli_args(cmd), { stdio: 'inherit', shell: true }); proc.on('close', function (code) { if (code == 0) return; diff --git a/cmds/core/exec-path.js b/cmds/core/exec-path.js index e6e28fec..4967ec8f 100644 --- a/cmds/core/exec-path.js +++ b/cmds/core/exec-path.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['path [patterns..]', 'exec-path [patterns..]']; -exports.desc = 'Print the PATH (exec-path) from workspace'; -exports.builder = yargs => yargs +import { e_call } from '../../src/util.js'; + +export const command = ['path [patterns..]', 'exec-path [patterns..]']; +export const desc = 'Print the PATH (exec-path) from workspace'; +export const builder = yargs => yargs .positional( '[patterns..]', { description: 'patterns you want to search (regex)', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/exec-path', argv.patterns); +export const handler = async (argv) => { + await e_call(argv, 'core/exec-path', argv.patterns); }; diff --git a/cmds/core/exec.js b/cmds/core/exec.js index 3fd7558b..96286e30 100644 --- a/cmds/core/exec.js +++ b/cmds/core/exec.js @@ -17,22 +17,24 @@ "use strict"; -const fs = require('fs'); -const child_process = require("child_process"); - -exports.command = ['exec [args..]']; -exports.desc = 'Execute command with correct environment PATH set up'; -exports.builder = async (yargs) => { +import fs from 'fs'; +import child_process from "child_process"; +import { EASK_HOMEDIR } from "../../src/env.js"; +import { e_call, cli_args } from '../../src/util.js'; + +export const command = ['exec [args..]']; +export const desc = 'Execute command with correct environment PATH set up'; +export const builder = async (yargs) => { yargs.help(false); yargs.version(false); yargs.getOptions().narg = []; yargs.strict(false); }; -exports.handler = async (argv) => { +export const handler = async (argv) => { let cmd = process.argv.slice(3); - await UTIL.e_call(argv, 'core/exec', '--', cmd); + await e_call(argv, 'core/exec', '--', cmd); if (cmd.length == 0) { return; @@ -52,7 +54,7 @@ exports.handler = async (argv) => { process.env.PATH = fs.readFileSync(epf, 'utf8'); process.env.EMACSLOADPATH = fs.readFileSync(lpf, 'utf8'); - let proc = child_process.spawn(UTIL.cli_args(cmd), { stdio: 'inherit', shell: true }); + let proc = child_process.spawn(cli_args(cmd), { stdio: 'inherit', shell: true }); proc.on('close', function (code) { if (code == 0) return; diff --git a/cmds/core/files.js b/cmds/core/files.js index 8a34ea46..1a7219a8 100644 --- a/cmds/core/files.js +++ b/cmds/core/files.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['files [patterns..]']; -exports.desc = 'Print all package files'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['files [patterns..]']; +export const desc = 'Print all package files'; +export const builder = yargs => yargs .positional( '[patterns..]', { description: 'patterns you want to search (wildcard)', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/files', argv.patterns); +export const handler = async (argv) => { + await e_call(argv, 'core/files', argv.patterns); }; diff --git a/cmds/core/format.js b/cmds/core/format.js index 99cf8792..61a91a42 100644 --- a/cmds/core/format.js +++ b/cmds/core/format.js @@ -17,17 +17,22 @@ "use strict"; -exports.command = ['format ', 'fmt ']; -exports.desc = 'Run formatters'; -exports.builder = function (yargs) { - yargs.usage(`${exports.desc} +import path from 'path'; +import { cmd_count } from '../../src/util.js'; + +const __dirname = import.meta.dirname; + +export const command = ['format ', 'fmt ']; +export const desc = 'Run formatters'; +export const builder = function (yargs) { + yargs.usage(`${desc} Usage: eask format [options..]`) - .commandDir('../format/') + .commandDir(path.join(__dirname, '../format/')) .demandCommand(); /* XXX: Configure only in the menu. */ - if (UTIL.cmd_count() == 1) { + if (cmd_count() == 1) { yargs.positional( '', { description: 'type of the formatter', @@ -35,4 +40,4 @@ Usage: eask format [options..]`) } } -exports.handler = async (argv) => { }; +export const handler = async (argv) => { }; diff --git a/cmds/core/generate.js b/cmds/core/generate.js index e3e0025f..9e1ec3cb 100644 --- a/cmds/core/generate.js +++ b/cmds/core/generate.js @@ -17,17 +17,22 @@ "use strict"; -exports.command = ['generate ']; -exports.desc = 'Generate files that are used for the development'; -exports.builder = function (yargs) { - yargs.usage(`${exports.desc} +import path from 'path'; +import { cmd_count } from '../../src/util.js'; + +const __dirname = import.meta.dirname; + +export const command = ['generate ']; +export const desc = 'Generate files that are used for the development'; +export const builder = function (yargs) { + yargs.usage(`${desc} Usage: eask generate [options..]`) - .commandDir('../generate/') + .commandDir(path.join(__dirname, '../generate/')) .demandCommand(); /* XXX: Configure only in the menu. */ - if (UTIL.cmd_count() == 1) { + if (cmd_count() == 1) { yargs.positional( '', { description: 'type of the file', @@ -35,4 +40,4 @@ Usage: eask generate [options..]`) } } -exports.handler = async (argv) => { }; +export const handler = async (argv) => { }; diff --git a/cmds/core/info.js b/cmds/core/info.js index d5886d2d..61b8cf55 100644 --- a/cmds/core/info.js +++ b/cmds/core/info.js @@ -17,9 +17,11 @@ "use strict"; -exports.command = ['info']; -exports.desc = 'Display information about the current package'; +import { e_call } from "../../src/util.js"; -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/info'); +export const command = ['info']; +export const desc = 'Display information about the current package'; + +export const handler = async (argv) => { + await e_call(argv, 'core/info'); }; diff --git a/cmds/core/init.js b/cmds/core/init.js index 9045c58a..0aa88525 100644 --- a/cmds/core/init.js +++ b/cmds/core/init.js @@ -17,9 +17,12 @@ "use strict"; -exports.command = ['init [files..]']; -exports.desc = 'Initialize project to use Eask'; -exports.builder = yargs => yargs +import { TITLE_CMD_OPTION } from "../../src/env.js"; +import { e_call, def_flag } from "../../src/util.js"; + +export const command = ['init [files..]']; +export const desc = 'Initialize project to use Eask'; +export const builder = yargs => yargs .positional( '[files..]', { description: 'files to use with `--from` flag', @@ -34,15 +37,15 @@ exports.builder = yargs => yargs }, }); -exports.handler = async (argv) => { +export const handler = async (argv) => { if (argv.from) { switch (argv.from) { case 'cask': case 'eldev': case 'keg': case 'source': - await UTIL.e_call(argv, 'init/' + argv.from - , UTIL.def_flag(argv.from, '--from', argv.from) + await e_call(argv, 'init/' + argv.from + , def_flag(argv.from, '--from', argv.from) , argv.files); break; default: @@ -50,6 +53,6 @@ exports.handler = async (argv) => { break; } } else { - await UTIL.e_call(argv, 'core/init'); + await e_call(argv, 'core/init'); } }; diff --git a/cmds/core/install-deps.js b/cmds/core/install-deps.js index 1172f2a3..271ce652 100644 --- a/cmds/core/install-deps.js +++ b/cmds/core/install-deps.js @@ -17,9 +17,12 @@ "use strict"; -exports.command = ['install-deps', 'install-dependencies', 'prepare']; -exports.desc = 'Automatically install package dependencies'; -exports.builder = yargs => yargs +import { TITLE_CMD_OPTION } from "../../src/env.js"; +import { e_call, def_flag } from "../../src/util.js"; + +export const command = ['install-deps', 'install-dependencies', 'prepare']; +export const desc = 'Automatically install package dependencies'; +export const builder = yargs => yargs .options({ 'development': { description: 'also install development dependencies', @@ -29,7 +32,7 @@ exports.builder = yargs => yargs }, }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/install-deps' - , UTIL.def_flag(argv.development, '--dev')); +export const handler = async (argv) => { + await e_call(argv, 'core/install-deps' + , def_flag(argv.development, '--dev')); }; diff --git a/cmds/core/install-file.js b/cmds/core/install-file.js index 303c8204..e5204bd7 100644 --- a/cmds/core/install-file.js +++ b/cmds/core/install-file.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['install-file [files..]']; -exports.desc = 'Install packages from files, .tar files, or directories'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['install-file [files..]']; +export const desc = 'Install packages from files, .tar files, or directories'; +export const builder = yargs => yargs .positional( '[files..]', { description: 'files to install as packages', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/install-file', argv.files); +export const handler = async (argv) => { + await e_call(argv, 'core/install-file', argv.files); }; diff --git a/cmds/core/install-vc.js b/cmds/core/install-vc.js index d7a1df67..f9734c80 100644 --- a/cmds/core/install-vc.js +++ b/cmds/core/install-vc.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['install-vc [specs..]']; -exports.desc = 'Fetch and install packages directly via version control'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['install-vc [specs..]']; +export const desc = 'Fetch and install packages directly via version control'; +export const builder = yargs => yargs .positional( '[specs..]', { description: 'vc specification to install as packages', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/install-vc', argv.specs); +export const handler = async (argv) => { + await e_call(argv, 'core/install-vc', argv.specs); }; diff --git a/cmds/core/install.js b/cmds/core/install.js index 27799baf..91b8f664 100644 --- a/cmds/core/install.js +++ b/cmds/core/install.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['install [names..]']; -exports.desc = 'Install packages from archives or install from the workspace'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['install [names..]']; +export const desc = 'Install packages from archives or install from the workspace'; +export const builder = yargs => yargs .positional( '[names..]', { description: 'packages to install', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/install', argv.names); +export const handler = async (argv) => { + await e_call(argv, 'core/install', argv.names); }; diff --git a/cmds/core/keywords.js b/cmds/core/keywords.js index 32a1431d..9c55fb71 100644 --- a/cmds/core/keywords.js +++ b/cmds/core/keywords.js @@ -17,9 +17,11 @@ "use strict"; -exports.command = ['keywords']; -exports.desc = 'Display the available keywords for use in the header section'; +import { e_call } from "../../src/util.js"; -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/keywords'); +export const command = ['keywords']; +export const desc = 'Display the available keywords for use in the header section'; + +export const handler = async (argv) => { + await e_call(argv, 'core/keywords'); }; diff --git a/cmds/core/link.js b/cmds/core/link.js index 37a429fe..66cbab74 100644 --- a/cmds/core/link.js +++ b/cmds/core/link.js @@ -17,17 +17,22 @@ "use strict"; -exports.command = ['link ']; -exports.desc = 'Manage links'; -exports.builder = function (yargs) { - yargs.usage(`${exports.desc} +import path from 'path'; +import { cmd_count } from '../../src/util.js'; + +const __dirname = import.meta.dirname; + +export const command = ['link ']; +export const desc = 'Manage links'; +export const builder = function (yargs) { + yargs.usage(`${desc} Usage: eask link [options..]`) - .commandDir('../link/') + .commandDir(path.join(__dirname, '../link/')) .demandCommand(); /* XXX: Configure only in the menu. */ - if (UTIL.cmd_count() == 1) { + if (cmd_count() == 1) { yargs.positional( '', { description: 'type of link action', @@ -35,4 +40,4 @@ Usage: eask link [options..]`) } } -exports.handler = async (argv) => { }; +export const handler = async (argv) => { }; diff --git a/cmds/core/lint.js b/cmds/core/lint.js index 6772d13a..4ee38fd2 100644 --- a/cmds/core/lint.js +++ b/cmds/core/lint.js @@ -17,17 +17,22 @@ "use strict"; -exports.command = ['lint ']; -exports.desc = 'Run linters'; -exports.builder = function (yargs) { - yargs.usage(`${exports.desc} +import path from 'path'; +import { cmd_count } from '../../src/util.js'; + +const __dirname = import.meta.dirname; + +export const command = ['lint ']; +export const desc = 'Run linters'; +export const builder = function (yargs) { + yargs.usage(`${desc} Usage: eask lint [options..]`) - .commandDir('../lint/') + .commandDir(path.join(__dirname, '../lint/')) .demandCommand(); /* XXX: Configure only in the menu. */ - if (UTIL.cmd_count() == 1) { + if (cmd_count() == 1) { yargs.positional( '', { description: 'type of the linter', @@ -35,4 +40,4 @@ Usage: eask lint [options..]`) } } -exports.handler = async (argv) => { }; +export const handler = async (argv) => { }; diff --git a/cmds/core/list.js b/cmds/core/list.js index b98429b9..cdd93f77 100644 --- a/cmds/core/list.js +++ b/cmds/core/list.js @@ -17,9 +17,12 @@ "use strict"; -exports.command = ['list']; -exports.desc = 'List all installed packages in dependency tree form'; -exports.builder = yargs => yargs +import { TITLE_CMD_OPTION } from "../../src/env.js"; +import { e_call, def_flag } from "../../src/util.js"; + +export const command = ['list']; +export const desc = 'List all installed packages in dependency tree form'; +export const builder = yargs => yargs .options({ 'depth': { description: 'dependency depth level to print', @@ -29,7 +32,7 @@ exports.builder = yargs => yargs }, }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/list' - , UTIL.def_flag(argv.depth, '--depth', argv.depth)); +export const handler = async (argv) => { + await e_call(argv, 'core/list' + , def_flag(argv.depth, '--depth', argv.depth)); }; diff --git a/cmds/core/load-path.js b/cmds/core/load-path.js index fe21eefa..8746d0b5 100644 --- a/cmds/core/load-path.js +++ b/cmds/core/load-path.js @@ -17,9 +17,12 @@ "use strict"; -exports.command = ['load-path [patterns..]']; -exports.desc = 'Print the load-path from workspace'; -exports.builder = yargs => yargs +import { TITLE_CMD_OPTION } from "../../src/env.js"; +import { e_call } from "../../src/util.js"; + +export const command = ['load-path [patterns..]']; +export const desc = 'Print the load-path from workspace'; +export const builder = yargs => yargs .positional( '[patterns..]', { description: 'patterns you want to search (regex)', @@ -28,6 +31,6 @@ exports.builder = yargs => yargs group: TITLE_CMD_OPTION, }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/load-path', argv.patterns); +export const handler = async (argv) => { + await e_call(argv, 'core/load-path', argv.patterns); }; diff --git a/cmds/core/load.js b/cmds/core/load.js index 8d7f2950..1fd8db29 100644 --- a/cmds/core/load.js +++ b/cmds/core/load.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['load [files..]']; -exports.desc = 'Load elisp files'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['load [files..]']; +export const desc = 'Load elisp files'; +export const builder = yargs => yargs .positional( '[files..]', { description: 'files to load', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/load', argv.files); +export const handler = async (argv) => { + await e_call(argv, 'core/load', argv.files); }; diff --git a/cmds/core/loc.js b/cmds/core/loc.js index 1badbb2b..02b500b0 100644 --- a/cmds/core/loc.js +++ b/cmds/core/loc.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['loc [files..]']; -exports.desc = UTIL.hide_cmd('Print LOC information'); -exports.builder = yargs => yargs +import { e_call, hide_cmd } from "../../src/util.js"; + +export const command = ['loc [files..]']; +export const desc = hide_cmd('Print LOC information'); +export const builder = yargs => yargs .positional( '[files..]', { description: 'files to print LOC information', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/loc', argv.files); +export const handler = async (argv) => { + await e_call(argv, 'core/loc', argv.files); }; diff --git a/cmds/core/outdated.js b/cmds/core/outdated.js index 4d403cba..3aa7809a 100644 --- a/cmds/core/outdated.js +++ b/cmds/core/outdated.js @@ -17,9 +17,12 @@ "use strict"; -exports.command = ['outdated']; -exports.desc = 'Show all outdated dependencies'; -exports.builder = yargs => yargs +import { TITLE_CMD_OPTION } from "../../src/env.js"; +import { e_call } from "../../src/util.js"; + +export const command = ['outdated']; +export const desc = 'Show all outdated dependencies'; +export const builder = yargs => yargs .options({ 'depth': { description: 'dependency depth level to print', @@ -29,6 +32,6 @@ exports.builder = yargs => yargs }, }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/outdated'); +export const handler = async (argv) => { + await e_call(argv, 'core/outdated'); }; diff --git a/cmds/core/package-directory.js b/cmds/core/package-directory.js index 5f805678..1ca2f62d 100644 --- a/cmds/core/package-directory.js +++ b/cmds/core/package-directory.js @@ -17,9 +17,11 @@ "use strict"; -exports.command = ['package-directory']; -exports.desc = 'Print the path to package directory'; +import { e_call } from "../../src/util.js"; -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/package-directory'); +export const command = ['package-directory']; +export const desc = 'Print the path to package directory'; + +export const handler = async (argv) => { + await e_call(argv, 'core/package-directory'); }; diff --git a/cmds/core/package.js b/cmds/core/package.js index b787cb45..a654cef6 100644 --- a/cmds/core/package.js +++ b/cmds/core/package.js @@ -17,9 +17,11 @@ "use strict"; -exports.command = ['package [destination]', 'pack [destination]']; -exports.desc = 'Build a package artifact, and put it into the given destination'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['package [destination]', 'pack [destination]']; +export const desc = 'Build a package artifact, and put it into the given destination'; +export const builder = yargs => yargs .positional( 'destination', { description: 'destination path/folder', @@ -27,6 +29,6 @@ exports.builder = yargs => yargs type: 'string', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/package', argv.dest); +export const handler = async (argv) => { + await e_call(argv, 'core/package', argv.dest); }; diff --git a/cmds/core/recipe.js b/cmds/core/recipe.js index cab4691e..1b1059ad 100644 --- a/cmds/core/recipe.js +++ b/cmds/core/recipe.js @@ -17,9 +17,11 @@ "use strict"; -exports.command = ['recipe']; -exports.desc = 'Suggest a recipe format'; +import { e_call } from "../../src/util.js"; -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/recipe'); +export const command = ['recipe']; +export const desc = 'Suggest a recipe format'; + +export const handler = async (argv) => { + await e_call(argv, 'core/recipe'); }; diff --git a/cmds/core/recompile.js b/cmds/core/recompile.js index b820616b..1be56fa8 100644 --- a/cmds/core/recompile.js +++ b/cmds/core/recompile.js @@ -17,9 +17,12 @@ "use strict"; -exports.command = ['recompile [names..]']; -exports.desc = "Byte-recompile `.el' files"; -exports.builder = yargs => yargs +import { TITLE_CMD_OPTION } from "../../src/env.js"; +import { e_call, def_flag } from "../../src/util.js"; + +export const command = ['recompile [names..]']; +export const desc = "Byte-recompile `.el' files"; +export const builder = yargs => yargs .positional( '[names..]', { description: 'specify files to byte-compile', @@ -33,8 +36,8 @@ exports.builder = yargs => yargs }, }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/recompile' - , argv.names - , UTIL.def_flag(argv.clean, '--clean')); +export const handler = async (argv) => { + await e_call(argv, 'core/recompile' + , argv.names + , def_flag(argv.clean, '--clean')); }; diff --git a/cmds/core/refresh.js b/cmds/core/refresh.js index e6867d95..912b6521 100644 --- a/cmds/core/refresh.js +++ b/cmds/core/refresh.js @@ -17,9 +17,11 @@ "use strict"; -exports.command = ['refresh']; -exports.desc = 'Download descriptions of all configured package archives'; +import { e_call } from "../../src/util.js"; -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/refresh'); +export const command = ['refresh']; +export const desc = 'Download descriptions of all configured package archives'; + +export const handler = async (argv) => { + await e_call(argv, 'core/refresh'); }; diff --git a/cmds/core/reinstall.js b/cmds/core/reinstall.js index f50ffdb0..8cfcecbc 100644 --- a/cmds/core/reinstall.js +++ b/cmds/core/reinstall.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['reinstall [names..]']; -exports.desc = 'Reinstall packages from archives'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['reinstall [names..]']; +export const desc = 'Reinstall packages from archives'; +export const builder = yargs => yargs .positional( '[names..]', { description: 'packages to reinstall', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/reinstall', argv.names); +export const handler = async (argv) => { + await e_call(argv, 'core/reinstall', argv.names); }; diff --git a/cmds/core/repl.js b/cmds/core/repl.js index e76f12d4..305a9660 100644 --- a/cmds/core/repl.js +++ b/cmds/core/repl.js @@ -17,9 +17,11 @@ "use strict"; -exports.command = ['repl', 'ielm']; -exports.desc = UTIL.hide_cmd('Start an Elisp REPL'); +import { e_call, hide_cmd } from "../../src/util.js"; -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/repl'); +export const command = ['repl', 'ielm']; +export const desc = hide_cmd('Start an Elisp REPL'); + +export const handler = async (argv) => { + await e_call(argv, 'core/repl'); }; diff --git a/cmds/core/run.js b/cmds/core/run.js index cff20ebf..59003a52 100644 --- a/cmds/core/run.js +++ b/cmds/core/run.js @@ -17,17 +17,22 @@ "use strict"; -exports.command = ['run ']; -exports.desc = 'Run custom tasks'; -exports.builder = function (yargs) { - yargs.usage(`${exports.desc} +import path from 'path'; +import { cmd_count } from '../../src/util.js'; + +const __dirname = import.meta.dirname; + +export const command = ['run ']; +export const desc = 'Run custom tasks'; +export const builder = function (yargs) { + yargs.usage(`${desc} Usage: eask run [options..]`) - .commandDir('../run/') + .commandDir(path.join(__dirname, '../run/')) .demandCommand(); /* XXX: Configure only in the menu. */ - if (UTIL.cmd_count() == 1) { + if (cmd_count() == 1) { yargs.positional( '', { description: 'type of the execution', @@ -35,4 +40,4 @@ Usage: eask run [options..]`) } } -exports.handler = async (argv) => { }; +export const handler = async (argv) => { }; diff --git a/cmds/core/search.js b/cmds/core/search.js index 85d395d8..6a070c3f 100644 --- a/cmds/core/search.js +++ b/cmds/core/search.js @@ -17,9 +17,12 @@ "use strict"; -exports.command = ['search [queries..]']; -exports.desc = 'Search packages from archives'; -exports.builder = yargs => yargs +import { TITLE_CMD_OPTION } from "../../src/env.js"; +import { e_call, def_flag } from "../../src/util.js"; + +export const command = ['search [queries..]']; +export const desc = 'Search packages from archives'; +export const builder = yargs => yargs .positional( '[queries..]', { description: 'queries to search packages', @@ -34,7 +37,7 @@ exports.builder = yargs => yargs }, }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/search', argv.queries - , UTIL.def_flag(argv.depth, '--depth', argv.depth)); +export const handler = async (argv) => { + await e_call(argv, 'core/search', argv.queries + , def_flag(argv.depth, '--depth', argv.depth)); }; diff --git a/cmds/core/source.js b/cmds/core/source.js index ea168e6b..3196f394 100644 --- a/cmds/core/source.js +++ b/cmds/core/source.js @@ -17,17 +17,22 @@ "use strict"; -exports.command = ['source ']; -exports.desc = UTIL.hide_cmd('Manage sources'); -exports.builder = function (yargs) { - yargs.usage(`${exports.desc} +import path from 'path'; +import { cmd_count, hide_cmd } from "../../src/util.js"; + +const __dirname = import.meta.dirname; + +export const command = ['source ']; +export const desc = hide_cmd('Manage sources'); +export const builder = function (yargs) { + yargs.usage(`${desc} Usage: eask source [options..]`) - .commandDir('../source/') + .commandDir(path.join(__dirname, '../source/')) .demandCommand(); /* XXX: Configure only in the menu. */ - if (UTIL.cmd_count() == 1) { + if (cmd_count() == 1) { yargs.positional( '', { description: 'type of the control', @@ -35,4 +40,4 @@ Usage: eask source [options..]`) } } -exports.handler = async (argv) => {}; +export const handler = async (argv) => {}; diff --git a/cmds/core/status.js b/cmds/core/status.js index 758188af..16e463fe 100644 --- a/cmds/core/status.js +++ b/cmds/core/status.js @@ -17,9 +17,11 @@ "use strict"; -exports.command = ['status']; -exports.desc = 'Show the workspace status'; +import { e_call } from "../../src/util.js"; -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/status'); +export const command = ['status']; +export const desc = 'Show the workspace status'; + +export const handler = async (argv) => { + await e_call(argv, 'core/status'); }; diff --git a/cmds/core/test.js b/cmds/core/test.js index 59f63f48..0a88ac3d 100644 --- a/cmds/core/test.js +++ b/cmds/core/test.js @@ -17,17 +17,22 @@ "use strict"; -exports.command = ['test ']; -exports.desc = "Run regression/unit tests"; -exports.builder = function (yargs) { - yargs.usage(`${exports.desc} +import path from 'path'; +import { cmd_count } from "../../src/util.js"; + +const __dirname = import.meta.dirname; + +export const command = ['test ']; +export const desc = "Run regression/unit tests"; +export const builder = function (yargs) { + yargs.usage(`${desc} Usage: eask test [options..]`) - .commandDir('../test/') + .commandDir(path.join(__dirname, '../test/')) .demandCommand(); /* XXX: Configure only in the menu. */ - if (UTIL.cmd_count() == 1) { + if (cmd_count() == 1) { yargs.positional( '', { description: 'type of the test framework', @@ -35,4 +40,4 @@ Usage: eask test [options..]`) } } -exports.handler = async (argv) => { }; +export const handler = async (argv) => { }; diff --git a/cmds/core/uninstall.js b/cmds/core/uninstall.js index 441aa8c6..07adcb02 100644 --- a/cmds/core/uninstall.js +++ b/cmds/core/uninstall.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['uninstall [names..]', 'delete [names..]']; -exports.desc = 'Uninstall packages from archives'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['uninstall [names..]', 'delete [names..]']; +export const desc = 'Uninstall packages from archives'; +export const builder = yargs => yargs .positional( '[names..]', { description: 'packages to uninstall', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/uninstall', argv.names); +export const handler = async (argv) => { + await e_call(argv, 'core/uninstall', argv.names); }; diff --git a/cmds/core/upgrade.js b/cmds/core/upgrade.js index ebf73928..a07876b7 100644 --- a/cmds/core/upgrade.js +++ b/cmds/core/upgrade.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['upgrade [names..]']; -exports.desc = 'Upgrade packages from archives'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['upgrade [names..]']; +export const desc = 'Upgrade packages from archives'; +export const builder = yargs => yargs .positional( '[names..]', { description: 'packages to upgrade', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/upgrade', argv.names); +export const handler = async (argv) => { + await e_call(argv, 'core/upgrade', argv.names); }; diff --git a/cmds/create/el-project.js b/cmds/create/el-project.js index d9e6b138..4c031078 100644 --- a/cmds/create/el-project.js +++ b/cmds/create/el-project.js @@ -17,9 +17,11 @@ "use strict"; -exports.command = ['el-project']; -exports.desc = 'Create a new project with `el-project`'; +import { e_call } from "../../src/util.js"; -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'create/el-project'); +export const command = ['el-project']; +export const desc = 'Create a new project with `el-project`'; + +export const handler = async (argv) => { + await e_call(argv, 'create/el-project'); }; diff --git a/cmds/create/elpa.js b/cmds/create/elpa.js index 43ac6371..69f4eeba 100644 --- a/cmds/create/elpa.js +++ b/cmds/create/elpa.js @@ -17,11 +17,12 @@ "use strict"; -const child_process = require('child_process'); +import child_process from 'child_process'; +import { e_call } from "../../src/util.js"; -exports.command = ['elpa ']; -exports.desc = 'Create a new ELPA using github-elpa'; -exports.builder = yargs => yargs +export const command = ['elpa ']; +export const desc = 'Create a new ELPA using github-elpa'; +export const builder = yargs => yargs .positional( '', { description: 'new ELPA name', @@ -30,7 +31,7 @@ exports.builder = yargs => yargs const TEMPLATE_URL = 'https://github.com/emacs-eask/template-elpa'; -exports.handler = async (argv) => { +export const handler = async (argv) => { const project_name = argv.name; let proc = child_process.spawn('git', ['clone', TEMPLATE_URL, project_name], @@ -61,6 +62,6 @@ exports.handler = async (argv) => { /* Operations after _cloned */ async function _cloned(argv) { console.warn('Initialize the Eask-file for your project...'); - await UTIL.e_call(argv, 'core/init'); - await UTIL.e_call(argv, 'create/elpa'); + await e_call(argv, 'core/init'); + await e_call(argv, 'create/elpa'); } diff --git a/cmds/create/package.js b/cmds/create/package.js index 24a1194b..c1d30c00 100644 --- a/cmds/create/package.js +++ b/cmds/create/package.js @@ -17,11 +17,12 @@ "use strict"; -const child_process = require('child_process'); +import child_process from 'child_process'; +import { e_call } from "../../src/util.js"; -exports.command = ['package ', 'pkg ']; -exports.desc = 'Create a new package'; -exports.builder = yargs => yargs +export const command = ['package ', 'pkg ']; +export const desc = 'Create a new package'; +export const builder = yargs => yargs .positional( '', { description: 'new package name', @@ -30,7 +31,7 @@ exports.builder = yargs => yargs const TEMPLATE_URL = 'https://github.com/emacs-eask/template-elisp'; -exports.handler = async (argv) => { +export const handler = async (argv) => { const project_name = argv.name; let proc = child_process.spawn('git', ['clone', TEMPLATE_URL, project_name], @@ -59,6 +60,6 @@ exports.handler = async (argv) => { /* Operations after _cloned */ async function _cloned(argv) { console.warn('Initialize the Eask-file for your project...'); - await UTIL.e_call(argv, 'core/init'); - await UTIL.e_call(argv, 'create/package'); + await e_call(argv, 'core/init'); + await e_call(argv, 'create/package'); } diff --git a/cmds/docs/el2org.js b/cmds/docs/el2org.js index a072cb6f..a22a5a76 100644 --- a/cmds/docs/el2org.js +++ b/cmds/docs/el2org.js @@ -17,9 +17,12 @@ "use strict"; -exports.command = ['el2org [names..]', ]; -exports.desc = 'Build documentation with el2org'; -exports.builder = yargs => yargs +import { TITLE_CMD_OPTION } from "../../src/env.js"; +import { e_call, def_flag } from "../../src/util.js"; + +export const command = ['el2org [names..]', ]; +export const desc = 'Build documentation with el2org'; +export const builder = yargs => yargs .positional( '[names..]', { description: 'specify source files to scan', @@ -35,8 +38,8 @@ exports.builder = yargs => yargs }, }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'docs/el2org' - , argv.names - , UTIL.def_flag(argv.dest, '--dest', argv.dest)); +export const handler = async (argv) => { + await e_call(argv, 'docs/el2org' + , argv.names + , def_flag(argv.dest, '--dest', argv.dest)); }; diff --git a/cmds/format/elfmt.js b/cmds/format/elfmt.js index bd2e2028..3ede2d3d 100644 --- a/cmds/format/elfmt.js +++ b/cmds/format/elfmt.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['elfmt [files..]']; -exports.desc = 'Reformat Elisp source with elfmt'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['elfmt [files..]']; +export const desc = 'Reformat Elisp source with elfmt'; +export const builder = yargs => yargs .positional( '[files..]', { description: 'specify files to do elfmt', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'format/elfmt', argv.files); +export const handler = async (argv) => { + await e_call(argv, 'format/elfmt', argv.files); }; diff --git a/cmds/format/elisp-autofmt.js b/cmds/format/elisp-autofmt.js index 85f30766..025ec406 100644 --- a/cmds/format/elisp-autofmt.js +++ b/cmds/format/elisp-autofmt.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['elisp-autofmt [files..]']; -exports.desc = 'Reformat Elisp source with elisp-autofmt'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['elisp-autofmt [files..]']; +export const desc = 'Reformat Elisp source with elisp-autofmt'; +export const builder = yargs => yargs .positional( '[files..]', { description: 'specify files to do elisp-autofmt', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'format/elisp-autofmt', argv.files); +export const handler = async (argv) => { + await e_call(argv, 'format/elisp-autofmt', argv.files); }; diff --git a/cmds/generate/autoloads.js b/cmds/generate/autoloads.js index 391fd222..2601712e 100644 --- a/cmds/generate/autoloads.js +++ b/cmds/generate/autoloads.js @@ -17,9 +17,11 @@ "use strict"; -exports.command = ['autoloads']; -exports.desc = 'Generate the autoloads file'; +import { e_call } from "../../src/util.js"; -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'generate/autoloads'); +export const command = ['autoloads']; +export const desc = 'Generate the autoloads file'; + +export const handler = async (argv) => { + await e_call(argv, 'generate/autoloads'); }; diff --git a/cmds/generate/ignore.js b/cmds/generate/ignore.js index 80f5fea8..70f50a68 100644 --- a/cmds/generate/ignore.js +++ b/cmds/generate/ignore.js @@ -17,9 +17,12 @@ "use strict"; -exports.command = ['ignore ']; -exports.desc = 'Generate an ignore file using .gitignore templates'; -exports.builder = yargs => yargs +import { TITLE_CMD_OPTION } from "../../src/env.js"; +import { e_call, def_flag } from "../../src/util.js"; + +export const command = ['ignore ']; +export const desc = 'Generate an ignore file using .gitignore templates'; +export const builder = yargs => yargs .positional( '', { description: 'name of the ignore template', @@ -34,8 +37,8 @@ exports.builder = yargs => yargs }, }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'generate/ignore' - , argv.name - , UTIL.def_flag(argv.output, '--output', argv.output)); +export const handler = async (argv) => { + await e_call(argv, 'generate/ignore' + , argv.name + , def_flag(argv.output, '--output', argv.output)); }; diff --git a/cmds/generate/license.js b/cmds/generate/license.js index 7499d6bc..b8eabc5b 100644 --- a/cmds/generate/license.js +++ b/cmds/generate/license.js @@ -17,9 +17,12 @@ "use strict"; -exports.command = ['license ']; -exports.desc = 'Generate the LICENSE file'; -exports.builder = yargs => yargs +import { TITLE_CMD_OPTION } from "../../src/env.js"; +import { e_call, def_flag } from "../../src/util.js"; + +export const command = ['license ']; +export const desc = 'Generate the LICENSE file'; +export const builder = yargs => yargs .positional( '', { description: 'name of the license', @@ -34,8 +37,8 @@ exports.builder = yargs => yargs }, }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'generate/license' - , argv.name - , UTIL.def_flag(argv.output, '--output', argv.output)); +export const handler = async (argv) => { + await e_call(argv, 'generate/license' + , argv.name + , def_flag(argv.output, '--output', argv.output)); }; diff --git a/cmds/generate/pkg-file.js b/cmds/generate/pkg-file.js index ad08de0e..59ede3e6 100644 --- a/cmds/generate/pkg-file.js +++ b/cmds/generate/pkg-file.js @@ -17,9 +17,11 @@ "use strict"; -exports.command = ['pkg-file', 'pkg', 'pkg-el']; -exports.desc = 'Generate the pkg file'; +import { e_call } from "../../src/util.js"; -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'generate/pkg-file'); +export const command = ['pkg-file', 'pkg', 'pkg-el']; +export const desc = 'Generate the pkg file'; + +export const handler = async (argv) => { + await e_call(argv, 'generate/pkg-file'); }; diff --git a/cmds/generate/recipe.js b/cmds/generate/recipe.js index db1a057f..c2d0917e 100644 --- a/cmds/generate/recipe.js +++ b/cmds/generate/recipe.js @@ -17,9 +17,12 @@ "use strict"; -exports.command = ['recipe [destination]']; -exports.desc = 'Generate the recipe file'; -exports.builder = yargs => yargs +import { TITLE_CMD_OPTION } from "../../src/env.js"; +import { e_call, def_flag } from "../../src/util.js"; + +export const command = ['recipe [destination]']; +export const desc = 'Generate the recipe file'; +export const builder = yargs => yargs .positional( 'destination', { description: 'destination path/folder', @@ -35,8 +38,8 @@ exports.builder = yargs => yargs }, }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'generate/recipe' - , argv.dest - , UTIL.def_flag(argv.yes, '--yes')); +export const handler = async (argv) => { + await e_call(argv, 'generate/recipe' + , argv.dest + , def_flag(argv.yes, '--yes')); }; diff --git a/cmds/generate/test.js b/cmds/generate/test.js index c27ceea8..41dd6f67 100644 --- a/cmds/generate/test.js +++ b/cmds/generate/test.js @@ -17,17 +17,22 @@ "use strict"; -exports.command = ['test ']; -exports.desc = 'Generate test files based on the testing framework'; -exports.builder = function (yargs) { - yargs.usage(`${exports.desc} +import path from 'path'; +import { cmd_count } from "../../src/util.js"; + +const __dirname = import.meta.dirname; + +export const command = ['test ']; +export const desc = 'Generate test files based on the testing framework'; +export const builder = function (yargs) { + yargs.usage(`${desc} Usage: eask generate test [options..]`) - .commandDir('./test/') + .commandDir(path.join(__dirname, './test/')) .demandCommand(); /* XXX: Configure only in the menu. */ - if (UTIL.cmd_count() == 2) { + if (cmd_count() == 2) { yargs.positional( '', { description: 'type of the testing framework', @@ -35,4 +40,4 @@ Usage: eask generate test [options..]`) } } -exports.handler = async (argv) => { }; +export const handler = async (argv) => { }; diff --git a/cmds/generate/test/buttercup.js b/cmds/generate/test/buttercup.js index a5641fc3..8d975e60 100644 --- a/cmds/generate/test/buttercup.js +++ b/cmds/generate/test/buttercup.js @@ -17,9 +17,11 @@ "use strict"; -exports.command = ['buttercup']; -exports.desc = 'Create a new Buttercup setup for the project'; +import { e_call } from "../../../src/util.js"; -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'generate/test/buttercup', argv.file); +export const command = ['buttercup']; +export const desc = 'Create a new Buttercup setup for the project'; + +export const handler = async (argv) => { + await e_call(argv, 'generate/test/buttercup', argv.file); }; diff --git a/cmds/generate/test/ecukes.js b/cmds/generate/test/ecukes.js index 74c7406d..96ce5503 100644 --- a/cmds/generate/test/ecukes.js +++ b/cmds/generate/test/ecukes.js @@ -17,9 +17,11 @@ "use strict"; -exports.command = ['ecukes']; -exports.desc = 'Create a new Ecukes setup for the project'; +import { e_call } from "../../../src/util.js"; -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'generate/test/ecukes', argv.file); +export const command = ['ecukes']; +export const desc = 'Create a new Ecukes setup for the project'; + +export const handler = async (argv) => { + await e_call(argv, 'generate/test/ecukes', argv.file); }; diff --git a/cmds/generate/test/ert-runner.js b/cmds/generate/test/ert-runner.js index 22eb7b41..3c3ada6d 100644 --- a/cmds/generate/test/ert-runner.js +++ b/cmds/generate/test/ert-runner.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['ert-runner [names..]']; -exports.desc = 'Create a new test project for the ert-runner'; -exports.builder = yargs => yargs +import { e_call } from "../../../src/util.js"; + +export const command = ['ert-runner [names..]']; +export const desc = 'Create a new test project for the ert-runner'; +export const builder = yargs => yargs .positional( '[names..]', { description: 'specify test names', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'generate/test/ert-runner', argv.names); +export const handler = async (argv) => { + await e_call(argv, 'generate/test/ert-runner', argv.names); }; diff --git a/cmds/generate/test/ert.js b/cmds/generate/test/ert.js index c0854e62..3a78aa7a 100644 --- a/cmds/generate/test/ert.js +++ b/cmds/generate/test/ert.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['ert [names..]']; -exports.desc = 'Create a new test project for the ert tests'; -exports.builder = yargs => yargs +import { e_call } from "../../../src/util.js"; + +export const command = ['ert [names..]']; +export const desc = 'Create a new test project for the ert tests'; +export const builder = yargs => yargs .positional( '[names..]', { description: 'specify test names', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'generate/test/ert', argv.names); +export const handler = async (argv) => { + await e_call(argv, 'generate/test/ert', argv.names); }; diff --git a/cmds/generate/workflow.js b/cmds/generate/workflow.js index 3f219741..7cd7306a 100644 --- a/cmds/generate/workflow.js +++ b/cmds/generate/workflow.js @@ -17,17 +17,22 @@ "use strict"; -exports.command = ['workflow ']; -exports.desc = 'Generate yaml files for CI/CD'; -exports.builder = function (yargs) { - yargs.usage(`${exports.desc} +import path from 'path'; +import { cmd_count } from "../../src/util.js"; + +const __dirname = import.meta.dirname; + +export const command = ['workflow ']; +export const desc = 'Generate yaml files for CI/CD'; +export const builder = function (yargs) { + yargs.usage(`${desc} Usage: eask generate workflow [options..]`) - .commandDir('./workflow/') + .commandDir(path.join(__dirname, './workflow/')) .demandCommand(); /* XXX: Configure only in the menu. */ - if (UTIL.cmd_count() == 2) { + if (cmd_count() == 2) { yargs.positional( '', { description: 'type of the workflow', @@ -35,4 +40,4 @@ Usage: eask generate workflow [options..]`) } } -exports.handler = async (argv) => { }; +export const handler = async (argv) => { }; diff --git a/cmds/generate/workflow/circle-ci.js b/cmds/generate/workflow/circle-ci.js index 737c6e9a..68f9581f 100644 --- a/cmds/generate/workflow/circle-ci.js +++ b/cmds/generate/workflow/circle-ci.js @@ -17,16 +17,18 @@ "use strict"; -exports.command = ['circle-ci [file]']; -exports.desc = 'Generate the CircleCI workflow yaml file'; -exports.builder = yargs => yargs +import { e_call } from "../../../src/util.js"; + +export const command = ['circle-ci [file]']; +export const desc = 'Generate the CircleCI workflow yaml file'; +export const builder = yargs => yargs .positional( '[file]', { description: 'name of the test file; the default is `config.yml`', type: 'string', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'generate/workflow/circle-ci', argv.file); +export const handler = async (argv) => { + await e_call(argv, 'generate/workflow/circle-ci', argv.file); }; diff --git a/cmds/generate/workflow/github.js b/cmds/generate/workflow/github.js index 041331e2..72c339fe 100644 --- a/cmds/generate/workflow/github.js +++ b/cmds/generate/workflow/github.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['github [file]', 'github-actions [file]', 'gha [file]']; -exports.desc = 'Generate the GitHub Actions workflow yaml file'; -exports.builder = yargs => yargs +import { e_call } from "../../../src/util.js"; + +export const command = ['github [file]', 'github-actions [file]', 'gha [file]']; +export const desc = 'Generate the GitHub Actions workflow yaml file'; +export const builder = yargs => yargs .positional( '[file]', { description: 'name of the test file; the default is `test.yml`', type: 'string', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'generate/workflow/github', argv.file); +export const handler = async (argv) => { + await e_call(argv, 'generate/workflow/github', argv.file); }; diff --git a/cmds/generate/workflow/gitlab.js b/cmds/generate/workflow/gitlab.js index c797c4dd..99bff076 100644 --- a/cmds/generate/workflow/gitlab.js +++ b/cmds/generate/workflow/gitlab.js @@ -17,16 +17,18 @@ "use strict"; -exports.command = ['gitlab [file]', 'gitlab-runner [file]']; -exports.desc = 'Generate the GitLab Runner workflow yaml file'; -exports.builder = yargs => yargs +import { e_call } from "../../../src/util.js"; + +export const command = ['gitlab [file]', 'gitlab-runner [file]']; +export const desc = 'Generate the GitLab Runner workflow yaml file'; +export const builder = yargs => yargs .positional( '[file]', { description: 'name of the test file; the default is `.gitlab-ci.yml`', type: 'string', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'generate/workflow/gitlab', argv.file); +export const handler = async (argv) => { + await e_call(argv, 'generate/workflow/gitlab', argv.file); }; diff --git a/cmds/generate/workflow/travis-ci.js b/cmds/generate/workflow/travis-ci.js index 8d8cadf4..e1f189a7 100644 --- a/cmds/generate/workflow/travis-ci.js +++ b/cmds/generate/workflow/travis-ci.js @@ -17,16 +17,18 @@ "use strict"; -exports.command = ['travis-ci [file]']; -exports.desc = 'Generate the Travis CI workflow yaml file'; -exports.builder = yargs => yargs +import { e_call } from "../../../src/util.js"; + +export const command = ['travis-ci [file]']; +export const desc = 'Generate the Travis CI workflow yaml file'; +export const builder = yargs => yargs .positional( '[file]', { description: 'name of the test file; the default is `.travis.yml`', type: 'string', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'generate/workflow/travis-ci', argv.file); +export const handler = async (argv) => { + await e_call(argv, 'generate/workflow/travis-ci', argv.file); }; diff --git a/cmds/link/add.js b/cmds/link/add.js index 95451dc2..8718aa7b 100644 --- a/cmds/link/add.js +++ b/cmds/link/add.js @@ -17,9 +17,12 @@ "use strict"; -exports.command = ['add ']; -exports.desc = 'Link a local package'; -exports.builder = yargs => yargs +import { TITLE_CMD_OPTION } from "../../src/env.js"; +import { e_call } from "../../src/util.js"; + +export const command = ['add ']; +export const desc = 'Link a local package'; +export const builder = yargs => yargs .positional( '', { description: 'name of the link', @@ -39,6 +42,6 @@ exports.builder = yargs => yargs }, }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'link/add', argv.name, argv.path); +export const handler = async (argv) => { + await e_call(argv, 'link/add', argv.name, argv.path); }; diff --git a/cmds/link/delete.js b/cmds/link/delete.js index e00d63f7..a38110fd 100644 --- a/cmds/link/delete.js +++ b/cmds/link/delete.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['delete [names..]', 'remove [names..]']; -exports.desc = 'Delete locally linked packages'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['delete [names..]', 'remove [names..]']; +export const desc = 'Delete locally linked packages'; +export const builder = yargs => yargs .positional( '[names..]', { description: 'name of the link, accept array', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'link/delete', argv.names); +export const handler = async (argv) => { + await e_call(argv, 'link/delete', argv.names); }; diff --git a/cmds/link/list.js b/cmds/link/list.js index 96a18349..e69a8c1b 100644 --- a/cmds/link/list.js +++ b/cmds/link/list.js @@ -17,9 +17,11 @@ "use strict"; -exports.command = ['list']; -exports.desc = 'List all project links'; +import { e_call } from "../../src/util.js"; -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'link/list'); +export const command = ['list']; +export const desc = 'List all project links'; + +export const handler = async (argv) => { + await e_call(argv, 'link/list'); }; diff --git a/cmds/lint/checkdoc.js b/cmds/lint/checkdoc.js index d6aa4d7f..a661ca41 100644 --- a/cmds/lint/checkdoc.js +++ b/cmds/lint/checkdoc.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['checkdoc [files..]']; -exports.desc = 'Run checkdoc'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['checkdoc [files..]']; +export const desc = 'Run checkdoc'; +export const builder = yargs => yargs .positional( '[files..]', { description: 'files you want checkdoc to run on', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'lint/checkdoc', argv.files); +export const handler = async (argv) => { + await e_call(argv, 'lint/checkdoc', argv.files); }; diff --git a/cmds/lint/declare.js b/cmds/lint/declare.js index 0ff67261..b1ffc041 100644 --- a/cmds/lint/declare.js +++ b/cmds/lint/declare.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['declare [files..]']; -exports.desc = 'Run check-declare'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['declare [files..]']; +export const desc = 'Run check-declare'; +export const builder = yargs => yargs .positional( '[files..]', { description: 'files you want check-declare to run on', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'lint/declare', argv.files); +export const handler = async (argv) => { + await e_call(argv, 'lint/declare', argv.files); }; diff --git a/cmds/lint/elint.js b/cmds/lint/elint.js index 1c317961..43568344 100644 --- a/cmds/lint/elint.js +++ b/cmds/lint/elint.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['elint [files..]']; -exports.desc = 'Run elint'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['elint [files..]']; +export const desc = 'Run elint'; +export const builder = yargs => yargs .positional( '[files..]', { description: 'files you want elint to run on', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'lint/elint', argv.files); +export const handler = async (argv) => { + await e_call(argv, 'lint/elint', argv.files); }; diff --git a/cmds/lint/elisp-lint.js b/cmds/lint/elisp-lint.js index d5340d0d..7c43f94d 100644 --- a/cmds/lint/elisp-lint.js +++ b/cmds/lint/elisp-lint.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['elisp-lint [files..]']; -exports.desc = 'Run elisp-lint'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['elisp-lint [files..]']; +export const desc = 'Run elisp-lint'; +export const builder = yargs => yargs .positional( '[files..]', { description: 'files you want elisp-lint to run on', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'lint/elisp-lint', argv.files); +export const handler = async (argv) => { + await e_call(argv, 'lint/elisp-lint', argv.files); }; diff --git a/cmds/lint/elsa.js b/cmds/lint/elsa.js index b5d98df5..e611f492 100644 --- a/cmds/lint/elsa.js +++ b/cmds/lint/elsa.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['elsa [files..]']; -exports.desc = 'Run elsa'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['elsa [files..]']; +export const desc = 'Run elsa'; +export const builder = yargs => yargs .positional( '[files..]', { description: 'files you want elsa to run on', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'lint/elsa', argv.files); +export const handler = async (argv) => { + await e_call(argv, 'lint/elsa', argv.files); }; diff --git a/cmds/lint/indent.js b/cmds/lint/indent.js index 08b05d53..64f4ff08 100644 --- a/cmds/lint/indent.js +++ b/cmds/lint/indent.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['indent [files..]']; -exports.desc = 'Run indent-lint'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['indent [files..]']; +export const desc = 'Run indent-lint'; +export const builder = yargs => yargs .positional( '[files..]', { description: 'files you want indent-lint to run on', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'lint/indent', argv.files); +export const handler = async (argv) => { + await e_call(argv, 'lint/indent', argv.files); }; diff --git a/cmds/lint/keywords.js b/cmds/lint/keywords.js index 55e0c8c4..5e8a1769 100644 --- a/cmds/lint/keywords.js +++ b/cmds/lint/keywords.js @@ -17,9 +17,11 @@ "use strict"; -exports.command = ['keywords']; -exports.desc = `Run keywords checker (built-in)`; +import { e_call } from "../../src/util.js"; -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'lint/keywords'); +export const command = ['keywords']; +export const desc = `Run keywords checker (built-in)`; + +export const handler = async (argv) => { + await e_call(argv, 'lint/keywords'); }; diff --git a/cmds/lint/license.js b/cmds/lint/license.js index 200a32bd..68b567fc 100644 --- a/cmds/lint/license.js +++ b/cmds/lint/license.js @@ -17,9 +17,11 @@ "use strict"; -exports.command = ['license']; -exports.desc = `Run license check`; +import { e_call } from "../../src/util.js"; -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'lint/license'); +export const command = ['license']; +export const desc = `Run license check`; + +export const handler = async (argv) => { + await e_call(argv, 'lint/license'); }; diff --git a/cmds/lint/org.js b/cmds/lint/org.js index 81da3d0c..c39d28bd 100644 --- a/cmds/lint/org.js +++ b/cmds/lint/org.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['org [files..]']; -exports.desc = `Run org-lint on Org files`; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['org [files..]']; +export const desc = `Run org-lint on Org files`; +export const builder = yargs => yargs .positional( '[files..]', { description: 'files you want org-lint to run on', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'lint/org', argv.files); +export const handler = async (argv) => { + await e_call(argv, 'lint/org', argv.files); }; diff --git a/cmds/lint/package.js b/cmds/lint/package.js index d0a67fe8..9bb5fc75 100644 --- a/cmds/lint/package.js +++ b/cmds/lint/package.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['package [files..]']; -exports.desc = 'Run package-lint'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['package [files..]']; +export const desc = 'Run package-lint'; +export const builder = yargs => yargs .positional( '[files..]', { description: 'specify files to do package lint', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'lint/package', argv.files); +export const handler = async (argv) => { + await e_call(argv, 'lint/package', argv.files); }; diff --git a/cmds/lint/regexps.js b/cmds/lint/regexps.js index e22f01d5..c20ac74d 100644 --- a/cmds/lint/regexps.js +++ b/cmds/lint/regexps.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['regexps [files..]', 'relint [files..]']; -exports.desc = 'Run relint'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['regexps [files..]', 'relint [files..]']; +export const desc = 'Run relint'; +export const builder = yargs => yargs .positional( '[files..]', { description: 'files you want relint to run on', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'lint/regexps', argv.files); +export const handler = async (argv) => { + await e_call(argv, 'lint/regexps', argv.files); }; diff --git a/cmds/run/command.js b/cmds/run/command.js index 3c40b003..aed8500c 100644 --- a/cmds/run/command.js +++ b/cmds/run/command.js @@ -17,16 +17,18 @@ "use strict"; -exports.command = ['command [names..]', 'cmd [names..]']; -exports.desc = 'Run elisp commands named [names..]'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['command [names..]', 'cmd [names..]']; +export const desc = 'Run elisp commands named [names..]'; +export const builder = yargs => yargs .positional( '[names..]', { description: 'list of function commands to execute', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'run/command' - , argv.names); +export const handler = async (argv) => { + await e_call(argv, 'run/command' + , argv.names); }; diff --git a/cmds/run/script.js b/cmds/run/script.js index b378e87c..8aab052e 100644 --- a/cmds/run/script.js +++ b/cmds/run/script.js @@ -17,20 +17,22 @@ "use strict"; -const fs = require('fs'); -const child_process = require("child_process"); - -exports.command = ['script [names..]']; -exports.desc = 'Run script named [names..]'; -exports.builder = yargs => yargs +import fs from "fs"; +import child_process from "child_process"; +import { IS_PKG, EASK_HOMEDIR } from "../../src/env.js"; +import { e_call } from "../../src/util.js"; + +export const command = ['script [names..]']; +export const desc = 'Run script named [names..]'; +export const builder = yargs => yargs .positional( '[names..]', { description: 'specify scripts to run', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'run/script', argv.names); +export const handler = async (argv) => { + await e_call(argv, 'run/script', argv.names); if (!fs.existsSync(EASK_HOMEDIR)) { return; diff --git a/cmds/source/add.js b/cmds/source/add.js index 08104e9b..4064e9a5 100644 --- a/cmds/source/add.js +++ b/cmds/source/add.js @@ -17,9 +17,11 @@ "use strict"; -exports.command = ['add [url]']; -exports.desc = 'Add an archive source'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['add [url]']; +export const desc = 'Add an archive source'; +export const builder = yargs => yargs .positional( '', { description: 'name of the archive', @@ -31,6 +33,6 @@ exports.builder = yargs => yargs type: 'string', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'source/add', argv.name, argv.url); +export const handler = async (argv) => { + await e_call(argv, 'source/add', argv.name, argv.url); }; diff --git a/cmds/source/delete.js b/cmds/source/delete.js index 4a0817b3..f20f7bac 100644 --- a/cmds/source/delete.js +++ b/cmds/source/delete.js @@ -17,16 +17,18 @@ "use strict"; -exports.command = ['delete ', 'remove ']; -exports.desc = 'Remove an archive source'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['delete ', 'remove ']; +export const desc = 'Remove an archive source'; +export const builder = yargs => yargs .positional( '', { description: 'name of the archive', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'source/delete', argv.name); +export const handler = async (argv) => { + await e_call(argv, 'source/delete', argv.name); }; diff --git a/cmds/source/list.js b/cmds/source/list.js index bf4ac20b..7365b2de 100644 --- a/cmds/source/list.js +++ b/cmds/source/list.js @@ -17,10 +17,12 @@ "use strict"; -exports.command = ['list']; -exports.desc = 'List all source information'; +import { e_call } from "../../src/util.js"; -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'source/list'); +export const command = ['list']; +export const desc = 'List all source information'; + +export const handler = async (argv) => { + await e_call(argv, 'source/list'); }; diff --git a/cmds/test/activate.js b/cmds/test/activate.js index ac28c871..53c965ad 100644 --- a/cmds/test/activate.js +++ b/cmds/test/activate.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['activate [files..]']; -exports.desc = 'Activate package; use to test package activation'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['activate [files..]']; +export const desc = 'Activate package; use to test package activation'; +export const builder = yargs => yargs .positional( '[files..]', { description: 'files to load after package activation', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'test/activate', argv.files); +export const handler = async (argv) => { + await e_call(argv, 'test/activate', argv.files); }; diff --git a/cmds/test/buttercup.js b/cmds/test/buttercup.js index 7386c5f4..87f5465d 100644 --- a/cmds/test/buttercup.js +++ b/cmds/test/buttercup.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['buttercup [directories..]']; -exports.desc = 'Run buttercup tests'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['buttercup [directories..]']; +export const desc = 'Run buttercup tests'; +export const builder = yargs => yargs .positional( '[directories..]', { description: 'directories containing buttercup tests, must be children of the current directory', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'test/buttercup', argv.directories); +export const handler = async (argv) => { + await e_call(argv, 'test/buttercup', argv.directories); }; diff --git a/cmds/test/ecukes.js b/cmds/test/ecukes.js index f3b1a1bc..cad00cac 100644 --- a/cmds/test/ecukes.js +++ b/cmds/test/ecukes.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['ecukes [files..]']; -exports.desc = 'Run ecukes tests'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['ecukes [files..]']; +export const desc = 'Run ecukes tests'; +export const builder = yargs => yargs .positional( '[files..]', { description: 'specify feature files to do ecukes tests', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'test/ecukes', argv.files); +export const handler = async (argv) => { + await e_call(argv, 'test/ecukes', argv.files); }; diff --git a/cmds/test/ert-runner.js b/cmds/test/ert-runner.js index 633f86b5..ff9996fe 100644 --- a/cmds/test/ert-runner.js +++ b/cmds/test/ert-runner.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['ert-runner [files..]']; -exports.desc = 'Run ert tests using ert-runner'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['ert-runner [files..]']; +export const desc = 'Run ert tests using ert-runner'; +export const builder = yargs => yargs .positional( '[files..]', { description: 'specify files to do ert tests', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'test/ert-runner', argv.files); +export const handler = async (argv) => { + await e_call(argv, 'test/ert-runner', argv.files); }; diff --git a/cmds/test/ert.js b/cmds/test/ert.js index ee7f7809..19c70f0e 100644 --- a/cmds/test/ert.js +++ b/cmds/test/ert.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['ert [files..]']; -exports.desc = 'Run ert tests'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['ert [files..]']; +export const desc = 'Run ert tests'; +export const builder = yargs => yargs .positional( '[files..]', { description: 'specify files to do ert tests', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'test/ert', argv.files); +export const handler = async (argv) => { + await e_call(argv, 'test/ert', argv.files); }; diff --git a/cmds/test/melpazoid.js b/cmds/test/melpazoid.js index d517d2d8..22e837c8 100644 --- a/cmds/test/melpazoid.js +++ b/cmds/test/melpazoid.js @@ -17,15 +17,17 @@ "use strict"; -exports.command = ['melpazoid [directories..]']; -exports.desc = 'Run melpazoid tests'; -exports.builder = yargs => yargs +import { e_call } from "../../src/util.js"; + +export const command = ['melpazoid [directories..]']; +export const desc = 'Run melpazoid tests'; +export const builder = yargs => yargs .positional( '[directories..]', { description: 'specify directories to do melpazoid tests', type: 'array', }); -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'test/melpazoid', argv.directories); +export const handler = async (argv) => { + await e_call(argv, 'test/melpazoid', argv.directories); }; diff --git a/cmds/util/locate.js b/cmds/util/locate.js index 4aae2738..d78cc7c5 100644 --- a/cmds/util/locate.js +++ b/cmds/util/locate.js @@ -17,9 +17,11 @@ "use strict"; -exports.command = ['locate']; -exports.desc = 'Show the location where Eask is installed'; +import { plugin_dir } from "../../src/util.js"; -exports.handler = async (argv) => { - console.log(UTIL.plugin_dir()); +export const command = ['locate']; +export const desc = 'Show the location where Eask is installed'; + +export const handler = async (argv) => { + console.log(plugin_dir()); }; diff --git a/cmds/util/root.js b/cmds/util/root.js index 088f62ad..b1b0c3ee 100644 --- a/cmds/util/root.js +++ b/cmds/util/root.js @@ -17,9 +17,11 @@ "use strict"; -exports.command = ['root']; -exports.desc = UTIL.hide_cmd('Display the effective installation directory of your Emacs packages'); +import { hide_cmd, e_call } from "../../src/util.js"; -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'util/root'); +export const command = ['root']; +export const desc = hide_cmd('Display the effective installation directory of your Emacs packages'); + +export const handler = async (argv) => { + await e_call(argv, 'util/root'); }; diff --git a/cmds/util/upgrade-eask.js b/cmds/util/upgrade-eask.js index f907a64e..fe83b765 100644 --- a/cmds/util/upgrade-eask.js +++ b/cmds/util/upgrade-eask.js @@ -17,13 +17,14 @@ "use strict"; -const child_process = require("child_process"); +import child_process from "child_process"; +import { plugin_dir } from "../../src/util.js"; -exports.command = ['upgrade-eask', 'upgrade-self']; -exports.desc = 'Upgrade Eask itself'; +export const command = ['upgrade-eask', 'upgrade-self']; +export const desc = 'Upgrade Eask itself'; -exports.handler = async (argv) => { - process.chdir(UTIL.plugin_dir()); +export const handler = async (argv) => { + process.chdir(plugin_dir()); let proc = child_process.spawn('git', ['pull'], { stdio: 'inherit' }); // You would just need to register the error event, or else it can't print diff --git a/docs/content/Contributing/Codebase-Overview/_index.en.md b/docs/content/Contributing/Codebase-Overview/_index.en.md index 7ad8ecd9..69df3ae1 100644 --- a/docs/content/Contributing/Codebase-Overview/_index.en.md +++ b/docs/content/Contributing/Codebase-Overview/_index.en.md @@ -28,21 +28,20 @@ to feed the Emacs session. Let's look at the file `cmds/core/archives.js`: ```js -exports.command = ['archives', 'sources']; // alias to sources -exports.desc = 'List out all package archives'; +export const command = ['archives', 'sources']; // alias to sources +export const desc = 'List out all package archives'; -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/archives'); +export const handler = async (argv) => { + await e_call(argv, 'core/archives'); }; ``` This is a standard yargs command file, which contains all the information we need to pass it to the Emacs session. -- **exports.command** is the argument pattern, but it also accepts alias (array) -- **exports.desc** is the command description -- **exports.handler** is an asynchronous function that handles command execution -- **UTIL** is a global variable that points to the `src/util.js` module. +- **export const command** is the argument pattern, but it also accepts alias (array) +- **export const desc** is the command description +- **export const handler** is an asynchronous function that handles command execution - **`'core/archives'`** is the elisp file under **lisp** folder (without `.el` extension). `eask` is a JavaScript file that holds all our global options. @@ -65,7 +64,7 @@ yargs ... ``` -For **local** options, please use `exports.builder` and specify under its +For **local** options, please use `export const builder` and specify under its command file. See diff --git a/docs/content/Contributing/Codebase-Overview/_index.zh-tw.md b/docs/content/Contributing/Codebase-Overview/_index.zh-tw.md index 8cf699ff..9f75f3c5 100644 --- a/docs/content/Contributing/Codebase-Overview/_index.zh-tw.md +++ b/docs/content/Contributing/Codebase-Overview/_index.zh-tw.md @@ -21,20 +21,19 @@ yargs 命令文件是用 JavaScript 編寫的,位於 **cmds** 文件夾下。 讓我們看一下文件 `cmds/core/archives.js` : ```js -exports.command = ['archives', 'sources']; // 來源的別名 -exports.desc = 'List out all package archives'; +export const command = ['archives', 'sources']; // 來源的別名 +export const desc = 'List out all package archives'; -exports.handler = async (argv) => { - await UTIL.e_call(argv, 'core/archives'); +export const handler = async (argv) => { + await e_call(argv, 'core/archives'); }; ``` 這是一個標準的 yargs 命令文件,裡麵包含了我們所有的信息需要將它傳遞給 Emacs session。 -- **exports.command** 是參數模式,但它也接受別名(數組) -- **exports.desc** 是命令說明 -- **exports.handler** 是處理命令執行的異步函數 -- **UTIL** 是指向 `src/util.js` 模塊的全局變量。 +- **export const command** 是參數模式,但它也接受別名(數組) +- **export const desc** 是命令說明 +- **export const handler** 是處理命令執行的異步函數 - **`'core/archives'`** 是 **lisp** 文件夾下的 elisp 文件(沒有 .el 擴展名)。 `eask` 是一個包含我們所有全局選項的 JavaScript 文件。 @@ -57,7 +56,7 @@ yargs ... ``` -對於 **local** 選項,請使用 `exports.builder` 並在其下指定命令文件。 +對於 **local** 選項,請使用 `export const builder` 並在其下指定命令文件。 看 [yargs/docs/advanced.md](https://github.com/yargs/yargs/blob/main/docs/advanced.md), diff --git a/eask b/eask index f5062ecc..831a45c1 100755 --- a/eask +++ b/eask @@ -1,7 +1,13 @@ #!/usr/bin/env node -const env = require('./src/env'); -const yargs = require('yargs'); +import path from 'path'; +import yargs from 'yargs/yargs'; +import { hideBin } from 'yargs/helpers'; +import { TITLE_PROXY_OPTION } from './src/env.js'; + +const __dirname = import.meta.dirname; + +const handler = yargs(hideBin(process.argv)); const usage = `eask is the main command, used to manage your Emacs dependencies @@ -13,15 +19,15 @@ const epilogue = `For more information, find the manual at https://emacs-eask.gi const version = `0.12.5`; -yargs +handler .usage(usage) .scriptName('') .epilogue(epilogue) - .commandDir('cmds/core/') - .commandDir('cmds/util/') + .commandDir(path.join(__dirname, './cmds/core/')) + .commandDir(path.join(__dirname, './cmds/util/')) .command({ command: '*', - handler() { yargs.showHelp(); } + handler() { handler.showHelp(); } }) .version('version', 'output version information and exit', version) .help('help', 'show usage instructions') @@ -127,5 +133,5 @@ yargs .strict() .demandCommand() .showHelpOnFail(true) - .wrap(yargs.terminalWidth()) + .wrap(handler.terminalWidth()) .argv; diff --git a/package-lock.json b/package-lock.json index dae49a65..b4c83e7b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,51 +10,37 @@ "license": "GPL-3.0", "dependencies": { "which": "^6.0.0", - "yargs": "^17.0.0" + "yargs": "^18.0.0" }, "bin": { "eask": "eask" }, "devDependencies": { - "@yao-pkg/pkg": "^6.0.0", + "@yao-pkg/pkg": "^6.13.0", "cross-env": "^10.1.0", - "jest": "^29.7.0", + "jest": "^30.2.0", "semver-compare": "^1.0.0" } }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", + "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", - "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", "dev": true, "license": "MIT", "engines": { @@ -62,22 +48,22 @@ } }, "node_modules/@babel/core": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", - "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.10", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.10", - "@babel/parser": "^7.26.10", - "@babel/template": "^7.26.9", - "@babel/traverse": "^7.26.10", - "@babel/types": "^7.26.10", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -103,16 +89,16 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.10.tgz", - "integrity": "sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==", + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.10", - "@babel/types": "^7.26.10", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" }, "engines": { @@ -120,14 +106,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", - "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.26.5", - "@babel/helper-validator-option": "^7.25.9", + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -136,16 +122,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -156,37 +132,40 @@ "semver": "bin/semver.js" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", "dev": true, - "license": "ISC" + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-module-imports": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", - "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", - "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -196,9 +175,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", - "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", "dev": true, "license": "MIT", "engines": { @@ -206,9 +185,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, "license": "MIT", "engines": { @@ -216,9 +195,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, "license": "MIT", "engines": { @@ -226,9 +205,9 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", - "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "dev": true, "license": "MIT", "engines": { @@ -236,27 +215,27 @@ } }, "node_modules/@babel/helpers": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.10.tgz", - "integrity": "sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.26.9", - "@babel/types": "^7.26.10" + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.10.tgz", - "integrity": "sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.26.10" + "@babel/types": "^7.29.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -321,13 +300,13 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", - "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -363,13 +342,13 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", - "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -489,13 +468,13 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", - "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -505,48 +484,48 @@ } }, "node_modules/@babel/template": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", - "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/parser": "^7.26.9", - "@babel/types": "^7.26.9" + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.10.tgz", - "integrity": "sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.10", - "@babel/parser": "^7.26.10", - "@babel/template": "^7.26.9", - "@babel/types": "^7.26.10", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.10.tgz", - "integrity": "sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -559,403 +538,977 @@ "dev": true, "license": "MIT" }, - "node_modules/@epic-web/invariant": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@epic-web/invariant/-/invariant-1.0.0.tgz", - "integrity": "sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==", + "node_modules/@emnapi/core": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", + "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" + } }, - "node_modules/@isaacs/fs-minipass": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", - "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "node_modules/@emnapi/runtime": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", + "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", "dev": true, - "license": "ISC", + "license": "MIT", + "optional": true, "dependencies": { - "minipass": "^7.0.4" - }, - "engines": { - "node": ">=18.0.0" + "tslib": "^2.4.0" } }, - "node_modules/@istanbuljs/load-nyc-config": { + "node_modules/@emnapi/wasi-threads": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", "dev": true, - "license": "ISC", + "license": "MIT", + "optional": true, "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" + "tslib": "^2.4.0" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "node_modules/@epic-web/invariant": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@epic-web/invariant/-/invariant-1.0.0.tgz", + "integrity": "sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", + "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "node_modules/@esbuild/android-arm": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", + "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" } }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "node_modules/@esbuild/android-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", + "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">=18" } }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "node_modules/@esbuild/android-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", + "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" } }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", + "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" } }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "node_modules/@esbuild/darwin-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", + "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" } }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", + "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" } }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", + "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" } }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "node_modules/@esbuild/linux-arm": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", + "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">=18" } }, - "node_modules/@jest/reporters/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "node_modules/@esbuild/linux-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", + "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@jest/reporters/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "node_modules/@esbuild/linux-ia32": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", + "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", + "cpu": [ + "ia32" + ], "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=18" } }, - "node_modules/@jest/reporters/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/@esbuild/linux-loong64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", + "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", + "cpu": [ + "loong64" + ], "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "*" + "node": ">=18" } }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", + "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", + "cpu": [ + "mips64el" + ], "dev": true, "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" } }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", + "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" } }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "node_modules/@esbuild/linux-riscv64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", + "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", + "cpu": [ + "riscv64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" } }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "node_modules/@esbuild/linux-s390x": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", + "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", + "cpu": [ + "s390x" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", + "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", + "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", + "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", + "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", + "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", + "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", + "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", + "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", + "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", + "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/core": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.2.0.tgz", + "integrity": "sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "30.2.0", + "@jest/pattern": "30.0.1", + "@jest/reporters": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-changed-files": "30.2.0", + "jest-config": "30.2.0", + "jest-haste-map": "30.2.0", + "jest-message-util": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.2.0", + "jest-resolve-dependencies": "30.2.0", + "jest-runner": "30.2.0", + "jest-runtime": "30.2.0", + "jest-snapshot": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "jest-watcher": "30.2.0", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/diff-sequences": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", + "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", + "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-mock": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "30.2.0", + "jest-snapshot": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", + "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", + "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@sinonjs/fake-timers": "^13.0.0", + "@types/node": "*", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/get-type": { + "version": "30.1.0", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", + "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.2.0.tgz", + "integrity": "sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.2.0", + "@jest/expect": "30.2.0", + "@jest/types": "30.2.0", + "jest-mock": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-regex-util": "30.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.2.0.tgz", + "integrity": "sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "@types/node": "*", + "chalk": "^4.1.2", + "collect-v8-coverage": "^1.0.2", + "exit-x": "^0.2.2", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^5.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "slash": "^3.0.0", + "string-length": "^4.0.2", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/snapshot-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.2.0.tgz", + "integrity": "sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "natural-compare": "^1.4.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", + "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "callsites": "^3.1.0", + "graceful-fs": "^4.2.11" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", + "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "30.2.0", + "@jest/types": "30.2.0", + "@types/istanbul-lib-coverage": "^2.0.6", + "collect-v8-coverage": "^1.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.2.0.tgz", + "integrity": "sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "30.2.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "slash": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", + "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", + "@babel/core": "^7.27.4", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "micromatch": "^4.0.8", + "pirates": "^4.0.7", "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" + "write-file-atomic": "^5.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { @@ -967,35 +1520,65 @@ "node": ">=6.0.0" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", "dev": true, "license": "MIT" }, @@ -1010,13 +1593,24 @@ } }, "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@sinonjs/commons": "^3.0.0" + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" } }, "node_modules/@types/babel__core": { @@ -1034,9 +1628,9 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", "dev": true, "license": "MIT", "dependencies": { @@ -1055,23 +1649,13 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "@babel/types": "^7.28.2" } }, "node_modules/@types/istanbul-lib-coverage": { @@ -1102,13 +1686,13 @@ } }, "node_modules/@types/node": { - "version": "22.13.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.10.tgz", - "integrity": "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.20.0" + "undici-types": "~7.16.0" } }, "node_modules/@types/stack-utils": { @@ -1119,9 +1703,9 @@ "license": "MIT" }, "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", "dev": true, "license": "MIT", "dependencies": { @@ -1133,19 +1717,297 @@ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true, - "license": "MIT" + "license": "MIT" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, "node_modules/@yao-pkg/pkg": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@yao-pkg/pkg/-/pkg-6.12.0.tgz", - "integrity": "sha512-yXdr5XTnEUm+AuBWPvMdv1z6dCcuKLUPYGZKPwb0pS8YE+P/Jspb47QjutcjfA31tIkGU6JTsOhlGxDxrO/A2w==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/@yao-pkg/pkg/-/pkg-6.13.0.tgz", + "integrity": "sha512-K0TFFZEM4l8jeU0h/Wk2wKLrpo4J3uX6wIlCMndVFJmwC1Pk4JKVrs/DzEX5nKQlAvcjviA/feg7l3raEg/RvA==", "dev": true, "license": "MIT", "dependencies": { "@babel/generator": "^7.23.0", "@babel/parser": "^7.23.0", + "@babel/traverse": "^7.23.0", "@babel/types": "^7.23.0", "@yao-pkg/pkg-fetch": "3.5.32", + "esbuild": "^0.24.0", "into-stream": "^6.0.0", "minimist": "^1.2.6", "multistream": "^4.1.0", @@ -1153,8 +2015,9 @@ "picomatch": "^4.0.2", "prebuild-install": "^7.1.1", "resolve": "^1.22.10", + "resolve.exports": "^2.0.3", "stream-meter": "^1.0.4", - "tar": "^7.4.3", + "tar": "^7.5.6", "tinyglobby": "^0.2.11", "unzipper": "^0.12.3" }, @@ -1286,6 +2149,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "engines": { "node": ">=8" } @@ -1294,6 +2158,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -1344,91 +2209,64 @@ } }, "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.2.0.tgz", + "integrity": "sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", + "@jest/transform": "30.2.0", + "@types/babel__core": "^7.20.5", + "babel-plugin-istanbul": "^7.0.1", + "babel-preset-jest": "30.2.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", "slash": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { - "@babel/core": "^7.8.0" + "@babel/core": "^7.11.0 || ^8.0.0-0" } }, "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", "dev": true, "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", "test-exclude": "^6.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node": ">=12" } }, "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.2.0.tgz", + "integrity": "sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" + "@types/babel__core": "^7.20.5" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/babel-preset-current-node-syntax": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", - "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", "dev": true, "license": "MIT", "dependencies": { @@ -1449,24 +2287,24 @@ "@babel/plugin-syntax-top-level-await": "^7.14.5" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0 || ^8.0.0-0" } }, "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.2.0.tgz", + "integrity": "sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==", "dev": true, "license": "MIT", "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" + "babel-plugin-jest-hoist": "30.2.0", + "babel-preset-current-node-syntax": "^1.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.11.0 || ^8.0.0-beta.1" } }, "node_modules/balanced-match": { @@ -1593,6 +2431,16 @@ } ] }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", + "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -1625,6 +2473,16 @@ "dev": true, "license": "MIT" }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/braces": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", @@ -1639,9 +2497,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", - "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", "dev": true, "funding": [ { @@ -1659,10 +2517,11 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.1" + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" @@ -1733,9 +2592,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001706", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001706.tgz", - "integrity": "sha512-3ZczoTApMAZwPKYWmwVbQMFpXBDds3/0VciVoUwPUbldlYyVLmRVuRs/PcUZtHpbLRpzzDvrvnFuREsGt6lUug==", + "version": "1.0.30001769", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz", + "integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==", "dev": true, "funding": [ { @@ -1787,9 +2646,9 @@ "dev": true }, "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", "dev": true, "funding": [ { @@ -1803,9 +2662,9 @@ } }, "node_modules/cjs-module-lexer": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", - "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", + "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", "dev": true, "license": "MIT" }, @@ -1813,6 +2672,7 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -1831,9 +2691,9 @@ } }, "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", "dev": true, "license": "MIT" }, @@ -1841,6 +2701,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -1851,7 +2712,8 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/concat-map": { "version": "0.0.1", @@ -1873,28 +2735,6 @@ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, - "node_modules/create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "bin": { - "create-jest": "bin/create-jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/cross-env": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-10.1.0.tgz", @@ -1985,9 +2825,9 @@ } }, "node_modules/dedent": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", - "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz", + "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==", "dev": true, "license": "MIT", "peerDependencies": { @@ -2037,16 +2877,6 @@ "node": ">=8" } }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/duplexer2": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", @@ -2057,10 +2887,17 @@ "readable-stream": "^2.0.2" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, "node_modules/electron-to-chromium": { - "version": "1.5.120", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.120.tgz", - "integrity": "sha512-oTUp3gfX1gZI+xfD2djr2rzQdHCwHzPQrrK0CD7WpTdF0nPdQ/INcRVjWgLdCT4a9W3jFObR9DAfsuyFQnI8CQ==", + "version": "1.5.286", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz", + "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==", "dev": true, "license": "ISC" }, @@ -2080,7 +2917,8 @@ "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "node_modules/end-of-stream": { "version": "1.4.4", @@ -2092,15 +2930,56 @@ } }, "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "dev": true, "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, + "node_modules/esbuild": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", + "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.24.2", + "@esbuild/android-arm": "0.24.2", + "@esbuild/android-arm64": "0.24.2", + "@esbuild/android-x64": "0.24.2", + "@esbuild/darwin-arm64": "0.24.2", + "@esbuild/darwin-x64": "0.24.2", + "@esbuild/freebsd-arm64": "0.24.2", + "@esbuild/freebsd-x64": "0.24.2", + "@esbuild/linux-arm": "0.24.2", + "@esbuild/linux-arm64": "0.24.2", + "@esbuild/linux-ia32": "0.24.2", + "@esbuild/linux-loong64": "0.24.2", + "@esbuild/linux-mips64el": "0.24.2", + "@esbuild/linux-ppc64": "0.24.2", + "@esbuild/linux-riscv64": "0.24.2", + "@esbuild/linux-s390x": "0.24.2", + "@esbuild/linux-x64": "0.24.2", + "@esbuild/netbsd-arm64": "0.24.2", + "@esbuild/netbsd-x64": "0.24.2", + "@esbuild/openbsd-arm64": "0.24.2", + "@esbuild/openbsd-x64": "0.24.2", + "@esbuild/sunos-x64": "0.24.2", + "@esbuild/win32-arm64": "0.24.2", + "@esbuild/win32-ia32": "0.24.2", + "@esbuild/win32-x64": "0.24.2" + } + }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -2175,11 +3054,12 @@ "dev": true, "license": "ISC" }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "node_modules/exit-x": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", + "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } @@ -2194,20 +3074,21 @@ } }, "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/fast-fifo": { @@ -2261,6 +3142,23 @@ "node": ">=8" } }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", @@ -2342,6 +3240,18 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-east-asian-width": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", + "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", @@ -2371,14 +3281,26 @@ "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", "dev": true }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/graceful-fs": { @@ -2559,6 +3481,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, "engines": { "node": ">=8" } @@ -2653,24 +3576,24 @@ } }, "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", "dev": true, "license": "BSD-3-Clause", "dependencies": { + "@jridgewell/trace-mapping": "^0.3.23", "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" + "istanbul-lib-coverage": "^3.0.0" }, "engines": { "node": ">=10" } }, "node_modules/istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -2681,23 +3604,39 @@ "node": ">=8" } }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-30.2.0.tgz", + "integrity": "sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==", "dev": true, "license": "MIT", "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" + "@jest/core": "30.2.0", + "@jest/types": "30.2.0", + "import-local": "^3.2.0", + "jest-cli": "30.2.0" }, "bin": { "jest": "bin/jest.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -2709,76 +3648,75 @@ } }, "node_modules/jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.2.0.tgz", + "integrity": "sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ==", "dev": true, "license": "MIT", "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", + "execa": "^5.1.1", + "jest-util": "30.2.0", "p-limit": "^3.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.2.0.tgz", + "integrity": "sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", + "@jest/environment": "30.2.0", + "@jest/expect": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/types": "30.2.0", "@types/node": "*", - "chalk": "^4.0.0", + "chalk": "^4.1.2", "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", + "dedent": "^1.6.0", + "is-generator-fn": "^2.1.0", + "jest-each": "30.2.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-runtime": "30.2.0", + "jest-snapshot": "30.2.0", + "jest-util": "30.2.0", "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", + "pretty-format": "30.2.0", + "pure-rand": "^7.0.0", "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "stack-utils": "^2.0.6" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.2.0.tgz", + "integrity": "sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" + "@jest/core": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/types": "30.2.0", + "chalk": "^4.1.2", + "exit-x": "^0.2.2", + "import-local": "^3.2.0", + "jest-config": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "yargs": "^17.7.2" }, "bin": { "jest": "bin/jest.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -2789,98 +3727,102 @@ } } }, + "node_modules/jest-cli/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-cli/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-cli/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.2.0.tgz", + "integrity": "sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@jest/get-type": "30.1.0", + "@jest/pattern": "30.0.1", + "@jest/test-sequencer": "30.2.0", + "@jest/types": "30.2.0", + "babel-jest": "30.2.0", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "deepmerge": "^4.3.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", + "jest-circus": "30.2.0", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.2.0", + "jest-runner": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "micromatch": "^4.0.8", "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", + "pretty-format": "30.2.0", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { "@types/node": "*", + "esbuild-register": ">=3.4.0", "ts-node": ">=9.0.0" }, "peerDependenciesMeta": { "@types/node": { "optional": true }, + "esbuild-register": { + "optional": true + }, "ts-node": { "optional": true } } }, - "node_modules/jest-config/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/jest-config/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-config/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/jest-config/node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -2895,169 +3837,159 @@ } }, "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", + "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "@jest/diff-sequences": "30.0.1", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", + "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", "dev": true, "license": "MIT", "dependencies": { - "detect-newline": "^3.0.0" + "detect-newline": "^3.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.2.0.tgz", + "integrity": "sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" + "@jest/get-type": "30.1.0", + "@jest/types": "30.2.0", + "chalk": "^4.1.2", + "jest-util": "30.2.0", + "pretty-format": "30.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.2.0.tgz", + "integrity": "sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", + "@jest/environment": "30.2.0", + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" + "jest-mock": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", + "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", + "@jest/types": "30.2.0", "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "micromatch": "^4.0.8", "walker": "^1.0.8" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "optionalDependencies": { - "fsevents": "^2.3.2" + "fsevents": "^2.3.3" } }, "node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.2.0.tgz", + "integrity": "sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==", "dev": true, "license": "MIT", "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "@jest/get-type": "30.1.0", + "pretty-format": "30.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", + "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.2.0", + "pretty-format": "30.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "stack-utils": "^2.0.6" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", + "@jest/types": "30.2.0", "@types/node": "*", - "jest-util": "^29.7.0" + "jest-util": "30.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-pnp-resolver": { @@ -3079,229 +4011,197 @@ } }, "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", "dev": true, "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.2.0.tgz", + "integrity": "sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-pnp-resolver": "^1.2.3", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "slash": "^3.0.0", + "unrs-resolver": "^1.7.11" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.2.0.tgz", + "integrity": "sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w==", "dev": true, "license": "MIT", "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" + "jest-regex-util": "30.0.1", + "jest-snapshot": "30.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.2.0.tgz", + "integrity": "sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ==", "dev": true, "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/jest-runtime/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "dependencies": { + "@jest/console": "30.2.0", + "@jest/environment": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "emittery": "^0.13.1", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.2.0", + "jest-haste-map": "30.2.0", + "jest-leak-detector": "30.2.0", + "jest-message-util": "30.2.0", + "jest-resolve": "30.2.0", + "jest-runtime": "30.2.0", + "jest-util": "30.2.0", + "jest-watcher": "30.2.0", + "jest-worker": "30.2.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-runtime/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/jest-runtime": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.2.0.tgz", + "integrity": "sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "@jest/environment": "30.2.0", + "@jest/fake-timers": "30.2.0", + "@jest/globals": "30.2.0", + "@jest/source-map": "30.0.1", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "cjs-module-lexer": "^2.1.0", + "collect-v8-coverage": "^1.0.2", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.2.0", + "jest-snapshot": "30.2.0", + "jest-util": "30.2.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" }, "engines": { - "node": "*" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz", + "integrity": "sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@babel/generator": "^7.27.5", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1", + "@babel/types": "^7.27.3", + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "@jest/snapshot-utils": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "babel-preset-current-node-syntax": "^1.2.0", + "chalk": "^4.1.2", + "expect": "30.2.0", + "graceful-fs": "^4.2.11", + "jest-diff": "30.2.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "pretty-format": "30.2.0", + "semver": "^7.7.2", + "synckit": "^0.11.8" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", + "@jest/types": "30.2.0", "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-util/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz", + "integrity": "sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", + "@jest/get-type": "30.1.0", + "@jest/types": "30.2.0", + "camelcase": "^6.3.0", + "chalk": "^4.1.2", "leven": "^3.1.0", - "pretty-format": "^29.7.0" + "pretty-format": "30.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-validate/node_modules/camelcase": { @@ -3318,39 +4218,40 @@ } }, "node_modules/jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.2.0.tgz", + "integrity": "sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", + "@jest/test-result": "30.2.0", + "@jest/types": "30.2.0", "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" + "jest-util": "30.2.0", + "string-length": "^4.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", + "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", - "jest-util": "^29.7.0", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.2.0", "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "supports-color": "^8.1.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-worker/node_modules/supports-color": { @@ -3436,16 +4337,6 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -3476,6 +4367,23 @@ "node": ">=8" } }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lru-cache/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, "node_modules/make-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", @@ -3545,6 +4453,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", @@ -3634,6 +4558,22 @@ "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", "dev": true }, + "node_modules/napi-postinstall": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -3682,9 +4622,9 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", "dev": true, "license": "MIT" }, @@ -3800,6 +4740,13 @@ "node": ">=6" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -3855,6 +4802,30 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -3876,9 +4847,9 @@ } }, "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", "dev": true, "license": "MIT", "engines": { @@ -3925,18 +4896,18 @@ } }, "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/pretty-format/node_modules/ansi-styles": { @@ -3968,20 +4939,6 @@ "node": ">=0.4.0" } }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -3993,9 +4950,9 @@ } }, "node_modules/pure-rand": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", - "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", + "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", "dev": true, "funding": [ { @@ -4050,6 +5007,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -4115,10 +5073,11 @@ "dev": true }, "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -4156,6 +5115,19 @@ "node": ">=8" } }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/simple-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", @@ -4201,13 +5173,6 @@ "simple-concat": "^1.0.0" } }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true, - "license": "MIT" - }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -4307,6 +5272,23 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -4320,6 +5302,21 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -4381,6 +5378,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/synckit": { + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", + "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.9" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, "node_modules/tar": { "version": "7.5.7", "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.7.tgz", @@ -4481,7 +5494,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { @@ -4597,6 +5610,14 @@ "dev": true, "license": "MIT" }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD", + "optional": true + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -4633,9 +5654,9 @@ } }, "node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", "dev": true, "license": "MIT" }, @@ -4649,6 +5670,41 @@ "node": ">= 10.0.0" } }, + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" + } + }, "node_modules/unzipper": { "version": "0.12.3", "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.12.3.tgz", @@ -4664,9 +5720,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", "dev": true, "funding": [ { @@ -4762,6 +5818,26 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -4781,26 +5857,19 @@ "dev": true }, "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" + "signal-exit": "^4.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/write-file-atomic/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -4820,28 +5889,122 @@ } }, "node_modules/yargs": { - "version": "17.5.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", - "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", + "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", + "license": "MIT", "dependencies": { - "cliui": "^7.0.2", + "cliui": "^9.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", + "string-width": "^7.2.0", "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" + "yargs-parser": "^22.0.0" }, "engines": { - "node": ">=12" + "node": "^20.19.0 || ^22.12.0 || >=23" } }, "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", + "license": "ISC", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/yargs/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/yargs/node_modules/cliui": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", + "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", + "license": "ISC", + "dependencies": { + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/yargs/node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/yocto-queue": { diff --git a/package.json b/package.json index 2fa402b2..b1805949 100644 --- a/package.json +++ b/package.json @@ -2,11 +2,12 @@ "name": "@emacs-eask/cli", "version": "0.12.5", "description": "A set of command-line tools to build Emacs packages", - "main": "eask", + "type": "module", + "exports": "./eask", "scripts": { - "test-unsafe": "cross-env ALLOW_UNSAFE=1 jest", - "test-debug": "cross-env DEBUG=1 jest", - "test": "jest", + "test-unsafe": "cross-env NODE_OPTIONS=--experimental-vm-modules ALLOW_UNSAFE=1 jest", + "test-debug": "cross-env NODE_OPTIONS=--experimental-vm-modules DEBUG=1 jest", + "test": "cross-env NODE_OPTIONS=--experimental-vm-modules jest", "test-reset": "rm -rf ./test/jest/.eask ./test/jest/*/.eask; git restore ./test/jest/*/", "pkg-all": "pkg package.json", "pkg-linux-arm64": "pkg package.json -t node*-linuxstatic-arm64 --output dist/eask --public", @@ -33,12 +34,12 @@ "license": "GPL-3.0", "dependencies": { "which": "^6.0.0", - "yargs": "^17.0.0" + "yargs": "^18.0.0" }, "devDependencies": { - "@yao-pkg/pkg": "^6.0.0", + "@yao-pkg/pkg": "^6.13.0", "cross-env": "^10.1.0", - "jest": "^29.7.0", + "jest": "^30.2.0", "semver-compare": "^1.0.0" }, "jest": { diff --git a/src/env.js b/src/env.js index 9f29fdac..048da7f8 100644 --- a/src/env.js +++ b/src/env.js @@ -17,30 +17,29 @@ "use strict"; -const os = require('os'); -const path = require('path'); +import os from 'os'; +import path from 'path'; -global.UTIL = require('./util'); -global.IS_PKG = path.basename(process.execPath).startsWith('eask'); +export const IS_PKG = path.basename(process.execPath).startsWith('eask'); /* Environment PATH */ -global.EASK_HOMEDIR = os.homedir().replace(/\\/g, '/') + '/.eask/'; +export const EASK_HOMEDIR = os.homedir().replace(/\\/g, '/') + '/.eask/'; -global.EASK_EMACS = process.env.EMACS || process.env.EASK_EMACS || "emacs"; +export const EASK_EMACS = process.env.EMACS || process.env.EASK_EMACS || "emacs"; process.env.EMACS = EASK_EMACS; // Set back the value. /* Titles */ -global.TITLE_CMD_OPTION = 'Command Options:'; -global.TITLE_PROXY_OPTION = 'Proxy Options:'; +export const TITLE_CMD_OPTION = 'Command Options:'; +export const TITLE_PROXY_OPTION = 'Proxy Options:'; /* Exit Code * * This must match with the variable `eask--exit-code` in * the file `lisp/_prepare.el`. */ -global.EXIT_SUCCESS = 0; -global.EXIT_FAILURE = 1; -global.EXIT_MISUSE = 2; +export const EXIT_SUCCESS = 0; +export const EXIT_FAILURE = 1; +export const EXIT_MISUSE = 2; /* CI */ -global.GITHUB_ACTIONS = (process.env.GITHUB_WORKSPACE !== undefined); +export const GITHUB_ACTIONS = (process.env.GITHUB_WORKSPACE !== undefined); diff --git a/src/util.js b/src/util.js index afc37011..268479ce 100644 --- a/src/util.js +++ b/src/util.js @@ -17,23 +17,27 @@ "use strict"; -const path = require('path'); -const child_process = require("child_process"); +import path from 'path'; +import child_process from 'child_process'; +import _which from 'which'; +import { IS_PKG, EASK_EMACS, EASK_HOMEDIR, GITHUB_ACTIONS, EXIT_FAILURE } from './env.js'; + +const __dirname = import.meta.dirname; /** * Check to see if a program is installed and exists on the path. * @param { String } command - Program name. * @return Return path or null if not found. */ -function which(command) { - return require('which').sync(command, { nothrow: true }); +export function which(command) { + return _which.sync(command, { nothrow: true }); } /** * Convert Windows backslash paths to slash paths: `foo\\bar` -> `foo/bar` * @see https://github.com/sindresorhus/slash */ -function slash(path) { +export function slash(path) { const isExtendedLengthPath = path.startsWith('\\\\?\\'); if (isExtendedLengthPath) { return path; @@ -46,7 +50,7 @@ function slash(path) { * @param { String } str - String to escape string. * @return Escaped string. */ -function escape_str(str) { +export function escape_str(str) { return str.replaceAll('\"', '\\"'); } @@ -65,7 +69,7 @@ function _rest_args() { * @see https://github.com/emacs-eask/cli/issues/128 * @param { Array } argv - Argument vector. */ -function cli_args(argv) { +export function cli_args(argv) { let result = ''; let first = true; argv.forEach(function (element) { @@ -92,7 +96,7 @@ function _remove_undefined(arr) { } /* Return plugin directory */ -function plugin_dir() { +export function plugin_dir() { let root = (IS_PKG) ? process.execPath : __dirname; return path.join(root, '..'); } @@ -102,7 +106,7 @@ function plugin_dir() { * @param { boolean } arg - argument receive from yargs. * @param { string } name - the flag representation in alias. */ -function def_flag(arg, name, val = undefined) { +export function def_flag(arg, name, val = undefined) { if (arg === undefined) return undefined; if (val === undefined) @@ -124,7 +128,7 @@ function _invocation() { /** * Setup the environment variables so Emacs could receive them. */ -function setup_env() { +export function setup_env() { /* Home Directory */ process.env.EASK_INVOCATION = _invocation(); process.env.EASK_HOMEDIR = EASK_HOMEDIR; @@ -198,7 +202,7 @@ function _check_argv(argv) { * Form elisp script path. * @param { string } name - Name of the script without extension. */ -function el_script(name) { +export function el_script(name) { let _script = 'lisp/' + name + '.el'; let _path = path.join(plugin_dir(), _script); return _path; @@ -223,7 +227,7 @@ function _environment_name (argv) { * @param { string } script - name of the script from `../lisp` * @param { string } args - the rest of the arguments */ -async function e_call(argv, script, ...args) { +export async function e_call(argv, script, ...args) { if (!which(EASK_EMACS)) { console.warn("Emacs is not installed (cannot find `" + EASK_EMACS + "' executable)"); return; @@ -273,7 +277,7 @@ async function e_call(argv, script, ...args) { * Get the command count, not including options. * @return Return a size of the command array. */ -function cmd_count() { +export function cmd_count() { let args = process.argv.slice(2); args = args.filter(elm => { return !elm.startsWith('-'); }); return args.length; @@ -285,27 +289,9 @@ function cmd_count() { * @param { integer } level - used to compare with command count. * @return Return a string to show command, else we return false. */ -function hide_cmd(description, level = 1) { +export function hide_cmd(description, level = 1) { if ((process.argv.includes('--show-hidden')) || level <= cmd_count()) // When display in submenu! return description; return false; } - - -/* - * Module Exports - */ -module.exports.which = which; -module.exports.slash = slash; - -module.exports.escape_str = escape_str; -module.exports.cli_args = cli_args; -module.exports.plugin_dir = plugin_dir; -module.exports.def_flag = def_flag; -module.exports.setup_env = setup_env; -module.exports.el_script = el_script; -module.exports.e_call = e_call; - -module.exports.hide_cmd = hide_cmd; -module.exports.cmd_count = cmd_count; diff --git a/test/jest/__snapshots__/analyze.test.js.snap b/test/jest/__snapshots__/analyze.test.js.snap index 65506abe..f1b342a7 100644 --- a/test/jest/__snapshots__/analyze.test.js.snap +++ b/test/jest/__snapshots__/analyze.test.js.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`analyze in ./analyze/dsl handles json option 1`] = ` { diff --git a/test/jest/analyze.test.js b/test/jest/analyze.test.js index 1054be49..744ad036 100644 --- a/test/jest/analyze.test.js +++ b/test/jest/analyze.test.js @@ -1,4 +1,4 @@ -const { TestContext } = require("./helpers"); +import { TestContext } from "./helpers.js"; /** * Clean output and attempt to parse as JSON. diff --git a/test/jest/compile.test.js b/test/jest/compile.test.js index 53cdfee7..7d793e8d 100644 --- a/test/jest/compile.test.js +++ b/test/jest/compile.test.js @@ -1,4 +1,4 @@ -const { TestContext } = require("./helpers"); +import { TestContext } from "./helpers.js"; describe("compile", () => { const ctx = new TestContext("./test/jest/compile"); diff --git a/test/jest/config.test.js b/test/jest/config.test.js index 432f2bc3..f5b61aa0 100644 --- a/test/jest/config.test.js +++ b/test/jest/config.test.js @@ -1,7 +1,7 @@ -const { testUnsafe, TestContext } = require("./helpers"); -const fs = require("node:fs/promises"); -const path = require("node:path"); -const process = require("node:process"); +import fs from "node:fs/promises"; +import path from "node:path"; +import process from "node:process"; +import { testUnsafe, TestContext } from "./helpers.js"; describe("config param", () => { const ctx = new TestContext(); diff --git a/test/jest/docker.test.js b/test/jest/docker.test.js index 4e0eff8e..1423d55f 100644 --- a/test/jest/docker.test.js +++ b/test/jest/docker.test.js @@ -1,4 +1,4 @@ -const { TestContext } = require("./helpers"); +import { TestContext } from "./helpers.js"; describe("docker", () => { const ctx = new TestContext("./test/jest/docker"); diff --git a/test/jest/emacs.test.js b/test/jest/emacs.test.js index d35d9252..a6781a90 100644 --- a/test/jest/emacs.test.js +++ b/test/jest/emacs.test.js @@ -1,4 +1,4 @@ -const { TestContext } = require("./helpers"); +import { TestContext } from "./helpers.js"; describe("emacs", () => { const ctx = new TestContext("./test/jest/empty"); diff --git a/test/jest/exec.test.js b/test/jest/exec.test.js index 6df6915f..d7764d30 100644 --- a/test/jest/exec.test.js +++ b/test/jest/exec.test.js @@ -1,4 +1,4 @@ -const { emacsVersion, TestContext } = require("./helpers"); +import { TestContext } from "./helpers.js"; describe("exec", () => { const ctx = new TestContext("./test/jest/exec"); diff --git a/test/jest/exit-status.test.js b/test/jest/exit-status.test.js index f028d0af..86951d04 100644 --- a/test/jest/exit-status.test.js +++ b/test/jest/exit-status.test.js @@ -1,4 +1,4 @@ -const { TestContext } = require("./helpers"); +import { TestContext } from "./helpers.js"; describe("exit-status", () => { const ctx = new TestContext("./test/jest/empty"); diff --git a/test/jest/global.test.js b/test/jest/global.test.js index e24f54f5..f857a149 100644 --- a/test/jest/global.test.js +++ b/test/jest/global.test.js @@ -1,8 +1,7 @@ -const fs = require("node:fs/promises"); -const path = require("node:path"); -const process = require("node:process"); - -const { testUnsafe, TestContext } = require("./helpers"); +import fs from "node:fs/promises"; +import path from 'node:path'; +import process from "node:process"; +import { testUnsafe, TestContext } from "./helpers.js"; describe("global", () => { // global => install to ~/.eask diff --git a/test/jest/helpers.js b/test/jest/helpers.js index df0b3d7d..485cd185 100644 --- a/test/jest/helpers.js +++ b/test/jest/helpers.js @@ -1,10 +1,9 @@ -const util = require("node:util"); -const exec = util.promisify(require("node:child_process").exec); -const fs = require("node:fs/promises"); -const path = require("node:path"); +import util from 'node:util'; +import { exec as execCallback } from 'node:child_process'; +import fs from 'node:fs/promises'; +import path from 'node:path'; -// Load the environment. -const env = require('../../src/env'); +export const exec = util.promisify(execCallback); /* * This file uses JsDoc syntax. @@ -19,7 +18,7 @@ const env = require('../../src/env'); * @param {function({ fail: function }): void | function(): PromiseLike.} fn * @param {number} [timeout] */ -function testUnsafe(name, fn, timeout) { +export function testUnsafe(name, fn, timeout) { if (process.env.ALLOW_UNSAFE) { return test(name, fn, timeout); } else { @@ -32,7 +31,7 @@ function testUnsafe(name, fn, timeout) { * This is used in TestContext to limit `exec`. * @returns {number} */ -function getTimeout() { +export function getTimeout() { // parseInt returns NaN if it fails // TIMEOUT <= 0 will be ignored too return Number.parseInt(process.env.TIMEOUT) || 25000; @@ -43,7 +42,7 @@ function getTimeout() { * You can compare lexicographically, e.g. if ((await emacsVersion()) > "27") { ... } * @returns {Promise.} emacs version string. */ -async function emacsVersion() { +export async function emacsVersion() { const text = await exec("emacs --version"); const version = text.stdout.match("Emacs ([^ ]+)")?.[1]; if (!version) { @@ -62,7 +61,7 @@ async function stripAnsi(s) { } /** Provides transformations on output of node.exec(). */ -class CommandOutput { +export class CommandOutput { constructor(output, cwd) { this.stderr = output.stderr; this.stdout = output.stdout; @@ -142,7 +141,7 @@ class CommandOutput { } } -class TestContext { +export class TestContext { /** * @param {string} cwd Current Working Directory, used for all commands. */ @@ -251,11 +250,3 @@ class TestContext { return new CommandOutput(e, this.cwd); } } - -module.exports = { - testUnsafe, - emacsVersion, - TestContext, - getTimeout, - CommandOutput, -}; diff --git a/test/jest/helpers.test.js b/test/jest/helpers.test.js index 888017a7..037ae21a 100644 --- a/test/jest/helpers.test.js +++ b/test/jest/helpers.test.js @@ -1,5 +1,5 @@ -const { CommandOutput } = require("./helpers"); -const path = require("node:path"); +import path from 'node:path'; +import { CommandOutput } from "./helpers.js"; describe("CommandOutput", () => { describe("sanitizeString", () => { diff --git a/test/jest/install.test.js b/test/jest/install.test.js index 43c0832a..067632ce 100644 --- a/test/jest/install.test.js +++ b/test/jest/install.test.js @@ -1,5 +1,5 @@ -const cmp = require('semver-compare'); -const { emacsVersion, TestContext } = require("./helpers"); +import cmp from 'semver-compare'; +import { emacsVersion, TestContext } from "./helpers.js"; describe("install and uninstall", () => { describe("in ./install", () => { diff --git a/test/jest/link.test.js b/test/jest/link.test.js index 04633991..5cf7d114 100644 --- a/test/jest/link.test.js +++ b/test/jest/link.test.js @@ -1,4 +1,4 @@ -const { TestContext } = require("./helpers"); +import { TestContext } from "./helpers.js"; describe("link", () => { describe("in ./link", () => { diff --git a/test/jest/lint.test.js b/test/jest/lint.test.js index aeed67b5..7c12e04d 100644 --- a/test/jest/lint.test.js +++ b/test/jest/lint.test.js @@ -1,4 +1,4 @@ -const { TestContext } = require("./helpers"); +import { TestContext } from "./helpers.js"; describe("lint", () => { const ctx = new TestContext("./test/jest/lint"); diff --git a/test/jest/lint/.elsa/elisp-lint-ok-elsa-cache.el b/test/jest/lint/.elsa/elisp-lint-ok-elsa-cache.el new file mode 100644 index 00000000..5615ab48 --- /dev/null +++ b/test/jest/lint/.elsa/elisp-lint-ok-elsa-cache.el @@ -0,0 +1,2 @@ +(elsa-in-file "d:/_lang/elisp/_eask/cli/test/jest/lint/elisp-lint-ok.el") +(elsa-declare-defun elisp-lint-ok-foo nil (function nil string)) diff --git a/test/jest/lint/.elsa/subr-elsa-cache.el b/test/jest/lint/.elsa/subr-elsa-cache.el new file mode 100644 index 00000000..52083703 --- /dev/null +++ b/test/jest/lint/.elsa/subr-elsa-cache.el @@ -0,0 +1,365 @@ +(elsa-in-file "d:/_lang/elisp/_emacs/emacs-28.2/share/emacs/28.2/lisp/subr.el") +(elsa-declare-defvar gensym-counter (const 0)) +(elsa-declare-defvar key-substitution-in-progress nil) +(elsa-declare-defvar esc-map mixed) +(elsa-declare-defvar ctl-x-4-map mixed) +(elsa-declare-defvar ctl-x-5-map mixed) +(elsa-declare-defvar tab-prefix-map mixed) +(elsa-declare-defvar ctl-x-map mixed) +(elsa-declare-defvar global-map mixed) +(elsa-declare-defvar listify-key-sequence-1 (readonly int)) +(elsa-declare-defvar inhibit--record-char nil) +(elsa-declare-defvar delay-mode-hooks nil) +(elsa-declare-defvar delayed-mode-hooks nil) +(elsa-declare-defvar delayed-after-hook-functions nil) +(elsa-declare-defvar change-major-mode-after-body-hook nil) +(elsa-declare-defvar after-change-major-mode-hook nil) +(elsa-declare-defvar major-mode--suspended nil) +(elsa-declare-defvar minor-mode-list (list mixed)) +(elsa-declare-defvar read-key-empty-map (readonly mixed)) +(elsa-declare-defvar read-key-full-map (readonly mixed)) +(elsa-declare-defvar read-key-delay (const 0.01)) +(elsa-declare-defvar read-passwd-map mixed) +(elsa-declare-defvar read-number-history nil) +(elsa-declare-defvar read-char-choice-use-read-key nil) +(elsa-declare-defvar read-char-history nil) +(elsa-declare-defvar read-char-from-minibuffer-map mixed) +(elsa-declare-defvar read-char-from-minibuffer-map-hash (readonly mixed)) +(elsa-declare-defvar empty-history unbound) +(elsa-declare-defvar y-or-n-p-history-variable nil) +(elsa-declare-defvar y-or-n-p-map mixed) +(elsa-declare-defvar y-or-n-p-use-read-key nil) +(elsa-declare-defvar suspend-hook nil) +(elsa-declare-defvar suspend-resume-hook nil) +(elsa-declare-defvar temp-buffer-show-hook nil) +(elsa-declare-defvar temp-buffer-setup-hook nil) +(elsa-declare-defvar user-emacs-directory nil) +(elsa-declare-defvar yank-handled-properties unbound) +(elsa-declare-defvar yank-excluded-properties unbound) +(elsa-declare-defvar yank-undo-function unbound) +(elsa-declare-defvar undo--combining-change-calls nil) +(elsa-declare-defvar split-string-default-separators (readonly (const "[ + ]+"))) +(elsa-declare-defvar after-load-functions nil) +(elsa-declare-defvar delayed-warnings-hook (list mixed)) +(elsa-declare-defvar word-move-empty-char-table nil) +(elsa-declare-defvar text-clone--maintaining nil) +(elsa-declare-defvar called-interactively-p-functions nil) +(elsa-declare-defvar internal--funcall-interactively (readonly mixed)) +(elsa-declare-defvar progress-reporter--pulse-characters (vector mixed)) +(elsa-declare-defvar version-separator (readonly (const "."))) +(elsa-declare-defvar version-regexp-alist (readonly (list (list mixed)))) +(elsa-declare-defvar package--builtin-versions mixed) +(elsa-declare-defvar definition-prefixes mixed) +(elsa-declare-defvar menu-bar-separator (readonly (list (const "--")))) +(elsa-declare-defvar regexp-unmatchable (readonly (const "\\`a\\`"))) +(elsa-declare-defun declare-function (_fn _file &rest _args) (function (mixed mixed &rest mixed) mixed)) +(elsa-declare-defun noreturn (form) (function (mixed) mixed)) +(elsa-declare-defun 1value (form) (function (mixed) mixed)) +(elsa-declare-defun def-edebug-spec (symbol spec) (function (mixed mixed) mixed)) +(elsa-declare-defun def-edebug-elem-spec (name spec) (function (mixed mixed) mixed)) +(elsa-declare-defun lambda (&rest cdr) (function (&rest mixed) mixed)) +(elsa-declare-defun prog2 (form1 form2 &rest body) (function (mixed mixed &rest mixed) mixed)) +(elsa-declare-defun setq-default (&rest args) (function (&rest mixed) mixed)) +(elsa-declare-defun setq-local (&rest pairs) (function (&rest mixed) mixed)) +(elsa-declare-defun defvar-local (var val &optional docstring) (function (mixed mixed mixed) mixed)) +(elsa-declare-defun buffer-local-boundp (symbol buffer) (function (mixed mixed) mixed)) +(elsa-declare-defun push (newelt place) (function (mixed mixed) mixed)) +(elsa-declare-defun pop (place) (function (mixed) mixed)) +(elsa-declare-defun when (cond &rest body) (function (mixed &rest mixed) mixed)) +(elsa-declare-defun unless (cond &rest body) (function (mixed &rest mixed) mixed)) +(elsa-declare-defun subr-primitive-p (object) (function (mixed) bool)) +(elsa-declare-defun xor (cond1 cond2) (function (mixed mixed) mixed)) +(elsa-declare-defun dolist (spec &rest body) (function (mixed &rest mixed) mixed)) +(elsa-declare-defun dotimes (spec &rest body) (function (mixed &rest mixed) mixed)) +(elsa-declare-defun declare (&rest _specs) (function (&rest mixed) mixed)) +(elsa-declare-defun ignore-errors (&rest body) (function (&rest mixed) mixed)) +(elsa-declare-defun ignore-error (condition &rest body) (function (mixed &rest mixed) mixed)) +(elsa-declare-defun gensym (&optional prefix) (function (mixed) symbol)) +(elsa-declare-defun ignore (&rest _arguments) (function (&rest mixed) nil)) +(elsa-declare-defun always (&rest _arguments) (function (&rest mixed) t)) +(elsa-declare-defun error (&rest args) (function (&rest mixed) mixed)) +(elsa-declare-defun user-error (format &rest args) (function (mixed &rest mixed) mixed)) +(elsa-declare-defun define-error (name message &optional parent) (function (mixed mixed mixed) mixed)) +(elsa-declare-defun frame-configuration-p (object) (function (mixed) bool)) +(elsa-declare-defun apply-partially (fun &rest args) (function (mixed &rest mixed) (function (mixed mixed) mixed))) +(elsa-declare-defun zerop (number) (function (mixed) bool)) +(elsa-declare-defun fixnump (object) (function (mixed) bool)) +(elsa-declare-defun bignump (object) (function (mixed) bool)) +(elsa-declare-defun lsh (value count) (function (mixed mixed) int)) +(elsa-declare-defun internal--compiler-macro-cXXr (form x) (function (mixed mixed) mixed)) +(elsa-declare-defun caar (x) (function (mixed) mixed)) +(elsa-declare-defun cadr (x) (function (mixed) mixed)) +(elsa-declare-defun cdar (x) (function (mixed) mixed)) +(elsa-declare-defun cddr (x) (function (mixed) mixed)) +(elsa-declare-defun caaar (x) (function (mixed) mixed)) +(elsa-declare-defun caadr (x) (function (mixed) mixed)) +(elsa-declare-defun cadar (x) (function (mixed) mixed)) +(elsa-declare-defun caddr (x) (function (mixed) mixed)) +(elsa-declare-defun cdaar (x) (function (mixed) mixed)) +(elsa-declare-defun cdadr (x) (function (mixed) mixed)) +(elsa-declare-defun cddar (x) (function (mixed) mixed)) +(elsa-declare-defun cdddr (x) (function (mixed) mixed)) +(elsa-declare-defun caaaar (x) (function (mixed) mixed)) +(elsa-declare-defun caaadr (x) (function (mixed) mixed)) +(elsa-declare-defun caadar (x) (function (mixed) mixed)) +(elsa-declare-defun caaddr (x) (function (mixed) mixed)) +(elsa-declare-defun cadaar (x) (function (mixed) mixed)) +(elsa-declare-defun cadadr (x) (function (mixed) mixed)) +(elsa-declare-defun caddar (x) (function (mixed) mixed)) +(elsa-declare-defun cadddr (x) (function (mixed) mixed)) +(elsa-declare-defun cdaaar (x) (function (mixed) mixed)) +(elsa-declare-defun cdaadr (x) (function (mixed) mixed)) +(elsa-declare-defun cdadar (x) (function (mixed) mixed)) +(elsa-declare-defun cdaddr (x) (function (mixed) mixed)) +(elsa-declare-defun cddaar (x) (function (mixed) mixed)) +(elsa-declare-defun cddadr (x) (function (mixed) mixed)) +(elsa-declare-defun cdddar (x) (function (mixed) mixed)) +(elsa-declare-defun cddddr (x) (function (mixed) mixed)) +(elsa-declare-defun last (list &optional n) (function (mixed mixed) mixed)) +(elsa-declare-defun butlast (list &optional n) (function (mixed mixed) mixed)) +(elsa-declare-defun nbutlast (list &optional n) (function (mixed mixed) mixed)) +(elsa-declare-defun delete-dups (list) (function (mixed) mixed)) +(elsa-declare-defun delete-consecutive-dups (list &optional circular) (function (mixed mixed) mixed)) +(elsa-declare-defun number-sequence (from &optional to inc) (function (mixed mixed mixed) mixed)) +(elsa-declare-defun copy-tree (tree &optional vecp) (function (mixed mixed) mixed)) +(elsa-declare-defun assoc-default (key alist &optional test default) (function (mixed mixed mixed mixed) nil)) +(elsa-declare-defun member-ignore-case (elt list) (function (mixed mixed) mixed)) +(elsa-declare-defun assoc-delete-all (key alist &optional test) (function (mixed mixed mixed) mixed)) +(elsa-declare-defun assq-delete-all (key alist) (function (mixed mixed) mixed)) +(elsa-declare-defun rassq-delete-all (value alist) (function (mixed mixed) mixed)) +(elsa-declare-defun alist-get (key alist &optional default remove testfn) (function (mixed mixed mixed mixed mixed) mixed)) +(elsa-declare-defun remove (elt seq) (function (mixed mixed) mixed)) +(elsa-declare-defun remq (elt list) (function (mixed mixed) mixed)) +(elsa-declare-defun kbd (keys) (function (mixed) mixed)) +(elsa-declare-defun undefined nil (function nil unbound)) +(elsa-declare-defun suppress-keymap (map &optional nodigits) (function (mixed mixed) mixed)) +(elsa-declare-defun make-composed-keymap (maps &optional parent) (function (mixed mixed) (cons (const keymap) (list mixed)))) +(elsa-declare-defun define-key-after (keymap key definition &optional after) (function (mixed mixed mixed mixed) mixed)) +(elsa-declare-defun define-prefix-command (command &optional mapvar name) (function (mixed mixed mixed) mixed)) +(elsa-declare-defun map-keymap-sorted #'keymap (function (mixed mixed) mixed)) +(elsa-declare-defun keymap--menu-item-binding (val) (function (mixed) mixed)) +(elsa-declare-defun keymap--menu-item-with-binding (item binding) (function (mixed mixed) mixed)) +(elsa-declare-defun keymap--merge-bindings (val1 val2) (function (mixed mixed) mixed)) +(elsa-declare-defun keymap-canonicalize (map) (function (mixed) mixed)) +(elsa-declare-defun keyboard-translate (from to) (function (mixed mixed) mixed)) +(elsa-declare-defun global-set-key (key command) (function (mixed mixed) mixed)) +(elsa-declare-defun local-set-key (key command) (function (mixed mixed) mixed)) +(elsa-declare-defun global-unset-key (key) (function (mixed) mixed)) +(elsa-declare-defun local-unset-key (key) (function (mixed) nil)) +(elsa-declare-defun local-key-binding (keys &optional accept-default) (function (mixed mixed) mixed)) +(elsa-declare-defun global-key-binding (keys &optional accept-default) (function (mixed mixed) mixed)) +(elsa-declare-defun substitute-key-definition (olddef newdef keymap &optional oldmap prefix) (function (mixed mixed mixed mixed mixed) mixed)) +(elsa-declare-defun substitute-key-definition-key (defn olddef newdef prefix keymap) (function (mixed mixed mixed mixed mixed) mixed)) +(elsa-declare-defun listify-key-sequence (key) (function (mixed) mixed)) +(elsa-declare-defun eventp (object) (function (mixed) (is int))) +(elsa-declare-defun event-modifiers (event) (function (mixed) mixed)) +(elsa-declare-defun event-basic-type (event) (function (mixed) mixed)) +(elsa-declare-defun mouse-movement-p (object) (function (mixed) bool)) +(elsa-declare-defun mouse-event-p (object) (function (mixed) (list mixed))) +(elsa-declare-defun event-start (event) (function (mixed) (diff mixed nil))) +(elsa-declare-defun event-end (event) (function (mixed) (diff mixed nil))) +(elsa-declare-defun event-click-count (event) (function (mixed) mixed)) +(elsa-declare-defun event-line-count (event) (function (mixed) mixed)) +(elsa-declare-defun posnp (obj) (function (mixed) (is int))) +(elsa-declare-defun posn-window (position) (function (mixed) mixed)) +(elsa-declare-defun posn-area (position) (function (mixed) symbol)) +(elsa-declare-defun posn-point (position) (function (mixed) mixed)) +(elsa-declare-defun posn-set-point (position) (function (mixed) (or int nil))) +(elsa-declare-defun posn-x-y (position) (function (mixed) mixed)) +(elsa-declare-defun posn-col-row (position) (function (mixed) mixed)) +(elsa-declare-defun posn-actual-col-row (position) (function (mixed) mixed)) +(elsa-declare-defun posn-timestamp (position) (function (mixed) mixed)) +(elsa-declare-defun posn-string (position) (function (mixed) (or (cons mixed mixed) nil))) +(elsa-declare-defun posn-image (position) (function (mixed) mixed)) +(elsa-declare-defun posn-object (position) (function (mixed) mixed)) +(elsa-declare-defun posn-object-x-y (position) (function (mixed) mixed)) +(elsa-declare-defun posn-object-width-height (position) (function (mixed) mixed)) +(elsa-declare-defun values--store-value (value) (function (mixed) mixed)) +(elsa-declare-defun log10 (x) (function (mixed) mixed)) +(elsa-declare-defun add-hook (hook function &optional depth local) (function (mixed mixed mixed mixed) mixed)) +(elsa-declare-defun remove-hook (hook function &optional local) (function (mixed mixed mixed) mixed)) +(elsa-declare-defun letrec (binders &rest body) (function (mixed &rest mixed) mixed)) +(elsa-declare-defun dlet (binders &rest body) (function (mixed &rest mixed) mixed)) +(elsa-declare-defun with-wrapper-hook (hook args &rest body) (function (mixed mixed &rest mixed) mixed)) +(elsa-declare-defun subr--with-wrapper-hook-no-warnings (hook args &rest body) (function (mixed mixed &rest mixed) mixed)) +(elsa-declare-defun add-to-list (list-var element &optional append compare-fn) (function (mixed mixed mixed mixed) mixed)) +(elsa-declare-defun add-to-ordered-list (list-var element &optional order) (function (mixed mixed mixed) mixed)) +(elsa-declare-defun add-to-history (history-var newelt &optional maxelt keep-all) (function (mixed mixed mixed mixed) mixed)) +(elsa-declare-defun run-mode-hooks (&rest hooks) (function (&rest mixed) mixed)) +(elsa-declare-defun delay-mode-hooks (&rest body) (function (&rest mixed) mixed)) +(elsa-declare-defun provided-mode-derived-p (mode &rest modes) (function (mixed &rest mixed) mixed)) +(elsa-declare-defun derived-mode-p (&rest modes) (function (&rest mixed) mixed)) +(elsa-declare-defun major-mode-suspend nil (function nil mixed)) +(elsa-declare-defun major-mode-restore (&optional avoided-modes) (function (mixed) mixed)) +(elsa-declare-defun add-minor-mode (toggle name &optional keymap after toggle-fun) (function (mixed mixed mixed mixed mixed) mixed)) +(elsa-declare-defun autoloadp (object) (function (mixed) bool)) +(elsa-declare-defun define-symbol-prop (symbol prop val) (function (mixed mixed mixed) mixed)) +(elsa-declare-defun symbol-file (symbol &optional type) (function (mixed mixed) mixed)) +(elsa-declare-defun locate-library (library &optional nosuffix path interactive-call) (function (mixed mixed mixed mixed) mixed)) +(elsa-declare-defun start-process (name buffer program &rest program-args) (function (mixed mixed mixed &rest mixed) mixed)) +(elsa-declare-defun process-lines-handling-status (program status-handler &rest args) (function (mixed mixed &rest mixed) mixed)) +(elsa-declare-defun process-lines (program &rest args) (function (mixed &rest mixed) mixed)) +(elsa-declare-defun process-lines-ignore-status (program &rest args) (function (mixed &rest mixed) mixed)) +(elsa-declare-defun process-live-p (process) (function (mixed) (list mixed))) +(elsa-declare-defun process-kill-buffer-query-function nil (function nil bool)) +(elsa-declare-defun process-get (process propname) (function (mixed mixed) mixed)) +(elsa-declare-defun process-put (process propname value) (function (mixed mixed mixed) (list mixed))) +(elsa-declare-defun memory-limit nil (function nil (diff mixed nil))) +(elsa-declare-defun read-key (&optional prompt disable-fallbacks) (function (mixed mixed) mixed)) +(elsa-declare-defun read--potential-mouse-event nil (function nil mixed)) +(elsa-declare-defun read-password--hide-password nil (function nil mixed)) +(elsa-declare-defun read-passwd (prompt &optional confirm default) (function (mixed mixed mixed) mixed)) +(elsa-declare-defun read-number (prompt &optional default hist) (function (mixed mixed mixed) mixed)) +(elsa-declare-defun read-char-choice (prompt chars &optional inhibit-keyboard-quit) (function (mixed mixed mixed) mixed)) +(elsa-declare-defun read-char-choice-with-read-key (prompt chars &optional inhibit-keyboard-quit) (function (mixed mixed mixed) mixed)) +(elsa-declare-defun sit-for (seconds &optional nodisp obsolete) (function (mixed mixed mixed) mixed)) +(elsa-declare-defun goto-char--read-natnum-interactive (prompt) (function (mixed) (mixed))) +(elsa-declare-defun read-char-from-minibuffer-insert-char nil (function nil mixed)) +(elsa-declare-defun read-char-from-minibuffer-insert-other nil (function nil mixed)) +(elsa-declare-defun read-char-from-minibuffer (prompt &optional chars history) (function (mixed mixed mixed) mixed)) +(elsa-declare-defun y-or-n-p-insert-y nil (function nil mixed)) +(elsa-declare-defun y-or-n-p-insert-n nil (function nil mixed)) +(elsa-declare-defun y-or-n-p-insert-other nil (function nil mixed)) +(elsa-declare-defun y-or-n-p (prompt) (function (mixed) nil)) +(elsa-declare-defun atomic-change-group (&rest body) (function (&rest mixed) mixed)) +(elsa-declare-defun prepare-change-group (&optional buffer) (function (mixed) ((cons (diff mixed nil) unbound)))) +(elsa-declare-defun activate-change-group (handle) (function (mixed) (or (cons (cons mixed mixed) unbound) nil))) +(elsa-declare-defun accept-change-group (handle) (function (mixed) bool)) +(elsa-declare-defun cancel-change-group (handle) (function (mixed) mixed)) +(elsa-declare-defun momentary-string-display (string pos &optional exit-char message) (function (mixed mixed mixed mixed) mixed)) +(elsa-declare-defun copy-overlay (o) (function (mixed) mixed)) +(elsa-declare-defun remove-overlays (&optional beg end name val) (function (mixed mixed mixed mixed) mixed)) +(elsa-declare-defun buffer-narrowed-p nil (function nil bool)) +(elsa-declare-defun find-tag-default-bounds nil (function nil (or nil (cons int int)))) +(elsa-declare-defun find-tag-default nil (function nil (or string nil))) +(elsa-declare-defun find-tag-default-as-regexp nil (function nil string)) +(elsa-declare-defun find-tag-default-as-symbol-regexp nil (function nil string)) +(elsa-declare-defun play-sound (sound) (function (mixed) mixed)) +(elsa-declare-defun shell-quote-argument (argument) (function (mixed) mixed)) +(elsa-declare-defun string-to-list (string) (function (mixed) (list mixed))) +(elsa-declare-defun string-to-vector (string) (function (mixed) (vector mixed))) +(elsa-declare-defun string-or-null-p (object) (function (mixed) (is string))) +(elsa-declare-defun booleanp (object) (function (mixed) bool)) +(elsa-declare-defun special-form-p (object) (function (mixed) bool)) +(elsa-declare-defun macrop (object) (function (mixed) (or bool (list mixed)))) +(elsa-declare-defun field-at-pos (pos) (function (mixed) mixed)) +(elsa-declare-defun sha1 (object &optional start end binary) (function (mixed mixed mixed mixed) string)) +(elsa-declare-defun function-get (f prop &optional autoload) (function (mixed mixed mixed) nil)) +(elsa-declare-defun remove-yank-excluded-properties (start end) (function (mixed mixed) mixed)) +(elsa-declare-defun insert-for-yank (string) (function (mixed) mixed)) +(elsa-declare-defun insert-for-yank-1 (string) (function (mixed) mixed)) +(elsa-declare-defun insert-buffer-substring-no-properties (buffer &optional start end) (function (mixed mixed mixed) mixed)) +(elsa-declare-defun insert-buffer-substring-as-yank (buffer &optional start end) (function (mixed mixed mixed) mixed)) +(elsa-declare-defun insert-into-buffer (buffer &optional start end) (function (mixed mixed mixed) nil)) +(elsa-declare-defun replace-string-in-region (string replacement &optional start end) (function (mixed mixed mixed mixed) (or number nil))) +(elsa-declare-defun replace-regexp-in-region (regexp replacement &optional start end) (function (mixed mixed mixed mixed) (or number nil))) +(elsa-declare-defun yank-handle-font-lock-face-property (face start end) (function (mixed mixed mixed) mixed)) +(elsa-declare-defun yank-handle-category-property (category start end) (function (mixed mixed mixed) mixed)) +(elsa-declare-defun start-process-shell-command (name buffer command) (function (mixed mixed mixed) mixed)) +(elsa-declare-defun start-file-process-shell-command (name buffer command) (function (mixed mixed mixed) mixed)) +(elsa-declare-defun call-process-shell-command (command &optional infile buffer display &rest args) (function (mixed mixed mixed mixed &rest mixed) (or nil int string))) +(elsa-declare-defun process-file-shell-command (command &optional infile buffer display &rest args) (function (mixed mixed mixed mixed &rest mixed) mixed)) +(elsa-declare-defun call-shell-region (start end command &optional delete buffer) (function (mixed mixed mixed mixed mixed) (or nil int string))) +(elsa-declare-defun track-mouse (&rest body) (function (&rest mixed) mixed)) +(elsa-declare-defun with-current-buffer (buffer-or-name &rest body) (function (mixed &rest mixed) mixed)) +(elsa-declare-defun internal--before-with-selected-window (window) (function (mixed) (mixed mixed mixed mixed))) +(elsa-declare-defun internal--after-with-selected-window (state) (function (mixed) mixed)) +(elsa-declare-defun generate-new-buffer (name &optional inhibit-buffer-hooks) (function (mixed mixed) buffer)) +(elsa-declare-defun with-selected-window (window &rest body) (function (mixed &rest mixed) mixed)) +(elsa-declare-defun with-selected-frame (frame &rest body) (function (mixed &rest mixed) mixed)) +(elsa-declare-defun save-window-excursion (&rest body) (function (&rest mixed) mixed)) +(elsa-declare-defun internal-temp-output-buffer-show (buffer) (function (mixed) nil)) +(elsa-declare-defun with-output-to-temp-buffer (bufname &rest body) (function (mixed &rest mixed) mixed)) +(elsa-declare-defun with-temp-file (file &rest body) (function (mixed &rest mixed) mixed)) +(elsa-declare-defun with-temp-message (message &rest body) (function (mixed &rest mixed) mixed)) +(elsa-declare-defun with-temp-buffer (&rest body) (function (&rest mixed) mixed)) +(elsa-declare-defun with-silent-modifications (&rest body) (function (&rest mixed) mixed)) +(elsa-declare-defun with-output-to-string (&rest body) (function (&rest mixed) mixed)) +(elsa-declare-defun with-local-quit (&rest body) (function (&rest mixed) mixed)) +(elsa-declare-defun while-no-input (&rest body) (function (&rest mixed) mixed)) +(elsa-declare-defun condition-case-unless-debug (var bodyform &rest handlers) (function (mixed mixed &rest mixed) mixed)) +(elsa-declare-defun with-demoted-errors (format &rest body) (function (mixed &rest mixed) mixed)) +(elsa-declare-defun combine-after-change-calls (&rest body) (function (&rest mixed) mixed)) +(elsa-declare-defun combine-change-calls-1 (beg end body) (function (mixed mixed mixed) nil)) +(elsa-declare-defun combine-change-calls (beg end &rest body) (function (mixed mixed &rest mixed) mixed)) +(elsa-declare-defun undo--wrap-and-run-primitive-undo (beg end list) (function (mixed mixed mixed) nil)) +(elsa-declare-defun with-case-table (table &rest body) (function (mixed &rest mixed) mixed)) +(elsa-declare-defun with-file-modes (modes &rest body) (function (mixed &rest mixed) mixed)) +(elsa-declare-defun with-existing-directory (&rest body) (function (&rest mixed) mixed)) +(elsa-declare-defun save-match-data (&rest body) (function (&rest mixed) mixed)) +(elsa-declare-defun match-string (num &optional string) (function (mixed mixed) (or string nil))) +(elsa-declare-defun match-string-no-properties (num &optional string) (function (mixed mixed) (or string nil))) +(elsa-declare-defun match-substitute-replacement (replacement &optional fixedcase literal string subexp) (function (mixed mixed mixed mixed mixed) nil)) +(elsa-declare-defun looking-back (regexp &optional limit greedy) (function (mixed mixed mixed) bool)) +(elsa-declare-defun looking-at-p (regexp) (function (mixed) bool)) +(elsa-declare-defun string-match-p (regexp string &optional start) (function (mixed mixed mixed) (or int nil))) +(elsa-declare-defun subregexp-context-p (regexp pos &optional start) (function (mixed mixed mixed) bool)) +(elsa-declare-defun split-string (string &optional separators omit-nulls trim) (function (mixed mixed mixed mixed) mixed)) +(elsa-declare-defun combine-and-quote-strings (strings &optional separator) (function (mixed mixed) string)) +(elsa-declare-defun split-string-and-unquote (string &optional separator) (function (mixed mixed) mixed)) +(elsa-declare-defun subst-char-in-string (fromchar tochar string &optional inplace) (function (mixed mixed mixed mixed) mixed)) +(elsa-declare-defun string-replace (from-string to-string in-string) (function (mixed mixed mixed) mixed)) +(elsa-declare-defun replace-regexp-in-string (regexp rep string &optional fixedcase literal subexp start) (function (mixed mixed mixed mixed mixed mixed mixed) mixed)) +(elsa-declare-defun string-prefix-p (prefix string &optional ignore-case) (function (mixed mixed mixed) bool)) +(elsa-declare-defun string-suffix-p (suffix string &optional ignore-case) (function (mixed mixed mixed) bool)) +(elsa-declare-defun bidi-string-mark-left-to-right (str) (function (mixed) mixed)) +(elsa-declare-defun string-greaterp (string1 string2) (function (mixed mixed) bool)) +(elsa-declare-defun load-history-regexp (file) (function (mixed) string)) +(elsa-declare-defun load-history-filename-element (file-regexp) (function (mixed) mixed)) +(elsa-declare-defun eval-after-load (file form) (function (mixed mixed) mixed)) +(elsa-declare-defun with-eval-after-load (file &rest body) (function (mixed &rest mixed) mixed)) +(elsa-declare-defun do-after-load-evaluation (abs-file) (function (mixed) mixed)) +(elsa-declare-defun display-delayed-warnings nil (function nil nil)) +(elsa-declare-defun collapse-delayed-warnings nil (function nil mixed)) +(elsa-declare-defun delay-warning (type message &optional level buffer-name) (function (mixed mixed mixed mixed) (cons (mixed mixed mixed mixed) mixed))) +(elsa-declare-defun add-to-invisibility-spec (element) (function (mixed) (cons mixed (t)))) +(elsa-declare-defun remove-from-invisibility-spec (element) (function (mixed) mixed)) +(elsa-declare-defun with-syntax-table (table &rest body) (function (mixed &rest mixed) mixed)) +(elsa-declare-defun make-syntax-table (&optional oldtable) (function (mixed) mixed)) +(elsa-declare-defun syntax-after (pos) (function (mixed) mixed)) +(elsa-declare-defun syntax-class (syntax) (function (mixed) (or int nil))) +(elsa-declare-defun forward-word-strictly (&optional arg) (function (mixed) bool)) +(elsa-declare-defun backward-word-strictly (&optional arg) (function (mixed) bool)) +(elsa-declare-defun forward-whitespace (arg) (function (mixed) mixed)) +(elsa-declare-defun forward-symbol (arg) (function (mixed) mixed)) +(elsa-declare-defun forward-same-syntax (&optional arg) (function (mixed) mixed)) +(elsa-declare-defun text-clone--maintain (ol1 after beg end &optional _len) (function (mixed mixed mixed mixed mixed) mixed)) +(elsa-declare-defun text-clone-create (start end &optional spreadp syntax) (function (mixed mixed mixed mixed) mixed)) +(elsa-declare-defun define-mail-user-agent (symbol composefunc sendfunc &optional abortfunc hookvar) (function (mixed mixed mixed mixed mixed) mixed)) +(elsa-declare-defun backtrace-frames (&optional base) (function (mixed) mixed)) +(elsa-declare-defun backtrace-frame (nframes &optional base) (function (mixed mixed) mixed)) +(elsa-declare-defun called-interactively-p (&optional kind) (function (mixed) bool)) +(elsa-declare-defun interactive-p nil (function nil bool)) +(elsa-declare-defun internal-push-keymap (keymap symbol) (function (mixed mixed) mixed)) +(elsa-declare-defun internal-pop-keymap (keymap symbol) (function (mixed mixed) mixed)) +(elsa-declare-defun set-transient-map (map &optional keep-pred on-exit) (function (mixed mixed mixed) (function nil mixed))) +(elsa-declare-defun progress-reporter-update (reporter &optional value suffix) (function (mixed mixed mixed) mixed)) +(elsa-declare-defun make-progress-reporter (message &optional min-value max-value current-value min-change min-time) (function (mixed mixed mixed mixed mixed mixed) (cons (diff mixed nil) (vector mixed)))) +(elsa-declare-defun progress-reporter-force-update (reporter &optional value new-message suffix) (function (mixed mixed mixed mixed) mixed)) +(elsa-declare-defun progress-reporter-do-update (reporter value &optional suffix) (function (mixed mixed mixed) (or string nil))) +(elsa-declare-defun progress-reporter-done (reporter) (function (mixed) string)) +(elsa-declare-defun dotimes-with-progress-reporter (spec reporter-or-message &rest body) (function (mixed mixed &rest mixed) mixed)) +(elsa-declare-defun dolist-with-progress-reporter (spec reporter-or-message &rest body) (function (mixed mixed &rest mixed) mixed)) +(elsa-declare-defun version-to-list (ver) (function (mixed) mixed)) +(elsa-declare-defun version-list-< (l1 l2) (function (mixed mixed) bool)) +(elsa-declare-defun version-list-= (l1 l2) (function (mixed mixed) bool)) +(elsa-declare-defun version-list-<= (l1 l2) (function (mixed mixed) bool)) +(elsa-declare-defun version-list-not-zero (lst) (function (mixed) mixed)) +(elsa-declare-defun version< (v1 v2) (function (mixed mixed) bool)) +(elsa-declare-defun version<= (v1 v2) (function (mixed mixed) bool)) +(elsa-declare-defun version= (v1 v2) (function (mixed mixed) bool)) +(elsa-declare-defun package--description-file (dir) (function (mixed) string)) +(elsa-declare-defun with-mutex (mutex &rest body) (function (mixed &rest mixed) mixed)) +(elsa-declare-defun apropos-internal (regexp &optional predicate) (function (mixed mixed) mixed)) +(elsa-declare-defun register-definition-prefixes (file prefixes) (function (mixed mixed) mixed)) +(elsa-declare-defun unmsys--file-name (file) (function (mixed) mixed)) +(elsa-declare-defun flatten-tree (tree) (function (mixed) mixed)) +(elsa-declare-defun string-trim-left (string &optional regexp) (function (mixed mixed) mixed)) +(elsa-declare-defun string-trim-right (string &optional regexp) (function (mixed mixed) mixed)) +(elsa-declare-defun string-trim (string &optional trim-left trim-right) (function (mixed mixed mixed) mixed)) +(elsa-declare-defun run-hook-query-error-with-timeout (hook) (function (mixed) mixed)) +(elsa-declare-defun internal--fill-string-single-line (str) (function (mixed) mixed)) +(elsa-declare-defun internal--format-docstring-line (string &rest objects) (function (mixed &rest mixed) mixed)) +(elsa-declare-defun json-available-p nil (function nil mixed)) +(elsa-declare-defun ensure-list (object) (function (mixed) (list mixed))) diff --git a/test/jest/local.test.js b/test/jest/local.test.js index 8c3d505b..33f74494 100644 --- a/test/jest/local.test.js +++ b/test/jest/local.test.js @@ -4,8 +4,8 @@ // Notice, below we clone a random package (repo) that uses Eask as the // dependencies management tool. -const cmp = require('semver-compare'); -const { emacsVersion, TestContext } = require("./helpers"); +import cmp from 'semver-compare'; +import { emacsVersion, TestContext } from "./helpers.js"; describe("local", () => { const cwd = "./test/jest/local"; diff --git a/test/jest/local/Eask b/test/jest/local/Eask index 10dde27f..a4ace4bc 100644 --- a/test/jest/local/Eask +++ b/test/jest/local/Eask @@ -1,7 +1,7 @@ ;; -*- mode: eask; lexical-binding: t -*- (package "mini.pkg.1" - "12.12.13" + "13.13.14" "Minimal test package") (website-url "https://github.com/emacs-eask/cli/tree/master/test/fixtures/mini.pkg.1") diff --git a/test/jest/local/mini.pkg.1.el b/test/jest/local/mini.pkg.1.el index 8ca0c23c..a8927b01 100644 --- a/test/jest/local/mini.pkg.1.el +++ b/test/jest/local/mini.pkg.1.el @@ -5,7 +5,7 @@ ;; Author: Shen, Jen-Chieh ;; URL: https://github.com/emacs-eask/cli/tree/master/test/fixtures/mini.pkg.1 -;; Version: 12.12.13 +;; Version: 13.13.14 ;; Package-Requires: ((emacs "24.3") (s "1.12.0") (fringe-helper "1.0.1")) ;; Keywords: test local diff --git a/test/jest/options.test.js b/test/jest/options.test.js index e44181ce..66e9de06 100644 --- a/test/jest/options.test.js +++ b/test/jest/options.test.js @@ -1,4 +1,5 @@ -const { TestContext } = require("./helpers"); +import { EXIT_FAILURE } from "../../src/env.js"; +import { TestContext } from "./helpers.js"; describe("options", () => { const ctx = new TestContext("./test/jest/options"); diff --git a/test/jest/outdated-upgrade.test.js b/test/jest/outdated-upgrade.test.js index 6ca117c4..51150da5 100644 --- a/test/jest/outdated-upgrade.test.js +++ b/test/jest/outdated-upgrade.test.js @@ -1,4 +1,4 @@ -const { emacsVersion, TestContext } = require("./helpers"); +import { TestContext } from "./helpers.js"; describe("outdated and upgrade", () => { const ctx = new TestContext("./test/jest/outdated-upgrade"); diff --git a/test/jest/search.test.js b/test/jest/search.test.js index b1a158e9..a8ac1688 100644 --- a/test/jest/search.test.js +++ b/test/jest/search.test.js @@ -1,4 +1,4 @@ -const { TestContext } = require("./helpers"); +import { TestContext } from "./helpers.js"; describe("search", () => { const cwd = "./test/jest/search"; diff --git a/test/jest/test-buttercup.test.js b/test/jest/test-buttercup.test.js index 7b7293de..fbb1bf27 100644 --- a/test/jest/test-buttercup.test.js +++ b/test/jest/test-buttercup.test.js @@ -1,4 +1,4 @@ -const { TestContext } = require("./helpers"); +import { TestContext } from "./helpers.js"; describe("buttercup", () => { const ctx = new TestContext("./test/jest/buttercup"); diff --git a/test/jest/test-ecukes.test.js b/test/jest/test-ecukes.test.js index 4a525b2f..e133152d 100644 --- a/test/jest/test-ecukes.test.js +++ b/test/jest/test-ecukes.test.js @@ -1,4 +1,4 @@ -const { TestContext } = require("./helpers"); +import { TestContext } from "./helpers.js"; describe("test_ecukes", () => { const ctx = new TestContext("./test/jest/ecukes"); diff --git a/test/jest/test-ert-runner.test.js b/test/jest/test-ert-runner.test.js index c40486b0..78c45d19 100644 --- a/test/jest/test-ert-runner.test.js +++ b/test/jest/test-ert-runner.test.js @@ -1,4 +1,4 @@ -const { TestContext } = require("./helpers"); +import { TestContext } from "./helpers.js"; describe("test ert-runner", () => { const ctx = new TestContext("./test/jest/ert-runner"); diff --git a/test/jest/test-ert.test.js b/test/jest/test-ert.test.js index c44a8697..b404b488 100644 --- a/test/jest/test-ert.test.js +++ b/test/jest/test-ert.test.js @@ -1,4 +1,4 @@ -const { TestContext } = require("./helpers"); +import { TestContext } from "./helpers.js"; describe("test-ert", () => { const ctx = new TestContext("./test/jest/ert"); diff --git a/test/jest/upgrade-eask.test.js b/test/jest/upgrade-eask.test.js index 10c2b9a8..2a97e53a 100644 --- a/test/jest/upgrade-eask.test.js +++ b/test/jest/upgrade-eask.test.js @@ -1,4 +1,4 @@ -const { testUnsafe, TestContext } = require("./helpers"); +import { testUnsafe, TestContext } from "./helpers.js"; describe("upgrade-eask", () => { const ctx = new TestContext();