@solana/codecs-strings 2.0.0-experimental.fb88a79 → 2.0.0-experimental.fbbf6ba

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solana/codecs-strings",
3
- "version": "2.0.0-experimental.fb88a79",
3
+ "version": "2.0.0-experimental.fbbf6ba",
4
4
  "description": "Codecs for strings of different sizes and encodings",
5
5
  "exports": {
6
6
  "browser": {
@@ -49,32 +49,8 @@
49
49
  "node": ">=17.4"
50
50
  },
51
51
  "dependencies": {
52
- "@solana/codecs-core": "2.0.0-experimental.fb88a79",
53
- "@solana/codecs-numbers": "2.0.0-experimental.fb88a79"
54
- },
55
- "devDependencies": {
56
- "@solana/eslint-config-solana": "^1.0.2",
57
- "@swc/jest": "^0.2.29",
58
- "@types/jest": "^29.5.6",
59
- "@types/node": "^20.9.0",
60
- "@typescript-eslint/eslint-plugin": "^6.7.0",
61
- "@typescript-eslint/parser": "^6.3.0",
62
- "agadoo": "^3.0.0",
63
- "eslint": "^8.45.0",
64
- "eslint-plugin-jest": "^27.4.2",
65
- "eslint-plugin-sort-keys-fix": "^1.1.2",
66
- "jest": "^29.7.0",
67
- "jest-environment-jsdom": "^29.7.0",
68
- "jest-runner-eslint": "^2.1.2",
69
- "jest-runner-prettier": "^1.0.0",
70
- "prettier": "^3.1",
71
- "tsup": "^8.0.1",
72
- "typescript": "^5.2.2",
73
- "version-from-git": "^1.1.1",
74
- "build-scripts": "0.0.0",
75
- "test-config": "0.0.0",
76
- "text-encoding-impl": "0.0.0",
77
- "tsconfig": "0.0.0"
52
+ "@solana/codecs-core": "2.0.0-experimental.fbbf6ba",
53
+ "@solana/codecs-numbers": "2.0.0-experimental.fbbf6ba"
78
54
  },
79
55
  "peerDependencies": {
80
56
  "fastestsmallesttextencoderdecoder": "^1.0.22"
@@ -88,18 +64,20 @@
88
64
  ]
89
65
  },
90
66
  "scripts": {
91
- "compile:js": "tsup --config build-scripts/tsup.config.library.ts",
92
- "compile:typedefs": "tsc -p ./tsconfig.declarations.json",
93
- "dev": "jest -c node_modules/test-config/jest-dev.config.ts --rootDir . --watch",
94
- "publish-packages": "pnpm publish --tag experimental --access public --no-git-checks",
67
+ "benchmark": "./src/__benchmarks__/run.ts",
68
+ "compile:js": "tsup --config build-scripts/tsup.config.package.ts",
69
+ "compile:typedefs": "tsc -p ./tsconfig.declarations.json && node node_modules/@solana/build-scripts/add-js-extension-to-types.mjs",
70
+ "dev": "jest -c node_modules/@solana/test-config/jest-dev.config.ts --rootDir . --watch",
71
+ "publish-impl": "npm view $npm_package_name@$npm_package_version > /dev/null 2>&1 || pnpm publish --tag experimental --access public --no-git-checks",
72
+ "publish-packages": "pnpm prepublishOnly && pnpm publish-impl",
95
73
  "style:fix": "pnpm eslint --fix src/* && pnpm prettier -w src/* package.json",
96
- "test:lint": "jest -c node_modules/test-config/jest-lint.config.ts --rootDir . --silent",
97
- "test:prettier": "jest -c node_modules/test-config/jest-prettier.config.ts --rootDir . --silent",
74
+ "test:lint": "jest -c node_modules/@solana/test-config/jest-lint.config.ts --rootDir . --silent",
75
+ "test:prettier": "jest -c node_modules/@solana/test-config/jest-prettier.config.ts --rootDir . --silent",
98
76
  "test:treeshakability:browser": "agadoo dist/index.browser.js",
99
77
  "test:treeshakability:native": "agadoo dist/index.native.js",
100
78
  "test:treeshakability:node": "agadoo dist/index.node.js",
101
79
  "test:typecheck": "tsc --noEmit",
102
- "test:unit:browser": "jest -c node_modules/test-config/jest-unit.config.browser.ts --rootDir . --silent",
103
- "test:unit:node": "jest -c node_modules/test-config/jest-unit.config.node.ts --rootDir . --silent"
80
+ "test:unit:browser": "jest -c node_modules/@solana/test-config/jest-unit.config.browser.ts --rootDir . --silent",
81
+ "test:unit:node": "jest -c node_modules/@solana/test-config/jest-unit.config.node.ts --rootDir . --silent"
104
82
  }
105
83
  }
@@ -1,452 +0,0 @@
1
- this.globalThis = this.globalThis || {};
2
- this.globalThis.solanaWeb3 = (function (exports) {
3
- 'use strict';
4
-
5
- // src/assertions.ts
6
- function assertValidBaseString(alphabet4, testValue, givenValue = testValue) {
7
- if (!testValue.match(new RegExp(`^[${alphabet4}]*$`))) {
8
- throw new Error(`Expected a string of base ${alphabet4.length}, got [${givenValue}].`);
9
- }
10
- }
11
-
12
- // ../codecs-core/dist/index.browser.js
13
- function assertByteArrayIsNotEmptyForCodec(codecDescription, bytes, offset = 0) {
14
- if (bytes.length - offset <= 0) {
15
- throw new Error(`Codec [${codecDescription}] cannot decode empty byte arrays.`);
16
- }
17
- }
18
- function assertByteArrayHasEnoughBytesForCodec(codecDescription, expected, bytes, offset = 0) {
19
- const bytesLength = bytes.length - offset;
20
- if (bytesLength < expected) {
21
- throw new Error(`Codec [${codecDescription}] expected ${expected} bytes, got ${bytesLength}.`);
22
- }
23
- }
24
- var padBytes = (bytes, length) => {
25
- if (bytes.length >= length)
26
- return bytes;
27
- const paddedBytes = new Uint8Array(length).fill(0);
28
- paddedBytes.set(bytes);
29
- return paddedBytes;
30
- };
31
- var fixBytes = (bytes, length) => padBytes(bytes.length <= length ? bytes : bytes.slice(0, length), length);
32
- function getEncodedSize(value, encoder) {
33
- return "fixedSize" in encoder ? encoder.fixedSize : encoder.getSizeFromValue(value);
34
- }
35
- function createEncoder(encoder) {
36
- return Object.freeze({
37
- ...encoder,
38
- encode: (value) => {
39
- const bytes = new Uint8Array(getEncodedSize(value, encoder));
40
- encoder.write(value, bytes, 0);
41
- return bytes;
42
- }
43
- });
44
- }
45
- function createDecoder(decoder) {
46
- return Object.freeze({
47
- ...decoder,
48
- decode: (bytes, offset = 0) => decoder.read(bytes, offset)[0]
49
- });
50
- }
51
- function isFixedSize(codec) {
52
- return "fixedSize" in codec && typeof codec.fixedSize === "number";
53
- }
54
- function combineCodec(encoder, decoder) {
55
- if (isFixedSize(encoder) !== isFixedSize(decoder)) {
56
- throw new Error(`Encoder and decoder must either both be fixed-size or variable-size.`);
57
- }
58
- if (isFixedSize(encoder) && isFixedSize(decoder) && encoder.fixedSize !== decoder.fixedSize) {
59
- throw new Error(
60
- `Encoder and decoder must have the same fixed size, got [${encoder.fixedSize}] and [${decoder.fixedSize}].`
61
- );
62
- }
63
- if (!isFixedSize(encoder) && !isFixedSize(decoder) && encoder.maxSize !== decoder.maxSize) {
64
- throw new Error(
65
- `Encoder and decoder must have the same max size, got [${encoder.maxSize}] and [${decoder.maxSize}].`
66
- );
67
- }
68
- return {
69
- ...decoder,
70
- ...encoder,
71
- decode: decoder.decode,
72
- encode: encoder.encode,
73
- read: decoder.read,
74
- write: encoder.write
75
- };
76
- }
77
- function fixEncoder(encoder, fixedBytes) {
78
- return createEncoder({
79
- fixedSize: fixedBytes,
80
- write: (value, bytes, offset) => {
81
- const variableByteArray = encoder.encode(value);
82
- const fixedByteArray = variableByteArray.length > fixedBytes ? variableByteArray.slice(0, fixedBytes) : variableByteArray;
83
- bytes.set(fixedByteArray, offset);
84
- return offset + fixedBytes;
85
- }
86
- });
87
- }
88
- function fixDecoder(decoder, fixedBytes) {
89
- return createDecoder({
90
- fixedSize: fixedBytes,
91
- read: (bytes, offset) => {
92
- assertByteArrayHasEnoughBytesForCodec("fixCodec", fixedBytes, bytes, offset);
93
- if (offset > 0 || bytes.length > fixedBytes) {
94
- bytes = bytes.slice(offset, offset + fixedBytes);
95
- }
96
- if (isFixedSize(decoder)) {
97
- bytes = fixBytes(bytes, decoder.fixedSize);
98
- }
99
- const [value] = decoder.read(bytes, 0);
100
- return [value, offset + fixedBytes];
101
- }
102
- });
103
- }
104
-
105
- // src/baseX.ts
106
- var getBaseXEncoder = (alphabet4) => {
107
- return createEncoder({
108
- getSizeFromValue: (value) => {
109
- const [leadingZeroes, tailChars] = partitionLeadingZeroes(value, alphabet4[0]);
110
- if (tailChars === "")
111
- return value.length;
112
- const base10Number = getBigIntFromBaseX(tailChars, alphabet4);
113
- return leadingZeroes.length + Math.ceil(base10Number.toString(16).length / 2);
114
- },
115
- write(value, bytes, offset) {
116
- assertValidBaseString(alphabet4, value);
117
- if (value === "")
118
- return offset;
119
- const [leadingZeroes, tailChars] = partitionLeadingZeroes(value, alphabet4[0]);
120
- if (tailChars === "") {
121
- bytes.set(new Uint8Array(leadingZeroes.length).fill(0), offset);
122
- return offset + leadingZeroes.length;
123
- }
124
- let base10Number = getBigIntFromBaseX(tailChars, alphabet4);
125
- const tailBytes = [];
126
- while (base10Number > 0n) {
127
- tailBytes.unshift(Number(base10Number % 256n));
128
- base10Number /= 256n;
129
- }
130
- const bytesToAdd = [...Array(leadingZeroes.length).fill(0), ...tailBytes];
131
- bytes.set(bytesToAdd, offset);
132
- return offset + bytesToAdd.length;
133
- }
134
- });
135
- };
136
- var getBaseXDecoder = (alphabet4) => {
137
- return createDecoder({
138
- read(rawBytes, offset) {
139
- const bytes = offset === 0 ? rawBytes : rawBytes.slice(offset);
140
- if (bytes.length === 0)
141
- return ["", 0];
142
- let trailIndex = bytes.findIndex((n) => n !== 0);
143
- trailIndex = trailIndex === -1 ? bytes.length : trailIndex;
144
- const leadingZeroes = alphabet4[0].repeat(trailIndex);
145
- if (trailIndex === bytes.length)
146
- return [leadingZeroes, rawBytes.length];
147
- const base10Number = bytes.slice(trailIndex).reduce((sum, byte) => sum * 256n + BigInt(byte), 0n);
148
- const tailChars = getBaseXFromBigInt(base10Number, alphabet4);
149
- return [leadingZeroes + tailChars, rawBytes.length];
150
- }
151
- });
152
- };
153
- var getBaseXCodec = (alphabet4) => combineCodec(getBaseXEncoder(alphabet4), getBaseXDecoder(alphabet4));
154
- function partitionLeadingZeroes(value, zeroCharacter) {
155
- const leadingZeroIndex = [...value].findIndex((c) => c !== zeroCharacter);
156
- return leadingZeroIndex === -1 ? [value, ""] : [value.slice(0, leadingZeroIndex), value.slice(leadingZeroIndex)];
157
- }
158
- function getBigIntFromBaseX(value, alphabet4) {
159
- const base = BigInt(alphabet4.length);
160
- return [...value].reduce((sum, char) => sum * base + BigInt(alphabet4.indexOf(char)), 0n);
161
- }
162
- function getBaseXFromBigInt(value, alphabet4) {
163
- const base = BigInt(alphabet4.length);
164
- const tailChars = [];
165
- while (value > 0n) {
166
- tailChars.unshift(alphabet4[Number(value % base)]);
167
- value /= base;
168
- }
169
- return tailChars.join("");
170
- }
171
-
172
- // src/base10.ts
173
- var alphabet = "0123456789";
174
- var getBase10Encoder = () => getBaseXEncoder(alphabet);
175
- var getBase10Decoder = () => getBaseXDecoder(alphabet);
176
- var getBase10Codec = () => getBaseXCodec(alphabet);
177
-
178
- // src/base16.ts
179
- var getBase16Encoder = () => createEncoder({
180
- getSizeFromValue: (value) => Math.ceil(value.length / 2),
181
- write(value, bytes, offset) {
182
- const lowercaseValue = value.toLowerCase();
183
- assertValidBaseString("0123456789abcdef", lowercaseValue, value);
184
- const matches = lowercaseValue.match(/.{1,2}/g);
185
- const hexBytes = matches ? matches.map((byte) => parseInt(byte, 16)) : [];
186
- bytes.set(hexBytes, offset);
187
- return hexBytes.length + offset;
188
- }
189
- });
190
- var getBase16Decoder = () => createDecoder({
191
- read(bytes, offset) {
192
- const value = bytes.slice(offset).reduce((str, byte) => str + byte.toString(16).padStart(2, "0"), "");
193
- return [value, bytes.length];
194
- }
195
- });
196
- var getBase16Codec = () => combineCodec(getBase16Encoder(), getBase16Decoder());
197
-
198
- // src/base58.ts
199
- var alphabet2 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
200
- var getBase58Encoder = () => getBaseXEncoder(alphabet2);
201
- var getBase58Decoder = () => getBaseXDecoder(alphabet2);
202
- var getBase58Codec = () => getBaseXCodec(alphabet2);
203
-
204
- // src/baseX-reslice.ts
205
- var getBaseXResliceEncoder = (alphabet4, bits) => createEncoder({
206
- getSizeFromValue: (value) => Math.floor(value.length * bits / 8),
207
- write(value, bytes, offset) {
208
- assertValidBaseString(alphabet4, value);
209
- if (value === "")
210
- return offset;
211
- const charIndices = [...value].map((c) => alphabet4.indexOf(c));
212
- const reslicedBytes = reslice(charIndices, bits, 8, false);
213
- bytes.set(reslicedBytes, offset);
214
- return reslicedBytes.length + offset;
215
- }
216
- });
217
- var getBaseXResliceDecoder = (alphabet4, bits) => createDecoder({
218
- read(rawBytes, offset = 0) {
219
- const bytes = offset === 0 ? rawBytes : rawBytes.slice(offset);
220
- if (bytes.length === 0)
221
- return ["", rawBytes.length];
222
- const charIndices = reslice([...bytes], 8, bits, true);
223
- return [charIndices.map((i) => alphabet4[i]).join(""), rawBytes.length];
224
- }
225
- });
226
- var getBaseXResliceCodec = (alphabet4, bits) => combineCodec(getBaseXResliceEncoder(alphabet4, bits), getBaseXResliceDecoder(alphabet4, bits));
227
- function reslice(input, inputBits, outputBits, useRemainder) {
228
- const output = [];
229
- let accumulator = 0;
230
- let bitsInAccumulator = 0;
231
- const mask = (1 << outputBits) - 1;
232
- for (const value of input) {
233
- accumulator = accumulator << inputBits | value;
234
- bitsInAccumulator += inputBits;
235
- while (bitsInAccumulator >= outputBits) {
236
- bitsInAccumulator -= outputBits;
237
- output.push(accumulator >> bitsInAccumulator & mask);
238
- }
239
- }
240
- if (useRemainder && bitsInAccumulator > 0) {
241
- output.push(accumulator << outputBits - bitsInAccumulator & mask);
242
- }
243
- return output;
244
- }
245
- var getBase64Encoder = () => {
246
- {
247
- return createEncoder({
248
- getSizeFromValue: (value) => {
249
- try {
250
- return atob(value).length;
251
- } catch (e2) {
252
- throw new Error(`Expected a string of base 64, got [${value}].`);
253
- }
254
- },
255
- write(value, bytes, offset) {
256
- try {
257
- const bytesToAdd = atob(value).split("").map((c) => c.charCodeAt(0));
258
- bytes.set(bytesToAdd, offset);
259
- return bytesToAdd.length + offset;
260
- } catch (e2) {
261
- throw new Error(`Expected a string of base 64, got [${value}].`);
262
- }
263
- }
264
- });
265
- }
266
- };
267
- var getBase64Decoder = () => {
268
- {
269
- return createDecoder({
270
- read(bytes, offset = 0) {
271
- const slice = bytes.slice(offset);
272
- const value = btoa(String.fromCharCode(...slice));
273
- return [value, bytes.length];
274
- }
275
- });
276
- }
277
- };
278
- var getBase64Codec = () => combineCodec(getBase64Encoder(), getBase64Decoder());
279
-
280
- // src/null-characters.ts
281
- var removeNullCharacters = (value) => (
282
- // eslint-disable-next-line no-control-regex
283
- value.replace(/\u0000/g, "")
284
- );
285
- var padNullCharacters = (value, chars) => value.padEnd(chars, "\0");
286
-
287
- // ../codecs-numbers/dist/index.browser.js
288
- function assertNumberIsBetweenForCodec(codecDescription, min, max, value) {
289
- if (value < min || value > max) {
290
- throw new Error(
291
- `Codec [${codecDescription}] expected number to be in the range [${min}, ${max}], got ${value}.`
292
- );
293
- }
294
- }
295
- function isLittleEndian(config) {
296
- return (config == null ? void 0 : config.endian) === 1 ? false : true;
297
- }
298
- function numberEncoderFactory(input) {
299
- return createEncoder({
300
- fixedSize: input.size,
301
- write(value, bytes, offset) {
302
- if (input.range) {
303
- assertNumberIsBetweenForCodec(input.name, input.range[0], input.range[1], value);
304
- }
305
- const arrayBuffer = new ArrayBuffer(input.size);
306
- input.set(new DataView(arrayBuffer), value, isLittleEndian(input.config));
307
- bytes.set(new Uint8Array(arrayBuffer), offset);
308
- return offset + input.size;
309
- }
310
- });
311
- }
312
- function numberDecoderFactory(input) {
313
- return createDecoder({
314
- fixedSize: input.size,
315
- read(bytes, offset = 0) {
316
- assertByteArrayIsNotEmptyForCodec(input.name, bytes, offset);
317
- assertByteArrayHasEnoughBytesForCodec(input.name, input.size, bytes, offset);
318
- const view = new DataView(toArrayBuffer(bytes, offset, input.size));
319
- return [input.get(view, isLittleEndian(input.config)), offset + input.size];
320
- }
321
- });
322
- }
323
- function toArrayBuffer(bytes, offset, length) {
324
- const bytesOffset = bytes.byteOffset + (offset != null ? offset : 0);
325
- const bytesLength = length != null ? length : bytes.byteLength;
326
- return bytes.buffer.slice(bytesOffset, bytesOffset + bytesLength);
327
- }
328
- var getU32Encoder = (config = {}) => numberEncoderFactory({
329
- config,
330
- name: "u32",
331
- range: [0, Number("0xffffffff")],
332
- set: (view, value, le) => view.setUint32(0, value, le),
333
- size: 4
334
- });
335
- var getU32Decoder = (config = {}) => numberDecoderFactory({
336
- config,
337
- get: (view, le) => view.getUint32(0, le),
338
- name: "u32",
339
- size: 4
340
- });
341
-
342
- // ../text-encoding-impl/dist/index.browser.js
343
- var e = globalThis.TextDecoder;
344
- var o = globalThis.TextEncoder;
345
-
346
- // src/utf8.ts
347
- var getUtf8Encoder = () => {
348
- let textEncoder;
349
- return createEncoder({
350
- getSizeFromValue: (value) => (textEncoder || (textEncoder = new o())).encode(value).length,
351
- write: (value, bytes, offset) => {
352
- const bytesToAdd = (textEncoder || (textEncoder = new o())).encode(value);
353
- bytes.set(bytesToAdd, offset);
354
- return offset + bytesToAdd.length;
355
- }
356
- });
357
- };
358
- var getUtf8Decoder = () => {
359
- let textDecoder;
360
- return createDecoder({
361
- read(bytes, offset) {
362
- const value = (textDecoder || (textDecoder = new e())).decode(bytes.slice(offset));
363
- return [removeNullCharacters(value), bytes.length];
364
- }
365
- });
366
- };
367
- var getUtf8Codec = () => combineCodec(getUtf8Encoder(), getUtf8Decoder());
368
-
369
- // src/string.ts
370
- function getStringEncoder(config = {}) {
371
- var _a, _b;
372
- const size = (_a = config.size) != null ? _a : getU32Encoder();
373
- const encoding = (_b = config.encoding) != null ? _b : getUtf8Encoder();
374
- if (size === "variable") {
375
- return encoding;
376
- }
377
- if (typeof size === "number") {
378
- return fixEncoder(encoding, size);
379
- }
380
- return createEncoder({
381
- getSizeFromValue: (value) => {
382
- const contentSize = getEncodedSize(value, encoding);
383
- return getEncodedSize(contentSize, size) + contentSize;
384
- },
385
- write: (value, bytes, offset) => {
386
- const contentSize = getEncodedSize(value, encoding);
387
- offset = size.write(contentSize, bytes, offset);
388
- return encoding.write(value, bytes, offset);
389
- }
390
- });
391
- }
392
- function getStringDecoder(config = {}) {
393
- var _a, _b;
394
- const size = (_a = config.size) != null ? _a : getU32Decoder();
395
- const encoding = (_b = config.encoding) != null ? _b : getUtf8Decoder();
396
- if (size === "variable") {
397
- return encoding;
398
- }
399
- if (typeof size === "number") {
400
- return fixDecoder(encoding, size);
401
- }
402
- return createDecoder({
403
- read: (bytes, offset = 0) => {
404
- assertByteArrayIsNotEmptyForCodec("string", bytes, offset);
405
- const [lengthBigInt, lengthOffset] = size.read(bytes, offset);
406
- const length = Number(lengthBigInt);
407
- offset = lengthOffset;
408
- const contentBytes = bytes.slice(offset, offset + length);
409
- assertByteArrayHasEnoughBytesForCodec("string", length, contentBytes);
410
- const [value, contentOffset] = encoding.read(contentBytes, 0);
411
- offset += contentOffset;
412
- return [value, offset];
413
- }
414
- });
415
- }
416
- function getStringCodec(config = {}) {
417
- return combineCodec(getStringEncoder(config), getStringDecoder(config));
418
- }
419
-
420
- exports.assertValidBaseString = assertValidBaseString;
421
- exports.getBase10Codec = getBase10Codec;
422
- exports.getBase10Decoder = getBase10Decoder;
423
- exports.getBase10Encoder = getBase10Encoder;
424
- exports.getBase16Codec = getBase16Codec;
425
- exports.getBase16Decoder = getBase16Decoder;
426
- exports.getBase16Encoder = getBase16Encoder;
427
- exports.getBase58Codec = getBase58Codec;
428
- exports.getBase58Decoder = getBase58Decoder;
429
- exports.getBase58Encoder = getBase58Encoder;
430
- exports.getBase64Codec = getBase64Codec;
431
- exports.getBase64Decoder = getBase64Decoder;
432
- exports.getBase64Encoder = getBase64Encoder;
433
- exports.getBaseXCodec = getBaseXCodec;
434
- exports.getBaseXDecoder = getBaseXDecoder;
435
- exports.getBaseXEncoder = getBaseXEncoder;
436
- exports.getBaseXResliceCodec = getBaseXResliceCodec;
437
- exports.getBaseXResliceDecoder = getBaseXResliceDecoder;
438
- exports.getBaseXResliceEncoder = getBaseXResliceEncoder;
439
- exports.getStringCodec = getStringCodec;
440
- exports.getStringDecoder = getStringDecoder;
441
- exports.getStringEncoder = getStringEncoder;
442
- exports.getUtf8Codec = getUtf8Codec;
443
- exports.getUtf8Decoder = getUtf8Decoder;
444
- exports.getUtf8Encoder = getUtf8Encoder;
445
- exports.padNullCharacters = padNullCharacters;
446
- exports.removeNullCharacters = removeNullCharacters;
447
-
448
- return exports;
449
-
450
- })({});
451
- //# sourceMappingURL=out.js.map
452
- //# sourceMappingURL=index.development.js.map