@qevm/hash 5.7.3 → 5.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -5
- package/lib/_version.d.ts +1 -1
- package/lib/_version.js +1 -1
- package/lib/ens-normalize/decoder.js +78 -78
- package/lib/ens-normalize/decoder.js.map +1 -1
- package/lib/ens-normalize/include.js +2 -2
- package/lib/ens-normalize/include.js.map +1 -1
- package/lib/ens-normalize/lib.js +38 -45
- package/lib/ens-normalize/lib.js.map +1 -1
- package/lib/id.js +2 -2
- package/lib/id.js.map +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +5 -5
- package/lib/index.js.map +1 -1
- package/lib/message.d.ts +1 -1
- package/lib/message.d.ts.map +1 -1
- package/lib/message.js +6 -6
- package/lib/message.js.map +1 -1
- package/lib/namehash.d.ts.map +1 -1
- package/lib/namehash.js +23 -21
- package/lib/namehash.js.map +1 -1
- package/lib/typed-data.d.ts.map +1 -1
- package/lib/typed-data.js +215 -269
- package/lib/typed-data.js.map +1 -1
- package/package.json +34 -30
- package/src.ts/_version.ts +1 -1
- package/src.ts/index.ts +1 -5
- package/src.ts/message.ts +11 -8
- package/src.ts/namehash.ts +41 -22
- package/src.ts/typed-data.ts +269 -110
package/README.md
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
QuantumEVM Hash Utilities
|
|
2
2
|
=======================
|
|
3
3
|
|
|
4
|
-
This sub-module is part of the [ethers project](https://github.com/ethers-io/ethers.js).
|
|
4
|
+
This sub-module is part of the qethers, a fork of [ethers project](https://github.com/ethers-io/ethers.js).
|
|
5
5
|
|
|
6
6
|
It contains several common hashing utilities (but not the actual hash functions).
|
|
7
7
|
|
|
8
|
-
For more information, see the [documentation](https://docs.ethers.io/v5/api/utils/hashing/).
|
|
9
8
|
|
|
10
9
|
Importing
|
|
11
10
|
---------
|
|
12
11
|
|
|
13
|
-
Most users will prefer to use the [umbrella package](https://www.npmjs.com/package/
|
|
12
|
+
Most users will prefer to use the [umbrella package](https://www.npmjs.com/package/@qevm/qethers),
|
|
14
13
|
but for those with more specific needs, individual components can be imported.
|
|
15
14
|
|
|
16
15
|
```javascript
|
|
@@ -24,7 +23,7 @@ const {
|
|
|
24
23
|
messagePrefix,
|
|
25
24
|
hashMessage
|
|
26
25
|
|
|
27
|
-
} = require("@
|
|
26
|
+
} = require("@qevm/hash");
|
|
28
27
|
```
|
|
29
28
|
|
|
30
29
|
|
package/lib/_version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "hash/5.7.
|
|
1
|
+
export declare const version = "hash/5.7.4";
|
|
2
2
|
//# sourceMappingURL=_version.d.ts.map
|
package/lib/_version.js
CHANGED
|
@@ -41,9 +41,9 @@ function flat(array, depth) {
|
|
|
41
41
|
if (depth == null) {
|
|
42
42
|
depth = 1;
|
|
43
43
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
const result = [];
|
|
45
|
+
const forEach = result.forEach;
|
|
46
|
+
const flatDeep = function (arr, depth) {
|
|
47
47
|
forEach.call(arr, function (val) {
|
|
48
48
|
if (depth > 0 && Array.isArray(val)) {
|
|
49
49
|
flatDeep(val, depth - 1);
|
|
@@ -57,29 +57,29 @@ function flat(array, depth) {
|
|
|
57
57
|
return result;
|
|
58
58
|
}
|
|
59
59
|
function fromEntries(array) {
|
|
60
|
-
|
|
61
|
-
for (
|
|
62
|
-
|
|
60
|
+
const result = {};
|
|
61
|
+
for (let i = 0; i < array.length; i++) {
|
|
62
|
+
const value = array[i];
|
|
63
63
|
result[value[0]] = value[1];
|
|
64
64
|
}
|
|
65
65
|
return result;
|
|
66
66
|
}
|
|
67
67
|
function decode_arithmetic(bytes) {
|
|
68
|
-
|
|
68
|
+
let pos = 0;
|
|
69
69
|
function u16() { return (bytes[pos++] << 8) | bytes[pos++]; }
|
|
70
70
|
// decode the frequency table
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
for (
|
|
71
|
+
let symbol_count = u16();
|
|
72
|
+
let total = 1;
|
|
73
|
+
let acc = [0, 1]; // first symbol has frequency 1
|
|
74
|
+
for (let i = 1; i < symbol_count; i++) {
|
|
75
75
|
acc.push(total += u16());
|
|
76
76
|
}
|
|
77
77
|
// skip the sized-payload that the last 3 symbols index into
|
|
78
|
-
|
|
79
|
-
|
|
78
|
+
let skip = u16();
|
|
79
|
+
let pos_payload = pos;
|
|
80
80
|
pos += skip;
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
let read_width = 0;
|
|
82
|
+
let read_buffer = 0;
|
|
83
83
|
function read_bit() {
|
|
84
84
|
if (read_width == 0) {
|
|
85
85
|
// this will read beyond end of buffer
|
|
@@ -89,24 +89,24 @@ function decode_arithmetic(bytes) {
|
|
|
89
89
|
}
|
|
90
90
|
return (read_buffer >> --read_width) & 1;
|
|
91
91
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
92
|
+
const N = 31;
|
|
93
|
+
const FULL = 2 ** N;
|
|
94
|
+
const HALF = FULL >>> 1;
|
|
95
|
+
const QRTR = HALF >> 1;
|
|
96
|
+
const MASK = FULL - 1;
|
|
97
97
|
// fill register
|
|
98
|
-
|
|
99
|
-
for (
|
|
98
|
+
let register = 0;
|
|
99
|
+
for (let i = 0; i < N; i++)
|
|
100
100
|
register = (register << 1) | read_bit();
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
101
|
+
let symbols = [];
|
|
102
|
+
let low = 0;
|
|
103
|
+
let range = FULL; // treat like a float
|
|
104
104
|
while (true) {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
105
|
+
let value = Math.floor((((register - low + 1) * total) - 1) / range);
|
|
106
|
+
let start = 0;
|
|
107
|
+
let end = symbol_count;
|
|
108
108
|
while (end - start > 1) { // binary search
|
|
109
|
-
|
|
109
|
+
let mid = (start + end) >>> 1;
|
|
110
110
|
if (value < acc[mid]) {
|
|
111
111
|
end = mid;
|
|
112
112
|
}
|
|
@@ -117,8 +117,8 @@ function decode_arithmetic(bytes) {
|
|
|
117
117
|
if (start == 0)
|
|
118
118
|
break; // first symbol is end mark
|
|
119
119
|
symbols.push(start);
|
|
120
|
-
|
|
121
|
-
|
|
120
|
+
let a = low + Math.floor(range * acc[start] / total);
|
|
121
|
+
let b = low + Math.floor(range * acc[start + 1] / total) - 1;
|
|
122
122
|
while (((a ^ b) & HALF) == 0) {
|
|
123
123
|
register = (register << 1) & MASK | read_bit();
|
|
124
124
|
a = (a << 1) & MASK;
|
|
@@ -132,8 +132,8 @@ function decode_arithmetic(bytes) {
|
|
|
132
132
|
low = a;
|
|
133
133
|
range = 1 + b - a;
|
|
134
134
|
}
|
|
135
|
-
|
|
136
|
-
return symbols.map(
|
|
135
|
+
let offset = symbol_count - 4;
|
|
136
|
+
return symbols.map(x => {
|
|
137
137
|
switch (x - offset) {
|
|
138
138
|
case 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);
|
|
139
139
|
case 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);
|
|
@@ -144,8 +144,8 @@ function decode_arithmetic(bytes) {
|
|
|
144
144
|
}
|
|
145
145
|
// returns an iterator which returns the next symbol
|
|
146
146
|
function read_payload(v) {
|
|
147
|
-
|
|
148
|
-
return
|
|
147
|
+
let pos = 0;
|
|
148
|
+
return () => v[pos++];
|
|
149
149
|
}
|
|
150
150
|
function read_compressed_payload(bytes) {
|
|
151
151
|
return read_payload(decode_arithmetic(bytes));
|
|
@@ -155,48 +155,48 @@ function signed(i) {
|
|
|
155
155
|
return (i & 1) ? (~i >> 1) : (i >> 1);
|
|
156
156
|
}
|
|
157
157
|
function read_counts(n, next) {
|
|
158
|
-
|
|
159
|
-
for (
|
|
158
|
+
let v = Array(n);
|
|
159
|
+
for (let i = 0; i < n; i++)
|
|
160
160
|
v[i] = 1 + next();
|
|
161
161
|
return v;
|
|
162
162
|
}
|
|
163
163
|
function read_ascending(n, next) {
|
|
164
|
-
|
|
165
|
-
for (
|
|
164
|
+
let v = Array(n);
|
|
165
|
+
for (let i = 0, x = -1; i < n; i++)
|
|
166
166
|
v[i] = x += 1 + next();
|
|
167
167
|
return v;
|
|
168
168
|
}
|
|
169
169
|
function read_deltas(n, next) {
|
|
170
|
-
|
|
171
|
-
for (
|
|
170
|
+
let v = Array(n);
|
|
171
|
+
for (let i = 0, x = 0; i < n; i++)
|
|
172
172
|
v[i] = x += signed(next());
|
|
173
173
|
return v;
|
|
174
174
|
}
|
|
175
175
|
function read_member_array(next, lookup) {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
for (
|
|
181
|
-
for (
|
|
176
|
+
let v = read_ascending(next(), next);
|
|
177
|
+
let n = next();
|
|
178
|
+
let vX = read_ascending(n, next);
|
|
179
|
+
let vN = read_counts(n, next);
|
|
180
|
+
for (let i = 0; i < n; i++) {
|
|
181
|
+
for (let j = 0; j < vN[i]; j++) {
|
|
182
182
|
v.push(vX[i] + j);
|
|
183
183
|
}
|
|
184
184
|
}
|
|
185
|
-
return lookup ? v.map(
|
|
185
|
+
return lookup ? v.map(x => lookup[x]) : v;
|
|
186
186
|
}
|
|
187
187
|
// returns array of
|
|
188
188
|
// [x, ys] => single replacement rule
|
|
189
189
|
// [x, ys, n, dx, dx] => linear map
|
|
190
190
|
function read_mapped_map(next) {
|
|
191
|
-
|
|
191
|
+
let ret = [];
|
|
192
192
|
while (true) {
|
|
193
|
-
|
|
193
|
+
let w = next();
|
|
194
194
|
if (w == 0)
|
|
195
195
|
break;
|
|
196
196
|
ret.push(read_linear_table(w, next));
|
|
197
197
|
}
|
|
198
198
|
while (true) {
|
|
199
|
-
|
|
199
|
+
let w = next() - 1;
|
|
200
200
|
if (w < 0)
|
|
201
201
|
break;
|
|
202
202
|
ret.push(read_replacement_table(w, next));
|
|
@@ -204,9 +204,9 @@ function read_mapped_map(next) {
|
|
|
204
204
|
return fromEntries(flat(ret));
|
|
205
205
|
}
|
|
206
206
|
function read_zero_terminated_array(next) {
|
|
207
|
-
|
|
207
|
+
let v = [];
|
|
208
208
|
while (true) {
|
|
209
|
-
|
|
209
|
+
let i = next();
|
|
210
210
|
if (i == 0)
|
|
211
211
|
break;
|
|
212
212
|
v.push(i);
|
|
@@ -214,52 +214,52 @@ function read_zero_terminated_array(next) {
|
|
|
214
214
|
return v;
|
|
215
215
|
}
|
|
216
216
|
function read_transposed(n, w, next) {
|
|
217
|
-
|
|
218
|
-
for (
|
|
219
|
-
read_deltas(n, next).forEach(
|
|
217
|
+
let m = Array(n).fill(undefined).map(() => []);
|
|
218
|
+
for (let i = 0; i < w; i++) {
|
|
219
|
+
read_deltas(n, next).forEach((x, j) => m[j].push(x));
|
|
220
220
|
}
|
|
221
221
|
return m;
|
|
222
222
|
}
|
|
223
223
|
function read_linear_table(w, next) {
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
return flat(m.map(
|
|
229
|
-
|
|
224
|
+
let dx = 1 + next();
|
|
225
|
+
let dy = next();
|
|
226
|
+
let vN = read_zero_terminated_array(next);
|
|
227
|
+
let m = read_transposed(vN.length, 1 + w, next);
|
|
228
|
+
return flat(m.map((v, i) => {
|
|
229
|
+
const x = v[0], ys = v.slice(1);
|
|
230
230
|
//let [x, ...ys] = v;
|
|
231
231
|
//return Array(vN[i]).fill().map((_, j) => {
|
|
232
|
-
return Array(vN[i]).fill(undefined).map(
|
|
233
|
-
|
|
234
|
-
return [x + j * dx, ys.map(
|
|
232
|
+
return Array(vN[i]).fill(undefined).map((_, j) => {
|
|
233
|
+
let j_dy = j * dy;
|
|
234
|
+
return [x + j * dx, ys.map(y => y + j_dy)];
|
|
235
235
|
});
|
|
236
236
|
}));
|
|
237
237
|
}
|
|
238
238
|
function read_replacement_table(w, next) {
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
return m.map(
|
|
239
|
+
let n = 1 + next();
|
|
240
|
+
let m = read_transposed(n, 1 + w, next);
|
|
241
|
+
return m.map(v => [v[0], v.slice(1)]);
|
|
242
242
|
}
|
|
243
243
|
function read_emoji_trie(next) {
|
|
244
|
-
|
|
244
|
+
let sorted = read_member_array(next).sort((a, b) => a - b);
|
|
245
245
|
return read();
|
|
246
246
|
function read() {
|
|
247
|
-
|
|
247
|
+
let branches = [];
|
|
248
248
|
while (true) {
|
|
249
|
-
|
|
249
|
+
let keys = read_member_array(next, sorted);
|
|
250
250
|
if (keys.length == 0)
|
|
251
251
|
break;
|
|
252
252
|
branches.push({ set: new Set(keys), node: read() });
|
|
253
253
|
}
|
|
254
|
-
branches.sort(
|
|
255
|
-
|
|
256
|
-
|
|
254
|
+
branches.sort((a, b) => b.set.size - a.set.size); // sort by likelihood
|
|
255
|
+
let temp = next();
|
|
256
|
+
let valid = temp % 3;
|
|
257
257
|
temp = (temp / 3) | 0;
|
|
258
|
-
|
|
258
|
+
let fe0f = !!(temp & 1);
|
|
259
259
|
temp >>= 1;
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
return { branches
|
|
260
|
+
let save = temp == 1;
|
|
261
|
+
let check = temp == 2;
|
|
262
|
+
return { branches, valid, fe0f, save, check };
|
|
263
263
|
}
|
|
264
264
|
}
|
|
265
265
|
//# sourceMappingURL=decoder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decoder.js","sourceRoot":"","sources":["../../src.ts/ens-normalize/decoder.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;AAmCH,8CAgFC;AAID,oCAGC;AACD,0DAEC;AAGD,wBAEC;AAoBD,8CAWC;AAKD,0CAaC;AAED,gEAQC;AA8CD,0CAoBC;AA1PD,uEAAuE;AACvE,SAAS,IAAI,CAAC,KAAiB,EAAE,KAAc;IAC3C,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAAC,KAAK,GAAG,CAAC,CAAC;IAAC,CAAC;IACjC,
|
|
1
|
+
{"version":3,"file":"decoder.js","sourceRoot":"","sources":["../../src.ts/ens-normalize/decoder.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
*/
|
|
30
30
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
31
|
exports.getData = getData;
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
const base64_1 = require("@qevm/base64");
|
|
33
|
+
const decoder_js_1 = require("./decoder.js");
|
|
34
34
|
function getData() {
|
|
35
35
|
return (0, decoder_js_1.read_compressed_payload)((0, base64_1.decode)('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'));
|
|
36
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"include.js","sourceRoot":"","sources":["../../src.ts/ens-normalize/include.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;AAMH,0BAEC;AAND,
|
|
1
|
+
{"version":3,"file":"include.js","sourceRoot":"","sources":["../../src.ts/ens-normalize/include.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;AAMH,0BAEC;AAND,yCAAsC;AAEtC,6CAAqD;AAErD,SAAgB,OAAO;IACnB,OAAO,IAAA,oCAAuB,EAAC,IAAA,eAAM,EAAC,k6cAAk6c,CAAC,CAAC,CAAC;AAC/8c,CAAC"}
|
package/lib/ens-normalize/lib.js
CHANGED
|
@@ -30,41 +30,40 @@
|
|
|
30
30
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
31
|
exports.ens_normalize_post_check = ens_normalize_post_check;
|
|
32
32
|
exports.ens_normalize = ens_normalize;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
const strings_1 = require("@qevm/strings");
|
|
34
|
+
const include_js_1 = require("./include.js");
|
|
35
|
+
const r = (0, include_js_1.getData)();
|
|
36
|
+
const decoder_js_1 = require("./decoder.js");
|
|
37
37
|
// @TODO: This should be lazily loaded
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
const VALID = new Set((0, decoder_js_1.read_member_array)(r));
|
|
39
|
+
const IGNORED = new Set((0, decoder_js_1.read_member_array)(r));
|
|
40
|
+
const MAPPED = (0, decoder_js_1.read_mapped_map)(r);
|
|
41
|
+
const EMOJI_ROOT = (0, decoder_js_1.read_emoji_trie)(r);
|
|
42
42
|
//const NFC_CHECK = new Set(read_member_array(r, Array.from(VALID.values()).sort((a, b) => a - b)));
|
|
43
43
|
//const STOP = 0x2E;
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
const HYPHEN = 0x2D;
|
|
45
|
+
const UNDERSCORE = 0x5F;
|
|
46
46
|
function explode_cp(name) {
|
|
47
47
|
return (0, strings_1.toUtf8CodePoints)(name);
|
|
48
48
|
}
|
|
49
49
|
function filter_fe0f(cps) {
|
|
50
|
-
return cps.filter(
|
|
50
|
+
return cps.filter(cp => cp != 0xFE0F);
|
|
51
51
|
}
|
|
52
52
|
function ens_normalize_post_check(name) {
|
|
53
|
-
for (
|
|
54
|
-
|
|
55
|
-
var cps = explode_cp(label);
|
|
53
|
+
for (let label of name.split('.')) {
|
|
54
|
+
let cps = explode_cp(label);
|
|
56
55
|
try {
|
|
57
|
-
for (
|
|
56
|
+
for (let i = cps.lastIndexOf(UNDERSCORE) - 1; i >= 0; i--) {
|
|
58
57
|
if (cps[i] !== UNDERSCORE) {
|
|
59
|
-
throw new Error(
|
|
58
|
+
throw new Error(`underscore only allowed at start`);
|
|
60
59
|
}
|
|
61
60
|
}
|
|
62
|
-
if (cps.length >= 4 && cps.every(
|
|
63
|
-
throw new Error(
|
|
61
|
+
if (cps.length >= 4 && cps.every(cp => cp < 0x80) && cps[2] === HYPHEN && cps[3] === HYPHEN) {
|
|
62
|
+
throw new Error(`invalid label extension`);
|
|
64
63
|
}
|
|
65
64
|
}
|
|
66
65
|
catch (err) {
|
|
67
|
-
throw new Error(
|
|
66
|
+
throw new Error(`Invalid label "${label}": ${err.message}`);
|
|
68
67
|
}
|
|
69
68
|
}
|
|
70
69
|
return name;
|
|
@@ -73,15 +72,15 @@ function ens_normalize(name) {
|
|
|
73
72
|
return ens_normalize_post_check(normalize(name, filter_fe0f));
|
|
74
73
|
}
|
|
75
74
|
function normalize(name, emoji_filter) {
|
|
76
|
-
|
|
77
|
-
|
|
75
|
+
let input = explode_cp(name).reverse(); // flip for pop
|
|
76
|
+
let output = [];
|
|
78
77
|
while (input.length) {
|
|
79
|
-
|
|
78
|
+
let emoji = consume_emoji_reversed(input);
|
|
80
79
|
if (emoji) {
|
|
81
|
-
output.push
|
|
80
|
+
output.push(...emoji_filter(emoji));
|
|
82
81
|
continue;
|
|
83
82
|
}
|
|
84
|
-
|
|
83
|
+
let cp = input.pop();
|
|
85
84
|
if (VALID.has(cp)) {
|
|
86
85
|
output.push(cp);
|
|
87
86
|
continue;
|
|
@@ -89,38 +88,37 @@ function normalize(name, emoji_filter) {
|
|
|
89
88
|
if (IGNORED.has(cp)) {
|
|
90
89
|
continue;
|
|
91
90
|
}
|
|
92
|
-
|
|
91
|
+
let cps = MAPPED[cp];
|
|
93
92
|
if (cps) {
|
|
94
|
-
output.push
|
|
93
|
+
output.push(...cps);
|
|
95
94
|
continue;
|
|
96
95
|
}
|
|
97
|
-
throw new Error(
|
|
96
|
+
throw new Error(`Disallowed codepoint: 0x${cp.toString(16).toUpperCase()}`);
|
|
98
97
|
}
|
|
99
|
-
return ens_normalize_post_check(nfc(String.fromCodePoint
|
|
98
|
+
return ens_normalize_post_check(nfc(String.fromCodePoint(...output)));
|
|
100
99
|
}
|
|
101
100
|
function nfc(s) {
|
|
102
101
|
return s.normalize('NFC');
|
|
103
102
|
}
|
|
104
103
|
function consume_emoji_reversed(cps, eaten) {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
var pos = cps.length;
|
|
104
|
+
let node = EMOJI_ROOT;
|
|
105
|
+
let emoji;
|
|
106
|
+
let saved;
|
|
107
|
+
let stack = [];
|
|
108
|
+
let pos = cps.length;
|
|
111
109
|
if (eaten)
|
|
112
110
|
eaten.length = 0; // clear input buffer (if needed)
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
node =
|
|
111
|
+
while (pos) {
|
|
112
|
+
let cp = cps[--pos];
|
|
113
|
+
node = node.branches.find(x => x.set.has(cp))?.node;
|
|
116
114
|
if (!node)
|
|
117
|
-
|
|
115
|
+
break;
|
|
118
116
|
if (node.save) { // remember
|
|
119
117
|
saved = cp;
|
|
120
118
|
}
|
|
121
119
|
else if (node.check) { // check exclusion
|
|
122
120
|
if (cp === saved)
|
|
123
|
-
|
|
121
|
+
break;
|
|
124
122
|
}
|
|
125
123
|
stack.push(cp);
|
|
126
124
|
if (node.fe0f) {
|
|
@@ -133,14 +131,9 @@ function consume_emoji_reversed(cps, eaten) {
|
|
|
133
131
|
if (node.valid == 2)
|
|
134
132
|
emoji.splice(1, 1); // delete FE0F at position 1 (RGI ZWJ don't follow spec!)
|
|
135
133
|
if (eaten)
|
|
136
|
-
eaten.push
|
|
134
|
+
eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)
|
|
137
135
|
cps.length = pos; // truncate
|
|
138
136
|
}
|
|
139
|
-
};
|
|
140
|
-
while (pos) {
|
|
141
|
-
var state_1 = _loop_1();
|
|
142
|
-
if (state_1 === "break")
|
|
143
|
-
break;
|
|
144
137
|
}
|
|
145
138
|
return emoji;
|
|
146
139
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src.ts/ens-normalize/lib.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;AA6BH,4DAiBC;AAED,sCAEC;AAhDD,
|
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src.ts/ens-normalize/lib.ts"],"names":[],"mappings":"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"}
|
package/lib/id.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.id = id;
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
const keccak256_1 = require("@qevm/keccak256");
|
|
5
|
+
const strings_1 = require("@qevm/strings");
|
|
6
6
|
function id(text) {
|
|
7
7
|
return (0, keccak256_1.keccak256)((0, strings_1.toUtf8Bytes)(text));
|
|
8
8
|
}
|
package/lib/id.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"id.js","sourceRoot":"","sources":["../src.ts/id.ts"],"names":[],"mappings":";;AAGA,gBAEC;AALD
|
|
1
|
+
{"version":3,"file":"id.js","sourceRoot":"","sources":["../src.ts/id.ts"],"names":[],"mappings":";;AAGA,gBAEC;AALD,+CAA4C;AAC5C,2CAA4C;AAE5C,SAAgB,EAAE,CAAC,IAAY;IAC3B,OAAO,IAAA,qBAAS,EAAC,IAAA,qBAAW,EAAC,IAAI,CAAC,CAAC,CAAC;AACxC,CAAC"}
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src.ts/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,gBAAgB,IAAI,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAErE,OAAO,EACH,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src.ts/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,gBAAgB,IAAI,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAErE,OAAO,EACH,EAAE,EACF,SAAS,EACT,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,aAAa,EACb,WAAW,EACX,iBAAiB,GACpB,CAAC"}
|