bufferbase 1.3.0 → 2.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.
- package/README.md +99 -18
- package/dist/cjs/bases.d.ts +82 -0
- package/dist/cjs/bases.d.ts.map +1 -0
- package/dist/cjs/bases.js +121 -0
- package/dist/cjs/bases.js.map +1 -0
- package/dist/cjs/bufferbase.d.ts +19 -36
- package/dist/cjs/bufferbase.d.ts.map +1 -1
- package/dist/cjs/bufferbase.js +27 -111
- package/dist/cjs/bufferbase.js.map +1 -1
- package/dist/cjs/codec.d.ts +124 -0
- package/dist/cjs/codec.d.ts.map +1 -0
- package/dist/cjs/codec.js +247 -0
- package/dist/cjs/codec.js.map +1 -0
- package/dist/cjs/codecs.d.ts +71 -0
- package/dist/cjs/codecs.d.ts.map +1 -0
- package/dist/cjs/codecs.js +92 -0
- package/dist/cjs/codecs.js.map +1 -0
- package/dist/cjs/errors.d.ts +76 -0
- package/dist/cjs/errors.d.ts.map +1 -0
- package/dist/cjs/errors.js +92 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/example.js +20 -27
- package/dist/cjs/example.js.map +1 -1
- package/dist/cjs/functions.d.ts +62 -0
- package/dist/cjs/functions.d.ts.map +1 -0
- package/dist/cjs/functions.js +93 -0
- package/dist/cjs/functions.js.map +1 -0
- package/dist/cjs/index.d.ts +8 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +25 -4
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/package.json +6 -7
- package/dist/cjs/types.d.ts +107 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/esm/bases.d.ts +82 -0
- package/dist/esm/bases.d.ts.map +1 -0
- package/dist/esm/bases.js +116 -0
- package/dist/esm/bases.js.map +1 -0
- package/dist/esm/bufferbase.d.ts +19 -36
- package/dist/esm/bufferbase.d.ts.map +1 -1
- package/dist/esm/bufferbase.js +25 -107
- package/dist/esm/bufferbase.js.map +1 -1
- package/dist/esm/codec.d.ts +124 -0
- package/dist/esm/codec.d.ts.map +1 -0
- package/dist/esm/codec.js +242 -0
- package/dist/esm/codec.js.map +1 -0
- package/dist/esm/codecs.d.ts +71 -0
- package/dist/esm/codecs.d.ts.map +1 -0
- package/dist/esm/codecs.js +89 -0
- package/dist/esm/codecs.js.map +1 -0
- package/dist/esm/errors.d.ts +76 -0
- package/dist/esm/errors.d.ts.map +1 -0
- package/dist/esm/errors.js +86 -0
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/example.js +19 -26
- package/dist/esm/example.js.map +1 -1
- package/dist/esm/functions.d.ts +62 -0
- package/dist/esm/functions.d.ts.map +1 -0
- package/dist/esm/functions.js +87 -0
- package/dist/esm/functions.js.map +1 -0
- package/dist/esm/index.d.ts +8 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +12 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/package.json +6 -7
- package/dist/esm/types.d.ts +107 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/package.json +8 -9
- package/src/bases.ts +120 -0
- package/src/bufferbase.test.ts +44 -27
- package/src/bufferbase.ts +31 -106
- package/src/codec.test.ts +320 -0
- package/src/codec.ts +266 -0
- package/src/codecs.ts +118 -0
- package/src/errors.ts +87 -0
- package/src/example.ts +20 -30
- package/src/functions.ts +93 -0
- package/src/index.ts +21 -8
- package/src/types.ts +129 -0
- package/dist/cjs/bufferbase.d.mts +0 -60
- package/dist/cjs/bufferbase.d.mts.map +0 -1
- package/dist/cjs/bufferbase.mjs +0 -150
- package/dist/cjs/bufferbase.mjs.map +0 -1
- package/dist/cjs/example.d.mts +0 -2
- package/dist/cjs/example.d.mts.map +0 -1
- package/dist/cjs/example.mjs +0 -39
- package/dist/cjs/example.mjs.map +0 -1
- package/dist/cjs/index.d.mts +0 -2
- package/dist/cjs/index.d.mts.map +0 -1
- package/dist/cjs/index.mjs +0 -11
- package/dist/cjs/index.mjs.map +0 -1
- package/dist/esm/bufferbase.d.mts +0 -60
- package/dist/esm/bufferbase.d.mts.map +0 -1
- package/dist/esm/bufferbase.mjs +0 -141
- package/dist/esm/bufferbase.mjs.map +0 -1
- package/dist/esm/example.d.mts +0 -2
- package/dist/esm/example.d.mts.map +0 -1
- package/dist/esm/example.mjs +0 -37
- package/dist/esm/example.mjs.map +0 -1
- package/dist/esm/index.d.mts +0 -2
- package/dist/esm/index.d.mts.map +0 -1
- package/dist/esm/index.mjs +0 -2
- package/dist/esm/index.mjs.map +0 -1
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { Buffer } from 'node:buffer';
|
|
2
|
+
import type { ICodec, DecodeOptions, BufferLike } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Codec for encoding and decoding buffers to/from a specific base.
|
|
5
|
+
*
|
|
6
|
+
* Use pre-defined codecs from `Codecs` for common encodings,
|
|
7
|
+
* or create custom codecs with `createCodec()`.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* import { Codec, Codecs, createCodec } from 'bufferbase';
|
|
12
|
+
*
|
|
13
|
+
* // Use pre-defined codec
|
|
14
|
+
* const encoded = Codecs.base58.encode(Buffer.from('Hello'));
|
|
15
|
+
*
|
|
16
|
+
* // Create custom codec
|
|
17
|
+
* const binary = createCodec('01');
|
|
18
|
+
* const bits = binary.encode(Buffer.from([5])); // '101'
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare class Codec implements ICodec {
|
|
22
|
+
/** Character set used for encoding. */
|
|
23
|
+
readonly chars: string;
|
|
24
|
+
/** @internal */
|
|
25
|
+
private readonly charToIndex;
|
|
26
|
+
/**
|
|
27
|
+
* Creates a new codec with the specified character set.
|
|
28
|
+
* @param chars - The character set to use for encoding/decoding
|
|
29
|
+
*/
|
|
30
|
+
constructor(chars: string);
|
|
31
|
+
/**
|
|
32
|
+
* Encodes a buffer to a base-encoded string.
|
|
33
|
+
*
|
|
34
|
+
* Leading zero bytes in the buffer are preserved as the first character
|
|
35
|
+
* of the encoding alphabet (e.g., '1' for Base58).
|
|
36
|
+
*
|
|
37
|
+
* @param input - The buffer or Uint8Array to encode
|
|
38
|
+
* @returns Base-encoded string
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* const codec = Codecs.base58;
|
|
43
|
+
* codec.encode(Buffer.from('Hello')); // '9Ajdvzr'
|
|
44
|
+
* codec.encode(new Uint8Array([0, 0, 1])); // '112' (preserves leading zeros)
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
encode(input: BufferLike): string;
|
|
48
|
+
/**
|
|
49
|
+
* Decodes a base-encoded string to a buffer.
|
|
50
|
+
*
|
|
51
|
+
* Leading characters that represent zero (first char of alphabet)
|
|
52
|
+
* are converted to leading zero bytes in the result.
|
|
53
|
+
*
|
|
54
|
+
* @param encoded - The string to decode
|
|
55
|
+
* @param options - Decode options
|
|
56
|
+
* @returns Decoded buffer
|
|
57
|
+
* @throws {InvalidCharacterError} If the string contains invalid characters
|
|
58
|
+
* @throws {BufferSizeError} If the result exceeds the specified size
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* const codec = Codecs.base58;
|
|
63
|
+
* codec.decode('9Ajdvzr'); // Buffer('Hello')
|
|
64
|
+
* codec.decode('9Ajdvzr', { size: 32 }); // Pads to 32 bytes
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
decode(encoded: string, options?: DecodeOptions): Buffer;
|
|
68
|
+
/**
|
|
69
|
+
* Validates if a string contains only valid characters for this base.
|
|
70
|
+
*
|
|
71
|
+
* This is a fast check that doesn't perform full decoding.
|
|
72
|
+
*
|
|
73
|
+
* @param input - The string to validate
|
|
74
|
+
* @returns `true` if all characters are valid, `false` otherwise
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```typescript
|
|
78
|
+
* Codecs.base58.validate('9Ajdvzr'); // true
|
|
79
|
+
* Codecs.base58.validate('0invalid'); // false ('0' not in Base58)
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
validate(input: string): boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Converts a string from this base to another base.
|
|
85
|
+
*
|
|
86
|
+
* Internally decodes to a buffer, then encodes with the target codec.
|
|
87
|
+
*
|
|
88
|
+
* @param target - Target codec to convert to
|
|
89
|
+
* @param input - The string to convert
|
|
90
|
+
* @returns String in the target base encoding
|
|
91
|
+
* @throws {InvalidCharacterError} If the input contains invalid characters
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```typescript
|
|
95
|
+
* const base58str = '9Ajdvzr';
|
|
96
|
+
* const base64str = Codecs.base58.convertTo(Codecs.base64url, base58str);
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
convertTo(target: ICodec, input: string): string;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Creates a new codec with the specified character set.
|
|
103
|
+
*
|
|
104
|
+
* Use this to create codecs for custom base encodings.
|
|
105
|
+
* The base is determined by the length of the character set.
|
|
106
|
+
*
|
|
107
|
+
* @param chars - The character set to use for encoding/decoding
|
|
108
|
+
* @returns A new Codec instance
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```typescript
|
|
112
|
+
* import { createCodec } from 'bufferbase';
|
|
113
|
+
*
|
|
114
|
+
* // Binary codec (base 2)
|
|
115
|
+
* const binary = createCodec('01');
|
|
116
|
+
* binary.encode(Buffer.from([5])); // '101'
|
|
117
|
+
*
|
|
118
|
+
* // Octal codec (base 8)
|
|
119
|
+
* const octal = createCodec('01234567');
|
|
120
|
+
* octal.encode(Buffer.from([255])); // '377'
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
export declare function createCodec(chars: string): Codec;
|
|
124
|
+
//# sourceMappingURL=codec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/codec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAcpE;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,KAAM,YAAW,MAAM;IAClC,uCAAuC;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;IAElD;;;OAGG;gBACS,KAAK,EAAE,MAAM;IAQzB;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM;IA6CjC;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM;IAgExD;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAShC;;;;;;;;;;;;;;;OAeG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;CAIjD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAEhD"}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Codec = void 0;
|
|
4
|
+
exports.createCodec = createCodec;
|
|
5
|
+
const node_buffer_1 = require("node:buffer");
|
|
6
|
+
const errors_js_1 = require("./errors.js");
|
|
7
|
+
/**
|
|
8
|
+
* Converts a BufferLike (Buffer or Uint8Array) to a Buffer.
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
function toBuffer(input) {
|
|
12
|
+
if (node_buffer_1.Buffer.isBuffer(input)) {
|
|
13
|
+
return input;
|
|
14
|
+
}
|
|
15
|
+
return node_buffer_1.Buffer.from(input);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Codec for encoding and decoding buffers to/from a specific base.
|
|
19
|
+
*
|
|
20
|
+
* Use pre-defined codecs from `Codecs` for common encodings,
|
|
21
|
+
* or create custom codecs with `createCodec()`.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* import { Codec, Codecs, createCodec } from 'bufferbase';
|
|
26
|
+
*
|
|
27
|
+
* // Use pre-defined codec
|
|
28
|
+
* const encoded = Codecs.base58.encode(Buffer.from('Hello'));
|
|
29
|
+
*
|
|
30
|
+
* // Create custom codec
|
|
31
|
+
* const binary = createCodec('01');
|
|
32
|
+
* const bits = binary.encode(Buffer.from([5])); // '101'
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
class Codec {
|
|
36
|
+
/**
|
|
37
|
+
* Creates a new codec with the specified character set.
|
|
38
|
+
* @param chars - The character set to use for encoding/decoding
|
|
39
|
+
*/
|
|
40
|
+
constructor(chars) {
|
|
41
|
+
this.chars = chars;
|
|
42
|
+
this.charToIndex = new Map();
|
|
43
|
+
for (let i = 0; i < chars.length; i++) {
|
|
44
|
+
this.charToIndex.set(chars[i], i);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Encodes a buffer to a base-encoded string.
|
|
49
|
+
*
|
|
50
|
+
* Leading zero bytes in the buffer are preserved as the first character
|
|
51
|
+
* of the encoding alphabet (e.g., '1' for Base58).
|
|
52
|
+
*
|
|
53
|
+
* @param input - The buffer or Uint8Array to encode
|
|
54
|
+
* @returns Base-encoded string
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```typescript
|
|
58
|
+
* const codec = Codecs.base58;
|
|
59
|
+
* codec.encode(Buffer.from('Hello')); // '9Ajdvzr'
|
|
60
|
+
* codec.encode(new Uint8Array([0, 0, 1])); // '112' (preserves leading zeros)
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
encode(input) {
|
|
64
|
+
const buffer = toBuffer(input);
|
|
65
|
+
if (buffer.length === 0) {
|
|
66
|
+
return '';
|
|
67
|
+
}
|
|
68
|
+
const base = this.chars.length;
|
|
69
|
+
const result = [];
|
|
70
|
+
// Count leading zeros
|
|
71
|
+
let leadingZeros = 0;
|
|
72
|
+
for (const byte of buffer) {
|
|
73
|
+
if (byte === 0) {
|
|
74
|
+
leadingZeros++;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Convert to base
|
|
81
|
+
for (const byte of buffer) {
|
|
82
|
+
let carry = byte;
|
|
83
|
+
for (let j = 0; j < result.length; j++) {
|
|
84
|
+
carry += result[j] * 256;
|
|
85
|
+
result[j] = carry % base;
|
|
86
|
+
carry = Math.floor(carry / base);
|
|
87
|
+
}
|
|
88
|
+
while (carry > 0) {
|
|
89
|
+
result.push(carry % base);
|
|
90
|
+
carry = Math.floor(carry / base);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// Add leading zeros
|
|
94
|
+
for (let i = 0; i < leadingZeros; i++) {
|
|
95
|
+
result.push(0);
|
|
96
|
+
}
|
|
97
|
+
// Reverse and convert to string
|
|
98
|
+
return result
|
|
99
|
+
.reverse()
|
|
100
|
+
.map((index) => this.chars[index])
|
|
101
|
+
.join('');
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Decodes a base-encoded string to a buffer.
|
|
105
|
+
*
|
|
106
|
+
* Leading characters that represent zero (first char of alphabet)
|
|
107
|
+
* are converted to leading zero bytes in the result.
|
|
108
|
+
*
|
|
109
|
+
* @param encoded - The string to decode
|
|
110
|
+
* @param options - Decode options
|
|
111
|
+
* @returns Decoded buffer
|
|
112
|
+
* @throws {InvalidCharacterError} If the string contains invalid characters
|
|
113
|
+
* @throws {BufferSizeError} If the result exceeds the specified size
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```typescript
|
|
117
|
+
* const codec = Codecs.base58;
|
|
118
|
+
* codec.decode('9Ajdvzr'); // Buffer('Hello')
|
|
119
|
+
* codec.decode('9Ajdvzr', { size: 32 }); // Pads to 32 bytes
|
|
120
|
+
* ```
|
|
121
|
+
*/
|
|
122
|
+
decode(encoded, options) {
|
|
123
|
+
if (encoded.length === 0) {
|
|
124
|
+
if (options?.size !== undefined && options.size > 0) {
|
|
125
|
+
return node_buffer_1.Buffer.alloc(options.size);
|
|
126
|
+
}
|
|
127
|
+
return node_buffer_1.Buffer.alloc(0);
|
|
128
|
+
}
|
|
129
|
+
const base = this.chars.length;
|
|
130
|
+
const zeroChar = this.chars[0];
|
|
131
|
+
// Count leading zeros in encoded string
|
|
132
|
+
let leadingZeros = 0;
|
|
133
|
+
for (const char of encoded) {
|
|
134
|
+
if (char === zeroChar) {
|
|
135
|
+
leadingZeros++;
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// Convert from base
|
|
142
|
+
const result = [];
|
|
143
|
+
for (const char of encoded) {
|
|
144
|
+
const value = this.charToIndex.get(char);
|
|
145
|
+
if (value === undefined) {
|
|
146
|
+
throw new errors_js_1.InvalidCharacterError(char);
|
|
147
|
+
}
|
|
148
|
+
let carry = value;
|
|
149
|
+
for (let i = 0; i < result.length; i++) {
|
|
150
|
+
carry += result[i] * base;
|
|
151
|
+
result[i] = carry % 256;
|
|
152
|
+
carry = Math.floor(carry / 256);
|
|
153
|
+
}
|
|
154
|
+
while (carry > 0) {
|
|
155
|
+
result.push(carry % 256);
|
|
156
|
+
carry = Math.floor(carry / 256);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// Add leading zeros
|
|
160
|
+
for (let i = 0; i < leadingZeros; i++) {
|
|
161
|
+
result.push(0);
|
|
162
|
+
}
|
|
163
|
+
result.reverse();
|
|
164
|
+
// Handle size option
|
|
165
|
+
const size = options?.size;
|
|
166
|
+
if (size !== undefined) {
|
|
167
|
+
if (result.length > size) {
|
|
168
|
+
throw new errors_js_1.BufferSizeError(result.length, size);
|
|
169
|
+
}
|
|
170
|
+
if (result.length < size) {
|
|
171
|
+
// Pad with leading zeros
|
|
172
|
+
const padded = new Array(size - result.length).fill(0).concat(result);
|
|
173
|
+
return node_buffer_1.Buffer.from(padded);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return node_buffer_1.Buffer.from(result);
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Validates if a string contains only valid characters for this base.
|
|
180
|
+
*
|
|
181
|
+
* This is a fast check that doesn't perform full decoding.
|
|
182
|
+
*
|
|
183
|
+
* @param input - The string to validate
|
|
184
|
+
* @returns `true` if all characters are valid, `false` otherwise
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* ```typescript
|
|
188
|
+
* Codecs.base58.validate('9Ajdvzr'); // true
|
|
189
|
+
* Codecs.base58.validate('0invalid'); // false ('0' not in Base58)
|
|
190
|
+
* ```
|
|
191
|
+
*/
|
|
192
|
+
validate(input) {
|
|
193
|
+
for (const char of input) {
|
|
194
|
+
if (!this.charToIndex.has(char)) {
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return true;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Converts a string from this base to another base.
|
|
202
|
+
*
|
|
203
|
+
* Internally decodes to a buffer, then encodes with the target codec.
|
|
204
|
+
*
|
|
205
|
+
* @param target - Target codec to convert to
|
|
206
|
+
* @param input - The string to convert
|
|
207
|
+
* @returns String in the target base encoding
|
|
208
|
+
* @throws {InvalidCharacterError} If the input contains invalid characters
|
|
209
|
+
*
|
|
210
|
+
* @example
|
|
211
|
+
* ```typescript
|
|
212
|
+
* const base58str = '9Ajdvzr';
|
|
213
|
+
* const base64str = Codecs.base58.convertTo(Codecs.base64url, base58str);
|
|
214
|
+
* ```
|
|
215
|
+
*/
|
|
216
|
+
convertTo(target, input) {
|
|
217
|
+
const buffer = this.decode(input);
|
|
218
|
+
return target.encode(buffer);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
exports.Codec = Codec;
|
|
222
|
+
/**
|
|
223
|
+
* Creates a new codec with the specified character set.
|
|
224
|
+
*
|
|
225
|
+
* Use this to create codecs for custom base encodings.
|
|
226
|
+
* The base is determined by the length of the character set.
|
|
227
|
+
*
|
|
228
|
+
* @param chars - The character set to use for encoding/decoding
|
|
229
|
+
* @returns A new Codec instance
|
|
230
|
+
*
|
|
231
|
+
* @example
|
|
232
|
+
* ```typescript
|
|
233
|
+
* import { createCodec } from 'bufferbase';
|
|
234
|
+
*
|
|
235
|
+
* // Binary codec (base 2)
|
|
236
|
+
* const binary = createCodec('01');
|
|
237
|
+
* binary.encode(Buffer.from([5])); // '101'
|
|
238
|
+
*
|
|
239
|
+
* // Octal codec (base 8)
|
|
240
|
+
* const octal = createCodec('01234567');
|
|
241
|
+
* octal.encode(Buffer.from([255])); // '377'
|
|
242
|
+
* ```
|
|
243
|
+
*/
|
|
244
|
+
function createCodec(chars) {
|
|
245
|
+
return new Codec(chars);
|
|
246
|
+
}
|
|
247
|
+
//# sourceMappingURL=codec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/codec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { Codec } from './codec.js';
|
|
2
|
+
/**
|
|
3
|
+
* Pre-defined codec instances for common base encodings.
|
|
4
|
+
*
|
|
5
|
+
* Use these for encoding/decoding without creating codec instances manually.
|
|
6
|
+
* Each codec provides `encode()`, `decode()`, `validate()`, and `convertTo()` methods.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { Codecs } from 'bufferbase';
|
|
11
|
+
*
|
|
12
|
+
* // Encode to Base58
|
|
13
|
+
* const encoded = Codecs.base58.encode(Buffer.from('Hello'));
|
|
14
|
+
*
|
|
15
|
+
* // Decode from Base58
|
|
16
|
+
* const decoded = Codecs.base58.decode(encoded);
|
|
17
|
+
*
|
|
18
|
+
* // Convert between bases
|
|
19
|
+
* const base64 = Codecs.base58.convertTo(Codecs.base64url, encoded);
|
|
20
|
+
*
|
|
21
|
+
* // Validate
|
|
22
|
+
* Codecs.base58.validate(encoded); // true
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* Available codecs:
|
|
26
|
+
* - `decimal` - Base 10 (0-9)
|
|
27
|
+
* - `base16` / `hex` - Hexadecimal (0-9A-F)
|
|
28
|
+
* - `base32` - RFC 4648 Base32 (A-Z2-7)
|
|
29
|
+
* - `base32crockford` - Crockford's Base32
|
|
30
|
+
* - `base36` - Alphanumeric (0-9A-Z)
|
|
31
|
+
* - `base52` - Letters only (A-Za-z)
|
|
32
|
+
* - `base58` - Bitcoin alphabet
|
|
33
|
+
* - `base64` - Standard Base64
|
|
34
|
+
* - `base64url` - URL-safe Base64
|
|
35
|
+
* - `base64xml` - XML token Base64
|
|
36
|
+
* - `base64xmlname` - XML name Base64
|
|
37
|
+
* - `ascii85` - ASCII85 encoding
|
|
38
|
+
* - `base85` - Base85 encoding
|
|
39
|
+
* - `z85` - ZeroMQ Z85 encoding
|
|
40
|
+
*/
|
|
41
|
+
export declare const Codecs: {
|
|
42
|
+
readonly decimal: Codec;
|
|
43
|
+
readonly base16: Codec;
|
|
44
|
+
readonly hex: Codec;
|
|
45
|
+
readonly base32: Codec;
|
|
46
|
+
readonly base32crockford: Codec;
|
|
47
|
+
readonly base36: Codec;
|
|
48
|
+
readonly base52: Codec;
|
|
49
|
+
readonly base58: Codec;
|
|
50
|
+
readonly base64: Codec;
|
|
51
|
+
readonly base64url: Codec;
|
|
52
|
+
readonly base64xml: Codec;
|
|
53
|
+
readonly base64xmlname: Codec;
|
|
54
|
+
readonly ascii85: Codec;
|
|
55
|
+
readonly base85: Codec;
|
|
56
|
+
readonly z85: Codec;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Type representing valid codec names in the `Codecs` object.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```typescript
|
|
63
|
+
* import { Codecs, CodecName } from 'bufferbase';
|
|
64
|
+
*
|
|
65
|
+
* function getCodec(name: CodecName) {
|
|
66
|
+
* return Codecs[name];
|
|
67
|
+
* }
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export type CodecName = keyof typeof Codecs;
|
|
71
|
+
//# sourceMappingURL=codecs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codecs.d.ts","sourceRoot":"","sources":["../../src/codecs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAgDnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;CAgBT,CAAC;AAEX;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,MAAM,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Codecs = void 0;
|
|
4
|
+
const codec_js_1 = require("./codec.js");
|
|
5
|
+
const bases_js_1 = require("./bases.js");
|
|
6
|
+
/** Decimal (base 10) codec: 0-9 */
|
|
7
|
+
const decimal = new codec_js_1.Codec(bases_js_1.Chars.Decimal);
|
|
8
|
+
/** Hexadecimal (base 16) codec: 0-9A-F */
|
|
9
|
+
const base16 = new codec_js_1.Codec(bases_js_1.Chars.Base16);
|
|
10
|
+
/** Alias for base16 */
|
|
11
|
+
const hex = base16;
|
|
12
|
+
/** RFC 4648 Base32 codec: A-Z2-7 */
|
|
13
|
+
const base32 = new codec_js_1.Codec(bases_js_1.Chars.Base32);
|
|
14
|
+
/** Crockford's Base32 codec: 0-9A-HJKMNP-TV-Z (no I, L, O, U) */
|
|
15
|
+
const base32crockford = new codec_js_1.Codec(bases_js_1.Chars.Base32Crockford);
|
|
16
|
+
/** Base36 codec: 0-9A-Z */
|
|
17
|
+
const base36 = new codec_js_1.Codec(bases_js_1.Chars.Base36);
|
|
18
|
+
/** Base52 codec: A-Za-z (letters only) */
|
|
19
|
+
const base52 = new codec_js_1.Codec(bases_js_1.Chars.Base52);
|
|
20
|
+
/** Bitcoin Base58 codec: 1-9A-HJ-NP-Za-km-z (no 0, O, I, l) */
|
|
21
|
+
const base58 = new codec_js_1.Codec(bases_js_1.Chars.Base58);
|
|
22
|
+
/** Standard Base64 codec: A-Za-z0-9+/ */
|
|
23
|
+
const base64 = new codec_js_1.Codec(bases_js_1.Chars.Base64);
|
|
24
|
+
/** URL-safe Base64 codec: A-Za-z0-9-_ */
|
|
25
|
+
const base64url = new codec_js_1.Codec(bases_js_1.Chars.Base64Url);
|
|
26
|
+
/** XML token Base64 codec: A-Za-z0-9._ */
|
|
27
|
+
const base64xml = new codec_js_1.Codec(bases_js_1.Chars.Base64Xml);
|
|
28
|
+
/** XML name Base64 codec: A-Za-z0-9_: */
|
|
29
|
+
const base64xmlname = new codec_js_1.Codec(bases_js_1.Chars.Base64XmlName);
|
|
30
|
+
/** ASCII85 codec */
|
|
31
|
+
const ascii85 = new codec_js_1.Codec(bases_js_1.Chars.Ascii85);
|
|
32
|
+
/** Base85 codec */
|
|
33
|
+
const base85 = new codec_js_1.Codec(bases_js_1.Chars.Base85);
|
|
34
|
+
/** ZeroMQ Z85 codec */
|
|
35
|
+
const z85 = new codec_js_1.Codec(bases_js_1.Chars.Z85);
|
|
36
|
+
/**
|
|
37
|
+
* Pre-defined codec instances for common base encodings.
|
|
38
|
+
*
|
|
39
|
+
* Use these for encoding/decoding without creating codec instances manually.
|
|
40
|
+
* Each codec provides `encode()`, `decode()`, `validate()`, and `convertTo()` methods.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* import { Codecs } from 'bufferbase';
|
|
45
|
+
*
|
|
46
|
+
* // Encode to Base58
|
|
47
|
+
* const encoded = Codecs.base58.encode(Buffer.from('Hello'));
|
|
48
|
+
*
|
|
49
|
+
* // Decode from Base58
|
|
50
|
+
* const decoded = Codecs.base58.decode(encoded);
|
|
51
|
+
*
|
|
52
|
+
* // Convert between bases
|
|
53
|
+
* const base64 = Codecs.base58.convertTo(Codecs.base64url, encoded);
|
|
54
|
+
*
|
|
55
|
+
* // Validate
|
|
56
|
+
* Codecs.base58.validate(encoded); // true
|
|
57
|
+
* ```
|
|
58
|
+
*
|
|
59
|
+
* Available codecs:
|
|
60
|
+
* - `decimal` - Base 10 (0-9)
|
|
61
|
+
* - `base16` / `hex` - Hexadecimal (0-9A-F)
|
|
62
|
+
* - `base32` - RFC 4648 Base32 (A-Z2-7)
|
|
63
|
+
* - `base32crockford` - Crockford's Base32
|
|
64
|
+
* - `base36` - Alphanumeric (0-9A-Z)
|
|
65
|
+
* - `base52` - Letters only (A-Za-z)
|
|
66
|
+
* - `base58` - Bitcoin alphabet
|
|
67
|
+
* - `base64` - Standard Base64
|
|
68
|
+
* - `base64url` - URL-safe Base64
|
|
69
|
+
* - `base64xml` - XML token Base64
|
|
70
|
+
* - `base64xmlname` - XML name Base64
|
|
71
|
+
* - `ascii85` - ASCII85 encoding
|
|
72
|
+
* - `base85` - Base85 encoding
|
|
73
|
+
* - `z85` - ZeroMQ Z85 encoding
|
|
74
|
+
*/
|
|
75
|
+
exports.Codecs = {
|
|
76
|
+
decimal,
|
|
77
|
+
base16,
|
|
78
|
+
hex,
|
|
79
|
+
base32,
|
|
80
|
+
base32crockford,
|
|
81
|
+
base36,
|
|
82
|
+
base52,
|
|
83
|
+
base58,
|
|
84
|
+
base64,
|
|
85
|
+
base64url,
|
|
86
|
+
base64xml,
|
|
87
|
+
base64xmlname,
|
|
88
|
+
ascii85,
|
|
89
|
+
base85,
|
|
90
|
+
z85,
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=codecs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codecs.js","sourceRoot":"","sources":["../../src/codecs.ts"],"names":[],"mappings":";;;AAAA,yCAAmC;AACnC,yCAAmC;AAEnC,mCAAmC;AACnC,MAAM,OAAO,GAAG,IAAI,gBAAK,CAAC,gBAAK,CAAC,OAAO,CAAC,CAAC;AAEzC,0CAA0C;AAC1C,MAAM,MAAM,GAAG,IAAI,gBAAK,CAAC,gBAAK,CAAC,MAAM,CAAC,CAAC;AAEvC,uBAAuB;AACvB,MAAM,GAAG,GAAG,MAAM,CAAC;AAEnB,oCAAoC;AACpC,MAAM,MAAM,GAAG,IAAI,gBAAK,CAAC,gBAAK,CAAC,MAAM,CAAC,CAAC;AAEvC,iEAAiE;AACjE,MAAM,eAAe,GAAG,IAAI,gBAAK,CAAC,gBAAK,CAAC,eAAe,CAAC,CAAC;AAEzD,2BAA2B;AAC3B,MAAM,MAAM,GAAG,IAAI,gBAAK,CAAC,gBAAK,CAAC,MAAM,CAAC,CAAC;AAEvC,0CAA0C;AAC1C,MAAM,MAAM,GAAG,IAAI,gBAAK,CAAC,gBAAK,CAAC,MAAM,CAAC,CAAC;AAEvC,+DAA+D;AAC/D,MAAM,MAAM,GAAG,IAAI,gBAAK,CAAC,gBAAK,CAAC,MAAM,CAAC,CAAC;AAEvC,yCAAyC;AACzC,MAAM,MAAM,GAAG,IAAI,gBAAK,CAAC,gBAAK,CAAC,MAAM,CAAC,CAAC;AAEvC,yCAAyC;AACzC,MAAM,SAAS,GAAG,IAAI,gBAAK,CAAC,gBAAK,CAAC,SAAS,CAAC,CAAC;AAE7C,0CAA0C;AAC1C,MAAM,SAAS,GAAG,IAAI,gBAAK,CAAC,gBAAK,CAAC,SAAS,CAAC,CAAC;AAE7C,yCAAyC;AACzC,MAAM,aAAa,GAAG,IAAI,gBAAK,CAAC,gBAAK,CAAC,aAAa,CAAC,CAAC;AAErD,oBAAoB;AACpB,MAAM,OAAO,GAAG,IAAI,gBAAK,CAAC,gBAAK,CAAC,OAAO,CAAC,CAAC;AAEzC,mBAAmB;AACnB,MAAM,MAAM,GAAG,IAAI,gBAAK,CAAC,gBAAK,CAAC,MAAM,CAAC,CAAC;AAEvC,uBAAuB;AACvB,MAAM,GAAG,GAAG,IAAI,gBAAK,CAAC,gBAAK,CAAC,GAAG,CAAC,CAAC;AAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACU,QAAA,MAAM,GAAG;IACpB,OAAO;IACP,MAAM;IACN,GAAG;IACH,MAAM;IACN,eAAe;IACf,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,SAAS;IACT,SAAS;IACT,aAAa;IACb,OAAO;IACP,MAAM;IACN,GAAG;CACK,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error thrown when an invalid character is encountered during decoding.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```typescript
|
|
6
|
+
* import { decode, InvalidCharacterError } from 'bufferbase';
|
|
7
|
+
*
|
|
8
|
+
* try {
|
|
9
|
+
* decode('invalid!', 'base58');
|
|
10
|
+
* } catch (e) {
|
|
11
|
+
* if (e instanceof InvalidCharacterError) {
|
|
12
|
+
* console.log(e.message); // "Invalid character found: '!'"
|
|
13
|
+
* }
|
|
14
|
+
* }
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export declare class InvalidCharacterError extends Error {
|
|
18
|
+
/**
|
|
19
|
+
* @param char - The invalid character that was encountered (optional)
|
|
20
|
+
*/
|
|
21
|
+
constructor(char?: string);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Error thrown when decoded buffer size exceeds the specified size.
|
|
25
|
+
*
|
|
26
|
+
* This error is thrown when using the `size` option in decode operations
|
|
27
|
+
* and the decoded data is larger than the specified size.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* import { decode, BufferSizeError } from 'bufferbase';
|
|
32
|
+
*
|
|
33
|
+
* try {
|
|
34
|
+
* // Trying to decode into a buffer too small
|
|
35
|
+
* decode('72k1xXWG59fYdzSNoA', 'base58', { size: 2 });
|
|
36
|
+
* } catch (e) {
|
|
37
|
+
* if (e instanceof BufferSizeError) {
|
|
38
|
+
* console.log(e.message); // "Buffer size 13 exceeds specified size 2"
|
|
39
|
+
* }
|
|
40
|
+
* }
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export declare class BufferSizeError extends Error {
|
|
44
|
+
/**
|
|
45
|
+
* @param actual - The actual decoded buffer size
|
|
46
|
+
* @param expected - The expected (specified) buffer size
|
|
47
|
+
*/
|
|
48
|
+
constructor(actual: number, expected: number);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Error thrown when an unknown base name is provided.
|
|
52
|
+
*
|
|
53
|
+
* This error is thrown when using the function API with an invalid base name
|
|
54
|
+
* that is neither a known encoding name nor a valid custom character set
|
|
55
|
+
* (character sets must be longer than 15 characters).
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* import { encode, UnknownBaseError } from 'bufferbase';
|
|
60
|
+
*
|
|
61
|
+
* try {
|
|
62
|
+
* encode(Buffer.from('test'), 'invalidbase');
|
|
63
|
+
* } catch (e) {
|
|
64
|
+
* if (e instanceof UnknownBaseError) {
|
|
65
|
+
* console.log(e.message); // "Unknown base encoding: 'invalidbase'"
|
|
66
|
+
* }
|
|
67
|
+
* }
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export declare class UnknownBaseError extends Error {
|
|
71
|
+
/**
|
|
72
|
+
* @param name - The unknown base name that was provided
|
|
73
|
+
*/
|
|
74
|
+
constructor(name: string);
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C;;OAEG;gBACS,IAAI,CAAC,EAAE,MAAM;CAK1B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACxC;;;OAGG;gBACS,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;CAI7C;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC;;OAEG;gBACS,IAAI,EAAE,MAAM;CAIzB"}
|