├── .cargo-ok ├── examples ├── shadow-cljs │ ├── public │ │ └── index.html │ ├── package.json │ ├── shadow-cljs.edn │ ├── src │ │ └── main │ │ │ └── app.cljs │ └── package-lock.json └── parcel │ ├── index.html │ ├── index.js │ └── package.json ├── .gitignore ├── rust-toolchain.toml ├── .appveyor.yml ├── index.d.ts ├── rollup.config.mjs ├── index.js ├── Cargo.toml ├── package.json ├── LICENSE_MIT ├── .github └── workflows │ └── main.yml ├── README.md ├── CHANGELOG.md ├── tests ├── all.test.js └── all.rs ├── src └── lib.rs ├── supply-chain ├── imports.lock ├── config.toml └── audits.toml ├── LICENSE_APACHE └── Cargo.lock /.cargo-ok: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/shadow-cljs/public/index.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | **/*.rs.bk 3 | bin/ 4 | pkg/ 5 | wasm-pack.log 6 | node_modules 7 | dist 8 | .parcel-cache 9 | .vscode -------------------------------------------------------------------------------- /rust-toolchain.toml: -------------------------------------------------------------------------------- 1 | [toolchain] 2 | channel = "nightly" 3 | components = ["rust-src"] 4 | targets = ["wasm32-unknown-unknown"] 5 | profile = "minimal" 6 | -------------------------------------------------------------------------------- /examples/parcel/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /examples/shadow-cljs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rage-wasm-example", 3 | "version": "0.0.1", 4 | "private": "true", 5 | "devDependencies": { 6 | "shadow-cljs": "2.20.2", 7 | "@kanru/rage-wasm": "../../" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /examples/shadow-cljs/shadow-cljs.edn: -------------------------------------------------------------------------------- 1 | {:source-paths 2 | ["src/main"] 3 | 4 | :dependencies 5 | [[funcool/promesa "4.0.2"]] 6 | 7 | :dev-http {8060 "public"} 8 | 9 | :builds 10 | {:app 11 | {:target :browser 12 | :modules {:main {:init-fn app/init}} 13 | :compiler-options {:output-feature-set :es8}}}} -------------------------------------------------------------------------------- /examples/parcel/index.js: -------------------------------------------------------------------------------- 1 | import { html, render } from 'htm/preact'; 2 | import * as rage from '@kanru/rage-wasm'; 3 | 4 | async function run() { 5 | let key = await rage.keygen(); 6 | render(html`
7 |

Generating AGE key...

8 |

Private key: ${key[0]}

9 |

Public key: ${key[1]}

10 |
`, document.body); 11 | } 12 | 13 | run(); -------------------------------------------------------------------------------- /.appveyor.yml: -------------------------------------------------------------------------------- 1 | install: 2 | - appveyor-retry appveyor DownloadFile https://win.rustup.rs/ -FileName rustup-init.exe 3 | - if not defined RUSTFLAGS rustup-init.exe -y --default-host x86_64-pc-windows-msvc --default-toolchain nightly 4 | - set PATH=%PATH%;C:\Users\appveyor\.cargo\bin 5 | - rustc -V 6 | - cargo -V 7 | 8 | build: false 9 | 10 | test_script: 11 | - cargo test --locked 12 | -------------------------------------------------------------------------------- /examples/parcel/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rage-wasm-example-parcel", 3 | "version": "1.0.0", 4 | "description": "", 5 | "scripts": { 6 | "dev": "parcel index.html" 7 | }, 8 | "author": "", 9 | "license": "Apache-2.0", 10 | "devDependencies": { 11 | "parcel": "^2.11.0" 12 | }, 13 | "dependencies": { 14 | "@kanru/rage-wasm": "^0.3.0", 15 | "htm": "^3.1.1", 16 | "preact": "^10.19.3" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /index.d.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable */ 2 | /* eslint-disable */ 3 | export function keygen(): Promise; 4 | export function encrypt_with_x25519(public_key: string, data: Uint8Array, armor: boolean): Promise; 5 | export function decrypt_with_x25519(secret_key: string, data: Uint8Array): Promise; 6 | export function encrypt_with_user_passphrase(passphrase: string, data: Uint8Array, armor: boolean): Promise; 7 | export function decrypt_with_user_passphrase(passphrase: string, data: Uint8Array): Promise; 8 | -------------------------------------------------------------------------------- /rollup.config.mjs: -------------------------------------------------------------------------------- 1 | import rust from "@wasm-tool/rollup-plugin-rust"; 2 | import replace from 'rollup-plugin-re' 3 | 4 | export default { 5 | input: 'index.js', 6 | output: { 7 | dir: 'dist', 8 | }, 9 | plugins: [ 10 | rust({ 11 | cargoArgs: ["-Zbuild-std=std,panic_abort", "-Zbuild-std-features=panic_immediate_abort"], 12 | wasmOptArgs: ["-Oz"], 13 | verbose: true, 14 | inlineWasm: true 15 | }), 16 | replace({ 17 | patterns: [ 18 | { 19 | test: 'input = import.meta.url.replace(/\\.js$/, \'_bg.wasm\');', 20 | replace: '' 21 | }, 22 | { 23 | test: 'input = new URL(\'index_bg.wasm\', import.meta.url);', 24 | replace: '' 25 | } 26 | ] 27 | }) 28 | ], 29 | }; 30 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | import * as wasm from './Cargo.toml'; 2 | 3 | const rage_wasm = wasm.default(); 4 | 5 | export async function keygen() { 6 | return (await rage_wasm).keygen(); 7 | } 8 | 9 | export async function encrypt_with_x25519(public_key, data, armor) { 10 | return (await rage_wasm).encrypt_with_x25519(public_key, data, armor); 11 | } 12 | 13 | export async function decrypt_with_x25519(secret_key, data) { 14 | return (await rage_wasm).decrypt_with_x25519(secret_key, data); 15 | } 16 | 17 | export async function encrypt_with_user_passphrase(passphrase, data, armor) { 18 | return (await rage_wasm).encrypt_with_user_passphrase(passphrase, data, armor); 19 | } 20 | 21 | export async function decrypt_with_user_passphrase(passphrase, data) { 22 | return (await rage_wasm).decrypt_with_user_passphrase(passphrase, data); 23 | } -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rage-wasm" 3 | version = "0.3.1" 4 | authors = ["Kan-Ru Chen "] 5 | repository = "https://github.com/kanru/rage-wasm" 6 | readme = "README.md" 7 | keywords = ["rage", "encryption", "wasm"] 8 | categories = ["cryptography"] 9 | edition = "2021" 10 | license = "MIT OR Apache-2.0" 11 | 12 | [badges] 13 | maintenance = { status = "experimental" } 14 | 15 | [lib] 16 | crate-type = ["cdylib", "rlib"] 17 | 18 | [dependencies] 19 | # WebAssembly interop 20 | wasm-bindgen = "0.2.83" 21 | js-sys = "0.3.60" 22 | # Core encryption library 23 | age = { version = "0.9.2", features = ["armor", "web-sys"] } 24 | # For key generation 25 | secrecy = "0.8.0" 26 | 27 | # Enable rand_core's wasm support with js runtime 28 | getrandom_2_7 = { package = "getrandom", version = "0.2.7", features = ["js"] } 29 | getrandom_1_16 = { package = "getrandom", version = "0.1.16", features = ["wasm-bindgen"] } 30 | 31 | [dev-dependencies] 32 | wasm-bindgen-test = "0.3.33" 33 | 34 | [profile.release] 35 | opt-level = "z" 36 | lto = true 37 | panic = 'abort' 38 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@kanru/rage-wasm", 3 | "collaborators": [ 4 | "Kan-Ru Chen " 5 | ], 6 | "version": "0.3.2", 7 | "license": "MIT OR Apache-2.0", 8 | "repository": { 9 | "type": "git", 10 | "url": "git+https://github.com/kanru/rage-wasm.git" 11 | }, 12 | "scripts": { 13 | "build": "RUSTFLAGS='-C target-feature=+atomics,+bulk-memory,+mutable-globals' rollup -c rollup.config.mjs", 14 | "test": "web-test-runner tests/**/*.test.js --node-resolve --playwright --browsers chromium firefox webkit", 15 | "clean": "cargo clean" 16 | }, 17 | "files": [ 18 | "dist/index.js", 19 | "index.d.ts", 20 | "LICENSE_APACHE", 21 | "LICENSE_MIT" 22 | ], 23 | "type": "module", 24 | "module": "dist/index.js", 25 | "types": "index.d.ts", 26 | "sideEffects": false, 27 | "devDependencies": { 28 | "@esm-bundle/chai": "^4.3.4-fix.0", 29 | "@wasm-tool/rollup-plugin-rust": "^2.4.5", 30 | "@web/test-runner": "^0.18.0", 31 | "@web/test-runner-playwright": "^0.11.0", 32 | "rollup": "^4.9.6", 33 | "rollup-plugin-re": "^1.0.7" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /LICENSE_MIT: -------------------------------------------------------------------------------- 1 | Copyright (c) 2021 Kan-Ru Chen 2 | 3 | Permission is hereby granted, free of charge, to any 4 | person obtaining a copy of this software and associated 5 | documentation files (the "Software"), to deal in the 6 | Software without restriction, including without 7 | limitation the rights to use, copy, modify, merge, 8 | publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software 10 | is furnished to do so, subject to the following 11 | conditions: 12 | 13 | The above copyright notice and this permission notice 14 | shall be included in all copies or substantial portions 15 | of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF 18 | ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 19 | TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 20 | PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT 21 | SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 23 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR 24 | IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 25 | DEALINGS IN THE SOFTWARE. 26 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | cargo-vet: 7 | name: Vet Dependencies 8 | runs-on: ubuntu-latest 9 | env: 10 | CARGO_VET_VERSION: 0.9.0 11 | steps: 12 | - uses: actions/checkout@master 13 | - uses: actions/cache@v2 14 | with: 15 | path: ${{ runner.tool_cache }}/cargo-vet 16 | key: cargo-vet-bin-${{ env.CARGO_VET_VERSION }} 17 | - name: Add the tool cache directory to the search path 18 | run: echo "${{ runner.tool_cache }}/cargo-vet/bin" >> $GITHUB_PATH 19 | - name: Ensure that the tool cache is populated with the cargo-vet binary 20 | run: cargo install --root ${{ runner.tool_cache }}/cargo-vet --version ${{ env.CARGO_VET_VERSION }} cargo-vet 21 | - name: Invoke cargo-vet 22 | run: cargo vet --locked 23 | test: 24 | name: Web Test Runner 25 | runs-on: ubuntu-latest 26 | steps: 27 | - uses: actions/checkout@v3 28 | - uses: actions/setup-node@v3 29 | with: 30 | node-version: 20 31 | - uses: microsoft/playwright-github-action@v1 32 | - name: Install dependencies and run tests 33 | run: cargo check && npm install && npm run build && npx playwright install && npm test -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # rage-wasm: WebAssembly wrapper of rage 2 | 3 | rage is a simple, modern, and secure file encryption tool, using the age format. 4 | It features small explicit keys, no config options, and UNIX-style 5 | composability. 6 | 7 | The format specification is at [age-encryption.org/v1](https://age-encryption.org/v1). 8 | To discuss the spec or other age related topics, please email 9 | [the mailing list](https://groups.google.com/d/forum/age-dev) at 10 | age-dev@googlegroups.com. age was designed by 11 | [@Benjojo12](https://twitter.com/Benjojo12) and 12 | [@FiloSottile](https://twitter.com/FiloSottile). 13 | 14 | This package is a WebAssembly wrapper of the Rust 15 | [rage](https://github.com/str4d/rage) package, providing basic encryption and 16 | descryption operations. 17 | 18 | ## 🚴 Usage 19 | 20 | ### 🐑 Use NPM or Yarn to install the package 21 | 22 | ``` 23 | npm install @kanru/rage-wasm 24 | ``` 25 | 26 | The package exports a single module with 5 async methods. Upon first use 27 | an inlined webassembly module will be loaded asynchronously. 28 | 29 | - keygen - generate x25519 key pairs 30 | - encrypt_with_x25519 31 | - decrypt_with_x25519 32 | - encrypt_with_user_passphrase 33 | - decrypt_with_user_passphrase 34 | 35 | ### Examples 36 | 37 | Some examples with parcel or shadow-cljs are available under the `examples/` directory. 38 | 39 | ## Contribute 40 | 41 | ### 🛠️ Build 42 | 43 | ``` 44 | npm install 45 | npm run build 46 | ``` 47 | 48 | ### 🔬 Test in Headless Browsers 49 | 50 | ``` 51 | npm test 52 | ``` 53 | 54 | ### 🎁 Publish to NPM 55 | 56 | ``` 57 | npm publish 58 | ``` 59 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 7 | 8 | ## [Unreleased] 9 | 10 | ### Changed 11 | 12 | - Remove all direct dependency on wasm-pack 13 | - Use web-test-runner to run tests 14 | 15 | ## [0.3.0] - 2022-09-22 16 | 17 | ### Added 18 | 19 | - Dependencies are partially audited and documented with [cargo-vet] 20 | 21 | [cargo-vet]: https://mozilla.github.io/cargo-vet/index.html 22 | 23 | ### Changed 24 | 25 | - Removed cog.toml and adopted Keep a Changelog format. 26 | - Removed unmaintained dependency wee_alloc. Default allocator will be used. 27 | - Added shadow-cljs example 28 | 29 | ## [0.2.2] - 2021-08-29 30 | 31 | ### Added 32 | 33 | - 40888e add an example with parcel, htm, and preact - Kan-Ru Chen 34 | 35 | ### Changed 36 | 37 | - aae08f optimize new wasm-pack output - Kan-Ru Chen 38 | - 781a44 fix cog pre-bump hook - Kan-Ru Chen 39 | - 622881 update dependencies - Kan-Ru Chen 40 | - f27933 update dependencies - Kan-Ru Chen 41 | 42 | ### Fixed 43 | 44 | - a5c93e use correct return type in type declaration - Kan-Ru Chen 45 | 46 | ## [0.2.1] - 2021-02-10 47 | 48 | ### Changed 49 | 50 | - 2eb37c minimal CI with github action (#1) - Kan-Ru Chen 51 | - 6ac451 enable panic_immedate_abort when using nightly to get smallest wasm - Kan-Ru Chen 52 | - 21f888 build rlib so we can run tests - Kan-Ru Chen 53 | 54 | ## [0.2.0] - 2021-02-10 55 | 56 | ### Added 57 | 58 | - d7489f use rollup to bundle generated files - Kan-Ru Chen 59 | 60 | ### Removed 61 | 62 | - 872ead remove unused keygen_from_random_bytes function - Kan-Ru Chen 63 | 64 | ### Changed 65 | 66 | - 014e68 add pre_bump_hooks to cog.toml - Kan-Ru Chen 67 | - 5e7595 update wasm-bindgen - Kan-Ru Chen 68 | 69 | ## [0.1.4] - 2021-02-03 70 | 71 | ### Changed 72 | 73 | - 95874f switch to rage from git to enable faster passphrase encryption - Kan-Ru Chen 74 | - e82b2f add initial cog.toml for cocogitto - Kan-Ru Chen 75 | 76 | 77 | [Unreleased]: https://github.com/kanru/rage-wasm/compare/v0.3.0..main 78 | [0.3.0]: https://github.com/kanru/rage-wasm/releases/v0.3.0 79 | [0.2.2]: https://github.com/kanru/rage-wasm/releases/tag/0.2.2 80 | [0.2.1]: https://github.com/kanru/rage-wasm/releases/tag/0.2.1 81 | [0.2.0]: https://github.com/kanru/rage-wasm/releases/tag/0.2.0 82 | [0.1.4]: https://github.com/kanru/rage-wasm/releases/tag/0.1.4 -------------------------------------------------------------------------------- /tests/all.test.js: -------------------------------------------------------------------------------- 1 | import { expect } from "@esm-bundle/chai"; 2 | import { keygen, encrypt_with_x25519, decrypt_with_x25519, encrypt_with_user_passphrase, decrypt_with_user_passphrase } from "../dist/index.js"; 3 | 4 | const ENCODER = new TextEncoder("utf-8"); 5 | const DECODER = new TextDecoder("utf-8"); 6 | 7 | function encode(s) { 8 | return ENCODER.encode(s); 9 | } 10 | 11 | function decode(arr) { 12 | return DECODER.decode(arr); 13 | } 14 | 15 | it('x25519 encryption and decryption', async () => { 16 | let secret_key = "AGE-SECRET-KEY-17QZPZDKGN49PAJHQGKDT056ND8MEZ6ZQK9HPXGMCS85VXNXEPATSQTYK6T"; 17 | let public_key = "age1mfqmqkz9ga3a3lrgw8yatm79h5pqdu7z2hclghck5v8lrtwerysq97u6j8"; 18 | let data = "test"; 19 | let encrypted = await encrypt_with_x25519(public_key, encode(data), true); 20 | let decrypted = decode(await decrypt_with_x25519(secret_key, encrypted)); 21 | expect(decrypted).to.equal(data); 22 | }); 23 | 24 | it('x25519 keygen and encryption and decryption', async () => { 25 | let keys = await keygen(); 26 | let secret_key = keys[0]; 27 | let public_key = keys[1]; 28 | let data = "test"; 29 | let encrypted = await encrypt_with_x25519(public_key, encode(data), true); 30 | let decrypted = decode(await decrypt_with_x25519(secret_key, encrypted)); 31 | expect(decrypted).to.equal(data); 32 | }); 33 | 34 | it('x25519 keygen and unaromored encryption and decryption', async () => { 35 | let keys = await keygen(); 36 | let secret_key = keys[0]; 37 | let public_key = keys[1]; 38 | let data = "test"; 39 | let encrypted = await encrypt_with_x25519(public_key, encode(data), false); 40 | let decrypted = decode(await decrypt_with_x25519(secret_key, encrypted)); 41 | expect(decrypted).to.equal(data); 42 | }); 43 | 44 | it('passphrase encryption and decryption', async function () { 45 | this.timeout(5000); 46 | let key = "passphrase"; 47 | let data = "test"; 48 | let encrypted = await encrypt_with_user_passphrase(key, encode(data), true); 49 | let decrypted = decode(await decrypt_with_user_passphrase(key, encrypted)); 50 | expect(decrypted).to.equal(data); 51 | }); 52 | 53 | it('passphrase unarmored encryption and decryption', async function () { 54 | this.timeout(5000); 55 | let key = "passphrase"; 56 | let data = "test"; 57 | let encrypted = await encrypt_with_user_passphrase(key, encode(data), false); 58 | let decrypted = decode(await decrypt_with_user_passphrase(key, encrypted)); 59 | expect(decrypted).to.equal(data); 60 | }); -------------------------------------------------------------------------------- /tests/all.rs: -------------------------------------------------------------------------------- 1 | #![cfg(target_arch = "wasm32")] 2 | 3 | extern crate wasm_bindgen_test; 4 | use rage_wasm::{ 5 | decrypt_with_user_passphrase, decrypt_with_x25519, encrypt_with_user_passphrase, 6 | encrypt_with_x25519, keygen, 7 | }; 8 | use wasm_bindgen_test::*; 9 | 10 | wasm_bindgen_test_configure!(run_in_browser); 11 | 12 | #[wasm_bindgen_test] 13 | fn x25519_encryption_and_decryption() { 14 | let secret_key = "AGE-SECRET-KEY-17QZPZDKGN49PAJHQGKDT056ND8MEZ6ZQK9HPXGMCS85VXNXEPATSQTYK6T"; 15 | let public_key = "age1mfqmqkz9ga3a3lrgw8yatm79h5pqdu7z2hclghck5v8lrtwerysq97u6j8"; 16 | let data = "test"; 17 | let encrypted = encrypt_with_x25519(&public_key, data.as_bytes(), true).unwrap(); 18 | let decrypted = decrypt_with_x25519(&secret_key, &encrypted).unwrap(); 19 | 20 | assert_eq!(data.as_bytes(), decrypted.as_ref()); 21 | } 22 | 23 | #[wasm_bindgen_test] 24 | fn x25519_keygen_and_encryption_and_decryption() { 25 | let keys = keygen(); 26 | let secret_key = keys[0].as_string().unwrap(); 27 | let public_key = keys[1].as_string().unwrap(); 28 | let data = "test"; 29 | let encrypted = encrypt_with_x25519(&public_key, data.as_bytes(), true).unwrap(); 30 | let decrypted = decrypt_with_x25519(&secret_key, &encrypted).unwrap(); 31 | 32 | assert_eq!(data.as_bytes(), decrypted.as_ref()); 33 | } 34 | 35 | #[wasm_bindgen_test] 36 | fn x25519_keygen_and_unarmored_encryption_and_decryption() { 37 | let keys = keygen(); 38 | let secret_key = keys[0].as_string().unwrap(); 39 | let public_key = keys[1].as_string().unwrap(); 40 | let data = "test"; 41 | let encrypted = encrypt_with_x25519(&public_key, data.as_bytes(), false).unwrap(); 42 | let decrypted = decrypt_with_x25519(&secret_key, &encrypted).unwrap(); 43 | 44 | assert_eq!(data.as_bytes(), decrypted.as_ref()); 45 | } 46 | 47 | #[wasm_bindgen_test] 48 | fn passphrase_encryption_and_decryption() { 49 | let key = "password"; 50 | let data = "test"; 51 | let encrypted = encrypt_with_user_passphrase(&key, data.as_bytes(), true).unwrap(); 52 | let decrypted = decrypt_with_user_passphrase(&key, &encrypted).unwrap(); 53 | 54 | assert_eq!(data.as_bytes(), decrypted.as_ref()); 55 | } 56 | 57 | #[wasm_bindgen_test] 58 | fn passphrase_unarmored_encryption_and_decryption() { 59 | let key = "password"; 60 | let data = "test"; 61 | let encrypted = encrypt_with_user_passphrase(&key, data.as_bytes(), false).unwrap(); 62 | let decrypted = decrypt_with_user_passphrase(&key, &encrypted).unwrap(); 63 | 64 | assert_eq!(data.as_bytes(), decrypted.as_ref()); 65 | } 66 | -------------------------------------------------------------------------------- /examples/shadow-cljs/src/main/app.cljs: -------------------------------------------------------------------------------- 1 | (ns app 2 | (:require ["@kanru/rage-wasm" :as rage] 3 | [promesa.core :as p])) 4 | 5 | (defonce encoder 6 | (js/TextEncoder. "utf-8")) 7 | 8 | (defonce decoder 9 | (js/TextDecoder. "utf-8")) 10 | 11 | (defn encode [s] 12 | (.encode encoder s)) 13 | 14 | (defn decode [arr] 15 | (.decode decoder arr)) 16 | 17 | (defn x25519-encryption-and-decryption [] 18 | (p/let [secret_key "AGE-SECRET-KEY-17QZPZDKGN49PAJHQGKDT056ND8MEZ6ZQK9HPXGMCS85VXNXEPATSQTYK6T" 19 | public_key "age1mfqmqkz9ga3a3lrgw8yatm79h5pqdu7z2hclghck5v8lrtwerysq97u6j8" 20 | data "test" 21 | encrypted (rage/encrypt_with_x25519 public_key (encode data) true) 22 | decrypted (rage/decrypt_with_x25519 secret_key encrypted)] 23 | (assert (= data (decode decrypted))) 24 | "ok")) 25 | 26 | (defn x25519-keygen-and-encryption-and-decryption [] 27 | (p/let [keys (rage/keygen) 28 | secret_key (first keys) 29 | public_key (second keys) 30 | data "test" 31 | encrypted (rage/encrypt_with_x25519 public_key (encode data) true) 32 | decrypted (rage/decrypt_with_x25519 secret_key encrypted)] 33 | (assert (= data (decode decrypted))) 34 | "ok")) 35 | 36 | (defn x25519-keygen-and-unarmored-encryption-and-decryption [] 37 | (p/let [keys (rage/keygen) 38 | secret_key (first keys) 39 | public_key (second keys) 40 | data "test" 41 | encrypted (rage/encrypt_with_x25519 public_key (encode data) false) 42 | decrypted (rage/decrypt_with_x25519 secret_key encrypted)] 43 | (assert (= data (decode decrypted))) 44 | "ok")) 45 | 46 | (defn passphrase-encryption-and-decryption [] 47 | (p/let [keys (rage/keygen) 48 | key "password" 49 | data "test" 50 | encrypted (rage/encrypt_with_user_passphrase key (encode data) true) 51 | decrypted (rage/decrypt_with_user_passphrase key encrypted)] 52 | (assert (= data (decode decrypted))) 53 | "ok")) 54 | 55 | (defn passphrase-unarmored-encryption-and-decryption [] 56 | (p/let [keys (rage/keygen) 57 | key "password" 58 | data "test" 59 | encrypted (rage/encrypt_with_user_passphrase key (encode data) false) 60 | decrypted (rage/decrypt_with_user_passphrase key encrypted)] 61 | (assert (= data (decode decrypted))) 62 | "ok")) 63 | 64 | 65 | (defn init [] 66 | (p/let [t1 (x25519-encryption-and-decryption) 67 | t2 (x25519-keygen-and-encryption-and-decryption) 68 | t3 (x25519-keygen-and-unarmored-encryption-and-decryption) 69 | t4 (passphrase-encryption-and-decryption) 70 | t5 (passphrase-unarmored-encryption-and-decryption)] 71 | (js/console.log "x25519-encryption-and-decryption..." t1) 72 | (js/console.log "x25519-keygen-and-encryption-and-decryption..." t2) 73 | (js/console.log "x25519-keygen-and-unarmored-encryption-and-decryption..." t3) 74 | (js/console.log "passphrase-encryption-and-decryption..." t4) 75 | (js/console.log "passphrase-unarmored-encryption-and-decryption..." t5))) -------------------------------------------------------------------------------- /src/lib.rs: -------------------------------------------------------------------------------- 1 | use age::{ 2 | armor::{ArmoredReader, ArmoredWriter, Format}, 3 | x25519, Decryptor, Encryptor, 4 | }; 5 | use secrecy::{ExposeSecret, Secret}; 6 | use std::{ 7 | io::{Read, Write}, 8 | iter, vec, 9 | }; 10 | use wasm_bindgen::prelude::*; 11 | 12 | fn encrypt_error(_: T) -> JsValue { 13 | js_sys::Error::new("encryption error").into() 14 | } 15 | 16 | fn decrypt_error(_: T) -> JsValue { 17 | js_sys::Error::new("decryption error").into() 18 | } 19 | 20 | #[wasm_bindgen] 21 | pub fn keygen() -> Vec { 22 | let secret = x25519::Identity::generate(); 23 | let public = secret.to_public(); 24 | vec![ 25 | JsValue::from(secret.to_string().expose_secret()), 26 | JsValue::from(public.to_string()), 27 | ] 28 | } 29 | 30 | #[wasm_bindgen] 31 | pub fn encrypt_with_x25519( 32 | public_key: &str, 33 | data: &[u8], 34 | armor: bool, 35 | ) -> Result, JsValue> { 36 | let key: x25519::Recipient = public_key.parse().map_err(encrypt_error)?; 37 | let recipients = vec![Box::new(key) as Box]; 38 | let encryptor = Encryptor::with_recipients(recipients).unwrap(); 39 | let mut output = vec![]; 40 | let format = if armor { 41 | Format::AsciiArmor 42 | } else { 43 | Format::Binary 44 | }; 45 | let armor = ArmoredWriter::wrap_output(&mut output, format).map_err(encrypt_error)?; 46 | let mut writer = encryptor.wrap_output(armor).map_err(encrypt_error)?; 47 | writer.write_all(data).map_err(encrypt_error)?; 48 | writer 49 | .finish() 50 | .and_then(|armor| armor.finish()) 51 | .map_err(encrypt_error)?; 52 | Ok(output.into_boxed_slice()) 53 | } 54 | 55 | #[wasm_bindgen] 56 | pub fn decrypt_with_x25519(secret_key: &str, data: &[u8]) -> Result, JsValue> { 57 | let identity: x25519::Identity = secret_key.parse().map_err(encrypt_error)?; 58 | let armor = ArmoredReader::new(data); 59 | let decryptor = match Decryptor::new(armor).map_err(decrypt_error)? { 60 | Decryptor::Recipients(d) => d, 61 | _ => return Err(decrypt_error(())), 62 | }; 63 | let mut decrypted = vec![]; 64 | let mut reader = decryptor 65 | .decrypt(iter::once(&identity as &dyn age::Identity)) 66 | .map_err(decrypt_error)?; 67 | reader.read_to_end(&mut decrypted).map_err(decrypt_error)?; 68 | Ok(decrypted.into_boxed_slice()) 69 | } 70 | 71 | #[wasm_bindgen] 72 | pub fn encrypt_with_user_passphrase( 73 | passphrase: &str, 74 | data: &[u8], 75 | armor: bool, 76 | ) -> Result, JsValue> { 77 | let encryptor = Encryptor::with_user_passphrase(Secret::new(passphrase.to_owned())); 78 | let mut output = vec![]; 79 | let format = if armor { 80 | Format::AsciiArmor 81 | } else { 82 | Format::Binary 83 | }; 84 | let armor = ArmoredWriter::wrap_output(&mut output, format).map_err(encrypt_error)?; 85 | let mut writer = encryptor.wrap_output(armor).map_err(encrypt_error)?; 86 | writer.write_all(data).map_err(encrypt_error)?; 87 | writer 88 | .finish() 89 | .and_then(|armor| armor.finish()) 90 | .map_err(encrypt_error)?; 91 | Ok(output.into_boxed_slice()) 92 | } 93 | 94 | #[wasm_bindgen] 95 | pub fn decrypt_with_user_passphrase(passphrase: &str, data: &[u8]) -> Result, JsValue> { 96 | let armor = ArmoredReader::new(data); 97 | let decryptor = match age::Decryptor::new(armor).map_err(decrypt_error)? { 98 | age::Decryptor::Passphrase(d) => d, 99 | _ => return Err(decrypt_error(())), 100 | }; 101 | let mut decrypted = vec![]; 102 | let mut reader = decryptor 103 | .decrypt(&Secret::new(passphrase.to_owned()), None) 104 | .map_err(decrypt_error)?; 105 | reader.read_to_end(&mut decrypted).map_err(decrypt_error)?; 106 | Ok(decrypted.into_boxed_slice()) 107 | } 108 | -------------------------------------------------------------------------------- /supply-chain/imports.lock: -------------------------------------------------------------------------------- 1 | 2 | # cargo-vet imports lock 3 | 4 | [[audits.firefox.audits.autocfg]] 5 | who = "Josh Stone " 6 | criteria = "safe-to-deploy" 7 | version = "1.1.0" 8 | notes = "All code written or reviewed by Josh Stone." 9 | 10 | [[audits.firefox.audits.bumpalo]] 11 | who = "Bobby Holley " 12 | criteria = "safe-to-run" 13 | delta = "3.9.1 -> 3.10.0" 14 | notes = """ 15 | Some nontrivial functional changes but certainly meets the no-malware bar of 16 | safe-to-run. If we needed safe-to-deploy for this in m-c I'd ask Nick to re- 17 | certify this version, but we don't, so this is fine for now. 18 | """ 19 | 20 | [[audits.firefox.audits.cpufeatures]] 21 | who = "Mike Hommey " 22 | criteria = "safe-to-deploy" 23 | delta = "0.2.2 -> 0.2.4" 24 | 25 | [[audits.firefox.audits.crypto-common]] 26 | who = "Mike Hommey " 27 | criteria = "safe-to-deploy" 28 | delta = "0.1.3 -> 0.1.6" 29 | 30 | [[audits.firefox.audits.fluent]] 31 | who = "Zibi Braniecki " 32 | criteria = "safe-to-deploy" 33 | version = "0.16.0" 34 | 35 | [[audits.firefox.audits.fluent-bundle]] 36 | who = "Zibi Braniecki " 37 | criteria = "safe-to-deploy" 38 | version = "0.15.2" 39 | 40 | [[audits.firefox.audits.fluent-langneg]] 41 | who = "Zibi Braniecki " 42 | criteria = "safe-to-deploy" 43 | version = "0.13.0" 44 | 45 | [[audits.firefox.audits.fluent-syntax]] 46 | who = "Zibi Braniecki " 47 | criteria = "safe-to-deploy" 48 | version = "0.11.0" 49 | 50 | [[audits.firefox.audits.generic-array]] 51 | who = "Mike Hommey " 52 | criteria = "safe-to-deploy" 53 | delta = "0.14.5 -> 0.14.6" 54 | 55 | [[audits.firefox.audits.getrandom]] 56 | who = "Mike Hommey " 57 | criteria = "safe-to-deploy" 58 | delta = "0.2.6 -> 0.2.7" 59 | 60 | [[audits.firefox.audits.hashbrown]] 61 | who = "Mike Hommey " 62 | criteria = "safe-to-deploy" 63 | version = "0.12.3" 64 | notes = "This version is used in rust's libstd, so effectively we're already trusting it" 65 | 66 | [[audits.firefox.audits.intl-memoizer]] 67 | who = "Zibi Braniecki " 68 | criteria = "safe-to-deploy" 69 | version = "0.5.1" 70 | 71 | [[audits.firefox.audits.intl_pluralrules]] 72 | who = "Zibi Braniecki " 73 | criteria = "safe-to-deploy" 74 | version = "7.0.1" 75 | 76 | [[audits.firefox.audits.libc]] 77 | who = "Mike Hommey " 78 | criteria = "safe-to-deploy" 79 | delta = "0.2.126 -> 0.2.132" 80 | 81 | [[audits.firefox.audits.log]] 82 | who = "Mike Hommey " 83 | criteria = "safe-to-deploy" 84 | version = "0.4.17" 85 | 86 | [[audits.firefox.audits.pin-project]] 87 | who = "Mike Hommey " 88 | criteria = "safe-to-run" 89 | delta = "1.0.10 -> 1.0.12" 90 | 91 | [[audits.firefox.audits.pin-project-internal]] 92 | who = "Mike Hommey " 93 | criteria = "safe-to-run" 94 | delta = "1.0.10 -> 1.0.12" 95 | 96 | [[audits.firefox.audits.proc-macro2]] 97 | who = "Nika Layzell " 98 | criteria = "safe-to-deploy" 99 | version = "1.0.39" 100 | notes = """ 101 | `proc-macro2` acts as either a thin(-ish) wrapper around the std-provided 102 | `proc_macro` crate, or as a fallback implementation of the crate, depending on 103 | where it is used. 104 | 105 | If using this crate on older versions of rustc (1.56 and earlier), it will 106 | temporarily replace the panic handler while initializing in order to detect if 107 | it is running within a `proc_macro`, which could lead to surprising behaviour. 108 | This should not be an issue for more recent compiler versions, which support 109 | `proc_macro::is_available()`. 110 | 111 | The `proc-macro2` crate's fallback behaviour is not identical to the complex 112 | behaviour of the rustc compiler (e.g. it does not perform unicode normalization 113 | for identifiers), however it behaves well enough for its intended use-case 114 | (tests and scripts processing rust code). 115 | 116 | `proc-macro2` does not use unsafe code, however exposes one `unsafe` API to 117 | allow bypassing checks in the fallback implementation when constructing 118 | `Literal` using `from_str_unchecked`. This was intended to only be used by the 119 | `quote!` macro, however it has been removed 120 | (https://github.com/dtolnay/quote/commit/f621fe64a8a501cae8e95ebd6848e637bbc79078), 121 | and is likely completely unused. Even when used, this API shouldn't be able to 122 | cause unsoundness. 123 | """ 124 | 125 | [[audits.firefox.audits.proc-macro2]] 126 | who = "Mike Hommey " 127 | criteria = "safe-to-deploy" 128 | delta = "1.0.39 -> 1.0.43" 129 | 130 | [[audits.firefox.audits.quote]] 131 | who = "Nika Layzell " 132 | criteria = "safe-to-deploy" 133 | version = "1.0.18" 134 | notes = """ 135 | `quote` is a utility crate used by proc-macros to generate TokenStreams 136 | conveniently from source code. The bulk of the logic is some complex 137 | interlocking `macro_rules!` macros which are used to parse and build the 138 | `TokenStream` within the proc-macro. 139 | 140 | This crate contains no unsafe code, and the internal logic, while difficult to 141 | read, is generally straightforward. I have audited the the quote macros, ident 142 | formatter, and runtime logic. 143 | """ 144 | 145 | [[audits.firefox.audits.quote]] 146 | who = "Mike Hommey " 147 | criteria = "safe-to-deploy" 148 | delta = "1.0.18 -> 1.0.21" 149 | 150 | [[audits.firefox.audits.redox_syscall]] 151 | who = "Mike Hommey " 152 | criteria = "safe-to-deploy" 153 | delta = "0.2.13 -> 0.2.16" 154 | 155 | [[audits.firefox.audits.rustc-hash]] 156 | who = "Bobby Holley " 157 | criteria = "safe-to-deploy" 158 | version = "1.1.0" 159 | notes = "Straightforward crate with no unsafe code, does what it says on the tin." 160 | 161 | [[audits.firefox.audits.serde]] 162 | who = "Mike Hommey " 163 | criteria = "safe-to-deploy" 164 | delta = "1.0.137 -> 1.0.143" 165 | 166 | [[audits.firefox.audits.serde]] 167 | who = "Mike Hommey " 168 | criteria = "safe-to-deploy" 169 | delta = "1.0.143 -> 1.0.144" 170 | 171 | [[audits.firefox.audits.serde_derive]] 172 | who = "Mike Hommey " 173 | criteria = "safe-to-deploy" 174 | delta = "1.0.137 -> 1.0.143" 175 | 176 | [[audits.firefox.audits.serde_derive]] 177 | who = "Mike Hommey " 178 | criteria = "safe-to-deploy" 179 | delta = "1.0.143 -> 1.0.144" 180 | 181 | [[audits.firefox.audits.smallvec]] 182 | who = "Mike Hommey " 183 | criteria = "safe-to-deploy" 184 | delta = "1.8.0 -> 1.9.0" 185 | 186 | [[audits.firefox.audits.syn]] 187 | who = "Mike Hommey " 188 | criteria = "safe-to-deploy" 189 | delta = "1.0.96 -> 1.0.99" 190 | 191 | [[audits.firefox.audits.synstructure]] 192 | who = "Nika Layzell " 193 | criteria = "safe-to-deploy" 194 | version = "0.12.6" 195 | notes = """ 196 | I am the primary author of the `synstructure` crate, and its current 197 | maintainer. The one use of `unsafe` is unnecessary, but documented and 198 | harmless. It will be removed in the next version. 199 | """ 200 | 201 | [[audits.firefox.audits.thiserror]] 202 | who = "Mike Hommey " 203 | criteria = "safe-to-deploy" 204 | delta = "1.0.31 -> 1.0.32" 205 | 206 | [[audits.firefox.audits.thiserror-impl]] 207 | who = "Mike Hommey " 208 | criteria = "safe-to-deploy" 209 | delta = "1.0.31 -> 1.0.32" 210 | 211 | [[audits.firefox.audits.tinystr]] 212 | who = "Zibi Braniecki " 213 | criteria = "safe-to-deploy" 214 | version = "0.3.4" 215 | 216 | [[audits.firefox.audits.tinystr]] 217 | who = "Zibi Braniecki " 218 | criteria = "safe-to-deploy" 219 | version = "0.6.0" 220 | 221 | [[audits.firefox.audits.unic-langid]] 222 | who = "Zibi Braniecki " 223 | criteria = "safe-to-deploy" 224 | version = "0.9.0" 225 | 226 | [[audits.firefox.audits.unic-langid-impl]] 227 | who = "Zibi Braniecki " 228 | criteria = "safe-to-deploy" 229 | version = "0.9.0" 230 | 231 | -------------------------------------------------------------------------------- /supply-chain/config.toml: -------------------------------------------------------------------------------- 1 | 2 | # cargo-vet config file 3 | 4 | [imports.firefox] 5 | url = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" 6 | 7 | [[exemptions.aead]] 8 | version = "0.3.2" 9 | criteria = "safe-to-deploy" 10 | 11 | [[exemptions.age-core]] 12 | version = "0.6.0" 13 | criteria = "safe-to-deploy" 14 | 15 | [[exemptions.base64]] 16 | version = "0.13.0" 17 | criteria = "safe-to-deploy" 18 | 19 | [[exemptions.bech32]] 20 | version = "0.8.1" 21 | criteria = "safe-to-deploy" 22 | 23 | [[exemptions.bitflags]] 24 | version = "1.3.2" 25 | criteria = "safe-to-deploy" 26 | 27 | [[exemptions.block-buffer]] 28 | version = "0.9.0" 29 | criteria = "safe-to-deploy" 30 | 31 | [[exemptions.bumpalo]] 32 | version = "3.7.0" 33 | criteria = "safe-to-deploy" 34 | 35 | [[exemptions.byteorder]] 36 | version = "1.4.3" 37 | criteria = "safe-to-deploy" 38 | 39 | [[exemptions.chacha20]] 40 | version = "0.8.2" 41 | criteria = "safe-to-deploy" 42 | 43 | [[exemptions.chacha20poly1305]] 44 | version = "0.7.1" 45 | criteria = "safe-to-deploy" 46 | 47 | [[exemptions.cipher]] 48 | version = "0.3.0" 49 | criteria = "safe-to-deploy" 50 | 51 | [[exemptions.cookie-factory]] 52 | version = "0.3.2" 53 | criteria = "safe-to-deploy" 54 | 55 | [[exemptions.cpufeatures]] 56 | version = "0.2.1" 57 | criteria = "safe-to-deploy" 58 | 59 | [[exemptions.curve25519-dalek]] 60 | version = "3.2.0" 61 | criteria = "safe-to-deploy" 62 | 63 | [[exemptions.dashmap]] 64 | version = "4.0.2" 65 | criteria = "safe-to-deploy" 66 | 67 | [[exemptions.digest]] 68 | version = "0.9.0" 69 | criteria = "safe-to-deploy" 70 | 71 | [[exemptions.find-crate]] 72 | version = "0.6.3" 73 | criteria = "safe-to-deploy" 74 | 75 | [[exemptions.generic-array]] 76 | version = "0.14.4" 77 | criteria = "safe-to-deploy" 78 | 79 | [[exemptions.hkdf]] 80 | version = "0.11.0" 81 | criteria = "safe-to-deploy" 82 | 83 | [[exemptions.hmac]] 84 | version = "0.11.0" 85 | criteria = "safe-to-deploy" 86 | 87 | [[exemptions.i18n-config]] 88 | version = "0.4.2" 89 | criteria = "safe-to-deploy" 90 | 91 | [[exemptions.i18n-embed]] 92 | version = "0.12.1" 93 | criteria = "safe-to-deploy" 94 | 95 | [[exemptions.i18n-embed-fl]] 96 | version = "0.5.0" 97 | criteria = "safe-to-deploy" 98 | 99 | [[exemptions.i18n-embed-impl]] 100 | version = "0.7.0" 101 | criteria = "safe-to-deploy" 102 | 103 | [[exemptions.js-sys]] 104 | version = "0.3.53" 105 | criteria = "safe-to-deploy" 106 | 107 | [[exemptions.lazy_static]] 108 | version = "1.4.0" 109 | criteria = "safe-to-deploy" 110 | 111 | [[exemptions.libc]] 112 | version = "0.2.101" 113 | criteria = "safe-to-deploy" 114 | 115 | [[exemptions.lock_api]] 116 | version = "0.4.5" 117 | criteria = "safe-to-deploy" 118 | 119 | [[exemptions.memchr]] 120 | version = "2.3.4" 121 | criteria = "safe-to-deploy" 122 | 123 | [[exemptions.minimal-lexical]] 124 | version = "0.2.1" 125 | criteria = "safe-to-deploy" 126 | 127 | [[exemptions.nom]] 128 | version = "6.2.1" 129 | criteria = "safe-to-deploy" 130 | 131 | [[exemptions.once_cell]] 132 | version = "1.15.0" 133 | criteria = "safe-to-deploy" 134 | 135 | [[exemptions.opaque-debug]] 136 | version = "0.3.0" 137 | criteria = "safe-to-deploy" 138 | 139 | [[exemptions.parking_lot]] 140 | version = "0.11.2" 141 | criteria = "safe-to-deploy" 142 | 143 | [[exemptions.parking_lot_core]] 144 | version = "0.8.5" 145 | criteria = "safe-to-deploy" 146 | 147 | [[exemptions.pbkdf2]] 148 | version = "0.8.0" 149 | criteria = "safe-to-deploy" 150 | 151 | [[exemptions.pin-project]] 152 | version = "1.0.12" 153 | criteria = "safe-to-deploy" 154 | 155 | [[exemptions.pin-project-internal]] 156 | version = "1.0.8" 157 | criteria = "safe-to-deploy" 158 | 159 | [[exemptions.poly1305]] 160 | version = "0.6.2" 161 | criteria = "safe-to-deploy" 162 | 163 | [[exemptions.ppv-lite86]] 164 | version = "0.2.10" 165 | criteria = "safe-to-deploy" 166 | 167 | [[exemptions.proc-macro-error]] 168 | version = "1.0.4" 169 | criteria = "safe-to-deploy" 170 | 171 | [[exemptions.proc-macro-error-attr]] 172 | version = "1.0.4" 173 | criteria = "safe-to-deploy" 174 | 175 | [[exemptions.rand]] 176 | version = "0.7.3" 177 | criteria = "safe-to-deploy" 178 | 179 | [[exemptions.rand_chacha]] 180 | version = "0.2.2" 181 | criteria = "safe-to-deploy" 182 | 183 | [[exemptions.rand_core]] 184 | version = "0.5.1" 185 | criteria = "safe-to-deploy" 186 | 187 | [[exemptions.rand_hc]] 188 | version = "0.2.0" 189 | criteria = "safe-to-deploy" 190 | 191 | [[exemptions.redox_syscall]] 192 | version = "0.2.13" 193 | criteria = "safe-to-deploy" 194 | 195 | [[exemptions.rust-embed]] 196 | version = "5.9.0" 197 | criteria = "safe-to-deploy" 198 | 199 | [[exemptions.rust-embed-impl]] 200 | version = "5.9.0" 201 | criteria = "safe-to-deploy" 202 | 203 | [[exemptions.rust-embed-utils]] 204 | version = "5.1.0" 205 | criteria = "safe-to-deploy" 206 | 207 | [[exemptions.salsa20]] 208 | version = "0.8.1" 209 | criteria = "safe-to-deploy" 210 | 211 | [[exemptions.same-file]] 212 | version = "1.0.6" 213 | criteria = "safe-to-deploy" 214 | 215 | [[exemptions.scopeguard]] 216 | version = "1.1.0" 217 | criteria = "safe-to-deploy" 218 | 219 | [[exemptions.scrypt]] 220 | version = "0.7.0" 221 | criteria = "safe-to-deploy" 222 | 223 | [[exemptions.self_cell]] 224 | version = "0.10.2" 225 | criteria = "safe-to-deploy" 226 | 227 | [[exemptions.serde]] 228 | version = "1.0.130" 229 | criteria = "safe-to-deploy" 230 | 231 | [[exemptions.serde_derive]] 232 | version = "1.0.130" 233 | criteria = "safe-to-deploy" 234 | 235 | [[exemptions.sha2]] 236 | version = "0.9.6" 237 | criteria = "safe-to-deploy" 238 | 239 | [[exemptions.smallvec]] 240 | version = "1.6.1" 241 | criteria = "safe-to-deploy" 242 | 243 | [[exemptions.strsim]] 244 | version = "0.10.0" 245 | criteria = "safe-to-deploy" 246 | 247 | [[exemptions.subtle]] 248 | version = "2.4.1" 249 | criteria = "safe-to-deploy" 250 | 251 | [[exemptions.syn]] 252 | version = "1.0.100" 253 | criteria = "safe-to-deploy" 254 | 255 | [[exemptions.thiserror]] 256 | version = "1.0.28" 257 | criteria = "safe-to-deploy" 258 | 259 | [[exemptions.thiserror-impl]] 260 | version = "1.0.28" 261 | criteria = "safe-to-deploy" 262 | 263 | [[exemptions.toml]] 264 | version = "0.5.8" 265 | criteria = "safe-to-deploy" 266 | 267 | [[exemptions.type-map]] 268 | version = "0.4.0" 269 | criteria = "safe-to-deploy" 270 | 271 | [[exemptions.typenum]] 272 | version = "1.13.0" 273 | criteria = "safe-to-deploy" 274 | 275 | [[exemptions.universal-hash]] 276 | version = "0.4.1" 277 | criteria = "safe-to-deploy" 278 | 279 | [[exemptions.version_check]] 280 | version = "0.9.3" 281 | criteria = "safe-to-deploy" 282 | 283 | [[exemptions.walkdir]] 284 | version = "2.3.2" 285 | criteria = "safe-to-deploy" 286 | 287 | [[exemptions.wasi]] 288 | version = "0.9.0+wasi-snapshot-preview1" 289 | criteria = "safe-to-deploy" 290 | 291 | [[exemptions.wasi]] 292 | version = "0.11.0+wasi-snapshot-preview1" 293 | criteria = "safe-to-deploy" 294 | 295 | [[exemptions.wasm-bindgen]] 296 | version = "0.2.76" 297 | criteria = "safe-to-deploy" 298 | 299 | [[exemptions.wasm-bindgen-backend]] 300 | version = "0.2.76" 301 | criteria = "safe-to-deploy" 302 | 303 | [[exemptions.wasm-bindgen-macro]] 304 | version = "0.2.76" 305 | criteria = "safe-to-deploy" 306 | 307 | [[exemptions.wasm-bindgen-macro-support]] 308 | version = "0.2.76" 309 | criteria = "safe-to-deploy" 310 | 311 | [[exemptions.wasm-bindgen-shared]] 312 | version = "0.2.76" 313 | criteria = "safe-to-deploy" 314 | 315 | [[exemptions.web-sys]] 316 | version = "0.3.53" 317 | criteria = "safe-to-deploy" 318 | 319 | [[exemptions.winapi]] 320 | version = "0.3.9" 321 | criteria = "safe-to-deploy" 322 | 323 | [[exemptions.winapi-i686-pc-windows-gnu]] 324 | version = "0.4.0" 325 | criteria = "safe-to-deploy" 326 | 327 | [[exemptions.winapi-util]] 328 | version = "0.1.5" 329 | criteria = "safe-to-deploy" 330 | 331 | [[exemptions.winapi-x86_64-pc-windows-gnu]] 332 | version = "0.4.0" 333 | criteria = "safe-to-deploy" 334 | 335 | [[exemptions.windows-sys]] 336 | version = "0.36.1" 337 | criteria = "safe-to-deploy" 338 | 339 | [[exemptions.windows_aarch64_msvc]] 340 | version = "0.36.1" 341 | criteria = "safe-to-deploy" 342 | 343 | [[exemptions.windows_i686_gnu]] 344 | version = "0.36.1" 345 | criteria = "safe-to-deploy" 346 | 347 | [[exemptions.windows_i686_msvc]] 348 | version = "0.36.1" 349 | criteria = "safe-to-deploy" 350 | 351 | [[exemptions.windows_x86_64_gnu]] 352 | version = "0.36.1" 353 | criteria = "safe-to-deploy" 354 | 355 | [[exemptions.windows_x86_64_msvc]] 356 | version = "0.36.1" 357 | criteria = "safe-to-deploy" 358 | 359 | [[exemptions.x25519-dalek]] 360 | version = "1.1.1" 361 | criteria = "safe-to-deploy" 362 | 363 | -------------------------------------------------------------------------------- /LICENSE_APACHE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | -------------------------------------------------------------------------------- /supply-chain/audits.toml: -------------------------------------------------------------------------------- 1 | 2 | # cargo-vet audits file 3 | 4 | [[audits.aead]] 5 | who = "Kan-Ru Chen " 6 | criteria = "safe-to-deploy" 7 | delta = "0.3.2 -> 0.4.3" 8 | 9 | [[audits.age]] 10 | who = "Kan-Ru Chen " 11 | criteria = "safe-to-deploy" 12 | version = "0.6.0" 13 | 14 | [[audits.age]] 15 | who = "Kan-Ru Chen " 16 | criteria = "safe-to-deploy" 17 | delta = "0.6.0 -> 0.8.1" 18 | 19 | [[audits.age-core]] 20 | who = "Kan-Ru Chen " 21 | criteria = "safe-to-deploy" 22 | delta = "0.6.0 -> 0.8.0" 23 | 24 | [[audits.block-buffer]] 25 | who = "Kan-Ru Chen " 26 | criteria = "safe-to-deploy" 27 | delta = "0.9.0 -> 0.10.3" 28 | 29 | [[audits.bumpalo]] 30 | who = "Kan-Ru Chen " 31 | criteria = "safe-to-deploy" 32 | delta = "3.7.0 -> 3.11.0" 33 | 34 | [[audits.cfg-if]] 35 | who = "Kan-Ru Chen " 36 | criteria = "safe-to-deploy" 37 | version = "0.1.10" 38 | 39 | [[audits.cfg-if]] 40 | who = "Kan-Ru Chen " 41 | criteria = "safe-to-deploy" 42 | version = "0.1.10" 43 | 44 | [[audits.cfg-if]] 45 | who = "Kan-Ru Chen " 46 | criteria = "safe-to-deploy" 47 | version = "0.1.10" 48 | 49 | [[audits.cfg-if]] 50 | who = "Kan-Ru Chen " 51 | criteria = "safe-to-deploy" 52 | delta = "0.1.10 -> 1.0.0" 53 | 54 | [[audits.chacha20poly1305]] 55 | who = "Kan-Ru Chen " 56 | criteria = "safe-to-deploy" 57 | delta = "0.7.1 -> 0.9.1" 58 | 59 | [[audits.cipher]] 60 | who = "Kan-Ru Chen " 61 | criteria = "safe-to-deploy" 62 | delta = "0.3.0 -> 0.4.3" 63 | 64 | [[audits.console_error_panic_hook]] 65 | who = "Kan-Ru Chen " 66 | criteria = "safe-to-run" 67 | version = "0.1.6" 68 | 69 | [[audits.console_error_panic_hook]] 70 | who = "Kan-Ru Chen " 71 | criteria = "safe-to-run" 72 | delta = "0.1.6 -> 0.1.7" 73 | 74 | [[audits.cpufeatures]] 75 | who = "Kan-Ru Chen " 76 | criteria = "safe-to-deploy" 77 | delta = "0.2.1 -> 0.2.5" 78 | 79 | [[audits.crypto-common]] 80 | who = "Kan-Ru Chen " 81 | criteria = "safe-to-deploy" 82 | version = "0.1.3" 83 | 84 | [[audits.dashmap]] 85 | who = "Kan-Ru Chen " 86 | criteria = "safe-to-deploy" 87 | delta = "4.0.2 -> 5.4.0" 88 | 89 | [[audits.digest]] 90 | who = "Kan-Ru Chen " 91 | criteria = "safe-to-deploy" 92 | delta = "0.9.0 -> 0.10.5" 93 | 94 | [[audits.generic-array]] 95 | who = "Kan-Ru Chen " 96 | criteria = "safe-to-deploy" 97 | delta = "0.14.4 -> 0.14.5" 98 | 99 | [[audits.getrandom]] 100 | who = "Kan-Ru Chen " 101 | criteria = "safe-to-deploy" 102 | version = "0.1.16" 103 | 104 | [[audits.getrandom]] 105 | who = "Kan-Ru Chen " 106 | criteria = "safe-to-deploy" 107 | delta = "0.1.16 -> 0.2.6" 108 | 109 | [[audits.hkdf]] 110 | who = "Kan-Ru Chen " 111 | criteria = "safe-to-deploy" 112 | delta = "0.11.0 -> 0.12.3" 113 | 114 | [[audits.hmac]] 115 | who = "Kan-Ru Chen " 116 | criteria = "safe-to-deploy" 117 | delta = "0.11.0 -> 0.12.1" 118 | 119 | [[audits.i18n-embed]] 120 | who = "Kan-Ru Chen " 121 | criteria = "safe-to-deploy" 122 | delta = "0.12.1 -> 0.13.4" 123 | 124 | [[audits.i18n-embed-fl]] 125 | who = "Kan-Ru Chen " 126 | criteria = "safe-to-deploy" 127 | delta = "0.5.0 -> 0.6.4" 128 | 129 | [[audits.i18n-embed-impl]] 130 | who = "Kan-Ru Chen " 131 | criteria = "safe-to-deploy" 132 | delta = "0.7.0 -> 0.8.0" 133 | 134 | [[audits.inout]] 135 | who = "Kan-Ru Chen " 136 | criteria = "safe-to-deploy" 137 | version = "0.1.3" 138 | 139 | [[audits.io_tee]] 140 | who = "Kan-Ru Chen " 141 | criteria = "safe-to-deploy" 142 | version = "0.1.1" 143 | 144 | [[audits.js-sys]] 145 | who = "Kan-Ru Chen " 146 | criteria = "safe-to-deploy" 147 | delta = "0.3.53 -> 0.3.60" 148 | 149 | [[audits.libc]] 150 | who = "Kan-Ru Chen " 151 | criteria = "safe-to-deploy" 152 | delta = "0.2.101 -> 0.2.133" 153 | 154 | [[audits.lock_api]] 155 | who = "Kan-Ru Chen " 156 | criteria = "safe-to-deploy" 157 | delta = "0.4.5 -> 0.4.9" 158 | 159 | [[audits.nom]] 160 | who = "Kan-Ru Chen " 161 | criteria = "safe-to-deploy" 162 | delta = "6.2.1 -> 7.1.1" 163 | 164 | [[audits.parking_lot]] 165 | who = "Kan-Ru Chen " 166 | criteria = "safe-to-deploy" 167 | delta = "0.11.2 -> 0.12.1" 168 | 169 | [[audits.parking_lot_core]] 170 | who = "Kan-Ru Chen " 171 | criteria = "safe-to-deploy" 172 | delta = "0.8.5 -> 0.9.3" 173 | 174 | [[audits.pbkdf2]] 175 | who = "Kan-Ru Chen " 176 | criteria = "safe-to-deploy" 177 | delta = "0.8.0 -> 0.10.1" 178 | 179 | [[audits.pin-project-internal]] 180 | who = "Kan-Ru Chen " 181 | criteria = "safe-to-deploy" 182 | delta = "1.0.8 -> 1.0.12" 183 | 184 | [[audits.poly1305]] 185 | who = "Kan-Ru Chen " 186 | criteria = "safe-to-deploy" 187 | delta = "0.6.2 -> 0.7.2" 188 | 189 | [[audits.ppv-lite86]] 190 | who = "Kan-Ru Chen " 191 | criteria = "safe-to-deploy" 192 | delta = "0.2.10 -> 0.2.16" 193 | 194 | [[audits.proc-macro2]] 195 | who = "Kan-Ru Chen " 196 | criteria = "safe-to-deploy" 197 | delta = "1.0.39 -> 1.0.28" 198 | 199 | [[audits.quote]] 200 | who = "Kan-Ru Chen " 201 | criteria = "safe-to-deploy" 202 | delta = "1.0.18 -> 1.0.9" 203 | 204 | [[audits.rand]] 205 | who = "Kan-Ru Chen " 206 | criteria = "safe-to-deploy" 207 | delta = "0.7.3 -> 0.8.5" 208 | 209 | [[audits.rand_chacha]] 210 | who = "Kan-Ru Chen " 211 | criteria = "safe-to-deploy" 212 | delta = "0.2.2 -> 0.3.1" 213 | 214 | [[audits.rand_core]] 215 | who = "Kan-Ru Chen " 216 | criteria = "safe-to-deploy" 217 | delta = "0.5.1 -> 0.6.4" 218 | 219 | [[audits.rust-embed]] 220 | who = "Kan-Ru Chen " 221 | criteria = "safe-to-deploy" 222 | delta = "5.9.0 -> 6.4.1" 223 | 224 | [[audits.rust-embed-impl]] 225 | who = "Kan-Ru Chen " 226 | criteria = "safe-to-deploy" 227 | delta = "5.9.0 -> 6.3.0" 228 | 229 | [[audits.rust-embed-utils]] 230 | who = "Kan-Ru Chen " 231 | criteria = "safe-to-deploy" 232 | delta = "5.1.0 -> 7.3.0" 233 | 234 | [[audits.salsa20]] 235 | who = "Kan-Ru Chen " 236 | criteria = "safe-to-deploy" 237 | delta = "0.8.1 -> 0.10.2" 238 | 239 | [[audits.scoped-tls]] 240 | who = "Kan-Ru Chen " 241 | criteria = "safe-to-run" 242 | version = "1.0.0" 243 | 244 | [[audits.scrypt]] 245 | who = "Kan-Ru Chen " 246 | criteria = "safe-to-deploy" 247 | delta = "0.7.0 -> 0.9.0" 248 | 249 | [[audits.secrecy]] 250 | who = "Kan-Ru Chen " 251 | criteria = "safe-to-deploy" 252 | version = "0.7.0" 253 | 254 | [[audits.secrecy]] 255 | who = "Kan-Ru Chen " 256 | criteria = "safe-to-deploy" 257 | delta = "0.7.0 -> 0.8.0" 258 | 259 | [[audits.serde]] 260 | who = "Kan-Ru Chen " 261 | criteria = "safe-to-deploy" 262 | delta = "1.0.130 -> 1.0.137" 263 | 264 | [[audits.serde_derive]] 265 | who = "Kan-Ru Chen " 266 | criteria = "safe-to-deploy" 267 | delta = "1.0.130 -> 1.0.137" 268 | 269 | [[audits.sha2]] 270 | who = "Kan-Ru Chen " 271 | criteria = "safe-to-deploy" 272 | delta = "0.9.6 -> 0.9.9" 273 | 274 | [[audits.sha2]] 275 | who = "Kan-Ru Chen " 276 | criteria = "safe-to-deploy" 277 | delta = "0.9.9 -> 0.10.6" 278 | 279 | [[audits.smallvec]] 280 | who = "Kan-Ru Chen " 281 | criteria = "safe-to-deploy" 282 | delta = "1.6.1 -> 1.8.0" 283 | 284 | [[audits.synstructure]] 285 | who = "Kan-Ru Chen " 286 | criteria = "safe-to-deploy" 287 | delta = "0.12.6 -> 0.12.5" 288 | 289 | [[audits.thiserror]] 290 | who = "Kan-Ru Chen " 291 | criteria = "safe-to-deploy" 292 | delta = "1.0.28 -> 1.0.35" 293 | 294 | [[audits.thiserror-impl]] 295 | who = "Kan-Ru Chen " 296 | criteria = "safe-to-deploy" 297 | delta = "1.0.28 -> 1.0.35" 298 | 299 | [[audits.toml]] 300 | who = "Kan-Ru Chen " 301 | criteria = "safe-to-deploy" 302 | delta = "0.5.8 -> 0.5.9" 303 | 304 | [[audits.typenum]] 305 | who = "Kan-Ru Chen " 306 | criteria = "safe-to-deploy" 307 | delta = "1.13.0 -> 1.15.0" 308 | 309 | [[audits.unicode-ident]] 310 | who = "Kan-Ru Chen " 311 | criteria = "safe-to-deploy" 312 | version = "1.0.4" 313 | 314 | [[audits.unicode-xid]] 315 | who = "Kan-Ru Chen " 316 | criteria = "safe-to-deploy" 317 | version = "0.2.2" 318 | 319 | [[audits.unicode-xid]] 320 | who = "Kan-Ru Chen " 321 | criteria = "safe-to-deploy" 322 | delta = "0.2.2 -> 0.2.4" 323 | 324 | [[audits.version_check]] 325 | who = "Kan-Ru Chen " 326 | criteria = "safe-to-deploy" 327 | delta = "0.9.3 -> 0.9.4" 328 | 329 | [[audits.wasm-bindgen]] 330 | who = "Kan-Ru Chen " 331 | criteria = "safe-to-deploy" 332 | delta = "0.2.76 -> 0.2.83" 333 | 334 | [[audits.wasm-bindgen-backend]] 335 | who = "Kan-Ru Chen " 336 | criteria = "safe-to-deploy" 337 | delta = "0.2.76 -> 0.2.83" 338 | 339 | [[audits.wasm-bindgen-futures]] 340 | who = "Kan-Ru Chen " 341 | criteria = "safe-to-run" 342 | version = "0.4.26" 343 | 344 | [[audits.wasm-bindgen-futures]] 345 | who = "Kan-Ru Chen " 346 | criteria = "safe-to-run" 347 | delta = "0.4.26 -> 0.4.33" 348 | 349 | [[audits.wasm-bindgen-macro]] 350 | who = "Kan-Ru Chen " 351 | criteria = "safe-to-deploy" 352 | delta = "0.2.76 -> 0.2.83" 353 | 354 | [[audits.wasm-bindgen-macro-support]] 355 | who = "Kan-Ru Chen " 356 | criteria = "safe-to-deploy" 357 | delta = "0.2.76 -> 0.2.83" 358 | 359 | [[audits.wasm-bindgen-shared]] 360 | who = "Kan-Ru Chen " 361 | criteria = "safe-to-deploy" 362 | delta = "0.2.76 -> 0.2.83" 363 | 364 | [[audits.wasm-bindgen-test]] 365 | who = "Kan-Ru Chen " 366 | criteria = "safe-to-run" 367 | version = "0.3.26" 368 | 369 | [[audits.wasm-bindgen-test]] 370 | who = "Kan-Ru Chen " 371 | criteria = "safe-to-run" 372 | delta = "0.3.26 -> 0.3.33" 373 | 374 | [[audits.wasm-bindgen-test-macro]] 375 | who = "Kan-Ru Chen " 376 | criteria = "safe-to-run" 377 | version = "0.3.26" 378 | 379 | [[audits.wasm-bindgen-test-macro]] 380 | who = "Kan-Ru Chen " 381 | criteria = "safe-to-run" 382 | delta = "0.3.26 -> 0.3.33" 383 | 384 | [[audits.web-sys]] 385 | who = "Kan-Ru Chen " 386 | criteria = "safe-to-deploy" 387 | delta = "0.3.53 -> 0.3.60" 388 | 389 | [[audits.zeroize]] 390 | who = "Kan-Ru Chen " 391 | criteria = "safe-to-deploy" 392 | version = "1.4.1" 393 | 394 | [[audits.zeroize]] 395 | who = "Kan-Ru Chen " 396 | criteria = "safe-to-deploy" 397 | delta = "1.4.1 -> 1.5.7" 398 | 399 | [[audits.zeroize_derive]] 400 | who = "Kan-Ru Chen " 401 | criteria = "safe-to-deploy" 402 | version = "1.1.0" 403 | 404 | [[audits.zeroize_derive]] 405 | who = "Kan-Ru Chen " 406 | criteria = "safe-to-deploy" 407 | delta = "1.1.0 -> 1.3.2" 408 | 409 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "aead" 7 | version = "0.5.2" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" 10 | dependencies = [ 11 | "crypto-common", 12 | "generic-array", 13 | ] 14 | 15 | [[package]] 16 | name = "age" 17 | version = "0.9.2" 18 | source = "registry+https://github.com/rust-lang/crates.io-index" 19 | checksum = "6d55a4d912c80a92762ffd1c884065f3f9646467d22c95390e824a0ff7def472" 20 | dependencies = [ 21 | "age-core", 22 | "base64", 23 | "bech32", 24 | "chacha20poly1305", 25 | "cookie-factory", 26 | "hkdf", 27 | "hmac", 28 | "i18n-embed", 29 | "i18n-embed-fl", 30 | "lazy_static", 31 | "nom", 32 | "pin-project", 33 | "rand 0.7.3", 34 | "rand 0.8.5", 35 | "rust-embed", 36 | "scrypt", 37 | "sha2", 38 | "subtle", 39 | "web-sys", 40 | "x25519-dalek", 41 | "zeroize", 42 | ] 43 | 44 | [[package]] 45 | name = "age-core" 46 | version = "0.9.0" 47 | source = "registry+https://github.com/rust-lang/crates.io-index" 48 | checksum = "e3d2e815ac879dc23c1139e720d21c6cd4d1276345c772587285d965a69b8f32" 49 | dependencies = [ 50 | "base64", 51 | "chacha20poly1305", 52 | "cookie-factory", 53 | "hkdf", 54 | "io_tee", 55 | "nom", 56 | "rand 0.8.5", 57 | "secrecy", 58 | "sha2", 59 | ] 60 | 61 | [[package]] 62 | name = "arc-swap" 63 | version = "1.6.0" 64 | source = "registry+https://github.com/rust-lang/crates.io-index" 65 | checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" 66 | 67 | [[package]] 68 | name = "autocfg" 69 | version = "1.1.0" 70 | source = "registry+https://github.com/rust-lang/crates.io-index" 71 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 72 | 73 | [[package]] 74 | name = "base64" 75 | version = "0.13.1" 76 | source = "registry+https://github.com/rust-lang/crates.io-index" 77 | checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" 78 | 79 | [[package]] 80 | name = "bech32" 81 | version = "0.9.1" 82 | source = "registry+https://github.com/rust-lang/crates.io-index" 83 | checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" 84 | 85 | [[package]] 86 | name = "bitflags" 87 | version = "1.3.2" 88 | source = "registry+https://github.com/rust-lang/crates.io-index" 89 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 90 | 91 | [[package]] 92 | name = "block-buffer" 93 | version = "0.10.4" 94 | source = "registry+https://github.com/rust-lang/crates.io-index" 95 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 96 | dependencies = [ 97 | "generic-array", 98 | ] 99 | 100 | [[package]] 101 | name = "bumpalo" 102 | version = "3.14.0" 103 | source = "registry+https://github.com/rust-lang/crates.io-index" 104 | checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" 105 | 106 | [[package]] 107 | name = "byteorder" 108 | version = "1.5.0" 109 | source = "registry+https://github.com/rust-lang/crates.io-index" 110 | checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 111 | 112 | [[package]] 113 | name = "cfg-if" 114 | version = "1.0.0" 115 | source = "registry+https://github.com/rust-lang/crates.io-index" 116 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 117 | 118 | [[package]] 119 | name = "chacha20" 120 | version = "0.9.1" 121 | source = "registry+https://github.com/rust-lang/crates.io-index" 122 | checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" 123 | dependencies = [ 124 | "cfg-if", 125 | "cipher", 126 | "cpufeatures", 127 | ] 128 | 129 | [[package]] 130 | name = "chacha20poly1305" 131 | version = "0.10.1" 132 | source = "registry+https://github.com/rust-lang/crates.io-index" 133 | checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" 134 | dependencies = [ 135 | "aead", 136 | "chacha20", 137 | "cipher", 138 | "poly1305", 139 | "zeroize", 140 | ] 141 | 142 | [[package]] 143 | name = "cipher" 144 | version = "0.4.4" 145 | source = "registry+https://github.com/rust-lang/crates.io-index" 146 | checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" 147 | dependencies = [ 148 | "crypto-common", 149 | "inout", 150 | "zeroize", 151 | ] 152 | 153 | [[package]] 154 | name = "console_error_panic_hook" 155 | version = "0.1.7" 156 | source = "registry+https://github.com/rust-lang/crates.io-index" 157 | checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" 158 | dependencies = [ 159 | "cfg-if", 160 | "wasm-bindgen", 161 | ] 162 | 163 | [[package]] 164 | name = "cookie-factory" 165 | version = "0.3.2" 166 | source = "registry+https://github.com/rust-lang/crates.io-index" 167 | checksum = "396de984970346b0d9e93d1415082923c679e5ae5c3ee3dcbd104f5610af126b" 168 | 169 | [[package]] 170 | name = "cpufeatures" 171 | version = "0.2.12" 172 | source = "registry+https://github.com/rust-lang/crates.io-index" 173 | checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" 174 | dependencies = [ 175 | "libc", 176 | ] 177 | 178 | [[package]] 179 | name = "crypto-common" 180 | version = "0.1.6" 181 | source = "registry+https://github.com/rust-lang/crates.io-index" 182 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 183 | dependencies = [ 184 | "generic-array", 185 | "typenum", 186 | ] 187 | 188 | [[package]] 189 | name = "curve25519-dalek" 190 | version = "3.2.0" 191 | source = "registry+https://github.com/rust-lang/crates.io-index" 192 | checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" 193 | dependencies = [ 194 | "byteorder", 195 | "digest 0.9.0", 196 | "rand_core 0.5.1", 197 | "subtle", 198 | "zeroize", 199 | ] 200 | 201 | [[package]] 202 | name = "dashmap" 203 | version = "5.5.3" 204 | source = "registry+https://github.com/rust-lang/crates.io-index" 205 | checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" 206 | dependencies = [ 207 | "cfg-if", 208 | "hashbrown", 209 | "lock_api", 210 | "once_cell", 211 | "parking_lot_core", 212 | ] 213 | 214 | [[package]] 215 | name = "digest" 216 | version = "0.9.0" 217 | source = "registry+https://github.com/rust-lang/crates.io-index" 218 | checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" 219 | dependencies = [ 220 | "generic-array", 221 | ] 222 | 223 | [[package]] 224 | name = "digest" 225 | version = "0.10.7" 226 | source = "registry+https://github.com/rust-lang/crates.io-index" 227 | checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 228 | dependencies = [ 229 | "block-buffer", 230 | "crypto-common", 231 | "subtle", 232 | ] 233 | 234 | [[package]] 235 | name = "displaydoc" 236 | version = "0.2.4" 237 | source = "registry+https://github.com/rust-lang/crates.io-index" 238 | checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" 239 | dependencies = [ 240 | "proc-macro2", 241 | "quote", 242 | "syn 2.0.48", 243 | ] 244 | 245 | [[package]] 246 | name = "equivalent" 247 | version = "1.0.1" 248 | source = "registry+https://github.com/rust-lang/crates.io-index" 249 | checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" 250 | 251 | [[package]] 252 | name = "find-crate" 253 | version = "0.6.3" 254 | source = "registry+https://github.com/rust-lang/crates.io-index" 255 | checksum = "59a98bbaacea1c0eb6a0876280051b892eb73594fd90cf3b20e9c817029c57d2" 256 | dependencies = [ 257 | "toml 0.5.11", 258 | ] 259 | 260 | [[package]] 261 | name = "fluent" 262 | version = "0.16.0" 263 | source = "registry+https://github.com/rust-lang/crates.io-index" 264 | checksum = "61f69378194459db76abd2ce3952b790db103ceb003008d3d50d97c41ff847a7" 265 | dependencies = [ 266 | "fluent-bundle", 267 | "unic-langid", 268 | ] 269 | 270 | [[package]] 271 | name = "fluent-bundle" 272 | version = "0.15.2" 273 | source = "registry+https://github.com/rust-lang/crates.io-index" 274 | checksum = "e242c601dec9711505f6d5bbff5bedd4b61b2469f2e8bb8e57ee7c9747a87ffd" 275 | dependencies = [ 276 | "fluent-langneg", 277 | "fluent-syntax", 278 | "intl-memoizer", 279 | "intl_pluralrules", 280 | "rustc-hash", 281 | "self_cell 0.10.3", 282 | "smallvec", 283 | "unic-langid", 284 | ] 285 | 286 | [[package]] 287 | name = "fluent-langneg" 288 | version = "0.13.0" 289 | source = "registry+https://github.com/rust-lang/crates.io-index" 290 | checksum = "2c4ad0989667548f06ccd0e306ed56b61bd4d35458d54df5ec7587c0e8ed5e94" 291 | dependencies = [ 292 | "unic-langid", 293 | ] 294 | 295 | [[package]] 296 | name = "fluent-syntax" 297 | version = "0.11.0" 298 | source = "registry+https://github.com/rust-lang/crates.io-index" 299 | checksum = "c0abed97648395c902868fee9026de96483933faa54ea3b40d652f7dfe61ca78" 300 | dependencies = [ 301 | "thiserror", 302 | ] 303 | 304 | [[package]] 305 | name = "generic-array" 306 | version = "0.14.7" 307 | source = "registry+https://github.com/rust-lang/crates.io-index" 308 | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 309 | dependencies = [ 310 | "typenum", 311 | "version_check", 312 | ] 313 | 314 | [[package]] 315 | name = "getrandom" 316 | version = "0.1.16" 317 | source = "registry+https://github.com/rust-lang/crates.io-index" 318 | checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" 319 | dependencies = [ 320 | "cfg-if", 321 | "js-sys", 322 | "libc", 323 | "wasi 0.9.0+wasi-snapshot-preview1", 324 | "wasm-bindgen", 325 | ] 326 | 327 | [[package]] 328 | name = "getrandom" 329 | version = "0.2.12" 330 | source = "registry+https://github.com/rust-lang/crates.io-index" 331 | checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" 332 | dependencies = [ 333 | "cfg-if", 334 | "js-sys", 335 | "libc", 336 | "wasi 0.11.0+wasi-snapshot-preview1", 337 | "wasm-bindgen", 338 | ] 339 | 340 | [[package]] 341 | name = "hashbrown" 342 | version = "0.14.3" 343 | source = "registry+https://github.com/rust-lang/crates.io-index" 344 | checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" 345 | 346 | [[package]] 347 | name = "hkdf" 348 | version = "0.12.4" 349 | source = "registry+https://github.com/rust-lang/crates.io-index" 350 | checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" 351 | dependencies = [ 352 | "hmac", 353 | ] 354 | 355 | [[package]] 356 | name = "hmac" 357 | version = "0.12.1" 358 | source = "registry+https://github.com/rust-lang/crates.io-index" 359 | checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" 360 | dependencies = [ 361 | "digest 0.10.7", 362 | ] 363 | 364 | [[package]] 365 | name = "i18n-config" 366 | version = "0.4.6" 367 | source = "registry+https://github.com/rust-lang/crates.io-index" 368 | checksum = "0c9ce3c48cbc21fd5b22b9331f32b5b51f6ad85d969b99e793427332e76e7640" 369 | dependencies = [ 370 | "log", 371 | "serde", 372 | "serde_derive", 373 | "thiserror", 374 | "toml 0.8.8", 375 | "unic-langid", 376 | ] 377 | 378 | [[package]] 379 | name = "i18n-embed" 380 | version = "0.13.9" 381 | source = "registry+https://github.com/rust-lang/crates.io-index" 382 | checksum = "92a86226a7a16632de6723449ee5fe70bac5af718bc642ee9ca2f0f6e14fa1fa" 383 | dependencies = [ 384 | "arc-swap", 385 | "fluent", 386 | "fluent-langneg", 387 | "fluent-syntax", 388 | "i18n-embed-impl", 389 | "intl-memoizer", 390 | "lazy_static", 391 | "log", 392 | "parking_lot", 393 | "rust-embed", 394 | "thiserror", 395 | "unic-langid", 396 | "walkdir", 397 | ] 398 | 399 | [[package]] 400 | name = "i18n-embed-fl" 401 | version = "0.6.7" 402 | source = "registry+https://github.com/rust-lang/crates.io-index" 403 | checksum = "d26a3d3569737dfaac7fc1c4078e6af07471c3060b8e570bcd83cdd5f4685395" 404 | dependencies = [ 405 | "dashmap", 406 | "find-crate", 407 | "fluent", 408 | "fluent-syntax", 409 | "i18n-config", 410 | "i18n-embed", 411 | "lazy_static", 412 | "proc-macro-error", 413 | "proc-macro2", 414 | "quote", 415 | "strsim", 416 | "syn 2.0.48", 417 | "unic-langid", 418 | ] 419 | 420 | [[package]] 421 | name = "i18n-embed-impl" 422 | version = "0.8.3" 423 | source = "registry+https://github.com/rust-lang/crates.io-index" 424 | checksum = "81093c4701672f59416582fe3145676126fd23ba5db910acad0793c1108aaa58" 425 | dependencies = [ 426 | "find-crate", 427 | "i18n-config", 428 | "proc-macro2", 429 | "quote", 430 | "syn 2.0.48", 431 | ] 432 | 433 | [[package]] 434 | name = "indexmap" 435 | version = "2.2.1" 436 | source = "registry+https://github.com/rust-lang/crates.io-index" 437 | checksum = "433de089bd45971eecf4668ee0ee8f4cec17db4f8bd8f7bc3197a6ce37aa7d9b" 438 | dependencies = [ 439 | "equivalent", 440 | "hashbrown", 441 | ] 442 | 443 | [[package]] 444 | name = "inout" 445 | version = "0.1.3" 446 | source = "registry+https://github.com/rust-lang/crates.io-index" 447 | checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" 448 | dependencies = [ 449 | "generic-array", 450 | ] 451 | 452 | [[package]] 453 | name = "intl-memoizer" 454 | version = "0.5.1" 455 | source = "registry+https://github.com/rust-lang/crates.io-index" 456 | checksum = "c310433e4a310918d6ed9243542a6b83ec1183df95dff8f23f87bb88a264a66f" 457 | dependencies = [ 458 | "type-map", 459 | "unic-langid", 460 | ] 461 | 462 | [[package]] 463 | name = "intl_pluralrules" 464 | version = "7.0.2" 465 | source = "registry+https://github.com/rust-lang/crates.io-index" 466 | checksum = "078ea7b7c29a2b4df841a7f6ac8775ff6074020c6776d48491ce2268e068f972" 467 | dependencies = [ 468 | "unic-langid", 469 | ] 470 | 471 | [[package]] 472 | name = "io_tee" 473 | version = "0.1.1" 474 | source = "registry+https://github.com/rust-lang/crates.io-index" 475 | checksum = "4b3f7cef34251886990511df1c61443aa928499d598a9473929ab5a90a527304" 476 | 477 | [[package]] 478 | name = "js-sys" 479 | version = "0.3.67" 480 | source = "registry+https://github.com/rust-lang/crates.io-index" 481 | checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1" 482 | dependencies = [ 483 | "wasm-bindgen", 484 | ] 485 | 486 | [[package]] 487 | name = "lazy_static" 488 | version = "1.4.0" 489 | source = "registry+https://github.com/rust-lang/crates.io-index" 490 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 491 | 492 | [[package]] 493 | name = "libc" 494 | version = "0.2.152" 495 | source = "registry+https://github.com/rust-lang/crates.io-index" 496 | checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" 497 | 498 | [[package]] 499 | name = "lock_api" 500 | version = "0.4.11" 501 | source = "registry+https://github.com/rust-lang/crates.io-index" 502 | checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" 503 | dependencies = [ 504 | "autocfg", 505 | "scopeguard", 506 | ] 507 | 508 | [[package]] 509 | name = "log" 510 | version = "0.4.20" 511 | source = "registry+https://github.com/rust-lang/crates.io-index" 512 | checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" 513 | 514 | [[package]] 515 | name = "memchr" 516 | version = "2.7.1" 517 | source = "registry+https://github.com/rust-lang/crates.io-index" 518 | checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" 519 | 520 | [[package]] 521 | name = "minimal-lexical" 522 | version = "0.2.1" 523 | source = "registry+https://github.com/rust-lang/crates.io-index" 524 | checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 525 | 526 | [[package]] 527 | name = "nom" 528 | version = "7.1.3" 529 | source = "registry+https://github.com/rust-lang/crates.io-index" 530 | checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" 531 | dependencies = [ 532 | "memchr", 533 | "minimal-lexical", 534 | ] 535 | 536 | [[package]] 537 | name = "once_cell" 538 | version = "1.19.0" 539 | source = "registry+https://github.com/rust-lang/crates.io-index" 540 | checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" 541 | 542 | [[package]] 543 | name = "opaque-debug" 544 | version = "0.3.0" 545 | source = "registry+https://github.com/rust-lang/crates.io-index" 546 | checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" 547 | 548 | [[package]] 549 | name = "parking_lot" 550 | version = "0.12.1" 551 | source = "registry+https://github.com/rust-lang/crates.io-index" 552 | checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" 553 | dependencies = [ 554 | "lock_api", 555 | "parking_lot_core", 556 | ] 557 | 558 | [[package]] 559 | name = "parking_lot_core" 560 | version = "0.9.9" 561 | source = "registry+https://github.com/rust-lang/crates.io-index" 562 | checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" 563 | dependencies = [ 564 | "cfg-if", 565 | "libc", 566 | "redox_syscall", 567 | "smallvec", 568 | "windows-targets", 569 | ] 570 | 571 | [[package]] 572 | name = "pbkdf2" 573 | version = "0.11.0" 574 | source = "registry+https://github.com/rust-lang/crates.io-index" 575 | checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" 576 | dependencies = [ 577 | "digest 0.10.7", 578 | ] 579 | 580 | [[package]] 581 | name = "pin-project" 582 | version = "1.1.4" 583 | source = "registry+https://github.com/rust-lang/crates.io-index" 584 | checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" 585 | dependencies = [ 586 | "pin-project-internal", 587 | ] 588 | 589 | [[package]] 590 | name = "pin-project-internal" 591 | version = "1.1.4" 592 | source = "registry+https://github.com/rust-lang/crates.io-index" 593 | checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" 594 | dependencies = [ 595 | "proc-macro2", 596 | "quote", 597 | "syn 2.0.48", 598 | ] 599 | 600 | [[package]] 601 | name = "poly1305" 602 | version = "0.8.0" 603 | source = "registry+https://github.com/rust-lang/crates.io-index" 604 | checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" 605 | dependencies = [ 606 | "cpufeatures", 607 | "opaque-debug", 608 | "universal-hash", 609 | ] 610 | 611 | [[package]] 612 | name = "ppv-lite86" 613 | version = "0.2.17" 614 | source = "registry+https://github.com/rust-lang/crates.io-index" 615 | checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 616 | 617 | [[package]] 618 | name = "proc-macro-error" 619 | version = "1.0.4" 620 | source = "registry+https://github.com/rust-lang/crates.io-index" 621 | checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" 622 | dependencies = [ 623 | "proc-macro-error-attr", 624 | "proc-macro2", 625 | "quote", 626 | "syn 1.0.109", 627 | "version_check", 628 | ] 629 | 630 | [[package]] 631 | name = "proc-macro-error-attr" 632 | version = "1.0.4" 633 | source = "registry+https://github.com/rust-lang/crates.io-index" 634 | checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" 635 | dependencies = [ 636 | "proc-macro2", 637 | "quote", 638 | "version_check", 639 | ] 640 | 641 | [[package]] 642 | name = "proc-macro2" 643 | version = "1.0.78" 644 | source = "registry+https://github.com/rust-lang/crates.io-index" 645 | checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" 646 | dependencies = [ 647 | "unicode-ident", 648 | ] 649 | 650 | [[package]] 651 | name = "quote" 652 | version = "1.0.35" 653 | source = "registry+https://github.com/rust-lang/crates.io-index" 654 | checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" 655 | dependencies = [ 656 | "proc-macro2", 657 | ] 658 | 659 | [[package]] 660 | name = "rage-wasm" 661 | version = "0.3.1" 662 | dependencies = [ 663 | "age", 664 | "getrandom 0.1.16", 665 | "getrandom 0.2.12", 666 | "js-sys", 667 | "secrecy", 668 | "wasm-bindgen", 669 | "wasm-bindgen-test", 670 | ] 671 | 672 | [[package]] 673 | name = "rand" 674 | version = "0.7.3" 675 | source = "registry+https://github.com/rust-lang/crates.io-index" 676 | checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" 677 | dependencies = [ 678 | "getrandom 0.1.16", 679 | "libc", 680 | "rand_chacha 0.2.2", 681 | "rand_core 0.5.1", 682 | "rand_hc", 683 | ] 684 | 685 | [[package]] 686 | name = "rand" 687 | version = "0.8.5" 688 | source = "registry+https://github.com/rust-lang/crates.io-index" 689 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 690 | dependencies = [ 691 | "libc", 692 | "rand_chacha 0.3.1", 693 | "rand_core 0.6.4", 694 | ] 695 | 696 | [[package]] 697 | name = "rand_chacha" 698 | version = "0.2.2" 699 | source = "registry+https://github.com/rust-lang/crates.io-index" 700 | checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" 701 | dependencies = [ 702 | "ppv-lite86", 703 | "rand_core 0.5.1", 704 | ] 705 | 706 | [[package]] 707 | name = "rand_chacha" 708 | version = "0.3.1" 709 | source = "registry+https://github.com/rust-lang/crates.io-index" 710 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 711 | dependencies = [ 712 | "ppv-lite86", 713 | "rand_core 0.6.4", 714 | ] 715 | 716 | [[package]] 717 | name = "rand_core" 718 | version = "0.5.1" 719 | source = "registry+https://github.com/rust-lang/crates.io-index" 720 | checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" 721 | dependencies = [ 722 | "getrandom 0.1.16", 723 | ] 724 | 725 | [[package]] 726 | name = "rand_core" 727 | version = "0.6.4" 728 | source = "registry+https://github.com/rust-lang/crates.io-index" 729 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 730 | dependencies = [ 731 | "getrandom 0.2.12", 732 | ] 733 | 734 | [[package]] 735 | name = "rand_hc" 736 | version = "0.2.0" 737 | source = "registry+https://github.com/rust-lang/crates.io-index" 738 | checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" 739 | dependencies = [ 740 | "rand_core 0.5.1", 741 | ] 742 | 743 | [[package]] 744 | name = "redox_syscall" 745 | version = "0.4.1" 746 | source = "registry+https://github.com/rust-lang/crates.io-index" 747 | checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" 748 | dependencies = [ 749 | "bitflags", 750 | ] 751 | 752 | [[package]] 753 | name = "rust-embed" 754 | version = "6.8.1" 755 | source = "registry+https://github.com/rust-lang/crates.io-index" 756 | checksum = "a36224c3276f8c4ebc8c20f158eca7ca4359c8db89991c4925132aaaf6702661" 757 | dependencies = [ 758 | "rust-embed-impl", 759 | "rust-embed-utils", 760 | "walkdir", 761 | ] 762 | 763 | [[package]] 764 | name = "rust-embed-impl" 765 | version = "6.8.1" 766 | source = "registry+https://github.com/rust-lang/crates.io-index" 767 | checksum = "49b94b81e5b2c284684141a2fb9e2a31be90638caf040bf9afbc5a0416afe1ac" 768 | dependencies = [ 769 | "proc-macro2", 770 | "quote", 771 | "rust-embed-utils", 772 | "syn 2.0.48", 773 | "walkdir", 774 | ] 775 | 776 | [[package]] 777 | name = "rust-embed-utils" 778 | version = "7.8.1" 779 | source = "registry+https://github.com/rust-lang/crates.io-index" 780 | checksum = "9d38ff6bf570dc3bb7100fce9f7b60c33fa71d80e88da3f2580df4ff2bdded74" 781 | dependencies = [ 782 | "sha2", 783 | "walkdir", 784 | ] 785 | 786 | [[package]] 787 | name = "rustc-hash" 788 | version = "1.1.0" 789 | source = "registry+https://github.com/rust-lang/crates.io-index" 790 | checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" 791 | 792 | [[package]] 793 | name = "salsa20" 794 | version = "0.10.2" 795 | source = "registry+https://github.com/rust-lang/crates.io-index" 796 | checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" 797 | dependencies = [ 798 | "cipher", 799 | ] 800 | 801 | [[package]] 802 | name = "same-file" 803 | version = "1.0.6" 804 | source = "registry+https://github.com/rust-lang/crates.io-index" 805 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 806 | dependencies = [ 807 | "winapi-util", 808 | ] 809 | 810 | [[package]] 811 | name = "scoped-tls" 812 | version = "1.0.1" 813 | source = "registry+https://github.com/rust-lang/crates.io-index" 814 | checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" 815 | 816 | [[package]] 817 | name = "scopeguard" 818 | version = "1.2.0" 819 | source = "registry+https://github.com/rust-lang/crates.io-index" 820 | checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 821 | 822 | [[package]] 823 | name = "scrypt" 824 | version = "0.10.0" 825 | source = "registry+https://github.com/rust-lang/crates.io-index" 826 | checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" 827 | dependencies = [ 828 | "hmac", 829 | "pbkdf2", 830 | "salsa20", 831 | "sha2", 832 | ] 833 | 834 | [[package]] 835 | name = "secrecy" 836 | version = "0.8.0" 837 | source = "registry+https://github.com/rust-lang/crates.io-index" 838 | checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" 839 | dependencies = [ 840 | "zeroize", 841 | ] 842 | 843 | [[package]] 844 | name = "self_cell" 845 | version = "0.10.3" 846 | source = "registry+https://github.com/rust-lang/crates.io-index" 847 | checksum = "e14e4d63b804dc0c7ec4a1e52bcb63f02c7ac94476755aa579edac21e01f915d" 848 | dependencies = [ 849 | "self_cell 1.0.3", 850 | ] 851 | 852 | [[package]] 853 | name = "self_cell" 854 | version = "1.0.3" 855 | source = "registry+https://github.com/rust-lang/crates.io-index" 856 | checksum = "58bf37232d3bb9a2c4e641ca2a11d83b5062066f88df7fed36c28772046d65ba" 857 | 858 | [[package]] 859 | name = "serde" 860 | version = "1.0.196" 861 | source = "registry+https://github.com/rust-lang/crates.io-index" 862 | checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" 863 | dependencies = [ 864 | "serde_derive", 865 | ] 866 | 867 | [[package]] 868 | name = "serde_derive" 869 | version = "1.0.196" 870 | source = "registry+https://github.com/rust-lang/crates.io-index" 871 | checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" 872 | dependencies = [ 873 | "proc-macro2", 874 | "quote", 875 | "syn 2.0.48", 876 | ] 877 | 878 | [[package]] 879 | name = "serde_spanned" 880 | version = "0.6.5" 881 | source = "registry+https://github.com/rust-lang/crates.io-index" 882 | checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" 883 | dependencies = [ 884 | "serde", 885 | ] 886 | 887 | [[package]] 888 | name = "sha2" 889 | version = "0.10.8" 890 | source = "registry+https://github.com/rust-lang/crates.io-index" 891 | checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" 892 | dependencies = [ 893 | "cfg-if", 894 | "cpufeatures", 895 | "digest 0.10.7", 896 | ] 897 | 898 | [[package]] 899 | name = "smallvec" 900 | version = "1.13.1" 901 | source = "registry+https://github.com/rust-lang/crates.io-index" 902 | checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" 903 | 904 | [[package]] 905 | name = "strsim" 906 | version = "0.10.0" 907 | source = "registry+https://github.com/rust-lang/crates.io-index" 908 | checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" 909 | 910 | [[package]] 911 | name = "subtle" 912 | version = "2.4.1" 913 | source = "registry+https://github.com/rust-lang/crates.io-index" 914 | checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" 915 | 916 | [[package]] 917 | name = "syn" 918 | version = "1.0.109" 919 | source = "registry+https://github.com/rust-lang/crates.io-index" 920 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 921 | dependencies = [ 922 | "proc-macro2", 923 | "unicode-ident", 924 | ] 925 | 926 | [[package]] 927 | name = "syn" 928 | version = "2.0.48" 929 | source = "registry+https://github.com/rust-lang/crates.io-index" 930 | checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" 931 | dependencies = [ 932 | "proc-macro2", 933 | "quote", 934 | "unicode-ident", 935 | ] 936 | 937 | [[package]] 938 | name = "thiserror" 939 | version = "1.0.56" 940 | source = "registry+https://github.com/rust-lang/crates.io-index" 941 | checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" 942 | dependencies = [ 943 | "thiserror-impl", 944 | ] 945 | 946 | [[package]] 947 | name = "thiserror-impl" 948 | version = "1.0.56" 949 | source = "registry+https://github.com/rust-lang/crates.io-index" 950 | checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" 951 | dependencies = [ 952 | "proc-macro2", 953 | "quote", 954 | "syn 2.0.48", 955 | ] 956 | 957 | [[package]] 958 | name = "tinystr" 959 | version = "0.7.5" 960 | source = "registry+https://github.com/rust-lang/crates.io-index" 961 | checksum = "83c02bf3c538ab32ba913408224323915f4ef9a6d61c0e85d493f355921c0ece" 962 | dependencies = [ 963 | "displaydoc", 964 | ] 965 | 966 | [[package]] 967 | name = "toml" 968 | version = "0.5.11" 969 | source = "registry+https://github.com/rust-lang/crates.io-index" 970 | checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" 971 | dependencies = [ 972 | "serde", 973 | ] 974 | 975 | [[package]] 976 | name = "toml" 977 | version = "0.8.8" 978 | source = "registry+https://github.com/rust-lang/crates.io-index" 979 | checksum = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35" 980 | dependencies = [ 981 | "serde", 982 | "serde_spanned", 983 | "toml_datetime", 984 | "toml_edit", 985 | ] 986 | 987 | [[package]] 988 | name = "toml_datetime" 989 | version = "0.6.5" 990 | source = "registry+https://github.com/rust-lang/crates.io-index" 991 | checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" 992 | dependencies = [ 993 | "serde", 994 | ] 995 | 996 | [[package]] 997 | name = "toml_edit" 998 | version = "0.21.0" 999 | source = "registry+https://github.com/rust-lang/crates.io-index" 1000 | checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" 1001 | dependencies = [ 1002 | "indexmap", 1003 | "serde", 1004 | "serde_spanned", 1005 | "toml_datetime", 1006 | "winnow", 1007 | ] 1008 | 1009 | [[package]] 1010 | name = "type-map" 1011 | version = "0.4.0" 1012 | source = "registry+https://github.com/rust-lang/crates.io-index" 1013 | checksum = "b6d3364c5e96cb2ad1603037ab253ddd34d7fb72a58bdddf4b7350760fc69a46" 1014 | dependencies = [ 1015 | "rustc-hash", 1016 | ] 1017 | 1018 | [[package]] 1019 | name = "typenum" 1020 | version = "1.17.0" 1021 | source = "registry+https://github.com/rust-lang/crates.io-index" 1022 | checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" 1023 | 1024 | [[package]] 1025 | name = "unic-langid" 1026 | version = "0.9.4" 1027 | source = "registry+https://github.com/rust-lang/crates.io-index" 1028 | checksum = "238722e6d794ed130f91f4ea33e01fcff4f188d92337a21297892521c72df516" 1029 | dependencies = [ 1030 | "unic-langid-impl", 1031 | ] 1032 | 1033 | [[package]] 1034 | name = "unic-langid-impl" 1035 | version = "0.9.4" 1036 | source = "registry+https://github.com/rust-lang/crates.io-index" 1037 | checksum = "4bd55a2063fdea4ef1f8633243a7b0524cbeef1905ae04c31a1c9b9775c55bc6" 1038 | dependencies = [ 1039 | "serde", 1040 | "tinystr", 1041 | ] 1042 | 1043 | [[package]] 1044 | name = "unicode-ident" 1045 | version = "1.0.12" 1046 | source = "registry+https://github.com/rust-lang/crates.io-index" 1047 | checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" 1048 | 1049 | [[package]] 1050 | name = "universal-hash" 1051 | version = "0.5.1" 1052 | source = "registry+https://github.com/rust-lang/crates.io-index" 1053 | checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" 1054 | dependencies = [ 1055 | "crypto-common", 1056 | "subtle", 1057 | ] 1058 | 1059 | [[package]] 1060 | name = "version_check" 1061 | version = "0.9.4" 1062 | source = "registry+https://github.com/rust-lang/crates.io-index" 1063 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 1064 | 1065 | [[package]] 1066 | name = "walkdir" 1067 | version = "2.4.0" 1068 | source = "registry+https://github.com/rust-lang/crates.io-index" 1069 | checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" 1070 | dependencies = [ 1071 | "same-file", 1072 | "winapi-util", 1073 | ] 1074 | 1075 | [[package]] 1076 | name = "wasi" 1077 | version = "0.9.0+wasi-snapshot-preview1" 1078 | source = "registry+https://github.com/rust-lang/crates.io-index" 1079 | checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" 1080 | 1081 | [[package]] 1082 | name = "wasi" 1083 | version = "0.11.0+wasi-snapshot-preview1" 1084 | source = "registry+https://github.com/rust-lang/crates.io-index" 1085 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 1086 | 1087 | [[package]] 1088 | name = "wasm-bindgen" 1089 | version = "0.2.90" 1090 | source = "registry+https://github.com/rust-lang/crates.io-index" 1091 | checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406" 1092 | dependencies = [ 1093 | "cfg-if", 1094 | "wasm-bindgen-macro", 1095 | ] 1096 | 1097 | [[package]] 1098 | name = "wasm-bindgen-backend" 1099 | version = "0.2.90" 1100 | source = "registry+https://github.com/rust-lang/crates.io-index" 1101 | checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd" 1102 | dependencies = [ 1103 | "bumpalo", 1104 | "log", 1105 | "once_cell", 1106 | "proc-macro2", 1107 | "quote", 1108 | "syn 2.0.48", 1109 | "wasm-bindgen-shared", 1110 | ] 1111 | 1112 | [[package]] 1113 | name = "wasm-bindgen-futures" 1114 | version = "0.4.40" 1115 | source = "registry+https://github.com/rust-lang/crates.io-index" 1116 | checksum = "bde2032aeb86bdfaecc8b261eef3cba735cc426c1f3a3416d1e0791be95fc461" 1117 | dependencies = [ 1118 | "cfg-if", 1119 | "js-sys", 1120 | "wasm-bindgen", 1121 | "web-sys", 1122 | ] 1123 | 1124 | [[package]] 1125 | name = "wasm-bindgen-macro" 1126 | version = "0.2.90" 1127 | source = "registry+https://github.com/rust-lang/crates.io-index" 1128 | checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999" 1129 | dependencies = [ 1130 | "quote", 1131 | "wasm-bindgen-macro-support", 1132 | ] 1133 | 1134 | [[package]] 1135 | name = "wasm-bindgen-macro-support" 1136 | version = "0.2.90" 1137 | source = "registry+https://github.com/rust-lang/crates.io-index" 1138 | checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7" 1139 | dependencies = [ 1140 | "proc-macro2", 1141 | "quote", 1142 | "syn 2.0.48", 1143 | "wasm-bindgen-backend", 1144 | "wasm-bindgen-shared", 1145 | ] 1146 | 1147 | [[package]] 1148 | name = "wasm-bindgen-shared" 1149 | version = "0.2.90" 1150 | source = "registry+https://github.com/rust-lang/crates.io-index" 1151 | checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b" 1152 | 1153 | [[package]] 1154 | name = "wasm-bindgen-test" 1155 | version = "0.3.40" 1156 | source = "registry+https://github.com/rust-lang/crates.io-index" 1157 | checksum = "139bd73305d50e1c1c4333210c0db43d989395b64a237bd35c10ef3832a7f70c" 1158 | dependencies = [ 1159 | "console_error_panic_hook", 1160 | "js-sys", 1161 | "scoped-tls", 1162 | "wasm-bindgen", 1163 | "wasm-bindgen-futures", 1164 | "wasm-bindgen-test-macro", 1165 | ] 1166 | 1167 | [[package]] 1168 | name = "wasm-bindgen-test-macro" 1169 | version = "0.3.40" 1170 | source = "registry+https://github.com/rust-lang/crates.io-index" 1171 | checksum = "70072aebfe5da66d2716002c729a14e4aec4da0e23cc2ea66323dac541c93928" 1172 | dependencies = [ 1173 | "proc-macro2", 1174 | "quote", 1175 | "syn 2.0.48", 1176 | ] 1177 | 1178 | [[package]] 1179 | name = "web-sys" 1180 | version = "0.3.67" 1181 | source = "registry+https://github.com/rust-lang/crates.io-index" 1182 | checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed" 1183 | dependencies = [ 1184 | "js-sys", 1185 | "wasm-bindgen", 1186 | ] 1187 | 1188 | [[package]] 1189 | name = "winapi" 1190 | version = "0.3.9" 1191 | source = "registry+https://github.com/rust-lang/crates.io-index" 1192 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 1193 | dependencies = [ 1194 | "winapi-i686-pc-windows-gnu", 1195 | "winapi-x86_64-pc-windows-gnu", 1196 | ] 1197 | 1198 | [[package]] 1199 | name = "winapi-i686-pc-windows-gnu" 1200 | version = "0.4.0" 1201 | source = "registry+https://github.com/rust-lang/crates.io-index" 1202 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1203 | 1204 | [[package]] 1205 | name = "winapi-util" 1206 | version = "0.1.6" 1207 | source = "registry+https://github.com/rust-lang/crates.io-index" 1208 | checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" 1209 | dependencies = [ 1210 | "winapi", 1211 | ] 1212 | 1213 | [[package]] 1214 | name = "winapi-x86_64-pc-windows-gnu" 1215 | version = "0.4.0" 1216 | source = "registry+https://github.com/rust-lang/crates.io-index" 1217 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1218 | 1219 | [[package]] 1220 | name = "windows-targets" 1221 | version = "0.48.5" 1222 | source = "registry+https://github.com/rust-lang/crates.io-index" 1223 | checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 1224 | dependencies = [ 1225 | "windows_aarch64_gnullvm", 1226 | "windows_aarch64_msvc", 1227 | "windows_i686_gnu", 1228 | "windows_i686_msvc", 1229 | "windows_x86_64_gnu", 1230 | "windows_x86_64_gnullvm", 1231 | "windows_x86_64_msvc", 1232 | ] 1233 | 1234 | [[package]] 1235 | name = "windows_aarch64_gnullvm" 1236 | version = "0.48.5" 1237 | source = "registry+https://github.com/rust-lang/crates.io-index" 1238 | checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 1239 | 1240 | [[package]] 1241 | name = "windows_aarch64_msvc" 1242 | version = "0.48.5" 1243 | source = "registry+https://github.com/rust-lang/crates.io-index" 1244 | checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 1245 | 1246 | [[package]] 1247 | name = "windows_i686_gnu" 1248 | version = "0.48.5" 1249 | source = "registry+https://github.com/rust-lang/crates.io-index" 1250 | checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 1251 | 1252 | [[package]] 1253 | name = "windows_i686_msvc" 1254 | version = "0.48.5" 1255 | source = "registry+https://github.com/rust-lang/crates.io-index" 1256 | checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 1257 | 1258 | [[package]] 1259 | name = "windows_x86_64_gnu" 1260 | version = "0.48.5" 1261 | source = "registry+https://github.com/rust-lang/crates.io-index" 1262 | checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 1263 | 1264 | [[package]] 1265 | name = "windows_x86_64_gnullvm" 1266 | version = "0.48.5" 1267 | source = "registry+https://github.com/rust-lang/crates.io-index" 1268 | checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 1269 | 1270 | [[package]] 1271 | name = "windows_x86_64_msvc" 1272 | version = "0.48.5" 1273 | source = "registry+https://github.com/rust-lang/crates.io-index" 1274 | checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 1275 | 1276 | [[package]] 1277 | name = "winnow" 1278 | version = "0.5.35" 1279 | source = "registry+https://github.com/rust-lang/crates.io-index" 1280 | checksum = "1931d78a9c73861da0134f453bb1f790ce49b2e30eba8410b4b79bac72b46a2d" 1281 | dependencies = [ 1282 | "memchr", 1283 | ] 1284 | 1285 | [[package]] 1286 | name = "x25519-dalek" 1287 | version = "1.1.1" 1288 | source = "registry+https://github.com/rust-lang/crates.io-index" 1289 | checksum = "5a0c105152107e3b96f6a00a65e86ce82d9b125230e1c4302940eca58ff71f4f" 1290 | dependencies = [ 1291 | "curve25519-dalek", 1292 | "rand_core 0.5.1", 1293 | "zeroize", 1294 | ] 1295 | 1296 | [[package]] 1297 | name = "zeroize" 1298 | version = "1.7.0" 1299 | source = "registry+https://github.com/rust-lang/crates.io-index" 1300 | checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" 1301 | dependencies = [ 1302 | "zeroize_derive", 1303 | ] 1304 | 1305 | [[package]] 1306 | name = "zeroize_derive" 1307 | version = "1.4.2" 1308 | source = "registry+https://github.com/rust-lang/crates.io-index" 1309 | checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" 1310 | dependencies = [ 1311 | "proc-macro2", 1312 | "quote", 1313 | "syn 2.0.48", 1314 | ] 1315 | -------------------------------------------------------------------------------- /examples/shadow-cljs/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rage-wasm-example", 3 | "version": "0.0.1", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "rage-wasm-example", 9 | "version": "0.0.1", 10 | "devDependencies": { 11 | "@kanru/rage-wasm": "../../", 12 | "shadow-cljs": "2.20.2" 13 | } 14 | }, 15 | "../..": { 16 | "name": "@kanru/rage-wasm", 17 | "version": "0.3.1", 18 | "dev": true, 19 | "license": "MIT OR Apache-2.0", 20 | "devDependencies": { 21 | "@esm-bundle/chai": "^4.3.4-fix.0", 22 | "@wasm-tool/rollup-plugin-rust": "^2.4.5", 23 | "@web/test-runner": "^0.18.0", 24 | "@web/test-runner-playwright": "^0.11.0", 25 | "rollup": "^4.9.6", 26 | "rollup-plugin-re": "^1.0.7" 27 | } 28 | }, 29 | "node_modules/@kanru/rage-wasm": { 30 | "resolved": "../..", 31 | "link": true 32 | }, 33 | "node_modules/asn1.js": { 34 | "version": "5.4.1", 35 | "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", 36 | "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", 37 | "dev": true, 38 | "dependencies": { 39 | "bn.js": "^4.0.0", 40 | "inherits": "^2.0.1", 41 | "minimalistic-assert": "^1.0.0", 42 | "safer-buffer": "^2.1.0" 43 | } 44 | }, 45 | "node_modules/asn1.js/node_modules/bn.js": { 46 | "version": "4.12.0", 47 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 48 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 49 | "dev": true 50 | }, 51 | "node_modules/assert": { 52 | "version": "1.5.0", 53 | "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", 54 | "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", 55 | "dev": true, 56 | "dependencies": { 57 | "object-assign": "^4.1.1", 58 | "util": "0.10.3" 59 | } 60 | }, 61 | "node_modules/assert/node_modules/inherits": { 62 | "version": "2.0.1", 63 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 64 | "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", 65 | "dev": true 66 | }, 67 | "node_modules/assert/node_modules/util": { 68 | "version": "0.10.3", 69 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", 70 | "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", 71 | "dev": true, 72 | "dependencies": { 73 | "inherits": "2.0.1" 74 | } 75 | }, 76 | "node_modules/base64-js": { 77 | "version": "1.5.1", 78 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 79 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 80 | "dev": true, 81 | "funding": [ 82 | { 83 | "type": "github", 84 | "url": "https://github.com/sponsors/feross" 85 | }, 86 | { 87 | "type": "patreon", 88 | "url": "https://www.patreon.com/feross" 89 | }, 90 | { 91 | "type": "consulting", 92 | "url": "https://feross.org/support" 93 | } 94 | ] 95 | }, 96 | "node_modules/bn.js": { 97 | "version": "5.2.1", 98 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", 99 | "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", 100 | "dev": true 101 | }, 102 | "node_modules/brorand": { 103 | "version": "1.1.0", 104 | "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", 105 | "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", 106 | "dev": true 107 | }, 108 | "node_modules/browserify-aes": { 109 | "version": "1.2.0", 110 | "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", 111 | "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", 112 | "dev": true, 113 | "dependencies": { 114 | "buffer-xor": "^1.0.3", 115 | "cipher-base": "^1.0.0", 116 | "create-hash": "^1.1.0", 117 | "evp_bytestokey": "^1.0.3", 118 | "inherits": "^2.0.1", 119 | "safe-buffer": "^5.0.1" 120 | } 121 | }, 122 | "node_modules/browserify-cipher": { 123 | "version": "1.0.1", 124 | "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", 125 | "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", 126 | "dev": true, 127 | "dependencies": { 128 | "browserify-aes": "^1.0.4", 129 | "browserify-des": "^1.0.0", 130 | "evp_bytestokey": "^1.0.0" 131 | } 132 | }, 133 | "node_modules/browserify-des": { 134 | "version": "1.0.2", 135 | "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", 136 | "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", 137 | "dev": true, 138 | "dependencies": { 139 | "cipher-base": "^1.0.1", 140 | "des.js": "^1.0.0", 141 | "inherits": "^2.0.1", 142 | "safe-buffer": "^5.1.2" 143 | } 144 | }, 145 | "node_modules/browserify-rsa": { 146 | "version": "4.1.0", 147 | "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", 148 | "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", 149 | "dev": true, 150 | "dependencies": { 151 | "bn.js": "^5.0.0", 152 | "randombytes": "^2.0.1" 153 | } 154 | }, 155 | "node_modules/browserify-sign": { 156 | "version": "4.2.2", 157 | "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", 158 | "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", 159 | "dev": true, 160 | "dependencies": { 161 | "bn.js": "^5.2.1", 162 | "browserify-rsa": "^4.1.0", 163 | "create-hash": "^1.2.0", 164 | "create-hmac": "^1.1.7", 165 | "elliptic": "^6.5.4", 166 | "inherits": "^2.0.4", 167 | "parse-asn1": "^5.1.6", 168 | "readable-stream": "^3.6.2", 169 | "safe-buffer": "^5.2.1" 170 | }, 171 | "engines": { 172 | "node": ">= 4" 173 | } 174 | }, 175 | "node_modules/browserify-sign/node_modules/readable-stream": { 176 | "version": "3.6.2", 177 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", 178 | "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", 179 | "dev": true, 180 | "dependencies": { 181 | "inherits": "^2.0.3", 182 | "string_decoder": "^1.1.1", 183 | "util-deprecate": "^1.0.1" 184 | }, 185 | "engines": { 186 | "node": ">= 6" 187 | } 188 | }, 189 | "node_modules/browserify-zlib": { 190 | "version": "0.2.0", 191 | "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", 192 | "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", 193 | "dev": true, 194 | "dependencies": { 195 | "pako": "~1.0.5" 196 | } 197 | }, 198 | "node_modules/buffer": { 199 | "version": "4.9.2", 200 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", 201 | "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", 202 | "dev": true, 203 | "dependencies": { 204 | "base64-js": "^1.0.2", 205 | "ieee754": "^1.1.4", 206 | "isarray": "^1.0.0" 207 | } 208 | }, 209 | "node_modules/buffer-xor": { 210 | "version": "1.0.3", 211 | "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", 212 | "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", 213 | "dev": true 214 | }, 215 | "node_modules/builtin-status-codes": { 216 | "version": "3.0.0", 217 | "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", 218 | "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", 219 | "dev": true 220 | }, 221 | "node_modules/cipher-base": { 222 | "version": "1.0.4", 223 | "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", 224 | "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", 225 | "dev": true, 226 | "dependencies": { 227 | "inherits": "^2.0.1", 228 | "safe-buffer": "^5.0.1" 229 | } 230 | }, 231 | "node_modules/console-browserify": { 232 | "version": "1.2.0", 233 | "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", 234 | "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", 235 | "dev": true 236 | }, 237 | "node_modules/constants-browserify": { 238 | "version": "1.0.0", 239 | "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", 240 | "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", 241 | "dev": true 242 | }, 243 | "node_modules/core-util-is": { 244 | "version": "1.0.3", 245 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", 246 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", 247 | "dev": true 248 | }, 249 | "node_modules/create-ecdh": { 250 | "version": "4.0.4", 251 | "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", 252 | "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", 253 | "dev": true, 254 | "dependencies": { 255 | "bn.js": "^4.1.0", 256 | "elliptic": "^6.5.3" 257 | } 258 | }, 259 | "node_modules/create-ecdh/node_modules/bn.js": { 260 | "version": "4.12.0", 261 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 262 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 263 | "dev": true 264 | }, 265 | "node_modules/create-hash": { 266 | "version": "1.2.0", 267 | "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", 268 | "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", 269 | "dev": true, 270 | "dependencies": { 271 | "cipher-base": "^1.0.1", 272 | "inherits": "^2.0.1", 273 | "md5.js": "^1.3.4", 274 | "ripemd160": "^2.0.1", 275 | "sha.js": "^2.4.0" 276 | } 277 | }, 278 | "node_modules/create-hmac": { 279 | "version": "1.1.7", 280 | "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", 281 | "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", 282 | "dev": true, 283 | "dependencies": { 284 | "cipher-base": "^1.0.3", 285 | "create-hash": "^1.1.0", 286 | "inherits": "^2.0.1", 287 | "ripemd160": "^2.0.0", 288 | "safe-buffer": "^5.0.1", 289 | "sha.js": "^2.4.8" 290 | } 291 | }, 292 | "node_modules/crypto-browserify": { 293 | "version": "3.12.0", 294 | "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", 295 | "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", 296 | "dev": true, 297 | "dependencies": { 298 | "browserify-cipher": "^1.0.0", 299 | "browserify-sign": "^4.0.0", 300 | "create-ecdh": "^4.0.0", 301 | "create-hash": "^1.1.0", 302 | "create-hmac": "^1.1.0", 303 | "diffie-hellman": "^5.0.0", 304 | "inherits": "^2.0.1", 305 | "pbkdf2": "^3.0.3", 306 | "public-encrypt": "^4.0.0", 307 | "randombytes": "^2.0.0", 308 | "randomfill": "^1.0.3" 309 | }, 310 | "engines": { 311 | "node": "*" 312 | } 313 | }, 314 | "node_modules/des.js": { 315 | "version": "1.0.1", 316 | "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", 317 | "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", 318 | "dev": true, 319 | "dependencies": { 320 | "inherits": "^2.0.1", 321 | "minimalistic-assert": "^1.0.0" 322 | } 323 | }, 324 | "node_modules/diffie-hellman": { 325 | "version": "5.0.3", 326 | "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", 327 | "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", 328 | "dev": true, 329 | "dependencies": { 330 | "bn.js": "^4.1.0", 331 | "miller-rabin": "^4.0.0", 332 | "randombytes": "^2.0.0" 333 | } 334 | }, 335 | "node_modules/diffie-hellman/node_modules/bn.js": { 336 | "version": "4.12.0", 337 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 338 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 339 | "dev": true 340 | }, 341 | "node_modules/domain-browser": { 342 | "version": "1.2.0", 343 | "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", 344 | "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", 345 | "dev": true, 346 | "engines": { 347 | "node": ">=0.4", 348 | "npm": ">=1.2" 349 | } 350 | }, 351 | "node_modules/elliptic": { 352 | "version": "6.5.4", 353 | "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", 354 | "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", 355 | "dev": true, 356 | "dependencies": { 357 | "bn.js": "^4.11.9", 358 | "brorand": "^1.1.0", 359 | "hash.js": "^1.0.0", 360 | "hmac-drbg": "^1.0.1", 361 | "inherits": "^2.0.4", 362 | "minimalistic-assert": "^1.0.1", 363 | "minimalistic-crypto-utils": "^1.0.1" 364 | } 365 | }, 366 | "node_modules/elliptic/node_modules/bn.js": { 367 | "version": "4.12.0", 368 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 369 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 370 | "dev": true 371 | }, 372 | "node_modules/events": { 373 | "version": "3.3.0", 374 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", 375 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", 376 | "dev": true, 377 | "engines": { 378 | "node": ">=0.8.x" 379 | } 380 | }, 381 | "node_modules/evp_bytestokey": { 382 | "version": "1.0.3", 383 | "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", 384 | "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", 385 | "dev": true, 386 | "dependencies": { 387 | "md5.js": "^1.3.4", 388 | "safe-buffer": "^5.1.1" 389 | } 390 | }, 391 | "node_modules/hash-base": { 392 | "version": "3.1.0", 393 | "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", 394 | "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", 395 | "dev": true, 396 | "dependencies": { 397 | "inherits": "^2.0.4", 398 | "readable-stream": "^3.6.0", 399 | "safe-buffer": "^5.2.0" 400 | }, 401 | "engines": { 402 | "node": ">=4" 403 | } 404 | }, 405 | "node_modules/hash-base/node_modules/readable-stream": { 406 | "version": "3.6.0", 407 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 408 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 409 | "dev": true, 410 | "dependencies": { 411 | "inherits": "^2.0.3", 412 | "string_decoder": "^1.1.1", 413 | "util-deprecate": "^1.0.1" 414 | }, 415 | "engines": { 416 | "node": ">= 6" 417 | } 418 | }, 419 | "node_modules/hash.js": { 420 | "version": "1.1.7", 421 | "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", 422 | "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", 423 | "dev": true, 424 | "dependencies": { 425 | "inherits": "^2.0.3", 426 | "minimalistic-assert": "^1.0.1" 427 | } 428 | }, 429 | "node_modules/hmac-drbg": { 430 | "version": "1.0.1", 431 | "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", 432 | "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", 433 | "dev": true, 434 | "dependencies": { 435 | "hash.js": "^1.0.3", 436 | "minimalistic-assert": "^1.0.0", 437 | "minimalistic-crypto-utils": "^1.0.1" 438 | } 439 | }, 440 | "node_modules/https-browserify": { 441 | "version": "1.0.0", 442 | "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", 443 | "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", 444 | "dev": true 445 | }, 446 | "node_modules/ieee754": { 447 | "version": "1.2.1", 448 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 449 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 450 | "dev": true, 451 | "funding": [ 452 | { 453 | "type": "github", 454 | "url": "https://github.com/sponsors/feross" 455 | }, 456 | { 457 | "type": "patreon", 458 | "url": "https://www.patreon.com/feross" 459 | }, 460 | { 461 | "type": "consulting", 462 | "url": "https://feross.org/support" 463 | } 464 | ] 465 | }, 466 | "node_modules/inherits": { 467 | "version": "2.0.4", 468 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 469 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 470 | "dev": true 471 | }, 472 | "node_modules/isarray": { 473 | "version": "1.0.0", 474 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 475 | "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", 476 | "dev": true 477 | }, 478 | "node_modules/isexe": { 479 | "version": "2.0.0", 480 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 481 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 482 | "dev": true 483 | }, 484 | "node_modules/md5.js": { 485 | "version": "1.3.5", 486 | "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", 487 | "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", 488 | "dev": true, 489 | "dependencies": { 490 | "hash-base": "^3.0.0", 491 | "inherits": "^2.0.1", 492 | "safe-buffer": "^5.1.2" 493 | } 494 | }, 495 | "node_modules/miller-rabin": { 496 | "version": "4.0.1", 497 | "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", 498 | "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", 499 | "dev": true, 500 | "dependencies": { 501 | "bn.js": "^4.0.0", 502 | "brorand": "^1.0.1" 503 | }, 504 | "bin": { 505 | "miller-rabin": "bin/miller-rabin" 506 | } 507 | }, 508 | "node_modules/miller-rabin/node_modules/bn.js": { 509 | "version": "4.12.0", 510 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 511 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 512 | "dev": true 513 | }, 514 | "node_modules/minimalistic-assert": { 515 | "version": "1.0.1", 516 | "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", 517 | "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", 518 | "dev": true 519 | }, 520 | "node_modules/minimalistic-crypto-utils": { 521 | "version": "1.0.1", 522 | "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", 523 | "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", 524 | "dev": true 525 | }, 526 | "node_modules/node-libs-browser": { 527 | "version": "2.2.1", 528 | "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", 529 | "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", 530 | "dev": true, 531 | "dependencies": { 532 | "assert": "^1.1.1", 533 | "browserify-zlib": "^0.2.0", 534 | "buffer": "^4.3.0", 535 | "console-browserify": "^1.1.0", 536 | "constants-browserify": "^1.0.0", 537 | "crypto-browserify": "^3.11.0", 538 | "domain-browser": "^1.1.1", 539 | "events": "^3.0.0", 540 | "https-browserify": "^1.0.0", 541 | "os-browserify": "^0.3.0", 542 | "path-browserify": "0.0.1", 543 | "process": "^0.11.10", 544 | "punycode": "^1.2.4", 545 | "querystring-es3": "^0.2.0", 546 | "readable-stream": "^2.3.3", 547 | "stream-browserify": "^2.0.1", 548 | "stream-http": "^2.7.2", 549 | "string_decoder": "^1.0.0", 550 | "timers-browserify": "^2.0.4", 551 | "tty-browserify": "0.0.0", 552 | "url": "^0.11.0", 553 | "util": "^0.11.0", 554 | "vm-browserify": "^1.0.1" 555 | } 556 | }, 557 | "node_modules/object-assign": { 558 | "version": "4.1.1", 559 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 560 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 561 | "dev": true, 562 | "engines": { 563 | "node": ">=0.10.0" 564 | } 565 | }, 566 | "node_modules/os-browserify": { 567 | "version": "0.3.0", 568 | "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", 569 | "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", 570 | "dev": true 571 | }, 572 | "node_modules/pako": { 573 | "version": "1.0.11", 574 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", 575 | "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", 576 | "dev": true 577 | }, 578 | "node_modules/parse-asn1": { 579 | "version": "5.1.6", 580 | "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", 581 | "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", 582 | "dev": true, 583 | "dependencies": { 584 | "asn1.js": "^5.2.0", 585 | "browserify-aes": "^1.0.0", 586 | "evp_bytestokey": "^1.0.0", 587 | "pbkdf2": "^3.0.3", 588 | "safe-buffer": "^5.1.1" 589 | } 590 | }, 591 | "node_modules/path-browserify": { 592 | "version": "0.0.1", 593 | "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", 594 | "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", 595 | "dev": true 596 | }, 597 | "node_modules/pbkdf2": { 598 | "version": "3.1.2", 599 | "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", 600 | "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", 601 | "dev": true, 602 | "dependencies": { 603 | "create-hash": "^1.1.2", 604 | "create-hmac": "^1.1.4", 605 | "ripemd160": "^2.0.1", 606 | "safe-buffer": "^5.0.1", 607 | "sha.js": "^2.4.8" 608 | }, 609 | "engines": { 610 | "node": ">=0.12" 611 | } 612 | }, 613 | "node_modules/process": { 614 | "version": "0.11.10", 615 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", 616 | "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", 617 | "dev": true, 618 | "engines": { 619 | "node": ">= 0.6.0" 620 | } 621 | }, 622 | "node_modules/process-nextick-args": { 623 | "version": "2.0.1", 624 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 625 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 626 | "dev": true 627 | }, 628 | "node_modules/public-encrypt": { 629 | "version": "4.0.3", 630 | "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", 631 | "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", 632 | "dev": true, 633 | "dependencies": { 634 | "bn.js": "^4.1.0", 635 | "browserify-rsa": "^4.0.0", 636 | "create-hash": "^1.1.0", 637 | "parse-asn1": "^5.0.0", 638 | "randombytes": "^2.0.1", 639 | "safe-buffer": "^5.1.2" 640 | } 641 | }, 642 | "node_modules/public-encrypt/node_modules/bn.js": { 643 | "version": "4.12.0", 644 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 645 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 646 | "dev": true 647 | }, 648 | "node_modules/punycode": { 649 | "version": "1.4.1", 650 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 651 | "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", 652 | "dev": true 653 | }, 654 | "node_modules/querystring": { 655 | "version": "0.2.0", 656 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", 657 | "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", 658 | "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", 659 | "dev": true, 660 | "engines": { 661 | "node": ">=0.4.x" 662 | } 663 | }, 664 | "node_modules/querystring-es3": { 665 | "version": "0.2.1", 666 | "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", 667 | "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", 668 | "dev": true, 669 | "engines": { 670 | "node": ">=0.4.x" 671 | } 672 | }, 673 | "node_modules/randombytes": { 674 | "version": "2.1.0", 675 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 676 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 677 | "dev": true, 678 | "dependencies": { 679 | "safe-buffer": "^5.1.0" 680 | } 681 | }, 682 | "node_modules/randomfill": { 683 | "version": "1.0.4", 684 | "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", 685 | "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", 686 | "dev": true, 687 | "dependencies": { 688 | "randombytes": "^2.0.5", 689 | "safe-buffer": "^5.1.0" 690 | } 691 | }, 692 | "node_modules/readable-stream": { 693 | "version": "2.3.7", 694 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 695 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 696 | "dev": true, 697 | "dependencies": { 698 | "core-util-is": "~1.0.0", 699 | "inherits": "~2.0.3", 700 | "isarray": "~1.0.0", 701 | "process-nextick-args": "~2.0.0", 702 | "safe-buffer": "~5.1.1", 703 | "string_decoder": "~1.1.1", 704 | "util-deprecate": "~1.0.1" 705 | } 706 | }, 707 | "node_modules/readable-stream/node_modules/safe-buffer": { 708 | "version": "5.1.2", 709 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 710 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 711 | "dev": true 712 | }, 713 | "node_modules/readable-stream/node_modules/string_decoder": { 714 | "version": "1.1.1", 715 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 716 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 717 | "dev": true, 718 | "dependencies": { 719 | "safe-buffer": "~5.1.0" 720 | } 721 | }, 722 | "node_modules/readline-sync": { 723 | "version": "1.4.10", 724 | "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", 725 | "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==", 726 | "dev": true, 727 | "engines": { 728 | "node": ">= 0.8.0" 729 | } 730 | }, 731 | "node_modules/ripemd160": { 732 | "version": "2.0.2", 733 | "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", 734 | "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", 735 | "dev": true, 736 | "dependencies": { 737 | "hash-base": "^3.0.0", 738 | "inherits": "^2.0.1" 739 | } 740 | }, 741 | "node_modules/safe-buffer": { 742 | "version": "5.2.1", 743 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 744 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 745 | "dev": true, 746 | "funding": [ 747 | { 748 | "type": "github", 749 | "url": "https://github.com/sponsors/feross" 750 | }, 751 | { 752 | "type": "patreon", 753 | "url": "https://www.patreon.com/feross" 754 | }, 755 | { 756 | "type": "consulting", 757 | "url": "https://feross.org/support" 758 | } 759 | ] 760 | }, 761 | "node_modules/safer-buffer": { 762 | "version": "2.1.2", 763 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 764 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 765 | "dev": true 766 | }, 767 | "node_modules/setimmediate": { 768 | "version": "1.0.5", 769 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 770 | "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", 771 | "dev": true 772 | }, 773 | "node_modules/sha.js": { 774 | "version": "2.4.11", 775 | "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", 776 | "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", 777 | "dev": true, 778 | "dependencies": { 779 | "inherits": "^2.0.1", 780 | "safe-buffer": "^5.0.1" 781 | }, 782 | "bin": { 783 | "sha.js": "bin.js" 784 | } 785 | }, 786 | "node_modules/shadow-cljs": { 787 | "version": "2.20.2", 788 | "resolved": "https://registry.npmjs.org/shadow-cljs/-/shadow-cljs-2.20.2.tgz", 789 | "integrity": "sha512-2kzWnV1QM6KBetziCAkCf8BJdnDX2CwiAr4yhvOsiQpaNJcMzwMsJTX/gTHz58yQg0dV5uwPsIyBlvyIfl30rg==", 790 | "dev": true, 791 | "dependencies": { 792 | "node-libs-browser": "^2.2.1", 793 | "readline-sync": "^1.4.7", 794 | "shadow-cljs-jar": "1.3.2", 795 | "source-map-support": "^0.4.15", 796 | "which": "^1.3.1", 797 | "ws": "^7.4.6" 798 | }, 799 | "bin": { 800 | "shadow-cljs": "cli/runner.js" 801 | }, 802 | "engines": { 803 | "node": ">=6.0.0" 804 | } 805 | }, 806 | "node_modules/shadow-cljs-jar": { 807 | "version": "1.3.2", 808 | "resolved": "https://registry.npmjs.org/shadow-cljs-jar/-/shadow-cljs-jar-1.3.2.tgz", 809 | "integrity": "sha512-XmeffAZHv8z7451kzeq9oKh8fh278Ak+UIOGGrapyqrFBB773xN8vMQ3O7J7TYLnb9BUwcqadKkmgaq7q6fhZg==", 810 | "dev": true 811 | }, 812 | "node_modules/source-map": { 813 | "version": "0.5.7", 814 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 815 | "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", 816 | "dev": true, 817 | "engines": { 818 | "node": ">=0.10.0" 819 | } 820 | }, 821 | "node_modules/source-map-support": { 822 | "version": "0.4.18", 823 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", 824 | "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", 825 | "dev": true, 826 | "dependencies": { 827 | "source-map": "^0.5.6" 828 | } 829 | }, 830 | "node_modules/stream-browserify": { 831 | "version": "2.0.2", 832 | "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", 833 | "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", 834 | "dev": true, 835 | "dependencies": { 836 | "inherits": "~2.0.1", 837 | "readable-stream": "^2.0.2" 838 | } 839 | }, 840 | "node_modules/stream-http": { 841 | "version": "2.8.3", 842 | "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", 843 | "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", 844 | "dev": true, 845 | "dependencies": { 846 | "builtin-status-codes": "^3.0.0", 847 | "inherits": "^2.0.1", 848 | "readable-stream": "^2.3.6", 849 | "to-arraybuffer": "^1.0.0", 850 | "xtend": "^4.0.0" 851 | } 852 | }, 853 | "node_modules/string_decoder": { 854 | "version": "1.3.0", 855 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 856 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 857 | "dev": true, 858 | "dependencies": { 859 | "safe-buffer": "~5.2.0" 860 | } 861 | }, 862 | "node_modules/timers-browserify": { 863 | "version": "2.0.12", 864 | "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", 865 | "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", 866 | "dev": true, 867 | "dependencies": { 868 | "setimmediate": "^1.0.4" 869 | }, 870 | "engines": { 871 | "node": ">=0.6.0" 872 | } 873 | }, 874 | "node_modules/to-arraybuffer": { 875 | "version": "1.0.1", 876 | "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", 877 | "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", 878 | "dev": true 879 | }, 880 | "node_modules/tty-browserify": { 881 | "version": "0.0.0", 882 | "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", 883 | "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", 884 | "dev": true 885 | }, 886 | "node_modules/url": { 887 | "version": "0.11.0", 888 | "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", 889 | "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", 890 | "dev": true, 891 | "dependencies": { 892 | "punycode": "1.3.2", 893 | "querystring": "0.2.0" 894 | } 895 | }, 896 | "node_modules/url/node_modules/punycode": { 897 | "version": "1.3.2", 898 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", 899 | "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", 900 | "dev": true 901 | }, 902 | "node_modules/util": { 903 | "version": "0.11.1", 904 | "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", 905 | "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", 906 | "dev": true, 907 | "dependencies": { 908 | "inherits": "2.0.3" 909 | } 910 | }, 911 | "node_modules/util-deprecate": { 912 | "version": "1.0.2", 913 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 914 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 915 | "dev": true 916 | }, 917 | "node_modules/util/node_modules/inherits": { 918 | "version": "2.0.3", 919 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 920 | "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", 921 | "dev": true 922 | }, 923 | "node_modules/vm-browserify": { 924 | "version": "1.1.2", 925 | "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", 926 | "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", 927 | "dev": true 928 | }, 929 | "node_modules/which": { 930 | "version": "1.3.1", 931 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 932 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 933 | "dev": true, 934 | "dependencies": { 935 | "isexe": "^2.0.0" 936 | }, 937 | "bin": { 938 | "which": "bin/which" 939 | } 940 | }, 941 | "node_modules/ws": { 942 | "version": "7.5.10", 943 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", 944 | "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", 945 | "dev": true, 946 | "engines": { 947 | "node": ">=8.3.0" 948 | }, 949 | "peerDependencies": { 950 | "bufferutil": "^4.0.1", 951 | "utf-8-validate": "^5.0.2" 952 | }, 953 | "peerDependenciesMeta": { 954 | "bufferutil": { 955 | "optional": true 956 | }, 957 | "utf-8-validate": { 958 | "optional": true 959 | } 960 | } 961 | }, 962 | "node_modules/xtend": { 963 | "version": "4.0.2", 964 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 965 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 966 | "dev": true, 967 | "engines": { 968 | "node": ">=0.4" 969 | } 970 | } 971 | }, 972 | "dependencies": { 973 | "@kanru/rage-wasm": { 974 | "version": "file:../..", 975 | "requires": { 976 | "@esm-bundle/chai": "^4.3.4-fix.0", 977 | "@wasm-tool/rollup-plugin-rust": "^2.4.5", 978 | "@web/test-runner": "^0.18.0", 979 | "@web/test-runner-playwright": "^0.11.0", 980 | "rollup": "^4.9.6", 981 | "rollup-plugin-re": "^1.0.7" 982 | } 983 | }, 984 | "asn1.js": { 985 | "version": "5.4.1", 986 | "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", 987 | "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", 988 | "dev": true, 989 | "requires": { 990 | "bn.js": "^4.0.0", 991 | "inherits": "^2.0.1", 992 | "minimalistic-assert": "^1.0.0", 993 | "safer-buffer": "^2.1.0" 994 | }, 995 | "dependencies": { 996 | "bn.js": { 997 | "version": "4.12.0", 998 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 999 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 1000 | "dev": true 1001 | } 1002 | } 1003 | }, 1004 | "assert": { 1005 | "version": "1.5.0", 1006 | "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", 1007 | "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", 1008 | "dev": true, 1009 | "requires": { 1010 | "object-assign": "^4.1.1", 1011 | "util": "0.10.3" 1012 | }, 1013 | "dependencies": { 1014 | "inherits": { 1015 | "version": "2.0.1", 1016 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 1017 | "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", 1018 | "dev": true 1019 | }, 1020 | "util": { 1021 | "version": "0.10.3", 1022 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", 1023 | "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", 1024 | "dev": true, 1025 | "requires": { 1026 | "inherits": "2.0.1" 1027 | } 1028 | } 1029 | } 1030 | }, 1031 | "base64-js": { 1032 | "version": "1.5.1", 1033 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 1034 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 1035 | "dev": true 1036 | }, 1037 | "bn.js": { 1038 | "version": "5.2.1", 1039 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", 1040 | "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", 1041 | "dev": true 1042 | }, 1043 | "brorand": { 1044 | "version": "1.1.0", 1045 | "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", 1046 | "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", 1047 | "dev": true 1048 | }, 1049 | "browserify-aes": { 1050 | "version": "1.2.0", 1051 | "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", 1052 | "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", 1053 | "dev": true, 1054 | "requires": { 1055 | "buffer-xor": "^1.0.3", 1056 | "cipher-base": "^1.0.0", 1057 | "create-hash": "^1.1.0", 1058 | "evp_bytestokey": "^1.0.3", 1059 | "inherits": "^2.0.1", 1060 | "safe-buffer": "^5.0.1" 1061 | } 1062 | }, 1063 | "browserify-cipher": { 1064 | "version": "1.0.1", 1065 | "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", 1066 | "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", 1067 | "dev": true, 1068 | "requires": { 1069 | "browserify-aes": "^1.0.4", 1070 | "browserify-des": "^1.0.0", 1071 | "evp_bytestokey": "^1.0.0" 1072 | } 1073 | }, 1074 | "browserify-des": { 1075 | "version": "1.0.2", 1076 | "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", 1077 | "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", 1078 | "dev": true, 1079 | "requires": { 1080 | "cipher-base": "^1.0.1", 1081 | "des.js": "^1.0.0", 1082 | "inherits": "^2.0.1", 1083 | "safe-buffer": "^5.1.2" 1084 | } 1085 | }, 1086 | "browserify-rsa": { 1087 | "version": "4.1.0", 1088 | "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", 1089 | "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", 1090 | "dev": true, 1091 | "requires": { 1092 | "bn.js": "^5.0.0", 1093 | "randombytes": "^2.0.1" 1094 | } 1095 | }, 1096 | "browserify-sign": { 1097 | "version": "4.2.2", 1098 | "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", 1099 | "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", 1100 | "dev": true, 1101 | "requires": { 1102 | "bn.js": "^5.2.1", 1103 | "browserify-rsa": "^4.1.0", 1104 | "create-hash": "^1.2.0", 1105 | "create-hmac": "^1.1.7", 1106 | "elliptic": "^6.5.4", 1107 | "inherits": "^2.0.4", 1108 | "parse-asn1": "^5.1.6", 1109 | "readable-stream": "^3.6.2", 1110 | "safe-buffer": "^5.2.1" 1111 | }, 1112 | "dependencies": { 1113 | "readable-stream": { 1114 | "version": "3.6.2", 1115 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", 1116 | "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", 1117 | "dev": true, 1118 | "requires": { 1119 | "inherits": "^2.0.3", 1120 | "string_decoder": "^1.1.1", 1121 | "util-deprecate": "^1.0.1" 1122 | } 1123 | } 1124 | } 1125 | }, 1126 | "browserify-zlib": { 1127 | "version": "0.2.0", 1128 | "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", 1129 | "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", 1130 | "dev": true, 1131 | "requires": { 1132 | "pako": "~1.0.5" 1133 | } 1134 | }, 1135 | "buffer": { 1136 | "version": "4.9.2", 1137 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", 1138 | "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", 1139 | "dev": true, 1140 | "requires": { 1141 | "base64-js": "^1.0.2", 1142 | "ieee754": "^1.1.4", 1143 | "isarray": "^1.0.0" 1144 | } 1145 | }, 1146 | "buffer-xor": { 1147 | "version": "1.0.3", 1148 | "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", 1149 | "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", 1150 | "dev": true 1151 | }, 1152 | "builtin-status-codes": { 1153 | "version": "3.0.0", 1154 | "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", 1155 | "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", 1156 | "dev": true 1157 | }, 1158 | "cipher-base": { 1159 | "version": "1.0.4", 1160 | "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", 1161 | "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", 1162 | "dev": true, 1163 | "requires": { 1164 | "inherits": "^2.0.1", 1165 | "safe-buffer": "^5.0.1" 1166 | } 1167 | }, 1168 | "console-browserify": { 1169 | "version": "1.2.0", 1170 | "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", 1171 | "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", 1172 | "dev": true 1173 | }, 1174 | "constants-browserify": { 1175 | "version": "1.0.0", 1176 | "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", 1177 | "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", 1178 | "dev": true 1179 | }, 1180 | "core-util-is": { 1181 | "version": "1.0.3", 1182 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", 1183 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", 1184 | "dev": true 1185 | }, 1186 | "create-ecdh": { 1187 | "version": "4.0.4", 1188 | "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", 1189 | "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", 1190 | "dev": true, 1191 | "requires": { 1192 | "bn.js": "^4.1.0", 1193 | "elliptic": "^6.5.3" 1194 | }, 1195 | "dependencies": { 1196 | "bn.js": { 1197 | "version": "4.12.0", 1198 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 1199 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 1200 | "dev": true 1201 | } 1202 | } 1203 | }, 1204 | "create-hash": { 1205 | "version": "1.2.0", 1206 | "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", 1207 | "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", 1208 | "dev": true, 1209 | "requires": { 1210 | "cipher-base": "^1.0.1", 1211 | "inherits": "^2.0.1", 1212 | "md5.js": "^1.3.4", 1213 | "ripemd160": "^2.0.1", 1214 | "sha.js": "^2.4.0" 1215 | } 1216 | }, 1217 | "create-hmac": { 1218 | "version": "1.1.7", 1219 | "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", 1220 | "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", 1221 | "dev": true, 1222 | "requires": { 1223 | "cipher-base": "^1.0.3", 1224 | "create-hash": "^1.1.0", 1225 | "inherits": "^2.0.1", 1226 | "ripemd160": "^2.0.0", 1227 | "safe-buffer": "^5.0.1", 1228 | "sha.js": "^2.4.8" 1229 | } 1230 | }, 1231 | "crypto-browserify": { 1232 | "version": "3.12.0", 1233 | "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", 1234 | "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", 1235 | "dev": true, 1236 | "requires": { 1237 | "browserify-cipher": "^1.0.0", 1238 | "browserify-sign": "^4.0.0", 1239 | "create-ecdh": "^4.0.0", 1240 | "create-hash": "^1.1.0", 1241 | "create-hmac": "^1.1.0", 1242 | "diffie-hellman": "^5.0.0", 1243 | "inherits": "^2.0.1", 1244 | "pbkdf2": "^3.0.3", 1245 | "public-encrypt": "^4.0.0", 1246 | "randombytes": "^2.0.0", 1247 | "randomfill": "^1.0.3" 1248 | } 1249 | }, 1250 | "des.js": { 1251 | "version": "1.0.1", 1252 | "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", 1253 | "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", 1254 | "dev": true, 1255 | "requires": { 1256 | "inherits": "^2.0.1", 1257 | "minimalistic-assert": "^1.0.0" 1258 | } 1259 | }, 1260 | "diffie-hellman": { 1261 | "version": "5.0.3", 1262 | "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", 1263 | "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", 1264 | "dev": true, 1265 | "requires": { 1266 | "bn.js": "^4.1.0", 1267 | "miller-rabin": "^4.0.0", 1268 | "randombytes": "^2.0.0" 1269 | }, 1270 | "dependencies": { 1271 | "bn.js": { 1272 | "version": "4.12.0", 1273 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 1274 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 1275 | "dev": true 1276 | } 1277 | } 1278 | }, 1279 | "domain-browser": { 1280 | "version": "1.2.0", 1281 | "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", 1282 | "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", 1283 | "dev": true 1284 | }, 1285 | "elliptic": { 1286 | "version": "6.5.4", 1287 | "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", 1288 | "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", 1289 | "dev": true, 1290 | "requires": { 1291 | "bn.js": "^4.11.9", 1292 | "brorand": "^1.1.0", 1293 | "hash.js": "^1.0.0", 1294 | "hmac-drbg": "^1.0.1", 1295 | "inherits": "^2.0.4", 1296 | "minimalistic-assert": "^1.0.1", 1297 | "minimalistic-crypto-utils": "^1.0.1" 1298 | }, 1299 | "dependencies": { 1300 | "bn.js": { 1301 | "version": "4.12.0", 1302 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 1303 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 1304 | "dev": true 1305 | } 1306 | } 1307 | }, 1308 | "events": { 1309 | "version": "3.3.0", 1310 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", 1311 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", 1312 | "dev": true 1313 | }, 1314 | "evp_bytestokey": { 1315 | "version": "1.0.3", 1316 | "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", 1317 | "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", 1318 | "dev": true, 1319 | "requires": { 1320 | "md5.js": "^1.3.4", 1321 | "safe-buffer": "^5.1.1" 1322 | } 1323 | }, 1324 | "hash-base": { 1325 | "version": "3.1.0", 1326 | "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", 1327 | "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", 1328 | "dev": true, 1329 | "requires": { 1330 | "inherits": "^2.0.4", 1331 | "readable-stream": "^3.6.0", 1332 | "safe-buffer": "^5.2.0" 1333 | }, 1334 | "dependencies": { 1335 | "readable-stream": { 1336 | "version": "3.6.0", 1337 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 1338 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 1339 | "dev": true, 1340 | "requires": { 1341 | "inherits": "^2.0.3", 1342 | "string_decoder": "^1.1.1", 1343 | "util-deprecate": "^1.0.1" 1344 | } 1345 | } 1346 | } 1347 | }, 1348 | "hash.js": { 1349 | "version": "1.1.7", 1350 | "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", 1351 | "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", 1352 | "dev": true, 1353 | "requires": { 1354 | "inherits": "^2.0.3", 1355 | "minimalistic-assert": "^1.0.1" 1356 | } 1357 | }, 1358 | "hmac-drbg": { 1359 | "version": "1.0.1", 1360 | "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", 1361 | "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", 1362 | "dev": true, 1363 | "requires": { 1364 | "hash.js": "^1.0.3", 1365 | "minimalistic-assert": "^1.0.0", 1366 | "minimalistic-crypto-utils": "^1.0.1" 1367 | } 1368 | }, 1369 | "https-browserify": { 1370 | "version": "1.0.0", 1371 | "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", 1372 | "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", 1373 | "dev": true 1374 | }, 1375 | "ieee754": { 1376 | "version": "1.2.1", 1377 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 1378 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 1379 | "dev": true 1380 | }, 1381 | "inherits": { 1382 | "version": "2.0.4", 1383 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1384 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1385 | "dev": true 1386 | }, 1387 | "isarray": { 1388 | "version": "1.0.0", 1389 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1390 | "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", 1391 | "dev": true 1392 | }, 1393 | "isexe": { 1394 | "version": "2.0.0", 1395 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1396 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1397 | "dev": true 1398 | }, 1399 | "md5.js": { 1400 | "version": "1.3.5", 1401 | "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", 1402 | "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", 1403 | "dev": true, 1404 | "requires": { 1405 | "hash-base": "^3.0.0", 1406 | "inherits": "^2.0.1", 1407 | "safe-buffer": "^5.1.2" 1408 | } 1409 | }, 1410 | "miller-rabin": { 1411 | "version": "4.0.1", 1412 | "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", 1413 | "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", 1414 | "dev": true, 1415 | "requires": { 1416 | "bn.js": "^4.0.0", 1417 | "brorand": "^1.0.1" 1418 | }, 1419 | "dependencies": { 1420 | "bn.js": { 1421 | "version": "4.12.0", 1422 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 1423 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 1424 | "dev": true 1425 | } 1426 | } 1427 | }, 1428 | "minimalistic-assert": { 1429 | "version": "1.0.1", 1430 | "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", 1431 | "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", 1432 | "dev": true 1433 | }, 1434 | "minimalistic-crypto-utils": { 1435 | "version": "1.0.1", 1436 | "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", 1437 | "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", 1438 | "dev": true 1439 | }, 1440 | "node-libs-browser": { 1441 | "version": "2.2.1", 1442 | "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", 1443 | "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", 1444 | "dev": true, 1445 | "requires": { 1446 | "assert": "^1.1.1", 1447 | "browserify-zlib": "^0.2.0", 1448 | "buffer": "^4.3.0", 1449 | "console-browserify": "^1.1.0", 1450 | "constants-browserify": "^1.0.0", 1451 | "crypto-browserify": "^3.11.0", 1452 | "domain-browser": "^1.1.1", 1453 | "events": "^3.0.0", 1454 | "https-browserify": "^1.0.0", 1455 | "os-browserify": "^0.3.0", 1456 | "path-browserify": "0.0.1", 1457 | "process": "^0.11.10", 1458 | "punycode": "^1.2.4", 1459 | "querystring-es3": "^0.2.0", 1460 | "readable-stream": "^2.3.3", 1461 | "stream-browserify": "^2.0.1", 1462 | "stream-http": "^2.7.2", 1463 | "string_decoder": "^1.0.0", 1464 | "timers-browserify": "^2.0.4", 1465 | "tty-browserify": "0.0.0", 1466 | "url": "^0.11.0", 1467 | "util": "^0.11.0", 1468 | "vm-browserify": "^1.0.1" 1469 | } 1470 | }, 1471 | "object-assign": { 1472 | "version": "4.1.1", 1473 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1474 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 1475 | "dev": true 1476 | }, 1477 | "os-browserify": { 1478 | "version": "0.3.0", 1479 | "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", 1480 | "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", 1481 | "dev": true 1482 | }, 1483 | "pako": { 1484 | "version": "1.0.11", 1485 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", 1486 | "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", 1487 | "dev": true 1488 | }, 1489 | "parse-asn1": { 1490 | "version": "5.1.6", 1491 | "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", 1492 | "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", 1493 | "dev": true, 1494 | "requires": { 1495 | "asn1.js": "^5.2.0", 1496 | "browserify-aes": "^1.0.0", 1497 | "evp_bytestokey": "^1.0.0", 1498 | "pbkdf2": "^3.0.3", 1499 | "safe-buffer": "^5.1.1" 1500 | } 1501 | }, 1502 | "path-browserify": { 1503 | "version": "0.0.1", 1504 | "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", 1505 | "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", 1506 | "dev": true 1507 | }, 1508 | "pbkdf2": { 1509 | "version": "3.1.2", 1510 | "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", 1511 | "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", 1512 | "dev": true, 1513 | "requires": { 1514 | "create-hash": "^1.1.2", 1515 | "create-hmac": "^1.1.4", 1516 | "ripemd160": "^2.0.1", 1517 | "safe-buffer": "^5.0.1", 1518 | "sha.js": "^2.4.8" 1519 | } 1520 | }, 1521 | "process": { 1522 | "version": "0.11.10", 1523 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", 1524 | "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", 1525 | "dev": true 1526 | }, 1527 | "process-nextick-args": { 1528 | "version": "2.0.1", 1529 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 1530 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 1531 | "dev": true 1532 | }, 1533 | "public-encrypt": { 1534 | "version": "4.0.3", 1535 | "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", 1536 | "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", 1537 | "dev": true, 1538 | "requires": { 1539 | "bn.js": "^4.1.0", 1540 | "browserify-rsa": "^4.0.0", 1541 | "create-hash": "^1.1.0", 1542 | "parse-asn1": "^5.0.0", 1543 | "randombytes": "^2.0.1", 1544 | "safe-buffer": "^5.1.2" 1545 | }, 1546 | "dependencies": { 1547 | "bn.js": { 1548 | "version": "4.12.0", 1549 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 1550 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 1551 | "dev": true 1552 | } 1553 | } 1554 | }, 1555 | "punycode": { 1556 | "version": "1.4.1", 1557 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 1558 | "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", 1559 | "dev": true 1560 | }, 1561 | "querystring": { 1562 | "version": "0.2.0", 1563 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", 1564 | "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", 1565 | "dev": true 1566 | }, 1567 | "querystring-es3": { 1568 | "version": "0.2.1", 1569 | "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", 1570 | "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", 1571 | "dev": true 1572 | }, 1573 | "randombytes": { 1574 | "version": "2.1.0", 1575 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 1576 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 1577 | "dev": true, 1578 | "requires": { 1579 | "safe-buffer": "^5.1.0" 1580 | } 1581 | }, 1582 | "randomfill": { 1583 | "version": "1.0.4", 1584 | "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", 1585 | "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", 1586 | "dev": true, 1587 | "requires": { 1588 | "randombytes": "^2.0.5", 1589 | "safe-buffer": "^5.1.0" 1590 | } 1591 | }, 1592 | "readable-stream": { 1593 | "version": "2.3.7", 1594 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 1595 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 1596 | "dev": true, 1597 | "requires": { 1598 | "core-util-is": "~1.0.0", 1599 | "inherits": "~2.0.3", 1600 | "isarray": "~1.0.0", 1601 | "process-nextick-args": "~2.0.0", 1602 | "safe-buffer": "~5.1.1", 1603 | "string_decoder": "~1.1.1", 1604 | "util-deprecate": "~1.0.1" 1605 | }, 1606 | "dependencies": { 1607 | "safe-buffer": { 1608 | "version": "5.1.2", 1609 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1610 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1611 | "dev": true 1612 | }, 1613 | "string_decoder": { 1614 | "version": "1.1.1", 1615 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1616 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 1617 | "dev": true, 1618 | "requires": { 1619 | "safe-buffer": "~5.1.0" 1620 | } 1621 | } 1622 | } 1623 | }, 1624 | "readline-sync": { 1625 | "version": "1.4.10", 1626 | "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", 1627 | "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==", 1628 | "dev": true 1629 | }, 1630 | "ripemd160": { 1631 | "version": "2.0.2", 1632 | "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", 1633 | "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", 1634 | "dev": true, 1635 | "requires": { 1636 | "hash-base": "^3.0.0", 1637 | "inherits": "^2.0.1" 1638 | } 1639 | }, 1640 | "safe-buffer": { 1641 | "version": "5.2.1", 1642 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1643 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1644 | "dev": true 1645 | }, 1646 | "safer-buffer": { 1647 | "version": "2.1.2", 1648 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1649 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 1650 | "dev": true 1651 | }, 1652 | "setimmediate": { 1653 | "version": "1.0.5", 1654 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 1655 | "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", 1656 | "dev": true 1657 | }, 1658 | "sha.js": { 1659 | "version": "2.4.11", 1660 | "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", 1661 | "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", 1662 | "dev": true, 1663 | "requires": { 1664 | "inherits": "^2.0.1", 1665 | "safe-buffer": "^5.0.1" 1666 | } 1667 | }, 1668 | "shadow-cljs": { 1669 | "version": "2.20.2", 1670 | "resolved": "https://registry.npmjs.org/shadow-cljs/-/shadow-cljs-2.20.2.tgz", 1671 | "integrity": "sha512-2kzWnV1QM6KBetziCAkCf8BJdnDX2CwiAr4yhvOsiQpaNJcMzwMsJTX/gTHz58yQg0dV5uwPsIyBlvyIfl30rg==", 1672 | "dev": true, 1673 | "requires": { 1674 | "node-libs-browser": "^2.2.1", 1675 | "readline-sync": "^1.4.7", 1676 | "shadow-cljs-jar": "1.3.2", 1677 | "source-map-support": "^0.4.15", 1678 | "which": "^1.3.1", 1679 | "ws": "^7.4.6" 1680 | } 1681 | }, 1682 | "shadow-cljs-jar": { 1683 | "version": "1.3.2", 1684 | "resolved": "https://registry.npmjs.org/shadow-cljs-jar/-/shadow-cljs-jar-1.3.2.tgz", 1685 | "integrity": "sha512-XmeffAZHv8z7451kzeq9oKh8fh278Ak+UIOGGrapyqrFBB773xN8vMQ3O7J7TYLnb9BUwcqadKkmgaq7q6fhZg==", 1686 | "dev": true 1687 | }, 1688 | "source-map": { 1689 | "version": "0.5.7", 1690 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 1691 | "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", 1692 | "dev": true 1693 | }, 1694 | "source-map-support": { 1695 | "version": "0.4.18", 1696 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", 1697 | "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", 1698 | "dev": true, 1699 | "requires": { 1700 | "source-map": "^0.5.6" 1701 | } 1702 | }, 1703 | "stream-browserify": { 1704 | "version": "2.0.2", 1705 | "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", 1706 | "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", 1707 | "dev": true, 1708 | "requires": { 1709 | "inherits": "~2.0.1", 1710 | "readable-stream": "^2.0.2" 1711 | } 1712 | }, 1713 | "stream-http": { 1714 | "version": "2.8.3", 1715 | "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", 1716 | "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", 1717 | "dev": true, 1718 | "requires": { 1719 | "builtin-status-codes": "^3.0.0", 1720 | "inherits": "^2.0.1", 1721 | "readable-stream": "^2.3.6", 1722 | "to-arraybuffer": "^1.0.0", 1723 | "xtend": "^4.0.0" 1724 | } 1725 | }, 1726 | "string_decoder": { 1727 | "version": "1.3.0", 1728 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 1729 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 1730 | "dev": true, 1731 | "requires": { 1732 | "safe-buffer": "~5.2.0" 1733 | } 1734 | }, 1735 | "timers-browserify": { 1736 | "version": "2.0.12", 1737 | "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", 1738 | "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", 1739 | "dev": true, 1740 | "requires": { 1741 | "setimmediate": "^1.0.4" 1742 | } 1743 | }, 1744 | "to-arraybuffer": { 1745 | "version": "1.0.1", 1746 | "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", 1747 | "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", 1748 | "dev": true 1749 | }, 1750 | "tty-browserify": { 1751 | "version": "0.0.0", 1752 | "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", 1753 | "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", 1754 | "dev": true 1755 | }, 1756 | "url": { 1757 | "version": "0.11.0", 1758 | "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", 1759 | "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", 1760 | "dev": true, 1761 | "requires": { 1762 | "punycode": "1.3.2", 1763 | "querystring": "0.2.0" 1764 | }, 1765 | "dependencies": { 1766 | "punycode": { 1767 | "version": "1.3.2", 1768 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", 1769 | "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", 1770 | "dev": true 1771 | } 1772 | } 1773 | }, 1774 | "util": { 1775 | "version": "0.11.1", 1776 | "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", 1777 | "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", 1778 | "dev": true, 1779 | "requires": { 1780 | "inherits": "2.0.3" 1781 | }, 1782 | "dependencies": { 1783 | "inherits": { 1784 | "version": "2.0.3", 1785 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1786 | "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", 1787 | "dev": true 1788 | } 1789 | } 1790 | }, 1791 | "util-deprecate": { 1792 | "version": "1.0.2", 1793 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1794 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 1795 | "dev": true 1796 | }, 1797 | "vm-browserify": { 1798 | "version": "1.1.2", 1799 | "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", 1800 | "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", 1801 | "dev": true 1802 | }, 1803 | "which": { 1804 | "version": "1.3.1", 1805 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 1806 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 1807 | "dev": true, 1808 | "requires": { 1809 | "isexe": "^2.0.0" 1810 | } 1811 | }, 1812 | "ws": { 1813 | "version": "7.5.10", 1814 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", 1815 | "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", 1816 | "dev": true, 1817 | "requires": {} 1818 | }, 1819 | "xtend": { 1820 | "version": "4.0.2", 1821 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 1822 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 1823 | "dev": true 1824 | } 1825 | } 1826 | } 1827 | --------------------------------------------------------------------------------