mapshaper 0.7.21 → 0.7.22
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/mapshaper.js +27 -82
- package/package.json +1 -1
- package/www/mapshaper.js +27 -82
package/mapshaper.js
CHANGED
|
@@ -34267,7 +34267,8 @@ ${svg}
|
|
|
34267
34267
|
|
|
34268
34268
|
var EOF; // undefined is used as an EOF marker
|
|
34269
34269
|
|
|
34270
|
-
|
|
34270
|
+
// Default number of bytes to keep in the read buffer.
|
|
34271
|
+
var RESERVE_DEFAULT = 4096;
|
|
34271
34272
|
var BUFLEN = 1e7; // buffer chunk size
|
|
34272
34273
|
var MAX_STRLEN = 5e6; // max byte len of a value string (object keys are shorter)
|
|
34273
34274
|
|
|
@@ -34300,12 +34301,10 @@ ${svg}
|
|
|
34300
34301
|
function parseGeoJSON(reader, cb) {
|
|
34301
34302
|
var src = ByteReader(reader, 0);
|
|
34302
34303
|
var isObject = seekObjectStart(src);
|
|
34303
|
-
var type;
|
|
34304
34304
|
if (!isObject) {
|
|
34305
34305
|
stop$1('File is not GeoJSON');
|
|
34306
34306
|
}
|
|
34307
|
-
|
|
34308
|
-
var obj = readObject(src, cb, type);
|
|
34307
|
+
var obj = readObject(src, cb);
|
|
34309
34308
|
if (obj.type == 'FeatureCollection' || obj.type == 'GeometryCollection') {
|
|
34310
34309
|
return obj;
|
|
34311
34310
|
}
|
|
@@ -34354,8 +34353,9 @@ ${svg}
|
|
|
34354
34353
|
|
|
34355
34354
|
function seekObjectStart(src) {
|
|
34356
34355
|
var c = src.getChar();
|
|
34356
|
+
var reserve = src.getReserve();
|
|
34357
34357
|
var i = 0;
|
|
34358
|
-
while (c != EOF && i <
|
|
34358
|
+
while (c != EOF && i < reserve) {
|
|
34359
34359
|
i++;
|
|
34360
34360
|
if (c == LBRACE) {
|
|
34361
34361
|
src.back();
|
|
@@ -34386,17 +34386,6 @@ ${svg}
|
|
|
34386
34386
|
return arr;
|
|
34387
34387
|
}
|
|
34388
34388
|
|
|
34389
|
-
function skipArray(src) {
|
|
34390
|
-
var c;
|
|
34391
|
-
eatChar(src, LBRACK);
|
|
34392
|
-
c = scanForSyntaxChar(src, RBRACK);
|
|
34393
|
-
while (c != RBRACK) {
|
|
34394
|
-
src.refresh();
|
|
34395
|
-
skipValue(src);
|
|
34396
|
-
c = scanForAorB(src, COMMA, RBRACK);
|
|
34397
|
-
}
|
|
34398
|
-
}
|
|
34399
|
-
|
|
34400
34389
|
function readCollectionArray(src, cb) {
|
|
34401
34390
|
var c;
|
|
34402
34391
|
eatChar(src, LBRACK);
|
|
@@ -34485,18 +34474,6 @@ ${svg}
|
|
|
34485
34474
|
return val;
|
|
34486
34475
|
}
|
|
34487
34476
|
|
|
34488
|
-
function skipValue(src) {
|
|
34489
|
-
var c = src.peek();
|
|
34490
|
-
if (isFirstNumChar(c)) readNumber(src);
|
|
34491
|
-
else if (c == LBRACK) skipArray(src);
|
|
34492
|
-
else if (c == DQUOTE) readString(src);
|
|
34493
|
-
else if (c == LBRACE) skipObject(src);
|
|
34494
|
-
else if (c == 110) readNull(src); // "n" -> null
|
|
34495
|
-
else if (c == 116) readTrue(src); // "t" -> true
|
|
34496
|
-
else if (c == 102) readFalse(src); // "f" -> false
|
|
34497
|
-
else unexpectedCharAt(c, src.index());
|
|
34498
|
-
}
|
|
34499
|
-
|
|
34500
34477
|
function readTrue(src) {
|
|
34501
34478
|
eatChars(src, 'true');
|
|
34502
34479
|
return true;
|
|
@@ -34523,7 +34500,7 @@ ${svg}
|
|
|
34523
34500
|
|
|
34524
34501
|
// cb: optional callback for returning GeoJSON features or geometries
|
|
34525
34502
|
//
|
|
34526
|
-
function readObject(src, cb
|
|
34503
|
+
function readObject(src, cb) {
|
|
34527
34504
|
var o = {};
|
|
34528
34505
|
var key, c;
|
|
34529
34506
|
eatChar(src, LBRACE);
|
|
@@ -34534,8 +34511,7 @@ ${svg}
|
|
|
34534
34511
|
skipWS(src);
|
|
34535
34512
|
eatChar(src, 58); // ":"
|
|
34536
34513
|
skipWS(src);
|
|
34537
|
-
if ((
|
|
34538
|
-
type == 'GeometryCollection' && key == 'geometries') &&
|
|
34514
|
+
if ((key == 'features' || key == 'geometries') &&
|
|
34539
34515
|
src.peek() == LBRACK && cb) {
|
|
34540
34516
|
readCollectionArray(src, cb);
|
|
34541
34517
|
o[key] = null;
|
|
@@ -34549,53 +34525,11 @@ ${svg}
|
|
|
34549
34525
|
return o;
|
|
34550
34526
|
}
|
|
34551
34527
|
|
|
34552
|
-
function skipObject(src) {
|
|
34553
|
-
var c;
|
|
34554
|
-
eatChar(src, LBRACE);
|
|
34555
|
-
c = scanForSyntaxChar(src, RBRACE);
|
|
34556
|
-
while (c != RBRACE) {
|
|
34557
|
-
src.refresh();
|
|
34558
|
-
readKeywordString(src);
|
|
34559
|
-
skipWS(src);
|
|
34560
|
-
eatChar(src, 58); // ":"
|
|
34561
|
-
skipWS(src);
|
|
34562
|
-
skipValue(src);
|
|
34563
|
-
c = scanForAorB(src, COMMA, RBRACE);
|
|
34564
|
-
}
|
|
34565
|
-
}
|
|
34566
|
-
|
|
34567
|
-
function readTopLevelType(src) {
|
|
34568
|
-
var i = src.index();
|
|
34569
|
-
var type, key, c;
|
|
34570
|
-
eatChar(src, LBRACE);
|
|
34571
|
-
c = scanForSyntaxChar(src, RBRACE);
|
|
34572
|
-
while (c != RBRACE) {
|
|
34573
|
-
src.refresh();
|
|
34574
|
-
key = readKeywordString(src);
|
|
34575
|
-
skipWS(src);
|
|
34576
|
-
eatChar(src, 58); // ":"
|
|
34577
|
-
skipWS(src);
|
|
34578
|
-
if (key == 'type' && src.peek() == DQUOTE) {
|
|
34579
|
-
type = readKeywordString(src);
|
|
34580
|
-
break;
|
|
34581
|
-
}
|
|
34582
|
-
skipValue(src);
|
|
34583
|
-
c = scanForAorB(src, COMMA, RBRACE);
|
|
34584
|
-
}
|
|
34585
|
-
src.index(i);
|
|
34586
|
-
return type;
|
|
34587
|
-
}
|
|
34588
|
-
|
|
34589
|
-
function growReserve() {
|
|
34590
|
-
RESERVE *= 2;
|
|
34591
|
-
return RESERVE <= MAX_STRLEN;
|
|
34592
|
-
}
|
|
34593
|
-
|
|
34594
34528
|
// Uses caching to speed up parsing of repeated strings.
|
|
34595
34529
|
// The caching scheme used here can give a 20% overall speed improvement
|
|
34596
34530
|
// when parsing files consisting mostly of attribute data (e.g. typical Point features)
|
|
34597
34531
|
function readKeywordString(src) {
|
|
34598
|
-
var MAXLEN = 2000; // must be less than
|
|
34532
|
+
var MAXLEN = 2000; // must be less than RESERVE_DEFAULT
|
|
34599
34533
|
var i = src.index();
|
|
34600
34534
|
var cache = src.cache;
|
|
34601
34535
|
var escapeNext = false;
|
|
@@ -34653,7 +34587,7 @@ ${svg}
|
|
|
34653
34587
|
// Fallback for reading long strings, escaped strings, non-ascii strings, etc.
|
|
34654
34588
|
function readString_slow(src) {
|
|
34655
34589
|
src.refresh();
|
|
34656
|
-
var LIMIT =
|
|
34590
|
+
var LIMIT = src.getReserve() - 2;
|
|
34657
34591
|
var i = src.index();
|
|
34658
34592
|
var n = 0;
|
|
34659
34593
|
var escapeNext = false;
|
|
@@ -34665,7 +34599,7 @@ ${svg}
|
|
|
34665
34599
|
if (n > LIMIT) {
|
|
34666
34600
|
// we've exceeded the number of reserved bytes
|
|
34667
34601
|
// expand the limit and try reading this string again
|
|
34668
|
-
if (c == EOF || !growReserve()) {
|
|
34602
|
+
if (c == EOF || !src.growReserve()) {
|
|
34669
34603
|
stringOverflow(i, c);
|
|
34670
34604
|
}
|
|
34671
34605
|
src.index(i);
|
|
@@ -34783,9 +34717,10 @@ ${svg}
|
|
|
34783
34717
|
function ByteReader(reader, start) {
|
|
34784
34718
|
var fileLen = reader.size();
|
|
34785
34719
|
var bufOffs = start;
|
|
34720
|
+
var reserve = RESERVE_DEFAULT; // per-instance reserve; may grow (see growReserve)
|
|
34786
34721
|
var buf = reader.readSync(bufOffs, BUFLEN);
|
|
34787
34722
|
var i = 0;
|
|
34788
|
-
var obj = { peek, getChar, advance, back, toString, index, refresh };
|
|
34723
|
+
var obj = { peek, getChar, advance, back, toString, index, refresh, getReserve, growReserve };
|
|
34789
34724
|
obj.cache = []; // kludgy place to put the key cache
|
|
34790
34725
|
refresh();
|
|
34791
34726
|
return obj;
|
|
@@ -34793,14 +34728,14 @@ ${svg}
|
|
|
34793
34728
|
// This function should be called to make sure that the buffer has enough
|
|
34794
34729
|
// bytes remaining to read any reasonable JSON content.
|
|
34795
34730
|
function refresh() {
|
|
34796
|
-
// if
|
|
34797
|
-
if (buf.length - i >=
|
|
34731
|
+
// if reserve bytes are still available in the buffer, no update is required
|
|
34732
|
+
if (buf.length - i >= reserve) return;
|
|
34798
34733
|
|
|
34799
34734
|
// CHANGE: now using undefined as an EOF marker, so a bounds check is unneeded
|
|
34800
34735
|
// // if we're close to the end of the file, start checking for overflow
|
|
34801
34736
|
// // (we don't do this all the time because the bounds check on every read
|
|
34802
34737
|
// // causes a significant slowdown, as much as 20%)
|
|
34803
|
-
// if (fileLen - (bufOffs + i) <
|
|
34738
|
+
// if (fileLen - (bufOffs + i) < reserve) {
|
|
34804
34739
|
// obj.peek = safePeek;
|
|
34805
34740
|
// obj.getChar = safeGetChar;
|
|
34806
34741
|
// }
|
|
@@ -34808,11 +34743,18 @@ ${svg}
|
|
|
34808
34743
|
// if buffer reaches the end of the file, no update is required
|
|
34809
34744
|
if (bufOffs + buf.length >= fileLen) return;
|
|
34810
34745
|
|
|
34811
|
-
// fewer than
|
|
34746
|
+
// fewer than reserve bytes are unread in buffer -- update the buffer
|
|
34812
34747
|
bufOffs += i;
|
|
34813
34748
|
i = 0;
|
|
34814
34749
|
buf = reader.readSync(bufOffs, BUFLEN);
|
|
34815
34750
|
}
|
|
34751
|
+
function getReserve() {
|
|
34752
|
+
return reserve;
|
|
34753
|
+
}
|
|
34754
|
+
function growReserve() {
|
|
34755
|
+
reserve *= 2;
|
|
34756
|
+
return reserve <= MAX_STRLEN;
|
|
34757
|
+
}
|
|
34816
34758
|
function peek() {
|
|
34817
34759
|
return buf[i];
|
|
34818
34760
|
}
|
|
@@ -34827,6 +34769,9 @@ ${svg}
|
|
|
34827
34769
|
}
|
|
34828
34770
|
function index(idx) {
|
|
34829
34771
|
if (idx >= 0 === false) return i + bufOffs;
|
|
34772
|
+
if (idx < bufOffs || idx > bufOffs + buf.length) {
|
|
34773
|
+
error('JSON parser seek out of buffer range');
|
|
34774
|
+
}
|
|
34830
34775
|
i = idx - bufOffs;
|
|
34831
34776
|
}
|
|
34832
34777
|
function toString(idx, n) {
|
|
@@ -58369,7 +58314,7 @@ ${svg}
|
|
|
58369
58314
|
return name == 'rectangle' || name == 'rectangles' || name == 'filter' && opts.cleanup;
|
|
58370
58315
|
}
|
|
58371
58316
|
|
|
58372
|
-
var version = "0.7.
|
|
58317
|
+
var version = "0.7.22";
|
|
58373
58318
|
|
|
58374
58319
|
// Parse command line args into commands and run them
|
|
58375
58320
|
// Function takes an optional Node-style callback. A Promise is returned if no callback is given.
|
package/package.json
CHANGED
package/www/mapshaper.js
CHANGED
|
@@ -34267,7 +34267,8 @@ ${svg}
|
|
|
34267
34267
|
|
|
34268
34268
|
var EOF; // undefined is used as an EOF marker
|
|
34269
34269
|
|
|
34270
|
-
|
|
34270
|
+
// Default number of bytes to keep in the read buffer.
|
|
34271
|
+
var RESERVE_DEFAULT = 4096;
|
|
34271
34272
|
var BUFLEN = 1e7; // buffer chunk size
|
|
34272
34273
|
var MAX_STRLEN = 5e6; // max byte len of a value string (object keys are shorter)
|
|
34273
34274
|
|
|
@@ -34300,12 +34301,10 @@ ${svg}
|
|
|
34300
34301
|
function parseGeoJSON(reader, cb) {
|
|
34301
34302
|
var src = ByteReader(reader, 0);
|
|
34302
34303
|
var isObject = seekObjectStart(src);
|
|
34303
|
-
var type;
|
|
34304
34304
|
if (!isObject) {
|
|
34305
34305
|
stop$1('File is not GeoJSON');
|
|
34306
34306
|
}
|
|
34307
|
-
|
|
34308
|
-
var obj = readObject(src, cb, type);
|
|
34307
|
+
var obj = readObject(src, cb);
|
|
34309
34308
|
if (obj.type == 'FeatureCollection' || obj.type == 'GeometryCollection') {
|
|
34310
34309
|
return obj;
|
|
34311
34310
|
}
|
|
@@ -34354,8 +34353,9 @@ ${svg}
|
|
|
34354
34353
|
|
|
34355
34354
|
function seekObjectStart(src) {
|
|
34356
34355
|
var c = src.getChar();
|
|
34356
|
+
var reserve = src.getReserve();
|
|
34357
34357
|
var i = 0;
|
|
34358
|
-
while (c != EOF && i <
|
|
34358
|
+
while (c != EOF && i < reserve) {
|
|
34359
34359
|
i++;
|
|
34360
34360
|
if (c == LBRACE) {
|
|
34361
34361
|
src.back();
|
|
@@ -34386,17 +34386,6 @@ ${svg}
|
|
|
34386
34386
|
return arr;
|
|
34387
34387
|
}
|
|
34388
34388
|
|
|
34389
|
-
function skipArray(src) {
|
|
34390
|
-
var c;
|
|
34391
|
-
eatChar(src, LBRACK);
|
|
34392
|
-
c = scanForSyntaxChar(src, RBRACK);
|
|
34393
|
-
while (c != RBRACK) {
|
|
34394
|
-
src.refresh();
|
|
34395
|
-
skipValue(src);
|
|
34396
|
-
c = scanForAorB(src, COMMA, RBRACK);
|
|
34397
|
-
}
|
|
34398
|
-
}
|
|
34399
|
-
|
|
34400
34389
|
function readCollectionArray(src, cb) {
|
|
34401
34390
|
var c;
|
|
34402
34391
|
eatChar(src, LBRACK);
|
|
@@ -34485,18 +34474,6 @@ ${svg}
|
|
|
34485
34474
|
return val;
|
|
34486
34475
|
}
|
|
34487
34476
|
|
|
34488
|
-
function skipValue(src) {
|
|
34489
|
-
var c = src.peek();
|
|
34490
|
-
if (isFirstNumChar(c)) readNumber(src);
|
|
34491
|
-
else if (c == LBRACK) skipArray(src);
|
|
34492
|
-
else if (c == DQUOTE) readString(src);
|
|
34493
|
-
else if (c == LBRACE) skipObject(src);
|
|
34494
|
-
else if (c == 110) readNull(src); // "n" -> null
|
|
34495
|
-
else if (c == 116) readTrue(src); // "t" -> true
|
|
34496
|
-
else if (c == 102) readFalse(src); // "f" -> false
|
|
34497
|
-
else unexpectedCharAt(c, src.index());
|
|
34498
|
-
}
|
|
34499
|
-
|
|
34500
34477
|
function readTrue(src) {
|
|
34501
34478
|
eatChars(src, 'true');
|
|
34502
34479
|
return true;
|
|
@@ -34523,7 +34500,7 @@ ${svg}
|
|
|
34523
34500
|
|
|
34524
34501
|
// cb: optional callback for returning GeoJSON features or geometries
|
|
34525
34502
|
//
|
|
34526
|
-
function readObject(src, cb
|
|
34503
|
+
function readObject(src, cb) {
|
|
34527
34504
|
var o = {};
|
|
34528
34505
|
var key, c;
|
|
34529
34506
|
eatChar(src, LBRACE);
|
|
@@ -34534,8 +34511,7 @@ ${svg}
|
|
|
34534
34511
|
skipWS(src);
|
|
34535
34512
|
eatChar(src, 58); // ":"
|
|
34536
34513
|
skipWS(src);
|
|
34537
|
-
if ((
|
|
34538
|
-
type == 'GeometryCollection' && key == 'geometries') &&
|
|
34514
|
+
if ((key == 'features' || key == 'geometries') &&
|
|
34539
34515
|
src.peek() == LBRACK && cb) {
|
|
34540
34516
|
readCollectionArray(src, cb);
|
|
34541
34517
|
o[key] = null;
|
|
@@ -34549,53 +34525,11 @@ ${svg}
|
|
|
34549
34525
|
return o;
|
|
34550
34526
|
}
|
|
34551
34527
|
|
|
34552
|
-
function skipObject(src) {
|
|
34553
|
-
var c;
|
|
34554
|
-
eatChar(src, LBRACE);
|
|
34555
|
-
c = scanForSyntaxChar(src, RBRACE);
|
|
34556
|
-
while (c != RBRACE) {
|
|
34557
|
-
src.refresh();
|
|
34558
|
-
readKeywordString(src);
|
|
34559
|
-
skipWS(src);
|
|
34560
|
-
eatChar(src, 58); // ":"
|
|
34561
|
-
skipWS(src);
|
|
34562
|
-
skipValue(src);
|
|
34563
|
-
c = scanForAorB(src, COMMA, RBRACE);
|
|
34564
|
-
}
|
|
34565
|
-
}
|
|
34566
|
-
|
|
34567
|
-
function readTopLevelType(src) {
|
|
34568
|
-
var i = src.index();
|
|
34569
|
-
var type, key, c;
|
|
34570
|
-
eatChar(src, LBRACE);
|
|
34571
|
-
c = scanForSyntaxChar(src, RBRACE);
|
|
34572
|
-
while (c != RBRACE) {
|
|
34573
|
-
src.refresh();
|
|
34574
|
-
key = readKeywordString(src);
|
|
34575
|
-
skipWS(src);
|
|
34576
|
-
eatChar(src, 58); // ":"
|
|
34577
|
-
skipWS(src);
|
|
34578
|
-
if (key == 'type' && src.peek() == DQUOTE) {
|
|
34579
|
-
type = readKeywordString(src);
|
|
34580
|
-
break;
|
|
34581
|
-
}
|
|
34582
|
-
skipValue(src);
|
|
34583
|
-
c = scanForAorB(src, COMMA, RBRACE);
|
|
34584
|
-
}
|
|
34585
|
-
src.index(i);
|
|
34586
|
-
return type;
|
|
34587
|
-
}
|
|
34588
|
-
|
|
34589
|
-
function growReserve() {
|
|
34590
|
-
RESERVE *= 2;
|
|
34591
|
-
return RESERVE <= MAX_STRLEN;
|
|
34592
|
-
}
|
|
34593
|
-
|
|
34594
34528
|
// Uses caching to speed up parsing of repeated strings.
|
|
34595
34529
|
// The caching scheme used here can give a 20% overall speed improvement
|
|
34596
34530
|
// when parsing files consisting mostly of attribute data (e.g. typical Point features)
|
|
34597
34531
|
function readKeywordString(src) {
|
|
34598
|
-
var MAXLEN = 2000; // must be less than
|
|
34532
|
+
var MAXLEN = 2000; // must be less than RESERVE_DEFAULT
|
|
34599
34533
|
var i = src.index();
|
|
34600
34534
|
var cache = src.cache;
|
|
34601
34535
|
var escapeNext = false;
|
|
@@ -34653,7 +34587,7 @@ ${svg}
|
|
|
34653
34587
|
// Fallback for reading long strings, escaped strings, non-ascii strings, etc.
|
|
34654
34588
|
function readString_slow(src) {
|
|
34655
34589
|
src.refresh();
|
|
34656
|
-
var LIMIT =
|
|
34590
|
+
var LIMIT = src.getReserve() - 2;
|
|
34657
34591
|
var i = src.index();
|
|
34658
34592
|
var n = 0;
|
|
34659
34593
|
var escapeNext = false;
|
|
@@ -34665,7 +34599,7 @@ ${svg}
|
|
|
34665
34599
|
if (n > LIMIT) {
|
|
34666
34600
|
// we've exceeded the number of reserved bytes
|
|
34667
34601
|
// expand the limit and try reading this string again
|
|
34668
|
-
if (c == EOF || !growReserve()) {
|
|
34602
|
+
if (c == EOF || !src.growReserve()) {
|
|
34669
34603
|
stringOverflow(i, c);
|
|
34670
34604
|
}
|
|
34671
34605
|
src.index(i);
|
|
@@ -34783,9 +34717,10 @@ ${svg}
|
|
|
34783
34717
|
function ByteReader(reader, start) {
|
|
34784
34718
|
var fileLen = reader.size();
|
|
34785
34719
|
var bufOffs = start;
|
|
34720
|
+
var reserve = RESERVE_DEFAULT; // per-instance reserve; may grow (see growReserve)
|
|
34786
34721
|
var buf = reader.readSync(bufOffs, BUFLEN);
|
|
34787
34722
|
var i = 0;
|
|
34788
|
-
var obj = { peek, getChar, advance, back, toString, index, refresh };
|
|
34723
|
+
var obj = { peek, getChar, advance, back, toString, index, refresh, getReserve, growReserve };
|
|
34789
34724
|
obj.cache = []; // kludgy place to put the key cache
|
|
34790
34725
|
refresh();
|
|
34791
34726
|
return obj;
|
|
@@ -34793,14 +34728,14 @@ ${svg}
|
|
|
34793
34728
|
// This function should be called to make sure that the buffer has enough
|
|
34794
34729
|
// bytes remaining to read any reasonable JSON content.
|
|
34795
34730
|
function refresh() {
|
|
34796
|
-
// if
|
|
34797
|
-
if (buf.length - i >=
|
|
34731
|
+
// if reserve bytes are still available in the buffer, no update is required
|
|
34732
|
+
if (buf.length - i >= reserve) return;
|
|
34798
34733
|
|
|
34799
34734
|
// CHANGE: now using undefined as an EOF marker, so a bounds check is unneeded
|
|
34800
34735
|
// // if we're close to the end of the file, start checking for overflow
|
|
34801
34736
|
// // (we don't do this all the time because the bounds check on every read
|
|
34802
34737
|
// // causes a significant slowdown, as much as 20%)
|
|
34803
|
-
// if (fileLen - (bufOffs + i) <
|
|
34738
|
+
// if (fileLen - (bufOffs + i) < reserve) {
|
|
34804
34739
|
// obj.peek = safePeek;
|
|
34805
34740
|
// obj.getChar = safeGetChar;
|
|
34806
34741
|
// }
|
|
@@ -34808,11 +34743,18 @@ ${svg}
|
|
|
34808
34743
|
// if buffer reaches the end of the file, no update is required
|
|
34809
34744
|
if (bufOffs + buf.length >= fileLen) return;
|
|
34810
34745
|
|
|
34811
|
-
// fewer than
|
|
34746
|
+
// fewer than reserve bytes are unread in buffer -- update the buffer
|
|
34812
34747
|
bufOffs += i;
|
|
34813
34748
|
i = 0;
|
|
34814
34749
|
buf = reader.readSync(bufOffs, BUFLEN);
|
|
34815
34750
|
}
|
|
34751
|
+
function getReserve() {
|
|
34752
|
+
return reserve;
|
|
34753
|
+
}
|
|
34754
|
+
function growReserve() {
|
|
34755
|
+
reserve *= 2;
|
|
34756
|
+
return reserve <= MAX_STRLEN;
|
|
34757
|
+
}
|
|
34816
34758
|
function peek() {
|
|
34817
34759
|
return buf[i];
|
|
34818
34760
|
}
|
|
@@ -34827,6 +34769,9 @@ ${svg}
|
|
|
34827
34769
|
}
|
|
34828
34770
|
function index(idx) {
|
|
34829
34771
|
if (idx >= 0 === false) return i + bufOffs;
|
|
34772
|
+
if (idx < bufOffs || idx > bufOffs + buf.length) {
|
|
34773
|
+
error('JSON parser seek out of buffer range');
|
|
34774
|
+
}
|
|
34830
34775
|
i = idx - bufOffs;
|
|
34831
34776
|
}
|
|
34832
34777
|
function toString(idx, n) {
|
|
@@ -58369,7 +58314,7 @@ ${svg}
|
|
|
58369
58314
|
return name == 'rectangle' || name == 'rectangles' || name == 'filter' && opts.cleanup;
|
|
58370
58315
|
}
|
|
58371
58316
|
|
|
58372
|
-
var version = "0.7.
|
|
58317
|
+
var version = "0.7.22";
|
|
58373
58318
|
|
|
58374
58319
|
// Parse command line args into commands and run them
|
|
58375
58320
|
// Function takes an optional Node-style callback. A Promise is returned if no callback is given.
|