From 5689f4b096d2e13a28eadf2694ec571fdb9d7c6b Mon Sep 17 00:00:00 2001 From: Andrea Baccega Date: Sat, 16 Mar 2024 16:16:59 +0100 Subject: [PATCH] test --- .github/swissknife.svg | 42 +++++++++++++++ README.md | 4 +- packages/bigint-math/README.md | 80 ++++++++++++++++++++++++++++ packages/bigint-uint8array/README.md | 13 ++--- 4 files changed, 130 insertions(+), 9 deletions(-) create mode 100644 .github/swissknife.svg create mode 100644 packages/bigint-math/README.md diff --git a/.github/swissknife.svg b/.github/swissknife.svg new file mode 100644 index 0000000..d4209d3 --- /dev/null +++ b/.github/swissknife.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/README.md b/README.md index fc78030..948b93a 100644 --- a/README.md +++ b/README.md @@ -1 +1,3 @@ -# bigint-utils2 +# ![SwissKnife](.github/swissknife.svg) bigint-swissknife + + diff --git a/packages/bigint-math/README.md b/packages/bigint-math/README.md new file mode 100644 index 0000000..9174ab7 --- /dev/null +++ b/packages/bigint-math/README.md @@ -0,0 +1,80 @@ +# @vekexasia/bigint-math: BigInt Math utils + + + +This project is part of the [bigint-swissknife](https://github.com/vekexasia/bigint-swissknife) project. It aims to provide some missing utilities in the `Math` native class. + +For example there is no `Math.max` for BigInt, this library provides a solution for that and other missing utilities. + +## Why? + +Tired of reinventing the wheel every time I decided to create a library that provides the missing math utilities for BigInt. + +The library allows to perform operations not just on bigint but also on everything that is `BigIntable` + +```typescript +export type BigIntable = bigint | number | string +``` + + +## Documentation + +You can find typedoc documentation [here](https://vekexasia.github.io/bigint-swissknife/variables/_vekexasia_bigint_math.BigIntMath.html). + +## Installation + +Add the library to your project: + +```bash +npm install @vekexasia/bigint-math +``` + +or + +```bash +yarn add @vekexasia/bigint-math +``` + +When using the library in a browser environment, you can **also** include it directly in your HTML file using the [iife](https://developer.mozilla.org/en-US/docs/Glossary/IIFE) build or the [umd](https://github.com/umdjs/umd). Both will expose the `BigIntUint8Array` global variable. + +If you wish to use iife or umd even with your preferred builder, remember to import the library like so + +```typescript +import '@vekexasia/bigint-math/iife'; +// or import '@vekexasia/bigint-math/umd'; +``` + +## Usage + +You can find all the available methods in the [typedoc documentation](https://vekexasia.github.io/bigint-swissknife/variables/_vekexasia_bigint_math.BigIntMath.html). But here a list of some of the most missing ones: + +```typescript + +import {BigIntMath} from '@vekexasia/bigint-math'; + +BigIntMath.max(1n, 2n, 3n, 4n, 5n); // 5n +BigIntMath.min(1n, 2n, 3n, 4n, 5n); // 1n +BigIntMath.abs(-1n); // 1n +BigIntMath.ceilDivide(5n, 4n); // 2n (5/4 = 1.25 => 2) +BigIntMath.divide(5n, 4n); // 1n (5/4 = 1.25) +BigIntMath.roundDivide(5n, 4n); // 1n (5/4 = 1.25 => 1) +BigIntMath.rand(2000000000000000000n); // random bigint between 0n and 2000000000000000000n + + +``` + +## TypeScript + +The library is entirely written in TypeScript and comes with its own type definitions. + +## a Note about `rand` + +The `rand` method uses the `crypto` module to generate a random number. On browser it uses `window.crypto` and on node it uses `crypto` from the `crypto` module. + + +## License + +This project is licensed under the MIT License - see the [LICENSE](../LICENSE) file for details. diff --git a/packages/bigint-uint8array/README.md b/packages/bigint-uint8array/README.md index e4f70d8..7c21680 100644 --- a/packages/bigint-uint8array/README.md +++ b/packages/bigint-uint8array/README.md @@ -37,14 +37,11 @@ yarn add @vekexasia/bigint-uint8array When using the library in a browser environment, you can **also** include it directly in your HTML file using the [iife](https://developer.mozilla.org/en-US/docs/Glossary/IIFE) build or the [umd](https://github.com/umdjs/umd). Both will expose the `BigIntUint8Array` global variable. -If you wish to use iife or umd even with your preferred builder, remember you can always use the `browser` field in your `package.json` to override the default `module` or `main` fields. - -```json -{ - "browser": { - "@vekexasia/bigint-uint8array": "dist/bigint-uint8array.iife.js" - } -} +If you wish to use iife or umd even with your preferred builder, remember to import the library like so + +```typescript +import '@vekexasia/bigint-math/iife'; +// or import '@vekexasia/bigint-math/umd'; ``` ## Typescript