From 65dd67cef537a78601f5ef0cc731ec933ad19440 Mon Sep 17 00:00:00 2001 From: M_Viper Date: Thu, 22 Oct 2026 09:13:53 +0000 Subject: [PATCH] Delete 100 files via Git Manager GUI --- .../windows-sign/dist/esm/index.d.ts | 4 - .../@electron/windows-sign/dist/esm/index.js | 3 - .../@electron/windows-sign/dist/esm/sea.d.ts | 61 -- .../@electron/windows-sign/dist/esm/sea.js | 213 ------- .../windows-sign/dist/esm/sign-with-hook.d.ts | 8 - .../windows-sign/dist/esm/sign-with-hook.js | 38 -- .../dist/esm/sign-with-signtool.d.ts | 2 - .../dist/esm/sign-with-signtool.js | 111 ---- .../@electron/windows-sign/dist/esm/sign.d.ts | 13 - .../@electron/windows-sign/dist/esm/sign.js | 41 -- .../windows-sign/dist/esm/spawn.d.ts | 16 - .../@electron/windows-sign/dist/esm/spawn.js | 30 - .../windows-sign/dist/esm/types.d.ts | 143 ----- .../@electron/windows-sign/dist/esm/types.js | 1 - .../windows-sign/dist/esm/utils/log.d.ts | 2 - .../windows-sign/dist/esm/utils/log.js | 5 - .../dist/esm/utils/parse-env.d.ts | 11 - .../windows-sign/dist/esm/utils/parse-env.js | 20 - .../@electron/windows-sign/package.json | 70 --- .../windows-sign/vendor/signtool.exe | Bin 459216 -> 0 bytes node_modules/@isaacs/fs-minipass/LICENSE | 15 - node_modules/@isaacs/fs-minipass/README.md | 71 --- .../fs-minipass/dist/commonjs/index.d.ts | 118 ---- .../fs-minipass/dist/commonjs/index.d.ts.map | 1 - .../fs-minipass/dist/commonjs/index.js | 430 --------------- .../fs-minipass/dist/commonjs/index.js.map | 1 - .../fs-minipass/dist/commonjs/package.json | 3 - .../@isaacs/fs-minipass/dist/esm/index.d.ts | 118 ---- .../fs-minipass/dist/esm/index.d.ts.map | 1 - .../@isaacs/fs-minipass/dist/esm/index.js | 420 -------------- .../@isaacs/fs-minipass/dist/esm/index.js.map | 1 - .../@isaacs/fs-minipass/dist/esm/package.json | 3 - node_modules/@isaacs/fs-minipass/package.json | 72 --- .../@kwsites/file-exists/CHANGELOG.md | 12 - node_modules/@kwsites/file-exists/LICENSE | 20 - .../@kwsites/file-exists/dist/index.d.ts | 1 - .../@kwsites/file-exists/dist/index.js | 7 - .../@kwsites/file-exists/dist/index.js.map | 1 - .../@kwsites/file-exists/dist/src/index.d.ts | 19 - .../@kwsites/file-exists/dist/src/index.js | 55 -- .../file-exists/dist/src/index.js.map | 1 - .../file-exists/dist/test/__mocks__/fs.d.ts | 7 - .../file-exists/dist/test/__mocks__/fs.js | 26 - .../file-exists/dist/test/__mocks__/fs.js.map | 1 - .../file-exists/dist/test/exists.spec.d.ts | 1 - .../file-exists/dist/test/exists.spec.js | 77 --- .../file-exists/dist/test/exists.spec.js.map | 1 - .../@kwsites/file-exists/package.json | 42 -- node_modules/@kwsites/file-exists/readme.md | 41 -- .../@kwsites/promise-deferred/LICENSE | 21 - .../@kwsites/promise-deferred/dist/index.d.ts | 49 -- .../@kwsites/promise-deferred/dist/index.js | 59 -- .../promise-deferred/dist/index.js.map | 1 - .../@kwsites/promise-deferred/package.json | 43 -- .../@malept/cross-spawn-promise/LICENSE | 202 ------- .../@malept/cross-spawn-promise/README.md | 27 - .../cross-spawn-promise/dist/src/index.d.ts | 61 -- .../cross-spawn-promise/dist/src/index.js | 113 ---- .../cross-spawn-promise/dist/src/index.js.map | 1 - .../@malept/cross-spawn-promise/package.json | 107 ---- node_modules/@malept/flatpak-bundler/LICENSE | 19 - .../@malept/flatpak-bundler/README.md | 210 ------- node_modules/@malept/flatpak-bundler/index.js | 318 ----------- .../@malept/flatpak-bundler/package.json | 46 -- node_modules/@noble/hashes/LICENSE | 21 - node_modules/@noble/hashes/README.md | 521 ------------------ node_modules/@noble/hashes/_assert.d.ts | 17 - node_modules/@noble/hashes/_assert.d.ts.map | 1 - node_modules/@noble/hashes/_assert.js | 18 - node_modules/@noble/hashes/_assert.js.map | 1 - node_modules/@noble/hashes/_blake.d.ts | 14 - node_modules/@noble/hashes/_blake.d.ts.map | 1 - node_modules/@noble/hashes/_blake.js | 50 -- node_modules/@noble/hashes/_blake.js.map | 1 - node_modules/@noble/hashes/_md.d.ts | 51 -- node_modules/@noble/hashes/_md.d.ts.map | 1 - node_modules/@noble/hashes/_md.js | 162 ------ node_modules/@noble/hashes/_md.js.map | 1 - node_modules/@noble/hashes/_u64.d.ts | 55 -- node_modules/@noble/hashes/_u64.d.ts.map | 1 - node_modules/@noble/hashes/_u64.js | 90 --- node_modules/@noble/hashes/_u64.js.map | 1 - node_modules/@noble/hashes/argon2.d.ts | 32 -- node_modules/@noble/hashes/argon2.d.ts.map | 1 - node_modules/@noble/hashes/argon2.js | 401 -------------- node_modules/@noble/hashes/argon2.js.map | 1 - node_modules/@noble/hashes/blake1.d.ts | 106 ---- node_modules/@noble/hashes/blake1.d.ts.map | 1 - node_modules/@noble/hashes/blake1.js | 459 --------------- node_modules/@noble/hashes/blake1.js.map | 1 - node_modules/@noble/hashes/blake2.d.ts | 116 ---- node_modules/@noble/hashes/blake2.d.ts.map | 1 - node_modules/@noble/hashes/blake2.js | 420 -------------- node_modules/@noble/hashes/blake2.js.map | 1 - node_modules/@noble/hashes/blake2b.d.ts | 11 - node_modules/@noble/hashes/blake2b.d.ts.map | 1 - node_modules/@noble/hashes/blake2b.js | 14 - node_modules/@noble/hashes/blake2b.js.map | 1 - node_modules/@noble/hashes/blake2s.d.ts | 20 - node_modules/@noble/hashes/blake2s.d.ts.map | 1 - 100 files changed, 6230 deletions(-) delete mode 100644 node_modules/@electron/windows-sign/dist/esm/index.d.ts delete mode 100644 node_modules/@electron/windows-sign/dist/esm/index.js delete mode 100644 node_modules/@electron/windows-sign/dist/esm/sea.d.ts delete mode 100644 node_modules/@electron/windows-sign/dist/esm/sea.js delete mode 100644 node_modules/@electron/windows-sign/dist/esm/sign-with-hook.d.ts delete mode 100644 node_modules/@electron/windows-sign/dist/esm/sign-with-hook.js delete mode 100644 node_modules/@electron/windows-sign/dist/esm/sign-with-signtool.d.ts delete mode 100644 node_modules/@electron/windows-sign/dist/esm/sign-with-signtool.js delete mode 100644 node_modules/@electron/windows-sign/dist/esm/sign.d.ts delete mode 100644 node_modules/@electron/windows-sign/dist/esm/sign.js delete mode 100644 node_modules/@electron/windows-sign/dist/esm/spawn.d.ts delete mode 100644 node_modules/@electron/windows-sign/dist/esm/spawn.js delete mode 100644 node_modules/@electron/windows-sign/dist/esm/types.d.ts delete mode 100644 node_modules/@electron/windows-sign/dist/esm/types.js delete mode 100644 node_modules/@electron/windows-sign/dist/esm/utils/log.d.ts delete mode 100644 node_modules/@electron/windows-sign/dist/esm/utils/log.js delete mode 100644 node_modules/@electron/windows-sign/dist/esm/utils/parse-env.d.ts delete mode 100644 node_modules/@electron/windows-sign/dist/esm/utils/parse-env.js delete mode 100644 node_modules/@electron/windows-sign/package.json delete mode 100644 node_modules/@electron/windows-sign/vendor/signtool.exe delete mode 100644 node_modules/@isaacs/fs-minipass/LICENSE delete mode 100644 node_modules/@isaacs/fs-minipass/README.md delete mode 100644 node_modules/@isaacs/fs-minipass/dist/commonjs/index.d.ts delete mode 100644 node_modules/@isaacs/fs-minipass/dist/commonjs/index.d.ts.map delete mode 100644 node_modules/@isaacs/fs-minipass/dist/commonjs/index.js delete mode 100644 node_modules/@isaacs/fs-minipass/dist/commonjs/index.js.map delete mode 100644 node_modules/@isaacs/fs-minipass/dist/commonjs/package.json delete mode 100644 node_modules/@isaacs/fs-minipass/dist/esm/index.d.ts delete mode 100644 node_modules/@isaacs/fs-minipass/dist/esm/index.d.ts.map delete mode 100644 node_modules/@isaacs/fs-minipass/dist/esm/index.js delete mode 100644 node_modules/@isaacs/fs-minipass/dist/esm/index.js.map delete mode 100644 node_modules/@isaacs/fs-minipass/dist/esm/package.json delete mode 100644 node_modules/@isaacs/fs-minipass/package.json delete mode 100644 node_modules/@kwsites/file-exists/CHANGELOG.md delete mode 100644 node_modules/@kwsites/file-exists/LICENSE delete mode 100644 node_modules/@kwsites/file-exists/dist/index.d.ts delete mode 100644 node_modules/@kwsites/file-exists/dist/index.js delete mode 100644 node_modules/@kwsites/file-exists/dist/index.js.map delete mode 100644 node_modules/@kwsites/file-exists/dist/src/index.d.ts delete mode 100644 node_modules/@kwsites/file-exists/dist/src/index.js delete mode 100644 node_modules/@kwsites/file-exists/dist/src/index.js.map delete mode 100644 node_modules/@kwsites/file-exists/dist/test/__mocks__/fs.d.ts delete mode 100644 node_modules/@kwsites/file-exists/dist/test/__mocks__/fs.js delete mode 100644 node_modules/@kwsites/file-exists/dist/test/__mocks__/fs.js.map delete mode 100644 node_modules/@kwsites/file-exists/dist/test/exists.spec.d.ts delete mode 100644 node_modules/@kwsites/file-exists/dist/test/exists.spec.js delete mode 100644 node_modules/@kwsites/file-exists/dist/test/exists.spec.js.map delete mode 100644 node_modules/@kwsites/file-exists/package.json delete mode 100644 node_modules/@kwsites/file-exists/readme.md delete mode 100644 node_modules/@kwsites/promise-deferred/LICENSE delete mode 100644 node_modules/@kwsites/promise-deferred/dist/index.d.ts delete mode 100644 node_modules/@kwsites/promise-deferred/dist/index.js delete mode 100644 node_modules/@kwsites/promise-deferred/dist/index.js.map delete mode 100644 node_modules/@kwsites/promise-deferred/package.json delete mode 100644 node_modules/@malept/cross-spawn-promise/LICENSE delete mode 100644 node_modules/@malept/cross-spawn-promise/README.md delete mode 100644 node_modules/@malept/cross-spawn-promise/dist/src/index.d.ts delete mode 100644 node_modules/@malept/cross-spawn-promise/dist/src/index.js delete mode 100644 node_modules/@malept/cross-spawn-promise/dist/src/index.js.map delete mode 100644 node_modules/@malept/cross-spawn-promise/package.json delete mode 100644 node_modules/@malept/flatpak-bundler/LICENSE delete mode 100644 node_modules/@malept/flatpak-bundler/README.md delete mode 100644 node_modules/@malept/flatpak-bundler/index.js delete mode 100644 node_modules/@malept/flatpak-bundler/package.json delete mode 100644 node_modules/@noble/hashes/LICENSE delete mode 100644 node_modules/@noble/hashes/README.md delete mode 100644 node_modules/@noble/hashes/_assert.d.ts delete mode 100644 node_modules/@noble/hashes/_assert.d.ts.map delete mode 100644 node_modules/@noble/hashes/_assert.js delete mode 100644 node_modules/@noble/hashes/_assert.js.map delete mode 100644 node_modules/@noble/hashes/_blake.d.ts delete mode 100644 node_modules/@noble/hashes/_blake.d.ts.map delete mode 100644 node_modules/@noble/hashes/_blake.js delete mode 100644 node_modules/@noble/hashes/_blake.js.map delete mode 100644 node_modules/@noble/hashes/_md.d.ts delete mode 100644 node_modules/@noble/hashes/_md.d.ts.map delete mode 100644 node_modules/@noble/hashes/_md.js delete mode 100644 node_modules/@noble/hashes/_md.js.map delete mode 100644 node_modules/@noble/hashes/_u64.d.ts delete mode 100644 node_modules/@noble/hashes/_u64.d.ts.map delete mode 100644 node_modules/@noble/hashes/_u64.js delete mode 100644 node_modules/@noble/hashes/_u64.js.map delete mode 100644 node_modules/@noble/hashes/argon2.d.ts delete mode 100644 node_modules/@noble/hashes/argon2.d.ts.map delete mode 100644 node_modules/@noble/hashes/argon2.js delete mode 100644 node_modules/@noble/hashes/argon2.js.map delete mode 100644 node_modules/@noble/hashes/blake1.d.ts delete mode 100644 node_modules/@noble/hashes/blake1.d.ts.map delete mode 100644 node_modules/@noble/hashes/blake1.js delete mode 100644 node_modules/@noble/hashes/blake1.js.map delete mode 100644 node_modules/@noble/hashes/blake2.d.ts delete mode 100644 node_modules/@noble/hashes/blake2.d.ts.map delete mode 100644 node_modules/@noble/hashes/blake2.js delete mode 100644 node_modules/@noble/hashes/blake2.js.map delete mode 100644 node_modules/@noble/hashes/blake2b.d.ts delete mode 100644 node_modules/@noble/hashes/blake2b.d.ts.map delete mode 100644 node_modules/@noble/hashes/blake2b.js delete mode 100644 node_modules/@noble/hashes/blake2b.js.map delete mode 100644 node_modules/@noble/hashes/blake2s.d.ts delete mode 100644 node_modules/@noble/hashes/blake2s.d.ts.map diff --git a/node_modules/@electron/windows-sign/dist/esm/index.d.ts b/node_modules/@electron/windows-sign/dist/esm/index.d.ts deleted file mode 100644 index 6add955..0000000 --- a/node_modules/@electron/windows-sign/dist/esm/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { sign } from './sign'; -import { createSeaSignTool, SeaOptions, InternalSeaOptions } from './sea'; -import { HookFunction, OptionalHookOptions, OptionalSignToolOptions, SignOptions, SignToolOptions, SignOptionsForDirectory, SignOptionsForFiles } from './types'; -export { sign, SignOptions, SignToolOptions, HookFunction, OptionalSignToolOptions, OptionalHookOptions, createSeaSignTool, SeaOptions, InternalSeaOptions, SignOptionsForDirectory, SignOptionsForFiles }; diff --git a/node_modules/@electron/windows-sign/dist/esm/index.js b/node_modules/@electron/windows-sign/dist/esm/index.js deleted file mode 100644 index de71781..0000000 --- a/node_modules/@electron/windows-sign/dist/esm/index.js +++ /dev/null @@ -1,3 +0,0 @@ -import { sign } from './sign'; -import { createSeaSignTool } from './sea'; -export { sign, createSeaSignTool }; diff --git a/node_modules/@electron/windows-sign/dist/esm/sea.d.ts b/node_modules/@electron/windows-sign/dist/esm/sea.d.ts deleted file mode 100644 index ac11ce0..0000000 --- a/node_modules/@electron/windows-sign/dist/esm/sea.d.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { SignToolOptions } from './types'; -/** - * Options for signing with a Node.js single executable application. - * - * @category Single executable applications - */ -export interface SeaOptions { - /** - * Full path to the Node.js single executable application. Needs to end with `.exe`. - */ - path: string; - /** - * A binary to use. Will use the current executable (process.execPath) by default. - * - * @defaultValue The Node.js {@link https://nodejs.org/api/process.html#processexecpath | `process.execPath`} - */ - bin?: string; - /** - * Options to pass to SignTool. - */ - windowsSign: SignToolOptions; -} -/** - * This interface represents {@link SeaOptions} with all optional properties - * inferred by `@electron/windows-sign` if not passed in by the user. - * - * @category Single executable applications - */ -export interface InternalSeaOptions extends Required { - /** - * Directory of the Node.js single executable application. - */ - dir: string; - /** - * File name of the Node.js single executable application. - */ - filename: string; -} -/** - * cross-dir uses new Error() stacks - * to figure out our directory in a way - * that's somewhat cross-compatible. - * - * We can't just use __dirname because it's - * undefined in ESM - and we can't use import.meta.url - * because TypeScript won't allow usage unless you're - * _only_ compiling for ESM. - */ -export declare const DIRNAME: string; -/** - * Uses Node's "Single Executable App" functionality - * to create a Node-driven signtool.exe that calls this - * module. - * - * This is useful with other tooling that _always_ calls - * a signtool.exe to sign. Some of those tools cannot be - * easily configured, but we _can_ override their signtool.exe. - * - * @category Single executable applications - */ -export declare function createSeaSignTool(options?: Partial): Promise; diff --git a/node_modules/@electron/windows-sign/dist/esm/sea.js b/node_modules/@electron/windows-sign/dist/esm/sea.js deleted file mode 100644 index 0f0c49d..0000000 --- a/node_modules/@electron/windows-sign/dist/esm/sea.js +++ /dev/null @@ -1,213 +0,0 @@ -import { getDirname } from 'cross-dirname'; -import path from 'path'; -import os from 'os'; -import fs from 'fs-extra'; -import postject from 'postject'; -import { spawnPromise } from './spawn'; -import { log } from './utils/log'; -/** - * cross-dir uses new Error() stacks - * to figure out our directory in a way - * that's somewhat cross-compatible. - * - * We can't just use __dirname because it's - * undefined in ESM - and we can't use import.meta.url - * because TypeScript won't allow usage unless you're - * _only_ compiling for ESM. - */ -export const DIRNAME = getDirname(); -const FILENAMES = { - SEA_CONFIG: 'sea-config.json', - SEA_MAIN: 'sea.js', - SEA_BLOB: 'sea.blob', - SEA_RECEIVER: 'receiver.mjs' -}; -const SEA_MAIN_SCRIPT = ` -const bin = "%PATH_TO_BIN%"; -const script = "%PATH_TO_SCRIPT%"; -const options = %WINDOWS_SIGN_OPTIONS% - -const { spawnSync } = require('child_process'); - -function main() { - console.log("@electron/windows-sign sea"); - console.log({ bin, script }); - - try { - const spawn = spawnSync( - bin, - [ script, JSON.stringify(options), JSON.stringify(process.argv.slice(1)) ], - { stdio: ['inherit', 'inherit', 'pipe'] } - ); - - if (spawn.status !== 0) { - throw new Error(\`Spawn failed with code: \${spawn.status}. Stderr: \${spawn.stderr}\`); - } - } catch (error) { - // Do not rethrow the error or write it to stdout/stderr. Then the process won't terminate. - // See: https://github.com/electron/windows-sign/pull/48 - process.exit(1); - } -} - -main(); -`; -const SEA_RECEIVER_SCRIPT = ` -import { sign } from '@electron/windows-sign'; -import fs from 'fs-extra'; -import path from 'path'; - -const logPath = path.join('electron-windows-sign.log'); -const options = JSON.parse(process.argv[2]); -const signArgv = JSON.parse(process.argv[3]); -const files = signArgv.slice(-1); - -try { - fs.appendFileSync(logPath, \`\\nCalled with: \${JSON.stringify(process.argv, null, 2)}\`); - - sign({ ...options, files }) - .then((result) => { - fs.appendFileSync(logPath, \`\\nSuccessfully signed with result: \${result}\`); - }) - .catch((error) => { - fs.appendFileSync(logPath, \`\\nError from sign: \${error}\`); - throw new Error(error); - }); -} catch (error) { - fs.appendFileSync(logPath, \`\\Error invoking sign: \${error}\`); - throw new Error(error); -} -`; -/** - * Uses Node's "Single Executable App" functionality - * to create a Node-driven signtool.exe that calls this - * module. - * - * This is useful with other tooling that _always_ calls - * a signtool.exe to sign. Some of those tools cannot be - * easily configured, but we _can_ override their signtool.exe. - * - * @category Single executable applications - */ -export async function createSeaSignTool(options = {}) { - checkCompatibility(); - const requiredOptions = await getOptions(options); - await createFiles(requiredOptions); - await createBlob(requiredOptions); - await createBinary(requiredOptions); - await createSeaReceiver(requiredOptions); - await cleanup(requiredOptions); - return requiredOptions; -} -async function createSeaReceiver(options) { - const receiverPath = path.join(options.dir, FILENAMES.SEA_RECEIVER); - await fs.ensureFile(receiverPath); - await fs.writeFile(receiverPath, SEA_RECEIVER_SCRIPT); -} -async function createFiles(options) { - const { dir, bin } = options; - const receiverPath = path.join(options.dir, FILENAMES.SEA_RECEIVER); - // sea-config.json - await fs.outputJSON(path.join(dir, FILENAMES.SEA_CONFIG), { - main: FILENAMES.SEA_MAIN, - output: FILENAMES.SEA_BLOB, - disableExperimentalSEAWarning: true - }, { - spaces: 2 - }); - // signtool.js - const binPath = bin || process.execPath; - const script = SEA_MAIN_SCRIPT - .replace('%PATH_TO_BIN%', escapeMaybe(binPath)) - .replace('%PATH_TO_SCRIPT%', escapeMaybe(receiverPath)) - .replace('%WINDOWS_SIGN_OPTIONS%', JSON.stringify(options.windowsSign)); - await fs.outputFile(path.join(dir, FILENAMES.SEA_MAIN), script); -} -async function createBlob(options) { - const args = ['--experimental-sea-config', 'sea-config.json']; - const bin = process.execPath; - const cwd = options.dir; - log(`Calling ${bin} with options:`, args); - const { stderr, stdout } = await spawnPromise(bin, args, { - cwd - }); - log('stdout:', stdout); - log('stderr:', stderr); -} -async function createBinary(options) { - const { dir, filename } = options; - log(`Creating ${filename} in ${dir}`); - // Copy Node over - const seaPath = path.join(dir, filename); - await fs.copyFile(process.execPath, seaPath); - // Remove the Node signature - const signtool = path.join(DIRNAME, '../../vendor/signtool.exe'); - await spawnPromise(signtool, [ - 'remove', - '/s', - seaPath - ]); - // Inject the blob - const blob = await fs.readFile(path.join(dir, FILENAMES.SEA_BLOB)); - await postject.inject(seaPath, 'NODE_SEA_BLOB', blob, { - sentinelFuse: 'NODE_SEA_FUSE_fce680ab2cc467b6e072b8b5df1996b2' - }); -} -async function cleanup(options) { - const { dir } = options; - const toRemove = [ - FILENAMES.SEA_BLOB, - FILENAMES.SEA_MAIN, - FILENAMES.SEA_CONFIG - ]; - for (const file of toRemove) { - try { - await fs.remove(path.join(dir, file)); - } - catch (error) { - console.warn(`Tried and failed to remove ${file}. Continuing.`, error); - } - } -} -async function getOptions(options) { - const cloned = { ...options }; - if (!cloned.path) { - cloned.path = path.join(os.homedir(), '.electron', 'windows-sign', 'sea.exe'); - await fs.ensureFile(cloned.path); - } - if (!cloned.bin) { - cloned.bin = process.execPath; - } - if (!cloned.windowsSign) { - throw new Error('Did not find windowsSign options, which are required'); - } - return { - path: cloned.path, - dir: path.dirname(cloned.path), - filename: path.basename(cloned.path), - bin: cloned.bin, - windowsSign: cloned.windowsSign - }; -} -/** - * Ensures that the current Node.js version supports SEA app generation and errors if not. - */ -function checkCompatibility() { - const version = process.versions.node; - const split = version.split('.'); - const major = parseInt(split[0], 10); - if (major >= 20) { - return true; - } - throw new Error(`Your Node.js version (${process.version}) does not support Single Executable Applications. Please upgrade your version of Node.js.`); -} -/** Make sure that the input string has escaped backwards slashes - * - but never double-escaped backwards slashes. - */ -function escapeMaybe(input) { - const result = input.split(path.sep).join('\\\\'); - if (result.includes('\\\\\\\\')) { - throw new Error(`Your passed input ${input} contains escaped slashes. Please do not escape them`); - } - return result; -} diff --git a/node_modules/@electron/windows-sign/dist/esm/sign-with-hook.d.ts b/node_modules/@electron/windows-sign/dist/esm/sign-with-hook.d.ts deleted file mode 100644 index 115fc4a..0000000 --- a/node_modules/@electron/windows-sign/dist/esm/sign-with-hook.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { InternalSignOptions } from './types'; -/** - * Sign with a hook function, basically letting everyone - * write completely custom sign logic - * - * @param {InternalSignOptions} options - */ -export declare function signWithHook(options: InternalSignOptions): Promise; diff --git a/node_modules/@electron/windows-sign/dist/esm/sign-with-hook.js b/node_modules/@electron/windows-sign/dist/esm/sign-with-hook.js deleted file mode 100644 index d38d9fe..0000000 --- a/node_modules/@electron/windows-sign/dist/esm/sign-with-hook.js +++ /dev/null @@ -1,38 +0,0 @@ -import path from 'path'; -import { log } from './utils/log'; -let hookFunction; -function getHookFunction(options) { - if (options.hookFunction) { - return options.hookFunction; - } - if (options.hookModulePath) { - const module = require(path.resolve(options.hookModulePath)); - if (module.default) { - return module.default; - } - if (typeof module === 'function') { - return module; - } - } - if (!hookFunction) { - throw new Error('No hook function found. Signing will not be possible. Please see the documentation for how to pass a hook function to @electron/windows-sign'); - } - return hookFunction; -} -/** - * Sign with a hook function, basically letting everyone - * write completely custom sign logic - * - * @param {InternalSignOptions} options - */ -export async function signWithHook(options) { - hookFunction = getHookFunction(options); - for (const file of options.files) { - try { - await hookFunction(file); - } - catch (error) { - log(`Error signing ${file}`, error); - } - } -} diff --git a/node_modules/@electron/windows-sign/dist/esm/sign-with-signtool.d.ts b/node_modules/@electron/windows-sign/dist/esm/sign-with-signtool.d.ts deleted file mode 100644 index 3e42c3c..0000000 --- a/node_modules/@electron/windows-sign/dist/esm/sign-with-signtool.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { InternalSignOptions } from './types'; -export declare function signWithSignTool(options: InternalSignOptions): Promise; diff --git a/node_modules/@electron/windows-sign/dist/esm/sign-with-signtool.js b/node_modules/@electron/windows-sign/dist/esm/sign-with-signtool.js deleted file mode 100644 index 1b27599..0000000 --- a/node_modules/@electron/windows-sign/dist/esm/sign-with-signtool.js +++ /dev/null @@ -1,111 +0,0 @@ -import path from 'path'; -import { log } from './utils/log'; -import { spawnPromise } from './spawn'; -import { getDirname } from 'cross-dirname'; -const DIRNAME = getDirname(); -function getSigntoolArgs(options) { - // See the following url for docs - // https://learn.microsoft.com/en-us/dotnet/framework/tools/signtool-exe - const { certificateFile, certificatePassword, hash, timestampServer } = options; - const args = ['sign']; - // Automatically select cert - if (options.automaticallySelectCertificate) { - args.push('/a'); - } - // Dual-sign - if (options.appendSignature) { - args.push('/as'); - } - // Timestamp - if (hash === "sha256" /* HASHES.sha256 */) { - args.push('/tr', timestampServer); - args.push('/td', hash); - } - else { - args.push('/t', timestampServer); - } - // Certificate file - if (certificateFile) { - args.push('/f', path.resolve(certificateFile)); - } - // Certificate password - if (certificatePassword) { - args.push('/p', certificatePassword); - } - // Hash - args.push('/fd', hash); - // Description - if (options.description) { - args.push('/d', options.description); - } - // Website - if (options.website) { - args.push('/du', options.website); - } - // Debug - if (options.debug) { - args.push('/debug'); - } - if (options.signWithParams) { - const extraArgs = []; - if (Array.isArray(options.signWithParams)) { - extraArgs.push(...options.signWithParams); - } - else { - // Split up at spaces and doublequotes - extraArgs.push(...options.signWithParams.match(/(?:[^\s"]+|"[^"]*")+/g)); - } - log('Parsed signWithParams as:', extraArgs); - args.push(...extraArgs); - } - return args; -} -async function execute(options) { - const { signToolPath, files } = options; - const args = getSigntoolArgs(options); - log('Executing signtool with args', { args, files }); - const { code, stderr, stdout } = await spawnPromise(signToolPath, [...args, ...files], { - env: process.env, - cwd: process.cwd() - }); - if (code !== 0) { - throw new Error(`Signtool exited with code ${code}. Stderr: ${stderr}. Stdout: ${stdout}`); - } -} -export async function signWithSignTool(options) { - const certificatePassword = options.certificatePassword || process.env.WINDOWS_CERTIFICATE_PASSWORD; - const certificateFile = options.certificateFile || process.env.WINDOWS_CERTIFICATE_FILE; - const signWithParams = options.signWithParams || process.env.WINDOWS_SIGN_WITH_PARAMS; - const timestampServer = options.timestampServer || process.env.WINDOWS_TIMESTAMP_SERVER || 'http://timestamp.digicert.com'; - const signToolPath = options.signToolPath || process.env.WINDOWS_SIGNTOOL_PATH || path.join(DIRNAME, '../../vendor/signtool.exe'); - const description = options.description || process.env.WINDOWS_SIGN_DESCRIPTION; - const website = options.website || process.env.WINDOWS_SIGN_WEBSITE; - if (!certificateFile && !(signWithParams || signToolPath)) { - throw new Error('You must provide a certificateFile and a signToolPath or signing parameters'); - } - if (!signToolPath && !signWithParams && !certificatePassword) { - throw new Error('You must provide a certificatePassword or signing parameters'); - } - const internalOptions = { - appendSignature: false, - ...options, - certificateFile, - certificatePassword, - signWithParams, - signToolPath, - description, - timestampServer, - website - }; - const hashes = options.hashes == null || options.hashes.length === 0 - ? ["sha1" /* HASHES.sha1 */, "sha256" /* HASHES.sha256 */] - : options.hashes; - if (hashes.includes("sha1" /* HASHES.sha1 */)) { - await execute({ ...internalOptions, hash: "sha1" /* HASHES.sha1 */ }); - // If we signed with SHA1, we need to append the SHA256 signature: - internalOptions.appendSignature = true; - } - if (hashes.includes("sha256" /* HASHES.sha256 */)) { - await execute({ ...internalOptions, hash: "sha256" /* HASHES.sha256 */ }); - } -} diff --git a/node_modules/@electron/windows-sign/dist/esm/sign.d.ts b/node_modules/@electron/windows-sign/dist/esm/sign.d.ts deleted file mode 100644 index 3710442..0000000 --- a/node_modules/@electron/windows-sign/dist/esm/sign.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { SignOptions } from './types'; -/** - * This is the main function exported from this module. It'll - * look at your options, determine the best way to sign a file, - * and then return one of our internal functions to do the actual - * signing. - * - * @param options - * @returns {Promise} - * - * @category Sign - */ -export declare function sign(options: SignOptions): Promise; diff --git a/node_modules/@electron/windows-sign/dist/esm/sign.js b/node_modules/@electron/windows-sign/dist/esm/sign.js deleted file mode 100644 index 86ef48a..0000000 --- a/node_modules/@electron/windows-sign/dist/esm/sign.js +++ /dev/null @@ -1,41 +0,0 @@ -import { getFilesToSign } from './files'; -import { signWithHook } from './sign-with-hook'; -import { signWithSignTool } from './sign-with-signtool'; -import { enableDebugging, log } from './utils/log'; -import { booleanFromEnv } from './utils/parse-env'; -/** - * This is the main function exported from this module. It'll - * look at your options, determine the best way to sign a file, - * and then return one of our internal functions to do the actual - * signing. - * - * @param options - * @returns {Promise} - * - * @category Sign - */ -export async function sign(options) { - const signJavaScript = options.signJavaScript || booleanFromEnv('WINDOWS_SIGN_JAVASCRIPT'); - const hookModulePath = options.hookModulePath || process.env.WINDOWS_SIGN_HOOK_MODULE_PATH; - if (options.debug) { - enableDebugging(); - } - log('Called with options', { options }); - const files = getFilesToSign(options); - const internalOptions = { - ...options, - signJavaScript, - hookModulePath, - files - }; - // If a hook is provides, sign with the hook - if (internalOptions.hookFunction || internalOptions.hookModulePath) { - log('Signing with hook'); - return signWithHook(internalOptions); - } - // If we're going with the defaults, we're signing - // with signtool. Custom signing tools are also - // handled here. - log('Signing with signtool'); - return signWithSignTool(internalOptions); -} diff --git a/node_modules/@electron/windows-sign/dist/esm/spawn.d.ts b/node_modules/@electron/windows-sign/dist/esm/spawn.d.ts deleted file mode 100644 index 19f6ce8..0000000 --- a/node_modules/@electron/windows-sign/dist/esm/spawn.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/// -import { SpawnOptions } from 'child_process'; -export interface SpawnPromiseResult { - stdout: string; - stderr: string; - code: number; -} -/** - * Spawn a process as a promise - * - * @param {string} name - * @param {Array} args - * @param {SpawnOptions} [options] - * @returns {Promise} - */ -export declare function spawnPromise(name: string, args: Array, options?: SpawnOptions): Promise; diff --git a/node_modules/@electron/windows-sign/dist/esm/spawn.js b/node_modules/@electron/windows-sign/dist/esm/spawn.js deleted file mode 100644 index 0824325..0000000 --- a/node_modules/@electron/windows-sign/dist/esm/spawn.js +++ /dev/null @@ -1,30 +0,0 @@ -import { log } from './utils/log'; -/** - * Spawn a process as a promise - * - * @param {string} name - * @param {Array} args - * @param {SpawnOptions} [options] - * @returns {Promise} - */ -export function spawnPromise(name, args, options) { - return new Promise((resolve) => { - const { spawn } = require('child_process'); - const fork = spawn(name, args, options); - log(`Spawning ${name} with ${args}`); - let stdout = ''; - let stderr = ''; - fork.stdout.on('data', (data) => { - log(`Spawn ${name} stdout: ${data}`); - stdout += data; - }); - fork.stderr.on('data', (data) => { - log(`Spawn ${name} stderr: ${data}`); - stderr += data; - }); - fork.on('close', (code) => { - log(`Spawn ${name}: Child process exited with code ${code}`); - resolve({ stdout, stderr, code }); - }); - }); -} diff --git a/node_modules/@electron/windows-sign/dist/esm/types.d.ts b/node_modules/@electron/windows-sign/dist/esm/types.d.ts deleted file mode 100644 index bebe8d4..0000000 --- a/node_modules/@electron/windows-sign/dist/esm/types.d.ts +++ /dev/null @@ -1,143 +0,0 @@ -/** - * SHA-1 has been deprecated on Windows since 2016. We'll still dualsign. - * https://social.technet.microsoft.com/wiki/contents/articles/32288.windows-enforcement-of-sha1-certificates.aspx#Post-February_TwentySeventeen_Plan - */ -export declare const enum HASHES { - sha1 = "sha1", - sha256 = "sha256" -} -/** - * Signing can be either by specifying a directory of files to sign. - * - * @category Sign - */ -export type SignOptions = SignOptionsForDirectory | SignOptionsForFiles; -/** - * Options for signing by passing a path to a directory to be codesigned. - * - * @category Sign - */ -export interface SignOptionsForDirectory extends SignToolOptions { - /** - * Path to the application directory. We will scan this - * directory for any `.dll`, `.exe`, `.msi`, or `.node` files and - * codesign them with `signtool.exe`. - */ - appDirectory: string; -} -/** - * Options for signing by passing an array of files to be codesigned. - * - * @category Sign - */ -export interface SignOptionsForFiles extends SignToolOptions { - /** - * Array of paths to files to be codesigned with `signtool.exe`. - */ - files: Array; -} -/** - * @category Utility - */ -export interface SignToolOptions extends OptionalSignToolOptions, OptionalHookOptions { -} -export interface InternalSignOptions extends SignOptionsForFiles { -} -export interface InternalSignToolOptions extends OptionalSignToolOptions, OptionalHookOptions { - signToolPath: string; - timestampServer: string; - files: Array; - hash: HASHES; - appendSignature?: boolean; -} -/** - * @category Utility - */ -export interface OptionalSignToolOptions { - /** - * Path to a `.pfx` code signing certificate. - * Will use `process.env.WINDOWS_CERTIFICATE_FILE` if this option is not provided. - */ - certificateFile?: string; - /** - * Password to {@link certificateFile}. If you don't provide this, - * you need to provide the {@link signWithParams} option. - * Will use `process.env.WINDOWS_CERTIFICATE_PASSWORD` if this option is not provided. - */ - certificatePassword?: string; - /** - * Path to a timestamp server. - * Will use `process.env.WINDOWS_TIMESTAMP_SERVER` if this option is not provided. - * - * @defaultValue http://timestamp.digicert.com - */ - timestampServer?: string; - /** - * Description of the signed content. Will be passed to `signtool.exe` as `/d`. - */ - description?: string; - /** - * URL for the expanded description of the signed content. Will be passed to `signtool.exe` as `/du`. - */ - website?: string; - /** - * Path to the `signtool.exe` used to sign. Will use `vendor/signtool.exe` if not provided. - */ - signToolPath?: string; - /** - * Additional parameters to pass to `signtool.exe`. - * - * @see Microsoft's {@link https://learn.microsoft.com/en-us/dotnet/framework/tools/signtool-exe SignTool.exe documentation} - */ - signWithParams?: string | Array; - /** - * Enables debug logging. - * - * @defaultValue false - */ - debug?: boolean; - /** - * Automatically selects the best signing certificate according to SignTool. Will be passed to `signtool.exe` as `/a`. - * - * @defaultValue true - */ - automaticallySelectCertificate?: boolean; - /** - * Whether or not to sign JavaScript files. - * - * @defaultValue false - */ - signJavaScript?: boolean; - /** - * Hash algorithms to use for signing. - */ - hashes?: HASHES[]; -} -/** - * Custom function that is called sequentially for each file that needs to be signed. - * - * @param fileToSign Absolute path to the file to sign - * - * @category Utility - */ -export type HookFunction = (fileToSign: string) => void | Promise; -/** - * @category Utility - */ -export interface OptionalHookOptions { - /** - * A hook function called for each file that needs to be signed. - * Use this for full control over your app's signing logic. - * `@electron/windows-sign` will not attempt to sign with SignTool if a custom hook is detected. - */ - hookFunction?: HookFunction; - /** - * A path to a JavaScript file, exporting a single function that will be called for each file that needs to be signed. - * Use this for full control over your app's signing logic. - * `@electron/windows-sign` will not attempt to sign with SignTool if a custom hook is detected. - */ - hookModulePath?: string; -} -export interface InternalHookOptions extends OptionalHookOptions { - files: Array; -} diff --git a/node_modules/@electron/windows-sign/dist/esm/types.js b/node_modules/@electron/windows-sign/dist/esm/types.js deleted file mode 100644 index cb0ff5c..0000000 --- a/node_modules/@electron/windows-sign/dist/esm/types.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@electron/windows-sign/dist/esm/utils/log.d.ts b/node_modules/@electron/windows-sign/dist/esm/utils/log.d.ts deleted file mode 100644 index d36710e..0000000 --- a/node_modules/@electron/windows-sign/dist/esm/utils/log.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare function enableDebugging(): void; -export declare const log: import("debug").Debugger; diff --git a/node_modules/@electron/windows-sign/dist/esm/utils/log.js b/node_modules/@electron/windows-sign/dist/esm/utils/log.js deleted file mode 100644 index 3fd1824..0000000 --- a/node_modules/@electron/windows-sign/dist/esm/utils/log.js +++ /dev/null @@ -1,5 +0,0 @@ -import { debug as debugModule } from 'debug'; -export function enableDebugging() { - debugModule.enable('electron-windows-sign'); -} -export const log = debugModule('electron-windows-sign'); diff --git a/node_modules/@electron/windows-sign/dist/esm/utils/parse-env.d.ts b/node_modules/@electron/windows-sign/dist/esm/utils/parse-env.d.ts deleted file mode 100644 index a575201..0000000 --- a/node_modules/@electron/windows-sign/dist/esm/utils/parse-env.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** - * Tries to parse an process.env string to a boolean. - * Will understand undefined as the default value - * Will understand "false", "False", "fAlse", or "0" as `false` - * Will understand everything else as true - * - * @export - * @param {string} name - * @return {*} {boolean} - */ -export declare function booleanFromEnv(name: string): boolean | undefined; diff --git a/node_modules/@electron/windows-sign/dist/esm/utils/parse-env.js b/node_modules/@electron/windows-sign/dist/esm/utils/parse-env.js deleted file mode 100644 index 68cd742..0000000 --- a/node_modules/@electron/windows-sign/dist/esm/utils/parse-env.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Tries to parse an process.env string to a boolean. - * Will understand undefined as the default value - * Will understand "false", "False", "fAlse", or "0" as `false` - * Will understand everything else as true - * - * @export - * @param {string} name - * @return {*} {boolean} - */ -export function booleanFromEnv(name) { - const value = process.env[name]; - if (value === undefined) { - return undefined; - } - if (value.toLowerCase() === 'false' || value === '0') { - return false; - } - return !!value; -} diff --git a/node_modules/@electron/windows-sign/package.json b/node_modules/@electron/windows-sign/package.json deleted file mode 100644 index 7d349c9..0000000 --- a/node_modules/@electron/windows-sign/package.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "name": "@electron/windows-sign", - "version": "1.2.2", - "description": "Codesign Electron Windows apps", - "main": "dist/cjs/index.js", - "module": "dist/esm/index.js", - "files": [ - "dist", - "entitlements", - "README.md", - "LICENSE", - "bin", - "vendor" - ], - "bin": { - "electron-windows-sign": "bin/electron-windows-sign.js" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/electron/windows-sign.git" - }, - "author": { - "name": "Felix Rieseberg", - "email": "felix@felixrieseberg.com" - }, - "license": "BSD-2-Clause", - "bugs": { - "url": "https://github.com/electron/windows-sign/issues" - }, - "homepage": "https://github.com/electron/windows-sign", - "publishConfig": { - "provenance": true - }, - "dependencies": { - "cross-dirname": "^0.1.0", - "debug": "^4.3.4", - "fs-extra": "^11.1.1", - "minimist": "^1.2.8", - "postject": "^1.0.0-alpha.6" - }, - "devDependencies": { - "@types/debug": "^4.1.10", - "@types/fs-extra": "^11.0.3", - "@types/node": "^18.18.7", - "@typescript-eslint/eslint-plugin": "^5.62.0", - "@typescript-eslint/parser": "^5.62.0", - "eslint": "^8.52.0", - "eslint-config-eslint": "^9.0.0", - "eslint-config-standard": "^17.1.0", - "eslint-plugin-import": "^2.29.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", - "globstar": "^1.0.0", - "standard": "^17.1.0", - "tsx": "^3.14.0", - "typedoc": "~0.25.13", - "typescript": "^5.2.2" - }, - "scripts": { - "build": "tsc && tsc -p tsconfig.esm.json", - "docs": "npx typedoc", - "lint": "eslint --ext .ts,.js src bin test", - "test:loader": "globstar -- node --loader tsx --test \"test/**/*.spec.ts\"", - "test": "globstar -- node --import tsx --test \"test/**/*.spec.ts\"", - "prepublishOnly": "yarn build" - }, - "engines": { - "node": ">=14.14" - } -} diff --git a/node_modules/@electron/windows-sign/vendor/signtool.exe b/node_modules/@electron/windows-sign/vendor/signtool.exe deleted file mode 100644 index cab1943fcd19c51b13e3cf92bf5f6ed991f08eee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 459216 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 diff --git a/node_modules/@isaacs/fs-minipass/LICENSE b/node_modules/@isaacs/fs-minipass/LICENSE deleted file mode 100644 index 19129e3..0000000 --- a/node_modules/@isaacs/fs-minipass/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/@isaacs/fs-minipass/README.md b/node_modules/@isaacs/fs-minipass/README.md deleted file mode 100644 index dac96e7..0000000 --- a/node_modules/@isaacs/fs-minipass/README.md +++ /dev/null @@ -1,71 +0,0 @@ -# fs-minipass - -Filesystem streams based on [minipass](http://npm.im/minipass). - -4 classes are exported: - -- ReadStream -- ReadStreamSync -- WriteStream -- WriteStreamSync - -When using `ReadStreamSync`, all of the data is made available -immediately upon consuming the stream. Nothing is buffered in memory -when the stream is constructed. If the stream is piped to a writer, -then it will synchronously `read()` and emit data into the writer as -fast as the writer can consume it. (That is, it will respect -backpressure.) If you call `stream.read()` then it will read the -entire file and return the contents. - -When using `WriteStreamSync`, every write is flushed to the file -synchronously. If your writes all come in a single tick, then it'll -write it all out in a single tick. It's as synchronous as you are. - -The async versions work much like their node builtin counterparts, -with the exception of introducing significantly less Stream machinery -overhead. - -## USAGE - -It's just streams, you pipe them or read() them or write() to them. - -```js -import { ReadStream, WriteStream } from 'fs-minipass' -// or: const { ReadStream, WriteStream } = require('fs-minipass') -const readStream = new ReadStream('file.txt') -const writeStream = new WriteStream('output.txt') -writeStream.write('some file header or whatever\n') -readStream.pipe(writeStream) -``` - -## ReadStream(path, options) - -Path string is required, but somewhat irrelevant if an open file -descriptor is passed in as an option. - -Options: - -- `fd` Pass in a numeric file descriptor, if the file is already open. -- `readSize` The size of reads to do, defaults to 16MB -- `size` The size of the file, if known. Prevents zero-byte read() - call at the end. -- `autoClose` Set to `false` to prevent the file descriptor from being - closed when the file is done being read. - -## WriteStream(path, options) - -Path string is required, but somewhat irrelevant if an open file -descriptor is passed in as an option. - -Options: - -- `fd` Pass in a numeric file descriptor, if the file is already open. -- `mode` The mode to create the file with. Defaults to `0o666`. -- `start` The position in the file to start reading. If not - specified, then the file will start writing at position zero, and be - truncated by default. -- `autoClose` Set to `false` to prevent the file descriptor from being - closed when the stream is ended. -- `flags` Flags to use when opening the file. Irrelevant if `fd` is - passed in, since file won't be opened in that case. Defaults to - `'a'` if a `pos` is specified, or `'w'` otherwise. diff --git a/node_modules/@isaacs/fs-minipass/dist/commonjs/index.d.ts b/node_modules/@isaacs/fs-minipass/dist/commonjs/index.d.ts deleted file mode 100644 index 38e8ccd..0000000 --- a/node_modules/@isaacs/fs-minipass/dist/commonjs/index.d.ts +++ /dev/null @@ -1,118 +0,0 @@ -/// -/// -/// -import EE from 'events'; -import { Minipass } from 'minipass'; -declare const _autoClose: unique symbol; -declare const _close: unique symbol; -declare const _ended: unique symbol; -declare const _fd: unique symbol; -declare const _finished: unique symbol; -declare const _flags: unique symbol; -declare const _flush: unique symbol; -declare const _handleChunk: unique symbol; -declare const _makeBuf: unique symbol; -declare const _mode: unique symbol; -declare const _needDrain: unique symbol; -declare const _onerror: unique symbol; -declare const _onopen: unique symbol; -declare const _onread: unique symbol; -declare const _onwrite: unique symbol; -declare const _open: unique symbol; -declare const _path: unique symbol; -declare const _pos: unique symbol; -declare const _queue: unique symbol; -declare const _read: unique symbol; -declare const _readSize: unique symbol; -declare const _reading: unique symbol; -declare const _remain: unique symbol; -declare const _size: unique symbol; -declare const _write: unique symbol; -declare const _writing: unique symbol; -declare const _defaultFlag: unique symbol; -declare const _errored: unique symbol; -export type ReadStreamOptions = Minipass.Options & { - fd?: number; - readSize?: number; - size?: number; - autoClose?: boolean; -}; -export type ReadStreamEvents = Minipass.Events & { - open: [fd: number]; -}; -export declare class ReadStream extends Minipass { - [_errored]: boolean; - [_fd]?: number; - [_path]: string; - [_readSize]: number; - [_reading]: boolean; - [_size]: number; - [_remain]: number; - [_autoClose]: boolean; - constructor(path: string, opt: ReadStreamOptions); - get fd(): number | undefined; - get path(): string; - write(): void; - end(): void; - [_open](): void; - [_onopen](er?: NodeJS.ErrnoException | null, fd?: number): void; - [_makeBuf](): Buffer; - [_read](): void; - [_onread](er?: NodeJS.ErrnoException | null, br?: number, buf?: Buffer): void; - [_close](): void; - [_onerror](er: NodeJS.ErrnoException): void; - [_handleChunk](br: number, buf: Buffer): boolean; - emit(ev: Event, ...args: ReadStreamEvents[Event]): boolean; -} -export declare class ReadStreamSync extends ReadStream { - [_open](): void; - [_read](): void; - [_close](): void; -} -export type WriteStreamOptions = { - fd?: number; - autoClose?: boolean; - mode?: number; - captureRejections?: boolean; - start?: number; - flags?: string; -}; -export declare class WriteStream extends EE { - readable: false; - writable: boolean; - [_errored]: boolean; - [_writing]: boolean; - [_ended]: boolean; - [_queue]: Buffer[]; - [_needDrain]: boolean; - [_path]: string; - [_mode]: number; - [_autoClose]: boolean; - [_fd]?: number; - [_defaultFlag]: boolean; - [_flags]: string; - [_finished]: boolean; - [_pos]?: number; - constructor(path: string, opt: WriteStreamOptions); - emit(ev: string, ...args: any[]): boolean; - get fd(): number | undefined; - get path(): string; - [_onerror](er: NodeJS.ErrnoException): void; - [_open](): void; - [_onopen](er?: null | NodeJS.ErrnoException, fd?: number): void; - end(buf: string, enc?: BufferEncoding): this; - end(buf?: Buffer, enc?: undefined): this; - write(buf: string, enc?: BufferEncoding): boolean; - write(buf: Buffer, enc?: undefined): boolean; - [_write](buf: Buffer): void; - [_onwrite](er?: null | NodeJS.ErrnoException, bw?: number): void; - [_flush](): void; - [_close](): void; -} -export declare class WriteStreamSync extends WriteStream { - [_open](): void; - [_close](): void; - [_write](buf: Buffer): void; -} -export {}; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@isaacs/fs-minipass/dist/commonjs/index.d.ts.map b/node_modules/@isaacs/fs-minipass/dist/commonjs/index.d.ts.map deleted file mode 100644 index 3e2c703..0000000 --- a/node_modules/@isaacs/fs-minipass/dist/commonjs/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,OAAO,EAAE,MAAM,QAAQ,CAAA;AAEvB,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAInC,QAAA,MAAM,UAAU,eAAuB,CAAA;AACvC,QAAA,MAAM,MAAM,eAAmB,CAAA;AAC/B,QAAA,MAAM,MAAM,eAAmB,CAAA;AAC/B,QAAA,MAAM,GAAG,eAAgB,CAAA;AACzB,QAAA,MAAM,SAAS,eAAsB,CAAA;AACrC,QAAA,MAAM,MAAM,eAAmB,CAAA;AAC/B,QAAA,MAAM,MAAM,eAAmB,CAAA;AAC/B,QAAA,MAAM,YAAY,eAAyB,CAAA;AAC3C,QAAA,MAAM,QAAQ,eAAqB,CAAA;AACnC,QAAA,MAAM,KAAK,eAAkB,CAAA;AAC7B,QAAA,MAAM,UAAU,eAAuB,CAAA;AACvC,QAAA,MAAM,QAAQ,eAAqB,CAAA;AACnC,QAAA,MAAM,OAAO,eAAoB,CAAA;AACjC,QAAA,MAAM,OAAO,eAAoB,CAAA;AACjC,QAAA,MAAM,QAAQ,eAAqB,CAAA;AACnC,QAAA,MAAM,KAAK,eAAkB,CAAA;AAC7B,QAAA,MAAM,KAAK,eAAkB,CAAA;AAC7B,QAAA,MAAM,IAAI,eAAiB,CAAA;AAC3B,QAAA,MAAM,MAAM,eAAmB,CAAA;AAC/B,QAAA,MAAM,KAAK,eAAkB,CAAA;AAC7B,QAAA,MAAM,SAAS,eAAsB,CAAA;AACrC,QAAA,MAAM,QAAQ,eAAqB,CAAA;AACnC,QAAA,MAAM,OAAO,eAAoB,CAAA;AACjC,QAAA,MAAM,KAAK,eAAkB,CAAA;AAC7B,QAAA,MAAM,MAAM,eAAmB,CAAA;AAC/B,QAAA,MAAM,QAAQ,eAAqB,CAAA;AACnC,QAAA,MAAM,YAAY,eAAyB,CAAA;AAC3C,QAAA,MAAM,QAAQ,eAAqB,CAAA;AAEnC,MAAM,MAAM,iBAAiB,GAC3B,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG;IAC1C,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAEH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG;IACxE,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;CACnB,CAAA;AAED,qBAAa,UAAW,SAAQ,QAAQ,CACtC,QAAQ,CAAC,cAAc,EACvB,MAAM,EACN,gBAAgB,CACjB;IACC,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAS;IAC5B,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IACpB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAS;IAC5B,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;gBAET,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB;IA4BhD,IAAI,EAAE,uBAEL;IAED,IAAI,IAAI,WAEP;IAGD,KAAK;IAKL,GAAG;IAIH,CAAC,KAAK,CAAC;IAIP,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM;IAUxD,CAAC,QAAQ,CAAC;IAIV,CAAC,KAAK,CAAC;IAeP,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM;IAStE,CAAC,MAAM,CAAC;IAUR,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,cAAc;IAMpC,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAiBtC,IAAI,CAAC,KAAK,SAAS,MAAM,gBAAgB,EACvC,EAAE,EAAE,KAAK,EACT,GAAG,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAC/B,OAAO;CAuBX;AAED,qBAAa,cAAe,SAAQ,UAAU;IAC5C,CAAC,KAAK,CAAC;IAYP,CAAC,KAAK,CAAC;IA2BP,CAAC,MAAM,CAAC;CAQT;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,qBAAa,WAAY,SAAQ,EAAE;IACjC,QAAQ,EAAE,KAAK,CAAQ;IACvB,QAAQ,EAAE,OAAO,CAAQ;IACzB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAS;IAC5B,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAS;IAC5B,CAAC,MAAM,CAAC,EAAE,OAAO,CAAS;IAC1B,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAM;IACxB,CAAC,UAAU,CAAC,EAAE,OAAO,CAAS;IAC9B,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IACtB,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IACxB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAS;IAC7B,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAA;gBAEH,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,kBAAkB;IAoBjD,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;IAU/B,IAAI,EAAE,uBAEL;IAED,IAAI,IAAI,WAEP;IAED,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,cAAc;IAMpC,CAAC,KAAK,CAAC;IAMP,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,MAAM;IAoBxD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,cAAc,GAAG,IAAI;IAC5C,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,SAAS,GAAG,IAAI;IAoBxC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,cAAc,GAAG,OAAO;IACjD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,SAAS,GAAG,OAAO;IAsB5C,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM;IAWpB,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,MAAM;IAwBzD,CAAC,MAAM,CAAC;IAgBR,CAAC,MAAM,CAAC;CAST;AAED,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,CAAC,KAAK,CAAC,IAAI,IAAI;IAsBf,CAAC,MAAM,CAAC;IASR,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM;CAmBrB"} \ No newline at end of file diff --git a/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js b/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js deleted file mode 100644 index 2b3178c..0000000 --- a/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js +++ /dev/null @@ -1,430 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.WriteStreamSync = exports.WriteStream = exports.ReadStreamSync = exports.ReadStream = void 0; -const events_1 = __importDefault(require("events")); -const fs_1 = __importDefault(require("fs")); -const minipass_1 = require("minipass"); -const writev = fs_1.default.writev; -const _autoClose = Symbol('_autoClose'); -const _close = Symbol('_close'); -const _ended = Symbol('_ended'); -const _fd = Symbol('_fd'); -const _finished = Symbol('_finished'); -const _flags = Symbol('_flags'); -const _flush = Symbol('_flush'); -const _handleChunk = Symbol('_handleChunk'); -const _makeBuf = Symbol('_makeBuf'); -const _mode = Symbol('_mode'); -const _needDrain = Symbol('_needDrain'); -const _onerror = Symbol('_onerror'); -const _onopen = Symbol('_onopen'); -const _onread = Symbol('_onread'); -const _onwrite = Symbol('_onwrite'); -const _open = Symbol('_open'); -const _path = Symbol('_path'); -const _pos = Symbol('_pos'); -const _queue = Symbol('_queue'); -const _read = Symbol('_read'); -const _readSize = Symbol('_readSize'); -const _reading = Symbol('_reading'); -const _remain = Symbol('_remain'); -const _size = Symbol('_size'); -const _write = Symbol('_write'); -const _writing = Symbol('_writing'); -const _defaultFlag = Symbol('_defaultFlag'); -const _errored = Symbol('_errored'); -class ReadStream extends minipass_1.Minipass { - [_errored] = false; - [_fd]; - [_path]; - [_readSize]; - [_reading] = false; - [_size]; - [_remain]; - [_autoClose]; - constructor(path, opt) { - opt = opt || {}; - super(opt); - this.readable = true; - this.writable = false; - if (typeof path !== 'string') { - throw new TypeError('path must be a string'); - } - this[_errored] = false; - this[_fd] = typeof opt.fd === 'number' ? opt.fd : undefined; - this[_path] = path; - this[_readSize] = opt.readSize || 16 * 1024 * 1024; - this[_reading] = false; - this[_size] = typeof opt.size === 'number' ? opt.size : Infinity; - this[_remain] = this[_size]; - this[_autoClose] = - typeof opt.autoClose === 'boolean' ? opt.autoClose : true; - if (typeof this[_fd] === 'number') { - this[_read](); - } - else { - this[_open](); - } - } - get fd() { - return this[_fd]; - } - get path() { - return this[_path]; - } - //@ts-ignore - write() { - throw new TypeError('this is a readable stream'); - } - //@ts-ignore - end() { - throw new TypeError('this is a readable stream'); - } - [_open]() { - fs_1.default.open(this[_path], 'r', (er, fd) => this[_onopen](er, fd)); - } - [_onopen](er, fd) { - if (er) { - this[_onerror](er); - } - else { - this[_fd] = fd; - this.emit('open', fd); - this[_read](); - } - } - [_makeBuf]() { - return Buffer.allocUnsafe(Math.min(this[_readSize], this[_remain])); - } - [_read]() { - if (!this[_reading]) { - this[_reading] = true; - const buf = this[_makeBuf](); - /* c8 ignore start */ - if (buf.length === 0) { - return process.nextTick(() => this[_onread](null, 0, buf)); - } - /* c8 ignore stop */ - fs_1.default.read(this[_fd], buf, 0, buf.length, null, (er, br, b) => this[_onread](er, br, b)); - } - } - [_onread](er, br, buf) { - this[_reading] = false; - if (er) { - this[_onerror](er); - } - else if (this[_handleChunk](br, buf)) { - this[_read](); - } - } - [_close]() { - if (this[_autoClose] && typeof this[_fd] === 'number') { - const fd = this[_fd]; - this[_fd] = undefined; - fs_1.default.close(fd, er => er ? this.emit('error', er) : this.emit('close')); - } - } - [_onerror](er) { - this[_reading] = true; - this[_close](); - this.emit('error', er); - } - [_handleChunk](br, buf) { - let ret = false; - // no effect if infinite - this[_remain] -= br; - if (br > 0) { - ret = super.write(br < buf.length ? buf.subarray(0, br) : buf); - } - if (br === 0 || this[_remain] <= 0) { - ret = false; - this[_close](); - super.end(); - } - return ret; - } - emit(ev, ...args) { - switch (ev) { - case 'prefinish': - case 'finish': - return false; - case 'drain': - if (typeof this[_fd] === 'number') { - this[_read](); - } - return false; - case 'error': - if (this[_errored]) { - return false; - } - this[_errored] = true; - return super.emit(ev, ...args); - default: - return super.emit(ev, ...args); - } - } -} -exports.ReadStream = ReadStream; -class ReadStreamSync extends ReadStream { - [_open]() { - let threw = true; - try { - this[_onopen](null, fs_1.default.openSync(this[_path], 'r')); - threw = false; - } - finally { - if (threw) { - this[_close](); - } - } - } - [_read]() { - let threw = true; - try { - if (!this[_reading]) { - this[_reading] = true; - do { - const buf = this[_makeBuf](); - /* c8 ignore start */ - const br = buf.length === 0 - ? 0 - : fs_1.default.readSync(this[_fd], buf, 0, buf.length, null); - /* c8 ignore stop */ - if (!this[_handleChunk](br, buf)) { - break; - } - } while (true); - this[_reading] = false; - } - threw = false; - } - finally { - if (threw) { - this[_close](); - } - } - } - [_close]() { - if (this[_autoClose] && typeof this[_fd] === 'number') { - const fd = this[_fd]; - this[_fd] = undefined; - fs_1.default.closeSync(fd); - this.emit('close'); - } - } -} -exports.ReadStreamSync = ReadStreamSync; -class WriteStream extends events_1.default { - readable = false; - writable = true; - [_errored] = false; - [_writing] = false; - [_ended] = false; - [_queue] = []; - [_needDrain] = false; - [_path]; - [_mode]; - [_autoClose]; - [_fd]; - [_defaultFlag]; - [_flags]; - [_finished] = false; - [_pos]; - constructor(path, opt) { - opt = opt || {}; - super(opt); - this[_path] = path; - this[_fd] = typeof opt.fd === 'number' ? opt.fd : undefined; - this[_mode] = opt.mode === undefined ? 0o666 : opt.mode; - this[_pos] = typeof opt.start === 'number' ? opt.start : undefined; - this[_autoClose] = - typeof opt.autoClose === 'boolean' ? opt.autoClose : true; - // truncating makes no sense when writing into the middle - const defaultFlag = this[_pos] !== undefined ? 'r+' : 'w'; - this[_defaultFlag] = opt.flags === undefined; - this[_flags] = opt.flags === undefined ? defaultFlag : opt.flags; - if (this[_fd] === undefined) { - this[_open](); - } - } - emit(ev, ...args) { - if (ev === 'error') { - if (this[_errored]) { - return false; - } - this[_errored] = true; - } - return super.emit(ev, ...args); - } - get fd() { - return this[_fd]; - } - get path() { - return this[_path]; - } - [_onerror](er) { - this[_close](); - this[_writing] = true; - this.emit('error', er); - } - [_open]() { - fs_1.default.open(this[_path], this[_flags], this[_mode], (er, fd) => this[_onopen](er, fd)); - } - [_onopen](er, fd) { - if (this[_defaultFlag] && - this[_flags] === 'r+' && - er && - er.code === 'ENOENT') { - this[_flags] = 'w'; - this[_open](); - } - else if (er) { - this[_onerror](er); - } - else { - this[_fd] = fd; - this.emit('open', fd); - if (!this[_writing]) { - this[_flush](); - } - } - } - end(buf, enc) { - if (buf) { - //@ts-ignore - this.write(buf, enc); - } - this[_ended] = true; - // synthetic after-write logic, where drain/finish live - if (!this[_writing] && - !this[_queue].length && - typeof this[_fd] === 'number') { - this[_onwrite](null, 0); - } - return this; - } - write(buf, enc) { - if (typeof buf === 'string') { - buf = Buffer.from(buf, enc); - } - if (this[_ended]) { - this.emit('error', new Error('write() after end()')); - return false; - } - if (this[_fd] === undefined || this[_writing] || this[_queue].length) { - this[_queue].push(buf); - this[_needDrain] = true; - return false; - } - this[_writing] = true; - this[_write](buf); - return true; - } - [_write](buf) { - fs_1.default.write(this[_fd], buf, 0, buf.length, this[_pos], (er, bw) => this[_onwrite](er, bw)); - } - [_onwrite](er, bw) { - if (er) { - this[_onerror](er); - } - else { - if (this[_pos] !== undefined && typeof bw === 'number') { - this[_pos] += bw; - } - if (this[_queue].length) { - this[_flush](); - } - else { - this[_writing] = false; - if (this[_ended] && !this[_finished]) { - this[_finished] = true; - this[_close](); - this.emit('finish'); - } - else if (this[_needDrain]) { - this[_needDrain] = false; - this.emit('drain'); - } - } - } - } - [_flush]() { - if (this[_queue].length === 0) { - if (this[_ended]) { - this[_onwrite](null, 0); - } - } - else if (this[_queue].length === 1) { - this[_write](this[_queue].pop()); - } - else { - const iovec = this[_queue]; - this[_queue] = []; - writev(this[_fd], iovec, this[_pos], (er, bw) => this[_onwrite](er, bw)); - } - } - [_close]() { - if (this[_autoClose] && typeof this[_fd] === 'number') { - const fd = this[_fd]; - this[_fd] = undefined; - fs_1.default.close(fd, er => er ? this.emit('error', er) : this.emit('close')); - } - } -} -exports.WriteStream = WriteStream; -class WriteStreamSync extends WriteStream { - [_open]() { - let fd; - // only wrap in a try{} block if we know we'll retry, to avoid - // the rethrow obscuring the error's source frame in most cases. - if (this[_defaultFlag] && this[_flags] === 'r+') { - try { - fd = fs_1.default.openSync(this[_path], this[_flags], this[_mode]); - } - catch (er) { - if (er?.code === 'ENOENT') { - this[_flags] = 'w'; - return this[_open](); - } - else { - throw er; - } - } - } - else { - fd = fs_1.default.openSync(this[_path], this[_flags], this[_mode]); - } - this[_onopen](null, fd); - } - [_close]() { - if (this[_autoClose] && typeof this[_fd] === 'number') { - const fd = this[_fd]; - this[_fd] = undefined; - fs_1.default.closeSync(fd); - this.emit('close'); - } - } - [_write](buf) { - // throw the original, but try to close if it fails - let threw = true; - try { - this[_onwrite](null, fs_1.default.writeSync(this[_fd], buf, 0, buf.length, this[_pos])); - threw = false; - } - finally { - if (threw) { - try { - this[_close](); - } - catch { - // ok error - } - } - } - } -} -exports.WriteStreamSync = WriteStreamSync; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js.map b/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js.map deleted file mode 100644 index caee495..0000000 --- a/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import EE from 'events'\nimport fs from 'fs'\nimport { Minipass } from 'minipass'\n\nconst writev = fs.writev\n\nconst _autoClose = Symbol('_autoClose')\nconst _close = Symbol('_close')\nconst _ended = Symbol('_ended')\nconst _fd = Symbol('_fd')\nconst _finished = Symbol('_finished')\nconst _flags = Symbol('_flags')\nconst _flush = Symbol('_flush')\nconst _handleChunk = Symbol('_handleChunk')\nconst _makeBuf = Symbol('_makeBuf')\nconst _mode = Symbol('_mode')\nconst _needDrain = Symbol('_needDrain')\nconst _onerror = Symbol('_onerror')\nconst _onopen = Symbol('_onopen')\nconst _onread = Symbol('_onread')\nconst _onwrite = Symbol('_onwrite')\nconst _open = Symbol('_open')\nconst _path = Symbol('_path')\nconst _pos = Symbol('_pos')\nconst _queue = Symbol('_queue')\nconst _read = Symbol('_read')\nconst _readSize = Symbol('_readSize')\nconst _reading = Symbol('_reading')\nconst _remain = Symbol('_remain')\nconst _size = Symbol('_size')\nconst _write = Symbol('_write')\nconst _writing = Symbol('_writing')\nconst _defaultFlag = Symbol('_defaultFlag')\nconst _errored = Symbol('_errored')\n\nexport type ReadStreamOptions =\n Minipass.Options & {\n fd?: number\n readSize?: number\n size?: number\n autoClose?: boolean\n }\n\nexport type ReadStreamEvents = Minipass.Events & {\n open: [fd: number]\n}\n\nexport class ReadStream extends Minipass<\n Minipass.ContiguousData,\n Buffer,\n ReadStreamEvents\n> {\n [_errored]: boolean = false;\n [_fd]?: number;\n [_path]: string;\n [_readSize]: number;\n [_reading]: boolean = false;\n [_size]: number;\n [_remain]: number;\n [_autoClose]: boolean\n\n constructor(path: string, opt: ReadStreamOptions) {\n opt = opt || {}\n super(opt)\n\n this.readable = true\n this.writable = false\n\n if (typeof path !== 'string') {\n throw new TypeError('path must be a string')\n }\n\n this[_errored] = false\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : undefined\n this[_path] = path\n this[_readSize] = opt.readSize || 16 * 1024 * 1024\n this[_reading] = false\n this[_size] = typeof opt.size === 'number' ? opt.size : Infinity\n this[_remain] = this[_size]\n this[_autoClose] =\n typeof opt.autoClose === 'boolean' ? opt.autoClose : true\n\n if (typeof this[_fd] === 'number') {\n this[_read]()\n } else {\n this[_open]()\n }\n }\n\n get fd() {\n return this[_fd]\n }\n\n get path() {\n return this[_path]\n }\n\n //@ts-ignore\n write() {\n throw new TypeError('this is a readable stream')\n }\n\n //@ts-ignore\n end() {\n throw new TypeError('this is a readable stream')\n }\n\n [_open]() {\n fs.open(this[_path], 'r', (er, fd) => this[_onopen](er, fd))\n }\n\n [_onopen](er?: NodeJS.ErrnoException | null, fd?: number) {\n if (er) {\n this[_onerror](er)\n } else {\n this[_fd] = fd\n this.emit('open', fd as number)\n this[_read]()\n }\n }\n\n [_makeBuf]() {\n return Buffer.allocUnsafe(Math.min(this[_readSize], this[_remain]))\n }\n\n [_read]() {\n if (!this[_reading]) {\n this[_reading] = true\n const buf = this[_makeBuf]()\n /* c8 ignore start */\n if (buf.length === 0) {\n return process.nextTick(() => this[_onread](null, 0, buf))\n }\n /* c8 ignore stop */\n fs.read(this[_fd] as number, buf, 0, buf.length, null, (er, br, b) =>\n this[_onread](er, br, b),\n )\n }\n }\n\n [_onread](er?: NodeJS.ErrnoException | null, br?: number, buf?: Buffer) {\n this[_reading] = false\n if (er) {\n this[_onerror](er)\n } else if (this[_handleChunk](br as number, buf as Buffer)) {\n this[_read]()\n }\n }\n\n [_close]() {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = undefined\n fs.close(fd, er =>\n er ? this.emit('error', er) : this.emit('close'),\n )\n }\n }\n\n [_onerror](er: NodeJS.ErrnoException) {\n this[_reading] = true\n this[_close]()\n this.emit('error', er)\n }\n\n [_handleChunk](br: number, buf: Buffer) {\n let ret = false\n // no effect if infinite\n this[_remain] -= br\n if (br > 0) {\n ret = super.write(br < buf.length ? buf.subarray(0, br) : buf)\n }\n\n if (br === 0 || this[_remain] <= 0) {\n ret = false\n this[_close]()\n super.end()\n }\n\n return ret\n }\n\n emit(\n ev: Event,\n ...args: ReadStreamEvents[Event]\n ): boolean {\n switch (ev) {\n case 'prefinish':\n case 'finish':\n return false\n\n case 'drain':\n if (typeof this[_fd] === 'number') {\n this[_read]()\n }\n return false\n\n case 'error':\n if (this[_errored]) {\n return false\n }\n this[_errored] = true\n return super.emit(ev, ...args)\n\n default:\n return super.emit(ev, ...args)\n }\n }\n}\n\nexport class ReadStreamSync extends ReadStream {\n [_open]() {\n let threw = true\n try {\n this[_onopen](null, fs.openSync(this[_path], 'r'))\n threw = false\n } finally {\n if (threw) {\n this[_close]()\n }\n }\n }\n\n [_read]() {\n let threw = true\n try {\n if (!this[_reading]) {\n this[_reading] = true\n do {\n const buf = this[_makeBuf]()\n /* c8 ignore start */\n const br =\n buf.length === 0\n ? 0\n : fs.readSync(this[_fd] as number, buf, 0, buf.length, null)\n /* c8 ignore stop */\n if (!this[_handleChunk](br, buf)) {\n break\n }\n } while (true)\n this[_reading] = false\n }\n threw = false\n } finally {\n if (threw) {\n this[_close]()\n }\n }\n }\n\n [_close]() {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = undefined\n fs.closeSync(fd)\n this.emit('close')\n }\n }\n}\n\nexport type WriteStreamOptions = {\n fd?: number\n autoClose?: boolean\n mode?: number\n captureRejections?: boolean\n start?: number\n flags?: string\n}\n\nexport class WriteStream extends EE {\n readable: false = false\n writable: boolean = true;\n [_errored]: boolean = false;\n [_writing]: boolean = false;\n [_ended]: boolean = false;\n [_queue]: Buffer[] = [];\n [_needDrain]: boolean = false;\n [_path]: string;\n [_mode]: number;\n [_autoClose]: boolean;\n [_fd]?: number;\n [_defaultFlag]: boolean;\n [_flags]: string;\n [_finished]: boolean = false;\n [_pos]?: number\n\n constructor(path: string, opt: WriteStreamOptions) {\n opt = opt || {}\n super(opt)\n this[_path] = path\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : undefined\n this[_mode] = opt.mode === undefined ? 0o666 : opt.mode\n this[_pos] = typeof opt.start === 'number' ? opt.start : undefined\n this[_autoClose] =\n typeof opt.autoClose === 'boolean' ? opt.autoClose : true\n\n // truncating makes no sense when writing into the middle\n const defaultFlag = this[_pos] !== undefined ? 'r+' : 'w'\n this[_defaultFlag] = opt.flags === undefined\n this[_flags] = opt.flags === undefined ? defaultFlag : opt.flags\n\n if (this[_fd] === undefined) {\n this[_open]()\n }\n }\n\n emit(ev: string, ...args: any[]) {\n if (ev === 'error') {\n if (this[_errored]) {\n return false\n }\n this[_errored] = true\n }\n return super.emit(ev, ...args)\n }\n\n get fd() {\n return this[_fd]\n }\n\n get path() {\n return this[_path]\n }\n\n [_onerror](er: NodeJS.ErrnoException) {\n this[_close]()\n this[_writing] = true\n this.emit('error', er)\n }\n\n [_open]() {\n fs.open(this[_path], this[_flags], this[_mode], (er, fd) =>\n this[_onopen](er, fd),\n )\n }\n\n [_onopen](er?: null | NodeJS.ErrnoException, fd?: number) {\n if (\n this[_defaultFlag] &&\n this[_flags] === 'r+' &&\n er &&\n er.code === 'ENOENT'\n ) {\n this[_flags] = 'w'\n this[_open]()\n } else if (er) {\n this[_onerror](er)\n } else {\n this[_fd] = fd\n this.emit('open', fd)\n if (!this[_writing]) {\n this[_flush]()\n }\n }\n }\n\n end(buf: string, enc?: BufferEncoding): this\n end(buf?: Buffer, enc?: undefined): this\n end(buf?: Buffer | string, enc?: BufferEncoding): this {\n if (buf) {\n //@ts-ignore\n this.write(buf, enc)\n }\n\n this[_ended] = true\n\n // synthetic after-write logic, where drain/finish live\n if (\n !this[_writing] &&\n !this[_queue].length &&\n typeof this[_fd] === 'number'\n ) {\n this[_onwrite](null, 0)\n }\n return this\n }\n\n write(buf: string, enc?: BufferEncoding): boolean\n write(buf: Buffer, enc?: undefined): boolean\n write(buf: Buffer | string, enc?: BufferEncoding): boolean {\n if (typeof buf === 'string') {\n buf = Buffer.from(buf, enc)\n }\n\n if (this[_ended]) {\n this.emit('error', new Error('write() after end()'))\n return false\n }\n\n if (this[_fd] === undefined || this[_writing] || this[_queue].length) {\n this[_queue].push(buf)\n this[_needDrain] = true\n return false\n }\n\n this[_writing] = true\n this[_write](buf)\n return true\n }\n\n [_write](buf: Buffer) {\n fs.write(\n this[_fd] as number,\n buf,\n 0,\n buf.length,\n this[_pos],\n (er, bw) => this[_onwrite](er, bw),\n )\n }\n\n [_onwrite](er?: null | NodeJS.ErrnoException, bw?: number) {\n if (er) {\n this[_onerror](er)\n } else {\n if (this[_pos] !== undefined && typeof bw === 'number') {\n this[_pos] += bw\n }\n if (this[_queue].length) {\n this[_flush]()\n } else {\n this[_writing] = false\n\n if (this[_ended] && !this[_finished]) {\n this[_finished] = true\n this[_close]()\n this.emit('finish')\n } else if (this[_needDrain]) {\n this[_needDrain] = false\n this.emit('drain')\n }\n }\n }\n }\n\n [_flush]() {\n if (this[_queue].length === 0) {\n if (this[_ended]) {\n this[_onwrite](null, 0)\n }\n } else if (this[_queue].length === 1) {\n this[_write](this[_queue].pop() as Buffer)\n } else {\n const iovec = this[_queue]\n this[_queue] = []\n writev(this[_fd] as number, iovec, this[_pos] as number, (er, bw) =>\n this[_onwrite](er, bw),\n )\n }\n }\n\n [_close]() {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = undefined\n fs.close(fd, er =>\n er ? this.emit('error', er) : this.emit('close'),\n )\n }\n }\n}\n\nexport class WriteStreamSync extends WriteStream {\n [_open](): void {\n let fd\n // only wrap in a try{} block if we know we'll retry, to avoid\n // the rethrow obscuring the error's source frame in most cases.\n if (this[_defaultFlag] && this[_flags] === 'r+') {\n try {\n fd = fs.openSync(this[_path], this[_flags], this[_mode])\n } catch (er) {\n if ((er as NodeJS.ErrnoException)?.code === 'ENOENT') {\n this[_flags] = 'w'\n return this[_open]()\n } else {\n throw er\n }\n }\n } else {\n fd = fs.openSync(this[_path], this[_flags], this[_mode])\n }\n\n this[_onopen](null, fd)\n }\n\n [_close]() {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = undefined\n fs.closeSync(fd)\n this.emit('close')\n }\n }\n\n [_write](buf: Buffer) {\n // throw the original, but try to close if it fails\n let threw = true\n try {\n this[_onwrite](\n null,\n fs.writeSync(this[_fd] as number, buf, 0, buf.length, this[_pos]),\n )\n threw = false\n } finally {\n if (threw) {\n try {\n this[_close]()\n } catch {\n // ok error\n }\n }\n }\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@isaacs/fs-minipass/dist/commonjs/package.json b/node_modules/@isaacs/fs-minipass/dist/commonjs/package.json deleted file mode 100644 index 5bbefff..0000000 --- a/node_modules/@isaacs/fs-minipass/dist/commonjs/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "commonjs" -} diff --git a/node_modules/@isaacs/fs-minipass/dist/esm/index.d.ts b/node_modules/@isaacs/fs-minipass/dist/esm/index.d.ts deleted file mode 100644 index 54aebe1..0000000 --- a/node_modules/@isaacs/fs-minipass/dist/esm/index.d.ts +++ /dev/null @@ -1,118 +0,0 @@ -/// -/// -/// -import EE from 'events'; -import { Minipass } from 'minipass'; -declare const _autoClose: unique symbol; -declare const _close: unique symbol; -declare const _ended: unique symbol; -declare const _fd: unique symbol; -declare const _finished: unique symbol; -declare const _flags: unique symbol; -declare const _flush: unique symbol; -declare const _handleChunk: unique symbol; -declare const _makeBuf: unique symbol; -declare const _mode: unique symbol; -declare const _needDrain: unique symbol; -declare const _onerror: unique symbol; -declare const _onopen: unique symbol; -declare const _onread: unique symbol; -declare const _onwrite: unique symbol; -declare const _open: unique symbol; -declare const _path: unique symbol; -declare const _pos: unique symbol; -declare const _queue: unique symbol; -declare const _read: unique symbol; -declare const _readSize: unique symbol; -declare const _reading: unique symbol; -declare const _remain: unique symbol; -declare const _size: unique symbol; -declare const _write: unique symbol; -declare const _writing: unique symbol; -declare const _defaultFlag: unique symbol; -declare const _errored: unique symbol; -export type ReadStreamOptions = Minipass.Options & { - fd?: number; - readSize?: number; - size?: number; - autoClose?: boolean; -}; -export type ReadStreamEvents = Minipass.Events & { - open: [fd: number]; -}; -export declare class ReadStream extends Minipass { - [_errored]: boolean; - [_fd]?: number; - [_path]: string; - [_readSize]: number; - [_reading]: boolean; - [_size]: number; - [_remain]: number; - [_autoClose]: boolean; - constructor(path: string, opt: ReadStreamOptions); - get fd(): number | undefined; - get path(): string; - write(): void; - end(): void; - [_open](): void; - [_onopen](er?: NodeJS.ErrnoException | null, fd?: number): void; - [_makeBuf](): Buffer; - [_read](): void; - [_onread](er?: NodeJS.ErrnoException | null, br?: number, buf?: Buffer): void; - [_close](): void; - [_onerror](er: NodeJS.ErrnoException): void; - [_handleChunk](br: number, buf: Buffer): boolean; - emit(ev: Event, ...args: ReadStreamEvents[Event]): boolean; -} -export declare class ReadStreamSync extends ReadStream { - [_open](): void; - [_read](): void; - [_close](): void; -} -export type WriteStreamOptions = { - fd?: number; - autoClose?: boolean; - mode?: number; - captureRejections?: boolean; - start?: number; - flags?: string; -}; -export declare class WriteStream extends EE { - readable: false; - writable: boolean; - [_errored]: boolean; - [_writing]: boolean; - [_ended]: boolean; - [_queue]: Buffer[]; - [_needDrain]: boolean; - [_path]: string; - [_mode]: number; - [_autoClose]: boolean; - [_fd]?: number; - [_defaultFlag]: boolean; - [_flags]: string; - [_finished]: boolean; - [_pos]?: number; - constructor(path: string, opt: WriteStreamOptions); - emit(ev: string, ...args: any[]): boolean; - get fd(): number | undefined; - get path(): string; - [_onerror](er: NodeJS.ErrnoException): void; - [_open](): void; - [_onopen](er?: null | NodeJS.ErrnoException, fd?: number): void; - end(buf: string, enc?: BufferEncoding): this; - end(buf?: Buffer, enc?: undefined): this; - write(buf: string, enc?: BufferEncoding): boolean; - write(buf: Buffer, enc?: undefined): boolean; - [_write](buf: Buffer): void; - [_onwrite](er?: null | NodeJS.ErrnoException, bw?: number): void; - [_flush](): void; - [_close](): void; -} -export declare class WriteStreamSync extends WriteStream { - [_open](): void; - [_close](): void; - [_write](buf: Buffer): void; -} -export {}; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@isaacs/fs-minipass/dist/esm/index.d.ts.map b/node_modules/@isaacs/fs-minipass/dist/esm/index.d.ts.map deleted file mode 100644 index 3e2c703..0000000 --- a/node_modules/@isaacs/fs-minipass/dist/esm/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,OAAO,EAAE,MAAM,QAAQ,CAAA;AAEvB,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAInC,QAAA,MAAM,UAAU,eAAuB,CAAA;AACvC,QAAA,MAAM,MAAM,eAAmB,CAAA;AAC/B,QAAA,MAAM,MAAM,eAAmB,CAAA;AAC/B,QAAA,MAAM,GAAG,eAAgB,CAAA;AACzB,QAAA,MAAM,SAAS,eAAsB,CAAA;AACrC,QAAA,MAAM,MAAM,eAAmB,CAAA;AAC/B,QAAA,MAAM,MAAM,eAAmB,CAAA;AAC/B,QAAA,MAAM,YAAY,eAAyB,CAAA;AAC3C,QAAA,MAAM,QAAQ,eAAqB,CAAA;AACnC,QAAA,MAAM,KAAK,eAAkB,CAAA;AAC7B,QAAA,MAAM,UAAU,eAAuB,CAAA;AACvC,QAAA,MAAM,QAAQ,eAAqB,CAAA;AACnC,QAAA,MAAM,OAAO,eAAoB,CAAA;AACjC,QAAA,MAAM,OAAO,eAAoB,CAAA;AACjC,QAAA,MAAM,QAAQ,eAAqB,CAAA;AACnC,QAAA,MAAM,KAAK,eAAkB,CAAA;AAC7B,QAAA,MAAM,KAAK,eAAkB,CAAA;AAC7B,QAAA,MAAM,IAAI,eAAiB,CAAA;AAC3B,QAAA,MAAM,MAAM,eAAmB,CAAA;AAC/B,QAAA,MAAM,KAAK,eAAkB,CAAA;AAC7B,QAAA,MAAM,SAAS,eAAsB,CAAA;AACrC,QAAA,MAAM,QAAQ,eAAqB,CAAA;AACnC,QAAA,MAAM,OAAO,eAAoB,CAAA;AACjC,QAAA,MAAM,KAAK,eAAkB,CAAA;AAC7B,QAAA,MAAM,MAAM,eAAmB,CAAA;AAC/B,QAAA,MAAM,QAAQ,eAAqB,CAAA;AACnC,QAAA,MAAM,YAAY,eAAyB,CAAA;AAC3C,QAAA,MAAM,QAAQ,eAAqB,CAAA;AAEnC,MAAM,MAAM,iBAAiB,GAC3B,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG;IAC1C,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAEH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG;IACxE,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;CACnB,CAAA;AAED,qBAAa,UAAW,SAAQ,QAAQ,CACtC,QAAQ,CAAC,cAAc,EACvB,MAAM,EACN,gBAAgB,CACjB;IACC,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAS;IAC5B,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IACpB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAS;IAC5B,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;gBAET,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB;IA4BhD,IAAI,EAAE,uBAEL;IAED,IAAI,IAAI,WAEP;IAGD,KAAK;IAKL,GAAG;IAIH,CAAC,KAAK,CAAC;IAIP,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM;IAUxD,CAAC,QAAQ,CAAC;IAIV,CAAC,KAAK,CAAC;IAeP,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM;IAStE,CAAC,MAAM,CAAC;IAUR,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,cAAc;IAMpC,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAiBtC,IAAI,CAAC,KAAK,SAAS,MAAM,gBAAgB,EACvC,EAAE,EAAE,KAAK,EACT,GAAG,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAC/B,OAAO;CAuBX;AAED,qBAAa,cAAe,SAAQ,UAAU;IAC5C,CAAC,KAAK,CAAC;IAYP,CAAC,KAAK,CAAC;IA2BP,CAAC,MAAM,CAAC;CAQT;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,qBAAa,WAAY,SAAQ,EAAE;IACjC,QAAQ,EAAE,KAAK,CAAQ;IACvB,QAAQ,EAAE,OAAO,CAAQ;IACzB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAS;IAC5B,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAS;IAC5B,CAAC,MAAM,CAAC,EAAE,OAAO,CAAS;IAC1B,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAM;IACxB,CAAC,UAAU,CAAC,EAAE,OAAO,CAAS;IAC9B,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IACtB,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IACxB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAS;IAC7B,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAA;gBAEH,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,kBAAkB;IAoBjD,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;IAU/B,IAAI,EAAE,uBAEL;IAED,IAAI,IAAI,WAEP;IAED,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,cAAc;IAMpC,CAAC,KAAK,CAAC;IAMP,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,MAAM;IAoBxD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,cAAc,GAAG,IAAI;IAC5C,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,SAAS,GAAG,IAAI;IAoBxC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,cAAc,GAAG,OAAO;IACjD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,SAAS,GAAG,OAAO;IAsB5C,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM;IAWpB,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,MAAM;IAwBzD,CAAC,MAAM,CAAC;IAgBR,CAAC,MAAM,CAAC;CAST;AAED,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,CAAC,KAAK,CAAC,IAAI,IAAI;IAsBf,CAAC,MAAM,CAAC;IASR,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM;CAmBrB"} \ No newline at end of file diff --git a/node_modules/@isaacs/fs-minipass/dist/esm/index.js b/node_modules/@isaacs/fs-minipass/dist/esm/index.js deleted file mode 100644 index 287a0f6..0000000 --- a/node_modules/@isaacs/fs-minipass/dist/esm/index.js +++ /dev/null @@ -1,420 +0,0 @@ -import EE from 'events'; -import fs from 'fs'; -import { Minipass } from 'minipass'; -const writev = fs.writev; -const _autoClose = Symbol('_autoClose'); -const _close = Symbol('_close'); -const _ended = Symbol('_ended'); -const _fd = Symbol('_fd'); -const _finished = Symbol('_finished'); -const _flags = Symbol('_flags'); -const _flush = Symbol('_flush'); -const _handleChunk = Symbol('_handleChunk'); -const _makeBuf = Symbol('_makeBuf'); -const _mode = Symbol('_mode'); -const _needDrain = Symbol('_needDrain'); -const _onerror = Symbol('_onerror'); -const _onopen = Symbol('_onopen'); -const _onread = Symbol('_onread'); -const _onwrite = Symbol('_onwrite'); -const _open = Symbol('_open'); -const _path = Symbol('_path'); -const _pos = Symbol('_pos'); -const _queue = Symbol('_queue'); -const _read = Symbol('_read'); -const _readSize = Symbol('_readSize'); -const _reading = Symbol('_reading'); -const _remain = Symbol('_remain'); -const _size = Symbol('_size'); -const _write = Symbol('_write'); -const _writing = Symbol('_writing'); -const _defaultFlag = Symbol('_defaultFlag'); -const _errored = Symbol('_errored'); -export class ReadStream extends Minipass { - [_errored] = false; - [_fd]; - [_path]; - [_readSize]; - [_reading] = false; - [_size]; - [_remain]; - [_autoClose]; - constructor(path, opt) { - opt = opt || {}; - super(opt); - this.readable = true; - this.writable = false; - if (typeof path !== 'string') { - throw new TypeError('path must be a string'); - } - this[_errored] = false; - this[_fd] = typeof opt.fd === 'number' ? opt.fd : undefined; - this[_path] = path; - this[_readSize] = opt.readSize || 16 * 1024 * 1024; - this[_reading] = false; - this[_size] = typeof opt.size === 'number' ? opt.size : Infinity; - this[_remain] = this[_size]; - this[_autoClose] = - typeof opt.autoClose === 'boolean' ? opt.autoClose : true; - if (typeof this[_fd] === 'number') { - this[_read](); - } - else { - this[_open](); - } - } - get fd() { - return this[_fd]; - } - get path() { - return this[_path]; - } - //@ts-ignore - write() { - throw new TypeError('this is a readable stream'); - } - //@ts-ignore - end() { - throw new TypeError('this is a readable stream'); - } - [_open]() { - fs.open(this[_path], 'r', (er, fd) => this[_onopen](er, fd)); - } - [_onopen](er, fd) { - if (er) { - this[_onerror](er); - } - else { - this[_fd] = fd; - this.emit('open', fd); - this[_read](); - } - } - [_makeBuf]() { - return Buffer.allocUnsafe(Math.min(this[_readSize], this[_remain])); - } - [_read]() { - if (!this[_reading]) { - this[_reading] = true; - const buf = this[_makeBuf](); - /* c8 ignore start */ - if (buf.length === 0) { - return process.nextTick(() => this[_onread](null, 0, buf)); - } - /* c8 ignore stop */ - fs.read(this[_fd], buf, 0, buf.length, null, (er, br, b) => this[_onread](er, br, b)); - } - } - [_onread](er, br, buf) { - this[_reading] = false; - if (er) { - this[_onerror](er); - } - else if (this[_handleChunk](br, buf)) { - this[_read](); - } - } - [_close]() { - if (this[_autoClose] && typeof this[_fd] === 'number') { - const fd = this[_fd]; - this[_fd] = undefined; - fs.close(fd, er => er ? this.emit('error', er) : this.emit('close')); - } - } - [_onerror](er) { - this[_reading] = true; - this[_close](); - this.emit('error', er); - } - [_handleChunk](br, buf) { - let ret = false; - // no effect if infinite - this[_remain] -= br; - if (br > 0) { - ret = super.write(br < buf.length ? buf.subarray(0, br) : buf); - } - if (br === 0 || this[_remain] <= 0) { - ret = false; - this[_close](); - super.end(); - } - return ret; - } - emit(ev, ...args) { - switch (ev) { - case 'prefinish': - case 'finish': - return false; - case 'drain': - if (typeof this[_fd] === 'number') { - this[_read](); - } - return false; - case 'error': - if (this[_errored]) { - return false; - } - this[_errored] = true; - return super.emit(ev, ...args); - default: - return super.emit(ev, ...args); - } - } -} -export class ReadStreamSync extends ReadStream { - [_open]() { - let threw = true; - try { - this[_onopen](null, fs.openSync(this[_path], 'r')); - threw = false; - } - finally { - if (threw) { - this[_close](); - } - } - } - [_read]() { - let threw = true; - try { - if (!this[_reading]) { - this[_reading] = true; - do { - const buf = this[_makeBuf](); - /* c8 ignore start */ - const br = buf.length === 0 - ? 0 - : fs.readSync(this[_fd], buf, 0, buf.length, null); - /* c8 ignore stop */ - if (!this[_handleChunk](br, buf)) { - break; - } - } while (true); - this[_reading] = false; - } - threw = false; - } - finally { - if (threw) { - this[_close](); - } - } - } - [_close]() { - if (this[_autoClose] && typeof this[_fd] === 'number') { - const fd = this[_fd]; - this[_fd] = undefined; - fs.closeSync(fd); - this.emit('close'); - } - } -} -export class WriteStream extends EE { - readable = false; - writable = true; - [_errored] = false; - [_writing] = false; - [_ended] = false; - [_queue] = []; - [_needDrain] = false; - [_path]; - [_mode]; - [_autoClose]; - [_fd]; - [_defaultFlag]; - [_flags]; - [_finished] = false; - [_pos]; - constructor(path, opt) { - opt = opt || {}; - super(opt); - this[_path] = path; - this[_fd] = typeof opt.fd === 'number' ? opt.fd : undefined; - this[_mode] = opt.mode === undefined ? 0o666 : opt.mode; - this[_pos] = typeof opt.start === 'number' ? opt.start : undefined; - this[_autoClose] = - typeof opt.autoClose === 'boolean' ? opt.autoClose : true; - // truncating makes no sense when writing into the middle - const defaultFlag = this[_pos] !== undefined ? 'r+' : 'w'; - this[_defaultFlag] = opt.flags === undefined; - this[_flags] = opt.flags === undefined ? defaultFlag : opt.flags; - if (this[_fd] === undefined) { - this[_open](); - } - } - emit(ev, ...args) { - if (ev === 'error') { - if (this[_errored]) { - return false; - } - this[_errored] = true; - } - return super.emit(ev, ...args); - } - get fd() { - return this[_fd]; - } - get path() { - return this[_path]; - } - [_onerror](er) { - this[_close](); - this[_writing] = true; - this.emit('error', er); - } - [_open]() { - fs.open(this[_path], this[_flags], this[_mode], (er, fd) => this[_onopen](er, fd)); - } - [_onopen](er, fd) { - if (this[_defaultFlag] && - this[_flags] === 'r+' && - er && - er.code === 'ENOENT') { - this[_flags] = 'w'; - this[_open](); - } - else if (er) { - this[_onerror](er); - } - else { - this[_fd] = fd; - this.emit('open', fd); - if (!this[_writing]) { - this[_flush](); - } - } - } - end(buf, enc) { - if (buf) { - //@ts-ignore - this.write(buf, enc); - } - this[_ended] = true; - // synthetic after-write logic, where drain/finish live - if (!this[_writing] && - !this[_queue].length && - typeof this[_fd] === 'number') { - this[_onwrite](null, 0); - } - return this; - } - write(buf, enc) { - if (typeof buf === 'string') { - buf = Buffer.from(buf, enc); - } - if (this[_ended]) { - this.emit('error', new Error('write() after end()')); - return false; - } - if (this[_fd] === undefined || this[_writing] || this[_queue].length) { - this[_queue].push(buf); - this[_needDrain] = true; - return false; - } - this[_writing] = true; - this[_write](buf); - return true; - } - [_write](buf) { - fs.write(this[_fd], buf, 0, buf.length, this[_pos], (er, bw) => this[_onwrite](er, bw)); - } - [_onwrite](er, bw) { - if (er) { - this[_onerror](er); - } - else { - if (this[_pos] !== undefined && typeof bw === 'number') { - this[_pos] += bw; - } - if (this[_queue].length) { - this[_flush](); - } - else { - this[_writing] = false; - if (this[_ended] && !this[_finished]) { - this[_finished] = true; - this[_close](); - this.emit('finish'); - } - else if (this[_needDrain]) { - this[_needDrain] = false; - this.emit('drain'); - } - } - } - } - [_flush]() { - if (this[_queue].length === 0) { - if (this[_ended]) { - this[_onwrite](null, 0); - } - } - else if (this[_queue].length === 1) { - this[_write](this[_queue].pop()); - } - else { - const iovec = this[_queue]; - this[_queue] = []; - writev(this[_fd], iovec, this[_pos], (er, bw) => this[_onwrite](er, bw)); - } - } - [_close]() { - if (this[_autoClose] && typeof this[_fd] === 'number') { - const fd = this[_fd]; - this[_fd] = undefined; - fs.close(fd, er => er ? this.emit('error', er) : this.emit('close')); - } - } -} -export class WriteStreamSync extends WriteStream { - [_open]() { - let fd; - // only wrap in a try{} block if we know we'll retry, to avoid - // the rethrow obscuring the error's source frame in most cases. - if (this[_defaultFlag] && this[_flags] === 'r+') { - try { - fd = fs.openSync(this[_path], this[_flags], this[_mode]); - } - catch (er) { - if (er?.code === 'ENOENT') { - this[_flags] = 'w'; - return this[_open](); - } - else { - throw er; - } - } - } - else { - fd = fs.openSync(this[_path], this[_flags], this[_mode]); - } - this[_onopen](null, fd); - } - [_close]() { - if (this[_autoClose] && typeof this[_fd] === 'number') { - const fd = this[_fd]; - this[_fd] = undefined; - fs.closeSync(fd); - this.emit('close'); - } - } - [_write](buf) { - // throw the original, but try to close if it fails - let threw = true; - try { - this[_onwrite](null, fs.writeSync(this[_fd], buf, 0, buf.length, this[_pos])); - threw = false; - } - finally { - if (threw) { - try { - this[_close](); - } - catch { - // ok error - } - } - } - } -} -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@isaacs/fs-minipass/dist/esm/index.js.map b/node_modules/@isaacs/fs-minipass/dist/esm/index.js.map deleted file mode 100644 index 2ef8b14..0000000 --- a/node_modules/@isaacs/fs-minipass/dist/esm/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import EE from 'events'\nimport fs from 'fs'\nimport { Minipass } from 'minipass'\n\nconst writev = fs.writev\n\nconst _autoClose = Symbol('_autoClose')\nconst _close = Symbol('_close')\nconst _ended = Symbol('_ended')\nconst _fd = Symbol('_fd')\nconst _finished = Symbol('_finished')\nconst _flags = Symbol('_flags')\nconst _flush = Symbol('_flush')\nconst _handleChunk = Symbol('_handleChunk')\nconst _makeBuf = Symbol('_makeBuf')\nconst _mode = Symbol('_mode')\nconst _needDrain = Symbol('_needDrain')\nconst _onerror = Symbol('_onerror')\nconst _onopen = Symbol('_onopen')\nconst _onread = Symbol('_onread')\nconst _onwrite = Symbol('_onwrite')\nconst _open = Symbol('_open')\nconst _path = Symbol('_path')\nconst _pos = Symbol('_pos')\nconst _queue = Symbol('_queue')\nconst _read = Symbol('_read')\nconst _readSize = Symbol('_readSize')\nconst _reading = Symbol('_reading')\nconst _remain = Symbol('_remain')\nconst _size = Symbol('_size')\nconst _write = Symbol('_write')\nconst _writing = Symbol('_writing')\nconst _defaultFlag = Symbol('_defaultFlag')\nconst _errored = Symbol('_errored')\n\nexport type ReadStreamOptions =\n Minipass.Options & {\n fd?: number\n readSize?: number\n size?: number\n autoClose?: boolean\n }\n\nexport type ReadStreamEvents = Minipass.Events & {\n open: [fd: number]\n}\n\nexport class ReadStream extends Minipass<\n Minipass.ContiguousData,\n Buffer,\n ReadStreamEvents\n> {\n [_errored]: boolean = false;\n [_fd]?: number;\n [_path]: string;\n [_readSize]: number;\n [_reading]: boolean = false;\n [_size]: number;\n [_remain]: number;\n [_autoClose]: boolean\n\n constructor(path: string, opt: ReadStreamOptions) {\n opt = opt || {}\n super(opt)\n\n this.readable = true\n this.writable = false\n\n if (typeof path !== 'string') {\n throw new TypeError('path must be a string')\n }\n\n this[_errored] = false\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : undefined\n this[_path] = path\n this[_readSize] = opt.readSize || 16 * 1024 * 1024\n this[_reading] = false\n this[_size] = typeof opt.size === 'number' ? opt.size : Infinity\n this[_remain] = this[_size]\n this[_autoClose] =\n typeof opt.autoClose === 'boolean' ? opt.autoClose : true\n\n if (typeof this[_fd] === 'number') {\n this[_read]()\n } else {\n this[_open]()\n }\n }\n\n get fd() {\n return this[_fd]\n }\n\n get path() {\n return this[_path]\n }\n\n //@ts-ignore\n write() {\n throw new TypeError('this is a readable stream')\n }\n\n //@ts-ignore\n end() {\n throw new TypeError('this is a readable stream')\n }\n\n [_open]() {\n fs.open(this[_path], 'r', (er, fd) => this[_onopen](er, fd))\n }\n\n [_onopen](er?: NodeJS.ErrnoException | null, fd?: number) {\n if (er) {\n this[_onerror](er)\n } else {\n this[_fd] = fd\n this.emit('open', fd as number)\n this[_read]()\n }\n }\n\n [_makeBuf]() {\n return Buffer.allocUnsafe(Math.min(this[_readSize], this[_remain]))\n }\n\n [_read]() {\n if (!this[_reading]) {\n this[_reading] = true\n const buf = this[_makeBuf]()\n /* c8 ignore start */\n if (buf.length === 0) {\n return process.nextTick(() => this[_onread](null, 0, buf))\n }\n /* c8 ignore stop */\n fs.read(this[_fd] as number, buf, 0, buf.length, null, (er, br, b) =>\n this[_onread](er, br, b),\n )\n }\n }\n\n [_onread](er?: NodeJS.ErrnoException | null, br?: number, buf?: Buffer) {\n this[_reading] = false\n if (er) {\n this[_onerror](er)\n } else if (this[_handleChunk](br as number, buf as Buffer)) {\n this[_read]()\n }\n }\n\n [_close]() {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = undefined\n fs.close(fd, er =>\n er ? this.emit('error', er) : this.emit('close'),\n )\n }\n }\n\n [_onerror](er: NodeJS.ErrnoException) {\n this[_reading] = true\n this[_close]()\n this.emit('error', er)\n }\n\n [_handleChunk](br: number, buf: Buffer) {\n let ret = false\n // no effect if infinite\n this[_remain] -= br\n if (br > 0) {\n ret = super.write(br < buf.length ? buf.subarray(0, br) : buf)\n }\n\n if (br === 0 || this[_remain] <= 0) {\n ret = false\n this[_close]()\n super.end()\n }\n\n return ret\n }\n\n emit(\n ev: Event,\n ...args: ReadStreamEvents[Event]\n ): boolean {\n switch (ev) {\n case 'prefinish':\n case 'finish':\n return false\n\n case 'drain':\n if (typeof this[_fd] === 'number') {\n this[_read]()\n }\n return false\n\n case 'error':\n if (this[_errored]) {\n return false\n }\n this[_errored] = true\n return super.emit(ev, ...args)\n\n default:\n return super.emit(ev, ...args)\n }\n }\n}\n\nexport class ReadStreamSync extends ReadStream {\n [_open]() {\n let threw = true\n try {\n this[_onopen](null, fs.openSync(this[_path], 'r'))\n threw = false\n } finally {\n if (threw) {\n this[_close]()\n }\n }\n }\n\n [_read]() {\n let threw = true\n try {\n if (!this[_reading]) {\n this[_reading] = true\n do {\n const buf = this[_makeBuf]()\n /* c8 ignore start */\n const br =\n buf.length === 0\n ? 0\n : fs.readSync(this[_fd] as number, buf, 0, buf.length, null)\n /* c8 ignore stop */\n if (!this[_handleChunk](br, buf)) {\n break\n }\n } while (true)\n this[_reading] = false\n }\n threw = false\n } finally {\n if (threw) {\n this[_close]()\n }\n }\n }\n\n [_close]() {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = undefined\n fs.closeSync(fd)\n this.emit('close')\n }\n }\n}\n\nexport type WriteStreamOptions = {\n fd?: number\n autoClose?: boolean\n mode?: number\n captureRejections?: boolean\n start?: number\n flags?: string\n}\n\nexport class WriteStream extends EE {\n readable: false = false\n writable: boolean = true;\n [_errored]: boolean = false;\n [_writing]: boolean = false;\n [_ended]: boolean = false;\n [_queue]: Buffer[] = [];\n [_needDrain]: boolean = false;\n [_path]: string;\n [_mode]: number;\n [_autoClose]: boolean;\n [_fd]?: number;\n [_defaultFlag]: boolean;\n [_flags]: string;\n [_finished]: boolean = false;\n [_pos]?: number\n\n constructor(path: string, opt: WriteStreamOptions) {\n opt = opt || {}\n super(opt)\n this[_path] = path\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : undefined\n this[_mode] = opt.mode === undefined ? 0o666 : opt.mode\n this[_pos] = typeof opt.start === 'number' ? opt.start : undefined\n this[_autoClose] =\n typeof opt.autoClose === 'boolean' ? opt.autoClose : true\n\n // truncating makes no sense when writing into the middle\n const defaultFlag = this[_pos] !== undefined ? 'r+' : 'w'\n this[_defaultFlag] = opt.flags === undefined\n this[_flags] = opt.flags === undefined ? defaultFlag : opt.flags\n\n if (this[_fd] === undefined) {\n this[_open]()\n }\n }\n\n emit(ev: string, ...args: any[]) {\n if (ev === 'error') {\n if (this[_errored]) {\n return false\n }\n this[_errored] = true\n }\n return super.emit(ev, ...args)\n }\n\n get fd() {\n return this[_fd]\n }\n\n get path() {\n return this[_path]\n }\n\n [_onerror](er: NodeJS.ErrnoException) {\n this[_close]()\n this[_writing] = true\n this.emit('error', er)\n }\n\n [_open]() {\n fs.open(this[_path], this[_flags], this[_mode], (er, fd) =>\n this[_onopen](er, fd),\n )\n }\n\n [_onopen](er?: null | NodeJS.ErrnoException, fd?: number) {\n if (\n this[_defaultFlag] &&\n this[_flags] === 'r+' &&\n er &&\n er.code === 'ENOENT'\n ) {\n this[_flags] = 'w'\n this[_open]()\n } else if (er) {\n this[_onerror](er)\n } else {\n this[_fd] = fd\n this.emit('open', fd)\n if (!this[_writing]) {\n this[_flush]()\n }\n }\n }\n\n end(buf: string, enc?: BufferEncoding): this\n end(buf?: Buffer, enc?: undefined): this\n end(buf?: Buffer | string, enc?: BufferEncoding): this {\n if (buf) {\n //@ts-ignore\n this.write(buf, enc)\n }\n\n this[_ended] = true\n\n // synthetic after-write logic, where drain/finish live\n if (\n !this[_writing] &&\n !this[_queue].length &&\n typeof this[_fd] === 'number'\n ) {\n this[_onwrite](null, 0)\n }\n return this\n }\n\n write(buf: string, enc?: BufferEncoding): boolean\n write(buf: Buffer, enc?: undefined): boolean\n write(buf: Buffer | string, enc?: BufferEncoding): boolean {\n if (typeof buf === 'string') {\n buf = Buffer.from(buf, enc)\n }\n\n if (this[_ended]) {\n this.emit('error', new Error('write() after end()'))\n return false\n }\n\n if (this[_fd] === undefined || this[_writing] || this[_queue].length) {\n this[_queue].push(buf)\n this[_needDrain] = true\n return false\n }\n\n this[_writing] = true\n this[_write](buf)\n return true\n }\n\n [_write](buf: Buffer) {\n fs.write(\n this[_fd] as number,\n buf,\n 0,\n buf.length,\n this[_pos],\n (er, bw) => this[_onwrite](er, bw),\n )\n }\n\n [_onwrite](er?: null | NodeJS.ErrnoException, bw?: number) {\n if (er) {\n this[_onerror](er)\n } else {\n if (this[_pos] !== undefined && typeof bw === 'number') {\n this[_pos] += bw\n }\n if (this[_queue].length) {\n this[_flush]()\n } else {\n this[_writing] = false\n\n if (this[_ended] && !this[_finished]) {\n this[_finished] = true\n this[_close]()\n this.emit('finish')\n } else if (this[_needDrain]) {\n this[_needDrain] = false\n this.emit('drain')\n }\n }\n }\n }\n\n [_flush]() {\n if (this[_queue].length === 0) {\n if (this[_ended]) {\n this[_onwrite](null, 0)\n }\n } else if (this[_queue].length === 1) {\n this[_write](this[_queue].pop() as Buffer)\n } else {\n const iovec = this[_queue]\n this[_queue] = []\n writev(this[_fd] as number, iovec, this[_pos] as number, (er, bw) =>\n this[_onwrite](er, bw),\n )\n }\n }\n\n [_close]() {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = undefined\n fs.close(fd, er =>\n er ? this.emit('error', er) : this.emit('close'),\n )\n }\n }\n}\n\nexport class WriteStreamSync extends WriteStream {\n [_open](): void {\n let fd\n // only wrap in a try{} block if we know we'll retry, to avoid\n // the rethrow obscuring the error's source frame in most cases.\n if (this[_defaultFlag] && this[_flags] === 'r+') {\n try {\n fd = fs.openSync(this[_path], this[_flags], this[_mode])\n } catch (er) {\n if ((er as NodeJS.ErrnoException)?.code === 'ENOENT') {\n this[_flags] = 'w'\n return this[_open]()\n } else {\n throw er\n }\n }\n } else {\n fd = fs.openSync(this[_path], this[_flags], this[_mode])\n }\n\n this[_onopen](null, fd)\n }\n\n [_close]() {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = undefined\n fs.closeSync(fd)\n this.emit('close')\n }\n }\n\n [_write](buf: Buffer) {\n // throw the original, but try to close if it fails\n let threw = true\n try {\n this[_onwrite](\n null,\n fs.writeSync(this[_fd] as number, buf, 0, buf.length, this[_pos]),\n )\n threw = false\n } finally {\n if (threw) {\n try {\n this[_close]()\n } catch {\n // ok error\n }\n }\n }\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/@isaacs/fs-minipass/dist/esm/package.json b/node_modules/@isaacs/fs-minipass/dist/esm/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/@isaacs/fs-minipass/dist/esm/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/@isaacs/fs-minipass/package.json b/node_modules/@isaacs/fs-minipass/package.json deleted file mode 100644 index cc4576c..0000000 --- a/node_modules/@isaacs/fs-minipass/package.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "name": "@isaacs/fs-minipass", - "version": "4.0.1", - "main": "./dist/commonjs/index.js", - "scripts": { - "prepare": "tshy", - "pretest": "npm run prepare", - "test": "tap", - "preversion": "npm test", - "postversion": "npm publish", - "prepublishOnly": "git push origin --follow-tags", - "format": "prettier --write . --loglevel warn", - "typedoc": "typedoc --tsconfig .tshy/esm.json ./src/*.ts" - }, - "keywords": [], - "author": "Isaac Z. Schlueter", - "license": "ISC", - "repository": { - "type": "git", - "url": "https://github.com/npm/fs-minipass.git" - }, - "description": "fs read and write streams based on minipass", - "dependencies": { - "minipass": "^7.0.4" - }, - "devDependencies": { - "@types/node": "^20.11.30", - "mutate-fs": "^2.1.1", - "prettier": "^3.2.5", - "tap": "^18.7.1", - "tshy": "^1.12.0", - "typedoc": "^0.25.12" - }, - "files": [ - "dist" - ], - "engines": { - "node": ">=18.0.0" - }, - "tshy": { - "exports": { - "./package.json": "./package.json", - ".": "./src/index.ts" - } - }, - "exports": { - "./package.json": "./package.json", - ".": { - "import": { - "types": "./dist/esm/index.d.ts", - "default": "./dist/esm/index.js" - }, - "require": { - "types": "./dist/commonjs/index.d.ts", - "default": "./dist/commonjs/index.js" - } - } - }, - "types": "./dist/commonjs/index.d.ts", - "type": "module", - "prettier": { - "semi": false, - "printWidth": 75, - "tabWidth": 2, - "useTabs": false, - "singleQuote": true, - "jsxSingleQuote": false, - "bracketSameLine": true, - "arrowParens": "avoid", - "endOfLine": "lf" - } -} diff --git a/node_modules/@kwsites/file-exists/CHANGELOG.md b/node_modules/@kwsites/file-exists/CHANGELOG.md deleted file mode 100644 index 9361ecb..0000000 --- a/node_modules/@kwsites/file-exists/CHANGELOG.md +++ /dev/null @@ -1,12 +0,0 @@ - -# Release History - -## 1.1.1 - -- Add dependency on `debug` to log results of the file system checks -- Add `jest` tests - -# 1.0.0 - -- First public release, a simple typescript library for checking whether a path exists - on the file system and optionally whether it points to a file or folder. diff --git a/node_modules/@kwsites/file-exists/LICENSE b/node_modules/@kwsites/file-exists/LICENSE deleted file mode 100644 index b123c04..0000000 --- a/node_modules/@kwsites/file-exists/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Steve King - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/@kwsites/file-exists/dist/index.d.ts b/node_modules/@kwsites/file-exists/dist/index.d.ts deleted file mode 100644 index 8420b10..0000000 --- a/node_modules/@kwsites/file-exists/dist/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './src'; diff --git a/node_modules/@kwsites/file-exists/dist/index.js b/node_modules/@kwsites/file-exists/dist/index.js deleted file mode 100644 index 87332ba..0000000 --- a/node_modules/@kwsites/file-exists/dist/index.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict"; -function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} -Object.defineProperty(exports, "__esModule", { value: true }); -__export(require("./src")); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@kwsites/file-exists/dist/index.js.map b/node_modules/@kwsites/file-exists/dist/index.js.map deleted file mode 100644 index 3b75ca4..0000000 --- a/node_modules/@kwsites/file-exists/dist/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;AACA,2BAAsB"} \ No newline at end of file diff --git a/node_modules/@kwsites/file-exists/dist/src/index.d.ts b/node_modules/@kwsites/file-exists/dist/src/index.d.ts deleted file mode 100644 index 3d234cd..0000000 --- a/node_modules/@kwsites/file-exists/dist/src/index.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Synchronous validation of a path existing either as a file or as a directory. - * - * @param {string} path The path to check - * @param {number} type One or both of the exported numeric constants - */ -export declare function exists(path: string, type?: number): boolean; -/** - * Constant representing a file - */ -export declare const FILE = 1; -/** - * Constant representing a folder - */ -export declare const FOLDER = 2; -/** - * Constant representing either a file or a folder - */ -export declare const READABLE: number; diff --git a/node_modules/@kwsites/file-exists/dist/src/index.js b/node_modules/@kwsites/file-exists/dist/src/index.js deleted file mode 100644 index 8a41c70..0000000 --- a/node_modules/@kwsites/file-exists/dist/src/index.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const fs_1 = require("fs"); -const debug_1 = __importDefault(require("debug")); -const log = debug_1.default('@kwsites/file-exists'); -function check(path, isFile, isDirectory) { - log(`checking %s`, path); - try { - const stat = fs_1.statSync(path); - if (stat.isFile() && isFile) { - log(`[OK] path represents a file`); - return true; - } - if (stat.isDirectory() && isDirectory) { - log(`[OK] path represents a directory`); - return true; - } - log(`[FAIL] path represents something other than a file or directory`); - return false; - } - catch (e) { - if (e.code === 'ENOENT') { - log(`[FAIL] path is not accessible: %o`, e); - return false; - } - log(`[FATAL] %o`, e); - throw e; - } -} -/** - * Synchronous validation of a path existing either as a file or as a directory. - * - * @param {string} path The path to check - * @param {number} type One or both of the exported numeric constants - */ -function exists(path, type = exports.READABLE) { - return check(path, (type & exports.FILE) > 0, (type & exports.FOLDER) > 0); -} -exports.exists = exists; -/** - * Constant representing a file - */ -exports.FILE = 1; -/** - * Constant representing a folder - */ -exports.FOLDER = 2; -/** - * Constant representing either a file or a folder - */ -exports.READABLE = exports.FILE + exports.FOLDER; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@kwsites/file-exists/dist/src/index.js.map b/node_modules/@kwsites/file-exists/dist/src/index.js.map deleted file mode 100644 index 68f2b8a..0000000 --- a/node_modules/@kwsites/file-exists/dist/src/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;AAAA,2BAA8B;AAC9B,kDAA0B;AAE1B,MAAM,GAAG,GAAG,eAAK,CAAC,sBAAsB,CAAC,CAAC;AAE1C,SAAS,KAAK,CAAC,IAAY,EAAE,MAAe,EAAE,WAAoB;IAC/D,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAEzB,IAAI;QACD,MAAM,IAAI,GAAG,aAAQ,CAAC,IAAI,CAAC,CAAC;QAE5B,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,MAAM,EAAE;YAC1B,GAAG,CAAC,6BAA6B,CAAC,CAAC;YACnC,OAAO,IAAI,CAAC;SACd;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,WAAW,EAAE;YACpC,GAAG,CAAC,kCAAkC,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC;SACd;QAED,GAAG,CAAC,iEAAiE,CAAC,CAAC;QACvE,OAAO,KAAK,CAAC;KACf;IAAC,OAAO,CAAC,EAAE;QACT,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE;YACtB,GAAG,CAAC,mCAAmC,EAAE,CAAC,CAAC,CAAC;YAC5C,OAAO,KAAK,CAAC;SACf;QAED,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QACrB,MAAM,CAAC,CAAC;KACV;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAgB,MAAM,CAAC,IAAY,EAAE,OAAe,gBAAQ;IACzD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,YAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,cAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,CAAC;AAFD,wBAEC;AAED;;GAEG;AACU,QAAA,IAAI,GAAG,CAAC,CAAC;AAEtB;;GAEG;AACU,QAAA,MAAM,GAAG,CAAC,CAAC;AAExB;;GAEG;AACU,QAAA,QAAQ,GAAG,YAAI,GAAG,cAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/@kwsites/file-exists/dist/test/__mocks__/fs.d.ts b/node_modules/@kwsites/file-exists/dist/test/__mocks__/fs.d.ts deleted file mode 100644 index ab80d33..0000000 --- a/node_modules/@kwsites/file-exists/dist/test/__mocks__/fs.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -export declare function statSync(...args: any[]): any; -export declare function addStatSyncMock(fn: any): void; -export declare function assertMocksUsed(): void; -declare const mockFs: { - statSync: typeof statSync; -}; -export default mockFs; diff --git a/node_modules/@kwsites/file-exists/dist/test/__mocks__/fs.js b/node_modules/@kwsites/file-exists/dist/test/__mocks__/fs.js deleted file mode 100644 index cd46c71..0000000 --- a/node_modules/@kwsites/file-exists/dist/test/__mocks__/fs.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -let statSyncMocks = []; -function statSync(...args) { - const mock = statSyncMocks.shift(); - if (typeof mock !== 'function') { - throw new Error(`fs.statSync called without configuring a mock`); - } - return mock(...args); -} -exports.statSync = statSync; -function addStatSyncMock(fn) { - statSyncMocks.push(fn); -} -exports.addStatSyncMock = addStatSyncMock; -function assertMocksUsed() { - if (statSyncMocks.length) { - throw new Error(`fs.afterEach: statSync has ${statSyncMocks.length} unused mocks`); - } -} -exports.assertMocksUsed = assertMocksUsed; -const mockFs = { - statSync, -}; -exports.default = mockFs; -//# sourceMappingURL=fs.js.map \ No newline at end of file diff --git a/node_modules/@kwsites/file-exists/dist/test/__mocks__/fs.js.map b/node_modules/@kwsites/file-exists/dist/test/__mocks__/fs.js.map deleted file mode 100644 index e2a3d16..0000000 --- a/node_modules/@kwsites/file-exists/dist/test/__mocks__/fs.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../../test/__mocks__/fs.ts"],"names":[],"mappings":";;AACA,IAAI,aAAa,GAAU,EAAE,CAAC;AAE9B,SAAgB,QAAQ,CAAC,GAAG,IAAW;IACpC,MAAO,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC;IACpC,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;QAC7B,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;KACnE;IAED,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AACxB,CAAC;AAPD,4BAOC;AAED,SAAgB,eAAe,CAAC,EAAO;IACpC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AAFD,0CAEC;AAED,SAAgB,eAAe;IAC5B,IAAI,aAAa,CAAC,MAAM,EAAE;QACvB,MAAM,IAAI,KAAK,CAAC,8BAA8B,aAAa,CAAC,MAAM,eAAe,CAAC,CAAC;KACrF;AACJ,CAAC;AAJD,0CAIC;AAED,MAAM,MAAM,GAAG;IACZ,QAAQ;CACV,CAAA;AAED,kBAAe,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/@kwsites/file-exists/dist/test/exists.spec.d.ts b/node_modules/@kwsites/file-exists/dist/test/exists.spec.d.ts deleted file mode 100644 index cb0ff5c..0000000 --- a/node_modules/@kwsites/file-exists/dist/test/exists.spec.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@kwsites/file-exists/dist/test/exists.spec.js b/node_modules/@kwsites/file-exists/dist/test/exists.spec.js deleted file mode 100644 index a36b549..0000000 --- a/node_modules/@kwsites/file-exists/dist/test/exists.spec.js +++ /dev/null @@ -1,77 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -jest.mock('fs'); -//@ts-ignore -const fs_1 = require("fs"); -const src_1 = require("../src"); -describe(`exists`, () => { - let statSync; - let statSyncMock; - let path; - beforeEach(() => { - path = `./path/${Math.random()}`; - fs_1.addStatSyncMock(statSyncMock = jest.fn(() => statSync())); - }); - afterEach(() => { - fs_1.assertMocksUsed(); - statSync = statSyncMock = undefined; - }); - describe('known errors', () => { - beforeEach(() => givenStatSyncThrows({ code: 'ENOENT' })); - it('with type', () => { - expect(src_1.exists(path, src_1.READABLE)).toBe(false); - }); - it('with type omitted', () => { - expect(src_1.exists(path)).toBe(false); - }); - }); - describe('unknown errors', () => { - let err; - beforeEach(() => err = givenStatSyncThrows(new Error('something'))); - it('with type', () => { - expect(() => src_1.exists(path, src_1.READABLE)).toThrow(err); - }); - it('with type omitted', () => { - expect(() => src_1.exists(path)).toThrow(err); - }); - }); - describe('path is a file', () => { - beforeEach(() => givenStatSyncIsA('file')); - existsReturns(true, false, true); - }); - describe('path is a folder', () => { - beforeEach(() => givenStatSyncIsA('folder')); - existsReturns(false, true, true); - }); - describe('path is unknown', () => { - beforeEach(() => givenStatSyncIsA('unknown')); - existsReturns(false, false, false); - }); - function existsReturns(file, folder, readable) { - it('when searching for a file', () => { - expect(src_1.exists(path, src_1.FILE)).toBe(file); - }); - it('when searching for a folder', () => { - expect(src_1.exists(path, src_1.FOLDER)).toBe(folder); - }); - it('when searching for either', () => { - expect(src_1.exists(path, src_1.READABLE)).toBe(readable); - }); - it('when searching without a type', () => { - expect(src_1.exists(path)).toBe(readable); - }); - } - function givenStatSyncThrows(err) { - statSync = () => { throw err; }; - return err; - } - function givenStatSyncIsA(type) { - const mockStat = { - isFile() { return type === 'file'; }, - isDirectory() { return type === 'folder'; }, - }; - statSync = () => mockStat; - return mockStat; - } -}); -//# sourceMappingURL=exists.spec.js.map \ No newline at end of file diff --git a/node_modules/@kwsites/file-exists/dist/test/exists.spec.js.map b/node_modules/@kwsites/file-exists/dist/test/exists.spec.js.map deleted file mode 100644 index 669176a..0000000 --- a/node_modules/@kwsites/file-exists/dist/test/exists.spec.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"exists.spec.js","sourceRoot":"","sources":["../../test/exists.spec.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@kwsites/file-exists/package.json b/node_modules/@kwsites/file-exists/package.json deleted file mode 100644 index 1cf6a80..0000000 --- a/node_modules/@kwsites/file-exists/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "@kwsites/file-exists", - "version": "1.1.1", - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "license": "MIT", - "repository": "git@github.com:kwsites/file-exists.git", - "author": "Steve King ", - "contributors": [ - { - "name": "Steve King", - "email": "steve@mydev.co" - } - ], - "files": [ - "dist/**/*.*" - ], - "scripts": { - "clean": "rimraf ./dist", - "build": "yarn run clean && tsc", - "preversion": "yarn run clean && yarn run build && yarn test", - "postversion": "npm publish --access=public && git push && git push --tags", - "test": "jest --coverage", - "tsc": "tsc" - }, - "devDependencies": { - "@babel/core": "^7.10.1", - "@babel/preset-env": "^7.10.1", - "@babel/preset-typescript": "^7.10.1", - "@types/debug": "^4.1.5", - "@types/jest": "^26.0.0", - "@types/node": "^10.12.0", - "babel-jest": "^26.0.1", - "jest": "^25.3.0", - "rimraf": "^2.6.2", - "ts-node": "^8.10.2", - "typescript": "^3.1.3" - }, - "dependencies": { - "debug": "^4.1.1" - } -} diff --git a/node_modules/@kwsites/file-exists/readme.md b/node_modules/@kwsites/file-exists/readme.md deleted file mode 100644 index 0db6d0f..0000000 --- a/node_modules/@kwsites/file-exists/readme.md +++ /dev/null @@ -1,41 +0,0 @@ -# @kwsites/file-exists - -Synchronous validation of a path existing either as a file or as a directory. - -``` -const { exists, FILE, FOLDER, READABLE } = require('@kwsites/file-exists'); - -// check for a folder existing -assert(exists(__dirname, FOLDER)); -assert(!exists(__filename, FOLDER)); - -// check for a file existing -assert(!exists(__filename, FILE)); -assert(exists(__filename, FILE)); - -// when no type is specified, both folders and files are allowed -assert(exists(__dirname)); -assert(exists(__filename)); - -// alternatively specify both files and folders -assert(exists(__dirname, FILE + FOLDER)); - -// or just that the path is readable (can be either a file or folder) -assert(exists(__filename, READABLE)); -``` - -## Troubleshooting - -This library uses [debug](https://www.npmjs.com/package/debug) to handle logging, -to enable logging, use either the environment variable: - -``` -"DEBUG=@kwsites/file-exists" node ./your-app.js -``` - -Or explicitly enable logging using the `debug` library itself: - -```javascript -require('debug').enable('@kwsites/file-exists'); -``` - diff --git a/node_modules/@kwsites/promise-deferred/LICENSE b/node_modules/@kwsites/promise-deferred/LICENSE deleted file mode 100644 index d082eb9..0000000 --- a/node_modules/@kwsites/promise-deferred/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2018 kwsites - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/@kwsites/promise-deferred/dist/index.d.ts b/node_modules/@kwsites/promise-deferred/dist/index.d.ts deleted file mode 100644 index 68fb38a..0000000 --- a/node_modules/@kwsites/promise-deferred/dist/index.d.ts +++ /dev/null @@ -1,49 +0,0 @@ -/** - * The `DeferredPromise` has a `promise` property in an initially pending state, - * that will be resolved when the `done` method is called or rejected when the - * `fail` method is called. - */ -export interface DeferredPromise { - done(result: RESOLVES): void; - fail(error: REJECTS): void; - readonly status: DeferredPromiseStatus; - readonly fulfilled: boolean; - promise: Promise; -} -/** - * The three states the DeferredPromise can be in - initially pending then either - * resolved or rejected when it is fulfilled. - * - * ```typescript - import {createDeferred, DeferredPromiseStatus} from '@kwsites/promise-deferred`; - - const pending: DeferredPromiseStatus = 'pending'; - expect(createDeferred()).toHaveProperty('status', pending); - ``` - */ -export declare type DeferredPromiseStatus = 'pending' | 'resolved' | 'rejected'; -/** - * Creates a new `DeferredPromise` - * - * ```typescript - import {deferred} from '@kwsites/promise-deferred`; - ``` - */ -export declare function deferred(): DeferredPromise; -/** - * Alias of the exported `deferred` function, to help consumers wanting to use `deferred` as the - * local variable name rather than the factory import name, without needing to rename on import. - * - * ```typescript - import {createDeferred} from '@kwsites/promise-deferred`; - ``` - */ -export declare const createDeferred: typeof deferred; -/** - * Default export allows use as: - * - * ```typescript - import deferred from '@kwsites/promise-deferred`; - ``` - */ -export default deferred; diff --git a/node_modules/@kwsites/promise-deferred/dist/index.js b/node_modules/@kwsites/promise-deferred/dist/index.js deleted file mode 100644 index 1ffefe6..0000000 --- a/node_modules/@kwsites/promise-deferred/dist/index.js +++ /dev/null @@ -1,59 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.createDeferred = exports.deferred = void 0; -/** - * Creates a new `DeferredPromise` - * - * ```typescript - import {deferred} from '@kwsites/promise-deferred`; - ``` - */ -function deferred() { - let done; - let fail; - let status = 'pending'; - const promise = new Promise((_done, _fail) => { - done = _done; - fail = _fail; - }); - return { - promise, - done(result) { - if (status === 'pending') { - status = 'resolved'; - done(result); - } - }, - fail(error) { - if (status === 'pending') { - status = 'rejected'; - fail(error); - } - }, - get fulfilled() { - return status !== 'pending'; - }, - get status() { - return status; - }, - }; -} -exports.deferred = deferred; -/** - * Alias of the exported `deferred` function, to help consumers wanting to use `deferred` as the - * local variable name rather than the factory import name, without needing to rename on import. - * - * ```typescript - import {createDeferred} from '@kwsites/promise-deferred`; - ``` - */ -exports.createDeferred = deferred; -/** - * Default export allows use as: - * - * ```typescript - import deferred from '@kwsites/promise-deferred`; - ``` - */ -exports.default = deferred; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@kwsites/promise-deferred/dist/index.js.map b/node_modules/@kwsites/promise-deferred/dist/index.js.map deleted file mode 100644 index 74583ed..0000000 --- a/node_modules/@kwsites/promise-deferred/dist/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AA0BA;;;;;;GAMG;AACH,SAAgB,QAAQ;IACrB,IAAI,IAAyB,CAAC;IAC9B,IAAI,IAAwB,CAAC;IAC7B,IAAI,MAAM,GAA0B,SAAS,CAAC;IAE9C,MAAM,OAAO,GAAe,IAAI,OAAO,CAAI,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACzD,IAAI,GAAG,KAAK,CAAC;QACb,IAAI,GAAG,KAAK,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,OAAO;QACJ,OAAO;QACP,IAAI,CAAE,MAAM;YACT,IAAI,MAAM,KAAK,SAAS,EAAE;gBACvB,MAAM,GAAG,UAAU,CAAC;gBACpB,IAAI,CAAC,MAAM,CAAC,CAAC;aACf;QACJ,CAAC;QACD,IAAI,CAAE,KAAK;YACR,IAAI,MAAM,KAAK,SAAS,EAAE;gBACvB,MAAM,GAAG,UAAU,CAAC;gBACpB,IAAI,CAAC,KAAK,CAAC,CAAC;aACd;QACJ,CAAC;QACD,IAAI,SAAS;YACV,OAAO,MAAM,KAAK,SAAS,CAAC;QAC/B,CAAC;QACD,IAAI,MAAM;YACP,OAAO,MAAM,CAAC;QACjB,CAAC;KACH,CAAC;AACL,CAAC;AA/BD,4BA+BC;AAED;;;;;;;GAOG;AACU,QAAA,cAAc,GAAG,QAAQ,CAAC;AAEvC;;;;;;GAMG;AACH,kBAAe,QAAQ,CAAC"} \ No newline at end of file diff --git a/node_modules/@kwsites/promise-deferred/package.json b/node_modules/@kwsites/promise-deferred/package.json deleted file mode 100644 index 72dbbf0..0000000 --- a/node_modules/@kwsites/promise-deferred/package.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "@kwsites/promise-deferred", - "description": "Minimalist creation of promise wrappers, exposing the ability to resolve or reject the inner promise", - "version": "1.1.1", - "private": false, - "author": "Steve King ", - "contributors": [ - { - "name": "Steve King", - "email": "steve@mydev.co" - } - ], - "main": "./dist/index", - "types": "./dist/index", - "license": "MIT", - "repository": "git://github.com/kwsites/promise-deferred.git", - "devDependencies": { - "@babel/core": "^7.10.3", - "@babel/preset-env": "^7.10.3", - "@babel/preset-typescript": "^7.10.1", - "@types/jest": "^26.0.0", - "@types/node": "^14.0.13", - "babel-jest": "^26.1.0", - "babel-preset-env": "^1.7.0", - "jest": "^26.1.0", - "ts-node": "^8.10.2", - "typescript": "^3.9.5" - }, - "files": [ - "LICENSE", - "dist/**/*.*" - ], - "scripts": { - "clean": "git clean -fxd -e .idea -e node_modules", - "clean:modules": "git clean -fxd node_modules", - "build": "tsc --build", - "build:clean": "yarn run clean && tsc", - "preversion": "yarn run build:clean && yarn test", - "postversion": "npm publish --access=public && git push && git push --tags", - "test": "jest --coverage", - "tsc": "tsc" - } -} diff --git a/node_modules/@malept/cross-spawn-promise/LICENSE b/node_modules/@malept/cross-spawn-promise/LICENSE deleted file mode 100644 index d645695..0000000 --- a/node_modules/@malept/cross-spawn-promise/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/node_modules/@malept/cross-spawn-promise/README.md b/node_modules/@malept/cross-spawn-promise/README.md deleted file mode 100644 index f8e79c0..0000000 --- a/node_modules/@malept/cross-spawn-promise/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# `@malept/cross-spawn-promise` - -> A promisified version of [`cross-spawn`](https://npm.im/cross-spawn) with slightly different behavior & extra options. - -[![CI](https://github.com/malept/cross-spawn-promise/workflows/CI/badge.svg)](https://github.com/malept/cross-spawn-promise/actions?query=workflow%3ACI) -[![NPM package](https://img.shields.io/npm/v/@malept/cross-spawn-promise.svg)](https://www.npmjs.com/package/@malept/cross-spawn-promise) -[![codecov](https://codecov.io/gh/malept/cross-spawn-promise/branch/main/graph/badge.svg)](https://codecov.io/gh/malept/cross-spawn-promise) - -## Different Behavior - -If the spawned process exits with a non-zero code, an `ExitCodeError` is thrown with the original -command, code, `stdout`, and `stderr` as properties. - -If the spawned process is terminated by a signal on non-Windows platforms, an `ExitSignalError` is -thrown with the original command, signal name, `stdout`, and `stderr` as properties. - -## Extra Options - -- `logger`: a `Function` such as `console.log` or `debug(name)` to log some information - about the spawned process. -- `updateErrorCallback`: a callback which mutates the error before it is re-thrown. Most commonly, - this is used to augment the error message of `ENOENT` error to provide a more human-friendly - message as to how to install the missing executable. - -## Legal - -This module is licensed under the Apache 2.0 license. diff --git a/node_modules/@malept/cross-spawn-promise/dist/src/index.d.ts b/node_modules/@malept/cross-spawn-promise/dist/src/index.d.ts deleted file mode 100644 index 68789ac..0000000 --- a/node_modules/@malept/cross-spawn-promise/dist/src/index.d.ts +++ /dev/null @@ -1,61 +0,0 @@ -/// -import { SpawnOptions } from "child_process"; -export declare type LoggerFunction = (message: string) => void; -/** - * List of string arguments. - */ -export declare type CrossSpawnArgs = ReadonlyArray | undefined; -export declare type CrossSpawnOptions = SpawnOptions & { - /** - * A `Function` such as `console.log` or `debug(name)` to log some information about the - * spawned process. - */ - logger?: LoggerFunction; - /** - * A callback which mutates the error before it is rethrown. Most commonly, this is used to - * augment the error message of `ENOENT` errors to provide a more human-friendly message as to - * how to install the missing executable. - * - * @param error - The error thrown from the `spawn` function - * @param hasLogger - Whether `logger` was set - */ - updateErrorCallback?: (error: Error, hasLogger: boolean) => void; -}; -/** - * Wrapper error for when the spawn function itself emits an error. - */ -export declare class CrossSpawnError extends Error { - originalError: Error; - constructor(cmd: string, args: CrossSpawnArgs, originalError: Error, stderr: string); -} -/** - * Base error class for when a process does not exit with a status code of zero. - */ -export declare abstract class ExitError extends Error { - cmd: string; - args: CrossSpawnArgs; - stdout: string; - stderr: string; - constructor(cmd: string, args: CrossSpawnArgs, message: string, stdout: string, stderr: string); -} -/** - * The error thrown when a process emits a non-zero exit code. - */ -export declare class ExitCodeError extends ExitError { - code: number; - constructor(cmd: string, args: CrossSpawnArgs, code: number, stdout: string, stderr: string); -} -/** - * The error thrown when a process exits via a signal. - */ -export declare class ExitSignalError extends ExitError { - signal: string; - constructor(cmd: string, args: CrossSpawnArgs, signal: string, stdout: string, stderr: string); -} -/** - * A wrapper around `cross-spawn`'s `spawn` function which can optionally log the command executed - * and/or change the error object via a callback. - * - * @param cmd - The command to run - */ -export declare function spawn(cmd: string, args?: CrossSpawnArgs, options?: CrossSpawnOptions): Promise; diff --git a/node_modules/@malept/cross-spawn-promise/dist/src/index.js b/node_modules/@malept/cross-spawn-promise/dist/src/index.js deleted file mode 100644 index 0b6c516..0000000 --- a/node_modules/@malept/cross-spawn-promise/dist/src/index.js +++ /dev/null @@ -1,113 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.spawn = exports.ExitSignalError = exports.ExitCodeError = exports.ExitError = exports.CrossSpawnError = void 0; -const cross_spawn_1 = __importDefault(require("cross-spawn")); -function stringifyCommand(cmd, args) { - if (args && Array.isArray(args) && args.length > 0) { - return `${cmd} ${args.join(" ")}`; - } - else { - return cmd; - } -} -/** - * Wrapper error for when the spawn function itself emits an error. - */ -class CrossSpawnError extends Error { - constructor(cmd, args, originalError, stderr) { - const fullCommand = stringifyCommand(cmd, args); - const errorMessage = originalError.message || originalError; - super(`Error executing command (${fullCommand}):\n${errorMessage}\n${stderr}`.trim()); - this.originalError = originalError; - } -} -exports.CrossSpawnError = CrossSpawnError; -/** - * Base error class for when a process does not exit with a status code of zero. - */ -class ExitError extends Error { - constructor(cmd, args, message, stdout, stderr) { - super(message); - this.cmd = cmd; - this.args = args; - this.stdout = stdout; - this.stderr = stderr; - } -} -exports.ExitError = ExitError; -/** - * The error thrown when a process emits a non-zero exit code. - */ -class ExitCodeError extends ExitError { - constructor(cmd, args, code, stdout, stderr) { - const fullCommand = stringifyCommand(cmd, args); - super(cmd, args, `Command failed with a non-zero return code (${code}):\n${fullCommand}\n${stdout}\n${stderr}`.trim(), stdout, stderr); - this.code = code; - } -} -exports.ExitCodeError = ExitCodeError; -/** - * The error thrown when a process exits via a signal. - */ -class ExitSignalError extends ExitError { - constructor(cmd, args, signal, stdout, stderr) { - const fullCommand = stringifyCommand(cmd, args); - super(cmd, args, `Command terminated via a signal (${signal}):\n${fullCommand}\n${stdout}\n${stderr}`.trim(), stdout, stderr); - this.signal = signal; - } -} -exports.ExitSignalError = ExitSignalError; -/** - * A wrapper around `cross-spawn`'s `spawn` function which can optionally log the command executed - * and/or change the error object via a callback. - * - * @param cmd - The command to run - */ -async function spawn(cmd, args, options) { - if (!options) { - options = {}; - } - const { logger, updateErrorCallback, ...spawnOptions } = options; - if (logger) - logger(`Executing command ${stringifyCommand(cmd, args)}`); - return new Promise((resolve, reject) => { - let stdout = ""; - let stderr = ""; - const process = cross_spawn_1.default(cmd, args, spawnOptions); - if (process.stdout) { - process.stdout.on("data", (data) => { - stdout += data.toString(); - }); - } - if (process.stderr) { - process.stderr.on("data", - /* istanbul ignore next */ (data) => { - stderr += data.toString(); - }); - } - process.on("close", (code, signal) => { - if (code === 0) { - resolve(stdout); - } - else if (code === null) { - // Why: assume signal is not null if code is null - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - reject(new ExitSignalError(cmd, args, signal, stdout, stderr)); - } - else { - reject(new ExitCodeError(cmd, args, code, stdout, stderr)); - } - }); - process.on("error", (err) => { - if (updateErrorCallback) { - updateErrorCallback(err, !!logger); - } - reject(new CrossSpawnError(cmd, args, err, stderr)); - }); - }); -} -exports.spawn = spawn; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@malept/cross-spawn-promise/dist/src/index.js.map b/node_modules/@malept/cross-spawn-promise/dist/src/index.js.map deleted file mode 100644 index 58ed875..0000000 --- a/node_modules/@malept/cross-spawn-promise/dist/src/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@malept/cross-spawn-promise/package.json b/node_modules/@malept/cross-spawn-promise/package.json deleted file mode 100644 index 47f4431..0000000 --- a/node_modules/@malept/cross-spawn-promise/package.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "name": "@malept/cross-spawn-promise", - "version": "2.0.0", - "description": "Promisified version of cross-spawn", - "main": "dist/src/index.js", - "repository": "https://github.com/malept/cross-spawn-promise", - "author": "Mark Lee", - "license": "Apache-2.0", - "engines": { - "node": ">= 12.13.0" - }, - "scripts": { - "ava": "ava", - "build": "tsc", - "coverage": "nyc --reporter=lcov --reporter=text ava", - "docs": "typedoc src/index.ts", - "lint": "prettier --check . && eslint --ext .ts .", - "prepare": "husky install && yarn build", - "test": "yarn lint && yarn ava" - }, - "files": [ - "dist" - ], - "dependencies": { - "cross-spawn": "^7.0.1" - }, - "devDependencies": { - "@istanbuljs/nyc-config-typescript": "^1.0.1", - "@types/cross-spawn": "^6.0.1", - "@types/node": "^15.14.0", - "@typescript-eslint/eslint-plugin": "^4.0.1", - "@typescript-eslint/parser": "^4.0.1", - "ava": "^3.3.0", - "eslint": "^7.0.0", - "eslint-config-prettier": "^8.0.0", - "eslint-plugin-ava": "^12.0.0", - "eslint-plugin-import": "^2.20.1", - "eslint-plugin-prettier": "^3.1.2", - "eslint-plugin-promise": "^5.1.0", - "eslint-plugin-tsdoc": "^0.2.5", - "husky": "^7.0.0", - "lint-staged": "^11.0.0", - "nyc": "^15.0.0", - "prettier": "^2.0.1", - "source-map-support": "^0.5.16", - "ts-node": "^10.0.0", - "typedoc": "^0.21.2", - "typescript": "~4.3.5" - }, - "ava": { - "extensions": [ - "ts" - ], - "require": [ - "ts-node/register" - ] - }, - "eslintConfig": { - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": "2019", - "sourceType": "module" - }, - "plugins": [ - "@typescript-eslint", - "eslint-plugin-tsdoc" - ], - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:ava/recommended", - "plugin:import/errors", - "plugin:import/warnings", - "plugin:import/typescript", - "plugin:prettier/recommended", - "plugin:promise/recommended", - "prettier" - ], - "rules": { - "strict": "error", - "tsdoc/syntax": "warn" - } - }, - "eslintIgnore": [ - "dist" - ], - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/malept" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" - } - ], - "lint-staged": { - "*.{json,md,yml}": "prettier --write", - "*.ts": [ - "prettier --write", - "eslint --fix" - ] - }, - "nyc": { - "extends": "@istanbuljs/nyc-config-typescript" - } -} diff --git a/node_modules/@malept/flatpak-bundler/LICENSE b/node_modules/@malept/flatpak-bundler/LICENSE deleted file mode 100644 index 134663f..0000000 --- a/node_modules/@malept/flatpak-bundler/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2016 Endless Mobile, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/@malept/flatpak-bundler/README.md b/node_modules/@malept/flatpak-bundler/README.md deleted file mode 100644 index 6d96bff..0000000 --- a/node_modules/@malept/flatpak-bundler/README.md +++ /dev/null @@ -1,210 +0,0 @@ -# @malept/flatpak-bundler [![Version](https://img.shields.io/npm/v/@malept/flatpak-bundler.svg)](https://www.npmjs.com/package/@malept/flatpak-bundler) [![Build Status](https://github.com/malept/flatpak-bundler/workflows/CI/badge.svg)](https://github.com/malept/flatpak-bundler/actions?query=workflow%3ACI) -Build [flatpaks](https://flatpak.org/) from Node.js. - -# Quick Start - -Install `@malept/flatpak-bundler`. -```shell -$ npm install @malept/flatpak-bundler -``` - -[Build a flatpak with a Node script](#hello-world). - -Install and run it! -```shell -$ flatpak install --user --bundle hello.flatpak -$ flatpak run org.world.Hello -Hello, world! -``` - -## Overview -This modules allows building flatpaks programmatically from Node. It requires -Node 10 or above and flatpak >= 0.6.13 to be installed on your system. - -Under the hood, this is just a wrapper for the [flatpak-builder](https://docs.flatpak.org/en/latest/flatpak-builder.html) -tool with some extra sugar added. - -With `flatpak-builder`, you specify a runtime, sandbox permissions and software -modules to build into your application, and build a flatpak from start to finish. -This module provides a few additional features: - - - Supports auto installing flatpak runtime and app dependencies - - Supports exporting directly to the a single file flatpak bundle - - Supports easy copying files and creating symlinks directly in `/app` - -The latter is particularly useful for [Electron](https://electronjs.org/) and -[nw.js](http://nwjs.io/) style Node applications, which often create packages -from prebuilt binaries and do not attempt to follow an autotools-like -[build api](https://github.com/cgwalters/build-api). - -This module should make it easy to plug flatpak support into an Electron or nw.js -app packaging phase. - -## Usage - -### translateArch(arch) - -Used to translate a Node-style arch (e.g., `x64`) into a Flatpak-compatible arch (e.g., `x86_64`). - -If the arch is unknown, it will pass through the input value. - -### bundle(manifest, buildOptions) - -Takes an [app manifest](#manifest) and a build options object. It returns a Promise. - -Both the manifest and options objects support both camelCase and dash-separated -variants of any option. - -The promise is returned with a `finalBuildOptions` value. It contains the build -options after default values have been applied. Useful to read out the -`workingDir`, for example. - -#### Manifest - -This matches the format for [`flatpak-builder` app -manifests](https://docs.flatpak.org/en/latest/manifests.html), with a few extra -options added and camelCase variants supported. - - - **id**: Required. The application id. - - **runtime**: Required. The runtime for your flatpak application. - - **sdk**: Required. The sdk for your flatpak application. - - **base**: An app to inherit from. Use the app as a "base" for `/app` - contents. - - **finishArgs**: The arguments to pass to `flatpak build-finish`. Use this to - add sandbox permissions. See the [Electron app example](#electron-app) for - some common app permissions. - - **modules**: If you need to build other software modules into you flatpak app - (anything not already in your runtime or base app), you can specify them - here. - -#### Build Options - - - **bundlePath**: Output location for a single file version of the flatpak. If - non supplied, the single file flatpak will not be created. - - **arch**: The architecture for the flatpak bundle. x86_64, i386 or arm. - - **workingDir**: The working directory to call `flatpak-builder` from. - Defaults to a new tmp directory. - - **buildDir**: The directory to build the application in. Defaults to - `${workingDir}/build` - - **repoDir**: The directory for a flatpak repo, can be used to publish to an - existing repo. Defaults to `${workingDir}/repo` - - **cleanTmpdirs**: Cleanup any tmp directories created during the build on - process exit. Defaults to true. Set false for easier debugging. - - **autoInstallRuntime**: Install/update the runtime while building. Defaults - to true if runtimeFlatpakref is set in the manifest. - - **autoInstallSdk**: Install/update the sdk while building. Defaults - to true if sdkFlatpakref is set in the manifest. - - **autoInstallBase**: Install/update the base app while building. Defaults - to true if baseFlatpakref is set in the manifest. - - **gpgSign**: The gpg key to use to sign the flatpak repo and bundle file. - - **gpgHomedir**: The gpg homedir to use when signing. - - **subject**: The single line subject to use for the flatpak repo commit - message. - - **body**: The description to use for the flatpak repo commit message. - - **files**: Files to copy directly into the app. Should be a list of [source, - dest] tuples. Source should be a relative/absolute path to a file/directory - to copy into the flatpak, and dest should be the path inside the app install - prefix (e.g. `/share/applications/`) - - **symlinks**: Symlinks to create in the app files. Should be a list of - [target, location] symlink tuples. Target can be either a relative or - absolute path inside the app install prefix, and location should be a - absolute path inside the prefix to create the symlink at. - - **extraExports**: Files to export outside of the flatpak sandbox, in addition - to the application desktop file, icons and appstream. File basename *must* - be prefixed with the app id. Should not be needed for common use. - - **runtimeFlatpakref**: A pathname or url to a flatpakref file to use to auto - install the runtime. - - **sdkFlatpakref**: A pathname or url to a flatpakref file to use to auto - install the sdk. - - **baseFlatpakref**: A pathname or url to a flatpakref file to use to auto - install the base app. - - **bundleRepoUrl**: Repo url for the single file bundle. Installing the bundle - will automatically configure a remote for this URL. - - **extraFlatpakBuilderArgs**: List of extra arguments to pass to the - [flatpak-builder](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html) command. - - **extraFlatpakBuildExportArgs**: List of extra arguments to pass to the - [flatpak build-export](https://docs.flatpak.org/en/latest/flatpak-command-reference.html#flatpak-build-export) command. - - **extraFlatpakBuildBundleArgs**: List of extra arguments to pass to the - [flatpak build-bundle](https://docs.flatpak.org/en/latest/flatpak-command-reference.html#flatpak-build-bundle) command. - -### Logging -To turn on debugging output, set the DEBUG environment variable: - -```shell -DEBUG=flatpak-bundler npm run my-flatpak-command -``` - -## Examples - -### Hello world - -```javascript -const flatpakBundler = require('@malept/flatpak-bundler') -const fs = require('fs-extra') - -// Write a hello world script to disk -await fs.writeFile('hello', -`#!/bin/bash -echo "Hello, world!"`, { mode: 0o755 }) - -// Make a flatpak with it! -try { - await flatpakBundler.bundle({ - id: 'org.world.Hello', - runtime: 'org.freedesktop.Platform', - runtimeVersion: '1.4', - sdk: 'org.freedesktop.Sdk', - }, { - bundlePath: 'hello.flatpak', - files: [ - ['hello', '/bin/hello'] - ], - runtimeFlatpakref: 'https://raw.githubusercontent.com/endlessm/flatpak-bundler/master/refs/freedesktop-runtime-1.4.flatpakref' - }) - console.log('Flatpak built successfully') -} catch (error) { - console.error('Error building flatpak', error) -} -``` - -### Electron App - -```javascript -const flatpakBundler = require('@malept/flatpak-bundler') - -try { - const finalBuildOptions = await flatpakBundler.bundle({ // Manifest - id: 'org.world.Hello', - base: 'io.atom.electron.BaseApp', // Electron base application - runtime: 'org.freedesktop.Platform', // Use the freedesktop runtime - runtimeVersion: '1.4', - sdk: 'org.freedesktop.Sdk', - finishArgs: [ - '--share=ipc', '--socket=x11', // Allow app to show windows with X11 - '--socket=pulseaudio', // Allow audio output - '--filesystem=home', // Allow access to users home directory - '--share=network', // Allow network access - '--device=dri' // Allow OpenGL rendering - ], - renameDesktopFile: 'hello.desktop', // Rename the desktop file to agree with the app ID so flatpak will export it - renameIcon: 'hello' // Rename the icon to agree with the app ID so flatpak will export it - }, { // Build options - arch: 'x86_64', - baseFlatpakref: 'https://s3-us-west-2.amazonaws.com/electron-flatpak.endlessm.com/electron-base-app-master.flatpakref', // So we can auto install the runtime - bundlePath: 'dist/hello_x86_64.flatpak', - files: [ - [ 'static/linux', '/share/' ], // Desktop file and icons - [ packagedFileDir, '/share/bar' ] // Application binaries and assets - ], - gpgSign: '1234ABCD', // GPG key to sign with - runtimeFlatpakref: 'https://raw.githubusercontent.com/endlessm/flatpak-bundler/master/refs/freedesktop-runtime-1.4.flatpakref', - symlinks: [ - [ '/share/bar/Bar', '/bin/Bar' ] // Create a symlink in /bin to to app executable - ] - }) - console.log('Flatpak built successfully.') - console.log(`Build dir and repo in ${finalBuildOptions.workingDir}`) -} catch (error) { - console.error('Error building flatpak', error) -} -``` diff --git a/node_modules/@malept/flatpak-bundler/index.js b/node_modules/@malept/flatpak-bundler/index.js deleted file mode 100644 index 5968fcf..0000000 --- a/node_modules/@malept/flatpak-bundler/index.js +++ /dev/null @@ -1,318 +0,0 @@ -'use strict' - -const _ = require('lodash') -const childProcess = require('child_process') -const fs = require('fs-extra') -const path = require('path') -const { promisify } = require('util') -const tmp = require('tmp-promise') - -const pkg = require('./package.json') -const logger = require('debug')(pkg.name) - -const exec = promisify(childProcess.exec) - -function kebabify (object) { - return _.cloneDeepWith(object, (value) => { - if (!value || typeof value !== 'object') return value - - return Object.keys(value).reduce((newValue, key) => { - newValue[_.kebabCase(key)] = value[key] - return newValue - }, {}) - }) -} - -function translateArch (arch) { - if (arch === 'ia32') return 'i386' - if (arch === 'x64') return 'x86_64' - if (arch === 'amd64') return 'x86_64' - if (arch === 'armv7l') return 'arm' - return arch -} - -function getOptionsWithDefaults (options, manifest) { - const defaults = { - 'build-dir': path.join(options['working-dir'], 'build'), - 'repo-dir': path.join(options['working-dir'], 'repo'), - 'manifest-path': path.join(options['working-dir'], 'manifest.json'), - 'extra-flatpak-builder-args': [], - 'extra-flatpak-build-bundle-args': [], - 'extra-flatpak-build-export-args': [], - 'clean-tmpdirs': true, - 'auto-install-runtime': typeof options['runtime-flatpakref'] !== 'undefined', - 'auto-install-sdk': typeof options['sdk-flatpakref'] !== 'undefined', - 'auto-install-base': typeof options['base-flatpakref'] !== 'undefined' - } - options = _.defaults({}, options, defaults) - options['working-dir'] = path.resolve(options['working-dir']) - options['build-dir'] = path.resolve(options['build-dir']) - options['repo-dir'] = path.resolve(options['repo-dir']) - options['manifest-path'] = path.resolve(options['manifest-path']) - if (options['bundle-path']) options['bundle-path'] = path.resolve(options['bundle-path']) - return options -} - -async function spawnWithLogging (options, command, args, allowFail) { - return new Promise((resolve, reject) => { - logger(`$ ${command} ${args.join(' ')}`) - const child = childProcess.spawn(command, args, { cwd: options['working-dir'] }) - child.stdout.on('data', (data) => { - logger(`1> ${data}`) - }) - child.stderr.on('data', (data) => { - logger(`2> ${data}`) - }) - child.on('error', (error) => { - reject(error) - }) - child.on('close', (code) => { - if (!allowFail && code !== 0) { - reject(new Error(`${command} failed with status code ${code}`)) - } - resolve(code === 0) - }) - }) -} - -function addCommandLineOption (args, name, value) { - if (!value) return - - args.push(`--${name}`) - if (value !== true) args.push(value) -} - -async function checkInstalled (id, options, version, checkUser) { - const args = ['info'] - addCommandLineOption(args, 'show-commit', true) - addCommandLineOption(args, checkUser ? 'user' : 'system', true) - args.push([id, options.arch, version].join('/')) - return spawnWithLogging(options, 'flatpak', args, true) -} - -let _flatpakBuilderVersion - -/** - * Get the flatpak-builder version in a comparable form (Array of Numbers). - */ -async function flatpakBuilderVersion () { - if (!_flatpakBuilderVersion) { - const versionString = _.last((await exec('flatpak-builder --version')).toString().split(' ')) - _flatpakBuilderVersion = versionString.split('.').map(part => parseInt(part, 10)) - } - - return _flatpakBuilderVersion -} - -async function addAssumeYesArg (args) { - if ((await flatpakBuilderVersion()) >= [0, 9, 9]) { - logger('flatpak-builder is new enough, adding --assumeyes') - addCommandLineOption(args, 'assumeyes', true) - } -} - -async function ensureRef (options, manifest, type, version) { - const flatpakref = options[`${type}-flatpakref`] - const id = manifest[type] - if (!options[`auto-install-${type}`]) { - return - } - logger(`Ensuring ${type} is up to date`) - - logger(`Checking for install of ${id}`) - const [userInstall, systemInstall] = await Promise.all([ - checkInstalled(id, options, version, true), - checkInstalled(id, options, version, false) - ]) - if (!userInstall && !systemInstall) { - logger(`No install of ${id} found, trying to install from ${flatpakref}`) - if (!flatpakref) { - throw new Error(`Cannot install ${id} without flatpakref`) - } - const args = ['install'] - addCommandLineOption(args, 'user', true) - addCommandLineOption(args, 'no-deps', true) - addCommandLineOption(args, 'arch', options.arch) - await addAssumeYesArg(args) - if (flatpakref.startsWith('app/') || flatpakref.startsWith('runtime/')) { - args.push(flatpakref) - } else { - addCommandLineOption(args, 'from', flatpakref) - } - return spawnWithLogging(options, 'flatpak', args) - } - - logger(`Found install of ${id}, trying to update`) - const args = ['update'] - addCommandLineOption(args, 'user', userInstall) - addCommandLineOption(args, 'no-deps', true) - addCommandLineOption(args, 'arch', options.arch) - await addAssumeYesArg(args) - args.push(id) - if (version) { - args.push(version) - } - return spawnWithLogging(options, 'flatpak', args) -} - -async function ensureRuntime (options, manifest) { - return ensureRef(options, manifest, 'runtime', manifest['runtime-version']) -} - -async function ensureSdk (options, manifest) { - return ensureRef(options, manifest, 'sdk', manifest['runtime-version']) -} - -async function ensureBase (options, manifest) { - return ensureRef(options, manifest, 'base', manifest['base-version']) -} - -async function ensureWorkingDir (options) { - if (!options['working-dir']) { - const dir = await tmp.dir({ prefix: 'flatpak-bundler', unsafeCleanup: options['clean-tmpdirs'] }) - options['working-dir'] = dir.path - } else { - return fs.ensureDir(options['working-dir']) - } -} - -async function writeJsonFile (options, manifest) { - return fs.writeJson(options['manifest-path'], manifest, { space: ' ' }) -} - -async function copyFiles (options, manifest) { - if (!options.files) { - return - } - - return Promise.all(options.files.map(async sourceDest => { - const source = path.resolve(sourceDest[0]) - const dest = path.join(options['build-dir'], 'files', sourceDest[1]) - let dir = dest - if (!dir.endsWith(path.sep)) { - dir = path.dirname(dir) - } - - logger(`Copying ${source} to ${dest}`) - await fs.ensureDir(dir) - await fs.copy(source, dest) - })) -} - -async function createSymlinks (options, manifest) { - if (!options.symlinks) { - return - } - - return Promise.all(options.symlinks.map(async ([targetPath, location]) => { - const target = path.join('/app', targetPath) - const dest = path.join(options['build-dir'], 'files', location) - - logger(`Symlinking ${target} at ${dest}`) - await fs.ensureDir(path.dirname(dest)) - await fs.symlink(target, dest) - })) -} - -async function copyExports (options, manifest) { - if (!options['extra-exports']) { - return - } - - return Promise.all(options['extra-exports'].map(async source => { - const dest = path.join(options['build-dir'], 'export', source) - const dir = path.dirname(dest) - source = path.join(options['build-dir'], 'files', source) - - logger(`Exporting ${source} to ${dest}`) - await fs.ensureDir(dir) - await fs.copy(source, dest) - })) -} - -async function flatpakBuilder (options, manifest, finish) { - const args = [] - addCommandLineOption(args, 'arch', options.arch) - addCommandLineOption(args, 'force-clean', true) - // If we are not compiling anything, allow building without the platform and sdk - // installed. Allows automated builds on a minimal environment, for example. - if (!manifest.modules || manifest.modules.length === 0) { - addCommandLineOption(args, 'allow-missing-runtimes', true) - } - if (!finish) { - addCommandLineOption(args, 'build-only', true) - } else { - addCommandLineOption(args, 'finish-only', true) - } - await addAssumeYesArg(args) - args.push.apply(args, options['extra-flatpak-builder-args']) - - args.push(options['build-dir']) - args.push(options['manifest-path']) - return spawnWithLogging(options, 'flatpak-builder', args) -} - -async function flatpakBuildExport (options, manifest) { - const args = ['build-export'] - addCommandLineOption(args, 'arch', options.arch) - addCommandLineOption(args, 'gpg-sign', options['gpg-sign']) - addCommandLineOption(args, 'gpg-homedir', options['gpg-homedir']) - addCommandLineOption(args, 'subject', options.subject) - addCommandLineOption(args, 'body', options.body) - if (options['build-runtime']) addCommandLineOption(args, 'runtime', true) - args.push.apply(args, options['extra-flatpak-build-export-args']) - - args.push(options['repo-dir']) - args.push(options['build-dir']) - if (manifest.branch) args.push(manifest.branch) - return spawnWithLogging(options, 'flatpak', args) -} - -async function flatpakBuildBundle (options, manifest) { - if (!options['bundle-path']) { - return - } - - const args = ['build-bundle'] - addCommandLineOption(args, 'arch', options.arch) - addCommandLineOption(args, 'gpg-keys', options['gpg-keys']) - addCommandLineOption(args, 'gpg-homedir', options['gpg-homedir']) - addCommandLineOption(args, 'repo-url', options['bundle-repo-url']) - if (options['build-runtime']) addCommandLineOption(args, 'runtime', true) - args.push.apply(args, options['extra-flatpak-build-bundle-args']) - - args.push(options['repo-dir']) - args.push(options['bundle-path']) - args.push(manifest.id) - if (manifest.branch) args.push(manifest.branch) - - await fs.ensureDir(path.dirname(options['bundle-path'])) - return spawnWithLogging(options, 'flatpak', args) -} - -exports.bundle = async function (manifest, options) { - manifest = kebabify(manifest) - options = kebabify(options) - if (manifest['app-id']) manifest.id = manifest['app-id'] - - await ensureWorkingDir(options) - options = getOptionsWithDefaults(options, manifest) - options.arch = translateArch(options.arch) - - logger(`Using manifest...\n${JSON.stringify(manifest, null, ' ')}`) - logger(`Using options...\n${JSON.stringify(options, null, ' ')}`) - await ensureRuntime(options, manifest) - await ensureSdk(options, manifest) - await ensureBase(options, manifest) - await writeJsonFile(options, manifest) - await flatpakBuilder(options, manifest, false) - await copyFiles(options, manifest) - await createSymlinks(options, manifest) - await flatpakBuilder(options, manifest, true) - await copyExports(options, manifest) - await flatpakBuildExport(options, manifest) - await flatpakBuildBundle(options, manifest) - return options -} - -exports.translateArch = translateArch diff --git a/node_modules/@malept/flatpak-bundler/package.json b/node_modules/@malept/flatpak-bundler/package.json deleted file mode 100644 index 9e2062e..0000000 --- a/node_modules/@malept/flatpak-bundler/package.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "name": "@malept/flatpak-bundler", - "version": "0.4.0", - "description": "A small utility for packing files in a flatpak.", - "main": "index.js", - "repository": { - "type": "git", - "url": "git+https://github.com/malept/flatpak-bundler.git" - }, - "keywords": [ - "flatpak" - ], - "author": "Matt Watson ", - "license": "MIT", - "bugs": { - "url": "https://github.com/malept/flatpak-bundler/issues" - }, - "files": [], - "homepage": "https://github.com/malept/flatpak-bundler#readme", - "engines": { - "node": ">= 10.0.0" - }, - "dependencies": { - "debug": "^4.1.1", - "fs-extra": "^9.0.0", - "lodash": "^4.17.15", - "tmp-promise": "^3.0.2" - }, - "devDependencies": { - "husky": "^4.2.5", - "lint-staged": "^10.2.9", - "mocha": "^7.0.0", - "standard": "^14.0.0" - }, - "scripts": { - "lint": "standard", - "mocha": "mocha", - "test": "standard && mocha" - }, - "husky": { - "pre-commit": "lint-staged" - }, - "lint-staged": { - "*.js": "standard --fix" - } -} diff --git a/node_modules/@noble/hashes/LICENSE b/node_modules/@noble/hashes/LICENSE deleted file mode 100644 index 9297a04..0000000 --- a/node_modules/@noble/hashes/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2022 Paul Miller (https://paulmillr.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the “Software”), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/@noble/hashes/README.md b/node_modules/@noble/hashes/README.md deleted file mode 100644 index 759d34b..0000000 --- a/node_modules/@noble/hashes/README.md +++ /dev/null @@ -1,521 +0,0 @@ -# noble-hashes - -Audited & minimal JS implementation of hash functions, MACs and KDFs. - -- 🔒 [**Audited**](#security) by an independent security firm -- 🔻 Tree-shakeable: unused code is excluded from your builds -- 🏎 Fast: hand-optimized for caveats of JS engines -- 🔍 Reliable: chained / sliding window / DoS tests and fuzzing ensure correctness -- 🔁 No unrolled loops: makes it easier to verify and reduces source code size up to 5x -- 🦘 Includes SHA, RIPEMD, BLAKE, HMAC, HKDF, PBKDF, Scrypt, Argon2 & KangarooTwelve -- 🪶 48KB for everything, 4.8KB (2.36KB gzipped) for single-hash build - -Take a glance at [GitHub Discussions](https://github.com/paulmillr/noble-hashes/discussions) for questions and support. -The library's initial development was funded by [Ethereum Foundation](https://ethereum.org/). - -### This library belongs to _noble_ cryptography - -> **noble cryptography** — high-security, easily auditable set of contained cryptographic libraries and tools. - -- Zero or minimal dependencies -- Highly readable TypeScript / JS code -- PGP-signed releases and transparent NPM builds -- All libraries: - [ciphers](https://github.com/paulmillr/noble-ciphers), - [curves](https://github.com/paulmillr/noble-curves), - [hashes](https://github.com/paulmillr/noble-hashes), - [post-quantum](https://github.com/paulmillr/noble-post-quantum), - 4kb [secp256k1](https://github.com/paulmillr/noble-secp256k1) / - [ed25519](https://github.com/paulmillr/noble-ed25519) -- [Check out homepage](https://paulmillr.com/noble/) - for reading resources, documentation and apps built with noble - -## Usage - -> `npm install @noble/hashes` - -> `deno add jsr:@noble/hashes` - -> `deno doc jsr:@noble/hashes` # command-line documentation - -We support all major platforms and runtimes. -For React Native, you may need a [polyfill for getRandomValues](https://github.com/LinusU/react-native-get-random-values). -A standalone file [noble-hashes.js](https://github.com/paulmillr/noble-hashes/releases) is also available. - -```js -// import * from '@noble/hashes'; // Error: use sub-imports, to ensure small app size -import { sha256 } from '@noble/hashes/sha2.js'; // ESM & Common.js -sha256(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])); // returns Uint8Array - -// Available modules -import { sha256, sha384, sha512, sha224, sha512_224, sha512_256 } from '@noble/hashes/sha2.js'; -import { sha3_256, sha3_512, keccak_256, keccak_512, shake128, shake256 } from '@noble/hashes/sha3.js'; -import { cshake256, turboshake256, kmac256, tuplehash256, k12, m14, keccakprg } from '@noble/hashes/sha3-addons.js'; -import { blake3 } from '@noble/hashes/blake3.js'; -import { blake2b, blake2s } from '@noble/hashes/blake2.js'; -import { blake256, blake512 } from '@noble/hashes/blake1.js'; -import { sha1, md5, ripemd160 } from '@noble/hashes/legacy.js'; -import { hmac } from '@noble/hashes/hmac.js'; -import { hkdf } from '@noble/hashes/hkdf.js'; -import { pbkdf2, pbkdf2Async } from '@noble/hashes/pbkdf2.js'; -import { scrypt, scryptAsync } from '@noble/hashes/scrypt.js'; -import { argon2d, argon2i, argon2id } from '@noble/hashes/argon2.js'; -import * as utils from '@noble/hashes/utils'; // bytesToHex, bytesToUtf8, concatBytes... -``` - -- [sha2: sha256, sha384, sha512](#sha2-sha256-sha384-sha512-and-others) -- [sha3: FIPS, SHAKE, Keccak](#sha3-fips-shake-keccak) -- [sha3-addons: cSHAKE, KMAC, K12, M14, TurboSHAKE](#sha3-addons-cshake-kmac-k12-m14-turboshake) -- [blake, blake2, blake3](#blake-blake2-blake3) | [legacy: sha1, md5, ripemd160](#legacy-sha1-md5-ripemd160) -- MACs: [hmac](#hmac) | [sha3-addons kmac](#sha3-addons-cshake-kmac-k12-m14-turboshake) | [blake3 key mode](#blake2b-blake2s-blake3) -- KDFs: [hkdf](#hkdf) | [pbkdf2](#pbkdf2) | [scrypt](#scrypt) | [argon2](#argon2) -- [utils](#utils) -- [Security](#security) | [Speed](#speed) | [Contributing & testing](#contributing--testing) | [License](#license) - -### Implementations - -Hash functions: - -- `sha256()`: receive & return `Uint8Array` -- `sha256.create().update(a).update(b).digest()`: support partial updates -- `blake3.create({ context: 'e', dkLen: 32 })`: sometimes have options -- support little-endian architecture; also experimentally big-endian -- can hash up to 4GB per chunk, with any amount of chunks - -#### sha2: sha256, sha384, sha512 and others - -```typescript -import { sha224, sha256, sha384, sha512, sha512_224, sha512_256 } from '@noble/hashes/sha2.js'; -const res = sha256(Uint8Array.from([0xbc])); // basic -for (let hash of [sha256, sha384, sha512, sha224, sha512_224, sha512_256]) { - const arr = Uint8Array.from([0x10, 0x20, 0x30]); - const a = hash(arr); - const b = hash.create().update(arr).digest(); -} -``` - -See [RFC 4634](https://datatracker.ietf.org/doc/html/rfc4634) and -[the paper on truncated SHA512/256](https://eprint.iacr.org/2010/548.pdf). - -#### sha3: FIPS, SHAKE, Keccak - -```typescript -import { - keccak_224, keccak_256, keccak_384, keccak_512, - sha3_224, sha3_256, sha3_384, sha3_512, - shake128, shake256, -} from '@noble/hashes/sha3.js'; -for (let hash of [ - sha3_224, sha3_256, sha3_384, sha3_512, - keccak_224, keccak_256, keccak_384, keccak_512, -]) { - const arr = Uint8Array.from([0x10, 0x20, 0x30]); - const a = hash(arr); - const b = hash.create().update(arr).digest(); -} -const shka = shake128(Uint8Array.from([0x10]), { dkLen: 512 }); -const shkb = shake256(Uint8Array.from([0x30]), { dkLen: 512 }); -``` - -See [FIPS-202](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf), -[Website](https://keccak.team/keccak.html). - -Check out [the differences between SHA-3 and Keccak](https://crypto.stackexchange.com/questions/15727/what-are-the-key-differences-between-the-draft-sha-3-standard-and-the-keccak-sub) - -#### sha3-addons: cSHAKE, KMAC, K12, M14, TurboSHAKE - -```typescript -import { - cshake128, cshake256, - k12, - keccakprg, - kmac128, kmac256, - m14, - parallelhash256, - tuplehash256, - turboshake128, turboshake256 -} from '@noble/hashes/sha3-addons.js'; -const data = Uint8Array.from([0x10, 0x20, 0x30]); -const ec1 = cshake128(data, { personalization: 'def' }); -const ec2 = cshake256(data, { personalization: 'def' }); -const et1 = turboshake128(data); -const et2 = turboshake256(data, { D: 0x05 }); - // tuplehash(['ab', 'c']) !== tuplehash(['a', 'bc']) !== tuplehash([data]) -const et3 = tuplehash256([utf8ToBytes('ab'), utf8ToBytes('c')]); -// Not parallel in JS (similar to blake3 / k12), added for compat -const ep1 = parallelhash256(data, { blockLen: 8 }); -const kk = Uint8Array.from([0xca]); -const ek10 = kmac128(kk, data); -const ek11 = kmac256(kk, data); -const ek12 = k12(data); -const ek13 = m14(data); -// pseudo-random generator, first argument is capacity. XKCP recommends 254 bits capacity for 128-bit security strength. -// * with a capacity of 254 bits. -const p = keccakprg(254); -p.feed('test'); -const rand1b = p.fetch(1); -``` - -- Full [NIST SP 800-185](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-185.pdf): - cSHAKE, KMAC, TupleHash, ParallelHash + XOF variants -- [Reduced-round Keccak](https://datatracker.ietf.org/doc/draft-irtf-cfrg-kangarootwelve/): - - 🦘 K12 aka KangarooTwelve - - M14 aka MarsupilamiFourteen - - TurboSHAKE -- [KeccakPRG](https://keccak.team/files/CSF-0.1.pdf): Pseudo-random generator based on Keccak - -#### blake, blake2, blake3 - -```typescript -import { blake224, blake256, blake384, blake512 } from '@noble/hashes/blake1.js'; -import { blake2b, blake2s } from '@noble/hashes/blake2.js'; -import { blake3 } from '@noble/hashes/blake3.js'; - -for (let hash of [ - blake224, blake256, blake384, blake512, - blake2b, blake2s, blake3 -]) { - const arr = Uint8Array.from([0x10, 0x20, 0x30]); - const a = hash(arr); - const b = hash.create().update(arr).digest(); -} - -// blake2 advanced usage -const ab = Uint8Array.from([0x01]); -blake2s(ab); -blake2s(ab, { key: new Uint8Array(32) }); -blake2s(ab, { personalization: 'pers1234' }); -blake2s(ab, { salt: 'salt1234' }); -blake2b(ab); -blake2b(ab, { key: new Uint8Array(64) }); -blake2b(ab, { personalization: 'pers1234pers1234' }); -blake2b(ab, { salt: 'salt1234salt1234' }); - -// blake3 advanced usage -blake3(ab); -blake3(ab, { dkLen: 256 }); -blake3(ab, { key: new Uint8Array(32) }); -blake3(ab, { context: 'application-name' }); -``` - -- Blake1 is legacy hash, one of SHA3 proposals. It is rarely used anywhere. See [pdf](https://www.aumasson.jp/blake/blake.pdf). -- Blake2 is popular fast hash. blake2b focuses on 64-bit platforms while blake2s is for 8-bit to 32-bit ones. See [RFC 7693](https://datatracker.ietf.org/doc/html/rfc7693), [Website](https://www.blake2.net) -- Blake3 is faster, reduced-round blake2. See [Website & specs](https://blake3.io) - -#### legacy: sha1, md5, ripemd160 - -SHA1 (RFC 3174), MD5 (RFC 1321) and RIPEMD160 (RFC 2286) legacy, weak hash functions. -Don't use them in a new protocol. What "weak" means: - -- Collisions can be made with 2^18 effort in MD5, 2^60 in SHA1, 2^80 in RIPEMD160. -- No practical pre-image attacks (only theoretical, 2^123.4) -- HMAC seems kinda ok: https://datatracker.ietf.org/doc/html/rfc6151 - -```typescript -import { md5, ripemd160, sha1 } from '@noble/hashes/legacy.js'; -for (let hash of [md5, ripemd160, sha1]) { - const arr = Uint8Array.from([0x10, 0x20, 0x30]); - const a = hash(arr); - const b = hash.create().update(arr).digest(); -} -``` - -#### hmac - -```typescript -import { hmac } from '@noble/hashes/hmac.js'; -import { sha256 } from '@noble/hashes/sha2.js'; -const key = new Uint8Array(32).fill(1); -const msg = new Uint8Array(32).fill(2); -const mac1 = hmac(sha256, key, msg); -const mac2 = hmac.create(sha256, key).update(msg).digest(); -``` - -Matches [RFC 2104](https://datatracker.ietf.org/doc/html/rfc2104). - -#### hkdf - -```typescript -import { hkdf } from '@noble/hashes/hkdf.js'; -import { randomBytes } from '@noble/hashes/utils.js'; -import { sha256 } from '@noble/hashes/sha2.js'; -const inputKey = randomBytes(32); -const salt = randomBytes(32); -const info = 'application-key'; -const hk1 = hkdf(sha256, inputKey, salt, info, 32); - -// == same as -import { extract, expand } from '@noble/hashes/hkdf.js'; -import { sha256 } from '@noble/hashes/sha2.js'; -const prk = extract(sha256, inputKey, salt); -const hk2 = expand(sha256, prk, info, 32); -``` - -Matches [RFC 5869](https://datatracker.ietf.org/doc/html/rfc5869). - -#### pbkdf2 - -```typescript -import { pbkdf2, pbkdf2Async } from '@noble/hashes/pbkdf2.js'; -import { sha256 } from '@noble/hashes/sha2.js'; -const pbkey1 = pbkdf2(sha256, 'password', 'salt', { c: 32, dkLen: 32 }); -const pbkey2 = await pbkdf2Async(sha256, 'password', 'salt', { c: 32, dkLen: 32 }); -const pbkey3 = await pbkdf2Async(sha256, Uint8Array.from([1, 2, 3]), Uint8Array.from([4, 5, 6]), { - c: 32, - dkLen: 32, -}); -``` - -Matches [RFC 2898](https://datatracker.ietf.org/doc/html/rfc2898). - -#### scrypt - -```typescript -import { scrypt, scryptAsync } from '@noble/hashes/scrypt.js'; -const scr1 = scrypt('password', 'salt', { N: 2 ** 16, r: 8, p: 1, dkLen: 32 }); -const scr2 = await scryptAsync('password', 'salt', { N: 2 ** 16, r: 8, p: 1, dkLen: 32 }); -const scr3 = await scryptAsync(Uint8Array.from([1, 2, 3]), Uint8Array.from([4, 5, 6]), { - N: 2 ** 17, - r: 8, - p: 1, - dkLen: 32, - onProgress(percentage) { - console.log('progress', percentage); - }, - maxmem: 2 ** 32 + 128 * 8 * 1, // N * r * p * 128 + (128*r*p) -}); -``` - -Conforms to [RFC 7914](https://datatracker.ietf.org/doc/html/rfc7914), -[Website](https://www.tarsnap.com/scrypt.html) - -- `N, r, p` are work factors. To understand them, see [the blog post](https://blog.filippo.io/the-scrypt-parameters/). - `r: 8, p: 1` are common. JS doesn't support parallelization, making increasing p meaningless. -- `dkLen` is the length of output bytes e.g. `32` or `64` -- `onProgress` can be used with async version of the function to report progress to a user. -- `maxmem` prevents DoS and is limited to `1GB + 1KB` (`2**30 + 2**10`), but can be adjusted using formula: `N * r * p * 128 + (128 * r * p)` - -Time it takes to derive Scrypt key under different values of N (2\*\*N) on Apple M4 (mobile phones can be 1x-4x slower): - -| N pow | Time | RAM | -| ----- | ---- | ----- | -| 16 | 0.1s | 64MB | -| 17 | 0.2s | 128MB | -| 18 | 0.4s | 256MB | -| 19 | 0.8s | 512MB | -| 20 | 1.5s | 1GB | -| 21 | 3.1s | 2GB | -| 22 | 6.2s | 4GB | -| 23 | 13s | 8GB | -| 24 | 27s | 16GB | - -> [!NOTE] -> We support N larger than `2**20` where available, however, -> not all JS engines support >= 2GB ArrayBuffer-s. -> When using such N, you'll need to manually adjust `maxmem`, using formula above. -> Other JS implementations don't support large N-s. - -#### argon2 - -```ts -import { argon2d, argon2i, argon2id } from '@noble/hashes/argon2.js'; -const arg1 = argon2id('password', 'saltsalt', { t: 2, m: 65536, p: 1, maxmem: 2 ** 32 - 1 }); -``` - -Argon2 [RFC 9106](https://datatracker.ietf.org/doc/html/rfc9106) implementation. - -> [!WARNING] -> Argon2 can't be fast in JS, because there is no fast Uint64Array. -> It is suggested to use [Scrypt](#scrypt) instead. -> Being 5x slower than native code means brute-forcing attackers have bigger advantage. - -#### utils - -```typescript -import { bytesToHex as toHex, randomBytes } from '@noble/hashes/utils'; -console.log(toHex(randomBytes(32))); -``` - -- `bytesToHex` will convert `Uint8Array` to a hex string -- `randomBytes(bytes)` will produce cryptographically secure random `Uint8Array` of length `bytes` - -## Security - -The library has been independently audited: - -- at version 1.0.0, in Jan 2022, by [Cure53](https://cure53.de) - - PDFs: [website](https://cure53.de/pentest-report_hashing-libs.pdf), [in-repo](./audit/2022-01-05-cure53-audit-nbl2.pdf) - - [Changes since audit](https://github.com/paulmillr/noble-hashes/compare/1.0.0..main). - - Scope: everything, besides `blake3`, `sha3-addons`, `sha1` and `argon2`, which have not been audited - - The audit has been funded by [Ethereum Foundation](https://ethereum.org/en/) with help of [Nomic Labs](https://nomiclabs.io) - -It is tested against property-based, cross-library and Wycheproof vectors, -and is being fuzzed in [the separate repo](https://github.com/paulmillr/fuzzing). - -If you see anything unusual: investigate and report. - -### Constant-timeness - -We're targetting algorithmic constant time. _JIT-compiler_ and _Garbage Collector_ make "constant time" -extremely hard to achieve [timing attack](https://en.wikipedia.org/wiki/Timing_attack) resistance -in a scripting language. Which means _any other JS library can't have -constant-timeness_. Even statically typed Rust, a language without GC, -[makes it harder to achieve constant-time](https://www.chosenplaintext.ca/open-source/rust-timing-shield/security) -for some cases. If your goal is absolute security, don't use any JS lib — including bindings to native ones. -Use low-level libraries & languages. - -### Memory dumping - -The library shares state buffers between hash -function calls. The buffers are zeroed-out after each call. However, if an attacker -can read application memory, you are doomed in any case: - -- At some point, input will be a string and strings are immutable in JS: - there is no way to overwrite them with zeros. For example: deriving - key from `scrypt(password, salt)` where password and salt are strings -- Input from a file will stay in file buffers -- Input / output will be re-used multiple times in application which means it could stay in memory -- `await anything()` will always write all internal variables (including numbers) - to memory. With async functions / Promises there are no guarantees when the code - chunk would be executed. Which means attacker can have plenty of time to read data from memory -- There is no way to guarantee anything about zeroing sensitive data without - complex tests-suite which will dump process memory and verify that there is - no sensitive data left. For JS it means testing all browsers (incl. mobile), - which is complex. And of course it will be useless without using the same - test-suite in the actual application that consumes the library - -### Supply chain security - -- **Commits** are signed with PGP keys, to prevent forgery. Make sure to verify commit signatures -- **Releases** are transparent and built on GitHub CI. Make sure to verify [provenance](https://docs.npmjs.com/generating-provenance-statements) logs - - Use GitHub CLI to verify single-file builds: - `gh attestation verify --owner paulmillr noble-hashes.js` -- **Rare releasing** is followed to ensure less re-audit need for end-users -- **Dependencies** are minimized and locked-down: any dependency could get hacked and users will be downloading malware with every install. - - We make sure to use as few dependencies as possible - - Automatic dep updates are prevented by locking-down version ranges; diffs are checked with `npm-diff` -- **Dev Dependencies** are disabled for end-users; they are only used to develop / build the source code - -For this package, there are 0 dependencies; and a few dev dependencies: - -- micro-bmark, micro-should and jsbt are used for benchmarking / testing / build tooling and developed by the same author -- prettier, fast-check and typescript are used for code quality / test generation / ts compilation. It's hard to audit their source code thoroughly and fully because of their size - -### Randomness - -We're deferring to built-in -[crypto.getRandomValues](https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues) -which is considered cryptographically secure (CSPRNG). - -In the past, browsers had bugs that made it weak: it may happen again. -Implementing a userspace CSPRNG to get resilient to the weakness -is even worse: there is no reliable userspace source of quality entropy. - -### Quantum computers - -Cryptographically relevant quantum computer, if built, will allow to -utilize Grover's algorithm to break hashes in 2^n/2 operations, instead of 2^n. - -This means SHA256 should be replaced with SHA512, SHA3-256 with SHA3-512, SHAKE128 with SHAKE256 etc. - -Australian ASD prohibits SHA256 and similar hashes [after 2030](https://www.cyber.gov.au/resources-business-and-government/essential-cyber-security/ism/cyber-security-guidelines/guidelines-cryptography). - -## Speed - -```sh -npm run bench:install && npm run bench -``` - -Benchmarks measured on Apple M4. - -``` -# 32B -sha256 x 1,968,503 ops/sec @ 508ns/op -sha512 x 740,740 ops/sec @ 1μs/op -sha3_256 x 287,686 ops/sec @ 3μs/op -sha3_512 x 288,267 ops/sec @ 3μs/op -k12 x 476,190 ops/sec @ 2μs/op -m14 x 423,190 ops/sec @ 2μs/op -blake2b x 464,252 ops/sec @ 2μs/op -blake2s x 766,871 ops/sec @ 1μs/op -blake3 x 879,507 ops/sec @ 1μs/op - -# 1MB -sha256 x 331 ops/sec @ 3ms/op -sha512 x 129 ops/sec @ 7ms/op -sha3_256 x 38 ops/sec @ 25ms/op -sha3_512 x 20 ops/sec @ 47ms/op -k12 x 88 ops/sec @ 11ms/op -m14 x 62 ops/sec @ 15ms/op -blake2b x 69 ops/sec @ 14ms/op -blake2s x 57 ops/sec @ 17ms/op -blake3 x 72 ops/sec @ 13ms/op - -# MAC -hmac(sha256) x 599,880 ops/sec @ 1μs/op -hmac(sha512) x 197,122 ops/sec @ 5μs/op -kmac256 x 87,981 ops/sec @ 11μs/op -blake3(key) x 796,812 ops/sec @ 1μs/op - -# KDF -hkdf(sha256) x 259,942 ops/sec @ 3μs/op -blake3(context) x 424,808 ops/sec @ 2μs/op -pbkdf2(sha256, c: 2 ** 18) x 5 ops/sec @ 197ms/op -pbkdf2(sha512, c: 2 ** 18) x 1 ops/sec @ 630ms/op -scrypt(n: 2 ** 18, r: 8, p: 1) x 2 ops/sec @ 400ms/op -argon2id(t: 1, m: 256MB) 2881ms -``` - -Compare to native node.js implementation that uses C bindings instead of pure-js code: - -``` -# native (node) 32B -sha256 x 2,267,573 ops/sec -sha512 x 983,284 ops/sec -sha3_256 x 1,522,070 ops/sec -blake2b x 1,512,859 ops/sec -blake2s x 1,821,493 ops/sec -hmac(sha256) x 1,085,776 ops/sec -hkdf(sha256) x 312,109 ops/sec -# native (node) KDF -pbkdf2(sha256, c: 2 ** 18) x 5 ops/sec @ 197ms/op -pbkdf2(sha512, c: 2 ** 18) x 1 ops/sec @ 630ms/op -scrypt(n: 2 ** 18, r: 8, p: 1) x 2 ops/sec @ 378ms/op -``` - -It is possible to [make this library 4x+ faster](./benchmark/README.md) by -_doing code generation of full loop unrolls_. We've decided against it. Reasons: - -- the library must be auditable, with minimum amount of code, and zero dependencies -- most method invocations with the lib are going to be something like hashing 32b to 64kb of data -- hashing big inputs is 10x faster with low-level languages, which means you should probably pick 'em instead - -The current performance is good enough when compared to other projects; SHA256 takes only 900 nanoseconds to run. - -## Contributing & testing - -`test/misc` directory contains implementations of loop unrolling and md5. - -- `npm install && npm run build && npm test` will build the code and run tests. -- `npm run lint` / `npm run format` will run linter / fix linter issues. -- `npm run bench` will run benchmarks, which may need their deps first (`npm run bench:install`) -- `npm run build:release` will build single file -- There is **additional** 20-min DoS test `npm run test:dos` and 2-hour "big" multicore test `npm run test:big`. - See [our approach to testing](./test/README.md) - -Additional resources: - -- NTT hashes are outside of scope of the library. You can view some of them in different repos: - - [Pedersen in micro-zk-proofs](https://github.com/paulmillr/micro-zk-proofs/blob/1ed5ce1253583b2e540eef7f3477fb52bf5344ff/src/pedersen.ts) - - [Poseidon in noble-curves](https://github.com/paulmillr/noble-curves/blob/3d124dd3ecec8b6634cc0b2ba1c183aded5304f9/src/abstract/poseidon.ts) -- Check out [guidelines](https://github.com/paulmillr/guidelines) for coding practices -- See [paulmillr.com/noble](https://paulmillr.com/noble/) for useful resources, articles, documentation and demos -related to the library. - -## License - -The MIT License (MIT) - -Copyright (c) 2022 Paul Miller [(https://paulmillr.com)](https://paulmillr.com) - -See LICENSE file. diff --git a/node_modules/@noble/hashes/_assert.d.ts b/node_modules/@noble/hashes/_assert.d.ts deleted file mode 100644 index 5d62f87..0000000 --- a/node_modules/@noble/hashes/_assert.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Internal assertion helpers. - * @module - * @deprecated - */ -import { abytes as ab, aexists as ae, anumber as an, aoutput as ao, type IHash as H } from './utils.ts'; -/** @deprecated Use import from `noble/hashes/utils` module */ -export declare const abytes: typeof ab; -/** @deprecated Use import from `noble/hashes/utils` module */ -export declare const aexists: typeof ae; -/** @deprecated Use import from `noble/hashes/utils` module */ -export declare const anumber: typeof an; -/** @deprecated Use import from `noble/hashes/utils` module */ -export declare const aoutput: typeof ao; -/** @deprecated Use import from `noble/hashes/utils` module */ -export type Hash = H; -//# sourceMappingURL=_assert.d.ts.map \ No newline at end of file diff --git a/node_modules/@noble/hashes/_assert.d.ts.map b/node_modules/@noble/hashes/_assert.d.ts.map deleted file mode 100644 index 0ba0e4c..0000000 --- a/node_modules/@noble/hashes/_assert.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"_assert.d.ts","sourceRoot":"","sources":["src/_assert.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,MAAM,IAAI,EAAE,EACZ,OAAO,IAAI,EAAE,EACb,OAAO,IAAI,EAAE,EACb,OAAO,IAAI,EAAE,EACb,KAAK,KAAK,IAAI,CAAC,EAChB,MAAM,YAAY,CAAC;AACpB,8DAA8D;AAC9D,eAAO,MAAM,MAAM,EAAE,OAAO,EAAO,CAAC;AACpC,8DAA8D;AAC9D,eAAO,MAAM,OAAO,EAAE,OAAO,EAAO,CAAC;AACrC,8DAA8D;AAC9D,eAAO,MAAM,OAAO,EAAE,OAAO,EAAO,CAAC;AACrC,8DAA8D;AAC9D,eAAO,MAAM,OAAO,EAAE,OAAO,EAAO,CAAC;AACrC,8DAA8D;AAC9D,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/@noble/hashes/_assert.js b/node_modules/@noble/hashes/_assert.js deleted file mode 100644 index b54da64..0000000 --- a/node_modules/@noble/hashes/_assert.js +++ /dev/null @@ -1,18 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.aoutput = exports.anumber = exports.aexists = exports.abytes = void 0; -/** - * Internal assertion helpers. - * @module - * @deprecated - */ -const utils_ts_1 = require("./utils.js"); -/** @deprecated Use import from `noble/hashes/utils` module */ -exports.abytes = utils_ts_1.abytes; -/** @deprecated Use import from `noble/hashes/utils` module */ -exports.aexists = utils_ts_1.aexists; -/** @deprecated Use import from `noble/hashes/utils` module */ -exports.anumber = utils_ts_1.anumber; -/** @deprecated Use import from `noble/hashes/utils` module */ -exports.aoutput = utils_ts_1.aoutput; -//# sourceMappingURL=_assert.js.map \ No newline at end of file diff --git a/node_modules/@noble/hashes/_assert.js.map b/node_modules/@noble/hashes/_assert.js.map deleted file mode 100644 index caf8b65..0000000 --- a/node_modules/@noble/hashes/_assert.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"_assert.js","sourceRoot":"","sources":["src/_assert.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,yCAMoB;AACpB,8DAA8D;AACjD,QAAA,MAAM,GAAc,iBAAE,CAAC;AACpC,8DAA8D;AACjD,QAAA,OAAO,GAAc,kBAAE,CAAC;AACrC,8DAA8D;AACjD,QAAA,OAAO,GAAc,kBAAE,CAAC;AACrC,8DAA8D;AACjD,QAAA,OAAO,GAAc,kBAAE,CAAC"} \ No newline at end of file diff --git a/node_modules/@noble/hashes/_blake.d.ts b/node_modules/@noble/hashes/_blake.d.ts deleted file mode 100644 index 71ed85f..0000000 --- a/node_modules/@noble/hashes/_blake.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Internal blake variable. - * For BLAKE2b, the two extra permutations for rounds 10 and 11 are SIGMA[10..11] = SIGMA[0..1]. - */ -export declare const BSIGMA: Uint8Array; -export type Num4 = { - a: number; - b: number; - c: number; - d: number; -}; -export declare function G1s(a: number, b: number, c: number, d: number, x: number): Num4; -export declare function G2s(a: number, b: number, c: number, d: number, x: number): Num4; -//# sourceMappingURL=_blake.d.ts.map \ No newline at end of file diff --git a/node_modules/@noble/hashes/_blake.d.ts.map b/node_modules/@noble/hashes/_blake.d.ts.map deleted file mode 100644 index 7b11ac1..0000000 --- a/node_modules/@noble/hashes/_blake.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"_blake.d.ts","sourceRoot":"","sources":["src/_blake.ts"],"names":[],"mappings":"AAMA;;;GAGG;AAEH,eAAO,MAAM,MAAM,EAAE,UAkBnB,CAAC;AAGH,MAAM,MAAM,IAAI,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;CAAE,CAAC;AAGnE,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAM/E;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAM/E"} \ No newline at end of file diff --git a/node_modules/@noble/hashes/_blake.js b/node_modules/@noble/hashes/_blake.js deleted file mode 100644 index a0b2cb1..0000000 --- a/node_modules/@noble/hashes/_blake.js +++ /dev/null @@ -1,50 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.BSIGMA = void 0; -exports.G1s = G1s; -exports.G2s = G2s; -/** - * Internal helpers for blake hash. - * @module - */ -const utils_ts_1 = require("./utils.js"); -/** - * Internal blake variable. - * For BLAKE2b, the two extra permutations for rounds 10 and 11 are SIGMA[10..11] = SIGMA[0..1]. - */ -// prettier-ignore -exports.BSIGMA = Uint8Array.from([ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3, - 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4, - 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8, - 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13, - 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9, - 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11, - 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10, - 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5, - 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3, - // Blake1, unused in others - 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4, - 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8, - 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13, - 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9, -]); -// Mixing function G splitted in two halfs -function G1s(a, b, c, d, x) { - a = (a + b + x) | 0; - d = (0, utils_ts_1.rotr)(d ^ a, 16); - c = (c + d) | 0; - b = (0, utils_ts_1.rotr)(b ^ c, 12); - return { a, b, c, d }; -} -function G2s(a, b, c, d, x) { - a = (a + b + x) | 0; - d = (0, utils_ts_1.rotr)(d ^ a, 8); - c = (c + d) | 0; - b = (0, utils_ts_1.rotr)(b ^ c, 7); - return { a, b, c, d }; -} -//# sourceMappingURL=_blake.js.map \ No newline at end of file diff --git a/node_modules/@noble/hashes/_blake.js.map b/node_modules/@noble/hashes/_blake.js.map deleted file mode 100644 index b081eb6..0000000 --- a/node_modules/@noble/hashes/_blake.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"_blake.js","sourceRoot":"","sources":["src/_blake.ts"],"names":[],"mappings":";;;AAmCA,kBAMC;AAED,kBAMC;AAjDD;;;GAGG;AACH,yCAAkC;AAElC;;;GAGG;AACH,kBAAkB;AACL,QAAA,MAAM,GAA+B,UAAU,CAAC,IAAI,CAAC;IAChE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACpD,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACpD,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACpD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;IACpD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IACpD,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;IACpD,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IACpD,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IACpD,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;IACpD,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACpD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACpD,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACpD,2BAA2B;IAC3B,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACpD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;IACpD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IACpD,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;CACrD,CAAC,CAAC;AAKH,0CAA0C;AAC1C,SAAgB,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;IACvE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC,GAAG,IAAA,eAAI,EAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IACpB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC,GAAG,IAAA,eAAI,EAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IACpB,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxB,CAAC;AAED,SAAgB,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;IACvE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC,GAAG,IAAA,eAAI,EAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACnB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC,GAAG,IAAA,eAAI,EAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACnB,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxB,CAAC"} \ No newline at end of file diff --git a/node_modules/@noble/hashes/_md.d.ts b/node_modules/@noble/hashes/_md.d.ts deleted file mode 100644 index ae184df..0000000 --- a/node_modules/@noble/hashes/_md.d.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Internal Merkle-Damgard hash utils. - * @module - */ -import { type Input, Hash } from './utils.ts'; -/** Polyfill for Safari 14. https://caniuse.com/mdn-javascript_builtins_dataview_setbiguint64 */ -export declare function setBigUint64(view: DataView, byteOffset: number, value: bigint, isLE: boolean): void; -/** Choice: a ? b : c */ -export declare function Chi(a: number, b: number, c: number): number; -/** Majority function, true if any two inputs is true. */ -export declare function Maj(a: number, b: number, c: number): number; -/** - * Merkle-Damgard hash construction base class. - * Could be used to create MD5, RIPEMD, SHA1, SHA2. - */ -export declare abstract class HashMD> extends Hash { - protected abstract process(buf: DataView, offset: number): void; - protected abstract get(): number[]; - protected abstract set(...args: number[]): void; - abstract destroy(): void; - protected abstract roundClean(): void; - readonly blockLen: number; - readonly outputLen: number; - readonly padOffset: number; - readonly isLE: boolean; - protected buffer: Uint8Array; - protected view: DataView; - protected finished: boolean; - protected length: number; - protected pos: number; - protected destroyed: boolean; - constructor(blockLen: number, outputLen: number, padOffset: number, isLE: boolean); - update(data: Input): this; - digestInto(out: Uint8Array): void; - digest(): Uint8Array; - _cloneInto(to?: T): T; - clone(): T; -} -/** - * Initial SHA-2 state: fractional parts of square roots of first 16 primes 2..53. - * Check out `test/misc/sha2-gen-iv.js` for recomputation guide. - */ -/** Initial SHA256 state. Bits 0..32 of frac part of sqrt of primes 2..19 */ -export declare const SHA256_IV: Uint32Array; -/** Initial SHA224 state. Bits 32..64 of frac part of sqrt of primes 23..53 */ -export declare const SHA224_IV: Uint32Array; -/** Initial SHA384 state. Bits 0..64 of frac part of sqrt of primes 23..53 */ -export declare const SHA384_IV: Uint32Array; -/** Initial SHA512 state. Bits 0..64 of frac part of sqrt of primes 2..19 */ -export declare const SHA512_IV: Uint32Array; -//# sourceMappingURL=_md.d.ts.map \ No newline at end of file diff --git a/node_modules/@noble/hashes/_md.d.ts.map b/node_modules/@noble/hashes/_md.d.ts.map deleted file mode 100644 index 0f653d1..0000000 --- a/node_modules/@noble/hashes/_md.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"_md.d.ts","sourceRoot":"","sources":["src/_md.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,KAAK,KAAK,EAAE,IAAI,EAAwD,MAAM,YAAY,CAAC;AAEpG,gGAAgG;AAChG,wBAAgB,YAAY,CAC1B,IAAI,EAAE,QAAQ,EACd,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,OAAO,GACZ,IAAI,CAUN;AAED,wBAAwB;AACxB,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,yDAAyD;AACzD,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;GAGG;AACH,8BAAsB,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,CAAE,SAAQ,IAAI,CAAC,CAAC,CAAC;IAC/D,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAC/D,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,MAAM,EAAE;IAClC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI;IAC/C,QAAQ,CAAC,OAAO,IAAI,IAAI;IACxB,SAAS,CAAC,QAAQ,CAAC,UAAU,IAAI,IAAI;IAErC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAGvB,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC;IAC7B,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC;IACzB,SAAS,CAAC,QAAQ,UAAS;IAC3B,SAAS,CAAC,MAAM,SAAK;IACrB,SAAS,CAAC,GAAG,SAAK;IAClB,SAAS,CAAC,SAAS,UAAS;gBAEhB,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO;IASjF,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;IA0BzB,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI;IAkCjC,MAAM,IAAI,UAAU;IAOpB,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC;IAWrB,KAAK,IAAI,CAAC;CAGX;AAED;;;GAGG;AAEH,4EAA4E;AAC5E,eAAO,MAAM,SAAS,EAAE,WAEtB,CAAC;AAEH,8EAA8E;AAC9E,eAAO,MAAM,SAAS,EAAE,WAEtB,CAAC;AAEH,6EAA6E;AAC7E,eAAO,MAAM,SAAS,EAAE,WAGtB,CAAC;AAEH,4EAA4E;AAC5E,eAAO,MAAM,SAAS,EAAE,WAGtB,CAAC"} \ No newline at end of file diff --git a/node_modules/@noble/hashes/_md.js b/node_modules/@noble/hashes/_md.js deleted file mode 100644 index 53047f3..0000000 --- a/node_modules/@noble/hashes/_md.js +++ /dev/null @@ -1,162 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.SHA512_IV = exports.SHA384_IV = exports.SHA224_IV = exports.SHA256_IV = exports.HashMD = void 0; -exports.setBigUint64 = setBigUint64; -exports.Chi = Chi; -exports.Maj = Maj; -/** - * Internal Merkle-Damgard hash utils. - * @module - */ -const utils_ts_1 = require("./utils.js"); -/** Polyfill for Safari 14. https://caniuse.com/mdn-javascript_builtins_dataview_setbiguint64 */ -function setBigUint64(view, byteOffset, value, isLE) { - if (typeof view.setBigUint64 === 'function') - return view.setBigUint64(byteOffset, value, isLE); - const _32n = BigInt(32); - const _u32_max = BigInt(0xffffffff); - const wh = Number((value >> _32n) & _u32_max); - const wl = Number(value & _u32_max); - const h = isLE ? 4 : 0; - const l = isLE ? 0 : 4; - view.setUint32(byteOffset + h, wh, isLE); - view.setUint32(byteOffset + l, wl, isLE); -} -/** Choice: a ? b : c */ -function Chi(a, b, c) { - return (a & b) ^ (~a & c); -} -/** Majority function, true if any two inputs is true. */ -function Maj(a, b, c) { - return (a & b) ^ (a & c) ^ (b & c); -} -/** - * Merkle-Damgard hash construction base class. - * Could be used to create MD5, RIPEMD, SHA1, SHA2. - */ -class HashMD extends utils_ts_1.Hash { - constructor(blockLen, outputLen, padOffset, isLE) { - super(); - this.finished = false; - this.length = 0; - this.pos = 0; - this.destroyed = false; - this.blockLen = blockLen; - this.outputLen = outputLen; - this.padOffset = padOffset; - this.isLE = isLE; - this.buffer = new Uint8Array(blockLen); - this.view = (0, utils_ts_1.createView)(this.buffer); - } - update(data) { - (0, utils_ts_1.aexists)(this); - data = (0, utils_ts_1.toBytes)(data); - (0, utils_ts_1.abytes)(data); - const { view, buffer, blockLen } = this; - const len = data.length; - for (let pos = 0; pos < len;) { - const take = Math.min(blockLen - this.pos, len - pos); - // Fast path: we have at least one block in input, cast it to view and process - if (take === blockLen) { - const dataView = (0, utils_ts_1.createView)(data); - for (; blockLen <= len - pos; pos += blockLen) - this.process(dataView, pos); - continue; - } - buffer.set(data.subarray(pos, pos + take), this.pos); - this.pos += take; - pos += take; - if (this.pos === blockLen) { - this.process(view, 0); - this.pos = 0; - } - } - this.length += data.length; - this.roundClean(); - return this; - } - digestInto(out) { - (0, utils_ts_1.aexists)(this); - (0, utils_ts_1.aoutput)(out, this); - this.finished = true; - // Padding - // We can avoid allocation of buffer for padding completely if it - // was previously not allocated here. But it won't change performance. - const { buffer, view, blockLen, isLE } = this; - let { pos } = this; - // append the bit '1' to the message - buffer[pos++] = 0b10000000; - (0, utils_ts_1.clean)(this.buffer.subarray(pos)); - // we have less than padOffset left in buffer, so we cannot put length in - // current block, need process it and pad again - if (this.padOffset > blockLen - pos) { - this.process(view, 0); - pos = 0; - } - // Pad until full block byte with zeros - for (let i = pos; i < blockLen; i++) - buffer[i] = 0; - // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that - // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen. - // So we just write lowest 64 bits of that value. - setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE); - this.process(view, 0); - const oview = (0, utils_ts_1.createView)(out); - const len = this.outputLen; - // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT - if (len % 4) - throw new Error('_sha2: outputLen should be aligned to 32bit'); - const outLen = len / 4; - const state = this.get(); - if (outLen > state.length) - throw new Error('_sha2: outputLen bigger than state'); - for (let i = 0; i < outLen; i++) - oview.setUint32(4 * i, state[i], isLE); - } - digest() { - const { buffer, outputLen } = this; - this.digestInto(buffer); - const res = buffer.slice(0, outputLen); - this.destroy(); - return res; - } - _cloneInto(to) { - to || (to = new this.constructor()); - to.set(...this.get()); - const { blockLen, buffer, length, finished, destroyed, pos } = this; - to.destroyed = destroyed; - to.finished = finished; - to.length = length; - to.pos = pos; - if (length % blockLen) - to.buffer.set(buffer); - return to; - } - clone() { - return this._cloneInto(); - } -} -exports.HashMD = HashMD; -/** - * Initial SHA-2 state: fractional parts of square roots of first 16 primes 2..53. - * Check out `test/misc/sha2-gen-iv.js` for recomputation guide. - */ -/** Initial SHA256 state. Bits 0..32 of frac part of sqrt of primes 2..19 */ -exports.SHA256_IV = Uint32Array.from([ - 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19, -]); -/** Initial SHA224 state. Bits 32..64 of frac part of sqrt of primes 23..53 */ -exports.SHA224_IV = Uint32Array.from([ - 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4, -]); -/** Initial SHA384 state. Bits 0..64 of frac part of sqrt of primes 23..53 */ -exports.SHA384_IV = Uint32Array.from([ - 0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939, - 0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4, -]); -/** Initial SHA512 state. Bits 0..64 of frac part of sqrt of primes 2..19 */ -exports.SHA512_IV = Uint32Array.from([ - 0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1, - 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179, -]); -//# sourceMappingURL=_md.js.map \ No newline at end of file diff --git a/node_modules/@noble/hashes/_md.js.map b/node_modules/@noble/hashes/_md.js.map deleted file mode 100644 index 07270e0..0000000 --- a/node_modules/@noble/hashes/_md.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"_md.js","sourceRoot":"","sources":["src/_md.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@noble/hashes/_u64.d.ts b/node_modules/@noble/hashes/_u64.d.ts deleted file mode 100644 index ac5523a..0000000 --- a/node_modules/@noble/hashes/_u64.d.ts +++ /dev/null @@ -1,55 +0,0 @@ -declare function fromBig(n: bigint, le?: boolean): { - h: number; - l: number; -}; -declare function split(lst: bigint[], le?: boolean): Uint32Array[]; -declare const toBig: (h: number, l: number) => bigint; -declare const shrSH: (h: number, _l: number, s: number) => number; -declare const shrSL: (h: number, l: number, s: number) => number; -declare const rotrSH: (h: number, l: number, s: number) => number; -declare const rotrSL: (h: number, l: number, s: number) => number; -declare const rotrBH: (h: number, l: number, s: number) => number; -declare const rotrBL: (h: number, l: number, s: number) => number; -declare const rotr32H: (_h: number, l: number) => number; -declare const rotr32L: (h: number, _l: number) => number; -declare const rotlSH: (h: number, l: number, s: number) => number; -declare const rotlSL: (h: number, l: number, s: number) => number; -declare const rotlBH: (h: number, l: number, s: number) => number; -declare const rotlBL: (h: number, l: number, s: number) => number; -declare function add(Ah: number, Al: number, Bh: number, Bl: number): { - h: number; - l: number; -}; -declare const add3L: (Al: number, Bl: number, Cl: number) => number; -declare const add3H: (low: number, Ah: number, Bh: number, Ch: number) => number; -declare const add4L: (Al: number, Bl: number, Cl: number, Dl: number) => number; -declare const add4H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number) => number; -declare const add5L: (Al: number, Bl: number, Cl: number, Dl: number, El: number) => number; -declare const add5H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) => number; -export { add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, rotlBH, rotlBL, rotlSH, rotlSL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, shrSH, shrSL, split, toBig }; -declare const u64: { - fromBig: typeof fromBig; - split: typeof split; - toBig: (h: number, l: number) => bigint; - shrSH: (h: number, _l: number, s: number) => number; - shrSL: (h: number, l: number, s: number) => number; - rotrSH: (h: number, l: number, s: number) => number; - rotrSL: (h: number, l: number, s: number) => number; - rotrBH: (h: number, l: number, s: number) => number; - rotrBL: (h: number, l: number, s: number) => number; - rotr32H: (_h: number, l: number) => number; - rotr32L: (h: number, _l: number) => number; - rotlSH: (h: number, l: number, s: number) => number; - rotlSL: (h: number, l: number, s: number) => number; - rotlBH: (h: number, l: number, s: number) => number; - rotlBL: (h: number, l: number, s: number) => number; - add: typeof add; - add3L: (Al: number, Bl: number, Cl: number) => number; - add3H: (low: number, Ah: number, Bh: number, Ch: number) => number; - add4L: (Al: number, Bl: number, Cl: number, Dl: number) => number; - add4H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number) => number; - add5H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) => number; - add5L: (Al: number, Bl: number, Cl: number, Dl: number, El: number) => number; -}; -export default u64; -//# sourceMappingURL=_u64.d.ts.map \ No newline at end of file diff --git a/node_modules/@noble/hashes/_u64.d.ts.map b/node_modules/@noble/hashes/_u64.d.ts.map deleted file mode 100644 index 211a4c6..0000000 --- a/node_modules/@noble/hashes/_u64.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"_u64.d.ts","sourceRoot":"","sources":["src/_u64.ts"],"names":[],"mappings":"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AAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,GAAG,CAAC;IAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;CAOrpC,CAAC;AACF,eAAe,GAAG,CAAC"} \ No newline at end of file diff --git a/node_modules/@noble/hashes/_u64.js b/node_modules/@noble/hashes/_u64.js deleted file mode 100644 index 3232f4d..0000000 --- a/node_modules/@noble/hashes/_u64.js +++ /dev/null @@ -1,90 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.toBig = exports.shrSL = exports.shrSH = exports.rotrSL = exports.rotrSH = exports.rotrBL = exports.rotrBH = exports.rotr32L = exports.rotr32H = exports.rotlSL = exports.rotlSH = exports.rotlBL = exports.rotlBH = exports.add5L = exports.add5H = exports.add4L = exports.add4H = exports.add3L = exports.add3H = void 0; -exports.add = add; -exports.fromBig = fromBig; -exports.split = split; -/** - * Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array. - * @todo re-check https://issues.chromium.org/issues/42212588 - * @module - */ -const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1); -const _32n = /* @__PURE__ */ BigInt(32); -function fromBig(n, le = false) { - if (le) - return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) }; - return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 }; -} -function split(lst, le = false) { - const len = lst.length; - let Ah = new Uint32Array(len); - let Al = new Uint32Array(len); - for (let i = 0; i < len; i++) { - const { h, l } = fromBig(lst[i], le); - [Ah[i], Al[i]] = [h, l]; - } - return [Ah, Al]; -} -const toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0); -exports.toBig = toBig; -// for Shift in [0, 32) -const shrSH = (h, _l, s) => h >>> s; -exports.shrSH = shrSH; -const shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s); -exports.shrSL = shrSL; -// Right rotate for Shift in [1, 32) -const rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s)); -exports.rotrSH = rotrSH; -const rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s); -exports.rotrSL = rotrSL; -// Right rotate for Shift in (32, 64), NOTE: 32 is special case. -const rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32)); -exports.rotrBH = rotrBH; -const rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s)); -exports.rotrBL = rotrBL; -// Right rotate for shift===32 (just swaps l&h) -const rotr32H = (_h, l) => l; -exports.rotr32H = rotr32H; -const rotr32L = (h, _l) => h; -exports.rotr32L = rotr32L; -// Left rotate for Shift in [1, 32) -const rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s)); -exports.rotlSH = rotlSH; -const rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s)); -exports.rotlSL = rotlSL; -// Left rotate for Shift in (32, 64), NOTE: 32 is special case. -const rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s)); -exports.rotlBH = rotlBH; -const rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s)); -exports.rotlBL = rotlBL; -// JS uses 32-bit signed integers for bitwise operations which means we cannot -// simple take carry out of low bit sum by shift, we need to use division. -function add(Ah, Al, Bh, Bl) { - const l = (Al >>> 0) + (Bl >>> 0); - return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 }; -} -// Addition with more than 2 elements -const add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0); -exports.add3L = add3L; -const add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0; -exports.add3H = add3H; -const add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0); -exports.add4L = add4L; -const add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0; -exports.add4H = add4H; -const add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0); -exports.add5L = add5L; -const add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0; -exports.add5H = add5H; -// prettier-ignore -const u64 = { - fromBig, split, toBig, - shrSH, shrSL, - rotrSH, rotrSL, rotrBH, rotrBL, - rotr32H, rotr32L, - rotlSH, rotlSL, rotlBH, rotlBL, - add, add3L, add3H, add4L, add4H, add5H, add5L, -}; -exports.default = u64; -//# sourceMappingURL=_u64.js.map \ No newline at end of file diff --git a/node_modules/@noble/hashes/_u64.js.map b/node_modules/@noble/hashes/_u64.js.map deleted file mode 100644 index 49ffb25..0000000 --- a/node_modules/@noble/hashes/_u64.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"_u64.js","sourceRoot":"","sources":["src/_u64.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@noble/hashes/argon2.d.ts b/node_modules/@noble/hashes/argon2.d.ts deleted file mode 100644 index 67cb8f6..0000000 --- a/node_modules/@noble/hashes/argon2.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { type KDFInput } from './utils.ts'; -/** - * Argon2 options. - * * t: time cost, m: mem cost in kb, p: parallelization. - * * key: optional key. personalization: arbitrary extra data. - * * dkLen: desired number of output bytes. - */ -export type ArgonOpts = { - t: number; - m: number; - p: number; - version?: number; - key?: KDFInput; - personalization?: KDFInput; - dkLen?: number; - asyncTick?: number; - maxmem?: number; - onProgress?: (progress: number) => void; -}; -/** argon2d GPU-resistant version. */ -export declare const argon2d: (password: KDFInput, salt: KDFInput, opts: ArgonOpts) => Uint8Array; -/** argon2i side-channel-resistant version. */ -export declare const argon2i: (password: KDFInput, salt: KDFInput, opts: ArgonOpts) => Uint8Array; -/** argon2id, combining i+d, the most popular version from RFC 9106 */ -export declare const argon2id: (password: KDFInput, salt: KDFInput, opts: ArgonOpts) => Uint8Array; -/** argon2d async GPU-resistant version. */ -export declare const argon2dAsync: (password: KDFInput, salt: KDFInput, opts: ArgonOpts) => Promise; -/** argon2i async side-channel-resistant version. */ -export declare const argon2iAsync: (password: KDFInput, salt: KDFInput, opts: ArgonOpts) => Promise; -/** argon2id async, combining i+d, the most popular version from RFC 9106 */ -export declare const argon2idAsync: (password: KDFInput, salt: KDFInput, opts: ArgonOpts) => Promise; -//# sourceMappingURL=argon2.d.ts.map \ No newline at end of file diff --git a/node_modules/@noble/hashes/argon2.d.ts.map b/node_modules/@noble/hashes/argon2.d.ts.map deleted file mode 100644 index 0928c34..0000000 --- a/node_modules/@noble/hashes/argon2.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"argon2.d.ts","sourceRoot":"","sources":["src/argon2.ts"],"names":[],"mappings":"AAYA,OAAO,EAAqD,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAkK9F;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,eAAe,CAAC,EAAE,QAAQ,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC,CAAC;AAuNF,qCAAqC;AACrC,eAAO,MAAM,OAAO,GAAI,UAAU,QAAQ,EAAE,MAAM,QAAQ,EAAE,MAAM,SAAS,KAAG,UACnC,CAAC;AAC5C,8CAA8C;AAC9C,eAAO,MAAM,OAAO,GAAI,UAAU,QAAQ,EAAE,MAAM,QAAQ,EAAE,MAAM,SAAS,KAAG,UACpC,CAAC;AAC3C,sEAAsE;AACtE,eAAO,MAAM,QAAQ,GAAI,UAAU,QAAQ,EAAE,MAAM,QAAQ,EAAE,MAAM,SAAS,KAAG,UACpC,CAAC;AAiE5C,2CAA2C;AAC3C,eAAO,MAAM,YAAY,GACvB,UAAU,QAAQ,EAClB,MAAM,QAAQ,EACd,MAAM,SAAS,KACd,OAAO,CAAC,UAAU,CAAmD,CAAC;AACzE,oDAAoD;AACpD,eAAO,MAAM,YAAY,GACvB,UAAU,QAAQ,EAClB,MAAM,QAAQ,EACd,MAAM,SAAS,KACd,OAAO,CAAC,UAAU,CAAkD,CAAC;AACxE,4EAA4E;AAC5E,eAAO,MAAM,aAAa,GACxB,UAAU,QAAQ,EAClB,MAAM,QAAQ,EACd,MAAM,SAAS,KACd,OAAO,CAAC,UAAU,CAAmD,CAAC"} \ No newline at end of file diff --git a/node_modules/@noble/hashes/argon2.js b/node_modules/@noble/hashes/argon2.js deleted file mode 100644 index 44488ac..0000000 --- a/node_modules/@noble/hashes/argon2.js +++ /dev/null @@ -1,401 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.argon2idAsync = exports.argon2iAsync = exports.argon2dAsync = exports.argon2id = exports.argon2i = exports.argon2d = void 0; -/** - * Argon2 KDF from RFC 9106. Can be used to create a key from password and salt. - * We suggest to use Scrypt. JS Argon is 2-10x slower than native code because of 64-bitness: - * * argon uses uint64, but JS doesn't have fast uint64array - * * uint64 multiplication is 1/3 of time - * * `P` function would be very nice with u64, because most of value will be in registers, - * hovewer with u32 it will require 32 registers, which is too much. - * * JS arrays do slow bound checks, so reading from `A2_BUF` slows it down - * @module - */ -const _u64_ts_1 = require("./_u64.js"); -const blake2_ts_1 = require("./blake2.js"); -const utils_ts_1 = require("./utils.js"); -const AT = { Argond2d: 0, Argon2i: 1, Argon2id: 2 }; -const ARGON2_SYNC_POINTS = 4; -const abytesOrZero = (buf) => { - if (buf === undefined) - return Uint8Array.of(); - return (0, utils_ts_1.kdfInputToBytes)(buf); -}; -// u32 * u32 = u64 -function mul(a, b) { - const aL = a & 0xffff; - const aH = a >>> 16; - const bL = b & 0xffff; - const bH = b >>> 16; - const ll = Math.imul(aL, bL); - const hl = Math.imul(aH, bL); - const lh = Math.imul(aL, bH); - const hh = Math.imul(aH, bH); - const carry = (ll >>> 16) + (hl & 0xffff) + lh; - const high = (hh + (hl >>> 16) + (carry >>> 16)) | 0; - const low = (carry << 16) | (ll & 0xffff); - return { h: high, l: low }; -} -function mul2(a, b) { - // 2 * a * b (via shifts) - const { h, l } = mul(a, b); - return { h: ((h << 1) | (l >>> 31)) & 4294967295, l: (l << 1) & 4294967295 }; -} -// BlaMka permutation for Argon2 -// A + B + (2 * u32(A) * u32(B)) -function blamka(Ah, Al, Bh, Bl) { - const { h: Ch, l: Cl } = mul2(Al, Bl); - // A + B + (2 * A * B) - const Rll = (0, _u64_ts_1.add3L)(Al, Bl, Cl); - return { h: (0, _u64_ts_1.add3H)(Rll, Ah, Bh, Ch), l: Rll | 0 }; -} -// Temporary block buffer -const A2_BUF = new Uint32Array(256); // 1024 bytes (matrix 16x16) -function G(a, b, c, d) { - let Al = A2_BUF[2 * a], Ah = A2_BUF[2 * a + 1]; // prettier-ignore - let Bl = A2_BUF[2 * b], Bh = A2_BUF[2 * b + 1]; // prettier-ignore - let Cl = A2_BUF[2 * c], Ch = A2_BUF[2 * c + 1]; // prettier-ignore - let Dl = A2_BUF[2 * d], Dh = A2_BUF[2 * d + 1]; // prettier-ignore - ({ h: Ah, l: Al } = blamka(Ah, Al, Bh, Bl)); - ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al }); - ({ Dh, Dl } = { Dh: (0, _u64_ts_1.rotr32H)(Dh, Dl), Dl: (0, _u64_ts_1.rotr32L)(Dh, Dl) }); - ({ h: Ch, l: Cl } = blamka(Ch, Cl, Dh, Dl)); - ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl }); - ({ Bh, Bl } = { Bh: (0, _u64_ts_1.rotrSH)(Bh, Bl, 24), Bl: (0, _u64_ts_1.rotrSL)(Bh, Bl, 24) }); - ({ h: Ah, l: Al } = blamka(Ah, Al, Bh, Bl)); - ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al }); - ({ Dh, Dl } = { Dh: (0, _u64_ts_1.rotrSH)(Dh, Dl, 16), Dl: (0, _u64_ts_1.rotrSL)(Dh, Dl, 16) }); - ({ h: Ch, l: Cl } = blamka(Ch, Cl, Dh, Dl)); - ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl }); - ({ Bh, Bl } = { Bh: (0, _u64_ts_1.rotrBH)(Bh, Bl, 63), Bl: (0, _u64_ts_1.rotrBL)(Bh, Bl, 63) }); - (A2_BUF[2 * a] = Al), (A2_BUF[2 * a + 1] = Ah); - (A2_BUF[2 * b] = Bl), (A2_BUF[2 * b + 1] = Bh); - (A2_BUF[2 * c] = Cl), (A2_BUF[2 * c + 1] = Ch); - (A2_BUF[2 * d] = Dl), (A2_BUF[2 * d + 1] = Dh); -} -// prettier-ignore -function P(v00, v01, v02, v03, v04, v05, v06, v07, v08, v09, v10, v11, v12, v13, v14, v15) { - G(v00, v04, v08, v12); - G(v01, v05, v09, v13); - G(v02, v06, v10, v14); - G(v03, v07, v11, v15); - G(v00, v05, v10, v15); - G(v01, v06, v11, v12); - G(v02, v07, v08, v13); - G(v03, v04, v09, v14); -} -function block(x, xPos, yPos, outPos, needXor) { - for (let i = 0; i < 256; i++) - A2_BUF[i] = x[xPos + i] ^ x[yPos + i]; - // columns (8) - for (let i = 0; i < 128; i += 16) { - // prettier-ignore - P(i, i + 1, i + 2, i + 3, i + 4, i + 5, i + 6, i + 7, i + 8, i + 9, i + 10, i + 11, i + 12, i + 13, i + 14, i + 15); - } - // rows (8) - for (let i = 0; i < 16; i += 2) { - // prettier-ignore - P(i, i + 1, i + 16, i + 17, i + 32, i + 33, i + 48, i + 49, i + 64, i + 65, i + 80, i + 81, i + 96, i + 97, i + 112, i + 113); - } - if (needXor) - for (let i = 0; i < 256; i++) - x[outPos + i] ^= A2_BUF[i] ^ x[xPos + i] ^ x[yPos + i]; - else - for (let i = 0; i < 256; i++) - x[outPos + i] = A2_BUF[i] ^ x[xPos + i] ^ x[yPos + i]; - (0, utils_ts_1.clean)(A2_BUF); -} -// Variable-Length Hash Function H' -function Hp(A, dkLen) { - const A8 = (0, utils_ts_1.u8)(A); - const T = new Uint32Array(1); - const T8 = (0, utils_ts_1.u8)(T); - T[0] = dkLen; - // Fast path - if (dkLen <= 64) - return blake2_ts_1.blake2b.create({ dkLen }).update(T8).update(A8).digest(); - const out = new Uint8Array(dkLen); - let V = blake2_ts_1.blake2b.create({}).update(T8).update(A8).digest(); - let pos = 0; - // First block - out.set(V.subarray(0, 32)); - pos += 32; - // Rest blocks - for (; dkLen - pos > 64; pos += 32) { - const Vh = blake2_ts_1.blake2b.create({}).update(V); - Vh.digestInto(V); - Vh.destroy(); - out.set(V.subarray(0, 32), pos); - } - // Last block - out.set((0, blake2_ts_1.blake2b)(V, { dkLen: dkLen - pos }), pos); - (0, utils_ts_1.clean)(V, T); - return (0, utils_ts_1.u32)(out); -} -// Used only inside process block! -function indexAlpha(r, s, laneLen, segmentLen, index, randL, sameLane = false) { - // This is ugly, but close enough to reference implementation. - let area; - if (r === 0) { - if (s === 0) - area = index - 1; - else if (sameLane) - area = s * segmentLen + index - 1; - else - area = s * segmentLen + (index == 0 ? -1 : 0); - } - else if (sameLane) - area = laneLen - segmentLen + index - 1; - else - area = laneLen - segmentLen + (index == 0 ? -1 : 0); - const startPos = r !== 0 && s !== ARGON2_SYNC_POINTS - 1 ? (s + 1) * segmentLen : 0; - const rel = area - 1 - mul(area, mul(randL, randL).h).h; - return (startPos + rel) % laneLen; -} -const maxUint32 = Math.pow(2, 32); -function isU32(num) { - return Number.isSafeInteger(num) && num >= 0 && num < maxUint32; -} -function argon2Opts(opts) { - const merged = { - version: 0x13, - dkLen: 32, - maxmem: maxUint32 - 1, - asyncTick: 10, - }; - for (let [k, v] of Object.entries(opts)) - if (v != null) - merged[k] = v; - const { dkLen, p, m, t, version, onProgress } = merged; - if (!isU32(dkLen) || dkLen < 4) - throw new Error('dkLen should be at least 4 bytes'); - if (!isU32(p) || p < 1 || p >= Math.pow(2, 24)) - throw new Error('p should be 1 <= p < 2^24'); - if (!isU32(m)) - throw new Error('m should be 0 <= m < 2^32'); - if (!isU32(t) || t < 1) - throw new Error('t (iterations) should be 1 <= t < 2^32'); - if (onProgress !== undefined && typeof onProgress !== 'function') - throw new Error('progressCb should be function'); - /* - Memory size m MUST be an integer number of kibibytes from 8*p to 2^(32)-1. The actual number of blocks is m', which is m rounded down to the nearest multiple of 4*p. - */ - if (!isU32(m) || m < 8 * p) - throw new Error('memory should be at least 8*p bytes'); - if (version !== 0x10 && version !== 0x13) - throw new Error('unknown version=' + version); - return merged; -} -function argon2Init(password, salt, type, opts) { - password = (0, utils_ts_1.kdfInputToBytes)(password); - salt = (0, utils_ts_1.kdfInputToBytes)(salt); - (0, utils_ts_1.abytes)(password); - (0, utils_ts_1.abytes)(salt); - if (!isU32(password.length)) - throw new Error('password should be less than 4 GB'); - if (!isU32(salt.length) || salt.length < 8) - throw new Error('salt should be at least 8 bytes and less than 4 GB'); - if (!Object.values(AT).includes(type)) - throw new Error('invalid type'); - let { p, dkLen, m, t, version, key, personalization, maxmem, onProgress, asyncTick } = argon2Opts(opts); - // Validation - key = abytesOrZero(key); - personalization = abytesOrZero(personalization); - // H_0 = H^(64)(LE32(p) || LE32(T) || LE32(m) || LE32(t) || - // LE32(v) || LE32(y) || LE32(length(P)) || P || - // LE32(length(S)) || S || LE32(length(K)) || K || - // LE32(length(X)) || X) - const h = blake2_ts_1.blake2b.create({}); - const BUF = new Uint32Array(1); - const BUF8 = (0, utils_ts_1.u8)(BUF); - for (let item of [p, dkLen, m, t, version, type]) { - BUF[0] = item; - h.update(BUF8); - } - for (let i of [password, salt, key, personalization]) { - BUF[0] = i.length; // BUF is u32 array, this is valid - h.update(BUF8).update(i); - } - const H0 = new Uint32Array(18); - const H0_8 = (0, utils_ts_1.u8)(H0); - h.digestInto(H0_8); - // 256 u32 = 1024 (BLOCK_SIZE), fills A2_BUF on processing - // Params - const lanes = p; - // m' = 4 * p * floor (m / 4p) - const mP = 4 * p * Math.floor(m / (ARGON2_SYNC_POINTS * p)); - //q = m' / p columns - const laneLen = Math.floor(mP / p); - const segmentLen = Math.floor(laneLen / ARGON2_SYNC_POINTS); - const memUsed = mP * 256; - if (!isU32(maxmem) || memUsed > maxmem) - throw new Error('mem should be less than 2**32, got: maxmem=' + maxmem + ', memused=' + memUsed); - const B = new Uint32Array(memUsed); - // Fill first blocks - for (let l = 0; l < p; l++) { - const i = 256 * laneLen * l; - // B[i][0] = H'^(1024)(H_0 || LE32(0) || LE32(i)) - H0[17] = l; - H0[16] = 0; - B.set(Hp(H0, 1024), i); - // B[i][1] = H'^(1024)(H_0 || LE32(1) || LE32(i)) - H0[16] = 1; - B.set(Hp(H0, 1024), i + 256); - } - let perBlock = () => { }; - if (onProgress) { - const totalBlock = t * ARGON2_SYNC_POINTS * p * segmentLen; - // Invoke callback if progress changes from 10.01 to 10.02 - // Allows to draw smooth progress bar on up to 8K screen - const callbackPer = Math.max(Math.floor(totalBlock / 10000), 1); - let blockCnt = 0; - perBlock = () => { - blockCnt++; - if (onProgress && (!(blockCnt % callbackPer) || blockCnt === totalBlock)) - onProgress(blockCnt / totalBlock); - }; - } - (0, utils_ts_1.clean)(BUF, H0); - return { type, mP, p, t, version, B, laneLen, lanes, segmentLen, dkLen, perBlock, asyncTick }; -} -function argon2Output(B, p, laneLen, dkLen) { - const B_final = new Uint32Array(256); - for (let l = 0; l < p; l++) - for (let j = 0; j < 256; j++) - B_final[j] ^= B[256 * (laneLen * l + laneLen - 1) + j]; - const res = (0, utils_ts_1.u8)(Hp(B_final, dkLen)); - (0, utils_ts_1.clean)(B_final); - return res; -} -function processBlock(B, address, l, r, s, index, laneLen, segmentLen, lanes, offset, prev, dataIndependent, needXor) { - if (offset % laneLen) - prev = offset - 1; - let randL, randH; - if (dataIndependent) { - let i128 = index % 128; - if (i128 === 0) { - address[256 + 12]++; - block(address, 256, 2 * 256, 0, false); - block(address, 0, 2 * 256, 0, false); - } - randL = address[2 * i128]; - randH = address[2 * i128 + 1]; - } - else { - const T = 256 * prev; - randL = B[T]; - randH = B[T + 1]; - } - // address block - const refLane = r === 0 && s === 0 ? l : randH % lanes; - const refPos = indexAlpha(r, s, laneLen, segmentLen, index, randL, refLane == l); - const refBlock = laneLen * refLane + refPos; - // B[i][j] = G(B[i][j-1], B[l][z]) - block(B, 256 * prev, 256 * refBlock, offset * 256, needXor); -} -function argon2(type, password, salt, opts) { - const { mP, p, t, version, B, laneLen, lanes, segmentLen, dkLen, perBlock } = argon2Init(password, salt, type, opts); - // Pre-loop setup - // [address, input, zero_block] format so we can pass single U32 to block function - const address = new Uint32Array(3 * 256); - address[256 + 6] = mP; - address[256 + 8] = t; - address[256 + 10] = type; - for (let r = 0; r < t; r++) { - const needXor = r !== 0 && version === 0x13; - address[256 + 0] = r; - for (let s = 0; s < ARGON2_SYNC_POINTS; s++) { - address[256 + 4] = s; - const dataIndependent = type == AT.Argon2i || (type == AT.Argon2id && r === 0 && s < 2); - for (let l = 0; l < p; l++) { - address[256 + 2] = l; - address[256 + 12] = 0; - let startPos = 0; - if (r === 0 && s === 0) { - startPos = 2; - if (dataIndependent) { - address[256 + 12]++; - block(address, 256, 2 * 256, 0, false); - block(address, 0, 2 * 256, 0, false); - } - } - // current block postion - let offset = l * laneLen + s * segmentLen + startPos; - // previous block position - let prev = offset % laneLen ? offset - 1 : offset + laneLen - 1; - for (let index = startPos; index < segmentLen; index++, offset++, prev++) { - perBlock(); - processBlock(B, address, l, r, s, index, laneLen, segmentLen, lanes, offset, prev, dataIndependent, needXor); - } - } - } - } - (0, utils_ts_1.clean)(address); - return argon2Output(B, p, laneLen, dkLen); -} -/** argon2d GPU-resistant version. */ -const argon2d = (password, salt, opts) => argon2(AT.Argond2d, password, salt, opts); -exports.argon2d = argon2d; -/** argon2i side-channel-resistant version. */ -const argon2i = (password, salt, opts) => argon2(AT.Argon2i, password, salt, opts); -exports.argon2i = argon2i; -/** argon2id, combining i+d, the most popular version from RFC 9106 */ -const argon2id = (password, salt, opts) => argon2(AT.Argon2id, password, salt, opts); -exports.argon2id = argon2id; -async function argon2Async(type, password, salt, opts) { - const { mP, p, t, version, B, laneLen, lanes, segmentLen, dkLen, perBlock, asyncTick } = argon2Init(password, salt, type, opts); - // Pre-loop setup - // [address, input, zero_block] format so we can pass single U32 to block function - const address = new Uint32Array(3 * 256); - address[256 + 6] = mP; - address[256 + 8] = t; - address[256 + 10] = type; - let ts = Date.now(); - for (let r = 0; r < t; r++) { - const needXor = r !== 0 && version === 0x13; - address[256 + 0] = r; - for (let s = 0; s < ARGON2_SYNC_POINTS; s++) { - address[256 + 4] = s; - const dataIndependent = type == AT.Argon2i || (type == AT.Argon2id && r === 0 && s < 2); - for (let l = 0; l < p; l++) { - address[256 + 2] = l; - address[256 + 12] = 0; - let startPos = 0; - if (r === 0 && s === 0) { - startPos = 2; - if (dataIndependent) { - address[256 + 12]++; - block(address, 256, 2 * 256, 0, false); - block(address, 0, 2 * 256, 0, false); - } - } - // current block postion - let offset = l * laneLen + s * segmentLen + startPos; - // previous block position - let prev = offset % laneLen ? offset - 1 : offset + laneLen - 1; - for (let index = startPos; index < segmentLen; index++, offset++, prev++) { - perBlock(); - processBlock(B, address, l, r, s, index, laneLen, segmentLen, lanes, offset, prev, dataIndependent, needXor); - // Date.now() is not monotonic, so in case if clock goes backwards we return return control too - const diff = Date.now() - ts; - if (!(diff >= 0 && diff < asyncTick)) { - await (0, utils_ts_1.nextTick)(); - ts += diff; - } - } - } - } - } - (0, utils_ts_1.clean)(address); - return argon2Output(B, p, laneLen, dkLen); -} -/** argon2d async GPU-resistant version. */ -const argon2dAsync = (password, salt, opts) => argon2Async(AT.Argond2d, password, salt, opts); -exports.argon2dAsync = argon2dAsync; -/** argon2i async side-channel-resistant version. */ -const argon2iAsync = (password, salt, opts) => argon2Async(AT.Argon2i, password, salt, opts); -exports.argon2iAsync = argon2iAsync; -/** argon2id async, combining i+d, the most popular version from RFC 9106 */ -const argon2idAsync = (password, salt, opts) => argon2Async(AT.Argon2id, password, salt, opts); -exports.argon2idAsync = argon2idAsync; -//# sourceMappingURL=argon2.js.map \ No newline at end of file diff --git a/node_modules/@noble/hashes/argon2.js.map b/node_modules/@noble/hashes/argon2.js.map deleted file mode 100644 index 74bde80..0000000 --- a/node_modules/@noble/hashes/argon2.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"argon2.js","sourceRoot":"","sources":["src/argon2.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@noble/hashes/blake1.d.ts b/node_modules/@noble/hashes/blake1.d.ts deleted file mode 100644 index 62d576f..0000000 --- a/node_modules/@noble/hashes/blake1.d.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { Hash, type CHashO, type Input } from './utils.ts'; -/** Blake1 options. Basically just "salt" */ -export type BlakeOpts = { - salt?: Uint8Array; -}; -declare abstract class BLAKE1> extends Hash { - protected finished: boolean; - protected length: number; - protected pos: number; - protected destroyed: boolean; - protected buffer: Uint8Array; - protected view: DataView; - protected salt: Uint32Array; - abstract compress(view: DataView, offset: number, withLength?: boolean): void; - protected abstract get(): number[]; - protected abstract set(...args: number[]): void; - readonly blockLen: number; - readonly outputLen: number; - private lengthFlag; - private counterLen; - protected constants: Uint32Array; - constructor(blockLen: number, outputLen: number, lengthFlag: number, counterLen: number, saltLen: number, constants: Uint32Array, opts?: BlakeOpts); - update(data: Input): this; - destroy(): void; - _cloneInto(to?: T): T; - clone(): T; - digestInto(out: Uint8Array): void; - digest(): Uint8Array; -} -declare class Blake1_32 extends BLAKE1 { - private v0; - private v1; - private v2; - private v3; - private v4; - private v5; - private v6; - private v7; - constructor(outputLen: number, IV: Uint32Array, lengthFlag: number, opts?: BlakeOpts); - protected get(): [number, number, number, number, number, number, number, number]; - protected set(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number): void; - destroy(): void; - compress(view: DataView, offset: number, withLength?: boolean): void; -} -declare class Blake1_64 extends BLAKE1 { - private v0l; - private v0h; - private v1l; - private v1h; - private v2l; - private v2h; - private v3l; - private v3h; - private v4l; - private v4h; - private v5l; - private v5h; - private v6l; - private v6h; - private v7l; - private v7h; - constructor(outputLen: number, IV: Uint32Array, lengthFlag: number, opts?: BlakeOpts); - protected get(): [ - number, - number, - number, - number, - number, - number, - number, - number, - number, - number, - number, - number, - number, - number, - number, - number - ]; - protected set(v0l: number, v0h: number, v1l: number, v1h: number, v2l: number, v2h: number, v3l: number, v3h: number, v4l: number, v4h: number, v5l: number, v5h: number, v6l: number, v6h: number, v7l: number, v7h: number): void; - destroy(): void; - compress(view: DataView, offset: number, withLength?: boolean): void; -} -export declare class BLAKE224 extends Blake1_32 { - constructor(opts?: BlakeOpts); -} -export declare class BLAKE256 extends Blake1_32 { - constructor(opts?: BlakeOpts); -} -export declare class BLAKE384 extends Blake1_64 { - constructor(opts?: BlakeOpts); -} -export declare class BLAKE512 extends Blake1_64 { - constructor(opts?: BlakeOpts); -} -/** blake1-224 hash function */ -export declare const blake224: CHashO; -/** blake1-256 hash function */ -export declare const blake256: CHashO; -/** blake1-384 hash function */ -export declare const blake384: CHashO; -/** blake1-512 hash function */ -export declare const blake512: CHashO; -export {}; -//# sourceMappingURL=blake1.d.ts.map \ No newline at end of file diff --git a/node_modules/@noble/hashes/blake1.d.ts.map b/node_modules/@noble/hashes/blake1.d.ts.map deleted file mode 100644 index cecd4df..0000000 --- a/node_modules/@noble/hashes/blake1.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"blake1.d.ts","sourceRoot":"","sources":["src/blake1.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@noble/hashes/blake1.js b/node_modules/@noble/hashes/blake1.js deleted file mode 100644 index a877fcb..0000000 --- a/node_modules/@noble/hashes/blake1.js +++ /dev/null @@ -1,459 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.blake512 = exports.blake384 = exports.blake256 = exports.blake224 = exports.BLAKE512 = exports.BLAKE384 = exports.BLAKE256 = exports.BLAKE224 = void 0; -/** - * Blake1 legacy hash function, one of SHA3 proposals. - * Rarely used. Check out blake2 or blake3 instead. - * https://www.aumasson.jp/blake/blake.pdf - * - * In the best case, there are 0 allocations. - * - * Differences from blake2: - * - * - BE instead of LE - * - Paddings, similar to MD5, RIPEMD, SHA1, SHA2, but: - * - length flag is located before actual length - * - padding block is compressed differently (no lengths) - * Instead of msg[sigma[k]], we have `msg[sigma[k]] ^ constants[sigma[k-1]]` - * (-1 for g1, g2 without -1) - * - Salt is XOR-ed into constants instead of state - * - Salt is XOR-ed with output in `compress` - * - Additional rows (+64 bytes) in SIGMA for new rounds - * - Different round count: - * - 14 / 10 rounds in blake256 / blake2s - * - 16 / 12 rounds in blake512 / blake2b - * - blake512: G1b: rotr 24 -> 25, G2b: rotr 63 -> 11 - * @module - */ -const _blake_ts_1 = require("./_blake.js"); -const _md_ts_1 = require("./_md.js"); -const u64 = require("./_u64.js"); -// prettier-ignore -const utils_ts_1 = require("./utils.js"); -// Empty zero-filled salt -const EMPTY_SALT = /* @__PURE__ */ new Uint32Array(8); -class BLAKE1 extends utils_ts_1.Hash { - constructor(blockLen, outputLen, lengthFlag, counterLen, saltLen, constants, opts = {}) { - super(); - this.finished = false; - this.length = 0; - this.pos = 0; - this.destroyed = false; - const { salt } = opts; - this.blockLen = blockLen; - this.outputLen = outputLen; - this.lengthFlag = lengthFlag; - this.counterLen = counterLen; - this.buffer = new Uint8Array(blockLen); - this.view = (0, utils_ts_1.createView)(this.buffer); - if (salt) { - let slt = salt; - slt = (0, utils_ts_1.toBytes)(slt); - (0, utils_ts_1.abytes)(slt); - if (slt.length !== 4 * saltLen) - throw new Error('wrong salt length'); - const salt32 = (this.salt = new Uint32Array(saltLen)); - const sv = (0, utils_ts_1.createView)(slt); - this.constants = constants.slice(); - for (let i = 0, offset = 0; i < salt32.length; i++, offset += 4) { - salt32[i] = sv.getUint32(offset, false); - this.constants[i] ^= salt32[i]; - } - } - else { - this.salt = EMPTY_SALT; - this.constants = constants; - } - } - update(data) { - (0, utils_ts_1.aexists)(this); - data = (0, utils_ts_1.toBytes)(data); - (0, utils_ts_1.abytes)(data); - // From _md, but update length before each compress - const { view, buffer, blockLen } = this; - const len = data.length; - let dataView; - for (let pos = 0; pos < len;) { - const take = Math.min(blockLen - this.pos, len - pos); - // Fast path: we have at least one block in input, cast it to view and process - if (take === blockLen) { - if (!dataView) - dataView = (0, utils_ts_1.createView)(data); - for (; blockLen <= len - pos; pos += blockLen) { - this.length += blockLen; - this.compress(dataView, pos); - } - continue; - } - buffer.set(data.subarray(pos, pos + take), this.pos); - this.pos += take; - pos += take; - if (this.pos === blockLen) { - this.length += blockLen; - this.compress(view, 0, true); - this.pos = 0; - } - } - return this; - } - destroy() { - this.destroyed = true; - if (this.salt !== EMPTY_SALT) { - (0, utils_ts_1.clean)(this.salt, this.constants); - } - } - _cloneInto(to) { - to || (to = new this.constructor()); - to.set(...this.get()); - const { buffer, length, finished, destroyed, constants, salt, pos } = this; - to.buffer.set(buffer); - to.constants = constants.slice(); - to.destroyed = destroyed; - to.finished = finished; - to.length = length; - to.pos = pos; - to.salt = salt.slice(); - return to; - } - clone() { - return this._cloneInto(); - } - digestInto(out) { - (0, utils_ts_1.aexists)(this); - (0, utils_ts_1.aoutput)(out, this); - this.finished = true; - // Padding - const { buffer, blockLen, counterLen, lengthFlag, view } = this; - (0, utils_ts_1.clean)(buffer.subarray(this.pos)); // clean buf - const counter = BigInt((this.length + this.pos) * 8); - const counterPos = blockLen - counterLen - 1; - buffer[this.pos] |= 128; // End block flag - this.length += this.pos; // add unwritten length - // Not enough in buffer for length: write what we have. - if (this.pos > counterPos) { - this.compress(view, 0); - (0, utils_ts_1.clean)(buffer); - this.pos = 0; - } - // Difference with md: here we have lengthFlag! - buffer[counterPos] |= lengthFlag; // Length flag - // We always set 8 byte length flag. Because length will overflow significantly sooner. - (0, _md_ts_1.setBigUint64)(view, blockLen - 8, counter, false); - this.compress(view, 0, this.pos !== 0); // don't add length if length is not empty block? - // Write output - (0, utils_ts_1.clean)(buffer); - const v = (0, utils_ts_1.createView)(out); - const state = this.get(); - for (let i = 0; i < this.outputLen / 4; ++i) - v.setUint32(i * 4, state[i]); - } - digest() { - const { buffer, outputLen } = this; - this.digestInto(buffer); - const res = buffer.slice(0, outputLen); - this.destroy(); - return res; - } -} -// Constants -const B64C = /* @__PURE__ */ Uint32Array.from([ - 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89, - 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, - 0x9216d5d9, 0x8979fb1b, 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96, - 0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, 0x636920d8, 0x71574e69, -]); -// first half of C512 -const B32C = B64C.slice(0, 16); -const B256_IV = _md_ts_1.SHA256_IV.slice(); -const B224_IV = _md_ts_1.SHA224_IV.slice(); -const B384_IV = _md_ts_1.SHA384_IV.slice(); -const B512_IV = _md_ts_1.SHA512_IV.slice(); -function generateTBL256() { - const TBL = []; - for (let i = 0, j = 0; i < 14; i++, j += 16) { - for (let offset = 1; offset < 16; offset += 2) { - TBL.push(B32C[_blake_ts_1.BSIGMA[j + offset]]); - TBL.push(B32C[_blake_ts_1.BSIGMA[j + offset - 1]]); - } - } - return new Uint32Array(TBL); -} -const TBL256 = /* @__PURE__ */ generateTBL256(); // C256[SIGMA[X]] precompute -// Reusable temporary buffer -const BLAKE256_W = /* @__PURE__ */ new Uint32Array(16); -class Blake1_32 extends BLAKE1 { - constructor(outputLen, IV, lengthFlag, opts = {}) { - super(64, outputLen, lengthFlag, 8, 4, B32C, opts); - this.v0 = IV[0] | 0; - this.v1 = IV[1] | 0; - this.v2 = IV[2] | 0; - this.v3 = IV[3] | 0; - this.v4 = IV[4] | 0; - this.v5 = IV[5] | 0; - this.v6 = IV[6] | 0; - this.v7 = IV[7] | 0; - } - get() { - const { v0, v1, v2, v3, v4, v5, v6, v7 } = this; - return [v0, v1, v2, v3, v4, v5, v6, v7]; - } - // prettier-ignore - set(v0, v1, v2, v3, v4, v5, v6, v7) { - this.v0 = v0 | 0; - this.v1 = v1 | 0; - this.v2 = v2 | 0; - this.v3 = v3 | 0; - this.v4 = v4 | 0; - this.v5 = v5 | 0; - this.v6 = v6 | 0; - this.v7 = v7 | 0; - } - destroy() { - super.destroy(); - this.set(0, 0, 0, 0, 0, 0, 0, 0); - } - compress(view, offset, withLength = true) { - for (let i = 0; i < 16; i++, offset += 4) - BLAKE256_W[i] = view.getUint32(offset, false); - // NOTE: we cannot re-use compress from blake2s, since there is additional xor over u256[SIGMA[e]] - let v00 = this.v0 | 0; - let v01 = this.v1 | 0; - let v02 = this.v2 | 0; - let v03 = this.v3 | 0; - let v04 = this.v4 | 0; - let v05 = this.v5 | 0; - let v06 = this.v6 | 0; - let v07 = this.v7 | 0; - let v08 = this.constants[0] | 0; - let v09 = this.constants[1] | 0; - let v10 = this.constants[2] | 0; - let v11 = this.constants[3] | 0; - const { h, l } = u64.fromBig(BigInt(withLength ? this.length * 8 : 0)); - let v12 = (this.constants[4] ^ l) >>> 0; - let v13 = (this.constants[5] ^ l) >>> 0; - let v14 = (this.constants[6] ^ h) >>> 0; - let v15 = (this.constants[7] ^ h) >>> 0; - // prettier-ignore - for (let i = 0, k = 0, j = 0; i < 14; i++) { - ({ a: v00, b: v04, c: v08, d: v12 } = (0, _blake_ts_1.G1s)(v00, v04, v08, v12, BLAKE256_W[_blake_ts_1.BSIGMA[k++]] ^ TBL256[j++])); - ({ a: v00, b: v04, c: v08, d: v12 } = (0, _blake_ts_1.G2s)(v00, v04, v08, v12, BLAKE256_W[_blake_ts_1.BSIGMA[k++]] ^ TBL256[j++])); - ({ a: v01, b: v05, c: v09, d: v13 } = (0, _blake_ts_1.G1s)(v01, v05, v09, v13, BLAKE256_W[_blake_ts_1.BSIGMA[k++]] ^ TBL256[j++])); - ({ a: v01, b: v05, c: v09, d: v13 } = (0, _blake_ts_1.G2s)(v01, v05, v09, v13, BLAKE256_W[_blake_ts_1.BSIGMA[k++]] ^ TBL256[j++])); - ({ a: v02, b: v06, c: v10, d: v14 } = (0, _blake_ts_1.G1s)(v02, v06, v10, v14, BLAKE256_W[_blake_ts_1.BSIGMA[k++]] ^ TBL256[j++])); - ({ a: v02, b: v06, c: v10, d: v14 } = (0, _blake_ts_1.G2s)(v02, v06, v10, v14, BLAKE256_W[_blake_ts_1.BSIGMA[k++]] ^ TBL256[j++])); - ({ a: v03, b: v07, c: v11, d: v15 } = (0, _blake_ts_1.G1s)(v03, v07, v11, v15, BLAKE256_W[_blake_ts_1.BSIGMA[k++]] ^ TBL256[j++])); - ({ a: v03, b: v07, c: v11, d: v15 } = (0, _blake_ts_1.G2s)(v03, v07, v11, v15, BLAKE256_W[_blake_ts_1.BSIGMA[k++]] ^ TBL256[j++])); - ({ a: v00, b: v05, c: v10, d: v15 } = (0, _blake_ts_1.G1s)(v00, v05, v10, v15, BLAKE256_W[_blake_ts_1.BSIGMA[k++]] ^ TBL256[j++])); - ({ a: v00, b: v05, c: v10, d: v15 } = (0, _blake_ts_1.G2s)(v00, v05, v10, v15, BLAKE256_W[_blake_ts_1.BSIGMA[k++]] ^ TBL256[j++])); - ({ a: v01, b: v06, c: v11, d: v12 } = (0, _blake_ts_1.G1s)(v01, v06, v11, v12, BLAKE256_W[_blake_ts_1.BSIGMA[k++]] ^ TBL256[j++])); - ({ a: v01, b: v06, c: v11, d: v12 } = (0, _blake_ts_1.G2s)(v01, v06, v11, v12, BLAKE256_W[_blake_ts_1.BSIGMA[k++]] ^ TBL256[j++])); - ({ a: v02, b: v07, c: v08, d: v13 } = (0, _blake_ts_1.G1s)(v02, v07, v08, v13, BLAKE256_W[_blake_ts_1.BSIGMA[k++]] ^ TBL256[j++])); - ({ a: v02, b: v07, c: v08, d: v13 } = (0, _blake_ts_1.G2s)(v02, v07, v08, v13, BLAKE256_W[_blake_ts_1.BSIGMA[k++]] ^ TBL256[j++])); - ({ a: v03, b: v04, c: v09, d: v14 } = (0, _blake_ts_1.G1s)(v03, v04, v09, v14, BLAKE256_W[_blake_ts_1.BSIGMA[k++]] ^ TBL256[j++])); - ({ a: v03, b: v04, c: v09, d: v14 } = (0, _blake_ts_1.G2s)(v03, v04, v09, v14, BLAKE256_W[_blake_ts_1.BSIGMA[k++]] ^ TBL256[j++])); - } - this.v0 = (this.v0 ^ v00 ^ v08 ^ this.salt[0]) >>> 0; - this.v1 = (this.v1 ^ v01 ^ v09 ^ this.salt[1]) >>> 0; - this.v2 = (this.v2 ^ v02 ^ v10 ^ this.salt[2]) >>> 0; - this.v3 = (this.v3 ^ v03 ^ v11 ^ this.salt[3]) >>> 0; - this.v4 = (this.v4 ^ v04 ^ v12 ^ this.salt[0]) >>> 0; - this.v5 = (this.v5 ^ v05 ^ v13 ^ this.salt[1]) >>> 0; - this.v6 = (this.v6 ^ v06 ^ v14 ^ this.salt[2]) >>> 0; - this.v7 = (this.v7 ^ v07 ^ v15 ^ this.salt[3]) >>> 0; - (0, utils_ts_1.clean)(BLAKE256_W); - } -} -const BBUF = /* @__PURE__ */ new Uint32Array(32); -const BLAKE512_W = /* @__PURE__ */ new Uint32Array(32); -function generateTBL512() { - const TBL = []; - for (let r = 0, k = 0; r < 16; r++, k += 16) { - for (let offset = 1; offset < 16; offset += 2) { - TBL.push(B64C[_blake_ts_1.BSIGMA[k + offset] * 2 + 0]); - TBL.push(B64C[_blake_ts_1.BSIGMA[k + offset] * 2 + 1]); - TBL.push(B64C[_blake_ts_1.BSIGMA[k + offset - 1] * 2 + 0]); - TBL.push(B64C[_blake_ts_1.BSIGMA[k + offset - 1] * 2 + 1]); - } - } - return new Uint32Array(TBL); -} -const TBL512 = /* @__PURE__ */ generateTBL512(); // C512[SIGMA[X]] precompute -// Mixing function G splitted in two halfs -function G1b(a, b, c, d, msg, k) { - const Xpos = 2 * _blake_ts_1.BSIGMA[k]; - const Xl = msg[Xpos + 1] ^ TBL512[k * 2 + 1], Xh = msg[Xpos] ^ TBL512[k * 2]; // prettier-ignore - let Al = BBUF[2 * a + 1], Ah = BBUF[2 * a]; // prettier-ignore - let Bl = BBUF[2 * b + 1], Bh = BBUF[2 * b]; // prettier-ignore - let Cl = BBUF[2 * c + 1], Ch = BBUF[2 * c]; // prettier-ignore - let Dl = BBUF[2 * d + 1], Dh = BBUF[2 * d]; // prettier-ignore - // v[a] = (v[a] + v[b] + x) | 0; - let ll = u64.add3L(Al, Bl, Xl); - Ah = u64.add3H(ll, Ah, Bh, Xh) >>> 0; - Al = (ll | 0) >>> 0; - // v[d] = rotr(v[d] ^ v[a], 32) - ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al }); - ({ Dh, Dl } = { Dh: u64.rotr32H(Dh, Dl), Dl: u64.rotr32L(Dh, Dl) }); - // v[c] = (v[c] + v[d]) | 0; - ({ h: Ch, l: Cl } = u64.add(Ch, Cl, Dh, Dl)); - // v[b] = rotr(v[b] ^ v[c], 25) - ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl }); - ({ Bh, Bl } = { Bh: u64.rotrSH(Bh, Bl, 25), Bl: u64.rotrSL(Bh, Bl, 25) }); - (BBUF[2 * a + 1] = Al), (BBUF[2 * a] = Ah); - (BBUF[2 * b + 1] = Bl), (BBUF[2 * b] = Bh); - (BBUF[2 * c + 1] = Cl), (BBUF[2 * c] = Ch); - (BBUF[2 * d + 1] = Dl), (BBUF[2 * d] = Dh); -} -function G2b(a, b, c, d, msg, k) { - const Xpos = 2 * _blake_ts_1.BSIGMA[k]; - const Xl = msg[Xpos + 1] ^ TBL512[k * 2 + 1], Xh = msg[Xpos] ^ TBL512[k * 2]; // prettier-ignore - let Al = BBUF[2 * a + 1], Ah = BBUF[2 * a]; // prettier-ignore - let Bl = BBUF[2 * b + 1], Bh = BBUF[2 * b]; // prettier-ignore - let Cl = BBUF[2 * c + 1], Ch = BBUF[2 * c]; // prettier-ignore - let Dl = BBUF[2 * d + 1], Dh = BBUF[2 * d]; // prettier-ignore - // v[a] = (v[a] + v[b] + x) | 0; - let ll = u64.add3L(Al, Bl, Xl); - Ah = u64.add3H(ll, Ah, Bh, Xh); - Al = ll | 0; - // v[d] = rotr(v[d] ^ v[a], 16) - ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al }); - ({ Dh, Dl } = { Dh: u64.rotrSH(Dh, Dl, 16), Dl: u64.rotrSL(Dh, Dl, 16) }); - // v[c] = (v[c] + v[d]) | 0; - ({ h: Ch, l: Cl } = u64.add(Ch, Cl, Dh, Dl)); - // v[b] = rotr(v[b] ^ v[c], 11) - ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl }); - ({ Bh, Bl } = { Bh: u64.rotrSH(Bh, Bl, 11), Bl: u64.rotrSL(Bh, Bl, 11) }); - (BBUF[2 * a + 1] = Al), (BBUF[2 * a] = Ah); - (BBUF[2 * b + 1] = Bl), (BBUF[2 * b] = Bh); - (BBUF[2 * c + 1] = Cl), (BBUF[2 * c] = Ch); - (BBUF[2 * d + 1] = Dl), (BBUF[2 * d] = Dh); -} -class Blake1_64 extends BLAKE1 { - constructor(outputLen, IV, lengthFlag, opts = {}) { - super(128, outputLen, lengthFlag, 16, 8, B64C, opts); - this.v0l = IV[0] | 0; - this.v0h = IV[1] | 0; - this.v1l = IV[2] | 0; - this.v1h = IV[3] | 0; - this.v2l = IV[4] | 0; - this.v2h = IV[5] | 0; - this.v3l = IV[6] | 0; - this.v3h = IV[7] | 0; - this.v4l = IV[8] | 0; - this.v4h = IV[9] | 0; - this.v5l = IV[10] | 0; - this.v5h = IV[11] | 0; - this.v6l = IV[12] | 0; - this.v6h = IV[13] | 0; - this.v7l = IV[14] | 0; - this.v7h = IV[15] | 0; - } - // prettier-ignore - get() { - let { v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h } = this; - return [v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h]; - } - // prettier-ignore - set(v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h) { - this.v0l = v0l | 0; - this.v0h = v0h | 0; - this.v1l = v1l | 0; - this.v1h = v1h | 0; - this.v2l = v2l | 0; - this.v2h = v2h | 0; - this.v3l = v3l | 0; - this.v3h = v3h | 0; - this.v4l = v4l | 0; - this.v4h = v4h | 0; - this.v5l = v5l | 0; - this.v5h = v5h | 0; - this.v6l = v6l | 0; - this.v6h = v6h | 0; - this.v7l = v7l | 0; - this.v7h = v7h | 0; - } - destroy() { - super.destroy(); - this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); - } - compress(view, offset, withLength = true) { - for (let i = 0; i < 32; i++, offset += 4) - BLAKE512_W[i] = view.getUint32(offset, false); - this.get().forEach((v, i) => (BBUF[i] = v)); // First half from state. - BBUF.set(this.constants.subarray(0, 16), 16); - if (withLength) { - const { h, l } = u64.fromBig(BigInt(this.length * 8)); - BBUF[24] = (BBUF[24] ^ h) >>> 0; - BBUF[25] = (BBUF[25] ^ l) >>> 0; - BBUF[26] = (BBUF[26] ^ h) >>> 0; - BBUF[27] = (BBUF[27] ^ l) >>> 0; - } - for (let i = 0, k = 0; i < 16; i++) { - G1b(0, 4, 8, 12, BLAKE512_W, k++); - G2b(0, 4, 8, 12, BLAKE512_W, k++); - G1b(1, 5, 9, 13, BLAKE512_W, k++); - G2b(1, 5, 9, 13, BLAKE512_W, k++); - G1b(2, 6, 10, 14, BLAKE512_W, k++); - G2b(2, 6, 10, 14, BLAKE512_W, k++); - G1b(3, 7, 11, 15, BLAKE512_W, k++); - G2b(3, 7, 11, 15, BLAKE512_W, k++); - G1b(0, 5, 10, 15, BLAKE512_W, k++); - G2b(0, 5, 10, 15, BLAKE512_W, k++); - G1b(1, 6, 11, 12, BLAKE512_W, k++); - G2b(1, 6, 11, 12, BLAKE512_W, k++); - G1b(2, 7, 8, 13, BLAKE512_W, k++); - G2b(2, 7, 8, 13, BLAKE512_W, k++); - G1b(3, 4, 9, 14, BLAKE512_W, k++); - G2b(3, 4, 9, 14, BLAKE512_W, k++); - } - this.v0l ^= BBUF[0] ^ BBUF[16] ^ this.salt[0]; - this.v0h ^= BBUF[1] ^ BBUF[17] ^ this.salt[1]; - this.v1l ^= BBUF[2] ^ BBUF[18] ^ this.salt[2]; - this.v1h ^= BBUF[3] ^ BBUF[19] ^ this.salt[3]; - this.v2l ^= BBUF[4] ^ BBUF[20] ^ this.salt[4]; - this.v2h ^= BBUF[5] ^ BBUF[21] ^ this.salt[5]; - this.v3l ^= BBUF[6] ^ BBUF[22] ^ this.salt[6]; - this.v3h ^= BBUF[7] ^ BBUF[23] ^ this.salt[7]; - this.v4l ^= BBUF[8] ^ BBUF[24] ^ this.salt[0]; - this.v4h ^= BBUF[9] ^ BBUF[25] ^ this.salt[1]; - this.v5l ^= BBUF[10] ^ BBUF[26] ^ this.salt[2]; - this.v5h ^= BBUF[11] ^ BBUF[27] ^ this.salt[3]; - this.v6l ^= BBUF[12] ^ BBUF[28] ^ this.salt[4]; - this.v6h ^= BBUF[13] ^ BBUF[29] ^ this.salt[5]; - this.v7l ^= BBUF[14] ^ BBUF[30] ^ this.salt[6]; - this.v7h ^= BBUF[15] ^ BBUF[31] ^ this.salt[7]; - (0, utils_ts_1.clean)(BBUF, BLAKE512_W); - } -} -class BLAKE224 extends Blake1_32 { - constructor(opts = {}) { - super(28, B224_IV, 0, opts); - } -} -exports.BLAKE224 = BLAKE224; -class BLAKE256 extends Blake1_32 { - constructor(opts = {}) { - super(32, B256_IV, 1, opts); - } -} -exports.BLAKE256 = BLAKE256; -class BLAKE384 extends Blake1_64 { - constructor(opts = {}) { - super(48, B384_IV, 0, opts); - } -} -exports.BLAKE384 = BLAKE384; -class BLAKE512 extends Blake1_64 { - constructor(opts = {}) { - super(64, B512_IV, 1, opts); - } -} -exports.BLAKE512 = BLAKE512; -/** blake1-224 hash function */ -exports.blake224 = (0, utils_ts_1.createOptHasher)((opts) => new BLAKE224(opts)); -/** blake1-256 hash function */ -exports.blake256 = (0, utils_ts_1.createOptHasher)((opts) => new BLAKE256(opts)); -/** blake1-384 hash function */ -exports.blake384 = (0, utils_ts_1.createOptHasher)((opts) => new BLAKE384(opts)); -/** blake1-512 hash function */ -exports.blake512 = (0, utils_ts_1.createOptHasher)((opts) => new BLAKE512(opts)); -//# sourceMappingURL=blake1.js.map \ No newline at end of file diff --git a/node_modules/@noble/hashes/blake1.js.map b/node_modules/@noble/hashes/blake1.js.map deleted file mode 100644 index 314f7a8..0000000 --- a/node_modules/@noble/hashes/blake1.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"blake1.js","sourceRoot":"","sources":["src/blake1.ts"],"names":[],"mappings":"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AAC,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAA,gBAAK,EAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC1B,CAAC;CACF;AAED,MAAa,QAAS,SAAQ,SAAS;IACrC,YAAY,OAAkB,EAAE;QAC9B,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,CAAW,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;CACF;AAJD,4BAIC;AACD,MAAa,QAAS,SAAQ,SAAS;IACrC,YAAY,OAAkB,EAAE;QAC9B,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,CAAW,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;CACF;AAJD,4BAIC;AACD,MAAa,QAAS,SAAQ,SAAS;IACrC,YAAY,OAAkB,EAAE;QAC9B,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,CAAW,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;CACF;AAJD,4BAIC;AACD,MAAa,QAAS,SAAQ,SAAS;IACrC,YAAY,OAAkB,EAAE;QAC9B,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,CAAW,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;CACF;AAJD,4BAIC;AACD,+BAA+B;AAClB,QAAA,QAAQ,GAA2B,IAAA,0BAAe,EAC7D,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAC7B,CAAC;AACF,+BAA+B;AAClB,QAAA,QAAQ,GAA2B,IAAA,0BAAe,EAC7D,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAC7B,CAAC;AACF,+BAA+B;AAClB,QAAA,QAAQ,GAA2B,IAAA,0BAAe,EAC7D,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAC7B,CAAC;AACF,+BAA+B;AAClB,QAAA,QAAQ,GAA2B,IAAA,0BAAe,EAC7D,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAC7B,CAAC"} \ No newline at end of file diff --git a/node_modules/@noble/hashes/blake2.d.ts b/node_modules/@noble/hashes/blake2.d.ts deleted file mode 100644 index ea6ae41..0000000 --- a/node_modules/@noble/hashes/blake2.d.ts +++ /dev/null @@ -1,116 +0,0 @@ -import { Hash, type CHashO, type Input } from './utils.ts'; -/** Blake hash options. dkLen is output length. key is used in MAC mode. salt is used in KDF mode. */ -export type Blake2Opts = { - dkLen?: number; - key?: Input; - salt?: Input; - personalization?: Input; -}; -/** Class, from which others are subclassed. */ -export declare abstract class BLAKE2> extends Hash { - protected abstract compress(msg: Uint32Array, offset: number, isLast: boolean): void; - protected abstract get(): number[]; - protected abstract set(...args: number[]): void; - abstract destroy(): void; - protected buffer: Uint8Array; - protected buffer32: Uint32Array; - protected finished: boolean; - protected destroyed: boolean; - protected length: number; - protected pos: number; - readonly blockLen: number; - readonly outputLen: number; - constructor(blockLen: number, outputLen: number); - update(data: Input): this; - digestInto(out: Uint8Array): void; - digest(): Uint8Array; - _cloneInto(to?: T): T; - clone(): T; -} -export declare class BLAKE2b extends BLAKE2 { - private v0l; - private v0h; - private v1l; - private v1h; - private v2l; - private v2h; - private v3l; - private v3h; - private v4l; - private v4h; - private v5l; - private v5h; - private v6l; - private v6h; - private v7l; - private v7h; - constructor(opts?: Blake2Opts); - protected get(): [ - number, - number, - number, - number, - number, - number, - number, - number, - number, - number, - number, - number, - number, - number, - number, - number - ]; - protected set(v0l: number, v0h: number, v1l: number, v1h: number, v2l: number, v2h: number, v3l: number, v3h: number, v4l: number, v4h: number, v5l: number, v5h: number, v6l: number, v6h: number, v7l: number, v7h: number): void; - protected compress(msg: Uint32Array, offset: number, isLast: boolean): void; - destroy(): void; -} -/** - * Blake2b hash function. 64-bit. 1.5x slower than blake2s in JS. - * @param msg - message that would be hashed - * @param opts - dkLen output length, key for MAC mode, salt, personalization - */ -export declare const blake2b: CHashO; -export type Num16 = { - v0: number; - v1: number; - v2: number; - v3: number; - v4: number; - v5: number; - v6: number; - v7: number; - v8: number; - v9: number; - v10: number; - v11: number; - v12: number; - v13: number; - v14: number; - v15: number; -}; -export declare function compress(s: Uint8Array, offset: number, msg: Uint32Array, rounds: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number): Num16; -export declare class BLAKE2s extends BLAKE2 { - private v0; - private v1; - private v2; - private v3; - private v4; - private v5; - private v6; - private v7; - constructor(opts?: Blake2Opts); - protected get(): [number, number, number, number, number, number, number, number]; - protected set(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number): void; - protected compress(msg: Uint32Array, offset: number, isLast: boolean): void; - destroy(): void; -} -/** - * Blake2s hash function. Focuses on 8-bit to 32-bit platforms. 1.5x faster than blake2b in JS. - * @param msg - message that would be hashed - * @param opts - dkLen output length, key for MAC mode, salt, personalization - */ -export declare const blake2s: CHashO; -//# sourceMappingURL=blake2.d.ts.map \ No newline at end of file diff --git a/node_modules/@noble/hashes/blake2.d.ts.map b/node_modules/@noble/hashes/blake2.d.ts.map deleted file mode 100644 index f7d88d1..0000000 --- a/node_modules/@noble/hashes/blake2.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"blake2.d.ts","sourceRoot":"","sources":["src/blake2.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@noble/hashes/blake2.js b/node_modules/@noble/hashes/blake2.js deleted file mode 100644 index 3b2a048..0000000 --- a/node_modules/@noble/hashes/blake2.js +++ /dev/null @@ -1,420 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.blake2s = exports.BLAKE2s = exports.blake2b = exports.BLAKE2b = exports.BLAKE2 = void 0; -exports.compress = compress; -/** - * blake2b (64-bit) & blake2s (8 to 32-bit) hash functions. - * b could have been faster, but there is no fast u64 in js, so s is 1.5x faster. - * @module - */ -const _blake_ts_1 = require("./_blake.js"); -const _md_ts_1 = require("./_md.js"); -const u64 = require("./_u64.js"); -// prettier-ignore -const utils_ts_1 = require("./utils.js"); -// Same as SHA512_IV, but swapped endianness: LE instead of BE. iv[1] is iv[0], etc. -const B2B_IV = /* @__PURE__ */ Uint32Array.from([ - 0xf3bcc908, 0x6a09e667, 0x84caa73b, 0xbb67ae85, 0xfe94f82b, 0x3c6ef372, 0x5f1d36f1, 0xa54ff53a, - 0xade682d1, 0x510e527f, 0x2b3e6c1f, 0x9b05688c, 0xfb41bd6b, 0x1f83d9ab, 0x137e2179, 0x5be0cd19, -]); -// Temporary buffer -const BBUF = /* @__PURE__ */ new Uint32Array(32); -// Mixing function G splitted in two halfs -function G1b(a, b, c, d, msg, x) { - // NOTE: V is LE here - const Xl = msg[x], Xh = msg[x + 1]; // prettier-ignore - let Al = BBUF[2 * a], Ah = BBUF[2 * a + 1]; // prettier-ignore - let Bl = BBUF[2 * b], Bh = BBUF[2 * b + 1]; // prettier-ignore - let Cl = BBUF[2 * c], Ch = BBUF[2 * c + 1]; // prettier-ignore - let Dl = BBUF[2 * d], Dh = BBUF[2 * d + 1]; // prettier-ignore - // v[a] = (v[a] + v[b] + x) | 0; - let ll = u64.add3L(Al, Bl, Xl); - Ah = u64.add3H(ll, Ah, Bh, Xh); - Al = ll | 0; - // v[d] = rotr(v[d] ^ v[a], 32) - ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al }); - ({ Dh, Dl } = { Dh: u64.rotr32H(Dh, Dl), Dl: u64.rotr32L(Dh, Dl) }); - // v[c] = (v[c] + v[d]) | 0; - ({ h: Ch, l: Cl } = u64.add(Ch, Cl, Dh, Dl)); - // v[b] = rotr(v[b] ^ v[c], 24) - ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl }); - ({ Bh, Bl } = { Bh: u64.rotrSH(Bh, Bl, 24), Bl: u64.rotrSL(Bh, Bl, 24) }); - (BBUF[2 * a] = Al), (BBUF[2 * a + 1] = Ah); - (BBUF[2 * b] = Bl), (BBUF[2 * b + 1] = Bh); - (BBUF[2 * c] = Cl), (BBUF[2 * c + 1] = Ch); - (BBUF[2 * d] = Dl), (BBUF[2 * d + 1] = Dh); -} -function G2b(a, b, c, d, msg, x) { - // NOTE: V is LE here - const Xl = msg[x], Xh = msg[x + 1]; // prettier-ignore - let Al = BBUF[2 * a], Ah = BBUF[2 * a + 1]; // prettier-ignore - let Bl = BBUF[2 * b], Bh = BBUF[2 * b + 1]; // prettier-ignore - let Cl = BBUF[2 * c], Ch = BBUF[2 * c + 1]; // prettier-ignore - let Dl = BBUF[2 * d], Dh = BBUF[2 * d + 1]; // prettier-ignore - // v[a] = (v[a] + v[b] + x) | 0; - let ll = u64.add3L(Al, Bl, Xl); - Ah = u64.add3H(ll, Ah, Bh, Xh); - Al = ll | 0; - // v[d] = rotr(v[d] ^ v[a], 16) - ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al }); - ({ Dh, Dl } = { Dh: u64.rotrSH(Dh, Dl, 16), Dl: u64.rotrSL(Dh, Dl, 16) }); - // v[c] = (v[c] + v[d]) | 0; - ({ h: Ch, l: Cl } = u64.add(Ch, Cl, Dh, Dl)); - // v[b] = rotr(v[b] ^ v[c], 63) - ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl }); - ({ Bh, Bl } = { Bh: u64.rotrBH(Bh, Bl, 63), Bl: u64.rotrBL(Bh, Bl, 63) }); - (BBUF[2 * a] = Al), (BBUF[2 * a + 1] = Ah); - (BBUF[2 * b] = Bl), (BBUF[2 * b + 1] = Bh); - (BBUF[2 * c] = Cl), (BBUF[2 * c + 1] = Ch); - (BBUF[2 * d] = Dl), (BBUF[2 * d + 1] = Dh); -} -function checkBlake2Opts(outputLen, opts = {}, keyLen, saltLen, persLen) { - (0, utils_ts_1.anumber)(keyLen); - if (outputLen < 0 || outputLen > keyLen) - throw new Error('outputLen bigger than keyLen'); - const { key, salt, personalization } = opts; - if (key !== undefined && (key.length < 1 || key.length > keyLen)) - throw new Error('key length must be undefined or 1..' + keyLen); - if (salt !== undefined && salt.length !== saltLen) - throw new Error('salt must be undefined or ' + saltLen); - if (personalization !== undefined && personalization.length !== persLen) - throw new Error('personalization must be undefined or ' + persLen); -} -/** Class, from which others are subclassed. */ -class BLAKE2 extends utils_ts_1.Hash { - constructor(blockLen, outputLen) { - super(); - this.finished = false; - this.destroyed = false; - this.length = 0; - this.pos = 0; - (0, utils_ts_1.anumber)(blockLen); - (0, utils_ts_1.anumber)(outputLen); - this.blockLen = blockLen; - this.outputLen = outputLen; - this.buffer = new Uint8Array(blockLen); - this.buffer32 = (0, utils_ts_1.u32)(this.buffer); - } - update(data) { - (0, utils_ts_1.aexists)(this); - data = (0, utils_ts_1.toBytes)(data); - (0, utils_ts_1.abytes)(data); - // Main difference with other hashes: there is flag for last block, - // so we cannot process current block before we know that there - // is the next one. This significantly complicates logic and reduces ability - // to do zero-copy processing - const { blockLen, buffer, buffer32 } = this; - const len = data.length; - const offset = data.byteOffset; - const buf = data.buffer; - for (let pos = 0; pos < len;) { - // If buffer is full and we still have input (don't process last block, same as blake2s) - if (this.pos === blockLen) { - (0, utils_ts_1.swap32IfBE)(buffer32); - this.compress(buffer32, 0, false); - (0, utils_ts_1.swap32IfBE)(buffer32); - this.pos = 0; - } - const take = Math.min(blockLen - this.pos, len - pos); - const dataOffset = offset + pos; - // full block && aligned to 4 bytes && not last in input - if (take === blockLen && !(dataOffset % 4) && pos + take < len) { - const data32 = new Uint32Array(buf, dataOffset, Math.floor((len - pos) / 4)); - (0, utils_ts_1.swap32IfBE)(data32); - for (let pos32 = 0; pos + blockLen < len; pos32 += buffer32.length, pos += blockLen) { - this.length += blockLen; - this.compress(data32, pos32, false); - } - (0, utils_ts_1.swap32IfBE)(data32); - continue; - } - buffer.set(data.subarray(pos, pos + take), this.pos); - this.pos += take; - this.length += take; - pos += take; - } - return this; - } - digestInto(out) { - (0, utils_ts_1.aexists)(this); - (0, utils_ts_1.aoutput)(out, this); - const { pos, buffer32 } = this; - this.finished = true; - // Padding - (0, utils_ts_1.clean)(this.buffer.subarray(pos)); - (0, utils_ts_1.swap32IfBE)(buffer32); - this.compress(buffer32, 0, true); - (0, utils_ts_1.swap32IfBE)(buffer32); - const out32 = (0, utils_ts_1.u32)(out); - this.get().forEach((v, i) => (out32[i] = (0, utils_ts_1.swap8IfBE)(v))); - } - digest() { - const { buffer, outputLen } = this; - this.digestInto(buffer); - const res = buffer.slice(0, outputLen); - this.destroy(); - return res; - } - _cloneInto(to) { - const { buffer, length, finished, destroyed, outputLen, pos } = this; - to || (to = new this.constructor({ dkLen: outputLen })); - to.set(...this.get()); - to.buffer.set(buffer); - to.destroyed = destroyed; - to.finished = finished; - to.length = length; - to.pos = pos; - // @ts-ignore - to.outputLen = outputLen; - return to; - } - clone() { - return this._cloneInto(); - } -} -exports.BLAKE2 = BLAKE2; -class BLAKE2b extends BLAKE2 { - constructor(opts = {}) { - const olen = opts.dkLen === undefined ? 64 : opts.dkLen; - super(128, olen); - // Same as SHA-512, but LE - this.v0l = B2B_IV[0] | 0; - this.v0h = B2B_IV[1] | 0; - this.v1l = B2B_IV[2] | 0; - this.v1h = B2B_IV[3] | 0; - this.v2l = B2B_IV[4] | 0; - this.v2h = B2B_IV[5] | 0; - this.v3l = B2B_IV[6] | 0; - this.v3h = B2B_IV[7] | 0; - this.v4l = B2B_IV[8] | 0; - this.v4h = B2B_IV[9] | 0; - this.v5l = B2B_IV[10] | 0; - this.v5h = B2B_IV[11] | 0; - this.v6l = B2B_IV[12] | 0; - this.v6h = B2B_IV[13] | 0; - this.v7l = B2B_IV[14] | 0; - this.v7h = B2B_IV[15] | 0; - checkBlake2Opts(olen, opts, 64, 16, 16); - let { key, personalization, salt } = opts; - let keyLength = 0; - if (key !== undefined) { - key = (0, utils_ts_1.toBytes)(key); - keyLength = key.length; - } - this.v0l ^= this.outputLen | (keyLength << 8) | (0x01 << 16) | (0x01 << 24); - if (salt !== undefined) { - salt = (0, utils_ts_1.toBytes)(salt); - const slt = (0, utils_ts_1.u32)(salt); - this.v4l ^= (0, utils_ts_1.swap8IfBE)(slt[0]); - this.v4h ^= (0, utils_ts_1.swap8IfBE)(slt[1]); - this.v5l ^= (0, utils_ts_1.swap8IfBE)(slt[2]); - this.v5h ^= (0, utils_ts_1.swap8IfBE)(slt[3]); - } - if (personalization !== undefined) { - personalization = (0, utils_ts_1.toBytes)(personalization); - const pers = (0, utils_ts_1.u32)(personalization); - this.v6l ^= (0, utils_ts_1.swap8IfBE)(pers[0]); - this.v6h ^= (0, utils_ts_1.swap8IfBE)(pers[1]); - this.v7l ^= (0, utils_ts_1.swap8IfBE)(pers[2]); - this.v7h ^= (0, utils_ts_1.swap8IfBE)(pers[3]); - } - if (key !== undefined) { - // Pad to blockLen and update - const tmp = new Uint8Array(this.blockLen); - tmp.set(key); - this.update(tmp); - } - } - // prettier-ignore - get() { - let { v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h } = this; - return [v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h]; - } - // prettier-ignore - set(v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h) { - this.v0l = v0l | 0; - this.v0h = v0h | 0; - this.v1l = v1l | 0; - this.v1h = v1h | 0; - this.v2l = v2l | 0; - this.v2h = v2h | 0; - this.v3l = v3l | 0; - this.v3h = v3h | 0; - this.v4l = v4l | 0; - this.v4h = v4h | 0; - this.v5l = v5l | 0; - this.v5h = v5h | 0; - this.v6l = v6l | 0; - this.v6h = v6h | 0; - this.v7l = v7l | 0; - this.v7h = v7h | 0; - } - compress(msg, offset, isLast) { - this.get().forEach((v, i) => (BBUF[i] = v)); // First half from state. - BBUF.set(B2B_IV, 16); // Second half from IV. - let { h, l } = u64.fromBig(BigInt(this.length)); - BBUF[24] = B2B_IV[8] ^ l; // Low word of the offset. - BBUF[25] = B2B_IV[9] ^ h; // High word. - // Invert all bits for last block - if (isLast) { - BBUF[28] = ~BBUF[28]; - BBUF[29] = ~BBUF[29]; - } - let j = 0; - const s = _blake_ts_1.BSIGMA; - for (let i = 0; i < 12; i++) { - G1b(0, 4, 8, 12, msg, offset + 2 * s[j++]); - G2b(0, 4, 8, 12, msg, offset + 2 * s[j++]); - G1b(1, 5, 9, 13, msg, offset + 2 * s[j++]); - G2b(1, 5, 9, 13, msg, offset + 2 * s[j++]); - G1b(2, 6, 10, 14, msg, offset + 2 * s[j++]); - G2b(2, 6, 10, 14, msg, offset + 2 * s[j++]); - G1b(3, 7, 11, 15, msg, offset + 2 * s[j++]); - G2b(3, 7, 11, 15, msg, offset + 2 * s[j++]); - G1b(0, 5, 10, 15, msg, offset + 2 * s[j++]); - G2b(0, 5, 10, 15, msg, offset + 2 * s[j++]); - G1b(1, 6, 11, 12, msg, offset + 2 * s[j++]); - G2b(1, 6, 11, 12, msg, offset + 2 * s[j++]); - G1b(2, 7, 8, 13, msg, offset + 2 * s[j++]); - G2b(2, 7, 8, 13, msg, offset + 2 * s[j++]); - G1b(3, 4, 9, 14, msg, offset + 2 * s[j++]); - G2b(3, 4, 9, 14, msg, offset + 2 * s[j++]); - } - this.v0l ^= BBUF[0] ^ BBUF[16]; - this.v0h ^= BBUF[1] ^ BBUF[17]; - this.v1l ^= BBUF[2] ^ BBUF[18]; - this.v1h ^= BBUF[3] ^ BBUF[19]; - this.v2l ^= BBUF[4] ^ BBUF[20]; - this.v2h ^= BBUF[5] ^ BBUF[21]; - this.v3l ^= BBUF[6] ^ BBUF[22]; - this.v3h ^= BBUF[7] ^ BBUF[23]; - this.v4l ^= BBUF[8] ^ BBUF[24]; - this.v4h ^= BBUF[9] ^ BBUF[25]; - this.v5l ^= BBUF[10] ^ BBUF[26]; - this.v5h ^= BBUF[11] ^ BBUF[27]; - this.v6l ^= BBUF[12] ^ BBUF[28]; - this.v6h ^= BBUF[13] ^ BBUF[29]; - this.v7l ^= BBUF[14] ^ BBUF[30]; - this.v7h ^= BBUF[15] ^ BBUF[31]; - (0, utils_ts_1.clean)(BBUF); - } - destroy() { - this.destroyed = true; - (0, utils_ts_1.clean)(this.buffer32); - this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); - } -} -exports.BLAKE2b = BLAKE2b; -/** - * Blake2b hash function. 64-bit. 1.5x slower than blake2s in JS. - * @param msg - message that would be hashed - * @param opts - dkLen output length, key for MAC mode, salt, personalization - */ -exports.blake2b = (0, utils_ts_1.createOptHasher)((opts) => new BLAKE2b(opts)); -// prettier-ignore -function compress(s, offset, msg, rounds, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) { - let j = 0; - for (let i = 0; i < rounds; i++) { - ({ a: v0, b: v4, c: v8, d: v12 } = (0, _blake_ts_1.G1s)(v0, v4, v8, v12, msg[offset + s[j++]])); - ({ a: v0, b: v4, c: v8, d: v12 } = (0, _blake_ts_1.G2s)(v0, v4, v8, v12, msg[offset + s[j++]])); - ({ a: v1, b: v5, c: v9, d: v13 } = (0, _blake_ts_1.G1s)(v1, v5, v9, v13, msg[offset + s[j++]])); - ({ a: v1, b: v5, c: v9, d: v13 } = (0, _blake_ts_1.G2s)(v1, v5, v9, v13, msg[offset + s[j++]])); - ({ a: v2, b: v6, c: v10, d: v14 } = (0, _blake_ts_1.G1s)(v2, v6, v10, v14, msg[offset + s[j++]])); - ({ a: v2, b: v6, c: v10, d: v14 } = (0, _blake_ts_1.G2s)(v2, v6, v10, v14, msg[offset + s[j++]])); - ({ a: v3, b: v7, c: v11, d: v15 } = (0, _blake_ts_1.G1s)(v3, v7, v11, v15, msg[offset + s[j++]])); - ({ a: v3, b: v7, c: v11, d: v15 } = (0, _blake_ts_1.G2s)(v3, v7, v11, v15, msg[offset + s[j++]])); - ({ a: v0, b: v5, c: v10, d: v15 } = (0, _blake_ts_1.G1s)(v0, v5, v10, v15, msg[offset + s[j++]])); - ({ a: v0, b: v5, c: v10, d: v15 } = (0, _blake_ts_1.G2s)(v0, v5, v10, v15, msg[offset + s[j++]])); - ({ a: v1, b: v6, c: v11, d: v12 } = (0, _blake_ts_1.G1s)(v1, v6, v11, v12, msg[offset + s[j++]])); - ({ a: v1, b: v6, c: v11, d: v12 } = (0, _blake_ts_1.G2s)(v1, v6, v11, v12, msg[offset + s[j++]])); - ({ a: v2, b: v7, c: v8, d: v13 } = (0, _blake_ts_1.G1s)(v2, v7, v8, v13, msg[offset + s[j++]])); - ({ a: v2, b: v7, c: v8, d: v13 } = (0, _blake_ts_1.G2s)(v2, v7, v8, v13, msg[offset + s[j++]])); - ({ a: v3, b: v4, c: v9, d: v14 } = (0, _blake_ts_1.G1s)(v3, v4, v9, v14, msg[offset + s[j++]])); - ({ a: v3, b: v4, c: v9, d: v14 } = (0, _blake_ts_1.G2s)(v3, v4, v9, v14, msg[offset + s[j++]])); - } - return { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 }; -} -const B2S_IV = _md_ts_1.SHA256_IV; -class BLAKE2s extends BLAKE2 { - constructor(opts = {}) { - const olen = opts.dkLen === undefined ? 32 : opts.dkLen; - super(64, olen); - // Internal state, same as SHA-256 - this.v0 = B2S_IV[0] | 0; - this.v1 = B2S_IV[1] | 0; - this.v2 = B2S_IV[2] | 0; - this.v3 = B2S_IV[3] | 0; - this.v4 = B2S_IV[4] | 0; - this.v5 = B2S_IV[5] | 0; - this.v6 = B2S_IV[6] | 0; - this.v7 = B2S_IV[7] | 0; - checkBlake2Opts(olen, opts, 32, 8, 8); - let { key, personalization, salt } = opts; - let keyLength = 0; - if (key !== undefined) { - key = (0, utils_ts_1.toBytes)(key); - keyLength = key.length; - } - this.v0 ^= this.outputLen | (keyLength << 8) | (0x01 << 16) | (0x01 << 24); - if (salt !== undefined) { - salt = (0, utils_ts_1.toBytes)(salt); - const slt = (0, utils_ts_1.u32)(salt); - this.v4 ^= (0, utils_ts_1.swap8IfBE)(slt[0]); - this.v5 ^= (0, utils_ts_1.swap8IfBE)(slt[1]); - } - if (personalization !== undefined) { - personalization = (0, utils_ts_1.toBytes)(personalization); - const pers = (0, utils_ts_1.u32)(personalization); - this.v6 ^= (0, utils_ts_1.swap8IfBE)(pers[0]); - this.v7 ^= (0, utils_ts_1.swap8IfBE)(pers[1]); - } - if (key !== undefined) { - // Pad to blockLen and update - (0, utils_ts_1.abytes)(key); - const tmp = new Uint8Array(this.blockLen); - tmp.set(key); - this.update(tmp); - } - } - get() { - const { v0, v1, v2, v3, v4, v5, v6, v7 } = this; - return [v0, v1, v2, v3, v4, v5, v6, v7]; - } - // prettier-ignore - set(v0, v1, v2, v3, v4, v5, v6, v7) { - this.v0 = v0 | 0; - this.v1 = v1 | 0; - this.v2 = v2 | 0; - this.v3 = v3 | 0; - this.v4 = v4 | 0; - this.v5 = v5 | 0; - this.v6 = v6 | 0; - this.v7 = v7 | 0; - } - compress(msg, offset, isLast) { - const { h, l } = u64.fromBig(BigInt(this.length)); - // prettier-ignore - const { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 } = compress(_blake_ts_1.BSIGMA, offset, msg, 10, this.v0, this.v1, this.v2, this.v3, this.v4, this.v5, this.v6, this.v7, B2S_IV[0], B2S_IV[1], B2S_IV[2], B2S_IV[3], l ^ B2S_IV[4], h ^ B2S_IV[5], isLast ? ~B2S_IV[6] : B2S_IV[6], B2S_IV[7]); - this.v0 ^= v0 ^ v8; - this.v1 ^= v1 ^ v9; - this.v2 ^= v2 ^ v10; - this.v3 ^= v3 ^ v11; - this.v4 ^= v4 ^ v12; - this.v5 ^= v5 ^ v13; - this.v6 ^= v6 ^ v14; - this.v7 ^= v7 ^ v15; - } - destroy() { - this.destroyed = true; - (0, utils_ts_1.clean)(this.buffer32); - this.set(0, 0, 0, 0, 0, 0, 0, 0); - } -} -exports.BLAKE2s = BLAKE2s; -/** - * Blake2s hash function. Focuses on 8-bit to 32-bit platforms. 1.5x faster than blake2b in JS. - * @param msg - message that would be hashed - * @param opts - dkLen output length, key for MAC mode, salt, personalization - */ -exports.blake2s = (0, utils_ts_1.createOptHasher)((opts) => new BLAKE2s(opts)); -//# sourceMappingURL=blake2.js.map \ No newline at end of file diff --git a/node_modules/@noble/hashes/blake2.js.map b/node_modules/@noble/hashes/blake2.js.map deleted file mode 100644 index 8849793..0000000 --- a/node_modules/@noble/hashes/blake2.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"blake2.js","sourceRoot":"","sources":["src/blake2.ts"],"names":[],"mappings":"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C,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,IAAA,gBAAK,EAAC,IAAI,CAAC,CAAC;IACd,CAAC;IACD,OAAO;QACL,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAA,gBAAK,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;CACF;AA5ID,0BA4IC;AAED;;;;GAIG;AACU,QAAA,OAAO,GAA2B,IAAA,0BAAe,EAC5D,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAC5B,CAAC;AAcF,kBAAkB;AAClB,SAAgB,QAAQ,CAAC,CAAa,EAAE,MAAc,EAAE,GAAgB,EAAE,MAAc,EACtF,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAC9F,EAAU,EAAE,EAAU,EAAE,GAAW,EAAE,GAAW,EAAE,GAAW,EAAE,GAAW,EAAE,GAAW,EAAE,GAAW;IAEpG,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,IAAA,eAAG,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,IAAA,eAAG,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,IAAA,eAAG,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,IAAA,eAAG,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,IAAA,eAAG,EAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,IAAA,eAAG,EAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,IAAA,eAAG,EAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,IAAA,eAAG,EAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAEjF,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,IAAA,eAAG,EAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,IAAA,eAAG,EAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,IAAA,eAAG,EAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,IAAA,eAAG,EAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,IAAA,eAAG,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,M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"} \ No newline at end of file diff --git a/node_modules/@noble/hashes/blake2b.d.ts b/node_modules/@noble/hashes/blake2b.d.ts deleted file mode 100644 index a9ea37e..0000000 --- a/node_modules/@noble/hashes/blake2b.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** - * Blake2b hash function. Focuses on 64-bit platforms, but in JS speed different from Blake2s is negligible. - * @module - * @deprecated - */ -import { BLAKE2b as B2B, blake2b as b2b } from './blake2.ts'; -/** @deprecated Use import from `noble/hashes/blake2` module */ -export declare const BLAKE2b: typeof B2B; -/** @deprecated Use import from `noble/hashes/blake2` module */ -export declare const blake2b: typeof b2b; -//# sourceMappingURL=blake2b.d.ts.map \ No newline at end of file diff --git a/node_modules/@noble/hashes/blake2b.d.ts.map b/node_modules/@noble/hashes/blake2b.d.ts.map deleted file mode 100644 index 3b1ad51..0000000 --- a/node_modules/@noble/hashes/blake2b.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"blake2b.d.ts","sourceRoot":"","sources":["src/blake2b.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,aAAa,CAAC;AAC7D,+DAA+D;AAC/D,eAAO,MAAM,OAAO,EAAE,OAAO,GAAS,CAAC;AACvC,+DAA+D;AAC/D,eAAO,MAAM,OAAO,EAAE,OAAO,GAAS,CAAC"} \ No newline at end of file diff --git a/node_modules/@noble/hashes/blake2b.js b/node_modules/@noble/hashes/blake2b.js deleted file mode 100644 index 18cdcca..0000000 --- a/node_modules/@noble/hashes/blake2b.js +++ /dev/null @@ -1,14 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.blake2b = exports.BLAKE2b = void 0; -/** - * Blake2b hash function. Focuses on 64-bit platforms, but in JS speed different from Blake2s is negligible. - * @module - * @deprecated - */ -const blake2_ts_1 = require("./blake2.js"); -/** @deprecated Use import from `noble/hashes/blake2` module */ -exports.BLAKE2b = blake2_ts_1.BLAKE2b; -/** @deprecated Use import from `noble/hashes/blake2` module */ -exports.blake2b = blake2_ts_1.blake2b; -//# sourceMappingURL=blake2b.js.map \ No newline at end of file diff --git a/node_modules/@noble/hashes/blake2b.js.map b/node_modules/@noble/hashes/blake2b.js.map deleted file mode 100644 index 65282ad..0000000 --- a/node_modules/@noble/hashes/blake2b.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"blake2b.js","sourceRoot":"","sources":["src/blake2b.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,2CAA6D;AAC7D,+DAA+D;AAClD,QAAA,OAAO,GAAe,mBAAG,CAAC;AACvC,+DAA+D;AAClD,QAAA,OAAO,GAAe,mBAAG,CAAC"} \ No newline at end of file diff --git a/node_modules/@noble/hashes/blake2s.d.ts b/node_modules/@noble/hashes/blake2s.d.ts deleted file mode 100644 index 6720f35..0000000 --- a/node_modules/@noble/hashes/blake2s.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Blake2s hash function. Focuses on 8-bit to 32-bit platforms. blake2b for 64-bit, but in JS it is slower. - * @module - * @deprecated - */ -import { G1s as G1s_n, G2s as G2s_n } from './_blake.ts'; -import { BLAKE2s as B2S, blake2s as b2s, compress as compress_n } from './blake2.ts'; -/** @deprecated Use import from `noble/hashes/blake2` module */ -export declare const B2S_IV: Uint32Array; -/** @deprecated Use import from `noble/hashes/blake2` module */ -export declare const G1s: typeof G1s_n; -/** @deprecated Use import from `noble/hashes/blake2` module */ -export declare const G2s: typeof G2s_n; -/** @deprecated Use import from `noble/hashes/blake2` module */ -export declare const compress: typeof compress_n; -/** @deprecated Use import from `noble/hashes/blake2` module */ -export declare const BLAKE2s: typeof B2S; -/** @deprecated Use import from `noble/hashes/blake2` module */ -export declare const blake2s: typeof b2s; -//# sourceMappingURL=blake2s.d.ts.map \ No newline at end of file diff --git a/node_modules/@noble/hashes/blake2s.d.ts.map b/node_modules/@noble/hashes/blake2s.d.ts.map deleted file mode 100644 index 9a54568..0000000 --- a/node_modules/@noble/hashes/blake2s.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"blake2s.d.ts","sourceRoot":"","sources":["src/blake2s.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,GAAG,IAAI,KAAK,EAAE,GAAG,IAAI,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,aAAa,CAAC;AACrF,+DAA+D;AAC/D,eAAO,MAAM,MAAM,EAAE,WAAuB,CAAC;AAC7C,+DAA+D;AAC/D,eAAO,MAAM,GAAG,EAAE,OAAO,KAAa,CAAC;AACvC,+DAA+D;AAC/D,eAAO,MAAM,GAAG,EAAE,OAAO,KAAa,CAAC;AACvC,+DAA+D;AAC/D,eAAO,MAAM,QAAQ,EAAE,OAAO,UAAuB,CAAC;AACtD,+DAA+D;AAC/D,eAAO,MAAM,OAAO,EAAE,OAAO,GAAS,CAAC;AACvC,+DAA+D;AAC/D,eAAO,MAAM,OAAO,EAAE,OAAO,GAAS,CAAC"} \ No newline at end of file