bufferbase 2.0.0 → 3.0.1

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 (115) hide show
  1. package/README.md +162 -63
  2. package/dist/cjs/bases.d.ts +152 -45
  3. package/dist/cjs/bases.d.ts.map +1 -1
  4. package/dist/cjs/bases.js +90 -77
  5. package/dist/cjs/bases.js.map +1 -1
  6. package/dist/cjs/bufferbase.d.ts +21 -27
  7. package/dist/cjs/bufferbase.d.ts.map +1 -1
  8. package/dist/cjs/bufferbase.js +21 -31
  9. package/dist/cjs/bufferbase.js.map +1 -1
  10. package/dist/cjs/codec-base.d.ts +56 -0
  11. package/dist/cjs/codec-base.d.ts.map +1 -0
  12. package/dist/cjs/codec-base.js +132 -0
  13. package/dist/cjs/codec-base.js.map +1 -0
  14. package/dist/cjs/codec-block.d.ts +47 -0
  15. package/dist/cjs/codec-block.d.ts.map +1 -0
  16. package/dist/cjs/codec-block.js +213 -0
  17. package/dist/cjs/codec-block.js.map +1 -0
  18. package/dist/cjs/codec-block85.d.ts +56 -0
  19. package/dist/cjs/codec-block85.d.ts.map +1 -0
  20. package/dist/cjs/codec-block85.js +271 -0
  21. package/dist/cjs/codec-block85.js.map +1 -0
  22. package/dist/cjs/codec-radix.d.ts +46 -0
  23. package/dist/cjs/codec-radix.d.ts.map +1 -0
  24. package/dist/cjs/codec-radix.js +181 -0
  25. package/dist/cjs/codec-radix.js.map +1 -0
  26. package/dist/cjs/codec.d.ts +25 -111
  27. package/dist/cjs/codec.d.ts.map +1 -1
  28. package/dist/cjs/codec.js +50 -228
  29. package/dist/cjs/codec.js.map +1 -1
  30. package/dist/cjs/codecs.d.ts +8 -59
  31. package/dist/cjs/codecs.d.ts.map +1 -1
  32. package/dist/cjs/codecs.js +6 -79
  33. package/dist/cjs/codecs.js.map +1 -1
  34. package/dist/cjs/errors.d.ts +65 -48
  35. package/dist/cjs/errors.d.ts.map +1 -1
  36. package/dist/cjs/errors.js +89 -51
  37. package/dist/cjs/errors.js.map +1 -1
  38. package/dist/cjs/example.js +44 -21
  39. package/dist/cjs/example.js.map +1 -1
  40. package/dist/cjs/functions.d.ts +27 -31
  41. package/dist/cjs/functions.d.ts.map +1 -1
  42. package/dist/cjs/functions.js +25 -47
  43. package/dist/cjs/functions.js.map +1 -1
  44. package/dist/cjs/index.d.ts +7 -5
  45. package/dist/cjs/index.d.ts.map +1 -1
  46. package/dist/cjs/index.js +17 -7
  47. package/dist/cjs/index.js.map +1 -1
  48. package/dist/cjs/package.json +12 -7
  49. package/dist/cjs/types.d.ts +108 -71
  50. package/dist/cjs/types.d.ts.map +1 -1
  51. package/dist/esm/bases.d.ts +152 -45
  52. package/dist/esm/bases.d.ts.map +1 -1
  53. package/dist/esm/bases.js +88 -75
  54. package/dist/esm/bases.js.map +1 -1
  55. package/dist/esm/bufferbase.d.ts +21 -27
  56. package/dist/esm/bufferbase.d.ts.map +1 -1
  57. package/dist/esm/bufferbase.js +18 -30
  58. package/dist/esm/bufferbase.js.map +1 -1
  59. package/dist/esm/codec-base.d.ts +56 -0
  60. package/dist/esm/codec-base.d.ts.map +1 -0
  61. package/dist/esm/codec-base.js +127 -0
  62. package/dist/esm/codec-base.js.map +1 -0
  63. package/dist/esm/codec-block.d.ts +47 -0
  64. package/dist/esm/codec-block.d.ts.map +1 -0
  65. package/dist/esm/codec-block.js +209 -0
  66. package/dist/esm/codec-block.js.map +1 -0
  67. package/dist/esm/codec-block85.d.ts +56 -0
  68. package/dist/esm/codec-block85.d.ts.map +1 -0
  69. package/dist/esm/codec-block85.js +267 -0
  70. package/dist/esm/codec-block85.js.map +1 -0
  71. package/dist/esm/codec-radix.d.ts +46 -0
  72. package/dist/esm/codec-radix.d.ts.map +1 -0
  73. package/dist/esm/codec-radix.js +177 -0
  74. package/dist/esm/codec-radix.js.map +1 -0
  75. package/dist/esm/codec.d.ts +25 -111
  76. package/dist/esm/codec.d.ts.map +1 -1
  77. package/dist/esm/codec.js +44 -226
  78. package/dist/esm/codec.js.map +1 -1
  79. package/dist/esm/codecs.d.ts +8 -59
  80. package/dist/esm/codecs.d.ts.map +1 -1
  81. package/dist/esm/codecs.js +7 -80
  82. package/dist/esm/codecs.js.map +1 -1
  83. package/dist/esm/errors.d.ts +65 -48
  84. package/dist/esm/errors.d.ts.map +1 -1
  85. package/dist/esm/errors.js +83 -50
  86. package/dist/esm/errors.js.map +1 -1
  87. package/dist/esm/example.js +45 -22
  88. package/dist/esm/example.js.map +1 -1
  89. package/dist/esm/functions.d.ts +27 -31
  90. package/dist/esm/functions.d.ts.map +1 -1
  91. package/dist/esm/functions.js +26 -48
  92. package/dist/esm/functions.js.map +1 -1
  93. package/dist/esm/index.d.ts +7 -5
  94. package/dist/esm/index.d.ts.map +1 -1
  95. package/dist/esm/index.js +6 -6
  96. package/dist/esm/index.js.map +1 -1
  97. package/dist/esm/package.json +12 -7
  98. package/dist/esm/types.d.ts +108 -71
  99. package/dist/esm/types.d.ts.map +1 -1
  100. package/package.json +12 -7
  101. package/src/algorithms.test.ts +442 -0
  102. package/src/bases.ts +98 -76
  103. package/src/bufferbase.ts +26 -36
  104. package/src/codec-base.ts +181 -0
  105. package/src/codec-block.ts +258 -0
  106. package/src/codec-block85.ts +315 -0
  107. package/src/codec-radix.ts +206 -0
  108. package/src/codec.test.ts +17 -9
  109. package/src/codec.ts +48 -247
  110. package/src/codecs.ts +11 -105
  111. package/src/errors.ts +90 -50
  112. package/src/example.ts +47 -22
  113. package/src/functions.ts +34 -54
  114. package/src/index.ts +27 -7
  115. package/src/types.ts +113 -86
package/dist/cjs/codec.js CHANGED
@@ -1,247 +1,69 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Codec = void 0;
3
+ exports.Codec = exports.Block85Codec = exports.BlockCodec = exports.RadixCodec = void 0;
4
4
  exports.createCodec = createCodec;
5
- const node_buffer_1 = require("node:buffer");
6
- const errors_js_1 = require("./errors.js");
5
+ exports.getCodec = getCodec;
6
+ const codec_radix_js_1 = require("./codec-radix.js");
7
+ const codec_block_js_1 = require("./codec-block.js");
8
+ const codec_block85_js_1 = require("./codec-block85.js");
7
9
  /**
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.
10
+ * Builds the codec described by a spec.
19
11
  *
20
- * Use pre-defined codecs from `Codecs` for common encodings,
21
- * or create custom codecs with `createCodec()`.
12
+ * A bare string is read as a custom alphabet for a radix conversion, which is
13
+ * the only algorithm that works with an alphabet of any length.
22
14
  *
23
15
  * @example
24
16
  * ```typescript
25
- * import { Codec, Codecs, createCodec } from 'bufferbase';
26
- *
27
- * // Use pre-defined codec
28
- * const encoded = Codecs.base58.encode(Buffer.from('Hello'));
17
+ * import { createCodec } from 'bufferbase';
29
18
  *
30
- * // Create custom codec
31
19
  * const binary = createCodec('01');
32
- * const bits = binary.encode(Buffer.from([5])); // '101'
20
+ * binary.encode(Uint8Array.of(5)); // '101'
21
+ *
22
+ * const paddedHex = createCodec({ alphabet: '0123456789abcdef', algorithm: 'block' });
23
+ * paddedHex.encode(Uint8Array.of(0, 1)); // '0001'
33
24
  * ```
34
25
  */
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);
26
+ function createCodec(spec) {
27
+ const resolved = typeof spec === 'string' ? { alphabet: spec, algorithm: 'radix' } : spec;
28
+ switch (resolved.algorithm) {
29
+ case 'radix':
30
+ return new codec_radix_js_1.RadixCodec(resolved);
31
+ case 'block':
32
+ return new codec_block_js_1.BlockCodec(resolved);
33
+ case 'block85':
34
+ return new codec_block85_js_1.Block85Codec(resolved);
219
35
  }
220
36
  }
221
- exports.Codec = Codec;
37
+ const cache = new WeakMap();
222
38
  /**
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
39
+ * Returns the codec for a spec, building it once per spec object.
230
40
  *
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
- * ```
41
+ * Named bases always resolve to the same spec object, so they are built once
42
+ * for the lifetime of the process.
243
43
  */
244
- function createCodec(chars) {
245
- return new Codec(chars);
44
+ function getCodec(spec) {
45
+ const cached = cache.get(spec);
46
+ if (cached !== undefined) {
47
+ return cached;
48
+ }
49
+ const codec = createCodec(spec);
50
+ cache.set(spec, codec);
51
+ return codec;
246
52
  }
53
+ var codec_radix_js_2 = require("./codec-radix.js");
54
+ Object.defineProperty(exports, "RadixCodec", { enumerable: true, get: function () { return codec_radix_js_2.RadixCodec; } });
55
+ var codec_block_js_2 = require("./codec-block.js");
56
+ Object.defineProperty(exports, "BlockCodec", { enumerable: true, get: function () { return codec_block_js_2.BlockCodec; } });
57
+ var codec_block85_js_2 = require("./codec-block85.js");
58
+ Object.defineProperty(exports, "Block85Codec", { enumerable: true, get: function () { return codec_block85_js_2.Block85Codec; } });
59
+ /**
60
+ * @deprecated Use `createCodec({ alphabet, algorithm: 'radix' })`, or
61
+ * `createCodec(alphabet)` for the same thing.
62
+ */
63
+ class Codec extends codec_radix_js_1.RadixCodec {
64
+ constructor(chars) {
65
+ super({ alphabet: chars, algorithm: 'radix' });
66
+ }
67
+ }
68
+ exports.Codec = Codec;
247
69
  //# sourceMappingURL=codec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/codec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/codec.ts"],"names":[],"mappings":";;;AAsBA,kCAYC;AAUD,4BAQC;AAnDD,qDAA8C;AAC9C,qDAA8C;AAC9C,yDAAkD;AAElD;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,WAAW,CAAC,IAAwB;IAClD,MAAM,QAAQ,GACZ,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAE3E,QAAQ,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC3B,KAAK,OAAO;YACV,OAAO,IAAI,2BAAU,CAAC,QAAQ,CAAC,CAAC;QAClC,KAAK,OAAO;YACV,OAAO,IAAI,2BAAU,CAAC,QAAQ,CAAC,CAAC;QAClC,KAAK,SAAS;YACZ,OAAO,IAAI,+BAAY,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,MAAM,KAAK,GAAG,IAAI,OAAO,EAAqB,CAAC;AAE/C;;;;;GAKG;AACH,SAAgB,QAAQ,CAAC,IAAe;IACtC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,mDAA8C;AAArC,4GAAA,UAAU,OAAA;AACnB,mDAA8C;AAArC,4GAAA,UAAU,OAAA;AACnB,uDAAkD;AAAzC,gHAAA,YAAY,OAAA;AAErB;;;GAGG;AACH,MAAa,KAAM,SAAQ,2BAAU;IACnC,YAAY,KAAa;QACvB,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;CACF;AAJD,sBAIC"}
@@ -1,71 +1,20 @@
1
- import { Codec } from './codec.js';
1
+ import type { ICodec } from './types.js';
2
+ import { type BaseName } from './bases.js';
2
3
  /**
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.
4
+ * A ready-made codec for every name in `Bases`.
7
5
  *
8
6
  * @example
9
7
  * ```typescript
10
8
  * import { Codecs } from 'bufferbase';
11
9
  *
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
10
+ * Codecs.base58.encode(Buffer.from('Hello')); // '9Ajdvzr'
11
+ * Codecs.base64.encode(Buffer.from('fo')); // 'Zm8='
12
+ * Codecs.base58.convertTo(Codecs.base64url, '9Ajdvzr');
23
13
  * ```
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
14
  */
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
- };
15
+ export declare const Codecs: Record<BaseName, ICodec>;
58
16
  /**
59
17
  * 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
18
  */
70
- export type CodecName = keyof typeof Codecs;
19
+ export type CodecName = BaseName;
71
20
  //# sourceMappingURL=codecs.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"codecs.d.ts","sourceRoot":"","sources":["../../src/codecs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAS,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGlD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,MAAM,EAEd,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAE9B;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC"}
@@ -1,92 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Codecs = void 0;
4
- const codec_js_1 = require("./codec.js");
5
4
  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);
5
+ const codec_js_1 = require("./codec.js");
36
6
  /**
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.
7
+ * A ready-made codec for every name in `Bases`.
41
8
  *
42
9
  * @example
43
10
  * ```typescript
44
11
  * import { Codecs } from 'bufferbase';
45
12
  *
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
13
+ * Codecs.base58.encode(Buffer.from('Hello')); // '9Ajdvzr'
14
+ * Codecs.base64.encode(Buffer.from('fo')); // 'Zm8='
15
+ * Codecs.base58.convertTo(Codecs.base64url, '9Ajdvzr');
57
16
  * ```
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
17
  */
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
- };
18
+ exports.Codecs = Object.fromEntries(Object.entries(bases_js_1.Bases).map(([name, spec]) => [name, (0, codec_js_1.getCodec)(spec)]));
92
19
  //# sourceMappingURL=codecs.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"codecs.js","sourceRoot":"","sources":["../../src/codecs.ts"],"names":[],"mappings":";;;AACA,yCAAkD;AAClD,yCAAsC;AAEtC;;;;;;;;;;;GAWG;AACU,QAAA,MAAM,GAAG,MAAM,CAAC,WAAW,CACtC,MAAM,CAAC,OAAO,CAAC,gBAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAA,mBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CACxC,CAAC"}
@@ -1,18 +1,5 @@
1
1
  /**
2
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
3
  */
17
4
  export declare class InvalidCharacterError extends Error {
18
5
  /**
@@ -21,24 +8,8 @@ export declare class InvalidCharacterError extends Error {
21
8
  constructor(char?: string);
22
9
  }
23
10
  /**
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
- * ```
11
+ * Error thrown when the decoded buffer does not have the size requested
12
+ * through `DecodeOptions.size`.
42
13
  */
43
14
  export declare class BufferSizeError extends Error {
44
15
  /**
@@ -49,23 +20,6 @@ export declare class BufferSizeError extends Error {
49
20
  }
50
21
  /**
51
22
  * 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
23
  */
70
24
  export declare class UnknownBaseError extends Error {
71
25
  /**
@@ -73,4 +27,67 @@ export declare class UnknownBaseError extends Error {
73
27
  */
74
28
  constructor(name: string);
75
29
  }
30
+ /**
31
+ * Error thrown when a string cannot be the encoding of any byte sequence
32
+ * because of its length.
33
+ *
34
+ * A Base64 string of 5 characters, for example, describes 30 bits: too many
35
+ * for 3 bytes and too few for 4.
36
+ */
37
+ export declare class InvalidLengthError extends Error {
38
+ /**
39
+ * @param length - The length that cannot occur
40
+ * @param detail - What the length should have been
41
+ */
42
+ constructor(length: number, detail: string);
43
+ }
44
+ /**
45
+ * Error thrown when input is well-formed but is not the canonical encoding of
46
+ * the bytes it decodes to (RFC 4648 §3.5).
47
+ *
48
+ * Accepting such input makes decoding non-injective: `'Zm8='` and `'Zm9='`
49
+ * would both decode to `'fo'`. Pass `strict: false` in the codec spec to allow
50
+ * it.
51
+ */
52
+ export declare class NonCanonicalError extends Error {
53
+ /**
54
+ * @param detail - What made the input non-canonical
55
+ */
56
+ constructor(detail: string);
57
+ }
58
+ /**
59
+ * Error thrown when a codec spec cannot be realised, such as a `'block'`
60
+ * algorithm with an alphabet whose length is not a power of two.
61
+ */
62
+ export declare class InvalidCodecError extends Error {
63
+ /**
64
+ * @param detail - Why the spec is unusable
65
+ */
66
+ constructor(detail: string);
67
+ }
68
+ /**
69
+ * Error thrown when a group of characters denotes a number too large for the
70
+ * bytes it is supposed to encode.
71
+ *
72
+ * In an Ascii85 group, five characters must denote a value below 2^32; `'s8W-!'`
73
+ * does not, so it encodes nothing. Unlike `NonCanonicalError` this is never
74
+ * allowed, because there is no byte sequence to decode to.
75
+ */
76
+ export declare class ValueRangeError extends Error {
77
+ /**
78
+ * @param group - The group of characters that is out of range
79
+ */
80
+ constructor(group: string);
81
+ }
82
+ /**
83
+ * Error thrown when a trailing check symbol does not match the value it
84
+ * follows, which means the string was mistyped or corrupted.
85
+ */
86
+ export declare class CheckSymbolError extends Error {
87
+ /**
88
+ * @param found - The check symbol present in the input
89
+ * @param expected - The check symbol the value calls for
90
+ */
91
+ constructor(found: string, expected: string);
92
+ }
76
93
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +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"}
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;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACxC;;;OAGG;gBACS,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;CAI7C;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC;;OAEG;gBACS,IAAI,EAAE,MAAM;CAOzB;AAED;;;;;;GAMG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C;;;OAGG;gBACS,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAI3C;AAED;;;;;;;GAOG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C;;OAEG;gBACS,MAAM,EAAE,MAAM;CAI3B;AAED;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C;;OAEG;gBACS,MAAM,EAAE,MAAM;CAI3B;AAED;;;;;;;GAOG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACxC;;OAEG;gBACS,KAAK,EAAE,MAAM;CAI1B;AAED;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC;;;OAGG;gBACS,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;CAI5C"}