mapshaper 0.6.20 → 0.6.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 CHANGED
@@ -1,6 +1,6 @@
1
1
  (function () {
2
2
 
3
- var VERSION = "0.6.20";
3
+ var VERSION = "0.6.22";
4
4
 
5
5
 
6
6
  var utils = /*#__PURE__*/Object.freeze({
@@ -88,6 +88,7 @@
88
88
  get formatter () { return formatter; },
89
89
  get wildcardToRegExp () { return wildcardToRegExp; },
90
90
  get createBuffer () { return createBuffer; },
91
+ get toBuffer () { return toBuffer; },
91
92
  get expandoBuffer () { return expandoBuffer; },
92
93
  get copyElements () { return copyElements; },
93
94
  get extendBuffer () { return extendBuffer; },
@@ -1033,6 +1034,15 @@
1033
1034
  }
1034
1035
  }
1035
1036
 
1037
+ function toBuffer(src) {
1038
+ if (src instanceof B$3) return src;
1039
+ if (src instanceof ArrayBuffer) return B$3.from(src);
1040
+ if (src instanceof Uint8Array) {
1041
+ return B$3.from(src.buffer, src.byteOffset, src.byteLength);
1042
+ }
1043
+ error('Unexpected argument type');
1044
+ }
1045
+
1036
1046
  function expandoBuffer(constructor, rate) {
1037
1047
  var capacity = 0,
1038
1048
  k = rate >= 1 ? rate : 1.2,
@@ -1173,17 +1183,19 @@
1173
1183
  return str.replace(',', '.');
1174
1184
  }
1175
1185
 
1176
- function trimQuotes(raw) {
1177
- var len = raw.length, first, last;
1186
+ function trimQuotes(str) {
1187
+ var len = str.length, first, last;
1178
1188
  if (len >= 2) {
1179
- first = raw.charAt(0);
1180
- last = raw.charAt(len-1);
1181
- if (first == '"' && last == '"' && !raw.includes('","') ||
1182
- first == "'" && last == "'" && !raw.includes("','")) {
1183
- return raw.substr(1, len-2);
1189
+ first = str.charAt(0);
1190
+ last = str.charAt(len-1);
1191
+ if (first == '"' && last == '"' && !str.includes('","') ||
1192
+ first == "'" && last == "'" && !str.includes("','")) {
1193
+ str = str.substr(1, len-2);
1194
+ // remove string escapes
1195
+ str = str.replace(first == '"' ? /\\(?=")/g : /\\(?=')/g, '');
1184
1196
  }
1185
1197
  }
1186
- return raw;
1198
+ return str;
1187
1199
  }
1188
1200
 
1189
1201
  var LOGGING = false;
@@ -10763,12 +10775,6 @@
10763
10775
  };
10764
10776
  }
10765
10777
 
10766
- // TODO..
10767
- // export function serializeSession(catalog) {
10768
- // var obj = exportDatasets(catalog.getDatasets());
10769
- // return BSON.serialize(obj);
10770
- // }
10771
-
10772
10778
  async function exportDataset(dataset, opts) {
10773
10779
  return {
10774
10780
  arcs: dataset.arcs ? await exportArcs(dataset.arcs, opts) : null,
@@ -21453,7 +21459,8 @@ ${svg}
21453
21459
 
21454
21460
  function buffer() {
21455
21461
  if (!buf) {
21456
- buf = (src instanceof ArrayBuffer) ? utils.createBuffer(src) : src;
21462
+ // buf = (src instanceof ArrayBuffer) ? utils.createBuffer(src) : src;
21463
+ buf = utils.toBuffer(src);
21457
21464
  }
21458
21465
  return buf;
21459
21466
  }
@@ -22333,9 +22340,9 @@ ${svg}
22333
22340
  var assignmentRxp = /^([a-z0-9_+-]+)=(?!=)(.*)$/i; // exclude ==
22334
22341
 
22335
22342
  function splitShellTokens(str) {
22336
- var BAREWORD = '([^\'"\\s])+';
22337
- var DOUBLE_QUOTE = '"((\\\\"|[^"])*?)"';
22338
- var SINGLE_QUOTE = '\'((\\\\\'|[^\'])*?)\'';
22343
+ var BAREWORD = `([^'"\\s])+`;
22344
+ var DOUBLE_QUOTE = `"((\\\\"|[^"])*?)"`;
22345
+ var SINGLE_QUOTE = `'((\\\\'|[^'])*?)'`;
22339
22346
  var rxp = new RegExp('(' + BAREWORD + '|' + SINGLE_QUOTE + '|' + DOUBLE_QUOTE + ')*', 'g');
22340
22347
  var matches = str.match(rxp) || [];
22341
22348
  var chunks = matches.filter(function(chunk) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mapshaper",
3
- "version": "0.6.20",
3
+ "version": "0.6.22",
4
4
  "description": "A tool for editing vector datasets for mapping and GIS.",
5
5
  "keywords": [
6
6
  "shapefile",
@@ -85,6 +85,7 @@
85
85
  get formatter () { return formatter; },
86
86
  get wildcardToRegExp () { return wildcardToRegExp; },
87
87
  get createBuffer () { return createBuffer; },
88
+ get toBuffer () { return toBuffer; },
88
89
  get expandoBuffer () { return expandoBuffer; },
89
90
  get copyElements () { return copyElements; },
90
91
  get extendBuffer () { return extendBuffer; },
@@ -589,12 +590,12 @@
589
590
  if (arguments.length == 1) {
590
591
  return this.el.getAttribute(obj);
591
592
  }
592
- this.el.setAttribute(obj, value);
593
- // this.el[obj] = value;
593
+ if (value === null) {
594
+ this.el.removeAttribute(obj);
595
+ } else {
596
+ this.el.setAttribute(obj, value);
597
+ }
594
598
  }
595
- // else if (!value) {
596
- // Opts.copyAllParams(this.el, obj);
597
- // }
598
599
  return this;
599
600
  },
600
601
 
@@ -1397,7 +1398,7 @@
1397
1398
  addMenuLink({
1398
1399
  slug: 'stash',
1399
1400
  // label: 'save data snapshot',
1400
- label: 'take a snapshot',
1401
+ label: 'create a snapshot',
1401
1402
  action: saveSnapshot
1402
1403
  });
1403
1404
 
@@ -1793,16 +1794,16 @@
1793
1794
  .attr('multiple', 'multiple')
1794
1795
  .on('change', onchange);
1795
1796
 
1796
- function onchange(e) {
1797
+ async function onchange(e) {
1797
1798
  var files = e.target.files;
1798
1799
  // files may be undefined (e.g. if user presses 'cancel' after a file has been selected)
1799
1800
  if (files) {
1800
1801
  // disable the button while files are being processed
1801
1802
  btn.addClass('selected');
1802
1803
  input.attr('disabled', true);
1803
- cb(files);
1804
+ await cb(files);
1804
1805
  btn.removeClass('selected');
1805
- input.attr('disabled', false);
1806
+ input.attr('disabled', null);
1806
1807
  }
1807
1808
  }
1808
1809
  }
@@ -1945,6 +1946,7 @@
1945
1946
  async function receiveFiles(files) {
1946
1947
  var names = getFileNames(files);
1947
1948
  var expanded = [];
1949
+ if (files.length === 0) return;
1948
1950
  try {
1949
1951
  expanded = await expandFiles(files);
1950
1952
  } catch(e) {
@@ -1960,7 +1962,7 @@
1960
1962
  }
1961
1963
  gui.enterMode('import');
1962
1964
  if (useQuickView()) {
1963
- importQueuedFiles();
1965
+ await importQueuedFiles();
1964
1966
  } else {
1965
1967
  gui.container.addClass('queued-files');
1966
1968
  El('#path-import-options').classed('hidden', !filesMayContainPaths(queuedFiles));
@@ -2133,14 +2135,6 @@
2133
2135
  return new Promise(resolve => setTimeout(resolve, ms));
2134
2136
  }
2135
2137
 
2136
- function runAsync(fn, arg) {
2137
- return new Promise((resolve, reject) => {
2138
- fn(arg, function(err, data) {
2139
- return err ? reject(err) : resolve(data);
2140
- });
2141
- });
2142
- }
2143
-
2144
2138
  async function readKmzFile(file) {
2145
2139
  var files = await readZipFile(file);
2146
2140
  var name = files[0] && files[0].name;
@@ -2162,7 +2156,7 @@
2162
2156
  async function readZipFile(file) {
2163
2157
  // Async is up to twice as fast unzipping large files
2164
2158
  // var index = internal.unzipSync(file.content);
2165
- var index = await runAsync(internal.unzipAsync, file.content);
2159
+ var index = await utils$1.promisify(internal.unzipAsync)(file.content);
2166
2160
  return Object.keys(index).reduce(function(memo, filename) {
2167
2161
  if (!/\.txt$/i.test(filename)) {
2168
2162
  memo.push({
@@ -2196,7 +2190,7 @@
2196
2190
 
2197
2191
  async function readFileData(file) {
2198
2192
  try {
2199
- var content = await runAsync(readContentFileAsync, file);
2193
+ var content = await utils$1.promisify(readContentFileAsync)(file);
2200
2194
  return {
2201
2195
  content: content,
2202
2196
  name: file.name
@@ -6071,6 +6065,15 @@
6071
6065
  }
6072
6066
  }
6073
6067
 
6068
+ function toBuffer(src) {
6069
+ if (src instanceof B) return src;
6070
+ if (src instanceof ArrayBuffer) return B.from(src);
6071
+ if (src instanceof Uint8Array) {
6072
+ return B.from(src.buffer, src.byteOffset, src.byteLength);
6073
+ }
6074
+ error('Unexpected argument type');
6075
+ }
6076
+
6074
6077
  function expandoBuffer(constructor, rate) {
6075
6078
  var capacity = 0,
6076
6079
  k = rate >= 1 ? rate : 1.2,
@@ -6211,17 +6214,19 @@
6211
6214
  return str.replace(',', '.');
6212
6215
  }
6213
6216
 
6214
- function trimQuotes(raw) {
6215
- var len = raw.length, first, last;
6217
+ function trimQuotes(str) {
6218
+ var len = str.length, first, last;
6216
6219
  if (len >= 2) {
6217
- first = raw.charAt(0);
6218
- last = raw.charAt(len-1);
6219
- if (first == '"' && last == '"' && !raw.includes('","') ||
6220
- first == "'" && last == "'" && !raw.includes("','")) {
6221
- return raw.substr(1, len-2);
6220
+ first = str.charAt(0);
6221
+ last = str.charAt(len-1);
6222
+ if (first == '"' && last == '"' && !str.includes('","') ||
6223
+ first == "'" && last == "'" && !str.includes("','")) {
6224
+ str = str.substr(1, len-2);
6225
+ // remove string escapes
6226
+ str = str.replace(first == '"' ? /\\(?=")/g : /\\(?=')/g, '');
6222
6227
  }
6223
6228
  }
6224
- return raw;
6229
+ return str;
6225
6230
  }
6226
6231
 
6227
6232
  function absArcId(arcId) {
package/www/mapshaper.js CHANGED
@@ -1,6 +1,6 @@
1
1
  (function () {
2
2
 
3
- var VERSION = "0.6.20";
3
+ var VERSION = "0.6.22";
4
4
 
5
5
 
6
6
  var utils = /*#__PURE__*/Object.freeze({
@@ -88,6 +88,7 @@
88
88
  get formatter () { return formatter; },
89
89
  get wildcardToRegExp () { return wildcardToRegExp; },
90
90
  get createBuffer () { return createBuffer; },
91
+ get toBuffer () { return toBuffer; },
91
92
  get expandoBuffer () { return expandoBuffer; },
92
93
  get copyElements () { return copyElements; },
93
94
  get extendBuffer () { return extendBuffer; },
@@ -1033,6 +1034,15 @@
1033
1034
  }
1034
1035
  }
1035
1036
 
1037
+ function toBuffer(src) {
1038
+ if (src instanceof B$3) return src;
1039
+ if (src instanceof ArrayBuffer) return B$3.from(src);
1040
+ if (src instanceof Uint8Array) {
1041
+ return B$3.from(src.buffer, src.byteOffset, src.byteLength);
1042
+ }
1043
+ error('Unexpected argument type');
1044
+ }
1045
+
1036
1046
  function expandoBuffer(constructor, rate) {
1037
1047
  var capacity = 0,
1038
1048
  k = rate >= 1 ? rate : 1.2,
@@ -1173,17 +1183,19 @@
1173
1183
  return str.replace(',', '.');
1174
1184
  }
1175
1185
 
1176
- function trimQuotes(raw) {
1177
- var len = raw.length, first, last;
1186
+ function trimQuotes(str) {
1187
+ var len = str.length, first, last;
1178
1188
  if (len >= 2) {
1179
- first = raw.charAt(0);
1180
- last = raw.charAt(len-1);
1181
- if (first == '"' && last == '"' && !raw.includes('","') ||
1182
- first == "'" && last == "'" && !raw.includes("','")) {
1183
- return raw.substr(1, len-2);
1189
+ first = str.charAt(0);
1190
+ last = str.charAt(len-1);
1191
+ if (first == '"' && last == '"' && !str.includes('","') ||
1192
+ first == "'" && last == "'" && !str.includes("','")) {
1193
+ str = str.substr(1, len-2);
1194
+ // remove string escapes
1195
+ str = str.replace(first == '"' ? /\\(?=")/g : /\\(?=')/g, '');
1184
1196
  }
1185
1197
  }
1186
- return raw;
1198
+ return str;
1187
1199
  }
1188
1200
 
1189
1201
  var LOGGING = false;
@@ -10763,12 +10775,6 @@
10763
10775
  };
10764
10776
  }
10765
10777
 
10766
- // TODO..
10767
- // export function serializeSession(catalog) {
10768
- // var obj = exportDatasets(catalog.getDatasets());
10769
- // return BSON.serialize(obj);
10770
- // }
10771
-
10772
10778
  async function exportDataset(dataset, opts) {
10773
10779
  return {
10774
10780
  arcs: dataset.arcs ? await exportArcs(dataset.arcs, opts) : null,
@@ -21453,7 +21459,8 @@ ${svg}
21453
21459
 
21454
21460
  function buffer() {
21455
21461
  if (!buf) {
21456
- buf = (src instanceof ArrayBuffer) ? utils.createBuffer(src) : src;
21462
+ // buf = (src instanceof ArrayBuffer) ? utils.createBuffer(src) : src;
21463
+ buf = utils.toBuffer(src);
21457
21464
  }
21458
21465
  return buf;
21459
21466
  }
@@ -22333,9 +22340,9 @@ ${svg}
22333
22340
  var assignmentRxp = /^([a-z0-9_+-]+)=(?!=)(.*)$/i; // exclude ==
22334
22341
 
22335
22342
  function splitShellTokens(str) {
22336
- var BAREWORD = '([^\'"\\s])+';
22337
- var DOUBLE_QUOTE = '"((\\\\"|[^"])*?)"';
22338
- var SINGLE_QUOTE = '\'((\\\\\'|[^\'])*?)\'';
22343
+ var BAREWORD = `([^'"\\s])+`;
22344
+ var DOUBLE_QUOTE = `"((\\\\"|[^"])*?)"`;
22345
+ var SINGLE_QUOTE = `'((\\\\'|[^'])*?)'`;
22339
22346
  var rxp = new RegExp('(' + BAREWORD + '|' + SINGLE_QUOTE + '|' + DOUBLE_QUOTE + ')*', 'g');
22340
22347
  var matches = str.match(rxp) || [];
22341
22348
  var chunks = matches.filter(function(chunk) {