@leofcoin/codec-format-interface 1.7.14 → 1.8.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.
@@ -1,5 +1,6 @@
1
1
  import varint from 'varint';
2
- import BasicInterface, { jsonStringifyBigInt } from './basic-interface.js';
2
+ import { createSHA512, createSHA384, createSHA256, createSHA224, createSHA1 } from 'hash-wasm';
3
+ import BasicInterface from './basic-interface.js';
3
4
  import Codec from './codec.js';
4
5
  import '@vandeurenglenn/base32';
5
6
  import '@vandeurenglenn/base58';
@@ -8,11 +9,36 @@ import '@vandeurenglenn/proto-array';
8
9
  import '@vandeurenglenn/typed-array-utils';
9
10
  import '@leofcoin/codecs';
10
11
 
12
+ const createHasher = (hashVariant) => {
13
+ switch (hashVariant) {
14
+ case 1:
15
+ return createSHA1();
16
+ case 224:
17
+ return createSHA224();
18
+ case 256:
19
+ return createSHA256();
20
+ case 384:
21
+ return createSHA384();
22
+ case 512:
23
+ return createSHA512();
24
+ default:
25
+ throw new Error(`unsupported hash variant: ${hashVariant}`);
26
+ }
27
+ };
28
+ const digestBuffer = async (hashVariant, buffer) => {
29
+ const view = buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);
30
+ const hasher = await createHasher(hashVariant);
31
+ hasher.init();
32
+ hasher.update(view);
33
+ const digest = hasher.digest('binary');
34
+ return digest instanceof Uint8Array ? digest : new Uint8Array(digest);
35
+ };
11
36
  class CodecHash extends BasicInterface {
12
37
  codec;
13
38
  discoCodec;
14
39
  size;
15
- constructor(buffer, options) {
40
+ codecs;
41
+ constructor(options = { name: 'disco-hash', codecs: {} }) {
16
42
  super();
17
43
  if (options?.name)
18
44
  this.name = options.name;
@@ -20,33 +46,24 @@ class CodecHash extends BasicInterface {
20
46
  this.name = 'disco-hash';
21
47
  if (options?.codecs)
22
48
  this.codecs = options.codecs;
23
- return this.init(buffer);
24
49
  }
25
50
  async init(uint8Array) {
26
51
  if (uint8Array) {
27
- if (uint8Array instanceof Uint8Array) {
28
- this.discoCodec = new Codec(uint8Array);
29
- const name = this.discoCodec.name;
30
- if (name) {
31
- this.name = name;
32
- this.decode(uint8Array);
33
- }
34
- else {
35
- await this.encode(uint8Array);
36
- }
52
+ if (!(uint8Array instanceof Uint8Array)) {
53
+ throw new Error('CodecHash only supports Uint8Array input');
54
+ }
55
+ // For large buffers, only check first bytes for codec prefix
56
+ // Codec prefixes are small (varint encoded), so 100 bytes is more than enough
57
+ const checkBuffer = uint8Array.length > 100 ? uint8Array.subarray(0, 100) : uint8Array;
58
+ this.discoCodec = new Codec(checkBuffer);
59
+ const name = this.discoCodec.name;
60
+ if (name) {
61
+ this.name = name;
62
+ this.decode(uint8Array);
37
63
  }
38
- if (typeof uint8Array === 'string') {
39
- if (this.isHex(uint8Array))
40
- await this.fromHex(uint8Array);
41
- if (this.isBase32(uint8Array))
42
- await this.fromBs32(uint8Array);
43
- else if (this.isBase58(uint8Array))
44
- await this.fromBs58(uint8Array);
45
- else
46
- throw new Error(`unsupported string ${uint8Array}`);
64
+ else {
65
+ await this.encode(uint8Array);
47
66
  }
48
- else if (typeof uint8Array === 'object')
49
- await this.fromJSON(uint8Array);
50
67
  }
51
68
  return this;
52
69
  }
@@ -66,34 +83,19 @@ class CodecHash extends BasicInterface {
66
83
  get hash() {
67
84
  return this.encoded;
68
85
  }
69
- fromJSON(json) {
70
- return this.encode(new TextEncoder().encode(JSON.stringify(json, jsonStringifyBigInt)));
71
- }
72
86
  async encode(buffer, name) {
73
87
  if (!this.name && name)
74
88
  this.name = name;
75
89
  if (!buffer)
76
- buffer = this.buffer;
90
+ throw new Error('buffer is required for encoding');
77
91
  this.discoCodec = new Codec(this.name);
78
- this.discoCodec.fromName(this.name);
79
92
  let hashAlg = this.discoCodec.hashAlg;
80
93
  const hashVariant = Number(hashAlg.split('-')[hashAlg.split('-').length - 1]);
81
94
  if (hashAlg.includes('dbl')) {
82
95
  hashAlg = hashAlg.replace('dbl-', '');
83
- // const hasher = await createKeccak(hashVariant)
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);
96
+ buffer = await digestBuffer(hashVariant, buffer);
96
97
  }
98
+ this.digest = await digestBuffer(hashVariant, buffer);
97
99
  this.size = this.digest.length;
98
100
  this.codec = this.discoCodec.encode();
99
101
  this.codec = this.discoCodec.codecBuffer;
@@ -104,23 +106,16 @@ class CodecHash extends BasicInterface {
104
106
  return this.encoded;
105
107
  }
106
108
  async validate(buffer) {
107
- if (Buffer.isBuffer(buffer)) {
108
- const codec = varint.decode(buffer);
109
- if (this.codecs[codec]) {
110
- this.decode(buffer);
111
- }
112
- else {
113
- await this.encode(buffer);
114
- }
109
+ if (!(buffer instanceof Uint8Array)) {
110
+ throw new Error('CodecHash only supports Uint8Array input');
111
+ }
112
+ const codec = varint.decode(buffer);
113
+ if (this.codecs[codec]) {
114
+ this.decode(buffer);
115
115
  }
116
- if (typeof buffer === 'string') {
117
- if (this.isHex(buffer))
118
- this.fromHex(buffer);
119
- if (this.isBase32(buffer))
120
- this.fromBs32(buffer);
116
+ else {
117
+ await this.encode(buffer);
121
118
  }
122
- if (typeof buffer === 'object')
123
- this.fromJSON(buffer);
124
119
  }
125
120
  decode(buffer) {
126
121
  this.encoded = buffer;
@@ -131,7 +126,7 @@ class CodecHash extends BasicInterface {
131
126
  this.size = varint.decode(buffer);
132
127
  this.digest = buffer.slice(varint.decode.bytes);
133
128
  if (this.digest.length !== this.size) {
134
- throw new Error(`hash length inconsistent: 0x${this.encoded.toString('hex')}`);
129
+ throw new Error(`hash length inconsistent: 0x${this.encoded.toString()}`);
135
130
  }
136
131
  // const discoCodec = new Codec(codec, this.codecs)
137
132
  this.name = this.discoCodec.name;
@@ -147,3 +142,4 @@ class CodecHash extends BasicInterface {
147
142
  }
148
143
 
149
144
  export { CodecHash as default };
145
+ //# 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 { createSHA1, createSHA224, createSHA256, createSHA384, createSHA512 } from 'hash-wasm'\nimport BasicInterface from './basic-interface.js'\nimport Codec from './codec.js'\n\nconst createHasher = (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 throw new Error(`unsupported hash variant: ${hashVariant}`)\n }\n}\n\nconst digestBuffer = async (\n hashVariant: number,\n buffer: ArrayBuffer | Uint8Array\n): Promise<Uint8Array> => {\n const view = buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer)\n const hasher = await createHasher(hashVariant)\n hasher.init()\n hasher.update(view)\n const digest = hasher.digest('binary')\n return digest instanceof Uint8Array ? digest : new Uint8Array(digest)\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 codecs: object\n constructor(options: CodecHashOptions = { name: 'disco-hash', codecs: {} }) {\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 }\n\n async init(uint8Array: Uint8Array) {\n if (uint8Array) {\n if (!(uint8Array instanceof Uint8Array)) {\n throw new Error('CodecHash only supports Uint8Array input')\n }\n // For large buffers, only check first bytes for codec prefix\n // Codec prefixes are small (varint encoded), so 100 bytes is more than enough\n const checkBuffer = uint8Array.length > 100 ? uint8Array.subarray(0, 100) : uint8Array\n this.discoCodec = new Codec(checkBuffer)\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 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 async encode(buffer, name?) {\n if (!this.name && name) this.name = name\n if (!buffer) throw new Error('buffer is required for encoding')\n this.discoCodec = new Codec(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 validate(buffer: Uint8Array) {\n if (!(buffer instanceof Uint8Array)) {\n throw new Error('CodecHash only supports Uint8Array input')\n }\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\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()}`)\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
@@ -109,3 +109,4 @@ class Codec extends BasicInterface {
109
109
  }
110
110
 
111
111
  export { Codec as default };
112
+ //# sourceMappingURL=codec.js.map
@@ -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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"}
@@ -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,24 @@ import '@vandeurenglenn/is-hex';
9
9
  import '@vandeurenglenn/proto-array';
10
10
  import '@vandeurenglenn/typed-array-utils';
11
11
  import 'varint';
12
+ import 'hash-wasm';
12
13
 
14
+ /**
15
+ * Basic interface for codecs
16
+ */
13
17
  const BasicInterface = BasicInterface$1;
18
+ /**
19
+ * Interface for defining codec formats
20
+ */
14
21
  const FormatInterface = FormatInterface$1;
22
+ /**
23
+ * Codec hash utility class
24
+ */
15
25
  const CodecHash = CodecHash$1;
26
+ /**
27
+ * Codec utility class
28
+ */
16
29
  const Codec = Codec$1;
17
30
 
18
31
  export { BasicInterface, Codec, CodecHash, FormatInterface };
32
+ //# 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;;;;"}
@@ -20,7 +20,7 @@ export default class JsonInterface extends BasicInterface implements JsonInterfa
20
20
  /**
21
21
  * @return {PeernetHash}
22
22
  */
23
- get peernetHash(): Hash;
23
+ get peernetHash(): Promise<Hash>;
24
24
  /**
25
25
  * @return {peernetHash}
26
26
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leofcoin/codec-format-interface",
3
- "version": "1.7.14",
3
+ "version": "1.8.0",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "exports": {
@@ -39,9 +39,10 @@
39
39
  "devDependencies": {
40
40
  "@rollup/plugin-typescript": "^12.3.0",
41
41
  "@types/varint": "^6.0.3",
42
- "rollup": "^4.53.3",
42
+ "prettier": "^3.8.1",
43
+ "rollup": "^4.56.0",
43
44
  "tape": "^5.9.0",
44
- "tinybench": "^5.1.0",
45
+ "tinybench": "^6.0.0",
45
46
  "tslib": "^2.8.1"
46
47
  }
47
48
  }