@natoboram/based.ts 0.0.3 → 1.0.0

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.
Files changed (44) hide show
  1. package/README.md +45 -22
  2. package/dist/based.d.ts +2 -0
  3. package/dist/based.d.ts.map +1 -1
  4. package/dist/based.js +9 -1
  5. package/dist/based.js.map +1 -1
  6. package/dist/commander/convert.d.ts +9 -0
  7. package/dist/commander/convert.d.ts.map +1 -0
  8. package/dist/commander/convert.js +16 -0
  9. package/dist/commander/convert.js.map +1 -0
  10. package/dist/commander/program.d.ts +3 -0
  11. package/dist/commander/program.d.ts.map +1 -0
  12. package/dist/commander/program.js +28 -0
  13. package/dist/commander/program.js.map +1 -0
  14. package/dist/commander/uuid.d.ts +7 -0
  15. package/dist/commander/uuid.d.ts.map +1 -0
  16. package/dist/commander/uuid.js +14 -0
  17. package/dist/commander/uuid.js.map +1 -0
  18. package/dist/index.d.ts +8 -7
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +1 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/main.js +2 -5
  23. package/dist/main.js.map +1 -1
  24. package/dist/space.d.ts +3 -1
  25. package/dist/space.d.ts.map +1 -1
  26. package/dist/space.js +3 -1
  27. package/dist/space.js.map +1 -1
  28. package/dist/to_base.d.ts +4 -0
  29. package/dist/to_base.d.ts.map +1 -1
  30. package/dist/to_base.js +10 -0
  31. package/dist/to_base.js.map +1 -1
  32. package/dist/to_bigint.d.ts +2 -1
  33. package/dist/to_bigint.d.ts.map +1 -1
  34. package/dist/to_bigint.js +5 -0
  35. package/dist/to_bigint.js.map +1 -1
  36. package/dist/to_bytes.d.ts +2 -0
  37. package/dist/to_bytes.d.ts.map +1 -1
  38. package/dist/to_bytes.js +10 -0
  39. package/dist/to_bytes.js.map +1 -1
  40. package/dist/to_utf-8.d.ts +5 -0
  41. package/dist/to_utf-8.d.ts.map +1 -0
  42. package/dist/to_utf-8.js +17 -0
  43. package/dist/to_utf-8.js.map +1 -0
  44. package/package.json +14 -9
package/README.md CHANGED
@@ -1,44 +1,67 @@
1
- # `based.ts`
1
+ # [`@natoboram/based.ts`](https://github.com/NatoBoram/based.ts)
2
2
 
3
- [![Node.js CI](https://github.com/NatoBoram/based.ts/actions/workflows/node.js.yaml/badge.svg)](https://github.com/NatoBoram/based.ts/actions/workflows/node.js.yaml) [![GitHub Pages](https://github.com/NatoBoram/based.ts/actions/workflows/github-pages.yaml/badge.svg)](https://github.com/NatoBoram/based.ts/actions/workflows/github-pages.yaml) [![GitHub Downloads](https://img.shields.io/github/downloads/NatoBoram/based.ts/total?logo=github)](https://github.com/NatoBoram/based.ts/releases) [![NPM Downloads](https://img.shields.io/npm/dt/%40natoboram/based.ts?logo=npm)](https://www.npmjs.com/package/@natoboram/based.ts) [![Dependabot Updates](https://github.com/NatoBoram/based.ts/actions/workflows/dependabot/dependabot-updates/badge.svg)](https://github.com/NatoBoram/based.ts/actions/workflows/dependabot/dependabot-updates)
3
+ [![Node.js CI](https://github.com/NatoBoram/based.ts/actions/workflows/node.js.yaml/badge.svg)](https://github.com/NatoBoram/based.ts/actions/workflows/node.js.yaml) [![GitHub Pages](https://github.com/NatoBoram/based.ts/actions/workflows/github-pages.yaml/badge.svg)](https://github.com/NatoBoram/based.ts/actions/workflows/github-pages.yaml) [![GitHub Downloads](https://img.shields.io/github/downloads/NatoBoram/based.ts/total?logo=github)](https://github.com/NatoBoram/based.ts/releases) [![NPM Downloads](https://img.shields.io/npm/dt/%40natoboram/based.ts?logo=npm)](https://www.npmjs.com/package/@natoboram/based.ts) [![Dependabot Updates](https://github.com/NatoBoram/based.ts/actions/workflows/dependabot/dependabot-updates/badge.svg)](https://github.com/NatoBoram/based.ts/actions/workflows/dependabot/dependabot-updates) [![Wakapi](https://wakapi.dev/api/badge/NatoBoram/interval:any/project:based.ts)](https://wakapi.dev/summary?interval=any&project=based.ts)
4
4
 
5
5
  A TypeScript library for working with arbitrary bases.
6
6
 
7
- ## Installation
7
+ ## CLI
8
8
 
9
- It can be installed globally if you want to generate base36-encoded UUIDs.
9
+ It can be installed globally if you want to convert numbers or generate UUIDs from the terminal.
10
10
 
11
11
  ```sh
12
12
  pnpm install --global @natoboram/based.ts
13
- basedts
14
13
  ```
15
14
 
16
15
  ```log
17
- Base 36 UUID: 2pcugbwbg50o24pnu8h3u1f0b
16
+ Usage: basedts convert [options] <number>
17
+
18
+ Convert a number from a base in a space to another base in another space
19
+
20
+ Arguments:
21
+ number The number to convert
22
+
23
+ Options:
24
+ --from-base <base> The base of the number (default: "10")
25
+ --from-space <space> The space of the number to convert from (default: "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/")
26
+ --to-base <base> The base to convert to (default: "10")
27
+ --to-space <space> The space to convert the number to (default: "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/")
28
+ -h, --help Display help for command
18
29
  ```
19
30
 
20
- Proper CLI options are planned for the future, but for now that's all I needed this package for.
31
+ ```log
32
+ Usage: basedts uuid [options]
33
+
34
+ Generate a UUID in a different base with a different space than normal UUIDs
35
+
36
+ Options:
37
+ --base <base> The base of the UUID to generate (default: "16")
38
+ --space <space> The space of the UUID to generate (default: "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/")
39
+ -h, --help Display help for command
40
+ ```
21
41
 
22
- ## Usage
42
+ ## Library
23
43
 
24
44
  ```sh
25
- pnpm i -D @natoboram/based.ts
45
+ pnpm install @natoboram/based.ts
26
46
  ```
27
47
 
28
48
  ```ts
29
- import {
30
- basedToBigInt,
31
- bytesToBigInt,
32
- getRandomBytes,
33
- toBase,
34
- } from "@natoboram/based.ts"
35
-
36
- // Generate a base36-encoded UUID
37
- const bytes = getRandomBytes()
38
- const bigInt = bytesToBigInt(bytes)
39
- const base36 = toBase(bigInt, 36n)
40
- console.log("Base 36 UUID:", base36)
49
+ import { toBase, basedToBigInt } from "@natoboram/based.ts"
41
50
 
42
51
  // Convert between two bases
43
- const base64 = toBase(basedToBigInt("20zsnycqen1k898slr7xgnc9t", 36n), 64n)
52
+ const bigInt = basedToBigInt("69", 10n)
53
+ const based = toBase(bigInt, 16n)
54
+
55
+ console.log(based) // 45
56
+ ```
57
+
58
+ ```ts
59
+ import { Based } from "@natoboram/based.ts"
60
+
61
+ // Perform operations on numbers of different bases
62
+ const four = new Based("4", 64n)
63
+ const two = new Based("2", 16n)
64
+ const result = four.divide(two).to(10n)
65
+
66
+ console.log(result.value) // 2
44
67
  ```
package/dist/based.d.ts CHANGED
@@ -5,6 +5,8 @@ export declare class Based {
5
5
  readonly base: bigint;
6
6
  readonly space: string;
7
7
  constructor(value: string, base: bigint, space?: string);
8
+ static fromUtf8(value: string, base?: bigint, space?: string): Based;
9
+ toUtf8(): string;
8
10
  divide(based: Based): Based;
9
11
  minus(based: Based): Based;
10
12
  multiply(based: Based): Based;
@@ -1 +1 @@
1
- {"version":3,"file":"based.d.ts","sourceRoot":"","sources":["../src/based.ts"],"names":[],"mappings":"AAIA;sGACsG;AACtG,qBAAa,KAAK;IAEhB,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM;gBAFb,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,MAAoB;IAGrC,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAO3B,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAO1B,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAO7B,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAOzB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK;CAKvC"}
1
+ {"version":3,"file":"based.d.ts","sourceRoot":"","sources":["../src/based.ts"],"names":[],"mappings":"AAKA;sGACsG;AACtG,qBAAa,KAAK;IACjB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;gBAEV,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,MAAoB;IAMpE,MAAM,CAAC,QAAQ,CACd,KAAK,EAAE,MAAM,EACb,IAAI,SAAM,EACV,KAAK,GAAE,MAAoB,GACzB,KAAK;IAKR,MAAM,IAAI,MAAM;IAIhB,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAO3B,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAO1B,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAO7B,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAOzB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK;CAKvC"}
package/dist/based.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { base64Space } from "./space.js";
2
- import { toBase } from "./to_base.js";
2
+ import { toBase, utf8ToBase } from "./to_base.js";
3
3
  import { basedToBigInt } from "./to_bigint.js";
4
+ import { basedToUtf8 } from "./to_utf-8.js";
4
5
  /** Base-encoded string. Use this class if you convert from and to different
5
6
  * bases often. Otherwise, just use the provided utilities. You can provide a custom number's space */
6
7
  export class Based {
@@ -12,6 +13,13 @@ export class Based {
12
13
  this.base = base;
13
14
  this.space = space;
14
15
  }
16
+ static fromUtf8(value, base = 10n, space = base64Space) {
17
+ const based = utf8ToBase(value, base, space);
18
+ return new Based(based, base, space);
19
+ }
20
+ toUtf8() {
21
+ return basedToUtf8(this.value, this.base, this.space);
22
+ }
15
23
  divide(based) {
16
24
  const dividend = basedToBigInt(this.value, this.base, this.space);
17
25
  const divisor = basedToBigInt(based.value, based.base, based.space);
package/dist/based.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"based.js","sourceRoot":"","sources":["../src/based.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"based.js","sourceRoot":"","sources":["../src/based.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ interface ConvertOptions {
2
+ readonly fromBase: string;
3
+ readonly fromSpace: string;
4
+ readonly toBase: string;
5
+ readonly toSpace: string;
6
+ }
7
+ export declare function convert(input: string, options: ConvertOptions): void;
8
+ export {};
9
+ //# sourceMappingURL=convert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/commander/convert.ts"],"names":[],"mappings":"AAGA,UAAU,cAAc;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACxB;AAkBD,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAOpE"}
@@ -0,0 +1,16 @@
1
+ import { toBase } from "../to_base.js";
2
+ import { basedToBigInt } from "../to_bigint.js";
3
+ function parseConvertOptions(options) {
4
+ const fromBase = BigInt(parseInt(options.fromBase));
5
+ const toBase = BigInt(parseInt(options.toBase));
6
+ const fromSpace = options.fromSpace;
7
+ const toSpace = options.toSpace;
8
+ return { fromBase, fromSpace, toBase, toSpace };
9
+ }
10
+ export function convert(input, options) {
11
+ const parsed = parseConvertOptions(options);
12
+ const bigInt = basedToBigInt(input, parsed.fromBase, parsed.fromSpace);
13
+ const based = toBase(bigInt, parsed.toBase, parsed.toSpace);
14
+ console.log(based);
15
+ }
16
+ //# sourceMappingURL=convert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert.js","sourceRoot":"","sources":["../../src/commander/convert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAgB/C,SAAS,mBAAmB,CAAC,OAAuB;IACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;IACnD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;IAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;IACnC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAE/B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;AAChD,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAa,EAAE,OAAuB;IAC7D,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAE3C,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;IACtE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;IAE3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AACnB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare const program: Command;
3
+ //# sourceMappingURL=program.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/commander/program.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAcxC,eAAO,MAAM,OAAO,EAAE,OAAyB,CAAA"}
@@ -0,0 +1,28 @@
1
+ import { createCommand } from "commander";
2
+ import pkg from "../../package.json" with { type: "json" };
3
+ import { base64Space } from "../space.js";
4
+ import { convert } from "./convert.js";
5
+ import { uuid } from "./uuid.js";
6
+ const { bin, version, description } = pkg;
7
+ const name = Object.keys(bin).find(Boolean);
8
+ if (!name) {
9
+ throw new Error("No executable name found in package.json");
10
+ }
11
+ export const program = createCommand();
12
+ program.name(name).description(description).version(version);
13
+ program
14
+ .command("convert")
15
+ .description("Convert a number from a base in a space to another base in another space")
16
+ .argument("<number>", "The number to convert")
17
+ .option("--from-base <base>", "The base of the number", "10")
18
+ .option("--from-space <space>", "The space of the number to convert from", base64Space)
19
+ .option("--to-base <base>", "The base to convert to", "10")
20
+ .option("--to-space <space>", "The space to convert the number to", base64Space)
21
+ .action(convert);
22
+ program
23
+ .command("uuid")
24
+ .description("Generate a UUID in a different base with a different space than normal UUIDs")
25
+ .option("--base <base>", "The base of the UUID to generate", "16")
26
+ .option("--space <space>", "The space of the UUID to generate", base64Space)
27
+ .action(uuid);
28
+ //# sourceMappingURL=program.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/commander/program.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,GAAG,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,GAAG,CAAA;AAEzC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;IACX,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;AAC5D,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAY,aAAa,EAAE,CAAA;AAC/C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AAE5D,OAAO;KACL,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CACX,0EAA0E,CAC1E;KACA,QAAQ,CAAC,UAAU,EAAE,uBAAuB,CAAC;KAC7C,MAAM,CAAC,oBAAoB,EAAE,wBAAwB,EAAE,IAAI,CAAC;KAC5D,MAAM,CACN,sBAAsB,EACtB,yCAAyC,EACzC,WAAW,CACX;KACA,MAAM,CAAC,kBAAkB,EAAE,wBAAwB,EAAE,IAAI,CAAC;KAC1D,MAAM,CACN,oBAAoB,EACpB,oCAAoC,EACpC,WAAW,CACX;KACA,MAAM,CAAC,OAAO,CAAC,CAAA;AAEjB,OAAO;KACL,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CACX,8EAA8E,CAC9E;KACA,MAAM,CAAC,eAAe,EAAE,kCAAkC,EAAE,IAAI,CAAC;KACjE,MAAM,CAAC,iBAAiB,EAAE,mCAAmC,EAAE,WAAW,CAAC;KAC3E,MAAM,CAAC,IAAI,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ interface UuidOptions {
2
+ readonly base: string;
3
+ readonly space: string;
4
+ }
5
+ export declare function uuid(options: UuidOptions): void;
6
+ export {};
7
+ //# sourceMappingURL=uuid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uuid.d.ts","sourceRoot":"","sources":["../../src/commander/uuid.ts"],"names":[],"mappings":"AAGA,UAAU,WAAW;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACtB;AAaD,wBAAgB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAO/C"}
@@ -0,0 +1,14 @@
1
+ import { getRandomBytes } from "../bytes.js";
2
+ import { bytesToBase } from "../to_base.js";
3
+ function parseUuidOptions(options) {
4
+ const base = BigInt(parseInt(options.base));
5
+ const space = options.space;
6
+ return { base, space };
7
+ }
8
+ export function uuid(options) {
9
+ const parsed = parseUuidOptions(options);
10
+ const bytes = getRandomBytes(16);
11
+ const based = bytesToBase(bytes, parsed.base, parsed.space);
12
+ console.log(based);
13
+ }
14
+ //# sourceMappingURL=uuid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uuid.js","sourceRoot":"","sources":["../../src/commander/uuid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAY3C,SAAS,gBAAgB,CAAC,OAAoB;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;IAC3B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAoB;IACxC,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAExC,MAAM,KAAK,GAAG,cAAc,CAAC,EAAE,CAAC,CAAA;IAChC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAE3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AACnB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,9 @@
1
- export * from "./based.js";
2
- export * from "./bytes.js";
3
- export * from "./space.js";
4
- export * from "./to_base.js";
5
- export * from "./to_bigint.js";
6
- export * from "./to_bytes.js";
7
- export * from "./typed_array.js";
1
+ export * from "./based.ts";
2
+ export * from "./bytes.ts";
3
+ export * from "./space.ts";
4
+ export * from "./to_base.ts";
5
+ export * from "./to_bigint.ts";
6
+ export * from "./to_bytes.ts";
7
+ export * from "./to_utf-8.ts";
8
+ export type * from "./typed_array.ts";
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,mBAAmB,kBAAkB,CAAA"}
package/dist/index.js CHANGED
@@ -4,5 +4,5 @@ export * from "./space.js";
4
4
  export * from "./to_base.js";
5
5
  export * from "./to_bigint.js";
6
6
  export * from "./to_bytes.js";
7
- export * from "./typed_array.js";
7
+ export * from "./to_utf-8.js";
8
8
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA"}
package/dist/main.js CHANGED
@@ -1,7 +1,4 @@
1
1
  #!/usr/bin/env node
2
- import { bytesToBigInt, getRandomBytes, toBase } from "./index.js";
3
- const bytes = getRandomBytes();
4
- const bigInt = bytesToBigInt(bytes);
5
- const base36 = toBase(bigInt, 36n);
6
- console.log("Base 36 UUID:", base36);
2
+ import { program } from "./commander/program.js";
3
+ program.parse(process.argv);
7
4
  //# sourceMappingURL=main.js.map
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAElE,MAAM,KAAK,GAAG,cAAc,EAAE,CAAA;AAC9B,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;AACnC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAElC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,CAAA"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA"}
package/dist/space.d.ts CHANGED
@@ -1,3 +1,5 @@
1
- /** Default number space for this package. */
1
+ /** Default number space for this package. It should match `Number.toString` for
2
+ * the first 36 characters. The rest is filled with the uppercase alphabet then
3
+ * the standard, most common base64 letters, `+` and `/`. */
2
4
  export declare const base64Space = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/";
3
5
  //# sourceMappingURL=space.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"space.d.ts","sourceRoot":"","sources":["../src/space.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,eAAO,MAAM,WAAW,qEAC2C,CAAA"}
1
+ {"version":3,"file":"space.d.ts","sourceRoot":"","sources":["../src/space.ts"],"names":[],"mappings":"AAAA;;4DAE4D;AAC5D,eAAO,MAAM,WAAW,qEAC2C,CAAA"}
package/dist/space.js CHANGED
@@ -1,3 +1,5 @@
1
- /** Default number space for this package. */
1
+ /** Default number space for this package. It should match `Number.toString` for
2
+ * the first 36 characters. The rest is filled with the uppercase alphabet then
3
+ * the standard, most common base64 letters, `+` and `/`. */
2
4
  export const base64Space = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/";
3
5
  //# sourceMappingURL=space.js.map
package/dist/space.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"space.js","sourceRoot":"","sources":["../src/space.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,MAAM,CAAC,MAAM,WAAW,GACvB,kEAAkE,CAAA"}
1
+ {"version":3,"file":"space.js","sourceRoot":"","sources":["../src/space.ts"],"names":[],"mappings":"AAAA;;4DAE4D;AAC5D,MAAM,CAAC,MAAM,WAAW,GACvB,kEAAkE,CAAA"}
package/dist/to_base.d.ts CHANGED
@@ -1,3 +1,7 @@
1
+ import type { TypedUintArray } from "./typed_array.ts";
1
2
  /** Convert a number to a string in a given base. */
2
3
  export declare function toBase(value: bigint, base: bigint, space?: string): string;
4
+ /** Convert a UTF-8 string to a number in a given base. */
5
+ export declare function utf8ToBase(value: string, base: bigint, space?: string): string;
6
+ export declare function bytesToBase(bytes: TypedUintArray, base: bigint, space?: string): string;
3
7
  //# sourceMappingURL=to_base.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"to_base.d.ts","sourceRoot":"","sources":["../src/to_base.ts"],"names":[],"mappings":"AAEA,oDAAoD;AACpD,wBAAgB,MAAM,CACrB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,MAAoB,GACzB,MAAM,CAuBR"}
1
+ {"version":3,"file":"to_base.d.ts","sourceRoot":"","sources":["../src/to_base.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtD,oDAAoD;AACpD,wBAAgB,MAAM,CACrB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,MAAoB,GACzB,MAAM,CAuBR;AAED,0DAA0D;AAC1D,wBAAgB,UAAU,CACzB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,MAAoB,GACzB,MAAM,CAGR;AAED,wBAAgB,WAAW,CAC1B,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,MAAoB,GACzB,MAAM,CAGR"}
package/dist/to_base.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { base64Space } from "./space.js";
2
+ import { bytesToBigInt, utf8ToBigInt } from "./to_bigint.js";
2
3
  /** Convert a number to a string in a given base. */
3
4
  export function toBase(value, base, space = base64Space) {
4
5
  if (space.length < Number(base))
@@ -20,4 +21,13 @@ export function toBase(value, base, space = base64Space) {
20
21
  }
21
22
  return result;
22
23
  }
24
+ /** Convert a UTF-8 string to a number in a given base. */
25
+ export function utf8ToBase(value, base, space = base64Space) {
26
+ const bigInt = utf8ToBigInt(value);
27
+ return toBase(bigInt, base, space);
28
+ }
29
+ export function bytesToBase(bytes, base, space = base64Space) {
30
+ const bigInt = bytesToBigInt(bytes);
31
+ return toBase(bigInt, base, space);
32
+ }
23
33
  //# sourceMappingURL=to_base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"to_base.js","sourceRoot":"","sources":["../src/to_base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,oDAAoD;AACpD,MAAM,UAAU,MAAM,CACrB,KAAa,EACb,IAAY,EACZ,QAAgB,WAAW;IAE3B,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,6BAA6B,EAAE;YAC9C,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;SAC7B,CAAC,CAAA;IAEH,IAAI,KAAK,GAAG,EAAE;QAAE,OAAO,IAAI,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,CAAA;IAExD,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,OAAO,KAAK,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,CAAA;QAClC,KAAK,IAAI,IAAI,CAAA;QAEb,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;QAC1B,IAAI,KAAK,KAAK,SAAS;YACtB,MAAM,IAAI,KAAK,CAAC,eAAe,EAAE;gBAChC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;aAC5C,CAAC,CAAA;QAEH,MAAM,GAAG,KAAK,GAAG,MAAM,CAAA;IACxB,CAAC;IAED,OAAO,MAAM,CAAA;AACd,CAAC"}
1
+ {"version":3,"file":"to_base.js","sourceRoot":"","sources":["../src/to_base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAG5D,oDAAoD;AACpD,MAAM,UAAU,MAAM,CACrB,KAAa,EACb,IAAY,EACZ,QAAgB,WAAW;IAE3B,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,6BAA6B,EAAE;YAC9C,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;SAC7B,CAAC,CAAA;IAEH,IAAI,KAAK,GAAG,EAAE;QAAE,OAAO,IAAI,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,CAAA;IAExD,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,OAAO,KAAK,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,CAAA;QAClC,KAAK,IAAI,IAAI,CAAA;QAEb,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;QAC1B,IAAI,KAAK,KAAK,SAAS;YACtB,MAAM,IAAI,KAAK,CAAC,eAAe,EAAE;gBAChC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;aAC5C,CAAC,CAAA;QAEH,MAAM,GAAG,KAAK,GAAG,MAAM,CAAA;IACxB,CAAC;IAED,OAAO,MAAM,CAAA;AACd,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,UAAU,CACzB,KAAa,EACb,IAAY,EACZ,QAAgB,WAAW;IAE3B,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;IAClC,OAAO,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,WAAW,CAC1B,KAAqB,EACrB,IAAY,EACZ,QAAgB,WAAW;IAE3B,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;IACnC,OAAO,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;AACnC,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { TypedUintArray } from "./typed_array.js";
1
+ import type { TypedUintArray } from "./typed_array.ts";
2
2
  /** Turns a `string` in a given `base` into a `bigint` by multiplying each digit
3
3
  * by the `base` raised to the power of its position in the `string`. */
4
4
  export declare function basedToBigInt(based: string, base: bigint, space?: string): bigint;
@@ -6,4 +6,5 @@ export declare function basedToBigInt(based: string, base: bigint, space?: strin
6
6
  * hexadecimal string then concatenating the resulting digits using JavaScript's
7
7
  * `0x` notation. */
8
8
  export declare function bytesToBigInt(typedArray: TypedUintArray): bigint;
9
+ export declare function utf8ToBigInt(value: string): bigint;
9
10
  //# sourceMappingURL=to_bigint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"to_bigint.d.ts","sourceRoot":"","sources":["../src/to_bigint.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtD;wEACwE;AACxE,wBAAgB,aAAa,CAC5B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,MAAoB,GACzB,MAAM,CAuBR;AAED;;oBAEoB;AACpB,wBAAgB,aAAa,CAAC,UAAU,EAAE,cAAc,GAAG,MAAM,CAUhE"}
1
+ {"version":3,"file":"to_bigint.d.ts","sourceRoot":"","sources":["../src/to_bigint.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtD;wEACwE;AACxE,wBAAgB,aAAa,CAC5B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,MAAoB,GACzB,MAAM,CAuBR;AAED;;oBAEoB;AACpB,wBAAgB,aAAa,CAAC,UAAU,EAAE,cAAc,GAAG,MAAM,CAUhE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGlD"}
package/dist/to_bigint.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { base64Space } from "./space.js";
2
+ import { utf8ToBytes } from "./to_bytes.js";
2
3
  /** Turns a `string` in a given `base` into a `bigint` by multiplying each digit
3
4
  * by the `base` raised to the power of its position in the `string`. */
4
5
  export function basedToBigInt(based, base, space = base64Space) {
@@ -29,4 +30,8 @@ export function bytesToBigInt(typedArray) {
29
30
  const hexes = Array.from(typedArray).reduce((hexes, value) => (hexes.push(value.toString(16).padStart(maxLength, "0")), hexes), new Array(typedArray.length));
30
31
  return BigInt(`0x${hexes.join("")}`);
31
32
  }
33
+ export function utf8ToBigInt(value) {
34
+ const bytes = utf8ToBytes(value);
35
+ return bytesToBigInt(bytes);
36
+ }
32
37
  //# sourceMappingURL=to_bigint.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"to_bigint.js","sourceRoot":"","sources":["../src/to_bigint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAGxC;wEACwE;AACxE,MAAM,UAAU,aAAa,CAC5B,KAAa,EACb,IAAY,EACZ,QAAgB,WAAW;IAE3B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAEpC,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,6BAA6B,EAAE;YAC9C,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;SAC7B,CAAC,CAAA;IAEH,IAAI,IAAI,IAAI,EAAE;QAAE,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;IAC3C,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IAE7E,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAS,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;QACrE,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACvC,IAAI,UAAU,IAAI,CAAC,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,8BAA8B,EAAE;gBAC/C,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE;aACpE,CAAC,CAAA;QAEH,OAAO,CACN,MAAM;YACN,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,CAClE,CAAA;IACF,CAAC,EAAE,EAAE,CAAC,CAAA;AACP,CAAC;AAED;;oBAEoB;AACpB,MAAM,UAAU,aAAa,CAAC,UAA0B;IACvD,MAAM,SAAS,GAAG,UAAU,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAClD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAC1C,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CACjB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAC9D,EACD,IAAI,KAAK,CAAS,UAAU,CAAC,MAAM,CAAC,CACpC,CAAA;IAED,OAAO,MAAM,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;AACrC,CAAC"}
1
+ {"version":3,"file":"to_bigint.js","sourceRoot":"","sources":["../src/to_bigint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAG3C;wEACwE;AACxE,MAAM,UAAU,aAAa,CAC5B,KAAa,EACb,IAAY,EACZ,QAAgB,WAAW;IAE3B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAEpC,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,6BAA6B,EAAE;YAC9C,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;SAC7B,CAAC,CAAA;IAEH,IAAI,IAAI,IAAI,EAAE;QAAE,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;IAC3C,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IAE7E,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAS,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;QACrE,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACvC,IAAI,UAAU,IAAI,CAAC,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,8BAA8B,EAAE;gBAC/C,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE;aACpE,CAAC,CAAA;QAEH,OAAO,CACN,MAAM;YACN,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,CAClE,CAAA;IACF,CAAC,EAAE,EAAE,CAAC,CAAA;AACP,CAAC;AAED;;oBAEoB;AACpB,MAAM,UAAU,aAAa,CAAC,UAA0B;IACvD,MAAM,SAAS,GAAG,UAAU,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAClD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAC1C,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CACjB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAC9D,EACD,IAAI,KAAK,CAAS,UAAU,CAAC,MAAM,CAAC,CACpC,CAAA;IAED,OAAO,MAAM,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;AACrC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa;IACzC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;IAChC,OAAO,aAAa,CAAC,KAAK,CAAC,CAAA;AAC5B,CAAC"}
@@ -1,4 +1,6 @@
1
1
  /** Turns a `bigint` into a `Uint8ClampedArray` by converting it to a
2
2
  * hexadecimal string then turning each digit into a pair of bytes. */
3
3
  export declare function bigIntToBytes(bigInt: bigint): Uint8ClampedArray;
4
+ export declare function utf8ToBytes(value: string): Uint8Array;
5
+ export declare function basedToBytes(based: string, base: bigint, space?: string): Uint8ClampedArray;
4
6
  //# sourceMappingURL=to_bytes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"to_bytes.d.ts","sourceRoot":"","sources":["../src/to_bytes.ts"],"names":[],"mappings":"AAAA;sEACsE;AACtE,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAa/D"}
1
+ {"version":3,"file":"to_bytes.d.ts","sourceRoot":"","sources":["../src/to_bytes.ts"],"names":[],"mappings":"AAGA;sEACsE;AACtE,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAa/D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAGrD;AAED,wBAAgB,YAAY,CAC3B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,MAAoB,GACzB,iBAAiB,CAGnB"}
package/dist/to_bytes.js CHANGED
@@ -1,3 +1,5 @@
1
+ import { base64Space } from "./space.js";
2
+ import { basedToBigInt } from "./to_bigint.js";
1
3
  /** Turns a `bigint` into a `Uint8ClampedArray` by converting it to a
2
4
  * hexadecimal string then turning each digit into a pair of bytes. */
3
5
  export function bigIntToBytes(bigInt) {
@@ -12,4 +14,12 @@ export function bigIntToBytes(bigInt) {
12
14
  }
13
15
  return bytes;
14
16
  }
17
+ export function utf8ToBytes(value) {
18
+ const encoder = new TextEncoder();
19
+ return encoder.encode(value);
20
+ }
21
+ export function basedToBytes(based, base, space = base64Space) {
22
+ const bigInt = basedToBigInt(based, base, space);
23
+ return bigIntToBytes(bigInt);
24
+ }
15
25
  //# sourceMappingURL=to_bytes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"to_bytes.js","sourceRoot":"","sources":["../src/to_bytes.ts"],"names":[],"mappings":"AAAA;sEACsE;AACtE,MAAM,UAAU,aAAa,CAAC,MAAc;IAC3C,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,GAAG,IAAI,KAAK,EAAE,CAAA;IAEzC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;IAC/B,MAAM,KAAK,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAE3C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAC7C,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;QACjD,KAAK,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IACjC,CAAC;IAED,OAAO,KAAK,CAAA;AACb,CAAC"}
1
+ {"version":3,"file":"to_bytes.js","sourceRoot":"","sources":["../src/to_bytes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAE9C;sEACsE;AACtE,MAAM,UAAU,aAAa,CAAC,MAAc;IAC3C,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,GAAG,IAAI,KAAK,EAAE,CAAA;IAEzC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;IAC/B,MAAM,KAAK,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAE3C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAC7C,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;QACjD,KAAK,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IACjC,CAAC;IAED,OAAO,KAAK,CAAA;AACb,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa;IACxC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;IACjC,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,YAAY,CAC3B,KAAa,EACb,IAAY,EACZ,QAAgB,WAAW;IAE3B,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IAChD,OAAO,aAAa,CAAC,MAAM,CAAC,CAAA;AAC7B,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { TypedUintArray } from "./typed_array.ts";
2
+ export declare function basedToUtf8(based: string, base: bigint, space?: string): string;
3
+ export declare function bigIntToUtf8(bigInt: bigint): string;
4
+ export declare function bytesToUtf8(bytes: TypedUintArray): string;
5
+ //# sourceMappingURL=to_utf-8.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"to_utf-8.d.ts","sourceRoot":"","sources":["../src/to_utf-8.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtD,wBAAgB,WAAW,CAC1B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,MAAoB,GACzB,MAAM,CAIR;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAInD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAGzD"}
@@ -0,0 +1,17 @@
1
+ import { base64Space } from "./space.js";
2
+ import { basedToBytes, bigIntToBytes } from "./to_bytes.js";
3
+ export function basedToUtf8(based, base, space = base64Space) {
4
+ const bytes = basedToBytes(based, base, space);
5
+ const decoder = new TextDecoder();
6
+ return decoder.decode(bytes);
7
+ }
8
+ export function bigIntToUtf8(bigInt) {
9
+ const bytes = bigIntToBytes(bigInt);
10
+ const decoder = new TextDecoder();
11
+ return decoder.decode(bytes);
12
+ }
13
+ export function bytesToUtf8(bytes) {
14
+ const decoder = new TextDecoder();
15
+ return decoder.decode(bytes);
16
+ }
17
+ //# sourceMappingURL=to_utf-8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"to_utf-8.js","sourceRoot":"","sources":["../src/to_utf-8.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAG3D,MAAM,UAAU,WAAW,CAC1B,KAAa,EACb,IAAY,EACZ,QAAgB,WAAW;IAE3B,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IAC9C,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;IACjC,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAc;IAC1C,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;IACnC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;IACjC,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAqB;IAChD,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;IACjC,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC7B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@natoboram/based.ts",
3
- "version": "0.0.3",
3
+ "version": "1.0.0",
4
4
  "description": "A TypeScript library for working with arbitrary bases",
5
5
  "keywords": [
6
6
  "base2",
@@ -39,17 +39,20 @@
39
39
  "basedts": "dist/main.js"
40
40
  },
41
41
  "repository": "github:NatoBoram/based.ts",
42
+ "dependencies": {
43
+ "commander": "^13.1.0"
44
+ },
42
45
  "devDependencies": {
43
46
  "@eslint/js": "^9.9.0",
47
+ "@types/node": "^22.14.1",
44
48
  "eslint": "^9.9.0",
45
- "eslint-config-prettier": "^9.1.0",
46
- "globals": "^15.9.0",
49
+ "eslint-config-prettier": "^10.1.2",
50
+ "globals": "^16.0.0",
47
51
  "prettier": "^3.3.3",
48
- "tsx": "^4.17.0",
49
- "typedoc": "^0.26.5",
50
- "typescript": "~5.6.2",
52
+ "typedoc": "^0.28.1",
53
+ "typescript": "~5.8.2",
51
54
  "typescript-eslint": "^8.0.1",
52
- "vitest": "^2.0.5"
55
+ "vitest": "^3.1.1"
53
56
  },
54
57
  "type": "module",
55
58
  "exports": {
@@ -62,12 +65,14 @@
62
65
  "module": "dist/index.js",
63
66
  "scripts": {
64
67
  "build": "tsc",
65
- "dev": "tsx ./src/main.ts",
68
+ "clean": "rm -rf dist docs node_modules tsconfig.tsbuildinfo",
69
+ "dev": "node ./src/main.ts",
66
70
  "docs": "typedoc",
67
71
  "format": "prettier --write .",
68
72
  "lint": "eslint . && prettier --check .",
69
73
  "lint:fix": "eslint --fix .; prettier --list-different --write .",
70
74
  "start": "node dist/main.js",
71
- "test": "vitest"
75
+ "test": "vitest run",
76
+ "test:watch": "vitest"
72
77
  }
73
78
  }