From d02b577c69a782843f3b5272cccc9a7a2f8d9540 Mon Sep 17 00:00:00 2001 From: Asher Gomez Date: Mon, 3 Apr 2023 13:45:37 +1000 Subject: [PATCH] BREAKING(encoding/varint): remove deprecated APIs (#3282) --- .github/workflows/ci.yml | 8 +- .gitignore | 1 - README.md | 3 +- _tools/check_deprecation.ts | 1 - _tools/check_licence.ts | 1 - deno.json | 3 - encoding/varint.ts | 2 - encoding/varint/_wasm/.rustfmt.toml | 4 - encoding/varint/_wasm/Cargo.lock | 126 ------ encoding/varint/_wasm/Cargo.toml | 17 - .../lib/deno_std_wasm_varint.generated.mjs | 401 ------------------ encoding/varint/_wasm/rust-toolchain.toml | 3 - encoding/varint/_wasm/src/lib.rs | 45 -- encoding/varint/mod.ts | 104 ----- encoding/varint/test.ts | 103 ----- 15 files changed, 5 insertions(+), 817 deletions(-) delete mode 100644 encoding/varint/_wasm/.rustfmt.toml delete mode 100644 encoding/varint/_wasm/Cargo.lock delete mode 100644 encoding/varint/_wasm/Cargo.toml delete mode 100644 encoding/varint/_wasm/lib/deno_std_wasm_varint.generated.mjs delete mode 100644 encoding/varint/_wasm/rust-toolchain.toml delete mode 100644 encoding/varint/_wasm/src/lib.rs delete mode 100644 encoding/varint/mod.ts delete mode 100644 encoding/varint/test.ts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b4c049b95..3c864993a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -102,7 +102,7 @@ jobs: runs-on: ubuntu-22.04 strategy: matrix: - module: [ { name: crypto, path: ./crypto/_wasm }, { name: varint, path: ./encoding/varint/_wasm } ] + module: [ crypto/_wasm ] steps: - name: Clone repository uses: actions/checkout@v3 @@ -117,10 +117,10 @@ jobs: run: |- set -o errexit shopt -s inherit_errexit - declare modifications="$(git diff --name-only HEAD~ -- ${{ matrix.module.path }})" + declare modifications="$(git diff --name-only HEAD~ -- ${{ matrix.module }})" declare modified="$([[ "$modifications" ]] && echo true || echo false)" echo "modified=$modified" >> $GITHUB_OUTPUT - echo "${{ matrix.module.name }} WASM source modified in this commit? $modified" + echo "${{ matrix.module }} WASM source modified in this commit? $modified" echo "$modifications" - name: Set up Deno @@ -138,4 +138,4 @@ jobs: - name: Rebuild Wasm and verify it hasn't changed if: success() && steps.source.outputs.modified == 'true' - run: deno task build:${{ matrix.module.name }} --check + run: deno task build:${{ matrix.module }} --check diff --git a/.gitignore b/.gitignore index 7b14caeb9..b53b70725 100644 --- a/.gitignore +++ b/.gitignore @@ -4,5 +4,4 @@ .vim **/cov/ /crypto/_wasm/target -/encoding/varint/_wasm/target deno.lock diff --git a/README.md b/README.md index 6d41d6233..7e7b6bcc8 100644 --- a/README.md +++ b/README.md @@ -90,7 +90,7 @@ Ensure there is a related issue and it is referenced in the PR text. _About CI checks_: -We currently have 7 checks on CI. Each PR should pass all of these checks to be +We currently have 6 checks on CI. Each PR should pass all of these checks to be accepted. - test with Deno canary on Windows @@ -98,7 +98,6 @@ accepted. - test with Deno canary on macOS - lint - wasm crypto check -- wasm varint check - CLA _For maintainers_: diff --git a/_tools/check_deprecation.ts b/_tools/check_deprecation.ts index c4fedb144..d6477fdd3 100644 --- a/_tools/check_deprecation.ts +++ b/_tools/check_deprecation.ts @@ -16,7 +16,6 @@ const EXCLUDED_PATHS = [ "http/_negotiation", "crypto/_wasm", "crypto/_fnv", - "encoding/varint/_wasm", "encoding/_yaml", "encoing/_toml", "_tools", diff --git a/_tools/check_licence.ts b/_tools/check_licence.ts index 5b33637aa..baaaaff6c 100644 --- a/_tools/check_licence.ts +++ b/_tools/check_licence.ts @@ -8,7 +8,6 @@ const EXCLUDED_DIRS = [ "**/fs/testdata", "**/http/testdata", "**/crypto/_wasm/target", - "**/encoding/varint/_wasm/target", ]; const ROOT = new URL("../", import.meta.url); diff --git a/deno.json b/deno.json index 0f2798459..6bec312ed 100644 --- a/deno.json +++ b/deno.json @@ -9,7 +9,6 @@ "exclude": [ ".git", "crypto/_wasm/target", - "encoding/varint/_wasm/target", "cov", "jsonc/testdata", "front_matter/testdata", @@ -23,7 +22,6 @@ "exclude": [ ".git", "crypto/_wasm/target", - "encoding/varint/_wasm/target", "jsonc/testdata", "front_matter/testdata", "cov", @@ -40,7 +38,6 @@ "lint:check-assertions": "deno run --allow-read --allow-net ./_tools/check_assertions.ts", "lint": "deno lint && deno task fmt:licence-headers --check && deno task lint:deprecations && deno task lint:doc-imports && deno task lint:check-assertions", "build:crypto": "deno task --cwd crypto/_wasm wasmbuild", - "build:varint": "deno task --cwd encoding/varint/_wasm wasmbuild", "wasmbuild": "deno run --unstable -A https://deno.land/x/wasmbuild@0.10.3/main.ts --js-ext mjs --sync" } } diff --git a/encoding/varint.ts b/encoding/varint.ts index 9985e6b77..9e886d45d 100644 --- a/encoding/varint.ts +++ b/encoding/varint.ts @@ -7,8 +7,6 @@ * @module */ -export * from "./varint/mod.ts"; - // This implementation is a port of https://deno.land/x/varint@v2.0.0 by @keithamus // This module is browser compatible. diff --git a/encoding/varint/_wasm/.rustfmt.toml b/encoding/varint/_wasm/.rustfmt.toml deleted file mode 100644 index 00157aef2..000000000 --- a/encoding/varint/_wasm/.rustfmt.toml +++ /dev/null @@ -1,4 +0,0 @@ -# Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. -max_width = 80 -tab_spaces = 2 -edition = "2018" diff --git a/encoding/varint/_wasm/Cargo.lock b/encoding/varint/_wasm/Cargo.lock deleted file mode 100644 index d13118307..000000000 --- a/encoding/varint/_wasm/Cargo.lock +++ /dev/null @@ -1,126 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "bumpalo" -version = "3.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "deno_std_wasm_varint" -version = "0.0.0" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "log" -version = "0.4.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "once_cell" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1" - -[[package]] -name = "proc-macro2" -version = "1.0.39" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c54b25569025b7fc9651de43004ae593a75ad88543b17178aa5e1b9c4f15f56f" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "syn" -version = "1.0.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbaf6116ab8924f39d52792136fb74fd60a80194cf1b1c6ffa6453eef1c3f942" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "unicode-ident" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee" - -[[package]] -name = "wasm-bindgen" -version = "0.2.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" -dependencies = [ - "cfg-if", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" diff --git a/encoding/varint/_wasm/Cargo.toml b/encoding/varint/_wasm/Cargo.toml deleted file mode 100644 index eac411c8d..000000000 --- a/encoding/varint/_wasm/Cargo.toml +++ /dev/null @@ -1,17 +0,0 @@ -[package] -name = "deno_std_wasm_varint" -repository = "https://github.com/denoland/deno_std" -authors = ["the Deno authors"] -license = "MIT" -version = "0.0.0" -edition = "2021" - -[lib] -crate-type = ["cdylib"] - -[profile.release] -lto = true -opt-level = 3 - -[dependencies] -wasm-bindgen = "0.2.83" \ No newline at end of file diff --git a/encoding/varint/_wasm/lib/deno_std_wasm_varint.generated.mjs b/encoding/varint/_wasm/lib/deno_std_wasm_varint.generated.mjs deleted file mode 100644 index b9cce2a91..000000000 --- a/encoding/varint/_wasm/lib/deno_std_wasm_varint.generated.mjs +++ /dev/null @@ -1,401 +0,0 @@ -// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. -// @generated file from wasmbuild -- do not edit -// deno-lint-ignore-file -// deno-fmt-ignore-file -// source-hash: af20f8016433d2846e0f3c0999b2fbb7a648c299 -let wasm; - -let cachedInt32Memory0 = new Int32Array(); - -function getInt32Memory0() { - if (cachedInt32Memory0.byteLength === 0) { - cachedInt32Memory0 = new Int32Array(wasm.memory.buffer); - } - return cachedInt32Memory0; -} - -let cachedUint8Memory0 = new Uint8Array(); - -function getUint8Memory0() { - if (cachedUint8Memory0.byteLength === 0) { - cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); - } - return cachedUint8Memory0; -} - -function getArrayU8FromWasm0(ptr, len) { - return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len); -} -/** - * @param {number} val - * @returns {Uint8Array} - */ -export function encode_u32(val) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.encode_u32(retptr, val); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var v0 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v0; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } -} - -/** - * @param {bigint} val - * @returns {Uint8Array} - */ -export function encode_u64(val) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.encode_u64(retptr, val); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var v0 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v0; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } -} - -let WASM_VECTOR_LEN = 0; - -function passArray8ToWasm0(arg, malloc) { - const ptr = malloc(arg.length * 1); - getUint8Memory0().set(arg, ptr / 1); - WASM_VECTOR_LEN = arg.length; - return ptr; -} -/** - * @param {Uint8Array} buff - * @returns {number} - */ -export function decode_u32(buff) { - const ptr0 = passArray8ToWasm0(buff, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.decode_u32(ptr0, len0); - return ret >>> 0; -} - -/** - * @param {Uint8Array} buff - * @returns {bigint} - */ -export function decode_u64(buff) { - const ptr0 = passArray8ToWasm0(buff, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.decode_u64(ptr0, len0); - return BigInt.asUintN(64, ret); -} - -const imports = { - __wbindgen_placeholder__: {}, -}; - -/** Instantiates an instance of the Wasm module returning its functions. - * @remarks It is safe to call this multiple times and once successfully - * loaded it will always return a reference to the same object. - */ -export function instantiate() { - return instantiateWithInstance().exports; -} - -let instanceWithExports; - -/** Instantiates an instance of the Wasm module along with its exports. - * @remarks It is safe to call this multiple times and once successfully - * loaded it will always return a reference to the same object. - * @returns {{ - * instance: WebAssembly.Instance; - * exports: { encode_u32: typeof encode_u32; encode_u64: typeof encode_u64; decode_u32: typeof decode_u32; decode_u64: typeof decode_u64 } - * }} - */ -export function instantiateWithInstance() { - if (instanceWithExports == null) { - const instance = instantiateInstance(); - wasm = instance.exports; - cachedInt32Memory0 = new Int32Array(wasm.memory.buffer); - cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); - instanceWithExports = { - instance, - exports: { encode_u32, encode_u64, decode_u32, decode_u64 }, - }; - } - return instanceWithExports; -} - -/** Gets if the Wasm module has been instantiated. */ -export function isInstantiated() { - return instanceWithExports != null; -} - -function instantiateInstance() { - const wasmBytes = base64decode( -"\ -AGFzbQEAAAABvoCAgAALYAAAYAF/AGABfwF/YAF/AX5gAn9/AGACf38Bf2ACf38BfmADf39/AX9gBH\ -9/f38AYAR/f39/AX9gAn9+AAOfgICAAB4CAQQFBQcEAQQKBAgFBgQBAAkABAEBAQIEAgcDAAEEhYCA\ -gAABcAEEBAWDgICAAAEAEQaJgICAAAF/AUGAgMAACweGgYCAAAgGbWVtb3J5AgAKZW5jb2RlX3UzMg\ -AICmVuY29kZV91NjQACQpkZWNvZGVfdTMyAAwKZGVjb2RlX3U2NAANH19fd2JpbmRnZW5fYWRkX3Rv\ -X3N0YWNrX3BvaW50ZXIAGQ9fX3diaW5kZ2VuX2ZyZWUAGBFfX3diaW5kZ2VuX21hbGxvYwAXCYmAgI\ -AAAQBBAQsDBB0bCojfgIAAHtgjAgh/AX4CQAJAAkACQAJAIABB9QFJDQBBACEBIABBzf97Tw0EIABB\ -C2oiAEF4cSECQQAoAuSDQCIDRQ0DQQAhBAJAIAJBgAJJDQBBHyEEIAJB////B0sNACACQQYgAEEIdm\ -ciAGt2QQFxIABBAXRrQT5qIQQLQQAgAmshAQJAIARBAnRB8IXAAGooAgAiAEUNAEEAIQUgAkEAQRkg\ -BEEBdmtBH3EgBEEfRht0IQZBACEHA0ACQCAAKAIEQXhxIgggAkkNACAIIAJrIgggAU8NACAIIQEgAC\ -EHIAgNAEEAIQEgACEHDAQLIABBFGooAgAiCCAFIAggACAGQR12QQRxakEQaigCACIARxsgBSAIGyEF\ -IAZBAXQhBiAADQALAkAgBUUNACAFIQAMAwsgBw0DC0EAIQcgA0ECIAR0IgBBACAAa3JxIgBFDQMgAE\ -EAIABrcWhBAnRB8IXAAGooAgAiAA0BDAMLAkACQAJAAkACQEEAKALgg0AiBkEQIABBC2pBeHEgAEEL\ -SRsiAkEDdiIBdiIAQQNxDQAgAkEAKALwhkBNDQcgAA0BQQAoAuSDQCIARQ0HIABBACAAa3FoQQJ0Qf\ -CFwABqKAIAIgcoAgRBeHEhAQJAIAcoAhAiAA0AIAdBFGooAgAhAAsgASACayEFAkAgAEUNAANAIAAo\ -AgRBeHEgAmsiCCAFSSEGAkAgACgCECIBDQAgAEEUaigCACEBCyAIIAUgBhshBSAAIAcgBhshByABIQ\ -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\ -QQAgADYC/IZAQQBBACgC9IZAIAJqIgI2AvSGQCAAIAJBAXI2AgQMBQtBACAAIAJrIgE2AvSGQEEAQQ\ -AoAvyGQCIAIAJqIgU2AvyGQCAFIAFBAXI2AgQgACACQQNyNgIEIABBCGohAQwHC0EAIAY2ApyHQAwE\ -CyAAIAcgCGo2AgRBAEEAKAL8hkAiAEEPakF4cSIBQXhqNgL8hkBBACAAIAFrQQAoAvSGQCAIaiIFak\ -EIaiIGNgL0hkAgAUF8aiAGQQFyNgIAIAAgBWpBKDYCBEEAQYCAgAE2ApiHQAwEC0EAIAA2AviGQEEA\ -QQAoAvCGQCACaiICNgLwhkAgACACQQFyNgIEIAAgAmogAjYCAAwBCyAFIAFBfnE2AgQgACACQQFyNg\ -IEIAAgAmogAjYCAAJAIAJBgAJJDQAgACACEAYMAQsgAkF4cUHog8AAaiEBAkACQEEAKALgg0AiBUEB\ -IAJBA3Z0IgJxRQ0AIAEoAgghAgwBC0EAIAUgAnI2AuCDQCABIQILIAEgADYCCCACIAA2AgwgACABNg\ -IMIAAgAjYCCAsgBkEIag8LQQBB/x82AqCHQEEAIAg2AoyHQEEAIAY2AoiHQEEAQeiDwAA2AvSDQEEA\ -QfCDwAA2AvyDQEEAQeiDwAA2AvCDQEEAQfiDwAA2AoSEQEEAQfCDwAA2AviDQEEAQYCEwAA2AoyEQE\ -EAQfiDwAA2AoCEQEEAQYiEwAA2ApSEQEEAQYCEwAA2AoiEQEEAQZCEwAA2ApyEQEEAQYiEwAA2ApCE\ -QEEAQZiEwAA2AqSEQEEAQZCEwAA2ApiEQEEAQaCEwAA2AqyEQEEAQZiEwAA2AqCEQEEAQQA2ApSHQE\ -EAQaiEwAA2ArSEQEEAQaCEwAA2AqiEQEEAQaiEwAA2ArCEQEEAQbCEwAA2AryEQEEAQbCEwAA2AriE\ -QEEAQbiEwAA2AsSEQEEAQbiEwAA2AsCEQEEAQcCEwAA2AsyEQEEAQcCEwAA2AsiEQEEAQciEwAA2At\ -SEQEEAQciEwAA2AtCEQEEAQdCEwAA2AtyEQEEAQdCEwAA2AtiEQEEAQdiEwAA2AuSEQEEAQdiEwAA2\ -AuCEQEEAQeCEwAA2AuyEQEEAQeCEwAA2AuiEQEEAQeiEwAA2AvSEQEEAQfCEwAA2AvyEQEEAQeiEwA\ -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\ -aigCACECAkACQCABKAIEDgIAAAELIAINACAAKAIELQAQEA8ACyAAKAIELQAQEA8ACywBAX8jAEEQay\ -IBJAAgAUEIaiAAQQhqKAIANgIAIAEgACkCADcDACABEBUACycAAkAgAEH8////B0sNAAJAIAANAEEE\ -DwsgABAAIgBFDQAgAA8LAAsOAAJAIAFFDQAgABABCwsLACAAIwBqJAAjAAsKACAAIAEgAhAFCwwAQr\ -iJz5eJxtH4TAsDAAALAgALC+KDgIAAAQBBgIDAAAvYA3NyYy9saWIucnMAAAAAEAAKAAAAIwAAABAA\ -AABsaWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjLnJzY2FwYWNpdHkgb3ZlcmZsb3cAAAA4ABAAEQAAAB\ -wAEAAcAAAABgIAAAUAAABpbmRleCBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzICBidXQgdGhlIGlu\ -ZGV4IGlzIAAAZAAQACAAAACEABAAEgAAAAIAAAAAAAAAAQAAAAMAAAAwMDAxMDIwMzA0MDUwNjA3MD\ -gwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3\ -MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2Nj\ -Y3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5\ -Njk3OTg5OWNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWVsaWJyYXJ5L3\ -N0ZC9zcmMvcGFuaWNraW5nLnJzAKsBEAAcAAAARwIAAA8AAAAA8IqAgAAEbmFtZQHlioCAAB4AOmRs\ -bWFsbG9jOjpkbG1hbGxvYzo6RGxtYWxsb2M8QT46Om1hbGxvYzo6aGE5NmZjZWZiYjQ0ZDZkYTUBOG\ -RsbWFsbG9jOjpkbG1hbGxvYzo6RGxtYWxsb2M8QT46OmZyZWU6OmhhNDczN2I3Zjg0OTcwYWRkAkFk\ -bG1hbGxvYzo6ZGxtYWxsb2M6OkRsbWFsbG9jPEE+OjpkaXNwb3NlX2NodW5rOjpoM2I2YzRlNzRmYT\ -hhYTA0YgMOX19ydXN0X3JlYWxsb2METmNvcmU6OmZtdDo6bnVtOjppbXA6OjxpbXBsIGNvcmU6OmZt\ -dDo6RGlzcGxheSBmb3IgdTMyPjo6Zm10OjpoYzUwYTFjOWI4MmViNDQ0NgUxY29tcGlsZXJfYnVpbH\ -RpbnM6Om1lbTo6bWVtY3B5OjpoNDVlYjUzNjAxZDlkNmJmMAZGZGxtYWxsb2M6OmRsbWFsbG9jOjpE\ -bG1hbGxvYzxBPjo6aW5zZXJ0X2xhcmdlX2NodW5rOjpoYjEyOTkwZjkyNTM4ZmJiZgdGZGxtYWxsb2\ -M6OmRsbWFsbG9jOjpEbG1hbGxvYzxBPjo6dW5saW5rX2xhcmdlX2NodW5rOjpoYmU4ZDM2YTlmNDA2\ -MGNlZQgKZW5jb2RlX3UzMgkKZW5jb2RlX3U2NApAYWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+Oj\ -pyZXNlcnZlX2Zvcl9wdXNoOjpoNTIyMDQwZjNjNTllY2IyNQsuYWxsb2M6OnJhd192ZWM6OmZpbmlz\ -aF9ncm93OjpoMGNlNjZlOWRlMGQ5YjNiMQwKZGVjb2RlX3UzMg0KZGVjb2RlX3U2NA42Y29yZTo6cG\ -FuaWNraW5nOjpwYW5pY19ib3VuZHNfY2hlY2s6OmgxZmI3YTZkZjEwMzMxMjc5DzdzdGQ6OnBhbmlj\ -a2luZzo6cnVzdF9wYW5pY193aXRoX2hvb2s6Omg3MGEwZTE5NWY0ZGIyYTI5ECljb3JlOjpwYW5pY2\ -tpbmc6OnBhbmljOjpoOGFmMDQ2Mzk3YTJiZjY1ZBFDY29yZTo6Zm10OjpGb3JtYXR0ZXI6OnBhZF9p\ -bnRlZ3JhbDo6d3JpdGVfcHJlZml4OjpoNjBiMWI1MDNlNjZmMzJiMRI0YWxsb2M6OnJhd192ZWM6Om\ -NhcGFjaXR5X292ZXJmbG93OjpoNGIyNzVjYjNjMTBiMGE3OBMtY29yZTo6cGFuaWNraW5nOjpwYW5p\ -Y19mbXQ6Omg3NTFiZTgwNzc5ZDQyYjUzFBFydXN0X2JlZ2luX3Vud2luZBVDc3RkOjpwYW5pY2tpbm\ -c6OmJlZ2luX3BhbmljX2hhbmRsZXI6Ont7Y2xvc3VyZX19OjpoZGNmYzgxOWNlODM2ODI5ZRZJc3Rk\ -OjpzeXNfY29tbW9uOjpiYWNrdHJhY2U6Ol9fcnVzdF9lbmRfc2hvcnRfYmFja3RyYWNlOjpoNTNjYW\ -JhZmFiNWIwOWFkYRcRX193YmluZGdlbl9tYWxsb2MYD19fd2JpbmRnZW5fZnJlZRkfX193YmluZGdl\ -bl9hZGRfdG9fc3RhY2tfcG9pbnRlchoGbWVtY3B5GzE8VCBhcyBjb3JlOjphbnk6OkFueT46OnR5cG\ -VfaWQ6OmgxM2M3ODU5NjY4OGY2N2IyHApydXN0X3BhbmljHW9jb3JlOjpwdHI6OmRyb3BfaW5fcGxh\ -Y2U8JmNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpjb3BpZWQ6OkNvcGllZDxjb3JlOjpzbGljZTo6aXRlcj\ -o6SXRlcjx1OD4+Pjo6aDA1ZmEwZjk3MWI0NmIwZTcA74CAgAAJcHJvZHVjZXJzAghsYW5ndWFnZQEE\ -UnVzdAAMcHJvY2Vzc2VkLWJ5AwVydXN0Yx0xLjY1LjAgKDg5N2UzNzU1MyAyMDIyLTExLTAyKQZ3YW\ -xydXMGMC4xOS4wDHdhc20tYmluZGdlbgYwLjIuODM=\ -", - ); - const wasmModule = new WebAssembly.Module(wasmBytes); - return new WebAssembly.Instance(wasmModule, imports); -} - -function base64decode(b64) { - const binString = atob(b64); - const size = binString.length; - const bytes = new Uint8Array(size); - for (let i = 0; i < size; i++) { - bytes[i] = binString.charCodeAt(i); - } - return bytes; -} diff --git a/encoding/varint/_wasm/rust-toolchain.toml b/encoding/varint/_wasm/rust-toolchain.toml deleted file mode 100644 index 2403dd37d..000000000 --- a/encoding/varint/_wasm/rust-toolchain.toml +++ /dev/null @@ -1,3 +0,0 @@ -[toolchain] -channel = "1.65.0" -targets = ["wasm32-unknown-unknown"] \ No newline at end of file diff --git a/encoding/varint/_wasm/src/lib.rs b/encoding/varint/_wasm/src/lib.rs deleted file mode 100644 index 70d50236f..000000000 --- a/encoding/varint/_wasm/src/lib.rs +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. -use wasm_bindgen::prelude::*; - -#[wasm_bindgen] -pub fn encode_u32(val: u32) -> Vec { - encode_u64(val as u64) -} - -#[wasm_bindgen] -pub fn encode_u64(mut val: u64) -> Vec { - let mut buff = Vec::with_capacity(10); - loop { - // If MSB == 0 - if (val & !0x7F) == 0 { - buff.push(val as u8); - break; - } - buff.push((val & 0x7F | 0x80) as u8); - val >>= 7; - } - - buff -} - -#[wasm_bindgen] -pub fn decode_u32(buff: Vec) -> u32 { - decode_u64(buff) as u32 -} - -#[wasm_bindgen] -pub fn decode_u64(buff: Vec) -> u64 { - let mut value: u64 = 0; - let mut length = 0; - loop { - let byte = buff[length] as u64; - value |= (byte & 0x7F) << (7 * length); - length += 1; - - if byte & 0x80 != 0x80 { - break; - } - } - - value -} diff --git a/encoding/varint/mod.ts b/encoding/varint/mod.ts deleted file mode 100644 index d8d0f3a66..000000000 --- a/encoding/varint/mod.ts +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. -// This module is browser compatible. - -/** - * Functions for encoding typed integers in array buffers. - * - * @module - */ - -import { instantiate } from "./_wasm/lib/deno_std_wasm_varint.generated.mjs"; - -const U32MAX = 4_294_967_295; -const U64MAX = 18_446_744_073_709_551_615n; - -/** - * @deprecated (will be removed after 0.181.0) Use `encode` from `std/encoding/varint.ts` instead. - * - * Encodes the given `number` into `Uint8Array` with LEB128. The number needs to be in the range of `0` and `0xffffffff`. - * ```ts - * import { encodeU32 } from "https://deno.land/std@$STD_VERSION/encoding/varint/mod.ts"; - * - * const encodedValue = encodeU32(42); - * // Do something with the encoded value - * ``` - */ -export function encodeU32(val: number): Uint8Array { - if (!Number.isInteger(val)) throw new TypeError("Floats are not supported"); - if (val < 0) throw new RangeError("Signed integers are not supported"); - if (val > U32MAX) { - throw new RangeError( - `The given number exceeds the limit of unsigned integer: ${val}`, - ); - } - const wasm = instantiate(); - return wasm.encode_u32(val); -} - -/** - * @deprecated (will be removed after 0.181.0) Use `encode()` from `std/encoding/varint.ts` instead. - * - * Encodes the given `BigInt` into `Uint8Array` with LEB128. The number needs to be in the range of `0` and `0xffffffffffffffff`. - * ```ts - * import { encodeU64 } from "https://deno.land/std@$STD_VERSION/encoding/varint/mod.ts"; - * - * const encodedValue = encodeU64(42n); - * // Do something with the encoded value - * ``` - */ -export function encodeU64(val: bigint): Uint8Array { - if (val < 0) throw new RangeError("Signed integers are not supported"); - if (val > U64MAX) { - throw new RangeError( - `The given number exceeds the limit of unsigned long integer: ${val}`, - ); - } - const wasm = instantiate(); - return wasm.encode_u64(val); -} - -/** - * @deprecated (will be removed after 0.181.0) Use `decode32()` from `std/encoding/varint.ts` instead. - * - * Decodes the given `Uint8Array` into a `number` with LEB128. - * ```ts - * import { decodeU32 } from "https://deno.land/std@$STD_VERSION/encoding/varint/mod.ts"; - * const bytes = Uint8Array.from([221, 199, 1]); - * const decodedValue = decodeU32(bytes); - * - * // Do something with the decoded value - * console.log(decodedValue === 25565); - * ``` - */ -export function decodeU32(val: Uint8Array): number { - if (val.length > 5) throw RangeError("Too many bytes"); - const wasm = instantiate(); - try { - return wasm.decode_u32(val); - } catch { - throw new RangeError(`Bad varint: ${val}`); - } -} - -/** - * @deprecated (will be removed after 0.181.0) Use `decode64()` from `std/encoding/varint.ts` instead. - * - * Decodes the given `Uint8Array` into a `BigInt` with LEB128. - * ```ts - * import { decodeU64 } from "https://deno.land/std@$STD_VERSION/encoding/varint/mod.ts"; - * const bytes = Uint8Array.from([221, 199, 1]); - * const decodedValue = decodeU64(bytes); - * - * // Do something with the decoded value - * console.log(decodedValue === 25565n); - * ``` - */ -export function decodeU64(val: Uint8Array): bigint { - if (val.length > 10) throw RangeError("Too many bytes"); - const wasm = instantiate(); - try { - return wasm.decode_u64(val); - } catch { - throw new RangeError(`Bad varint: ${val}`); - } -} diff --git a/encoding/varint/test.ts b/encoding/varint/test.ts deleted file mode 100644 index 3854914d5..000000000 --- a/encoding/varint/test.ts +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. -import { decodeU32, decodeU64, encodeU32, encodeU64 } from "./mod.ts"; -import { assertEquals, assertThrows } from "../../testing/asserts.ts"; - -const U32MAX = 4_294_967_295; -const U64MAX = 18_446_744_073_709_551_615n; - -Deno.test({ - name: "VarInt encode", - fn: function () { - assertEquals(encodeU32(0), new Uint8Array([0])); - assertEquals(encodeU32(1), new Uint8Array([1])); - assertEquals(encodeU32(127), new Uint8Array([127])); - assertEquals(encodeU32(128), new Uint8Array([128, 1])); - assertEquals(encodeU32(255), new Uint8Array([255, 1])); - assertEquals(encodeU32(25565), new Uint8Array([221, 199, 1])); - assertEquals(encodeU32(2097151), new Uint8Array([255, 255, 127])); - assertEquals( - encodeU32(2147483647), - new Uint8Array([255, 255, 255, 255, 7]), - ); - - assertThrows(() => encodeU32(-1), RangeError, "Signed"); - assertThrows(() => encodeU32(U32MAX + 1), RangeError); - assertThrows(() => encodeU32(1.1), TypeError); - }, -}); - -Deno.test({ - name: "VarInt decode", - fn: function () { - assertEquals(decodeU32(new Uint8Array([0])), 0); - assertEquals(decodeU32(new Uint8Array([1])), 1); - assertEquals(decodeU32(new Uint8Array([127])), 127); - assertEquals(decodeU32(new Uint8Array([128, 1])), 128); - assertEquals(decodeU32(new Uint8Array([255, 1])), 255); - assertEquals(decodeU32(new Uint8Array([221, 199, 1])), 25565); - assertEquals( - decodeU32(new Uint8Array([255, 255, 127])), - 2097151, - ); - assertEquals( - decodeU32(new Uint8Array([255, 255, 255, 255, 7])), - 2147483647, - ); - assertThrows(() => decodeU32(new Uint8Array(6)), RangeError, "Too"); - assertThrows( - () => decodeU32(new Uint8Array([255, 255])), - RangeError, - "Bad", - ); - }, -}); - -Deno.test({ - name: "VarLong encode", - fn: function () { - assertEquals(encodeU64(0n), new Uint8Array([0])); - assertEquals(encodeU64(1n), new Uint8Array([1])); - assertEquals(encodeU64(2n), new Uint8Array([2])); - assertEquals(encodeU64(127n), new Uint8Array([127])); - assertEquals(encodeU64(128n), new Uint8Array([128, 1])); - assertEquals(encodeU64(255n), new Uint8Array([255, 1])); - assertEquals( - encodeU64(2147483647n), - new Uint8Array([255, 255, 255, 255, 7]), - ); - assertEquals( - encodeU64(9223372036854775807n), - new Uint8Array([255, 255, 255, 255, 255, 255, 255, 255, 127]), - ); - assertThrows(() => encodeU64(-1n), RangeError, "Signed"); - assertThrows(() => encodeU64(U64MAX + 1n), RangeError); - }, -}); - -Deno.test({ - name: "VarLong decode", - fn: function () { - assertEquals(decodeU64(new Uint8Array([0])), 0n); - assertEquals(decodeU64(new Uint8Array([1])), 1n); - assertEquals(decodeU64(new Uint8Array([2])), 2n); - assertEquals(decodeU64(new Uint8Array([127])), 127n); - assertEquals(decodeU64(new Uint8Array([128, 1])), 128n); - assertEquals(decodeU64(new Uint8Array([255, 1])), 255n); - assertEquals( - decodeU64(new Uint8Array([255, 255, 255, 255, 7])), - 2147483647n, - ); - assertEquals( - decodeU64( - new Uint8Array([255, 255, 255, 255, 255, 255, 255, 255, 127]), - ), - 9223372036854775807n, - ); - assertThrows(() => decodeU32(new Uint8Array(11)), RangeError, "Too"); - assertThrows( - () => decodeU32(new Uint8Array([255, 255])), - RangeError, - "Bad", - ); - }, -});