@pezkuwi/util 14.0.1 → 14.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +4 -4
- package/array/chunk.d.ts +15 -0
- package/array/chunk.js +27 -0
- package/array/filter.d.ts +16 -0
- package/{src/array/filter.ts → array/filter.js} +3 -8
- package/array/flatten.d.ts +15 -0
- package/array/flatten.js +39 -0
- package/{src/array/index.ts → array/index.d.ts} +0 -4
- package/array/index.js +10 -0
- package/array/range.d.ts +16 -0
- package/{src/array/range.ts → array/range.js} +9 -15
- package/array/shuffle.d.ts +5 -0
- package/array/shuffle.js +19 -0
- package/array/unzip.d.ts +5 -0
- package/array/unzip.js +13 -0
- package/array/zip.d.ts +5 -0
- package/array/zip.js +12 -0
- package/assert.d.ts +29 -0
- package/{src/assert.ts → assert.js} +11 -22
- package/bi/consts.d.ts +90 -0
- package/{src/bi/consts.ts → bi/consts.js} +0 -21
- package/bi/helpers.d.ts +2 -0
- package/bi/helpers.js +16 -0
- package/{src/bi/index.ts → bi/index.d.ts} +0 -7
- package/bi/index.js +9 -0
- package/bi/min.d.ts +10 -0
- package/bi/min.js +11 -0
- package/bi/sqrt.d.ts +7 -0
- package/bi/sqrt.js +29 -0
- package/bi/toBigInt.d.ts +7 -0
- package/bi/toBigInt.js +25 -0
- package/bi/toHex.d.ts +7 -0
- package/bi/toHex.js +9 -0
- package/bi/toU8a.d.ts +7 -0
- package/bi/toU8a.js +49 -0
- package/bn/bn.d.ts +2 -0
- package/bn/bn.js +2 -0
- package/bn/consts.d.ts +91 -0
- package/{src/bn/consts.ts → bn/consts.js} +18 -39
- package/bn/fromHex.d.ts +1 -0
- package/bn/fromHex.js +1 -0
- package/{src/bn/index.ts → bn/index.d.ts} +0 -7
- package/bn/index.js +11 -0
- package/bn/min.d.ts +29 -0
- package/{src/bn/min.ts → bn/min.js} +2 -9
- package/bn/sqrt.d.ts +16 -0
- package/bn/sqrt.js +38 -0
- package/bn/toBn.d.ts +19 -0
- package/{src/bn/toBn.ts → bn/toBn.js} +14 -20
- package/bn/toHex.d.ts +18 -0
- package/{src/bn/toHex.ts → bn/toHex.js} +2 -9
- package/bn/toU8a.d.ts +17 -0
- package/bn/toU8a.js +33 -0
- package/{src/buffer/index.ts → buffer/index.d.ts} +0 -4
- package/buffer/index.js +4 -0
- package/buffer/toU8a.d.ts +15 -0
- package/{src/buffer/toU8a.ts → buffer/toU8a.js} +2 -5
- package/bundle-polkadot-util.js +4829 -0
- package/{src/bundle.ts → bundle.d.ts} +0 -7
- package/bundle.js +28 -0
- package/cjs/array/chunk.d.ts +15 -0
- package/cjs/array/chunk.js +30 -0
- package/cjs/array/filter.d.ts +16 -0
- package/cjs/array/filter.js +22 -0
- package/cjs/array/flatten.d.ts +15 -0
- package/cjs/array/flatten.js +42 -0
- package/cjs/array/index.d.ts +10 -0
- package/cjs/array/index.js +20 -0
- package/cjs/array/range.d.ts +16 -0
- package/cjs/array/range.js +28 -0
- package/cjs/array/shuffle.d.ts +5 -0
- package/cjs/array/shuffle.js +22 -0
- package/cjs/array/unzip.d.ts +5 -0
- package/cjs/array/unzip.js +16 -0
- package/cjs/array/zip.d.ts +5 -0
- package/cjs/array/zip.js +15 -0
- package/cjs/assert.d.ts +29 -0
- package/cjs/assert.js +44 -0
- package/cjs/bi/consts.d.ts +90 -0
- package/cjs/bi/consts.js +94 -0
- package/cjs/bi/helpers.d.ts +2 -0
- package/cjs/bi/helpers.js +19 -0
- package/cjs/bi/index.d.ts +9 -0
- package/cjs/bi/index.js +19 -0
- package/cjs/bi/min.d.ts +10 -0
- package/cjs/bi/min.js +14 -0
- package/cjs/bi/sqrt.d.ts +7 -0
- package/cjs/bi/sqrt.js +32 -0
- package/cjs/bi/toBigInt.d.ts +7 -0
- package/cjs/bi/toBigInt.js +28 -0
- package/cjs/bi/toHex.d.ts +7 -0
- package/cjs/bi/toHex.js +12 -0
- package/cjs/bi/toU8a.d.ts +7 -0
- package/cjs/bi/toU8a.js +52 -0
- package/cjs/bn/bn.d.ts +2 -0
- package/cjs/bn/bn.js +6 -0
- package/cjs/bn/consts.d.ts +91 -0
- package/cjs/bn/consts.js +94 -0
- package/cjs/bn/fromHex.d.ts +1 -0
- package/cjs/bn/fromHex.js +5 -0
- package/cjs/bn/index.d.ts +11 -0
- package/cjs/bn/index.js +23 -0
- package/cjs/bn/min.d.ts +29 -0
- package/cjs/bn/min.js +32 -0
- package/cjs/bn/sqrt.d.ts +16 -0
- package/cjs/bn/sqrt.js +41 -0
- package/cjs/bn/toBn.d.ts +19 -0
- package/cjs/bn/toBn.js +40 -0
- package/cjs/bn/toHex.d.ts +18 -0
- package/cjs/bn/toHex.js +23 -0
- package/cjs/bn/toU8a.d.ts +17 -0
- package/cjs/bn/toU8a.js +36 -0
- package/cjs/buffer/index.d.ts +4 -0
- package/cjs/buffer/index.js +8 -0
- package/cjs/buffer/toU8a.d.ts +15 -0
- package/cjs/buffer/toU8a.js +20 -0
- package/cjs/bundle.d.ts +28 -0
- package/cjs/bundle.js +33 -0
- package/cjs/compact/addLength.d.ts +13 -0
- package/cjs/compact/addLength.js +23 -0
- package/cjs/compact/defaults.d.ts +3 -0
- package/cjs/compact/defaults.js +5 -0
- package/cjs/compact/fromU8a.d.ts +22 -0
- package/cjs/compact/fromU8a.js +92 -0
- package/{src/compact/index.ts → cjs/compact/index.d.ts} +0 -4
- package/cjs/compact/index.js +32 -0
- package/cjs/compact/stripLength.d.ts +13 -0
- package/cjs/compact/stripLength.js +24 -0
- package/cjs/compact/toU8a.d.ts +14 -0
- package/cjs/compact/toU8a.js +48 -0
- package/cjs/compact/types.d.ts +1 -0
- package/cjs/compact/types.js +2 -0
- package/cjs/detectPackage.d.ts +17 -0
- package/cjs/detectPackage.js +100 -0
- package/cjs/extractTime.d.ts +14 -0
- package/cjs/extractTime.js +56 -0
- package/cjs/float/index.d.ts +1 -0
- package/cjs/float/index.js +5 -0
- package/cjs/float/toU8a.d.ts +11 -0
- package/cjs/float/toU8a.js +22 -0
- package/cjs/format/formatBalance.d.ts +54 -0
- package/cjs/format/formatBalance.js +88 -0
- package/cjs/format/formatDate.d.ts +5 -0
- package/cjs/format/formatDate.js +20 -0
- package/cjs/format/formatDecimal.d.ts +5 -0
- package/cjs/format/formatDecimal.js +19 -0
- package/cjs/format/formatElapsed.d.ts +7 -0
- package/cjs/format/formatElapsed.js +30 -0
- package/cjs/format/formatNumber.d.ts +14 -0
- package/cjs/format/formatNumber.js +14 -0
- package/cjs/format/getSeparator.d.ts +9 -0
- package/cjs/format/getSeparator.js +14 -0
- package/{src/format/index.ts → cjs/format/index.d.ts} +0 -3
- package/cjs/format/index.js +16 -0
- package/cjs/format/si.d.ts +9 -0
- package/cjs/format/si.js +45 -0
- package/cjs/has.d.ts +14 -0
- package/cjs/has.js +19 -0
- package/cjs/hex/addPrefix.d.ts +16 -0
- package/cjs/hex/addPrefix.js +23 -0
- package/cjs/hex/fixLength.d.ts +18 -0
- package/cjs/hex/fixLength.js +30 -0
- package/cjs/hex/hasPrefix.d.ts +16 -0
- package/cjs/hex/hasPrefix.js +21 -0
- package/{src/hex/index.ts → cjs/hex/index.d.ts} +0 -4
- package/cjs/hex/index.js +24 -0
- package/cjs/hex/stripPrefix.d.ts +15 -0
- package/cjs/hex/stripPrefix.js +30 -0
- package/cjs/hex/toBigInt.d.ts +6 -0
- package/cjs/hex/toBigInt.js +15 -0
- package/cjs/hex/toBn.d.ts +21 -0
- package/cjs/hex/toBn.js +35 -0
- package/cjs/hex/toNumber.d.ts +15 -0
- package/cjs/hex/toNumber.js +23 -0
- package/cjs/hex/toString.d.ts +15 -0
- package/cjs/hex/toString.js +22 -0
- package/cjs/hex/toU8a.d.ts +16 -0
- package/cjs/hex/toU8a.js +57 -0
- package/cjs/hex/toU8aBuffer.d.ts +16 -0
- package/cjs/hex/toU8aBuffer.js +43 -0
- package/cjs/index.d.ts +2 -0
- package/cjs/index.js +5 -0
- package/cjs/is/array.d.ts +5 -0
- package/cjs/is/array.js +10 -0
- package/cjs/is/ascii.d.ts +8 -0
- package/cjs/is/ascii.js +43 -0
- package/cjs/is/bigInt.d.ts +15 -0
- package/{src/is/bigInt.ts → cjs/is/bigInt.js} +5 -5
- package/cjs/is/bn.d.ts +17 -0
- package/cjs/is/bn.js +22 -0
- package/cjs/is/boolean.d.ts +15 -0
- package/{src/is/boolean.ts → cjs/is/boolean.js} +5 -5
- package/cjs/is/buffer.d.ts +16 -0
- package/cjs/is/buffer.js +24 -0
- package/cjs/is/childClass.d.ts +17 -0
- package/cjs/is/childClass.js +26 -0
- package/cjs/is/class.d.ts +6 -0
- package/cjs/is/class.js +9 -0
- package/cjs/is/codec.d.ts +12 -0
- package/cjs/is/codec.js +9 -0
- package/cjs/is/compact.d.ts +13 -0
- package/cjs/is/compact.js +9 -0
- package/cjs/is/error.d.ts +15 -0
- package/{src/is/error.ts → cjs/is/error.js} +6 -8
- package/cjs/is/function.d.ts +17 -0
- package/cjs/is/function.js +20 -0
- package/cjs/is/helpers.d.ts +3 -0
- package/cjs/is/helpers.js +19 -0
- package/cjs/is/hex.d.ts +19 -0
- package/cjs/is/hex.js +27 -0
- package/{src/is/index.ts → cjs/is/index.d.ts} +0 -3
- package/cjs/is/index.js +66 -0
- package/cjs/is/instanceOf.d.ts +15 -0
- package/cjs/is/instanceOf.js +21 -0
- package/cjs/is/ip.d.ts +18 -0
- package/{src/is/ip.ts → cjs/is/ip.js} +9 -21
- package/cjs/is/jsonObject.d.ts +27 -0
- package/cjs/is/jsonObject.js +40 -0
- package/cjs/is/null.d.ts +15 -0
- package/{src/is/null.ts → cjs/is/null.js} +5 -5
- package/cjs/is/number.d.ts +15 -0
- package/{src/is/number.ts → cjs/is/number.js} +5 -5
- package/cjs/is/object.d.ts +18 -0
- package/cjs/is/object.js +21 -0
- package/cjs/is/observable.d.ts +16 -0
- package/cjs/is/observable.js +19 -0
- package/cjs/is/promise.d.ts +1 -0
- package/cjs/is/promise.js +5 -0
- package/cjs/is/riscv.d.ts +7 -0
- package/cjs/is/riscv.js +20 -0
- package/cjs/is/string.d.ts +16 -0
- package/{src/is/string.ts → cjs/is/string.js} +5 -7
- package/cjs/is/testChain.d.ts +1 -0
- package/cjs/is/testChain.js +10 -0
- package/cjs/is/toBigInt.d.ts +2 -0
- package/cjs/is/toBigInt.js +5 -0
- package/cjs/is/toBn.d.ts +2 -0
- package/cjs/is/toBn.js +5 -0
- package/cjs/is/u8a.d.ts +15 -0
- package/cjs/is/u8a.js +23 -0
- package/cjs/is/undefined.d.ts +15 -0
- package/{src/is/undefined.ts → cjs/is/undefined.js} +5 -6
- package/cjs/is/utf8.d.ts +7 -0
- package/cjs/is/utf8.js +200 -0
- package/cjs/is/wasm.d.ts +7 -0
- package/cjs/is/wasm.js +15 -0
- package/cjs/lazy.d.ts +14 -0
- package/cjs/lazy.js +55 -0
- package/cjs/logger.d.ts +17 -0
- package/cjs/logger.js +122 -0
- package/cjs/memoize.d.ts +10 -0
- package/cjs/memoize.js +33 -0
- package/cjs/nextTick.d.ts +5 -0
- package/cjs/nextTick.js +27 -0
- package/cjs/noop.d.ts +8 -0
- package/cjs/noop.js +16 -0
- package/{src/number/index.ts → cjs/number/index.d.ts} +0 -4
- package/cjs/number/index.js +10 -0
- package/cjs/number/toHex.d.ts +17 -0
- package/cjs/number/toHex.js +23 -0
- package/cjs/number/toU8a.d.ts +15 -0
- package/cjs/number/toU8a.js +22 -0
- package/cjs/object/clear.d.ts +5 -0
- package/cjs/object/clear.js +14 -0
- package/cjs/object/copy.d.ts +5 -0
- package/cjs/object/copy.js +11 -0
- package/cjs/object/entries.d.ts +9 -0
- package/cjs/object/entries.js +10 -0
- package/{src/object/index.ts → cjs/object/index.d.ts} +0 -3
- package/cjs/object/index.js +18 -0
- package/cjs/object/keys.d.ts +5 -0
- package/cjs/object/keys.js +10 -0
- package/cjs/object/property.d.ts +10 -0
- package/cjs/object/property.js +38 -0
- package/cjs/object/spread.d.ts +6 -0
- package/cjs/object/spread.js +34 -0
- package/cjs/object/values.d.ts +5 -0
- package/cjs/object/values.js +10 -0
- package/cjs/package.json +3 -0
- package/cjs/packageDetect.d.ts +1 -0
- package/cjs/packageDetect.js +7 -0
- package/cjs/packageInfo.d.ts +6 -0
- package/cjs/packageInfo.js +4 -0
- package/cjs/promisify.d.ts +16 -0
- package/{src/promisify.ts → cjs/promisify.js} +14 -14
- package/cjs/string/camelCase.d.ts +13 -0
- package/cjs/string/camelCase.js +62 -0
- package/{src/string/index.ts → cjs/string/index.d.ts} +0 -4
- package/cjs/string/index.js +18 -0
- package/cjs/string/lowerFirst.d.ts +31 -0
- package/cjs/string/lowerFirst.js +40 -0
- package/cjs/string/shorten.d.ts +16 -0
- package/{src/string/shorten.ts → cjs/string/shorten.js} +7 -9
- package/cjs/string/toHex.d.ts +16 -0
- package/cjs/string/toHex.js +22 -0
- package/cjs/string/toU8a.d.ts +16 -0
- package/cjs/string/toU8a.js +24 -0
- package/cjs/stringify.d.ts +6 -0
- package/cjs/stringify.js +18 -0
- package/cjs/types.d.ts +62 -0
- package/cjs/types.js +2 -0
- package/cjs/u8a/cmp.d.ts +17 -0
- package/cjs/u8a/cmp.js +49 -0
- package/cjs/u8a/concat.d.ts +24 -0
- package/cjs/u8a/concat.js +51 -0
- package/cjs/u8a/concatBuffer.d.ts +19 -0
- package/cjs/u8a/concatBuffer.js +29 -0
- package/cjs/u8a/empty.d.ts +7 -0
- package/cjs/u8a/empty.js +20 -0
- package/cjs/u8a/eq.d.ts +15 -0
- package/cjs/u8a/eq.js +40 -0
- package/cjs/u8a/fixLength.d.ts +17 -0
- package/cjs/u8a/fixLength.js +31 -0
- package/{src/u8a/index.ts → cjs/u8a/index.d.ts} +0 -4
- package/cjs/u8a/index.js +42 -0
- package/cjs/u8a/sorted.d.ts +15 -0
- package/cjs/u8a/sorted.js +21 -0
- package/cjs/u8a/toBigInt.d.ts +6 -0
- package/cjs/u8a/toBigInt.js +73 -0
- package/cjs/u8a/toBn.d.ts +21 -0
- package/cjs/u8a/toBn.js +81 -0
- package/cjs/u8a/toBuffer.d.ts +16 -0
- package/cjs/u8a/toBuffer.js +24 -0
- package/cjs/u8a/toFloat.d.ts +11 -0
- package/cjs/u8a/toFloat.js +20 -0
- package/cjs/u8a/toHex.d.ts +16 -0
- package/cjs/u8a/toHex.js +56 -0
- package/cjs/u8a/toHexBuffer.d.ts +16 -0
- package/cjs/u8a/toHexBuffer.js +25 -0
- package/cjs/u8a/toNumber.d.ts +6 -0
- package/cjs/u8a/toNumber.js +61 -0
- package/cjs/u8a/toString.d.ts +15 -0
- package/cjs/u8a/toString.js +24 -0
- package/cjs/u8a/toU8a.d.ts +19 -0
- package/cjs/u8a/toU8a.js +42 -0
- package/cjs/u8a/wrap.d.ts +22 -0
- package/cjs/u8a/wrap.js +49 -0
- package/compact/addLength.d.ts +13 -0
- package/{src/compact/addLength.ts → compact/addLength.js} +5 -9
- package/compact/defaults.d.ts +3 -0
- package/compact/defaults.js +2 -0
- package/compact/fromU8a.d.ts +22 -0
- package/compact/fromU8a.js +88 -0
- package/compact/index.d.ts +24 -0
- package/compact/index.js +24 -0
- package/compact/stripLength.d.ts +13 -0
- package/{src/compact/stripLength.ts → compact/stripLength.js} +7 -12
- package/compact/toU8a.d.ts +14 -0
- package/compact/toU8a.js +45 -0
- package/compact/types.d.ts +1 -0
- package/compact/types.js +1 -0
- package/detectPackage.d.ts +17 -0
- package/detectPackage.js +96 -0
- package/extractTime.d.ts +14 -0
- package/extractTime.js +53 -0
- package/float/index.d.ts +1 -0
- package/float/index.js +1 -0
- package/float/toU8a.d.ts +11 -0
- package/float/toU8a.js +19 -0
- package/format/formatBalance.d.ts +54 -0
- package/format/formatBalance.js +85 -0
- package/format/formatDate.d.ts +5 -0
- package/format/formatDate.js +17 -0
- package/format/formatDecimal.d.ts +5 -0
- package/format/formatDecimal.js +16 -0
- package/format/formatElapsed.d.ts +7 -0
- package/format/formatElapsed.js +27 -0
- package/format/formatNumber.d.ts +14 -0
- package/format/formatNumber.js +11 -0
- package/format/getSeparator.d.ts +9 -0
- package/format/getSeparator.js +11 -0
- package/format/index.d.ts +6 -0
- package/format/index.js +6 -0
- package/format/si.d.ts +9 -0
- package/format/si.js +40 -0
- package/has.d.ts +14 -0
- package/{src/has.ts → has.js} +1 -23
- package/hex/addPrefix.d.ts +16 -0
- package/{src/hex/addPrefix.ts → hex/addPrefix.js} +4 -10
- package/hex/fixLength.d.ts +18 -0
- package/{src/hex/fixLength.ts → hex/fixLength.js} +8 -17
- package/hex/hasPrefix.d.ts +16 -0
- package/{src/hex/hasPrefix.ts → hex/hasPrefix.js} +2 -8
- package/hex/index.d.ts +12 -0
- package/hex/index.js +12 -0
- package/hex/stripPrefix.d.ts +15 -0
- package/{src/hex/stripPrefix.ts → hex/stripPrefix.js} +11 -14
- package/hex/toBigInt.d.ts +6 -0
- package/hex/toBigInt.js +12 -0
- package/hex/toBn.d.ts +21 -0
- package/{src/hex/toBn.ts → hex/toBn.js} +11 -19
- package/hex/toNumber.d.ts +15 -0
- package/{src/hex/toNumber.ts → hex/toNumber.js} +4 -8
- package/hex/toString.d.ts +15 -0
- package/{src/hex/toString.ts → hex/toString.js} +2 -8
- package/hex/toU8a.d.ts +16 -0
- package/hex/toU8a.js +54 -0
- package/hex/toU8aBuffer.d.ts +16 -0
- package/hex/toU8aBuffer.js +40 -0
- package/index.d.ts +2 -0
- package/index.js +2 -0
- package/is/array.d.ts +5 -0
- package/is/array.js +7 -0
- package/is/ascii.d.ts +8 -0
- package/is/ascii.js +40 -0
- package/is/bigInt.d.ts +15 -0
- package/is/bigInt.js +17 -0
- package/is/bn.d.ts +17 -0
- package/{src/is/bn.ts → is/bn.js} +2 -6
- package/is/boolean.d.ts +15 -0
- package/is/boolean.js +17 -0
- package/is/buffer.d.ts +16 -0
- package/is/buffer.js +21 -0
- package/is/childClass.d.ts +17 -0
- package/is/childClass.js +23 -0
- package/is/class.d.ts +6 -0
- package/is/class.js +6 -0
- package/is/codec.d.ts +12 -0
- package/is/codec.js +6 -0
- package/is/compact.d.ts +13 -0
- package/is/compact.js +6 -0
- package/is/error.d.ts +15 -0
- package/is/error.js +18 -0
- package/is/function.d.ts +17 -0
- package/is/function.js +17 -0
- package/is/helpers.d.ts +3 -0
- package/is/helpers.js +14 -0
- package/is/hex.d.ts +19 -0
- package/is/hex.js +23 -0
- package/is/index.d.ts +33 -0
- package/is/index.js +33 -0
- package/is/instanceOf.d.ts +15 -0
- package/is/instanceOf.js +18 -0
- package/is/ip.d.ts +18 -0
- package/is/ip.js +41 -0
- package/is/jsonObject.d.ts +27 -0
- package/{src/is/jsonObject.ts → is/jsonObject.js} +11 -19
- package/is/null.d.ts +15 -0
- package/is/null.js +17 -0
- package/is/number.d.ts +15 -0
- package/is/number.js +17 -0
- package/is/object.d.ts +18 -0
- package/is/object.js +18 -0
- package/is/observable.d.ts +16 -0
- package/{src/is/observable.ts → is/observable.js} +1 -7
- package/is/promise.d.ts +1 -0
- package/is/promise.js +2 -0
- package/is/riscv.d.ts +7 -0
- package/{src/is/riscv.ts → is/riscv.js} +6 -16
- package/is/string.d.ts +16 -0
- package/is/string.js +17 -0
- package/is/testChain.d.ts +1 -0
- package/is/testChain.js +7 -0
- package/is/toBigInt.d.ts +2 -0
- package/is/toBigInt.js +2 -0
- package/is/toBn.d.ts +2 -0
- package/is/toBn.js +2 -0
- package/is/u8a.d.ts +15 -0
- package/is/u8a.js +20 -0
- package/is/undefined.d.ts +15 -0
- package/is/undefined.js +17 -0
- package/is/utf8.d.ts +7 -0
- package/is/utf8.js +197 -0
- package/is/wasm.d.ts +7 -0
- package/{src/is/wasm.ts → is/wasm.js} +2 -7
- package/lazy.d.ts +14 -0
- package/lazy.js +51 -0
- package/logger.d.ts +17 -0
- package/logger.js +118 -0
- package/memoize.d.ts +10 -0
- package/memoize.js +30 -0
- package/nextTick.d.ts +5 -0
- package/nextTick.js +24 -0
- package/noop.d.ts +8 -0
- package/noop.js +12 -0
- package/number/index.d.ts +5 -0
- package/number/index.js +5 -0
- package/number/toHex.d.ts +17 -0
- package/{src/number/toHex.ts → number/toHex.js} +3 -10
- package/number/toU8a.d.ts +15 -0
- package/{src/number/toU8a.ts → number/toU8a.js} +2 -8
- package/object/clear.d.ts +5 -0
- package/object/clear.js +11 -0
- package/object/copy.d.ts +5 -0
- package/object/copy.js +8 -0
- package/object/entries.d.ts +9 -0
- package/object/entries.js +7 -0
- package/object/index.d.ts +7 -0
- package/object/index.js +7 -0
- package/object/keys.d.ts +5 -0
- package/object/keys.js +7 -0
- package/object/property.d.ts +10 -0
- package/object/property.js +34 -0
- package/object/spread.d.ts +6 -0
- package/object/spread.js +31 -0
- package/object/values.d.ts +5 -0
- package/object/values.js +7 -0
- package/package.json +1957 -10
- package/packageDetect.d.ts +1 -0
- package/{src/packageDetect.ts → packageDetect.js} +0 -8
- package/packageInfo.d.ts +6 -0
- package/packageInfo.js +1 -0
- package/promisify.d.ts +16 -0
- package/promisify.js +27 -0
- package/string/camelCase.d.ts +13 -0
- package/string/camelCase.js +59 -0
- package/string/index.d.ts +8 -0
- package/string/index.js +8 -0
- package/string/lowerFirst.d.ts +31 -0
- package/{src/string/lowerFirst.ts → string/lowerFirst.js} +4 -13
- package/string/shorten.d.ts +16 -0
- package/string/shorten.js +19 -0
- package/string/toHex.d.ts +16 -0
- package/{src/string/toHex.ts → string/toHex.js} +2 -10
- package/string/toU8a.d.ts +16 -0
- package/{src/string/toU8a.ts → string/toU8a.js} +4 -11
- package/stringify.d.ts +6 -0
- package/stringify.js +15 -0
- package/types.d.ts +62 -0
- package/types.js +1 -0
- package/u8a/cmp.d.ts +17 -0
- package/u8a/cmp.js +46 -0
- package/u8a/concat.d.ts +24 -0
- package/u8a/concat.js +47 -0
- package/u8a/concatBuffer.d.ts +19 -0
- package/u8a/concatBuffer.js +26 -0
- package/u8a/empty.d.ts +7 -0
- package/u8a/empty.js +17 -0
- package/u8a/eq.d.ts +15 -0
- package/u8a/eq.js +37 -0
- package/u8a/fixLength.d.ts +17 -0
- package/u8a/fixLength.js +28 -0
- package/u8a/index.d.ts +18 -0
- package/u8a/index.js +18 -0
- package/u8a/sorted.d.ts +15 -0
- package/{src/u8a/sorted.ts → u8a/sorted.js} +2 -6
- package/u8a/toBigInt.d.ts +6 -0
- package/u8a/toBigInt.js +70 -0
- package/u8a/toBn.d.ts +21 -0
- package/u8a/toBn.js +78 -0
- package/u8a/toBuffer.d.ts +16 -0
- package/{src/u8a/toBuffer.ts → u8a/toBuffer.js} +4 -11
- package/u8a/toFloat.d.ts +11 -0
- package/u8a/toFloat.js +17 -0
- package/u8a/toHex.d.ts +16 -0
- package/u8a/toHex.js +53 -0
- package/u8a/toHexBuffer.d.ts +16 -0
- package/u8a/toHexBuffer.js +22 -0
- package/u8a/toNumber.d.ts +6 -0
- package/u8a/toNumber.js +58 -0
- package/u8a/toString.d.ts +15 -0
- package/{src/u8a/toString.ts → u8a/toString.js} +4 -9
- package/u8a/toU8a.d.ts +19 -0
- package/{src/u8a/toU8a.ts → u8a/toU8a.js} +16 -23
- package/u8a/wrap.d.ts +22 -0
- package/u8a/wrap.js +43 -0
- package/src/array/chunk.spec.ts +0 -29
- package/src/array/chunk.ts +0 -35
- package/src/array/filter.spec.ts +0 -20
- package/src/array/flatten.spec.ts +0 -33
- package/src/array/flatten.ts +0 -51
- package/src/array/range.spec.ts +0 -29
- package/src/array/shuffle.spec.ts +0 -39
- package/src/array/shuffle.ts +0 -27
- package/src/array/unzip.spec.ts +0 -14
- package/src/array/unzip.ts +0 -18
- package/src/array/zip.spec.ts +0 -26
- package/src/array/zip.ts +0 -17
- package/src/assert.spec.ts +0 -40
- package/src/bi/helpers.ts +0 -23
- package/src/bi/max.spec.ts +0 -32
- package/src/bi/min.spec.ts +0 -26
- package/src/bi/min.ts +0 -16
- package/src/bi/sqrt.spec.ts +0 -59
- package/src/bi/sqrt.ts +0 -43
- package/src/bi/toBigInt.spec.ts +0 -69
- package/src/bi/toBigInt.ts +0 -33
- package/src/bi/toHex.spec.ts +0 -56
- package/src/bi/toHex.ts +0 -16
- package/src/bi/toU8a.spec.ts +0 -99
- package/src/bi/toU8a.ts +0 -72
- package/src/bn/bn.ts +0 -6
- package/src/bn/consts.spec.ts +0 -38
- package/src/bn/fromHex.spec.ts +0 -15
- package/src/bn/fromHex.ts +0 -4
- package/src/bn/max.spec.ts +0 -32
- package/src/bn/min.spec.ts +0 -26
- package/src/bn/sqrt.spec.ts +0 -37
- package/src/bn/sqrt.ts +0 -50
- package/src/bn/toBn.spec.ts +0 -53
- package/src/bn/toHex.spec.ts +0 -50
- package/src/bn/toU8a.spec.ts +0 -60
- package/src/bn/toU8a.ts +0 -45
- package/src/buffer/toU8a.spec.ts +0 -20
- package/src/compact/addLength.spec.ts +0 -14
- package/src/compact/defaults.ts +0 -7
- package/src/compact/fromU8a.spec.ts +0 -84
- package/src/compact/fromU8a.ts +0 -109
- package/src/compact/stripLength.spec.ts +0 -17
- package/src/compact/toU8a.spec.ts +0 -59
- package/src/compact/toU8a.ts +0 -53
- package/src/compact/types.ts +0 -4
- package/src/detectPackage.spec.ts +0 -110
- package/src/detectPackage.ts +0 -138
- package/src/extractTime.spec.ts +0 -21
- package/src/extractTime.ts +0 -71
- package/src/float/index.ts +0 -4
- package/src/float/toU8a.spec.ts +0 -52
- package/src/float/toU8a.ts +0 -30
- package/src/format/formatBalance.spec.ts +0 -296
- package/src/format/formatBalance.ts +0 -177
- package/src/format/formatDate.spec.ts +0 -17
- package/src/format/formatDate.ts +0 -22
- package/src/format/formatDecimal.spec.ts +0 -28
- package/src/format/formatDecimal.ts +0 -22
- package/src/format/formatElapsed.spec.ts +0 -44
- package/src/format/formatElapsed.ts +0 -35
- package/src/format/formatNumber.spec.ts +0 -60
- package/src/format/formatNumber.ts +0 -29
- package/src/format/getSeparator.spec.ts +0 -53
- package/src/format/getSeparator.ts +0 -15
- package/src/format/si.ts +0 -52
- package/src/has.spec.ts +0 -12
- package/src/hex/addPrefix.spec.ts +0 -32
- package/src/hex/fixLength.spec.ts +0 -38
- package/src/hex/hasPrefix.spec.ts +0 -32
- package/src/hex/stripPrefix.spec.ts +0 -44
- package/src/hex/toBigInt.spec.ts +0 -74
- package/src/hex/toBigInt.ts +0 -19
- package/src/hex/toBn.spec.ts +0 -74
- package/src/hex/toNumber.spec.ts +0 -20
- package/src/hex/toString.spec.ts +0 -20
- package/src/hex/toU8a.spec.ts +0 -76
- package/src/hex/toU8a.ts +0 -68
- package/src/hex/toU8aBuffer.spec.ts +0 -38
- package/src/hex/toU8aBuffer.ts +0 -52
- package/src/index.spec.ts +0 -12
- package/src/index.ts +0 -6
- package/src/is/array.spec.ts +0 -20
- package/src/is/array.ts +0 -10
- package/src/is/ascii.spec.ts +0 -49
- package/src/is/ascii.ts +0 -52
- package/src/is/bigInt.spec.ts +0 -26
- package/src/is/bn.spec.ts +0 -21
- package/src/is/boolean.spec.ts +0 -26
- package/src/is/buffer.spec.ts +0 -26
- package/src/is/buffer.ts +0 -28
- package/src/is/childClass.spec.ts +0 -36
- package/src/is/childClass.ts +0 -29
- package/src/is/class.spec.ts +0 -37
- package/src/is/class.ts +0 -12
- package/src/is/codec.spec.ts +0 -52
- package/src/is/codec.ts +0 -26
- package/src/is/compact.spec.ts +0 -27
- package/src/is/compact.ts +0 -19
- package/src/is/error.spec.ts +0 -20
- package/src/is/function.spec.ts +0 -20
- package/src/is/function.ts +0 -23
- package/src/is/helpers.ts +0 -23
- package/src/is/hex.spec.ts +0 -77
- package/src/is/hex.ts +0 -36
- package/src/is/instanceOf.spec.ts +0 -48
- package/src/is/instanceOf.ts +0 -24
- package/src/is/ip.spec.ts +0 -50
- package/src/is/jsonObject.spec.ts +0 -51
- package/src/is/null.spec.ts +0 -20
- package/src/is/number.spec.ts +0 -20
- package/src/is/object.spec.ts +0 -32
- package/src/is/object.ts +0 -24
- package/src/is/observable.spec.ts +0 -26
- package/src/is/promise.spec.ts +0 -32
- package/src/is/promise.ts +0 -6
- package/src/is/riscv.spec.ts +0 -36
- package/src/is/string.spec.ts +0 -32
- package/src/is/testChain.spec.ts +0 -25
- package/src/is/testChain.ts +0 -12
- package/src/is/toBigInt.spec.ts +0 -22
- package/src/is/toBigInt.ts +0 -8
- package/src/is/toBn.spec.ts +0 -25
- package/src/is/toBn.ts +0 -8
- package/src/is/u8a.spec.ts +0 -42
- package/src/is/u8a.ts +0 -25
- package/src/is/undefined.spec.ts +0 -23
- package/src/is/utf8.spec.ts +0 -42
- package/src/is/utf8.ts +0 -207
- package/src/is/wasm.spec.ts +0 -20
- package/src/lazy.spec.ts +0 -71
- package/src/lazy.ts +0 -63
- package/src/logger.spec.ts +0 -188
- package/src/logger.ts +0 -160
- package/src/memoize.spec.ts +0 -79
- package/src/memoize.ts +0 -49
- package/src/mod.ts +0 -4
- package/src/nextTick.ts +0 -26
- package/src/noop.ts +0 -16
- package/src/number/toHex.spec.ts +0 -44
- package/src/number/toU8a.spec.ts +0 -50
- package/src/object/clear.spec.ts +0 -14
- package/src/object/clear.ts +0 -16
- package/src/object/copy.spec.ts +0 -17
- package/src/object/copy.ts +0 -12
- package/src/object/entries.spec.ts +0 -20
- package/src/object/entries.ts +0 -12
- package/src/object/keys.spec.ts +0 -19
- package/src/object/keys.ts +0 -10
- package/src/object/property.spec.ts +0 -149
- package/src/object/property.ts +0 -39
- package/src/object/spread.spec.ts +0 -36
- package/src/object/spread.ts +0 -38
- package/src/object/values.spec.ts +0 -19
- package/src/object/values.ts +0 -10
- package/src/packageInfo.ts +0 -6
- package/src/promisify.spec.ts +0 -50
- package/src/string/camelCase.spec.ts +0 -119
- package/src/string/camelCase.ts +0 -79
- package/src/string/lowerFirst.spec.ts +0 -41
- package/src/string/pascalCase.spec.ts +0 -26
- package/src/string/shorten.spec.ts +0 -38
- package/src/string/toHex.spec.ts +0 -26
- package/src/string/toU8a.spec.ts +0 -31
- package/src/string/upperFirst.spec.ts +0 -41
- package/src/stringify.spec.ts +0 -33
- package/src/stringify.ts +0 -20
- package/src/test/index.ts +0 -4
- package/src/test/performance.ts +0 -92
- package/src/types.ts +0 -100
- package/src/u8a/cmp.spec.ts +0 -62
- package/src/u8a/cmp.ts +0 -50
- package/src/u8a/concat.spec.ts +0 -42
- package/src/u8a/concat.ts +0 -60
- package/src/u8a/concatBuffer.ts +0 -34
- package/src/u8a/empty.spec.ts +0 -46
- package/src/u8a/empty.ts +0 -22
- package/src/u8a/eq.spec.ts +0 -113
- package/src/u8a/eq.ts +0 -46
- package/src/u8a/fixLength.spec.ts +0 -34
- package/src/u8a/fixLength.ts +0 -34
- package/src/u8a/sorted.spec.ts +0 -20
- package/src/u8a/toBigInt.spec.ts +0 -106
- package/src/u8a/toBigInt.ts +0 -100
- package/src/u8a/toBn.spec.ts +0 -106
- package/src/u8a/toBn.ts +0 -101
- package/src/u8a/toBuffer.spec.ts +0 -20
- package/src/u8a/toFloat.spec.ts +0 -86
- package/src/u8a/toFloat.ts +0 -26
- package/src/u8a/toHex.spec.ts +0 -94
- package/src/u8a/toHex.ts +0 -68
- package/src/u8a/toHexBuffer.spec.ts +0 -63
- package/src/u8a/toHexBuffer.ts +0 -30
- package/src/u8a/toNumber.spec.ts +0 -47
- package/src/u8a/toNumber.ts +0 -80
- package/src/u8a/toString.spec.ts +0 -36
- package/src/u8a/toU8a.spec.ts +0 -63
- package/src/u8a/wrap.spec.ts +0 -139
- package/src/u8a/wrap.ts +0 -65
- package/tsconfig.build.json +0 -19
- package/tsconfig.spec.json +0 -17
package/src/bi/sqrt.spec.ts
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
|
5
|
-
|
|
6
|
-
import { BN } from '../bn/index.js';
|
|
7
|
-
import { _sqrt2pow53n, nSqrt } from './index.js';
|
|
8
|
-
|
|
9
|
-
// eslint-disable-next-line jest/no-export
|
|
10
|
-
export const TESTS: [value: string | number | BN | bigint, expected: string | number][] = [
|
|
11
|
-
[0, 0],
|
|
12
|
-
[1, 1],
|
|
13
|
-
[4, 2],
|
|
14
|
-
[256 * 256, 256],
|
|
15
|
-
[Number.MAX_SAFE_INTEGER, 94906265],
|
|
16
|
-
[new BN(Number.MAX_SAFE_INTEGER).iaddn(256), 94906265],
|
|
17
|
-
[12345678n * 12345679n, 12345678],
|
|
18
|
-
// test cases below from https://github.com/Aisse-258/bigint-isqrt/blob/f5254b9750841959022461c1353437a07a08f501/test/sqrt-test.js
|
|
19
|
-
[
|
|
20
|
-
'54866395443885995655625',
|
|
21
|
-
'234235768925'
|
|
22
|
-
],
|
|
23
|
-
[
|
|
24
|
-
'82120471531550314555681345949499512621827274120673745141541602816614526075010755373654280259022317599142038423759320355177481886719814621305828811322920076213800348341464996337890625',
|
|
25
|
-
'9062034624274524065844376014975805577107171799890766992670739972241112960081909332275390625'
|
|
26
|
-
],
|
|
27
|
-
[
|
|
28
|
-
'2068290204957779940494571454815902632050207752627007664813877111611972735314294907791993008455381265730624848057015476004143868408297250386512042711005577373327434315310235583583151773358353534031397385969275475421659036494173765903706963544628565027679444680637920371210258368358706248446698622704138943704561842220533563976838506992543814273403403362954987589637283890281226038798503294069403370486523697009383229578343444337394508531937972775639593763364402389410142290440075517598007930025487176173228232153685095699851764630884360483051570513804913157899314303269924424908606245851172031453725690942288677622973423417902662711606364188470325930406288190754356367655606430407552275285889968860367977288564364154999338284288438279464648663835830140826171534470717958048887869721791862539529444820484648908879364324577951008050851801647916673254009490596379549192296404841454780884358889449367135382779230574781333008561195244620152128505091883408484094800737142399855337799331037607433934520934135669364954550499058123797911762228642423567268540444910163468496805547450495819213412636594319148417857753712526066272727725420886898680432958409892237191284583904066400736417812258327303739879128916456683685232170600928808798462776174857486589598776587550843543720784829419478239563366491666155716208452087857080883906200829769222868347286071365156305396955420561718593130305703074908891135467193627721682044757187980688062367562451981939375400543212890625',
|
|
29
|
-
'45478458691536369397924851088318871329614555665525810477032568598360481742967756704524034986984134271202405190906906195123751965012732122548540879928668891416468847696038707003466943811913626146981446753434347552196868717612248915137033581428310504778371173112125038060138252719589122657221314190626986951627417768579641354255445988772645883238873672997347648890137913979299598785628581961589739331483895853398160785485300758458294999124984266041998145956341386549681176624661615465976970855592467853824812945820721933491609237311130118125761849911376495970746282571994312288380577879004620824004760109618074670810797544446334767103935754106103208789391060008291027361311679876439695844637933763721093782805837690830230712890625'
|
|
30
|
-
]
|
|
31
|
-
];
|
|
32
|
-
|
|
33
|
-
describe('nSqrt', (): void => {
|
|
34
|
-
it('fails on < 0 roots', (): void => {
|
|
35
|
-
expect(
|
|
36
|
-
() => nSqrt(-1n)
|
|
37
|
-
).toThrow(/negative numbers is not supported/);
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
it('has the correct constant for sqrt(Number.MAX_SAFE_INTEGER)', (): void => {
|
|
41
|
-
expect(
|
|
42
|
-
BigInt(
|
|
43
|
-
~~Math.sqrt(
|
|
44
|
-
Number.MAX_SAFE_INTEGER
|
|
45
|
-
)
|
|
46
|
-
) === _sqrt2pow53n
|
|
47
|
-
).toEqual(true);
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
describe('conversion tests', (): void => {
|
|
51
|
-
TESTS.forEach(([value, expected], i): void => {
|
|
52
|
-
it(`#${i}: calcs ${expected}`, (): void => {
|
|
53
|
-
expect(
|
|
54
|
-
nSqrt(value) === BigInt(expected)
|
|
55
|
-
).toEqual(true);
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
});
|
package/src/bi/sqrt.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import type { BN } from '../bn/index.js';
|
|
5
|
-
import type { ToBigInt, ToBn } from '../types.js';
|
|
6
|
-
|
|
7
|
-
import { BigInt } from '@pezkuwi/x-bigint';
|
|
8
|
-
|
|
9
|
-
import { _0n, _1n, _2pow53n, _sqrt2pow53n } from './consts.js';
|
|
10
|
-
import { nToBigInt } from './toBigInt.js';
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* @name nSqrt
|
|
14
|
-
* @summary Calculates the integer square root of a bigint
|
|
15
|
-
*/
|
|
16
|
-
export function nSqrt <ExtToBn extends ToBn | ToBigInt> (value: ExtToBn | BN | bigint | string | number | null): bigint {
|
|
17
|
-
const n = nToBigInt(value);
|
|
18
|
-
|
|
19
|
-
if (n < _0n) {
|
|
20
|
-
throw new Error('square root of negative numbers is not supported');
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
// https://stackoverflow.com/questions/53683995/javascript-big-integer-square-root/
|
|
24
|
-
// shortcut <= 2^53 - 1 to use the JS utils
|
|
25
|
-
if (n <= _2pow53n) {
|
|
26
|
-
// ~~ is more performant that Math.floor
|
|
27
|
-
return BigInt(~~Math.sqrt(Number(n)));
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// Use sqrt(MAX_SAFE_INTEGER) as starting point. since we already know the
|
|
31
|
-
// output will be larger than this, we expect this to be a safe start
|
|
32
|
-
let x0 = _sqrt2pow53n;
|
|
33
|
-
|
|
34
|
-
while (true) {
|
|
35
|
-
const x1 = ((n / x0) + x0) >> _1n;
|
|
36
|
-
|
|
37
|
-
if (x0 === x1 || (x0 === (x1 - _1n))) {
|
|
38
|
-
return x0;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
x0 = x1;
|
|
42
|
-
}
|
|
43
|
-
}
|
package/src/bi/toBigInt.spec.ts
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
|
5
|
-
|
|
6
|
-
import { BN } from '../bn/index.js';
|
|
7
|
-
import { nToBigInt } from './index.js';
|
|
8
|
-
|
|
9
|
-
describe('nToBigInt', (): void => {
|
|
10
|
-
it('converts null values to 0x00', (): void => {
|
|
11
|
-
expect(
|
|
12
|
-
nToBigInt(null)
|
|
13
|
-
).toEqual(0n);
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
it('converts 0x values to 0x00', (): void => {
|
|
17
|
-
expect(
|
|
18
|
-
nToBigInt('0x')
|
|
19
|
-
).toEqual(0n);
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it('converts BN values to bigint', (): void => {
|
|
23
|
-
expect(
|
|
24
|
-
nToBigInt(new BN(128))
|
|
25
|
-
).toEqual(128n);
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
it('converts BigInt values to bigint', (): void => {
|
|
29
|
-
expect(
|
|
30
|
-
nToBigInt(128821n)
|
|
31
|
-
).toEqual(128821n);
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
it('converts number values to bigint', (): void => {
|
|
35
|
-
expect(
|
|
36
|
-
nToBigInt(128)
|
|
37
|
-
).toEqual(128n);
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
it('converts string to bigint', (): void => {
|
|
41
|
-
expect(
|
|
42
|
-
nToBigInt('123')
|
|
43
|
-
).toEqual(123n);
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
it('converts hex to bigint', (): void => {
|
|
47
|
-
expect(
|
|
48
|
-
nToBigInt('0x0123')
|
|
49
|
-
).toEqual(0x123n);
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
it('converts Compact to bigint (via toBn)', (): void => {
|
|
53
|
-
expect(
|
|
54
|
-
nToBigInt({
|
|
55
|
-
something: 'test',
|
|
56
|
-
toBn: () => new BN(1234)
|
|
57
|
-
})
|
|
58
|
-
).toEqual(1234n);
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
it('converts Compact to bigint (via toBigInt)', (): void => {
|
|
62
|
-
expect(
|
|
63
|
-
nToBigInt({
|
|
64
|
-
something: 'test',
|
|
65
|
-
toBigInt: () => 1234n
|
|
66
|
-
})
|
|
67
|
-
).toEqual(1234n);
|
|
68
|
-
});
|
|
69
|
-
});
|
package/src/bi/toBigInt.ts
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import type { BN } from '../bn/bn.js';
|
|
5
|
-
import type { ToBigInt, ToBn } from '../types.js';
|
|
6
|
-
|
|
7
|
-
import { BigInt } from '@pezkuwi/x-bigint';
|
|
8
|
-
|
|
9
|
-
import { hexToBigInt } from '../hex/toBigInt.js';
|
|
10
|
-
import { isBn } from '../is/bn.js';
|
|
11
|
-
import { isHex } from '../is/hex.js';
|
|
12
|
-
import { isToBigInt } from '../is/toBigInt.js';
|
|
13
|
-
import { isToBn } from '../is/toBn.js';
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* @name nToBigInt
|
|
17
|
-
* @summary Creates a bigInt value from a BN, bigint, string (base 10 or hex) or number input.
|
|
18
|
-
*/
|
|
19
|
-
export function nToBigInt <ExtToBn extends ToBigInt | ToBn> (value?: ExtToBn | BN | bigint | string | number | null): bigint {
|
|
20
|
-
return typeof value === 'bigint'
|
|
21
|
-
? value
|
|
22
|
-
: !value
|
|
23
|
-
? BigInt(0)
|
|
24
|
-
: isHex(value)
|
|
25
|
-
? hexToBigInt(value.toString())
|
|
26
|
-
: isBn(value)
|
|
27
|
-
? BigInt(value.toString())
|
|
28
|
-
: isToBigInt(value)
|
|
29
|
-
? value.toBigInt()
|
|
30
|
-
: isToBn(value)
|
|
31
|
-
? BigInt(value.toBn().toString())
|
|
32
|
-
: BigInt(value);
|
|
33
|
-
}
|
package/src/bi/toHex.spec.ts
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
|
5
|
-
|
|
6
|
-
import { nToHex } from './index.js';
|
|
7
|
-
|
|
8
|
-
describe('nToHex', (): void => {
|
|
9
|
-
it('converts null values to 0x00', (): void => {
|
|
10
|
-
expect(
|
|
11
|
-
nToHex(null)
|
|
12
|
-
).toBe('0x00');
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
it('converts null values to 0x00000000 (with bitLength)', (): void => {
|
|
16
|
-
expect(
|
|
17
|
-
nToHex(null, { bitLength: 32 })
|
|
18
|
-
).toBe('0x00000000');
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
it('converts values to a prefixed hex representation', (): void => {
|
|
22
|
-
expect(
|
|
23
|
-
nToHex(128)
|
|
24
|
-
).toBe('0x80');
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
it('converts values to a prefixed hex representation (bitLength)', (): void => {
|
|
28
|
-
expect(
|
|
29
|
-
nToHex(128n, { bitLength: 16 })
|
|
30
|
-
).toBe('0x0080');
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
it('converts values to a prefixed hex representation (bitLength + le)', (): void => {
|
|
34
|
-
expect(
|
|
35
|
-
nToHex(128, { bitLength: 16, isLe: true })
|
|
36
|
-
).toBe('0x8000');
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
it('converts values to a prefixed hex representation (LE)', (): void => {
|
|
40
|
-
expect(
|
|
41
|
-
nToHex(128, { bitLength: 16, isLe: true })
|
|
42
|
-
).toBe('0x8000');
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
it('handles negative numbers', (): void => {
|
|
46
|
-
expect(
|
|
47
|
-
nToHex(-1234, { isNegative: true })
|
|
48
|
-
).toBe('0xfb2e');
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
it('handles negative numbers (with bitLength)', (): void => {
|
|
52
|
-
expect(
|
|
53
|
-
nToHex(-1234, { bitLength: 32, isNegative: true })
|
|
54
|
-
).toBe('0xfffffb2e');
|
|
55
|
-
});
|
|
56
|
-
});
|
package/src/bi/toHex.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import type { BN } from '../bn/bn.js';
|
|
5
|
-
import type { HexString, NumberOptions, ToBigInt, ToBn } from '../types.js';
|
|
6
|
-
|
|
7
|
-
import { u8aToHex } from '../u8a/index.js';
|
|
8
|
-
import { nToU8a } from './toU8a.js';
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* @name nToHex
|
|
12
|
-
* @summary Creates a hex value from a bigint object.
|
|
13
|
-
*/
|
|
14
|
-
export function nToHex <ExtToBn extends ToBn | ToBigInt> (value?: ExtToBn | BN | bigint | number | null, { bitLength = -1, isLe = false, isNegative = false }: NumberOptions = {}): HexString {
|
|
15
|
-
return u8aToHex(nToU8a(value || 0, { bitLength, isLe, isNegative }));
|
|
16
|
-
}
|
package/src/bi/toU8a.spec.ts
DELETED
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
|
5
|
-
|
|
6
|
-
import { arrayRange } from '../array/index.js';
|
|
7
|
-
import { perf } from '../test/index.js';
|
|
8
|
-
import { nToU8a } from './index.js';
|
|
9
|
-
|
|
10
|
-
// eslint-disable-next-line jest/no-export
|
|
11
|
-
export const TESTS: [isLe: boolean, isNegative: boolean, numarr: number[], strval: string][] = [
|
|
12
|
-
// LE, positive numbers
|
|
13
|
-
[true, false, [0x12], '18'],
|
|
14
|
-
[true, false, [0x12, 0x34], '13330'],
|
|
15
|
-
[true, false, [0x12, 0x34, 0x56], '5649426'],
|
|
16
|
-
[true, false, [0x12, 0x34, 0x56, 0x78], '2018915346'],
|
|
17
|
-
[true, false, [0x12, 0x34, 0x56, 0x78, 0x9a], '663443878930'],
|
|
18
|
-
[true, false, [0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc], '207371629900818'],
|
|
19
|
-
[true, false, [0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78], '159954953172672629770948536149615195154'],
|
|
20
|
-
// LE, positive numbers (w/ signed flag)
|
|
21
|
-
[true, true, [12], '12'],
|
|
22
|
-
[true, true, [210, 4], '1234'],
|
|
23
|
-
[true, true, [64, 226, 1], '123456'],
|
|
24
|
-
[true, true, [21, 205, 91, 7], '123456789'],
|
|
25
|
-
[true, true, [203, 36, 104, 12, 8], '34567890123'],
|
|
26
|
-
[true, true, [255, 159, 114, 78, 24, 9], '9999999999999'],
|
|
27
|
-
// LE, negative numbers
|
|
28
|
-
[true, true, [244], '-12'],
|
|
29
|
-
[true, true, [46, 251], '-1234'],
|
|
30
|
-
[true, true, [192, 29, 254], '-123456'],
|
|
31
|
-
[true, true, [255, 255, 255, 255], '-1'],
|
|
32
|
-
[true, true, [254, 255, 255, 255], '-2'],
|
|
33
|
-
[true, true, [235, 50, 164, 248], '-123456789'],
|
|
34
|
-
[true, true, [0, 0, 0, 128], '-2147483648'],
|
|
35
|
-
[true, true, [0, 0, 0, 240], '-268435456'],
|
|
36
|
-
[true, true, [65, 86, 129, 173, 254], '-5678999999'],
|
|
37
|
-
[true, true, [1, 96, 141, 177, 231, 246], '-9999999999999'],
|
|
38
|
-
[true, true, [1, 0, 156, 88, 76, 73, 31, 242], '-999999999999999999'],
|
|
39
|
-
// BE
|
|
40
|
-
[false, false, [0x12], '18'],
|
|
41
|
-
[false, false, [0x12, 0x34], '4660'],
|
|
42
|
-
[false, false, [0x12, 0x34, 0x56], '1193046'],
|
|
43
|
-
[false, false, [0x12, 0x34, 0x56, 0x78], '305419896'],
|
|
44
|
-
[false, true, [0xf2, 0x34, 0x56, 0x78], '-231451016'],
|
|
45
|
-
[false, false, [0x12, 0x34, 0x56, 0x78, 0x9a], '78187493530'],
|
|
46
|
-
[false, false, [0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc], '20015998343868'],
|
|
47
|
-
[false, false, [0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78], '24197857161011715162171839636988778104']
|
|
48
|
-
];
|
|
49
|
-
|
|
50
|
-
const ptest = arrayRange(65536).map((v) => [v]);
|
|
51
|
-
|
|
52
|
-
describe('nToU8a', (): void => {
|
|
53
|
-
describe('conversion tests', (): void => {
|
|
54
|
-
TESTS.forEach(([isLe, isNegative, numarr, strval], i): void => {
|
|
55
|
-
const bitLength = numarr.length * 8;
|
|
56
|
-
|
|
57
|
-
it(`#${i}: converts from ${strval} (bitLength=${bitLength}, isLe=${isLe}, isNegative=${isNegative})`, (): void => {
|
|
58
|
-
expect(
|
|
59
|
-
nToU8a(
|
|
60
|
-
BigInt(strval),
|
|
61
|
-
{ bitLength, isLe, isNegative }
|
|
62
|
-
)
|
|
63
|
-
).toEqual(new Uint8Array(numarr));
|
|
64
|
-
});
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
it('converts null values to 0x00', (): void => {
|
|
69
|
-
expect(
|
|
70
|
-
nToU8a(null)
|
|
71
|
-
).toEqual(new Uint8Array(1));
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
it('converts null values to 0x00000000 (bitLength)', (): void => {
|
|
75
|
-
expect(
|
|
76
|
-
nToU8a(null, { bitLength: 32 })
|
|
77
|
-
).toEqual(new Uint8Array([0, 0, 0, 0]));
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
it('converts values to a prefixed hex representation', (): void => {
|
|
81
|
-
expect(
|
|
82
|
-
nToU8a(0x123456n, { isLe: false })
|
|
83
|
-
).toEqual(new Uint8Array([0x12, 0x34, 0x56]));
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
it('converts values to a prefixed hex representation (bitLength)', (): void => {
|
|
87
|
-
expect(
|
|
88
|
-
nToU8a(0x123456n, { bitLength: 32, isLe: false })
|
|
89
|
-
).toEqual(new Uint8Array([0x00, 0x12, 0x34, 0x56]));
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
it('converts using little endian (as set)', (): void => {
|
|
93
|
-
expect(
|
|
94
|
-
nToU8a(0x123456n, { bitLength: 32, isLe: true })
|
|
95
|
-
).toEqual(new Uint8Array([0x56, 0x34, 0x12, 0x00]));
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
perf('nToU8a', 250000, ptest, nToU8a);
|
|
99
|
-
});
|
package/src/bi/toU8a.ts
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import type { BN } from '../bn/bn.js';
|
|
5
|
-
import type { NumberOptions, ToBigInt, ToBn } from '../types.js';
|
|
6
|
-
|
|
7
|
-
import { BigInt } from '@pezkuwi/x-bigint';
|
|
8
|
-
|
|
9
|
-
import { _0n, _1n } from './consts.js';
|
|
10
|
-
import { nToBigInt } from './toBigInt.js';
|
|
11
|
-
|
|
12
|
-
const DIV = BigInt(256);
|
|
13
|
-
const NEG_MASK = BigInt(0xff);
|
|
14
|
-
|
|
15
|
-
function toU8a (value: bigint, isLe: boolean, isNegative: boolean): Uint8Array {
|
|
16
|
-
const arr: number[] = [];
|
|
17
|
-
const withSigned = isNegative && (value < _0n);
|
|
18
|
-
|
|
19
|
-
if (withSigned) {
|
|
20
|
-
value = (value + _1n) * -_1n;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
while (value !== _0n) {
|
|
24
|
-
const mod = value % DIV;
|
|
25
|
-
const val = Number(
|
|
26
|
-
withSigned
|
|
27
|
-
? mod ^ NEG_MASK
|
|
28
|
-
: mod
|
|
29
|
-
);
|
|
30
|
-
|
|
31
|
-
if (isLe) {
|
|
32
|
-
arr.push(val);
|
|
33
|
-
} else {
|
|
34
|
-
arr.unshift(val);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
value = (value - mod) / DIV;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
return Uint8Array.from(arr);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* @name nToU8a
|
|
45
|
-
* @summary Creates a Uint8Array object from a bigint.
|
|
46
|
-
*/
|
|
47
|
-
export function nToU8a <ExtToBn extends ToBn | ToBigInt> (value?: ExtToBn | BN | bigint | number | null, { bitLength = -1, isLe = true, isNegative = false }: NumberOptions = {}): Uint8Array {
|
|
48
|
-
const valueBi = nToBigInt(value);
|
|
49
|
-
|
|
50
|
-
if (valueBi === _0n) {
|
|
51
|
-
return bitLength === -1
|
|
52
|
-
? new Uint8Array(1)
|
|
53
|
-
: new Uint8Array(Math.ceil((bitLength || 0) / 8));
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
const u8a = toU8a(valueBi, isLe, isNegative);
|
|
57
|
-
|
|
58
|
-
if (bitLength === -1) {
|
|
59
|
-
return u8a;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
const byteLength = Math.ceil((bitLength || 0) / 8);
|
|
63
|
-
const output = new Uint8Array(byteLength);
|
|
64
|
-
|
|
65
|
-
if (isNegative) {
|
|
66
|
-
output.fill(0xff);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
output.set(u8a, isLe ? 0 : byteLength - u8a.length);
|
|
70
|
-
|
|
71
|
-
return output;
|
|
72
|
-
}
|
package/src/bn/bn.ts
DELETED
package/src/bn/consts.spec.ts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
|
5
|
-
|
|
6
|
-
import { BN, BN_HUNDRED, BN_ONE, BN_TEN, BN_THOUSAND, BN_ZERO } from './index.js';
|
|
7
|
-
|
|
8
|
-
describe('consts', (): void => {
|
|
9
|
-
it('BN_ZERO equals 0', (): void => {
|
|
10
|
-
expect(
|
|
11
|
-
BN_ZERO
|
|
12
|
-
).toEqual(new BN(0));
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
it('BN_ONE equals 1', (): void => {
|
|
16
|
-
expect(
|
|
17
|
-
BN_ONE
|
|
18
|
-
).toEqual(new BN(1));
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
it('BN_TEN equals 10', (): void => {
|
|
22
|
-
expect(
|
|
23
|
-
BN_TEN
|
|
24
|
-
).toEqual(new BN(10));
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
it('BN_HUNDRED equals 100', (): void => {
|
|
28
|
-
expect(
|
|
29
|
-
BN_HUNDRED
|
|
30
|
-
).toEqual(new BN(100));
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
it('BN_THOUSAND equals 1000', (): void => {
|
|
34
|
-
expect(
|
|
35
|
-
BN_THOUSAND
|
|
36
|
-
).toEqual(new BN(1000));
|
|
37
|
-
});
|
|
38
|
-
});
|
package/src/bn/fromHex.spec.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
|
5
|
-
|
|
6
|
-
import { isFunction } from '../is/function.js';
|
|
7
|
-
import { bnFromHex } from './index.js';
|
|
8
|
-
|
|
9
|
-
describe('bnFromHex', (): void => {
|
|
10
|
-
it('exists as a function', (): void => {
|
|
11
|
-
expect(
|
|
12
|
-
isFunction(bnFromHex)
|
|
13
|
-
).toEqual(true);
|
|
14
|
-
});
|
|
15
|
-
});
|
package/src/bn/fromHex.ts
DELETED
package/src/bn/max.spec.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
|
5
|
-
|
|
6
|
-
import { BN, bnMax } from './index.js';
|
|
7
|
-
|
|
8
|
-
describe('bnMax', (): void => {
|
|
9
|
-
it('finds BN maximum (sorted)', (): void => {
|
|
10
|
-
expect(
|
|
11
|
-
bnMax(new BN(1), new BN(2), new BN(3))
|
|
12
|
-
).toEqual(new BN(3));
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
it('finds BN maximum (unsorted)', (): void => {
|
|
16
|
-
expect(
|
|
17
|
-
bnMax(new BN(2), new BN(3), new BN(1))
|
|
18
|
-
).toEqual(new BN(3));
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
it('returns a single item', (): void => {
|
|
22
|
-
expect(
|
|
23
|
-
bnMax(new BN(1))
|
|
24
|
-
).toEqual(new BN(1));
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
it('fails when no items are available', (): void => {
|
|
28
|
-
expect(
|
|
29
|
-
() => bnMax()
|
|
30
|
-
).toThrow(/Must provide one or more arguments/);
|
|
31
|
-
});
|
|
32
|
-
});
|
package/src/bn/min.spec.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
|
5
|
-
|
|
6
|
-
import { BN, bnMin } from './index.js';
|
|
7
|
-
|
|
8
|
-
describe('bnMin', (): void => {
|
|
9
|
-
it('finds BN minimum', (): void => {
|
|
10
|
-
expect(
|
|
11
|
-
bnMin(new BN(2), new BN(1), new BN(3))
|
|
12
|
-
).toEqual(new BN(1));
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
it('returns a single item', (): void => {
|
|
16
|
-
expect(
|
|
17
|
-
bnMin(new BN(1))
|
|
18
|
-
).toEqual(new BN(1));
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
it('fails when no items are available', (): void => {
|
|
22
|
-
expect(
|
|
23
|
-
() => bnMin()
|
|
24
|
-
).toThrow(/Must provide one or more arguments/);
|
|
25
|
-
});
|
|
26
|
-
});
|
package/src/bn/sqrt.spec.ts
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
|
5
|
-
|
|
6
|
-
import { TESTS } from '../bi/sqrt.spec.js';
|
|
7
|
-
import { BN, BN_SQRT_MAX_INTEGER, bnSqrt } from './index.js';
|
|
8
|
-
|
|
9
|
-
describe('bnSqrt', (): void => {
|
|
10
|
-
it('fails on < 0 roots', (): void => {
|
|
11
|
-
expect(
|
|
12
|
-
() => bnSqrt(new BN(-1))
|
|
13
|
-
).toThrow(/negative numbers is not supported/);
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
it('has the correct constant for sqrt(Number.MAX_SAFE_INTEGER)', (): void => {
|
|
17
|
-
expect(
|
|
18
|
-
BN_SQRT_MAX_INTEGER.eq(
|
|
19
|
-
new BN(
|
|
20
|
-
~~Math.sqrt(
|
|
21
|
-
Number.MAX_SAFE_INTEGER
|
|
22
|
-
)
|
|
23
|
-
)
|
|
24
|
-
)
|
|
25
|
-
).toEqual(true);
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
describe('conversion tests', (): void => {
|
|
29
|
-
TESTS.forEach(([value, expected], i): void => {
|
|
30
|
-
it(`#${i}: calcs ${expected}`, (): void => {
|
|
31
|
-
expect(
|
|
32
|
-
bnSqrt(value).eq(new BN(expected))
|
|
33
|
-
).toEqual(true);
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
});
|
|
37
|
-
});
|
package/src/bn/sqrt.ts
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
// Copyright 2017-2025 @polkadot/util authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import type { ToBn } from '../types.js';
|
|
5
|
-
|
|
6
|
-
import { BN } from './bn.js';
|
|
7
|
-
import { BN_MAX_INTEGER, BN_ONE, BN_SQRT_MAX_INTEGER } from './consts.js';
|
|
8
|
-
import { bnToBn } from './toBn.js';
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* @name bnSqrt
|
|
12
|
-
* @summary Calculates the integer square root of a BN
|
|
13
|
-
* @example
|
|
14
|
-
* <BR>
|
|
15
|
-
*
|
|
16
|
-
* ```javascript
|
|
17
|
-
* import BN from 'bn.js';
|
|
18
|
-
* import { bnSqrt } from '@pezkuwi/util';
|
|
19
|
-
*
|
|
20
|
-
* bnSqrt(new BN(16)).toString(); // => '4'
|
|
21
|
-
* ```
|
|
22
|
-
*/
|
|
23
|
-
export function bnSqrt <ExtToBn extends ToBn> (value: ExtToBn | BN | bigint | string | number | null): BN {
|
|
24
|
-
const n = bnToBn(value);
|
|
25
|
-
|
|
26
|
-
if (n.isNeg()) {
|
|
27
|
-
throw new Error('square root of negative numbers is not supported');
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// https://stackoverflow.com/questions/53683995/javascript-big-integer-square-root/
|
|
31
|
-
// shortcut <= 2^53 - 1 to use the JS utils
|
|
32
|
-
if (n.lte(BN_MAX_INTEGER)) {
|
|
33
|
-
// ~~ More performant version of Math.floor
|
|
34
|
-
return new BN(~~Math.sqrt(n.toNumber()));
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// Use sqrt(MAX_SAFE_INTEGER) as starting point. since we already know the
|
|
38
|
-
// output will be larger than this, we expect this to be a safe start
|
|
39
|
-
let x0 = BN_SQRT_MAX_INTEGER.clone();
|
|
40
|
-
|
|
41
|
-
while (true) {
|
|
42
|
-
const x1 = n.div(x0).iadd(x0).ishrn(1);
|
|
43
|
-
|
|
44
|
-
if (x0.eq(x1) || x0.eq(x1.sub(BN_ONE))) {
|
|
45
|
-
return x0;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
x0 = x1;
|
|
49
|
-
}
|
|
50
|
-
}
|