modpow with crt; crt; modAdd; modMultiply; phi

This commit is contained in:
Juanelas 2023-06-28 19:35:42 +02:00
parent e7d607a0d1
commit 7ae82f2c21
21 changed files with 768 additions and 275 deletions

View File

@ -33,7 +33,7 @@ jobs:
strategy: strategy:
matrix: matrix:
os: [ubuntu-latest, windows-latest, macos-latest] os: [ubuntu-latest, windows-latest, macos-latest]
node-version: [14.x, 16.x, 18.x] node-version: [16.x, 18.x, 20.x]
# When set to true, GitHub cancels all in-progress jobs if any matrix job fails. # When set to true, GitHub cancels all in-progress jobs if any matrix job fails.
fail-fast: false fail-fast: false
# The maximum number of jobs that can run simultaneously. Set to 1 if you can't run tests in parallel # The maximum number of jobs that can run simultaneously. Set to 1 if you can't run tests in parallel

4
.gitignore vendored
View File

@ -9,8 +9,7 @@ node_modules
# Output of 'npm pack' # Output of 'npm pack'
*.tgz *.tgz
# MYC output # Coverage
.nyc_output
coverage coverage
# Environment files # Environment files
@ -19,6 +18,7 @@ coverage
# Test temporal files # Test temporal files
.mocha-ts .mocha-ts
.tsconfig.json .tsconfig.json
.types
# docs temporal files # docs temporal files
.nojekyll .nojekyll

View File

@ -1,9 +1,14 @@
# Code examples
examples
# Build scripts # Build scripts
build build
# Test files # Test files
test test
__tests__
**/*.spec.ts **/*.spec.ts
test-vectors
# Logs # Logs
logs logs
@ -19,8 +24,7 @@ npm-debug.log*
# IntelliJ # IntelliJ
.idea .idea
# MYC output # Coverage
.nyc_output
coverage coverage
# GitHub # GitHub
@ -33,18 +37,26 @@ coverage
# tsconfig # tsconfig
tsconfig.json tsconfig.json
# SRC docs # SRC
src/docs src
# Environment files # Environment files
*.env *.env
*.env.*
# Test temporal files # Test temporal files
.mocha-ts .mocha-ts
.tsconfig.json .tsconfig.json
.types
# docs temporal files # docs temporal files
.nojekyll .nojekyll
# Examples # code of conduct
examples CODE_OF_CONDUCT.md
# TODO
TO-DO.txt
# benchmark
benchmark

View File

@ -58,6 +58,7 @@ async function typedoc () {
// typedoc options here // typedoc options here
tsconfig: tempTsConfigPath, tsconfig: tempTsConfigPath,
entryPoints: ['src/ts/index.ts'], entryPoints: ['src/ts/index.ts'],
disableSources: true,
plugin: ['typedoc-plugin-markdown'], plugin: ['typedoc-plugin-markdown'],
includeVersion: true, includeVersion: true,
entryDocument: 'API.md', entryDocument: 'API.md',

View File

@ -21,6 +21,7 @@ const tsConfig = parseJsonSourceFileConfigFileContent(configFile, sys, dirname(t
export const compile = (outDir) => { export const compile = (outDir) => {
const compilerOptions = { const compilerOptions = {
...tsConfig.options, ...tsConfig.options,
removeComments: false,
declaration: true, declaration: true,
declarationMap: true, declarationMap: true,
emitDeclarationOnly: true, emitDeclarationOnly: true,

View File

@ -45,15 +45,10 @@ if (existsSync(input) !== true) throw new Error('The entry point should be index
const tsPluginOptions = { const tsPluginOptions = {
tsconfig: tsConfigPath, tsconfig: tsConfigPath,
outDir: undefined, outDir: undefined,
include: ['src/ts/**/*', 'build/typings/is-browser.d.ts'], include: ['src/ts/**/*', 'build/typings/**/*.d.ts'],
exclude: ['src/**/*.spec.ts'] exclude: ['src/**/*.spec.ts']
} }
const sourcemapOutputOptions = {
sourcemap: 'inline',
sourcemapExcludeSources: true
}
function compileDts (outDir) { function compileDts (outDir) {
return { return {
name: 'compile-dts', name: 'compile-dts',
@ -90,7 +85,6 @@ export default [
output: [ output: [
{ {
file: join(rootDir, pkgJson.exports['.'].default.default), file: join(rootDir, pkgJson.exports['.'].default.default),
...sourcemapOutputOptions,
format: 'es', format: 'es',
plugins: [ plugins: [
terser() terser()
@ -100,7 +94,9 @@ export default [
plugins: [ plugins: [
replace({ replace({
IS_BROWSER: true, IS_BROWSER: true,
environment: 'browser',
_MODULE_TYPE: "'ESM'", _MODULE_TYPE: "'ESM'",
_NPM_PKG_VERSION: `'${process.env.npm_package_version}'` ?? "'0.0.1'",
preventAssignment: true preventAssignment: true
}), }),
rollupPluginTs(tsPluginOptions), rollupPluginTs(tsPluginOptions),
@ -142,7 +138,9 @@ export default [
plugins: [ plugins: [
replace({ replace({
IS_BROWSER: true, IS_BROWSER: true,
environment: 'browser',
_MODULE_TYPE: "'BUNDLE'", _MODULE_TYPE: "'BUNDLE'",
_NPM_PKG_VERSION: `'${process.env.npm_package_version}'` ?? "'0.0.1'",
preventAssignment: true preventAssignment: true
}), }),
rollupPluginTs({ rollupPluginTs({
@ -159,12 +157,11 @@ export default [
output: [ output: [
{ {
file: join(rootDir, pkgJson.exports['.'].node.require.default), file: join(rootDir, pkgJson.exports['.'].node.require.default),
...sourcemapOutputOptions,
format: 'cjs', format: 'cjs',
exports: 'auto', exports: 'auto',
plugins: [ interop: 'auto',
terser() dynamicImportInCjs: false,
] plugins: [terser()]
} }
], ],
plugins: [ plugins: [
@ -175,7 +172,9 @@ export default [
}), }),
replace({ replace({
IS_BROWSER: false, IS_BROWSER: false,
environment: 'nodejs',
_MODULE_TYPE: "'CJS'", _MODULE_TYPE: "'CJS'",
_NPM_PKG_VERSION: `'${process.env.npm_package_version}'` ?? "'0.0.1'",
preventAssignment: true preventAssignment: true
}), }),
rollupPluginTs(tsPluginOptions), rollupPluginTs(tsPluginOptions),
@ -195,17 +194,16 @@ export default [
output: [ output: [
{ {
file: join(rootDir, pkgJson.exports['.'].node.import.default), file: join(rootDir, pkgJson.exports['.'].node.import.default),
...sourcemapOutputOptions,
format: 'es', format: 'es',
plugins: [ plugins: [terser()]
terser()
]
} }
], ],
plugins: [ plugins: [
replace({ replace({
IS_BROWSER: false, IS_BROWSER: false,
environment: 'nodejs',
_MODULE_TYPE: "'ESM'", _MODULE_TYPE: "'ESM'",
_NPM_PKG_VERSION: `'${process.env.npm_package_version}'` ?? "'0.0.1'",
__filename: 'fileURLToPath(import.meta.url)', __filename: 'fileURLToPath(import.meta.url)',
__dirname: 'fileURLToPath(new URL(\'.\', import.meta.url))', __dirname: 'fileURLToPath(new URL(\'.\', import.meta.url))',
preventAssignment: true preventAssignment: true

View File

@ -61,7 +61,7 @@ const browserTests = async (
await watchDog.catch(async (reason) => { await watchDog.catch(async (reason) => {
console.error(reason) console.error(reason)
}) })
if (puppeteerOptions.headless === true) { if (puppeteerOptions.headless === 'new') {
await close() await close()
} }
}).catch(async (reason) => { }).catch(async (reason) => {
@ -102,9 +102,9 @@ const opts = {
// puppeteer options // puppeteer options
puppeteerOptions: { puppeteerOptions: {
headless: false, headless: false,
devtools: true devtools: true,
// slowMo: 100, // slowMo: 100,
// timeout: 10000 timeout: 0
}, },
logWarnings: false, // log warnings in Node console (usually not needed) logWarnings: false, // log warnings in Node console (usually not needed)
keepServerRunning: false, // keep server running until manually closed with ctrl-c. In combination with puppeteerOptions.headless (or just connecting any browser to the test page) allows debugging in browser keepServerRunning: false, // keep server running until manually closed with ctrl-c. In combination with puppeteerOptions.headless (or just connecting any browser to the test page) allows debugging in browser
@ -113,7 +113,7 @@ const opts = {
const args = process.argv.slice(2) const args = process.argv.slice(2)
if (args[0] === 'headless') { if (args[0] === 'headless') {
opts.puppeteerOptions.headless = true opts.puppeteerOptions.headless = 'new'
args.shift() args.shift()
} }

View File

@ -51,7 +51,7 @@ const tsBundleOptions = {
tsconfig: path.join(rootDir, 'tsconfig.json'), tsconfig: path.join(rootDir, 'tsconfig.json'),
outDir: undefined, // ignore outDir in tsconfig.json outDir: undefined, // ignore outDir in tsconfig.json
sourceMap: false sourceMap: false
// include: ['build/typings/is-browser.d.ts'] // include: ['src/ts/**/*', 'build/typings/**/*.d.ts']
} }
async function buildTests (testFiles) { async function buildTests (testFiles) {
@ -63,6 +63,7 @@ async function buildTests (testFiles) {
replace({ replace({
IS_BROWSER: true, IS_BROWSER: true,
_MODULE_TYPE: "'ESM'", _MODULE_TYPE: "'ESM'",
_NPM_PKG_VERSION: `'${process.env.npm_package_version}'` ?? "'0.0.1'",
preventAssignment: true preventAssignment: true
}), }),
typescriptPlugin(tsBundleOptions), typescriptPlugin(tsBundleOptions),
@ -202,7 +203,7 @@ function _getEnvVarsReplacements (testsCode) {
} }
} }
if (missingEnvVars.length > 0) { if (missingEnvVars.length > 0) {
console.warn('The folloinwg environment variables are missing in your .env file and will be replaced with "undefined": ' + [...(new Set(missingEnvVars)).values()].join(', ')) console.warn('The following environment variables are missing in your .env file and will be replaced with "undefined": ' + [...(new Set(missingEnvVars)).values()].join(', '))
} }
return replacements return replacements
} }

View File

@ -42,6 +42,9 @@ class RollupBuilder extends Builder {
rollupOptions.output = rollupOptions.output[0] rollupOptions.output = rollupOptions.output[0]
} }
rollupOptions.output[0].sourcemap = 'inline'
rollupOptions.output[0].sourcemapExcludeSources = true
this.builder = new RollupBundler({ rollupOptions, watch: this.watch, watchedModule: this.watchedModule }) this.builder = new RollupBundler({ rollupOptions, watch: this.watch, watchedModule: this.watchedModule })
this.builder.on('event', event => { this.builder.on('event', event => {
@ -115,11 +118,12 @@ class RollupBundler extends EventEmitter {
this.emit('event', event) this.emit('event', event)
}) })
} else { } else {
if (!fs.existsSync(path.join(rootDir, this.watchedModule))) {
await this._bundle() await this._bundle()
} else { // if (!fs.existsSync(path.join(rootDir, this.watchedModule))) {
this.emit('event', { code: 'END', noBuild: true }) // await this._bundle()
} // } else {
// this.emit('event', { code: 'END', noBuild: true })
// }
} }
} }

View File

@ -1,2 +1,3 @@
declare const IS_BROWSER: boolean declare const IS_BROWSER: boolean
declare const _MODULE_TYPE: string declare const _MODULE_TYPE: string
declare const _NPM_PKG_VERSION: string

16
dist/bundle.esm.js vendored
View File

@ -1,4 +1,4 @@
function n(n){return n>=0?n:-n}function t(n){if("number"==typeof n&&(n=BigInt(n)),1n===n)return 1;let t=1;do{t++;}while((n>>=1n)>1n);return t}function r(n,t){if("number"==typeof n&&(n=BigInt(n)),"number"==typeof t&&(t=BigInt(t)),n<=0n||t<=0n)throw new RangeError("a and b MUST be > 0");let r=0n,e=1n,o=1n,u=0n;for(;0n!==n;){const i=t/n,f=t%n,g=r-o*i,b=e-u*i;t=n,n=f,r=o,e=u,o=g,u=b;}return {g:t,x:r,y:e}}function e(t,r){let e="number"==typeof t?BigInt(n(t)):n(t),o="number"==typeof r?BigInt(n(r)):n(r);if(0n===e)return o;if(0n===o)return e;let u=0n;for(;0n===(1n&(e|o));)e>>=1n,o>>=1n,u++;for(;0n===(1n&e);)e>>=1n;do{for(;0n===(1n&o);)o>>=1n;if(e>o){const n=e;e=o,o=n;}o-=e;}while(0n!==o);return e<<u}function o(t,r){return "number"==typeof t&&(t=BigInt(t)),"number"==typeof r&&(r=BigInt(r)),0n===t&&0n===r?BigInt(0):n(t/e(t,r)*r)}function u(n,t){return n>=t?n:t}function i(n,t){return n>=t?t:n}function f(n,t){if("number"==typeof n&&(n=BigInt(n)),"number"==typeof t&&(t=BigInt(t)),t<=0n)throw new RangeError("n must be > 0");const r=n%t;return r<0n?r+t:r}function g(n,t){const e=r(f(n,t),t);if(1n!==e.g)throw new RangeError(`${n.toString()} does not have inverse modulo ${t.toString()}`);return f(e.x,t)}function b(t,r,e){if("number"==typeof t&&(t=BigInt(t)),"number"==typeof r&&(r=BigInt(r)),"number"==typeof e&&(e=BigInt(e)),e<=0n)throw new RangeError("n must be > 0");if(1n===e)return 0n;if(t=f(t,e),r<0n)return g(b(t,n(r),e),e);let o=1n;for(;r>0;)r%2n===1n&&(o=o*t%e),r/=2n,t=t**2n%e;return o} function n(n){return n>=0?n:-n}function t(n){if("number"==typeof n&&(n=BigInt(n)),1n===n)return 1;let t=1;do{t++;}while((n>>=1n)>1n);return t}function r(n,t){if("number"==typeof n&&(n=BigInt(n)),"number"==typeof t&&(t=BigInt(t)),n<=0n||t<=0n)throw new RangeError("a and b MUST be > 0");let r=0n,e=1n,o=1n,i=0n;for(;0n!==n;){const u=t/n,f=t%n,g=r-o*u,c=e-i*u;t=n,n=f,r=o,e=i,o=g,i=c;}return {g:t,x:r,y:e}}function e(n,t){if("number"==typeof n&&(n=BigInt(n)),"number"==typeof t&&(t=BigInt(t)),t<=0n)throw new RangeError("n must be > 0");const r=n%t;return r<0n?r+t:r}function o(n,t){const o=r(e(n,t),t);if(1n!==o.g)throw new RangeError(`${n.toString()} does not have inverse modulo ${t.toString()}`);return e(o.x,t)}function i(n,t,r){if(n.length!==t.length)throw new RangeError("The remainders and modulos arrays should have the same length");const i=r??t.reduce(((n,t)=>n*t),1n);return t.reduce(((t,r,u)=>{const f=i/r;return e(t+f*o(f,r)%i*n[u]%i,i)}),0n)}function u(t,r){let e="number"==typeof t?BigInt(n(t)):n(t),o="number"==typeof r?BigInt(n(r)):n(r);if(0n===e)return o;if(0n===o)return e;let i=0n;for(;0n===(1n&(e|o));)e>>=1n,o>>=1n,i++;for(;0n===(1n&e);)e>>=1n;do{for(;0n===(1n&o);)o>>=1n;if(e>o){const n=e;e=o,o=n;}o-=e;}while(0n!==o);return e<<i}function f(t,r){return "number"==typeof t&&(t=BigInt(t)),"number"==typeof r&&(r=BigInt(r)),0n===t&&0n===r?BigInt(0):n(t/u(t,r)*r)}function g(n,t){return n>=t?n:t}function c(n,t){return n>=t?t:n}function a(n){return n.map((n=>n[0]**(n[1]-1n)*(n[0]-1n))).reduce(((n,t)=>t*n),1n)}function s(t,r,u,f){if("number"==typeof t&&(t=BigInt(t)),"number"==typeof r&&(r=BigInt(r)),"number"==typeof u&&(u=BigInt(u)),u<=0n)throw new RangeError("n must be > 0");if(1n===u)return 0n;if(t=e(t,u),r<0n)return o(s(t,n(r),u,f),u);if(void 0!==f)return function(n,t,r,e){const o=e.map((n=>n[0]**n[1])),u=e.map((n=>a([n]))),f=u.map(((r,e)=>s(n,t%r,o[e])));return i(f,o,r)}(t,r,u,function(n){const t={};return n.forEach((n=>{if("bigint"==typeof n||"number"==typeof n){const r=String(n);void 0===t[r]?t[r]={p:BigInt(n),k:1n}:t[r].k+=1n;}else {const r=String(n[0]);void 0===t[r]?t[r]={p:BigInt(n[0]),k:BigInt(n[1])}:t[r].k+=BigInt(n[1]);}})),Object.values(t).map((n=>[n.p,n.k]))}(f));let g=1n;for(;r>0;)r%2n===1n&&(g=g*t%u),r/=2n,t=t**2n%u;return g}
function fromBuffer(buf) { function fromBuffer(buf) {
let ret = 0n; let ret = 0n;
@ -412,13 +412,13 @@ function _isProbablyPrime(w, iterations) {
} }
const m = d / (2n ** a); const m = d / (2n ** a);
do { do {
const b$1 = randBetween(d, 2n); const b = randBetween(d, 2n);
let z = b(b$1, m, w); let z = s(b, m, w);
if (z === 1n || z === d) if (z === 1n || z === d)
continue; continue;
let j = 1; let j = 1;
while (j < a) { while (j < a) {
z = b(z, 2n, w); z = s(z, 2n, w);
if (z === d) if (z === d)
break; break;
if (z === 1n) if (z === 1n)
@ -434,9 +434,9 @@ function _isProbablyPrimeWorkerUrl() {
let workerCode = ` let workerCode = `
'use strict'; 'use strict';
const ${r.name} = ${r.toString()}; const ${r.name} = ${r.toString()};
const ${g.name} = ${g.toString()}; const ${o.name} = ${o.toString()};
const ${b.name} = ${b.toString()}; const ${s.name} = ${s.toString()};
const ${f.name} = ${f.toString()}; const ${e.name} = ${e.toString()};
const ${randBitsSync.name} = ${randBitsSync.toString()}; const ${randBitsSync.name} = ${randBitsSync.toString()};
const ${randBytesSync.name} = ${randBytesSync.toString()}; const ${randBytesSync.name} = ${randBytesSync.toString()};
const ${randBetween.name} = ${randBetween.toString()}; const ${randBetween.name} = ${randBetween.toString()};
@ -530,4 +530,4 @@ function primeSync(bitLength, iterations = 16) {
return rnd; return rnd;
} }
export { n as abs, t as bitLength, r as eGcd, e as gcd, isProbablyPrime, o as lcm, u as max, i as min, g as modInv, b as modPow, prime, primeSync, randBetween, randBits, randBitsSync, randBytes, randBytesSync, f as toZn }; export { n as abs, t as bitLength, r as eGcd, u as gcd, isProbablyPrime, f as lcm, g as max, c as min, o as modInv, s as modPow, prime, primeSync, randBetween, randBits, randBitsSync, randBytes, randBytesSync, e as toZn };

File diff suppressed because one or more lines are too long

2
dist/bundle.iife.js vendored

File diff suppressed because one or more lines are too long

2
dist/bundle.umd.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

180
dist/index.d.ts vendored
View File

@ -1,6 +1,19 @@
/// <reference types="node" /> /// <reference types="node" />
/**
* Absolute value. abs(a)==a if a>=0. abs(a)==-a if a<0
*
* @param a
*
* @returns The absolute value of a
*/
declare function abs(a: number | bigint): number | bigint; declare function abs(a: number | bigint): number | bigint;
/**
* Returns the (minimum) length of a number expressed in bits.
*
* @param a
* @returns The bit length
*/
declare function bitLength(a: number | bigint): number; declare function bitLength(a: number | bigint): number;
interface Egcd { interface Egcd {
@ -8,33 +21,198 @@ interface Egcd {
x: bigint; x: bigint;
y: bigint; y: bigint;
} }
/**
* An iterative implementation of the extended euclidean algorithm or extended greatest common divisor algorithm.
* Take positive integers a, b as input, and return a triple (g, x, y), such that ax + by = g = gcd(a, b).
*
* @param a
* @param b
*
* @throws {@link RangeError} if a or b are <= 0
*
* @returns A triple (g, x, y), such that ax + by = g = gcd(a, b).
*/
declare function eGcd(a: number | bigint, b: number | bigint): Egcd; declare function eGcd(a: number | bigint, b: number | bigint): Egcd;
/**
* Greatest common divisor of two integers based on the iterative binary algorithm.
*
* @param a
* @param b
*
* @returns The greatest common divisor of a and b
*/
declare function gcd(a: number | bigint, b: number | bigint): bigint; declare function gcd(a: number | bigint, b: number | bigint): bigint;
/**
* The least common multiple computed as abs(a*b)/gcd(a,b)
* @param a
* @param b
*
* @returns The least common multiple of a and b
*/
declare function lcm(a: number | bigint, b: number | bigint): bigint; declare function lcm(a: number | bigint, b: number | bigint): bigint;
/**
* Maximum. max(a,b)==a if a>=b. max(a,b)==b if a<b
*
* @param a
* @param b
*
* @returns Maximum of numbers a and b
*/
declare function max(a: number | bigint, b: number | bigint): number | bigint; declare function max(a: number | bigint, b: number | bigint): number | bigint;
/**
* Minimum. min(a,b)==b if a>=b. min(a,b)==a if a<b
*
* @param a
* @param b
*
* @returns Minimum of numbers a and b
*/
declare function min(a: number | bigint, b: number | bigint): number | bigint; declare function min(a: number | bigint, b: number | bigint): number | bigint;
/**
* Modular inverse.
*
* @param a The number to find an inverse for
* @param n The modulo
*
* @throws {@link RangeError} if a does not have inverse modulo n
*
* @returns The inverse modulo n
*/
declare function modInv(a: number | bigint, n: number | bigint): bigint; declare function modInv(a: number | bigint, n: number | bigint): bigint;
declare function modPow(b: number | bigint, e: number | bigint, n: number | bigint): bigint; type PrimePower = [number | bigint, number | bigint];
type PrimeFactor = number | bigint | PrimePower;
/**
* Modular exponentiation b**e mod n. Currently using the right-to-left binary method if the prime factorization is not provided, or the chinese remainder theorem otherwise.
*
* @param b base
* @param e exponent
* @param n modulo
* @param primeFactorization an array of the prime factors, for example [5n, 5n, 13n, 27n], or prime powers as [p, k], for instance [[5, 2], [13, 1], [27, 1]]. If the prime factorization is provided the chinese remainder theorem is used to greatly speed up the exponentiation.
*
* @throws {@link RangeError} if n <= 0
*
* @returns b**e mod n
*/
declare function modPow(b: number | bigint, e: number | bigint, n: number | bigint, primeFactorization?: PrimeFactor[]): bigint;
/**
* Finds the smallest positive element that is congruent to a in modulo n
*
* @remarks
* a and b must be the same type, either number or bigint
*
* @param a - An integer
* @param n - The modulo
*
* @throws {@link RangeError} if n <= 0
*
* @returns A bigint with the smallest positive representation of a modulo n
*/
declare function toZn(a: number | bigint, n: number | bigint): bigint; declare function toZn(a: number | bigint, n: number | bigint): bigint;
/**
* The test first tries if any of the first 250 small primes are a factor of the input number and then passes several
* iterations of Miller-Rabin Probabilistic Primality Test (FIPS 186-4 C.3.1)
*
* @param w - A positive integer to be tested for primality
* @param iterations - The number of iterations for the primality test. The value shall be consistent with Table C.1, C.2 or C.3 of FIPS 186-4
* @param disableWorkers - Disable the use of workers for the primality test
*
* @throws {@link RangeError} if w<0
*
* @returns A promise that resolves to a boolean that is either true (a probably prime number) or false (definitely composite)
*/
declare function isProbablyPrime(w: number | bigint, iterations?: number, disableWorkers?: boolean): Promise<boolean>; declare function isProbablyPrime(w: number | bigint, iterations?: number, disableWorkers?: boolean): Promise<boolean>;
/**
* A probably-prime (Miller-Rabin), cryptographically-secure, random-number generator.
* The browser version uses web workers to parallelise prime look up. Therefore, it does not lock the UI
* main process, and it can be much faster (if several cores or cpu are available).
* The node version can also use worker_threads if they are available (enabled by default with Node 11 and
* and can be enabled at runtime executing node --experimental-worker with node >=10.5.0).
*
* @param bitLength - The required bit length for the generated prime
* @param iterations - The number of iterations for the Miller-Rabin Probabilistic Primality Test
*
* @throws {@link RangeError} if bitLength < 1
*
* @returns A promise that resolves to a bigint probable prime of bitLength bits.
*/
declare function prime(bitLength: number, iterations?: number): Promise<bigint>; declare function prime(bitLength: number, iterations?: number): Promise<bigint>;
/**
* A probably-prime (Miller-Rabin), cryptographically-secure, random-number generator.
* The sync version is NOT RECOMMENDED since it won't use workers and thus it'll be slower and may freeze thw window in browser's javascript. Please consider using prime() instead.
*
* @param bitLength - The required bit length for the generated prime
* @param iterations - The number of iterations for the Miller-Rabin Probabilistic Primality Test
*
* @throws {@link RangeError} if bitLength < 1
*
* @returns A bigint probable prime of bitLength bits.
*/
declare function primeSync(bitLength: number, iterations?: number): bigint; declare function primeSync(bitLength: number, iterations?: number): bigint;
/**
* Returns a cryptographically secure random integer between [min,max].
* @param max Returned value will be <= max
* @param min Returned value will be >= min
*
* @throws {@link RangeError} if max <= min
*
* @returns A cryptographically secure random bigint between [min,max]
*/
declare function randBetween(max: bigint, min?: bigint): bigint; declare function randBetween(max: bigint, min?: bigint): bigint;
/**
* Secure random bits for both node and browsers. Node version uses crypto.randomFill() and browser one self.crypto.getRandomValues()
*
* @param bitLength - The desired number of random bits
* @param forceLength - Set to true if you want to force the output to have a specific bit length. It basically forces the msb to be 1
*
* @throws {@link RangeError} if bitLength < 1
*
* @returns A Promise that resolves to a UInt8Array/Buffer (Browser/Node.js) filled with cryptographically secure random bits
*/
declare function randBits(bitLength: number, forceLength?: boolean): Promise<Uint8Array | Buffer>; declare function randBits(bitLength: number, forceLength?: boolean): Promise<Uint8Array | Buffer>;
/**
* Secure random bits for both node and browsers. Node version uses crypto.randomFill() and browser one self.crypto.getRandomValues()
* @param bitLength - The desired number of random bits
* @param forceLength - Set to true if you want to force the output to have a specific bit length. It basically forces the msb to be 1
*
* @throws {@link RangeError} if bitLength < 1
*
* @returns A Uint8Array/Buffer (Browser/Node.js) filled with cryptographically secure random bits
*/
declare function randBitsSync(bitLength: number, forceLength?: boolean): Uint8Array | Buffer; declare function randBitsSync(bitLength: number, forceLength?: boolean): Uint8Array | Buffer;
/**
* Secure random bytes for both node and browsers. Node version uses crypto.randomBytes() and browser one self.crypto.getRandomValues()
*
* @param byteLength - The desired number of random bytes
* @param forceLength - Set to true if you want to force the output to have a bit length of 8*byteLength. It basically forces the msb to be 1
*
* @throws {@link RangeError} if byteLength < 1
*
* @returns A promise that resolves to a UInt8Array/Buffer (Browser/Node.js) filled with cryptographically secure random bytes
*/
declare function randBytes(byteLength: number, forceLength?: boolean): Promise<Uint8Array | Buffer>; declare function randBytes(byteLength: number, forceLength?: boolean): Promise<Uint8Array | Buffer>;
/**
* Secure random bytes for both node and browsers. Node version uses crypto.randomFill() and browser one self.crypto.getRandomValues()
* This is the synchronous version, consider using the asynchronous one for improved efficiency.
*
* @param byteLength - The desired number of random bytes
* @param forceLength - Set to true if you want to force the output to have a bit length of 8*byteLength. It basically forces the msb to be 1
*
* @throws {@link RangeError} if byteLength < 1
*
* @returns A UInt8Array/Buffer (Browser/Node.js) filled with cryptographically secure random bytes
*/
declare function randBytesSync(byteLength: number, forceLength?: boolean): Uint8Array | Buffer; declare function randBytesSync(byteLength: number, forceLength?: boolean): Uint8Array | Buffer;
export { abs, bitLength, eGcd, gcd, isProbablyPrime, lcm, max, min, modInv, modPow, prime, primeSync, randBetween, randBits, randBitsSync, randBytes, randBytesSync, toZn }; export { abs, bitLength, eGcd, gcd, isProbablyPrime, lcm, max, min, modInv, modPow, prime, primeSync, randBetween, randBits, randBitsSync, randBytes, randBytesSync, toZn };

4
dist/index.node.cjs vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -29,6 +29,8 @@
**abs**(`a`): `number` \| `bigint` **abs**(`a`): `number` \| `bigint`
Absolute value. abs(a)==a if a>=0. abs(a)==-a if a<0
#### Parameters #### Parameters
| Name | Type | | Name | Type |
@ -39,9 +41,7 @@
`number` \| `bigint` `number` \| `bigint`
#### Defined in The absolute value of a
node_modules/bigint-mod-arith/dist/index.d.ts:1
___ ___
@ -49,6 +49,8 @@ ___
**bitLength**(`a`): `number` **bitLength**(`a`): `number`
Returns the (minimum) length of a number expressed in bits.
#### Parameters #### Parameters
| Name | Type | | Name | Type |
@ -59,9 +61,7 @@ ___
`number` `number`
#### Defined in The bit length
node_modules/bigint-mod-arith/dist/index.d.ts:3
___ ___
@ -69,6 +69,13 @@ ___
**eGcd**(`a`, `b`): `Egcd` **eGcd**(`a`, `b`): `Egcd`
An iterative implementation of the extended euclidean algorithm or extended greatest common divisor algorithm.
Take positive integers a, b as input, and return a triple (g, x, y), such that ax + by = g = gcd(a, b).
**`Throws`**
RangeError if a or b are <= 0
#### Parameters #### Parameters
| Name | Type | | Name | Type |
@ -80,9 +87,7 @@ ___
`Egcd` `Egcd`
#### Defined in A triple (g, x, y), such that ax + by = g = gcd(a, b).
node_modules/bigint-mod-arith/dist/index.d.ts:10
___ ___
@ -90,6 +95,8 @@ ___
**gcd**(`a`, `b`): `bigint` **gcd**(`a`, `b`): `bigint`
Greatest common divisor of two integers based on the iterative binary algorithm.
#### Parameters #### Parameters
| Name | Type | | Name | Type |
@ -101,9 +108,7 @@ ___
`bigint` `bigint`
#### Defined in The greatest common divisor of a and b
node_modules/bigint-mod-arith/dist/index.d.ts:12
___ ___
@ -132,16 +137,14 @@ RangeError if w<0
A promise that resolves to a boolean that is either true (a probably prime number) or false (definitely composite) A promise that resolves to a boolean that is either true (a probably prime number) or false (definitely composite)
#### Defined in
[src/ts/isProbablyPrime.ts:20](https://github.com/juanelas/bigint-crypto-utils/blob/f4ea3d5/src/ts/isProbablyPrime.ts#L20)
___ ___
### lcm ### lcm
**lcm**(`a`, `b`): `bigint` **lcm**(`a`, `b`): `bigint`
The least common multiple computed as abs(a*b)/gcd(a,b)
#### Parameters #### Parameters
| Name | Type | | Name | Type |
@ -153,9 +156,7 @@ ___
`bigint` `bigint`
#### Defined in The least common multiple of a and b
node_modules/bigint-mod-arith/dist/index.d.ts:14
___ ___
@ -163,6 +164,8 @@ ___
**max**(`a`, `b`): `number` \| `bigint` **max**(`a`, `b`): `number` \| `bigint`
Maximum. max(a,b)==a if a>=b. max(a,b)==b if a<b
#### Parameters #### Parameters
| Name | Type | | Name | Type |
@ -174,9 +177,7 @@ ___
`number` \| `bigint` `number` \| `bigint`
#### Defined in Maximum of numbers a and b
node_modules/bigint-mod-arith/dist/index.d.ts:16
___ ___
@ -184,6 +185,8 @@ ___
**min**(`a`, `b`): `number` \| `bigint` **min**(`a`, `b`): `number` \| `bigint`
Minimum. min(a,b)==b if a>=b. min(a,b)==a if a<b
#### Parameters #### Parameters
| Name | Type | | Name | Type |
@ -195,9 +198,7 @@ ___
`number` \| `bigint` `number` \| `bigint`
#### Defined in Minimum of numbers a and b
node_modules/bigint-mod-arith/dist/index.d.ts:18
___ ___
@ -205,42 +206,51 @@ ___
**modInv**(`a`, `n`): `bigint` **modInv**(`a`, `n`): `bigint`
Modular inverse.
**`Throws`**
RangeError if a does not have inverse modulo n
#### Parameters #### Parameters
| Name | Type | | Name | Type | Description |
| :------ | :------ | | :------ | :------ | :------ |
| `a` | `number` \| `bigint` | | `a` | `number` \| `bigint` | The number to find an inverse for |
| `n` | `number` \| `bigint` | | `n` | `number` \| `bigint` | The modulo |
#### Returns #### Returns
`bigint` `bigint`
#### Defined in The inverse modulo n
node_modules/bigint-mod-arith/dist/index.d.ts:20
___ ___
### modPow ### modPow
**modPow**(`b`, `e`, `n`): `bigint` **modPow**(`b`, `e`, `n`, `primeFactorization?`): `bigint`
Modular exponentiation b**e mod n. Currently using the right-to-left binary method if the prime factorization is not provided, or the chinese remainder theorem otherwise.
**`Throws`**
RangeError if n <= 0
#### Parameters #### Parameters
| Name | Type | | Name | Type | Description |
| :------ | :------ | | :------ | :------ | :------ |
| `b` | `number` \| `bigint` | | `b` | `number` \| `bigint` | base |
| `e` | `number` \| `bigint` | | `e` | `number` \| `bigint` | exponent |
| `n` | `number` \| `bigint` | | `n` | `number` \| `bigint` | modulo |
| `primeFactorization?` | `PrimeFactor`[] | an array of the prime factors, for example [5n, 5n, 13n, 27n], or prime powers as [p, k], for instance [[5, 2], [13, 1], [27, 1]]. If the prime factorization is provided the chinese remainder theorem is used to greatly speed up the exponentiation. |
#### Returns #### Returns
`bigint` `bigint`
#### Defined in b**e mod n
node_modules/bigint-mod-arith/dist/index.d.ts:22
___ ___
@ -271,10 +281,6 @@ RangeError if bitLength < 1
A promise that resolves to a bigint probable prime of bitLength bits. A promise that resolves to a bigint probable prime of bitLength bits.
#### Defined in
[src/ts/prime.ts:28](https://github.com/juanelas/bigint-crypto-utils/blob/f4ea3d5/src/ts/prime.ts#L28)
___ ___
### primeSync ### primeSync
@ -301,10 +307,6 @@ RangeError if bitLength < 1
A bigint probable prime of bitLength bits. A bigint probable prime of bitLength bits.
#### Defined in
[src/ts/prime.ts:109](https://github.com/juanelas/bigint-crypto-utils/blob/f4ea3d5/src/ts/prime.ts#L109)
___ ___
### randBetween ### randBetween
@ -330,10 +332,6 @@ RangeError if max <= min
A cryptographically secure random bigint between [min,max] A cryptographically secure random bigint between [min,max]
#### Defined in
[src/ts/randBetween.ts:14](https://github.com/juanelas/bigint-crypto-utils/blob/f4ea3d5/src/ts/randBetween.ts#L14)
___ ___
### randBits ### randBits
@ -359,10 +357,6 @@ RangeError if bitLength < 1
A Promise that resolves to a UInt8Array/Buffer (Browser/Node.js) filled with cryptographically secure random bits A Promise that resolves to a UInt8Array/Buffer (Browser/Node.js) filled with cryptographically secure random bits
#### Defined in
[src/ts/randBits.ts:13](https://github.com/juanelas/bigint-crypto-utils/blob/f4ea3d5/src/ts/randBits.ts#L13)
___ ___
### randBitsSync ### randBitsSync
@ -388,10 +382,6 @@ RangeError if bitLength < 1
A Uint8Array/Buffer (Browser/Node.js) filled with cryptographically secure random bits A Uint8Array/Buffer (Browser/Node.js) filled with cryptographically secure random bits
#### Defined in
[src/ts/randBits.ts:43](https://github.com/juanelas/bigint-crypto-utils/blob/f4ea3d5/src/ts/randBits.ts#L43)
___ ___
### randBytes ### randBytes
@ -417,10 +407,6 @@ RangeError if byteLength < 1
A promise that resolves to a UInt8Array/Buffer (Browser/Node.js) filled with cryptographically secure random bytes A promise that resolves to a UInt8Array/Buffer (Browser/Node.js) filled with cryptographically secure random bytes
#### Defined in
[src/ts/randBytes.ts:13](https://github.com/juanelas/bigint-crypto-utils/blob/f4ea3d5/src/ts/randBytes.ts#L13)
___ ___
### randBytesSync ### randBytesSync
@ -447,27 +433,31 @@ RangeError if byteLength < 1
A UInt8Array/Buffer (Browser/Node.js) filled with cryptographically secure random bytes A UInt8Array/Buffer (Browser/Node.js) filled with cryptographically secure random bytes
#### Defined in
[src/ts/randBytes.ts:54](https://github.com/juanelas/bigint-crypto-utils/blob/f4ea3d5/src/ts/randBytes.ts#L54)
___ ___
### toZn ### toZn
**toZn**(`a`, `n`): `bigint` **toZn**(`a`, `n`): `bigint`
Finds the smallest positive element that is congruent to a in modulo n
**`Remarks`**
a and b must be the same type, either number or bigint
**`Throws`**
RangeError if n <= 0
#### Parameters #### Parameters
| Name | Type | | Name | Type | Description |
| :------ | :------ | | :------ | :------ | :------ |
| `a` | `number` \| `bigint` | | `a` | `number` \| `bigint` | An integer |
| `n` | `number` \| `bigint` | | `n` | `number` \| `bigint` | The modulo |
#### Returns #### Returns
`bigint` `bigint`
#### Defined in A bigint with the smallest positive representation of a modulo n
node_modules/bigint-mod-arith/dist/index.d.ts:24

590
package-lock.json generated
View File

@ -9,7 +9,7 @@
"version": "3.2.2", "version": "3.2.2",
"license": "MIT", "license": "MIT",
"devDependencies": { "devDependencies": {
"@rollup/plugin-commonjs": "^24.0.1", "@rollup/plugin-commonjs": "^25.0.2",
"@rollup/plugin-inject": "^5.0.3", "@rollup/plugin-inject": "^5.0.3",
"@rollup/plugin-json": "^6.0.0", "@rollup/plugin-json": "^6.0.0",
"@rollup/plugin-multi-entry": "^6.0.0", "@rollup/plugin-multi-entry": "^6.0.0",
@ -19,8 +19,8 @@
"@rollup/plugin-typescript": "^11.1.0", "@rollup/plugin-typescript": "^11.1.0",
"@types/chai": "^4.2.22", "@types/chai": "^4.2.22",
"@types/mocha": "^10.0.0", "@types/mocha": "^10.0.0",
"bigint-mod-arith": "^3.2.1", "bigint-mod-arith": "^3.3.1",
"c8": "^7.12.0", "c8": "^8.0.0",
"chai": "^4.3.3", "chai": "^4.3.3",
"dotenv": "^16.0.3", "dotenv": "^16.0.3",
"glob": "^10.0.0", "glob": "^10.0.0",
@ -29,7 +29,7 @@
"mocha": "^10.0.0", "mocha": "^10.0.0",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"pirates": "^4.0.1", "pirates": "^4.0.1",
"puppeteer": "^19.1.2", "puppeteer": "^20.7.3",
"rimraf": "^5.0.0", "rimraf": "^5.0.0",
"rollup": "^3.20.2", "rollup": "^3.20.2",
"rollup-plugin-dts": "^5.3.0", "rollup-plugin-dts": "^5.3.0",
@ -37,7 +37,7 @@
"tslib": "^2.3.1", "tslib": "^2.3.1",
"typedoc": "~0.23.0", "typedoc": "~0.23.0",
"typedoc-plugin-markdown": "~3.14.0", "typedoc-plugin-markdown": "~3.14.0",
"typescript": "^5.0.3" "typescript": "^4.4.3"
}, },
"engines": { "engines": {
"node": ">=14.0.0" "node": ">=14.0.0"
@ -397,17 +397,16 @@
} }
}, },
"node_modules/@puppeteer/browsers": { "node_modules/@puppeteer/browsers": {
"version": "0.4.1", "version": "1.4.2",
"resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-0.4.1.tgz", "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.4.2.tgz",
"integrity": "sha512-4IICvy1McAkT/HyNZHIs7sp8ngBX1dmO0TPQ+FWq9ATQMqI8p+Ulm5A3kS2wYDh5HDHHkYrrETOu6rlj64VuTw==", "integrity": "sha512-5MLU1RFaJh1Beb9FH6raowtZErcsZ0ojYJvdG3OWXfnc3wZiDAa0PgXU2QOKtbW2S+Z731K/2n3YczGA3KbLbQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"debug": "4.3.4", "debug": "4.3.4",
"extract-zip": "2.0.1", "extract-zip": "2.0.1",
"https-proxy-agent": "5.0.1",
"progress": "2.0.3", "progress": "2.0.3",
"proxy-from-env": "1.1.0", "proxy-agent": "6.2.1",
"tar-fs": "2.1.1", "tar-fs": "3.0.2",
"unbzip2-stream": "1.4.3", "unbzip2-stream": "1.4.3",
"yargs": "17.7.1" "yargs": "17.7.1"
}, },
@ -415,7 +414,7 @@
"browsers": "lib/cjs/main-cli.js" "browsers": "lib/cjs/main-cli.js"
}, },
"engines": { "engines": {
"node": ">=14.1.0" "node": ">=16.3.0"
}, },
"peerDependencies": { "peerDependencies": {
"typescript": ">= 4.7.4" "typescript": ">= 4.7.4"
@ -468,9 +467,9 @@
} }
}, },
"node_modules/@rollup/plugin-commonjs": { "node_modules/@rollup/plugin-commonjs": {
"version": "24.1.0", "version": "25.0.2",
"resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-24.1.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.2.tgz",
"integrity": "sha512-eSL45hjhCWI0jCCXcNtLVqM5N1JlBGvlFfY0m6oOYnLCJ6N0qEXoZql4sY2MOUArzhH4SA/qBpTxvvZp2Sc+DQ==", "integrity": "sha512-NGTwaJxIO0klMs+WSFFtBP7b9TdTJ3K76HZkewT8/+yHzMiUGVQgaPtLQxNVYIgT5F7lxkEyVID+yS3K7bhCow==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@rollup/pluginutils": "^5.0.1", "@rollup/pluginutils": "^5.0.1",
@ -756,9 +755,9 @@
"dev": true "dev": true
}, },
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "18.15.11", "version": "20.3.2",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.2.tgz",
"integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==", "integrity": "sha512-vOBLVQeCQfIcF/2Y7eKFTqrMnizK5lRNQ7ykML/5RuwVXVWxYkgwS7xbt4B6fKCUPgbSL5FSsjHQpaGQP/dQmw==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
@ -1074,16 +1073,25 @@
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
} }
}, },
"node_modules/acorn-walk": {
"version": "8.2.0",
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
"integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
"dev": true,
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/agent-base": { "node_modules/agent-base": {
"version": "6.0.2", "version": "7.1.0",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz",
"integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"debug": "4" "debug": "^4.3.4"
}, },
"engines": { "engines": {
"node": ">= 6.0.0" "node": ">= 14"
} }
}, },
"node_modules/ajv": { "node_modules/ajv": {
@ -1259,6 +1267,18 @@
"node": "*" "node": "*"
} }
}, },
"node_modules/ast-types": {
"version": "0.13.4",
"resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz",
"integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==",
"dev": true,
"dependencies": {
"tslib": "^2.0.1"
},
"engines": {
"node": ">=4"
}
},
"node_modules/available-typed-arrays": { "node_modules/available-typed-arrays": {
"version": "1.0.5", "version": "1.0.5",
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
@ -1271,6 +1291,12 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/b4a": {
"version": "1.6.4",
"resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz",
"integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==",
"dev": true
},
"node_modules/balanced-match": { "node_modules/balanced-match": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@ -1297,10 +1323,19 @@
} }
] ]
}, },
"node_modules/basic-ftp": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.3.tgz",
"integrity": "sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g==",
"dev": true,
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/bigint-mod-arith": { "node_modules/bigint-mod-arith": {
"version": "3.2.1", "version": "3.3.1",
"resolved": "https://registry.npmjs.org/bigint-mod-arith/-/bigint-mod-arith-3.2.1.tgz", "resolved": "https://registry.npmjs.org/bigint-mod-arith/-/bigint-mod-arith-3.3.1.tgz",
"integrity": "sha512-roLlzeQ0okNjT8Ph9zL9Nvw85ucHSQkNndLRfAR2CVaYOEAMtbpIK3f6oJb3Jv/hg9mkrYaw/DknysTuvc8QhA==", "integrity": "sha512-pX/cYW3dCa87Jrzv6DAr8ivbbJRzEX5yGhdt8IutnX/PCIXfpx+mabWNK/M8qqh+zQ0J3thftUBHW0ByuUlG0w==",
"dev": true, "dev": true,
"engines": { "engines": {
"node": ">=10.4.0" "node": ">=10.4.0"
@ -1315,17 +1350,6 @@
"node": ">=8" "node": ">=8"
} }
}, },
"node_modules/bl": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
"integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
"dev": true,
"dependencies": {
"buffer": "^5.5.0",
"inherits": "^2.0.4",
"readable-stream": "^3.4.0"
}
},
"node_modules/brace-expansion": { "node_modules/brace-expansion": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
@ -1441,9 +1465,9 @@
} }
}, },
"node_modules/c8": { "node_modules/c8": {
"version": "7.13.0", "version": "8.0.0",
"resolved": "https://registry.npmjs.org/c8/-/c8-7.13.0.tgz", "resolved": "https://registry.npmjs.org/c8/-/c8-8.0.0.tgz",
"integrity": "sha512-/NL4hQTv1gBL6J6ei80zu3IiTrmePDKXKXOTLpHvcIWZTVYQlDhVWjjWvkhICylE8EwwnMVzDZugCvdx0/DIIA==", "integrity": "sha512-XHA5vSfCLglAc0Xt8eLBZMv19lgiBSjnb1FLAQgnwkuhJYEonpilhEB4Ea3jPAbm0FhD6VVJrc0z73jPe7JyGQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@bcoe/v8-coverage": "^0.2.3", "@bcoe/v8-coverage": "^0.2.3",
@ -1463,7 +1487,7 @@
"c8": "bin/c8.js" "c8": "bin/c8.js"
}, },
"engines": { "engines": {
"node": ">=10.12.0" "node": ">=12"
} }
}, },
"node_modules/c8/node_modules/brace-expansion": { "node_modules/c8/node_modules/brace-expansion": {
@ -1627,16 +1651,10 @@
"fsevents": "~2.3.2" "fsevents": "~2.3.2"
} }
}, },
"node_modules/chownr": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
"integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
"dev": true
},
"node_modules/chromium-bidi": { "node_modules/chromium-bidi": {
"version": "0.4.6", "version": "0.4.12",
"resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.6.tgz", "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.12.tgz",
"integrity": "sha512-TQOkWRaLI/IWvoP8XC+7jO4uHTIiAUiklXU1T0qszlUFEai9LgKXIBXy3pOS3EnQZ3bQtMbKUPkug0fTAEHCSw==", "integrity": "sha512-yl0ngMHtYUGJa2G0lkcbPvbnUZ9WMQyMNSfYmlrGD1nHRNyI9KOGw3dOaofFugXHHToneUaSmF9iUdgCBamCjA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"mitt": "3.0.0" "mitt": "3.0.0"
@ -1699,9 +1717,9 @@
"dev": true "dev": true
}, },
"node_modules/cosmiconfig": { "node_modules/cosmiconfig": {
"version": "8.1.3", "version": "8.2.0",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz",
"integrity": "sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==", "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"import-fresh": "^3.2.1", "import-fresh": "^3.2.1",
@ -1717,12 +1735,12 @@
} }
}, },
"node_modules/cross-fetch": { "node_modules/cross-fetch": {
"version": "3.1.5", "version": "3.1.6",
"resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.6.tgz",
"integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", "integrity": "sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"node-fetch": "2.6.7" "node-fetch": "^2.6.11"
} }
}, },
"node_modules/cross-spawn": { "node_modules/cross-spawn": {
@ -1739,6 +1757,15 @@
"node": ">= 8" "node": ">= 8"
} }
}, },
"node_modules/data-uri-to-buffer": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-5.0.1.tgz",
"integrity": "sha512-a9l6T1qqDogvvnw0nKlfZzqsyikEBZBClF39V3TFoKhDtGBqHu2HkuomJc02j5zft8zrUaXEuoicLeW54RkzPg==",
"dev": true,
"engines": {
"node": ">= 14"
}
},
"node_modules/debug": { "node_modules/debug": {
"version": "4.3.4", "version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@ -1817,10 +1844,25 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/degenerator": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/degenerator/-/degenerator-4.0.3.tgz",
"integrity": "sha512-2wY8vmCfxrQpe2PKGYdiWRre5HQRwsAXbAAWRbC+z2b80MEpnWc8A3a9k4TwqwN3Z/Fm3uhNm5vYUZIbMhyRxQ==",
"dev": true,
"dependencies": {
"ast-types": "^0.13.2",
"escodegen": "^1.8.1",
"esprima": "^4.0.0",
"vm2": "^3.9.19"
},
"engines": {
"node": ">= 14"
}
},
"node_modules/devtools-protocol": { "node_modules/devtools-protocol": {
"version": "0.0.1107588", "version": "0.0.1135028",
"resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1107588.tgz", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1135028.tgz",
"integrity": "sha512-yIR+pG9x65Xko7bErCUSQaDLrO/P1p3JUzEk7JCU4DowPcGHkTGUGQapcfcLc4qj0UaALwZ+cr0riFgiqpixcg==", "integrity": "sha512-jEcNGrh6lOXNRJvZb9RjeevtZGrgugPKSMJZxfyxWQnhlKawMPhMtk/dfC+Z/6xNXExlzTKlY5LzIAK/fRpQIw==",
"dev": true "dev": true
}, },
"node_modules/diff": { "node_modules/diff": {
@ -1998,6 +2040,88 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/escodegen": {
"version": "1.14.3",
"resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz",
"integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==",
"dev": true,
"dependencies": {
"esprima": "^4.0.1",
"estraverse": "^4.2.0",
"esutils": "^2.0.2",
"optionator": "^0.8.1"
},
"bin": {
"escodegen": "bin/escodegen.js",
"esgenerate": "bin/esgenerate.js"
},
"engines": {
"node": ">=4.0"
},
"optionalDependencies": {
"source-map": "~0.6.1"
}
},
"node_modules/escodegen/node_modules/estraverse": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
"integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
"dev": true,
"engines": {
"node": ">=4.0"
}
},
"node_modules/escodegen/node_modules/levn": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
"integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
"dev": true,
"dependencies": {
"prelude-ls": "~1.1.2",
"type-check": "~0.3.2"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/escodegen/node_modules/optionator": {
"version": "0.8.3",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
"integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
"dev": true,
"dependencies": {
"deep-is": "~0.1.3",
"fast-levenshtein": "~2.0.6",
"levn": "~0.3.0",
"prelude-ls": "~1.1.2",
"type-check": "~0.3.2",
"word-wrap": "~1.2.3"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/escodegen/node_modules/prelude-ls": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
"integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
"dev": true,
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/escodegen/node_modules/type-check": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
"integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
"dev": true,
"dependencies": {
"prelude-ls": "~1.1.2"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/eslint": { "node_modules/eslint": {
"version": "8.38.0", "version": "8.38.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.38.0.tgz", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.38.0.tgz",
@ -2575,6 +2699,19 @@
"url": "https://opencollective.com/eslint" "url": "https://opencollective.com/eslint"
} }
}, },
"node_modules/esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"dev": true,
"bin": {
"esparse": "bin/esparse.js",
"esvalidate": "bin/esvalidate.js"
},
"engines": {
"node": ">=4"
}
},
"node_modules/esquery": { "node_modules/esquery": {
"version": "1.5.0", "version": "1.5.0",
"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
@ -2649,6 +2786,12 @@
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
"dev": true "dev": true
}, },
"node_modules/fast-fifo": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.0.tgz",
"integrity": "sha512-IgfweLvEpwyA4WgiQe9Nx6VV2QkML2NkvZnk1oKnIzXgXdWxuhF7zw4DvLTPZJn6PIUneiAXPF24QmoEqHTjyw==",
"dev": true
},
"node_modules/fast-glob": { "node_modules/fast-glob": {
"version": "3.2.12", "version": "3.2.12",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
@ -2842,11 +2985,19 @@
"node": ">=8.0.0" "node": ">=8.0.0"
} }
}, },
"node_modules/fs-constants": { "node_modules/fs-extra": {
"version": "1.0.0", "version": "8.1.0",
"resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
"dev": true "dev": true,
"dependencies": {
"graceful-fs": "^4.2.0",
"jsonfile": "^4.0.0",
"universalify": "^0.1.0"
},
"engines": {
"node": ">=6 <7 || >=8"
}
}, },
"node_modules/fs.realpath": { "node_modules/fs.realpath": {
"version": "1.0.0", "version": "1.0.0",
@ -2976,6 +3127,21 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/get-uri": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.1.tgz",
"integrity": "sha512-7ZqONUVqaabogsYNWlYj0t3YZaL6dhuEueZXGF+/YVmf6dHmaFg8/6psJKqhx9QykIDKzpGcy2cn4oV4YC7V/Q==",
"dev": true,
"dependencies": {
"basic-ftp": "^5.0.2",
"data-uri-to-buffer": "^5.0.1",
"debug": "^4.3.4",
"fs-extra": "^8.1.0"
},
"engines": {
"node": ">= 14"
}
},
"node_modules/glob": { "node_modules/glob": {
"version": "10.0.0", "version": "10.0.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-10.0.0.tgz", "resolved": "https://registry.npmjs.org/glob/-/glob-10.0.0.tgz",
@ -3203,17 +3369,30 @@
"integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
"dev": true "dev": true
}, },
"node_modules/https-proxy-agent": { "node_modules/http-proxy-agent": {
"version": "5.0.1", "version": "7.0.0",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz",
"integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"agent-base": "6", "agent-base": "^7.1.0",
"debug": "^4.3.4"
},
"engines": {
"node": ">= 14"
}
},
"node_modules/https-proxy-agent": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.0.tgz",
"integrity": "sha512-0euwPCRyAPSgGdzD1IVN9nJYHtBhJwb6XPfbpQcYbPCwrBidX6GzxmchnaF4sfF/jPb74Ojx5g4yTg3sixlyPw==",
"dev": true,
"dependencies": {
"agent-base": "^7.0.2",
"debug": "4" "debug": "4"
}, },
"engines": { "engines": {
"node": ">= 6" "node": ">= 14"
} }
}, },
"node_modules/ieee754": { "node_modules/ieee754": {
@ -3300,6 +3479,12 @@
"node": ">= 0.4" "node": ">= 0.4"
} }
}, },
"node_modules/ip": {
"version": "1.1.8",
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
"integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==",
"dev": true
},
"node_modules/is-array-buffer": { "node_modules/is-array-buffer": {
"version": "3.0.2", "version": "3.0.2",
"resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
@ -3726,6 +3911,15 @@
"integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==",
"dev": true "dev": true
}, },
"node_modules/jsonfile": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
"integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
"dev": true,
"optionalDependencies": {
"graceful-fs": "^4.1.6"
}
},
"node_modules/jsx-ast-utils": { "node_modules/jsx-ast-utils": {
"version": "3.3.3", "version": "3.3.3",
"resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz",
@ -4195,6 +4389,15 @@
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
"dev": true "dev": true
}, },
"node_modules/netmask": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz",
"integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==",
"dev": true,
"engines": {
"node": ">= 0.4.0"
}
},
"node_modules/nice-try": { "node_modules/nice-try": {
"version": "1.0.5", "version": "1.0.5",
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
@ -4202,9 +4405,9 @@
"dev": true "dev": true
}, },
"node_modules/node-fetch": { "node_modules/node-fetch": {
"version": "2.6.7", "version": "2.6.11",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz",
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"whatwg-url": "^5.0.0" "whatwg-url": "^5.0.0"
@ -4607,6 +4810,38 @@
"node": ">=6" "node": ">=6"
} }
}, },
"node_modules/pac-proxy-agent": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-6.0.3.tgz",
"integrity": "sha512-5Hr1KgPDoc21Vn3rsXBirwwDnF/iac1jN/zkpsOYruyT+ZgsUhUOgVwq3v9+ukjZd/yGm/0nzO1fDfl7rkGoHQ==",
"dev": true,
"dependencies": {
"agent-base": "^7.0.2",
"debug": "^4.3.4",
"get-uri": "^6.0.1",
"http-proxy-agent": "^7.0.0",
"https-proxy-agent": "^7.0.0",
"pac-resolver": "^6.0.1",
"socks-proxy-agent": "^8.0.1"
},
"engines": {
"node": ">= 14"
}
},
"node_modules/pac-resolver": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-6.0.1.tgz",
"integrity": "sha512-dg497MhVT7jZegPRuOScQ/z0aV/5WR0gTdRu1md+Irs9J9o+ls5jIuxjo1WfaTG+eQQkxyn5HMGvWK+w7EIBkQ==",
"dev": true,
"dependencies": {
"degenerator": "^4.0.1",
"ip": "^1.1.5",
"netmask": "^2.0.2"
},
"engines": {
"node": ">= 14"
}
},
"node_modules/parent-module": { "node_modules/parent-module": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
@ -4891,6 +5126,34 @@
"react-is": "^16.13.1" "react-is": "^16.13.1"
} }
}, },
"node_modules/proxy-agent": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.2.1.tgz",
"integrity": "sha512-OIbBKlRAT+ycCm6wAYIzMwPejzRtjy8F3QiDX0eKOA3e4pe3U9F/IvzcHP42bmgQxVv97juG+J8/gx+JIeCX/Q==",
"dev": true,
"dependencies": {
"agent-base": "^7.0.2",
"debug": "^4.3.4",
"http-proxy-agent": "^7.0.0",
"https-proxy-agent": "^7.0.0",
"lru-cache": "^7.14.1",
"pac-proxy-agent": "^6.0.3",
"proxy-from-env": "^1.1.0",
"socks-proxy-agent": "^8.0.1"
},
"engines": {
"node": ">= 14"
}
},
"node_modules/proxy-agent/node_modules/lru-cache": {
"version": "7.18.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
"integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
"dev": true,
"engines": {
"node": ">=12"
}
},
"node_modules/proxy-from-env": { "node_modules/proxy-from-env": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
@ -4917,40 +5180,35 @@
} }
}, },
"node_modules/puppeteer": { "node_modules/puppeteer": {
"version": "19.9.0", "version": "20.7.3",
"resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-19.9.0.tgz", "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-20.7.3.tgz",
"integrity": "sha512-JDx8WwGlkdQYTaa3OMYDF+uFWimiwNnacg5FGEC5J6+VxDsLK30wHKU/Db2LqEhtAoIu4RwS+BRH4zRPlCsFpA==", "integrity": "sha512-3tw12ykFRLvzTRc9PyUOE5xeHQhhLEcKEOVjSfNtRmZqlAnvfhAP8ue+mjojy8NJ1LIfF6fps7OKzSc4JSJSlA==",
"dev": true, "dev": true,
"hasInstallScript": true, "hasInstallScript": true,
"dependencies": { "dependencies": {
"@puppeteer/browsers": "0.4.1", "@puppeteer/browsers": "1.4.2",
"cosmiconfig": "8.1.3", "cosmiconfig": "8.2.0",
"https-proxy-agent": "5.0.1", "puppeteer-core": "20.7.3"
"progress": "2.0.3", },
"proxy-from-env": "1.1.0", "engines": {
"puppeteer-core": "19.9.0" "node": ">=16.3.0"
} }
}, },
"node_modules/puppeteer-core": { "node_modules/puppeteer-core": {
"version": "19.9.0", "version": "20.7.3",
"resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-19.9.0.tgz", "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.7.3.tgz",
"integrity": "sha512-IJYfCE0oFpi5dTvNFqOwo8Dey6zzx7hANy7z6K2bjpCux9oPOSOIubq40awNhaHlfi8soYtgU4qabnzMXB7xBQ==", "integrity": "sha512-OraI71GPPfUMosLqaOsDGbp/ZLoxLTm0BAda0uE6G+H3onmljfoaJcIPm8X5y1LMq1K1HF1bipcCI7hWGkd3bQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@puppeteer/browsers": "0.4.1", "@puppeteer/browsers": "1.4.2",
"chromium-bidi": "0.4.6", "chromium-bidi": "0.4.12",
"cross-fetch": "3.1.5", "cross-fetch": "3.1.6",
"debug": "4.3.4", "debug": "4.3.4",
"devtools-protocol": "0.0.1107588", "devtools-protocol": "0.0.1135028",
"extract-zip": "2.0.1",
"https-proxy-agent": "5.0.1",
"proxy-from-env": "1.1.0",
"tar-fs": "2.1.1",
"unbzip2-stream": "1.4.3",
"ws": "8.13.0" "ws": "8.13.0"
}, },
"engines": { "engines": {
"node": ">=14.14.0" "node": ">=16.3.0"
}, },
"peerDependencies": { "peerDependencies": {
"typescript": ">= 4.7.4" "typescript": ">= 4.7.4"
@ -4981,6 +5239,12 @@
} }
] ]
}, },
"node_modules/queue-tick": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz",
"integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==",
"dev": true
},
"node_modules/randombytes": { "node_modules/randombytes": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@ -5022,20 +5286,6 @@
"node": ">=4" "node": ">=4"
} }
}, },
"node_modules/readable-stream": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"dev": true,
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/readdirp": { "node_modules/readdirp": {
"version": "3.6.0", "version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
@ -5336,12 +5586,56 @@
"node": ">=8" "node": ">=8"
} }
}, },
"node_modules/smart-buffer": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
"integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
"dev": true,
"engines": {
"node": ">= 6.0.0",
"npm": ">= 3.0.0"
}
},
"node_modules/smob": { "node_modules/smob": {
"version": "0.0.6", "version": "0.0.6",
"resolved": "https://registry.npmjs.org/smob/-/smob-0.0.6.tgz", "resolved": "https://registry.npmjs.org/smob/-/smob-0.0.6.tgz",
"integrity": "sha512-V21+XeNni+tTyiST1MHsa84AQhT1aFZipzPpOFAVB8DkHzwJyjjAmt9bgwnuZiZWnIbMo2duE29wybxv/7HWUw==", "integrity": "sha512-V21+XeNni+tTyiST1MHsa84AQhT1aFZipzPpOFAVB8DkHzwJyjjAmt9bgwnuZiZWnIbMo2duE29wybxv/7HWUw==",
"dev": true "dev": true
}, },
"node_modules/socks": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz",
"integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==",
"dev": true,
"dependencies": {
"ip": "^2.0.0",
"smart-buffer": "^4.2.0"
},
"engines": {
"node": ">= 10.13.0",
"npm": ">= 3.0.0"
}
},
"node_modules/socks-proxy-agent": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.1.tgz",
"integrity": "sha512-59EjPbbgg8U3x62hhKOFVAmySQUcfRQ4C7Q/D5sEHnZTQRrQlNKINks44DMR1gwXp0p4LaVIeccX2KHTTcHVqQ==",
"dev": true,
"dependencies": {
"agent-base": "^7.0.1",
"debug": "^4.3.4",
"socks": "^2.7.1"
},
"engines": {
"node": ">= 14"
}
},
"node_modules/socks/node_modules/ip": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
"integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==",
"dev": true
},
"node_modules/source-map": { "node_modules/source-map": {
"version": "0.6.1", "version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@ -5543,13 +5837,14 @@
"node": ">=6" "node": ">=6"
} }
}, },
"node_modules/string_decoder": { "node_modules/streamx": {
"version": "1.3.0", "version": "2.15.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.0.tgz",
"integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "integrity": "sha512-HcxY6ncGjjklGs1xsP1aR71INYcsXFJet5CU1CHqihQ2J5nOsbd4OjgjHO42w/4QNv9gZb3BueV+Vxok5pLEXg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"safe-buffer": "~5.2.0" "fast-fifo": "^1.1.0",
"queue-tick": "^1.0.1"
} }
}, },
"node_modules/string-width": { "node_modules/string-width": {
@ -5705,31 +6000,25 @@
} }
}, },
"node_modules/tar-fs": { "node_modules/tar-fs": {
"version": "2.1.1", "version": "3.0.2",
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.2.tgz",
"integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", "integrity": "sha512-mLQ5iTTCv2tt3a4BwvD8QX1YFVBL/94/Nd+U2il38wt2+zaJSusp1VwJSNkBmB48FeTdOqptf1DAUIosXQBRrQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"chownr": "^1.1.1",
"mkdirp-classic": "^0.5.2", "mkdirp-classic": "^0.5.2",
"pump": "^3.0.0", "pump": "^3.0.0",
"tar-stream": "^2.1.4" "tar-stream": "^3.1.0"
} }
}, },
"node_modules/tar-stream": { "node_modules/tar-stream": {
"version": "2.2.0", "version": "3.1.4",
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.4.tgz",
"integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "integrity": "sha512-IlHr7ZOW6XaVBCrSCokUJG4IqUuRcWW76B8XbrtCotbaDh6zVGE7WPCzaSz1CN+acFmWiwoa+cE4RZsom0RzXg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"bl": "^4.0.3", "b4a": "^1.6.4",
"end-of-stream": "^1.4.1", "fast-fifo": "^1.2.0",
"fs-constants": "^1.0.0", "streamx": "^2.15.0"
"inherits": "^2.0.3",
"readable-stream": "^3.1.1"
},
"engines": {
"node": ">=6"
} }
}, },
"node_modules/terser": { "node_modules/terser": {
@ -6012,16 +6301,16 @@
} }
}, },
"node_modules/typescript": { "node_modules/typescript": {
"version": "5.0.4", "version": "4.9.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
"integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
"dev": true, "dev": true,
"bin": { "bin": {
"tsc": "bin/tsc", "tsc": "bin/tsc",
"tsserver": "bin/tsserver" "tsserver": "bin/tsserver"
}, },
"engines": { "engines": {
"node": ">=12.20" "node": ">=4.2.0"
} }
}, },
"node_modules/uglify-js": { "node_modules/uglify-js": {
@ -6062,6 +6351,15 @@
"through": "^2.3.8" "through": "^2.3.8"
} }
}, },
"node_modules/universalify": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
"dev": true,
"engines": {
"node": ">= 4.0.0"
}
},
"node_modules/uri-js": { "node_modules/uri-js": {
"version": "4.4.1", "version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
@ -6071,12 +6369,6 @@
"punycode": "^2.1.0" "punycode": "^2.1.0"
} }
}, },
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
"dev": true
},
"node_modules/v8-to-istanbul": { "node_modules/v8-to-istanbul": {
"version": "9.1.0", "version": "9.1.0",
"resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz",
@ -6101,6 +6393,22 @@
"spdx-expression-parse": "^3.0.0" "spdx-expression-parse": "^3.0.0"
} }
}, },
"node_modules/vm2": {
"version": "3.9.19",
"resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.19.tgz",
"integrity": "sha512-J637XF0DHDMV57R6JyVsTak7nIL8gy5KH4r1HiwWLf/4GBbb5MKL5y7LpmF4A8E2nR6XmzpmMFQ7V7ppPTmUQg==",
"dev": true,
"dependencies": {
"acorn": "^8.7.0",
"acorn-walk": "^8.2.0"
},
"bin": {
"vm2": "bin/vm2"
},
"engines": {
"node": ">=6.0"
}
},
"node_modules/vscode-oniguruma": { "node_modules/vscode-oniguruma": {
"version": "1.7.0", "version": "1.7.0",
"resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz",

View File

@ -136,7 +136,7 @@
} }
}, },
"devDependencies": { "devDependencies": {
"@rollup/plugin-commonjs": "^24.0.1", "@rollup/plugin-commonjs": "^25.0.2",
"@rollup/plugin-inject": "^5.0.3", "@rollup/plugin-inject": "^5.0.3",
"@rollup/plugin-json": "^6.0.0", "@rollup/plugin-json": "^6.0.0",
"@rollup/plugin-multi-entry": "^6.0.0", "@rollup/plugin-multi-entry": "^6.0.0",
@ -146,8 +146,8 @@
"@rollup/plugin-typescript": "^11.1.0", "@rollup/plugin-typescript": "^11.1.0",
"@types/chai": "^4.2.22", "@types/chai": "^4.2.22",
"@types/mocha": "^10.0.0", "@types/mocha": "^10.0.0",
"bigint-mod-arith": "^3.2.1", "bigint-mod-arith": "^3.3.1",
"c8": "^7.12.0", "c8": "^8.0.0",
"chai": "^4.3.3", "chai": "^4.3.3",
"dotenv": "^16.0.3", "dotenv": "^16.0.3",
"glob": "^10.0.0", "glob": "^10.0.0",
@ -156,7 +156,7 @@
"mocha": "^10.0.0", "mocha": "^10.0.0",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"pirates": "^4.0.1", "pirates": "^4.0.1",
"puppeteer": "^19.1.2", "puppeteer": "^20.7.3",
"rimraf": "^5.0.0", "rimraf": "^5.0.0",
"rollup": "^3.20.2", "rollup": "^3.20.2",
"rollup-plugin-dts": "^5.3.0", "rollup-plugin-dts": "^5.3.0",
@ -164,6 +164,6 @@
"tslib": "^2.3.1", "tslib": "^2.3.1",
"typedoc": "~0.23.0", "typedoc": "~0.23.0",
"typedoc-plugin-markdown": "~3.14.0", "typedoc-plugin-markdown": "~3.14.0",
"typescript": "^5.0.3" "typescript": "^4.4.3"
} }
} }