dns-message 1.0.0 → 1.0.1-canary-5358558d51748ee8060d5894158491696423b95e

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.
@@ -141,62 +141,69 @@ const c = {
141
141
  if ("." === t[t.length - 1]) {
142
142
  e--;
143
143
  }
144
- return e + t.replace(/\\\./g, ".").length;
144
+ e += t.replace(/\\\./g, ".").length;
145
+ if (e > 255) {
146
+ throw new RangeError(`Name "${t}" is above 255 byte limit.`);
147
+ }
148
+ return e;
145
149
  }
146
150
  },
147
151
  write(t, e, n) {
148
152
  const r = a.encode(n);
149
- for (let n = 46 === r[0] ? 1 : 0, s = 0; n < r.byteLength; n = s + 1) {
150
- s = r.indexOf(46, n);
151
- while (s > -1 && 92 === r[s - 1]) {
152
- s = r.indexOf(46, s + 1);
153
+ for (let s = 46 === r[0] ? 1 : 0, a = 0; s < r.byteLength; s = a + 1) {
154
+ a = r.indexOf(46, s);
155
+ while (a > -1 && 92 === r[a - 1]) {
156
+ a = r.indexOf(46, a + 1);
153
157
  }
154
- if (-1 === s) {
155
- s = r.byteLength;
158
+ if (-1 === a) {
159
+ a = r.byteLength;
156
160
  }
157
- if (s === n) {
161
+ if (a === s) {
158
162
  continue;
163
+ } else if (a - s > 63) {
164
+ throw new RangeError(`Label in "${n}" is above 63 byte limit.`);
159
165
  }
160
- let a = e + 1;
161
- for (let e = n; e < s; e++) {
166
+ let i = e + 1;
167
+ for (let e = s; e < a; e++) {
162
168
  if (92 === r[e] && 46 === r[e + 1]) {
163
169
  e++;
164
170
  }
165
- t.setUint8(a++, r[e]);
171
+ t.setUint8(i++, r[e]);
166
172
  }
167
- t.setUint8(e, a - e - 1);
168
- e = a;
169
- n = s + 1;
173
+ t.setUint8(e, i - e - 1);
174
+ e = i;
175
+ s = a + 1;
170
176
  }
171
177
  return e + 1;
172
178
  },
173
179
  read(t, e) {
174
- let {offset: n, length: r} = e;
175
- const s = [];
176
- while (e.offset - n < r) {
177
- const a = t.getUint8(e.offset);
178
- advance(e, 1);
179
- if (0 === a) {
180
+ const n = [];
181
+ let r = e.offset;
182
+ let s = e;
183
+ while (1) {
184
+ const e = t.getUint8(s.offset);
185
+ if (0 === e) {
186
+ advance(s, 1);
180
187
  break;
181
- } else if (!(192 & a)) {
182
- const n = i.decode(sliceView(t, e, a));
183
- s.push(n.replace(/\./g, "\\."));
184
- } else if (!(192 & ~a)) {
185
- const a = e.offset - n;
186
- n = e.offset;
187
- r = e.length;
188
- e.offset = t.getUint16(e.offset - 1) - 49152;
189
- e.length = r - a;
190
- const i = c.read(t, e);
191
- if (i && "." !== i) {
192
- s.push(i);
188
+ } else if (!(192 & e)) {
189
+ advance(s, 1);
190
+ const r = sliceView(t, s, e);
191
+ n.push(i.decode(r).replace(/\./g, "\\."));
192
+ } else {
193
+ const e = t.getUint16(s.offset) - 49152;
194
+ advance(s, 2);
195
+ if (e < r) {
196
+ s = {
197
+ offset: r = e,
198
+ length: 0
199
+ };
200
+ } else {
201
+ advance(s, 2);
202
+ break;
193
203
  }
194
- e.offset = n;
195
- e.length = r;
196
- break;
197
204
  }
198
205
  }
199
- return s.join(".") || ".";
206
+ return n.join(".") || ".";
200
207
  }
201
208
  };
202
209
 
@@ -390,8 +397,9 @@ const array = t => ({
390
397
  });
391
398
 
392
399
  const advance = (t, e) => {
393
- t.offset += e;
394
- t.length -= e;
400
+ t.offset += 0 | e;
401
+ t.length -= 0 | e;
402
+ t.length &= ~(t.length >> 31);
395
403
  };
396
404
 
397
405
  const sliceView = (t, e, n = e.length) => {
@@ -439,7 +447,7 @@ let w = function(t) {
439
447
  return t;
440
448
  }({});
441
449
 
442
- const b = withRDLength({
450
+ const E = withRDLength({
443
451
  bytes: t => f.bytes(t.data),
444
452
  write: (t, e, n) => f.write(t, e, n.data),
445
453
  read: (t, e) => ({
@@ -448,16 +456,16 @@ const b = withRDLength({
448
456
  })
449
457
  });
450
458
 
451
- const p = "(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])";
459
+ const b = "(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])";
452
460
 
453
- const E = new RegExp(`^${`(?:${p}\\.){3}${p}`}$`);
461
+ const A = new RegExp(`^${`(?:${b}\\.){3}${b}`}$`);
454
462
 
455
- const A = withRDLength({
463
+ const p = withRDLength({
456
464
  bytes: t => Math.ceil((t.sourcePrefixLength || 0) / 8) + 4,
457
465
  write(t, e, n) {
458
466
  const r = n.sourcePrefixLength || 0;
459
467
  const s = n.scopePrefixLength || 0;
460
- const a = n.family || (E.test(n.ip) ? w.v4 : w.v6);
468
+ const a = n.family || (A.test(n.ip) ? w.v4 : w.v6);
461
469
  const i = Math.ceil(r / 8);
462
470
  t.setUint16(e, a);
463
471
  t.setUint8(e + 2, r);
@@ -488,7 +496,7 @@ const A = withRDLength({
488
496
  }
489
497
  });
490
498
 
491
- const S = withRDLength({
499
+ const N = withRDLength({
492
500
  bytes: t => t.timeout ? 2 : 0,
493
501
  write(t, e, n) {
494
502
  if (n.timeout) {
@@ -514,7 +522,7 @@ const S = withRDLength({
514
522
  }
515
523
  });
516
524
 
517
- const N = withRDLength({
525
+ const S = withRDLength({
518
526
  bytes: t => t.length || 0,
519
527
  write: (t, e, n) => e + (n.length || 0),
520
528
  read(t, e) {
@@ -555,17 +563,17 @@ const isUnknownOpt = t => !!t.data;
555
563
  const I = {
556
564
  bytes(t) {
557
565
  if (isUnknownOpt(t)) {
558
- return b.bytes(t) + 2;
566
+ return E.bytes(t) + 2;
559
567
  }
560
568
  switch (t.code) {
561
569
  case s.CLIENT_SUBNET:
562
- return A.bytes(t) + 2;
570
+ return p.bytes(t) + 2;
563
571
 
564
572
  case s.TCP_KEEPALIVE:
565
- return S.bytes(t) + 2;
573
+ return N.bytes(t) + 2;
566
574
 
567
575
  case s.PADDING:
568
- return N.bytes(t) + 2;
576
+ return S.bytes(t) + 2;
569
577
 
570
578
  case s.KEY_TAG:
571
579
  return T.bytes(t) + 2;
@@ -575,17 +583,17 @@ const I = {
575
583
  t.setUint16(e, n.code);
576
584
  e += 2;
577
585
  if (isUnknownOpt(n)) {
578
- return b.write(t, e, n);
586
+ return E.write(t, e, n);
579
587
  }
580
588
  switch (n.code) {
581
589
  case s.CLIENT_SUBNET:
582
- return A.write(t, e, n);
590
+ return p.write(t, e, n);
583
591
 
584
592
  case s.TCP_KEEPALIVE:
585
- return S.write(t, e, n);
593
+ return N.write(t, e, n);
586
594
 
587
595
  case s.PADDING:
588
- return N.write(t, e, n);
596
+ return S.write(t, e, n);
589
597
 
590
598
  case s.KEY_TAG:
591
599
  return T.write(t, e, n);
@@ -596,19 +604,19 @@ const I = {
596
604
  advance(e, 2);
597
605
  switch (n) {
598
606
  case s.CLIENT_SUBNET:
599
- return A.read(t, e);
607
+ return p.read(t, e);
600
608
 
601
609
  case s.TCP_KEEPALIVE:
602
- return S.read(t, e);
610
+ return N.read(t, e);
603
611
 
604
612
  case s.PADDING:
605
- return N.read(t, e);
613
+ return S.read(t, e);
606
614
 
607
615
  case s.KEY_TAG:
608
616
  return T.read(t, e);
609
617
 
610
618
  default:
611
- const r = b.read(t, e);
619
+ const r = E.read(t, e);
612
620
  r.code = n;
613
621
  return r;
614
622
  }
@@ -628,9 +636,9 @@ let P = function(t) {
628
636
  return t;
629
637
  }({});
630
638
 
631
- const D = withRDLength(array(g));
639
+ const R = withRDLength(array(g));
632
640
 
633
- const R = withRDLength(array(d));
641
+ const D = withRDLength(array(d));
634
642
 
635
643
  const C = withRDLength(g);
636
644
 
@@ -644,10 +652,10 @@ const v = {
644
652
  bytes(t) {
645
653
  let e = 0;
646
654
  if (null != t.mandatory) {
647
- e += D.bytes(t.mandatory) + 2;
655
+ e += R.bytes(t.mandatory) + 2;
648
656
  }
649
657
  if (null != t.alpn) {
650
- e += R.bytes(t.alpn) + 2;
658
+ e += D.bytes(t.alpn) + 2;
651
659
  }
652
660
  if (t["no-default-alpn"]) {
653
661
  e += 4;
@@ -675,11 +683,11 @@ const v = {
675
683
  write(t, e, n) {
676
684
  if (null != n.mandatory) {
677
685
  t.setUint16(e, P.Mandatory);
678
- e = D.write(t, e + 2, n.mandatory);
686
+ e = R.write(t, e + 2, n.mandatory);
679
687
  }
680
688
  if (null != n.alpn) {
681
689
  t.setUint16(e, P.Alpn);
682
- e = R.write(t, e + 2, n.alpn);
690
+ e = D.write(t, e + 2, n.alpn);
683
691
  }
684
692
  if (n["no-default-alpn"]) {
685
693
  t.setUint16(e, P.NoDefaultAlpn);
@@ -729,11 +737,11 @@ const v = {
729
737
  advance(e, 2);
730
738
  switch (n) {
731
739
  case P.Mandatory:
732
- s.mandatory = D.read(t, e);
740
+ s.mandatory = R.read(t, e);
733
741
  break;
734
742
 
735
743
  case P.Alpn:
736
- s.alpn = R.read(t, e);
744
+ s.alpn = D.read(t, e);
737
745
  break;
738
746
 
739
747
  case P.NoDefaultAlpn:
@@ -779,11 +787,11 @@ const x = withRDLength(c);
779
787
 
780
788
  const _ = withRDLength(l);
781
789
 
782
- const V = withRDLength(y);
790
+ const M = withRDLength(y);
783
791
 
784
- const Y = withRDLength(array(d));
792
+ const V = withRDLength(array(d));
785
793
 
786
- const K = withRDLength({
794
+ const Y = withRDLength({
787
795
  bytes: t => c.bytes(t.target) + 6,
788
796
  write(t, e, n) {
789
797
  t.setUint16(e, n.priority || 0);
@@ -807,7 +815,7 @@ const K = withRDLength({
807
815
  }
808
816
  });
809
817
 
810
- const M = withRDLength({
818
+ const K = withRDLength({
811
819
  bytes: t => d.bytes(t.cpu) + d.bytes(t.os),
812
820
  write(t, e, n) {
813
821
  e = d.write(t, e, n.cpu);
@@ -1129,22 +1137,22 @@ const nt = {
1129
1137
  return n + F.bytes(t.data);
1130
1138
 
1131
1139
  case e.HINFO:
1132
- return n + M.bytes(t.data);
1140
+ return n + K.bytes(t.data);
1133
1141
 
1134
1142
  case e.MX:
1135
1143
  return n + G.bytes(t.data);
1136
1144
 
1137
1145
  case e.TXT:
1138
- return n + Y.bytes(t.data);
1146
+ return n + V.bytes(t.data);
1139
1147
 
1140
1148
  case e.RP:
1141
1149
  return n + $.bytes(t.data);
1142
1150
 
1143
1151
  case e.AAAA:
1144
- return n + V.bytes(t.data);
1152
+ return n + M.bytes(t.data);
1145
1153
 
1146
1154
  case e.SRV:
1147
- return n + K.bytes(t.data);
1155
+ return n + Y.bytes(t.data);
1148
1156
 
1149
1157
  case e.NAPTR:
1150
1158
  return n + W.bytes(t.data);
@@ -1180,6 +1188,11 @@ const nt = {
1180
1188
  case e.CAA:
1181
1189
  return n + X.bytes(t.data);
1182
1190
 
1191
+ case e.PTR:
1192
+ case e.CNAME:
1193
+ case e.DNAME:
1194
+ return n + x.bytes(t.data);
1195
+
1183
1196
  default:
1184
1197
  return n + H.bytes(t.data);
1185
1198
  }
@@ -1210,22 +1223,22 @@ const nt = {
1210
1223
  return F.write(t, n, r.data);
1211
1224
 
1212
1225
  case e.HINFO:
1213
- return M.write(t, n, r.data);
1226
+ return K.write(t, n, r.data);
1214
1227
 
1215
1228
  case e.MX:
1216
1229
  return G.write(t, n, r.data);
1217
1230
 
1218
1231
  case e.TXT:
1219
- return Y.write(t, n, r.data);
1232
+ return V.write(t, n, r.data);
1220
1233
 
1221
1234
  case e.RP:
1222
1235
  return $.write(t, n, r.data);
1223
1236
 
1224
1237
  case e.AAAA:
1225
- return V.write(t, n, r.data);
1238
+ return M.write(t, n, r.data);
1226
1239
 
1227
1240
  case e.SRV:
1228
- return K.write(t, n, r.data);
1241
+ return Y.write(t, n, r.data);
1229
1242
 
1230
1243
  case e.NAPTR:
1231
1244
  return W.write(t, n, r.data);
@@ -1258,6 +1271,11 @@ const nt = {
1258
1271
  case e.CAA:
1259
1272
  return X.write(t, n, r.data);
1260
1273
 
1274
+ case e.PTR:
1275
+ case e.CNAME:
1276
+ case e.DNAME:
1277
+ return x.write(t, n, r.data);
1278
+
1261
1279
  default:
1262
1280
  return H.write(t, n, r.data);
1263
1281
  }
@@ -1305,7 +1323,7 @@ const nt = {
1305
1323
  return o;
1306
1324
 
1307
1325
  case e.HINFO:
1308
- o.data = M.read(t, n);
1326
+ o.data = K.read(t, n);
1309
1327
  return o;
1310
1328
 
1311
1329
  case e.MX:
@@ -1313,7 +1331,7 @@ const nt = {
1313
1331
  return o;
1314
1332
 
1315
1333
  case e.TXT:
1316
- o.data = Y.read(t, n);
1334
+ o.data = V.read(t, n);
1317
1335
  return o;
1318
1336
 
1319
1337
  case e.RP:
@@ -1321,11 +1339,11 @@ const nt = {
1321
1339
  return o;
1322
1340
 
1323
1341
  case e.AAAA:
1324
- o.data = V.read(t, n);
1342
+ o.data = M.read(t, n);
1325
1343
  return o;
1326
1344
 
1327
1345
  case e.SRV:
1328
- o.data = K.read(t, n);
1346
+ o.data = Y.read(t, n);
1329
1347
  return o;
1330
1348
 
1331
1349
  case e.NAPTR:
@@ -1369,6 +1387,12 @@ const nt = {
1369
1387
  o.data = X.read(t, n);
1370
1388
  return o;
1371
1389
 
1390
+ case e.PTR:
1391
+ case e.CNAME:
1392
+ case e.DNAME:
1393
+ o.data = x.read(t, n);
1394
+ return o;
1395
+
1372
1396
  default:
1373
1397
  o.data = H.read(t, n);
1374
1398
  return o;
@@ -1463,7 +1487,7 @@ function decode(t) {
1463
1487
 
1464
1488
  function streamDecode(t) {
1465
1489
  const e = "buffer" in t ? new DataView(t.buffer, t.byteOffset, t.byteLength) : new DataView(t);
1466
- const n = Math.min(e.byteLength, e.getUint16(0)) - 2;
1490
+ const n = Math.min(e.byteLength - 2, e.getUint16(0));
1467
1491
  return rt.read(e, {
1468
1492
  offset: 2,
1469
1493
  length: n
@@ -1484,7 +1508,7 @@ function streamEncode(t) {
1484
1508
  const e = new ArrayBuffer(rt.bytes(t) + 2);
1485
1509
  const n = new DataView(e);
1486
1510
  const r = rt.write(n, 2, t);
1487
- n.setUint16(0, r);
1511
+ n.setUint16(0, r - 2);
1488
1512
  return new Uint8Array(e, 0, r);
1489
1513
  }
1490
1514