@leofcoin/codec-format-interface 1.7.13 → 1.7.15
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/LICENSE +20 -20
- package/README.md +35 -10
- package/exports/README.md +8 -0
- package/exports/basic-interface.d.ts +4 -0
- package/exports/basic-interface.js +92 -14
- package/exports/basic-interface.js.map +1 -0
- package/exports/cjs/basic-interface.js +209 -0
- package/exports/cjs/basic-interface.js.map +1 -0
- package/exports/cjs/codec-format-interface.js +175 -0
- package/exports/cjs/codec-format-interface.js.map +1 -0
- package/exports/cjs/codec-hash.js +223 -0
- package/exports/cjs/codec-hash.js.map +1 -0
- package/exports/cjs/codec.js +114 -0
- package/exports/cjs/codec.js.map +1 -0
- package/exports/cjs/index.js +42 -0
- package/exports/cjs/index.js.map +1 -0
- package/exports/codec-format-interface.d.ts +1 -1
- package/exports/codec-format-interface.js +23 -7
- package/exports/codec-format-interface.js.map +1 -0
- package/exports/codec-hash.d.ts +2 -0
- package/exports/codec-hash.js +85 -13
- package/exports/codec-hash.js.map +1 -0
- package/exports/codec.js +1 -0
- package/exports/codec.js.map +1 -0
- package/exports/index.d.ts +15 -0
- package/exports/index.js +15 -0
- package/exports/index.js.map +1 -0
- package/exports/json-interface.d.ts +1 -1
- package/package.json +49 -47
- package/exports/codec-a830f1a0.js +0 -284
- package/exports/codec-format-interface-07c55dde.js +0 -268
- package/exports/codec-format-interface-31a2dd5c.js +0 -268
|
@@ -8,6 +8,8 @@ import '@vandeurenglenn/proto-array';
|
|
|
8
8
|
import '@vandeurenglenn/typed-array-utils';
|
|
9
9
|
import 'varint';
|
|
10
10
|
import '@leofcoin/codecs';
|
|
11
|
+
import 'multiformats/cid';
|
|
12
|
+
import 'hash-wasm';
|
|
11
13
|
|
|
12
14
|
class FormatInterface extends BasicInterface {
|
|
13
15
|
hashFormat;
|
|
@@ -20,12 +22,15 @@ class FormatInterface extends BasicInterface {
|
|
|
20
22
|
this.#encoded = value;
|
|
21
23
|
}
|
|
22
24
|
init(buffer) {
|
|
23
|
-
if (buffer instanceof FormatInterface && buffer?.name === this.name)
|
|
25
|
+
if (buffer instanceof FormatInterface && buffer?.name === this.name) {
|
|
24
26
|
return buffer;
|
|
25
|
-
|
|
27
|
+
}
|
|
28
|
+
else if (buffer instanceof Uint8Array) {
|
|
26
29
|
this.fromUint8Array(buffer);
|
|
27
|
-
|
|
30
|
+
}
|
|
31
|
+
else if (buffer instanceof ArrayBuffer) {
|
|
28
32
|
this.fromArrayBuffer(buffer);
|
|
33
|
+
}
|
|
29
34
|
else if (typeof buffer === 'string') {
|
|
30
35
|
if (this.isHex(buffer))
|
|
31
36
|
this.fromHex(buffer);
|
|
@@ -36,9 +41,13 @@ class FormatInterface extends BasicInterface {
|
|
|
36
41
|
else
|
|
37
42
|
this.fromString(buffer);
|
|
38
43
|
}
|
|
39
|
-
else {
|
|
44
|
+
else if (typeof buffer === 'object' && buffer !== null) {
|
|
40
45
|
this.create(buffer);
|
|
41
46
|
}
|
|
47
|
+
else {
|
|
48
|
+
// Explicitly reject all other types (number, boolean, undefined, symbol, function, null)
|
|
49
|
+
throw new TypeError(`Invalid input type for FormatInterface: ${typeof buffer}`);
|
|
50
|
+
}
|
|
42
51
|
return this;
|
|
43
52
|
}
|
|
44
53
|
hasCodec() {
|
|
@@ -102,7 +111,13 @@ class FormatInterface extends BasicInterface {
|
|
|
102
111
|
return `${upper}${this.hashFormat.substring(1, this.hashFormat.length)}`;
|
|
103
112
|
}
|
|
104
113
|
beforeHashing(decoded) {
|
|
105
|
-
|
|
114
|
+
// Avoid copying if not needed
|
|
115
|
+
if (decoded && Object.prototype.hasOwnProperty.call(decoded, 'hash')) {
|
|
116
|
+
// Only copy if hash is present
|
|
117
|
+
const rest = { ...decoded };
|
|
118
|
+
delete rest.hash;
|
|
119
|
+
return rest;
|
|
120
|
+
}
|
|
106
121
|
return decoded;
|
|
107
122
|
}
|
|
108
123
|
/**
|
|
@@ -128,13 +143,13 @@ class FormatInterface extends BasicInterface {
|
|
|
128
143
|
this.encoded = buffer;
|
|
129
144
|
return this.hasCodec()
|
|
130
145
|
? this.decode()
|
|
131
|
-
: this.create(JSON.parse(
|
|
146
|
+
: this.create(JSON.parse(BasicInterface._textDecoder.decode(this.encoded), jsonParseBigInt));
|
|
132
147
|
}
|
|
133
148
|
fromArrayBuffer(buffer) {
|
|
134
149
|
this.encoded = new Uint8Array(buffer, buffer.byteOffset, buffer.byteLength);
|
|
135
150
|
return this.hasCodec()
|
|
136
151
|
? this.decode()
|
|
137
|
-
: this.create(JSON.parse(
|
|
152
|
+
: this.create(JSON.parse(BasicInterface._textDecoder.decode(this.encoded), jsonParseBigInt));
|
|
138
153
|
}
|
|
139
154
|
/**
|
|
140
155
|
* @param {Object} data
|
|
@@ -155,3 +170,4 @@ class FormatInterface extends BasicInterface {
|
|
|
155
170
|
}
|
|
156
171
|
|
|
157
172
|
export { FormatInterface as default };
|
|
173
|
+
//# sourceMappingURL=codec-format-interface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codec-format-interface.js","sources":["../src/codec-format-interface.ts"],"sourcesContent":["import BasicInterface, { jsonParseBigInt } from './basic-interface.js'\nimport Codec from './codec.js'\nimport Hash from './codec-hash.js'\n\nimport type { base58String } from '@vandeurenglenn/base58'\nimport type { base32String } from '@vandeurenglenn/base32'\nimport type { HexString } from '@vandeurenglenn/is-hex'\n\nexport default class FormatInterface extends BasicInterface implements FormatInterface {\n hashFormat: string\n #hash\n #encoded\n\n get encoded() {\n return this.#encoded || this.encode()\n }\n\n set encoded(value) {\n this.#encoded = value\n }\n\n init(buffer: Uint8Array | ArrayBuffer | FormatInterface | string) {\n if (buffer instanceof FormatInterface && buffer?.name === this.name) {\n return buffer\n } else if (buffer instanceof Uint8Array) {\n this.fromUint8Array(buffer)\n } else if (buffer instanceof ArrayBuffer) {\n this.fromArrayBuffer(buffer)\n } else if (typeof buffer === 'string') {\n if (this.isHex(buffer as HexString)) this.fromHex(buffer as string)\n else if (this.isBase58(buffer as base58String)) this.fromBs58(buffer)\n else if (this.isBase32(buffer as base32String)) this.fromBs32(buffer)\n else this.fromString(buffer as string)\n } else if (typeof buffer === 'object' && buffer !== null) {\n this.create(buffer as object)\n } else {\n // Explicitly reject all other types (number, boolean, undefined, symbol, function, null)\n throw new TypeError(`Invalid input type for FormatInterface: ${typeof buffer}`)\n }\n return this\n }\n\n hasCodec() {\n if (!this.encoded) return false\n const codec = new Codec(this.encoded)\n if (codec.name) return true\n }\n\n decode(encoded?: Uint8Array): object {\n encoded = encoded || this.encoded\n const codec = new Codec(encoded)\n if (codec.codecBuffer) {\n encoded = encoded.slice(codec.codecBuffer.length)\n this.name = codec.name\n this.decoded = this.protoDecode(encoded)\n // try {\n // this.decoded = JSON.parse(this.decoded)\n // } catch {\n\n // }\n } else {\n throw new Error(`no codec found`)\n }\n\n return this.decoded\n }\n\n encode(decoded?: object) {\n let encoded: Uint8Array\n decoded = decoded || this.decoded\n const codec = new Codec(this.name)\n\n if (decoded instanceof Uint8Array) encoded = decoded\n else encoded = this.protoEncode(decoded)\n\n if (codec.codecBuffer) {\n const uint8Array = new Uint8Array(encoded.length + codec.codecBuffer.length)\n uint8Array.set(codec.codecBuffer)\n uint8Array.set(encoded, codec.codecBuffer.length)\n this.encoded = uint8Array\n } else {\n throw new Error(`invalid codec`)\n }\n return this.encoded\n }\n /**\n * @param {Buffer|String|Object} buffer - data - The data needed to create the desired message\n * @param {Object} proto - {protoObject}\n * @param {Object} options - {hashFormat, name}\n */\n constructor(buffer, proto, options?: { hashFormat?: string; name?: string }) {\n super()\n this.proto = proto\n this.hashFormat = options?.hashFormat ? options.hashFormat : 'bs32'\n\n if (options?.name) this.name = options.name\n\n this.init(buffer)\n }\n\n get format() {\n const upper = this.hashFormat.charAt(0).toUpperCase()\n return `${upper}${this.hashFormat.substring(1, this.hashFormat.length)}`\n }\n\n beforeHashing(decoded: { [index: string]: any }) {\n // Avoid copying if not needed\n if (decoded && Object.prototype.hasOwnProperty.call(decoded, 'hash')) {\n // Only copy if hash is present\n const rest = { ...decoded }\n delete rest.hash\n return rest\n }\n return decoded\n }\n\n /**\n * @return {PeernetHash}\n */\n get peernetHash() {\n const decoded = this.beforeHashing({ ...this.decoded })\n // @ts-ignore\n return new Hash(decoded, { name: this.name })\n }\n\n /**\n * @return {peernetHash}\n */\n async hash() {\n if (this.#hash) return this.#hash\n const upper = this.hashFormat.charAt(0).toUpperCase()\n const format = `${upper}${this.hashFormat.substring(1, this.hashFormat.length)}`\n this.#hash = (await this.peernetHash)[`to${format}`]()\n return this.#hash\n }\n\n fromUint8Array(buffer) {\n this.encoded = buffer\n return this.hasCodec()\n ? this.decode()\n : this.create(JSON.parse(BasicInterface._textDecoder.decode(this.encoded), jsonParseBigInt))\n }\n\n fromArrayBuffer(buffer) {\n this.encoded = new Uint8Array(buffer, buffer.byteOffset, buffer.byteLength)\n return this.hasCodec()\n ? this.decode()\n : this.create(JSON.parse(BasicInterface._textDecoder.decode(this.encoded), jsonParseBigInt))\n }\n\n /**\n * @param {Object} data\n */\n create(data: object) {\n const decoded = {}\n // @ts-ignore\n if (data.hash) this.#hash = data.hash\n if (this.keys?.length > 0) {\n for (const key of this.keys) {\n decoded[key] = data[key]\n }\n this.decoded = decoded\n // return this.encode(decoded)\n }\n }\n}\n"],"names":["Hash"],"mappings":"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"}
|
package/exports/codec-hash.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CID } from 'multiformats/cid';
|
|
1
2
|
import BasicInterface from './basic-interface.js';
|
|
2
3
|
import Codec from './codec.js';
|
|
3
4
|
type CodecHashOptions = {
|
|
@@ -16,6 +17,7 @@ export default class CodecHash extends BasicInterface {
|
|
|
16
17
|
get hash(): Uint8Array;
|
|
17
18
|
fromJSON(json: any): Promise<Uint8Array>;
|
|
18
19
|
encode(buffer: any, name?: any): Promise<Uint8Array>;
|
|
20
|
+
fromCID(cid: CID | string | Uint8Array | ArrayBuffer): Promise<Uint8Array>;
|
|
19
21
|
validate(buffer: any): Promise<void>;
|
|
20
22
|
decode(buffer: any): {
|
|
21
23
|
codec: Uint8Array;
|
package/exports/codec-hash.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import varint from 'varint';
|
|
2
|
+
import { CID } from 'multiformats/cid';
|
|
3
|
+
import { createSHA512, createSHA384, createSHA256, createSHA224, createSHA1 } from 'hash-wasm';
|
|
2
4
|
import BasicInterface, { jsonStringifyBigInt } from './basic-interface.js';
|
|
3
5
|
import Codec from './codec.js';
|
|
4
6
|
import '@vandeurenglenn/base32';
|
|
@@ -8,6 +10,55 @@ import '@vandeurenglenn/proto-array';
|
|
|
8
10
|
import '@vandeurenglenn/typed-array-utils';
|
|
9
11
|
import '@leofcoin/codecs';
|
|
10
12
|
|
|
13
|
+
const MAX_WEBCRYPTO_INPUT = 0x7fffffff;
|
|
14
|
+
const STREAMING_CHUNK_SIZE = 64 * 1024 * 1024;
|
|
15
|
+
const toUint8Array = (buffer) => buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);
|
|
16
|
+
const getStreamingHasher = async (hashVariant) => {
|
|
17
|
+
switch (hashVariant) {
|
|
18
|
+
case 1:
|
|
19
|
+
return createSHA1();
|
|
20
|
+
case 224:
|
|
21
|
+
return createSHA224();
|
|
22
|
+
case 256:
|
|
23
|
+
return createSHA256();
|
|
24
|
+
case 384:
|
|
25
|
+
return createSHA384();
|
|
26
|
+
case 512:
|
|
27
|
+
return createSHA512();
|
|
28
|
+
default:
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
const digestBuffer = async (hashVariant, buffer) => {
|
|
33
|
+
const view = toUint8Array(buffer);
|
|
34
|
+
if (view.byteLength >= MAX_WEBCRYPTO_INPUT) {
|
|
35
|
+
const hasher = await getStreamingHasher(hashVariant);
|
|
36
|
+
if (!hasher) {
|
|
37
|
+
throw new Error(`unsupported streaming hash variant: ${hashVariant}`);
|
|
38
|
+
}
|
|
39
|
+
hasher.init();
|
|
40
|
+
for (let offset = 0; offset < view.byteLength; offset += STREAMING_CHUNK_SIZE) {
|
|
41
|
+
const end = Math.min(offset + STREAMING_CHUNK_SIZE, view.byteLength);
|
|
42
|
+
hasher.update(view.subarray(offset, end));
|
|
43
|
+
}
|
|
44
|
+
const digest = hasher.digest('binary');
|
|
45
|
+
return digest instanceof Uint8Array ? digest : new Uint8Array(digest);
|
|
46
|
+
}
|
|
47
|
+
const sourceView = view.byteOffset === 0 && view.byteLength === view.buffer.byteLength ? view : view.slice();
|
|
48
|
+
const digest = await crypto.subtle.digest(`SHA-${hashVariant}`, sourceView.buffer);
|
|
49
|
+
return new Uint8Array(digest);
|
|
50
|
+
};
|
|
51
|
+
const parseCid = (input) => {
|
|
52
|
+
try {
|
|
53
|
+
if (typeof input === 'string')
|
|
54
|
+
return CID.parse(input);
|
|
55
|
+
const bytes = input instanceof Uint8Array ? input : new Uint8Array(input);
|
|
56
|
+
return CID.decode(bytes);
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
};
|
|
11
62
|
class CodecHash extends BasicInterface {
|
|
12
63
|
codec;
|
|
13
64
|
discoCodec;
|
|
@@ -24,6 +75,15 @@ class CodecHash extends BasicInterface {
|
|
|
24
75
|
}
|
|
25
76
|
async init(uint8Array) {
|
|
26
77
|
if (uint8Array) {
|
|
78
|
+
const cid = typeof uint8Array === 'string'
|
|
79
|
+
? parseCid(uint8Array)
|
|
80
|
+
: uint8Array instanceof Uint8Array || uint8Array instanceof ArrayBuffer
|
|
81
|
+
? parseCid(uint8Array)
|
|
82
|
+
: null;
|
|
83
|
+
if (cid) {
|
|
84
|
+
await this.fromCID(cid);
|
|
85
|
+
return this;
|
|
86
|
+
}
|
|
27
87
|
if (uint8Array instanceof Uint8Array) {
|
|
28
88
|
this.discoCodec = new Codec(uint8Array);
|
|
29
89
|
const name = this.discoCodec.name;
|
|
@@ -80,20 +140,31 @@ class CodecHash extends BasicInterface {
|
|
|
80
140
|
const hashVariant = Number(hashAlg.split('-')[hashAlg.split('-').length - 1]);
|
|
81
141
|
if (hashAlg.includes('dbl')) {
|
|
82
142
|
hashAlg = hashAlg.replace('dbl-', '');
|
|
83
|
-
|
|
84
|
-
// await hasher.init()
|
|
85
|
-
// hasher.update(buffer)
|
|
86
|
-
// buffer = hasher.digest('binary')
|
|
87
|
-
buffer = await crypto.subtle.digest(`SHA-${hashVariant}`, buffer);
|
|
88
|
-
}
|
|
89
|
-
// const hasher = await createKeccak(hashVariant)
|
|
90
|
-
// await hasher.init()
|
|
91
|
-
// hasher.update(buffer)
|
|
92
|
-
// this.digest = hasher.digest('binary')
|
|
93
|
-
this.digest = await crypto.subtle.digest(`SHA-${hashVariant}`, buffer);
|
|
94
|
-
if (this.digest instanceof ArrayBuffer) {
|
|
95
|
-
this.digest = new Uint8Array(this.digest);
|
|
143
|
+
buffer = await digestBuffer(hashVariant, buffer);
|
|
96
144
|
}
|
|
145
|
+
this.digest = await digestBuffer(hashVariant, buffer);
|
|
146
|
+
this.size = this.digest.length;
|
|
147
|
+
this.codec = this.discoCodec.encode();
|
|
148
|
+
this.codec = this.discoCodec.codecBuffer;
|
|
149
|
+
const uint8Array = new Uint8Array(this.digest.length + this.prefix.length);
|
|
150
|
+
uint8Array.set(this.prefix);
|
|
151
|
+
uint8Array.set(this.digest, this.prefix.length);
|
|
152
|
+
this.encoded = uint8Array;
|
|
153
|
+
return this.encoded;
|
|
154
|
+
}
|
|
155
|
+
async fromCID(cid) {
|
|
156
|
+
const parsed = cid instanceof CID
|
|
157
|
+
? cid
|
|
158
|
+
: typeof cid === 'string' || cid instanceof Uint8Array
|
|
159
|
+
? parseCid(cid)
|
|
160
|
+
: parseCid(cid);
|
|
161
|
+
if (!parsed)
|
|
162
|
+
throw new Error('invalid cid input');
|
|
163
|
+
if (!this.name)
|
|
164
|
+
this.name = 'disco-hash';
|
|
165
|
+
this.discoCodec = new Codec(this.name);
|
|
166
|
+
this.discoCodec.fromName(this.name);
|
|
167
|
+
this.digest = parsed.multihash.digest;
|
|
97
168
|
this.size = this.digest.length;
|
|
98
169
|
this.codec = this.discoCodec.encode();
|
|
99
170
|
this.codec = this.discoCodec.codecBuffer;
|
|
@@ -147,3 +218,4 @@ class CodecHash extends BasicInterface {
|
|
|
147
218
|
}
|
|
148
219
|
|
|
149
220
|
export { CodecHash as default };
|
|
221
|
+
//# sourceMappingURL=codec-hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codec-hash.js","sources":["../src/codec-hash.ts"],"sourcesContent":["import varint from 'varint'\nimport { CID } from 'multiformats/cid'\nimport { createSHA1, createSHA224, createSHA256, createSHA384, createSHA512 } from 'hash-wasm'\nimport BasicInterface, { jsonStringifyBigInt } from './basic-interface.js'\nimport Codec from './codec.js'\n\nconst MAX_WEBCRYPTO_INPUT = 0x7fffffff\nconst STREAMING_CHUNK_SIZE = 64 * 1024 * 1024\n\nconst toUint8Array = (buffer: ArrayBuffer | Uint8Array): Uint8Array =>\n buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer)\n\nconst getStreamingHasher = async (hashVariant: number) => {\n switch (hashVariant) {\n case 1:\n return createSHA1()\n case 224:\n return createSHA224()\n case 256:\n return createSHA256()\n case 384:\n return createSHA384()\n case 512:\n return createSHA512()\n default:\n return null\n }\n}\n\nconst digestBuffer = async (hashVariant: number, buffer: ArrayBuffer | Uint8Array) => {\n const view = toUint8Array(buffer)\n if (view.byteLength >= MAX_WEBCRYPTO_INPUT) {\n const hasher = await getStreamingHasher(hashVariant)\n if (!hasher) {\n throw new Error(`unsupported streaming hash variant: ${hashVariant}`)\n }\n hasher.init()\n for (let offset = 0; offset < view.byteLength; offset += STREAMING_CHUNK_SIZE) {\n const end = Math.min(offset + STREAMING_CHUNK_SIZE, view.byteLength)\n hasher.update(view.subarray(offset, end))\n }\n const digest = hasher.digest('binary')\n return digest instanceof Uint8Array ? digest : new Uint8Array(digest)\n }\n const sourceView =\n view.byteOffset === 0 && view.byteLength === view.buffer.byteLength ? view : view.slice()\n const digest = await crypto.subtle.digest(`SHA-${hashVariant}`, sourceView.buffer)\n return new Uint8Array(digest)\n}\n\nconst parseCid = (input: string | Uint8Array | ArrayBuffer): CID | null => {\n try {\n if (typeof input === 'string') return CID.parse(input)\n const bytes = input instanceof Uint8Array ? input : new Uint8Array(input)\n return CID.decode(bytes)\n } catch {\n return null\n }\n}\n\ntype CodecHashOptions = {\n name: string\n codecs: object\n}\n\nexport default class CodecHash extends BasicInterface {\n codec: Uint8Array\n discoCodec: Codec\n size: number\n constructor(buffer, options: CodecHashOptions) {\n super()\n if (options?.name) this.name = options.name\n else this.name = 'disco-hash'\n if (options?.codecs) this.codecs = options.codecs\n return this.init(buffer)\n }\n\n async init(uint8Array) {\n if (uint8Array) {\n const cid =\n typeof uint8Array === 'string'\n ? parseCid(uint8Array)\n : uint8Array instanceof Uint8Array || uint8Array instanceof ArrayBuffer\n ? parseCid(uint8Array)\n : null\n if (cid) {\n await this.fromCID(cid)\n return this\n }\n if (uint8Array instanceof Uint8Array) {\n this.discoCodec = new Codec(uint8Array)\n const name = this.discoCodec.name\n\n if (name) {\n this.name = name\n this.decode(uint8Array)\n } else {\n await this.encode(uint8Array)\n }\n }\n\n if (typeof uint8Array === 'string') {\n if (this.isHex(uint8Array)) await this.fromHex(uint8Array)\n if (this.isBase32(uint8Array)) await this.fromBs32(uint8Array)\n else if (this.isBase58(uint8Array)) await this.fromBs58(uint8Array)\n else throw new Error(`unsupported string ${uint8Array}`)\n } else if (typeof uint8Array === 'object') await this.fromJSON(uint8Array)\n }\n return this\n }\n get prefix() {\n const length = this.length\n const uint8Array = new Uint8Array(length.length + this.discoCodec.codecBuffer.length)\n uint8Array.set(length)\n uint8Array.set(this.discoCodec.codecBuffer, length.length)\n\n return uint8Array\n }\n\n get length() {\n return varint.encode(this.size)\n }\n\n get buffer() {\n return this.encoded\n }\n\n get hash() {\n return this.encoded\n }\n\n fromJSON(json) {\n return this.encode(new TextEncoder().encode(JSON.stringify(json, jsonStringifyBigInt)))\n }\n\n async encode(buffer, name?) {\n if (!this.name && name) this.name = name\n if (!buffer) buffer = this.buffer\n this.discoCodec = new Codec(this.name)\n this.discoCodec.fromName(this.name)\n let hashAlg = this.discoCodec.hashAlg\n const hashVariant = Number(hashAlg.split('-')[hashAlg.split('-').length - 1])\n\n if (hashAlg.includes('dbl')) {\n hashAlg = hashAlg.replace('dbl-', '')\n buffer = await digestBuffer(hashVariant, buffer)\n }\n this.digest = await digestBuffer(hashVariant, buffer)\n\n this.size = this.digest.length\n\n this.codec = this.discoCodec.encode()\n this.codec = this.discoCodec.codecBuffer\n const uint8Array = new Uint8Array(this.digest.length + this.prefix.length)\n uint8Array.set(this.prefix)\n uint8Array.set(this.digest, this.prefix.length)\n\n this.encoded = uint8Array\n\n return this.encoded\n }\n\n async fromCID(cid: CID | string | Uint8Array | ArrayBuffer) {\n const parsed =\n cid instanceof CID\n ? cid\n : typeof cid === 'string' || cid instanceof Uint8Array\n ? parseCid(cid)\n : parseCid(cid as ArrayBuffer)\n if (!parsed) throw new Error('invalid cid input')\n\n if (!this.name) this.name = 'disco-hash'\n this.discoCodec = new Codec(this.name)\n this.discoCodec.fromName(this.name)\n\n this.digest = parsed.multihash.digest\n this.size = this.digest.length\n\n this.codec = this.discoCodec.encode()\n this.codec = this.discoCodec.codecBuffer\n\n const uint8Array = new Uint8Array(this.digest.length + this.prefix.length)\n uint8Array.set(this.prefix)\n uint8Array.set(this.digest, this.prefix.length)\n this.encoded = uint8Array\n return this.encoded\n }\n\n async validate(buffer) {\n if (Buffer.isBuffer(buffer)) {\n const codec = varint.decode(buffer)\n if (this.codecs[codec]) {\n this.decode(buffer)\n } else {\n await this.encode(buffer)\n }\n }\n if (typeof buffer === 'string') {\n if (this.isHex(buffer)) this.fromHex(buffer)\n if (this.isBase32(buffer)) this.fromBs32(buffer)\n }\n if (typeof buffer === 'object') this.fromJSON(buffer)\n }\n\n decode(buffer) {\n this.encoded = buffer\n const codec = varint.decode(buffer)\n\n this.discoCodec = new Codec(codec, this.codecs)\n // TODO: validate codec\n buffer = buffer.slice(varint.decode.bytes)\n this.size = varint.decode(buffer)\n this.digest = buffer.slice(varint.decode.bytes)\n if (this.digest.length !== this.size) {\n throw new Error(`hash length inconsistent: 0x${this.encoded.toString('hex')}`)\n }\n\n // const discoCodec = new Codec(codec, this.codecs)\n\n this.name = this.discoCodec.name\n\n this.size = this.digest.length\n\n return {\n codec: this.codec,\n name: this.name,\n size: this.size,\n length: this.length,\n digest: this.digest\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
package/exports/codec.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codec.js","sources":["../src/codec.ts"],"sourcesContent":["import varint from 'varint';\nimport { utils as codecUtils} from '@leofcoin/codecs'\nimport BasicInterface from './basic-interface.js'\n\nexport default class Codec extends BasicInterface {\n codecBuffer: Uint8Array\n codec: number\n hashAlg: string\n\n constructor(buffer: string | number | object | Uint8Array | ArrayBuffer) {\n super()\n if (buffer) {\n if (buffer instanceof Uint8Array) {\n const codec = varint.decode(buffer);\n const name = this.getCodecName(codec)\n if (name) {\n this.name = name\n this.encoded = buffer\n this.decode(buffer)\n } else {\n this.encode(Number(new TextDecoder().decode(buffer)))\n }\n } else if (buffer instanceof ArrayBuffer) {\n const codec = varint.decode(buffer);\n const name = this.getCodecName(codec)\n if (name) {\n this.name = name\n this.decode(buffer as Uint8Array)\n } else {\n this.encode(Number(new TextDecoder().decode(new Uint8Array(buffer))))\n }\n } else if (typeof buffer === 'string') {\n if (codecUtils.getCodec(buffer)) this.fromName(buffer)\n else if (this.isHex(buffer)) this.fromHex(buffer)\n else if (this.isBase32(buffer)) this.fromBs32(buffer)\n else if (this.isBase58(buffer)) this.fromBs58(buffer)\n else this.fromString(buffer)\n }\n if (!isNaN(buffer as number)) if (codecUtils.getCodec(buffer as number)) this.fromCodec(buffer as number)\n }\n }\n\n fromEncoded(encoded: Uint8Array): object {\n const codec = varint.decode(encoded);\n const name = this.getCodecName(codec)\n this.name = name\n this.encoded = encoded\n return this.decode(encoded)\n }\n\n getCodec(name: string): number {\n return codecUtils.getCodec(name)\n }\n\n getCodecName(codec: number): string {\n return codecUtils.getCodecName(codec)\n }\n\n getHashAlg(name: string): string {\n return codecUtils.getHashAlg(name)\n }\n\n fromCodec(codec: number) {\n this.name = this.getCodecName(codec)\n this.hashAlg = this.getHashAlg(this.name)\n this.codec = this.getCodec(this.name)\n this.codecBuffer = varint.encode(this.codec)\n this.decoded = {\n name: this.name,\n hashAlg: this.hashAlg,\n codec: this.codec,\n codecBuffer: this.codecBuffer\n }\n }\n\n fromName(name: string) {\n const codec = this.getCodec(name)\n this.name = name\n this.codec = codec\n this.hashAlg = this.getHashAlg(name)\n this.codecBuffer = varint.encode(this.codec)\n this.decoded = {\n name: this.name,\n hashAlg: this.hashAlg,\n codec: this.codec,\n codecBuffer: this.codecBuffer\n }\n }\n\n decode(encoded?: Uint8Array): object {\n encoded = encoded || this.encoded\n const codec = varint.decode(encoded);\n this.fromCodec(codec)\n return this.decoded\n }\n\n encode(codec?: number): Uint8Array {\n codec = codec || this.codec \n this.encoded = varint.encode(codec)\n return this.encoded\n }\n}\n"],"names":["codecUtils"],"mappings":"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"}
|
package/exports/index.d.ts
CHANGED
|
@@ -2,8 +2,23 @@ import basicInterface from './basic-interface.js';
|
|
|
2
2
|
import formatInterface from './codec-format-interface.js';
|
|
3
3
|
import codecHash from './codec-hash.js';
|
|
4
4
|
import codec from './codec.js';
|
|
5
|
+
/**
|
|
6
|
+
* Codecs utility from @leofcoin/codecs
|
|
7
|
+
*/
|
|
5
8
|
export { codecs } from '@leofcoin/codecs';
|
|
9
|
+
/**
|
|
10
|
+
* Basic interface for codecs
|
|
11
|
+
*/
|
|
6
12
|
export declare const BasicInterface: typeof basicInterface;
|
|
13
|
+
/**
|
|
14
|
+
* Interface for defining codec formats
|
|
15
|
+
*/
|
|
7
16
|
export declare const FormatInterface: typeof formatInterface;
|
|
17
|
+
/**
|
|
18
|
+
* Codec hash utility class
|
|
19
|
+
*/
|
|
8
20
|
export declare const CodecHash: typeof codecHash;
|
|
21
|
+
/**
|
|
22
|
+
* Codec utility class
|
|
23
|
+
*/
|
|
9
24
|
export declare const Codec: typeof codec;
|
package/exports/index.js
CHANGED
|
@@ -9,10 +9,25 @@ import '@vandeurenglenn/is-hex';
|
|
|
9
9
|
import '@vandeurenglenn/proto-array';
|
|
10
10
|
import '@vandeurenglenn/typed-array-utils';
|
|
11
11
|
import 'varint';
|
|
12
|
+
import 'multiformats/cid';
|
|
13
|
+
import 'hash-wasm';
|
|
12
14
|
|
|
15
|
+
/**
|
|
16
|
+
* Basic interface for codecs
|
|
17
|
+
*/
|
|
13
18
|
const BasicInterface = BasicInterface$1;
|
|
19
|
+
/**
|
|
20
|
+
* Interface for defining codec formats
|
|
21
|
+
*/
|
|
14
22
|
const FormatInterface = FormatInterface$1;
|
|
23
|
+
/**
|
|
24
|
+
* Codec hash utility class
|
|
25
|
+
*/
|
|
15
26
|
const CodecHash = CodecHash$1;
|
|
27
|
+
/**
|
|
28
|
+
* Codec utility class
|
|
29
|
+
*/
|
|
16
30
|
const Codec = Codec$1;
|
|
17
31
|
|
|
18
32
|
export { BasicInterface, Codec, CodecHash, FormatInterface };
|
|
33
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import basicInterface from './basic-interface.js'\nimport formatInterface from './codec-format-interface.js'\nimport codecHash from './codec-hash.js'\nimport codec from './codec.js'\n\n/**\n * Codecs utility from @leofcoin/codecs\n */\nexport { codecs } from '@leofcoin/codecs'\n\n/**\n * Basic interface for codecs\n */\nexport const BasicInterface = basicInterface\n\n/**\n * Interface for defining codec formats\n */\nexport const FormatInterface = formatInterface\n\n/**\n * Codec hash utility class\n */\nexport const CodecHash = codecHash\n\n/**\n * Codec utility class\n */\nexport const Codec = codec\n"],"names":["basicInterface","formatInterface","codecHash","codec"],"mappings":";;;;;;;;;;;;;;AAUA;;AAEG;AACI,MAAM,cAAc,GAAGA;AAE9B;;AAEG;AACI,MAAM,eAAe,GAAGC;AAE/B;;AAEG;AACI,MAAM,SAAS,GAAGC;AAEzB;;AAEG;AACI,MAAM,KAAK,GAAGC;;;;"}
|
|
@@ -4,7 +4,7 @@ export default class JsonInterface extends BasicInterface implements JsonInterfa
|
|
|
4
4
|
#private;
|
|
5
5
|
hashFormat: string;
|
|
6
6
|
init(buffer: Uint8Array | ArrayBuffer | JsonInterface | string): JsonInterface;
|
|
7
|
-
hasCodec(): boolean;
|
|
7
|
+
hasCodec(): boolean | undefined;
|
|
8
8
|
decode(encoded?: string): object;
|
|
9
9
|
encode(decoded?: object): Uint8Array;
|
|
10
10
|
/**
|
package/package.json
CHANGED
|
@@ -1,47 +1,49 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@leofcoin/codec-format-interface",
|
|
3
|
-
"version": "1.7.
|
|
4
|
-
"description": "",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"exports": {
|
|
7
|
-
".": "./exports/index.js"
|
|
8
|
-
},
|
|
9
|
-
"files": [
|
|
10
|
-
"exports"
|
|
11
|
-
],
|
|
12
|
-
"typings": "exports/index.d.ts",
|
|
13
|
-
"scripts": {
|
|
14
|
-
"build": "rollup -c",
|
|
15
|
-
"test": "node test"
|
|
16
|
-
},
|
|
17
|
-
"repository": {
|
|
18
|
-
"type": "git",
|
|
19
|
-
"url": "git+https://github.com/leofcoin/codec-format-interface.git"
|
|
20
|
-
},
|
|
21
|
-
"keywords": [],
|
|
22
|
-
"author": "",
|
|
23
|
-
"license": "MIT",
|
|
24
|
-
"bugs": {
|
|
25
|
-
"url": "https://github.com/leofcoin/codec-format-interface/issues"
|
|
26
|
-
},
|
|
27
|
-
"homepage": "https://github.com/leofcoin/codec-format-interface#readme",
|
|
28
|
-
"dependencies": {
|
|
29
|
-
"@leofcoin/codecs": "^1.0.7",
|
|
30
|
-
"@leofcoin/crypto": "^0.2.
|
|
31
|
-
"@vandeurenglenn/base32": "^1.2.4",
|
|
32
|
-
"@vandeurenglenn/base58": "^1.1.9",
|
|
33
|
-
"@vandeurenglenn/is-hex": "^1.1.1",
|
|
34
|
-
"@vandeurenglenn/proto-array": "^1.0.
|
|
35
|
-
"@vandeurenglenn/typed-array-utils": "^1.2.0",
|
|
36
|
-
"hash-wasm": "^4.
|
|
37
|
-
"
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
"@
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
|
|
47
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "@leofcoin/codec-format-interface",
|
|
3
|
+
"version": "1.7.15",
|
|
4
|
+
"description": "",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": "./exports/index.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"exports"
|
|
11
|
+
],
|
|
12
|
+
"typings": "exports/index.d.ts",
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "rollup -c",
|
|
15
|
+
"test": "node test"
|
|
16
|
+
},
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "git+https://github.com/leofcoin/codec-format-interface.git"
|
|
20
|
+
},
|
|
21
|
+
"keywords": [],
|
|
22
|
+
"author": "",
|
|
23
|
+
"license": "MIT",
|
|
24
|
+
"bugs": {
|
|
25
|
+
"url": "https://github.com/leofcoin/codec-format-interface/issues"
|
|
26
|
+
},
|
|
27
|
+
"homepage": "https://github.com/leofcoin/codec-format-interface#readme",
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"@leofcoin/codecs": "^1.0.7",
|
|
30
|
+
"@leofcoin/crypto": "^0.2.37",
|
|
31
|
+
"@vandeurenglenn/base32": "^1.2.4",
|
|
32
|
+
"@vandeurenglenn/base58": "^1.1.9",
|
|
33
|
+
"@vandeurenglenn/is-hex": "^1.1.1",
|
|
34
|
+
"@vandeurenglenn/proto-array": "^1.0.17",
|
|
35
|
+
"@vandeurenglenn/typed-array-utils": "^1.2.0",
|
|
36
|
+
"hash-wasm": "^4.12.0",
|
|
37
|
+
"multiformats": "^13.3.2",
|
|
38
|
+
"varint": "^6.0.0"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@rollup/plugin-typescript": "^12.3.0",
|
|
42
|
+
"@types/varint": "^6.0.3",
|
|
43
|
+
"prettier": "^3.8.1",
|
|
44
|
+
"rollup": "^4.56.0",
|
|
45
|
+
"tape": "^5.9.0",
|
|
46
|
+
"tinybench": "^6.0.0",
|
|
47
|
+
"tslib": "^2.8.1"
|
|
48
|
+
}
|
|
49
|
+
}
|