Comparing version 3.1.0 to 3.1.1
@@ -9,89 +9,89 @@ "use strict"; | ||
const _1 = __importDefault(require("./")); | ||
let dir = __dirname + '/testdata/'; | ||
blue_tape_1.default(async (t) => { | ||
let dir = __dirname + "/testdata/"; | ||
(0, blue_tape_1.default)(async (t) => { | ||
let table = [ | ||
// URL tests. | ||
{ | ||
url: 'https://gist.github.com/wavded/7376428/raw/971548233e441615a426794c766223488492ddb9/test.geojson', | ||
url: "https://gist.github.com/wavded/7376428/raw/971548233e441615a426794c766223488492ddb9/test.geojson", | ||
success: true, | ||
}, | ||
{ | ||
url: 'https://gist.github.com/wavded/7376428/raw/971548233e441615a426794c766223488492ddb9/test.georss', | ||
url: "https://gist.github.com/wavded/7376428/raw/971548233e441615a426794c766223488492ddb9/test.georss", | ||
success: true, | ||
}, | ||
// From format conversions. | ||
{ file: 'sample.bad', success: false }, | ||
{ file: 'sample.empty.zip', success: false }, | ||
{ file: 'sample.000', success: true }, | ||
{ file: 'sample.csv', success: true }, | ||
{ file: 'sample.dbf', success: true }, | ||
{ file: 'sample.dgn', success: true }, | ||
{ file: 'sample.dxf', success: true }, | ||
{ file: 'sample.gdb.zip', out: 'dxf', success: true }, | ||
{ file: 'sample.geojson', success: true }, | ||
{ file: 'sample.gml', success: true }, | ||
{ file: 'sample.gmt', success: true }, | ||
{ file: 'sample.gxt', success: true }, | ||
{ file: 'sample.itf', success: true }, | ||
{ file: 'sample.json', success: true }, | ||
{ file: 'sample.jml', stream: true, success: true }, | ||
{ file: 'sample.kml', success: true }, | ||
{ file: 'sample.kmz', success: true }, | ||
{ file: 'sample.cryllic.kml', success: true }, | ||
{ file: 'sample.map.zip', success: true }, | ||
{ file: 'sample.mapml', stream: true, success: true }, | ||
{ file: 'sample.rss', success: true }, | ||
{ file: 'sample.rti.zip', out: 'dxf', success: true }, | ||
{ file: 'sample.shp', success: true }, | ||
{ file: 'sample.shp.zip', success: true }, | ||
{ file: 'sample.vdv', stream: true, success: true }, | ||
{ file: "sample.bad", success: false }, | ||
{ file: "sample.empty.zip", success: false }, | ||
{ file: "sample.000", success: true }, | ||
{ file: "sample.csv", success: true }, | ||
{ file: "sample.dbf", success: true }, | ||
{ file: "sample.dgn", success: true }, | ||
{ file: "sample.dxf", success: true }, | ||
{ file: "sample.gdb.zip", out: "dxf", success: true }, | ||
{ file: "sample.geojson", success: true }, | ||
{ file: "sample.gml", success: true }, | ||
{ file: "sample.gmt", success: true }, | ||
{ file: "sample.gxt", success: true }, | ||
{ file: "sample.itf", success: true }, | ||
{ file: "sample.json", success: true }, | ||
{ file: "sample.jml", stream: true, success: true }, | ||
{ file: "sample.kml", success: true }, | ||
{ file: "sample.kmz", success: true }, | ||
{ file: "sample.cryllic.kml", success: true }, | ||
{ file: "sample.map.zip", success: true }, | ||
{ file: "sample.mapml", stream: true, success: true }, | ||
{ file: "sample.rss", success: true }, | ||
{ file: "sample.rti.zip", out: "dxf", success: true }, | ||
{ file: "sample.shp", success: true }, | ||
{ file: "sample.shp.zip", success: true }, | ||
{ file: "sample.vdv", stream: true, success: true }, | ||
// Using custom options. | ||
{ | ||
file: 'sample.no-shx.shp', | ||
opts: ['--config', 'SHAPE_RESTORE_SHX', 'TRUE'], | ||
file: "sample.no-shx.shp", | ||
opts: ["--config", "SHAPE_RESTORE_SHX", "TRUE"], | ||
success: true, | ||
}, | ||
{ | ||
file: 'sample.geom.csv', | ||
opts: ['-oo', 'GEOM_POSSIBLE_NAMES=the_geom'], | ||
file: "sample.geom.csv", | ||
opts: ["-oo", "GEOM_POSSIBLE_NAMES=the_geom"], | ||
success: true, | ||
}, | ||
// To format conversions. | ||
{ file: 'sample.json', success: true, out: 'csv' }, | ||
{ file: 'sample.json', success: true, out: 'dgn' }, | ||
{ file: 'sample.json', success: true, out: 'dxf' }, | ||
{ file: 'sample.json', success: true, out: 'esri shapefile' }, | ||
{ file: 'sample.json', success: true, out: 'flatgeobuf' }, | ||
{ file: 'sample.json', success: true, out: 'geoconcept' }, | ||
{ file: 'sample.json', success: true, out: 'geojson' }, | ||
{ file: 'sample.json', success: true, out: 'geojsonseq' }, | ||
{ file: 'sample.json', success: true, out: 'georss' }, | ||
{ file: 'sample.json', success: true, out: 'gml' }, | ||
{ file: 'sample.json', success: true, out: 'gmt' }, | ||
{ file: 'sample.json', success: true, out: 'gpkg' }, | ||
{ file: 'sample.json', success: true, out: 'gpx' }, | ||
{ file: 'sample.json', success: true, out: 'jml' }, | ||
{ file: 'sample.json', success: true, out: 'kml' }, | ||
{ file: 'sample.json', success: true, out: 'mapml' }, | ||
{ file: 'sample.json', success: true, out: 'mapinfo file' }, | ||
{ file: 'sample.json', success: true, out: 'ods' }, | ||
{ file: 'sample.json', success: true, out: 'pdf' }, | ||
{ file: 'sample.json', success: true, out: 'vdv' }, | ||
{ file: 'sample.json', success: true, out: 'xlsx' }, | ||
{ file: "sample.json", success: true, out: "csv" }, | ||
{ file: "sample.json", success: true, out: "dgn" }, | ||
{ file: "sample.json", success: true, out: "dxf" }, | ||
{ file: "sample.json", success: true, out: "esri shapefile" }, | ||
{ file: "sample.json", success: true, out: "flatgeobuf" }, | ||
{ file: "sample.json", success: true, out: "geoconcept" }, | ||
{ file: "sample.json", success: true, out: "geojson" }, | ||
{ file: "sample.json", success: true, out: "geojsonseq" }, | ||
{ file: "sample.json", success: true, out: "georss" }, | ||
{ file: "sample.json", success: true, out: "gml" }, | ||
{ file: "sample.json", success: true, out: "gmt" }, | ||
{ file: "sample.json", success: true, out: "gpkg" }, | ||
{ file: "sample.json", success: true, out: "gpx" }, | ||
{ file: "sample.json", success: true, out: "jml" }, | ||
{ file: "sample.json", success: true, out: "kml" }, | ||
{ file: "sample.json", success: true, out: "mapml" }, | ||
{ file: "sample.json", success: true, out: "mapinfo file" }, | ||
{ file: "sample.json", success: true, out: "ods" }, | ||
{ file: "sample.json", success: true, out: "pdf" }, | ||
{ file: "sample.json", success: true, out: "vdv" }, | ||
{ file: "sample.json", success: true, out: "xlsx" }, | ||
// Known supported stream conversions. | ||
{ file: 'sample.csv', stream: true, success: false }, | ||
{ file: 'sample.json', stream: true, success: true }, | ||
{ file: 'sample.rss', stream: true, success: true }, | ||
{ file: 'sample.gml', stream: true, success: true }, | ||
{ file: 'sample.gmt', stream: true, success: true }, | ||
{ file: 'sample.gpx', stream: true, success: true }, | ||
{ file: 'sample.jml', stream: true, success: true }, | ||
{ file: 'sample.kml', stream: true, success: true }, | ||
{ file: 'sample.mapml', stream: true, success: true }, | ||
{ file: 'sample.vdv', stream: true, success: true }, | ||
{ file: "sample.csv", stream: true, success: false }, | ||
{ file: "sample.json", stream: true, success: true }, | ||
{ file: "sample.rss", stream: true, success: true }, | ||
{ file: "sample.gml", stream: true, success: true }, | ||
{ file: "sample.gmt", stream: true, success: true }, | ||
{ file: "sample.gpx", stream: true, success: true }, | ||
{ file: "sample.jml", stream: true, success: true }, | ||
{ file: "sample.kml", stream: true, success: true }, | ||
{ file: "sample.mapml", stream: true, success: true }, | ||
{ file: "sample.vdv", stream: true, success: true }, | ||
// Custom destinations. (e.g. database) | ||
{ | ||
file: 'sample.json', | ||
file: "sample.json", | ||
success: true, | ||
dest: './testdata/output/custom.geojson', | ||
dest: dir + "output/custom.geojson", | ||
}, | ||
@@ -103,5 +103,5 @@ ]; | ||
if (tt.stream) { | ||
input = fs_1.createReadStream(input); | ||
input = (0, fs_1.createReadStream)(input); | ||
} | ||
let res = await _1.default(input, { | ||
let res = await (0, _1.default)(input, { | ||
format: tt.out, | ||
@@ -112,16 +112,16 @@ options: tt.opts, | ||
if (tt.dest) { | ||
fs_1.statSync(tt.dest); | ||
(0, fs_1.statSync)(tt.dest); | ||
t.pass(); | ||
} | ||
else if (!tt.out) { | ||
t.equal(res.data && res.data.type, 'FeatureCollection', res.cmd); | ||
t.equal(res.data && res.data.type, "FeatureCollection", res.cmd); | ||
} | ||
else { | ||
t.ok(res.text || res.stream, res.cmd); | ||
let fn = dir + 'output/r_' + tt.out + res.extname; | ||
let fn = dir + "output/r_" + tt.out + res.extname; | ||
if (res.stream) { | ||
res.stream.pipe(fs_1.createWriteStream(fn)); | ||
res.stream.pipe((0, fs_1.createWriteStream)(fn)); | ||
} | ||
else { | ||
fs_1.writeFileSync(fn, res.text); | ||
(0, fs_1.writeFileSync)(fn, res.text); | ||
} | ||
@@ -128,0 +128,0 @@ } |
/// <reference types="node" /> | ||
import { Readable, Stream } from 'stream'; | ||
import { Readable, Stream } from "stream"; | ||
declare type JSONLike = Record<string, unknown>; | ||
@@ -4,0 +4,0 @@ declare type Input = string | JSONLike | Stream; |
@@ -14,4 +14,4 @@ "use strict"; | ||
const stdoutRe = /csv|geojson|georss|gml|gmt|gpx|jml|kml|mapml|pdf|vdv/i; | ||
const vsiStdIn = '/vsistdin/'; | ||
const vsiStdOut = '/vsistdout/'; | ||
const vsiStdIn = "/vsistdin/"; | ||
const vsiStdOut = "/vsistdout/"; | ||
let uniq = Date.now(); | ||
@@ -22,3 +22,3 @@ class Ogr2ogr { | ||
this.inputPath = vsiStdIn; | ||
this.outputFormat = (_a = opts.format) !== null && _a !== void 0 ? _a : 'GeoJSON'; | ||
this.outputFormat = (_a = opts.format) !== null && _a !== void 0 ? _a : "GeoJSON"; | ||
this.customCommand = opts.command; | ||
@@ -36,3 +36,3 @@ this.customOptions = opts.options; | ||
} | ||
else if (typeof input === 'string') { | ||
else if (typeof input === "string") { | ||
this.inputPath = this.newInputPath(input); | ||
@@ -53,19 +53,19 @@ } | ||
newInputPath(p) { | ||
let path = ''; | ||
let ext = path_1.extname(p); | ||
let path = ""; | ||
let ext = (0, path_1.extname)(p); | ||
switch (ext) { | ||
case '.zip': | ||
case '.kmz': | ||
case '.shz': | ||
path = '/vsizip/'; | ||
case ".zip": | ||
case ".kmz": | ||
case ".shz": | ||
path = "/vsizip/"; | ||
break; | ||
case '.gz': | ||
path = '/vsigzip/'; | ||
case ".gz": | ||
path = "/vsigzip/"; | ||
break; | ||
case '.tar': | ||
path = '/vsitar/'; | ||
case ".tar": | ||
path = "/vsitar/"; | ||
break; | ||
} | ||
if (/^(http|ftp)/.test(p)) { | ||
path += '/vsicurl/' + p; | ||
path += "/vsicurl/" + p; | ||
return path; | ||
@@ -77,15 +77,15 @@ } | ||
newOutputPath(f) { | ||
let ext = '.' + f.toLowerCase(); | ||
let ext = "." + f.toLowerCase(); | ||
if (stdoutRe.test(this.outputFormat)) { | ||
return { path: vsiStdOut, ext }; | ||
} | ||
let path = path_1.join(os_1.tmpdir(), '/ogr_' + uniq++); | ||
let path = (0, path_1.join)((0, os_1.tmpdir)(), "/ogr_" + uniq++); | ||
switch (f.toLowerCase()) { | ||
case 'esri shapefile': | ||
path += '.shz'; | ||
ext = '.shz'; | ||
case "esri shapefile": | ||
path += ".shz"; | ||
ext = ".shz"; | ||
break; | ||
case 'mapinfo file': | ||
case 'flatgeobuf': | ||
ext = '.zip'; | ||
case "mapinfo file": | ||
case "flatgeobuf": | ||
ext = ".zip"; | ||
break; | ||
@@ -98,5 +98,5 @@ default: | ||
createZipStream(p) { | ||
let archive = archiver_1.default('zip'); | ||
let archive = (0, archiver_1.default)("zip"); | ||
archive.directory(p, false); | ||
archive.on('error', console.error); | ||
archive.on("error", console.error); | ||
archive.finalize(); | ||
@@ -107,7 +107,7 @@ return archive; | ||
var _a; | ||
let command = (_a = this.customCommand) !== null && _a !== void 0 ? _a : 'ogr2ogr'; | ||
let command = (_a = this.customCommand) !== null && _a !== void 0 ? _a : "ogr2ogr"; | ||
let args = [ | ||
'-f', | ||
"-f", | ||
this.outputFormat, | ||
'-skipfailures', | ||
"-skipfailures", | ||
this.customDestination || this.outputPath, | ||
@@ -120,3 +120,3 @@ this.inputPath, | ||
let { stdout, stderr } = await new Promise((res, rej) => { | ||
let proc = child_process_1.execFile(command, args, { env, timeout: this.timeout, maxBuffer: this.maxBuffer }, (err, stdout, stderr) => { | ||
let proc = (0, child_process_1.execFile)(command, args, { env, timeout: this.timeout, maxBuffer: this.maxBuffer }, (err, stdout, stderr) => { | ||
if (err) | ||
@@ -130,3 +130,3 @@ rej(err); | ||
let res = { | ||
cmd: command + args.join(' '), | ||
cmd: command + args.join(" "), | ||
text: stdout, | ||
@@ -145,7 +145,7 @@ details: stderr, | ||
if (!this.customDestination && this.outputPath !== vsiStdOut) { | ||
if (this.outputExt === '.zip') { | ||
if (this.outputExt === ".zip") { | ||
res.stream = this.createZipStream(this.outputPath); | ||
} | ||
else { | ||
res.stream = fs_1.createReadStream(this.outputPath); | ||
res.stream = (0, fs_1.createReadStream)(this.outputPath); | ||
} | ||
@@ -152,0 +152,0 @@ } |
@@ -1,2 +0,2 @@ | ||
import test from 'blue-tape' | ||
import test from "blue-tape" | ||
import { | ||
@@ -8,6 +8,6 @@ createReadStream, | ||
writeFileSync, | ||
} from 'fs' | ||
import ogr2ogr from './' | ||
} from "fs" | ||
import ogr2ogr from "./" | ||
let dir = __dirname + '/testdata/' | ||
let dir = __dirname + "/testdata/" | ||
@@ -27,7 +27,7 @@ test(async (t) => { | ||
{ | ||
url: 'https://gist.github.com/wavded/7376428/raw/971548233e441615a426794c766223488492ddb9/test.geojson', | ||
url: "https://gist.github.com/wavded/7376428/raw/971548233e441615a426794c766223488492ddb9/test.geojson", | ||
success: true, | ||
}, | ||
{ | ||
url: 'https://gist.github.com/wavded/7376428/raw/971548233e441615a426794c766223488492ddb9/test.georss', | ||
url: "https://gist.github.com/wavded/7376428/raw/971548233e441615a426794c766223488492ddb9/test.georss", | ||
success: true, | ||
@@ -37,37 +37,37 @@ }, | ||
// From format conversions. | ||
{file: 'sample.bad', success: false}, | ||
{file: 'sample.empty.zip', success: false}, | ||
{file: 'sample.000', success: true}, | ||
{file: 'sample.csv', success: true}, | ||
{file: 'sample.dbf', success: true}, | ||
{file: 'sample.dgn', success: true}, | ||
{file: 'sample.dxf', success: true}, | ||
{file: 'sample.gdb.zip', out: 'dxf', success: true}, | ||
{file: 'sample.geojson', success: true}, | ||
{file: 'sample.gml', success: true}, | ||
{file: 'sample.gmt', success: true}, | ||
{file: 'sample.gxt', success: true}, | ||
{file: 'sample.itf', success: true}, | ||
{file: 'sample.json', success: true}, | ||
{file: 'sample.jml', stream: true, success: true}, | ||
{file: 'sample.kml', success: true}, | ||
{file: 'sample.kmz', success: true}, | ||
{file: 'sample.cryllic.kml', success: true}, | ||
{file: 'sample.map.zip', success: true}, | ||
{file: 'sample.mapml', stream: true, success: true}, | ||
{file: 'sample.rss', success: true}, | ||
{file: 'sample.rti.zip', out: 'dxf', success: true}, | ||
{file: 'sample.shp', success: true}, | ||
{file: 'sample.shp.zip', success: true}, | ||
{file: 'sample.vdv', stream: true, success: true}, | ||
{file: "sample.bad", success: false}, | ||
{file: "sample.empty.zip", success: false}, | ||
{file: "sample.000", success: true}, | ||
{file: "sample.csv", success: true}, | ||
{file: "sample.dbf", success: true}, | ||
{file: "sample.dgn", success: true}, | ||
{file: "sample.dxf", success: true}, | ||
{file: "sample.gdb.zip", out: "dxf", success: true}, | ||
{file: "sample.geojson", success: true}, | ||
{file: "sample.gml", success: true}, | ||
{file: "sample.gmt", success: true}, | ||
{file: "sample.gxt", success: true}, | ||
{file: "sample.itf", success: true}, | ||
{file: "sample.json", success: true}, | ||
{file: "sample.jml", stream: true, success: true}, | ||
{file: "sample.kml", success: true}, | ||
{file: "sample.kmz", success: true}, | ||
{file: "sample.cryllic.kml", success: true}, | ||
{file: "sample.map.zip", success: true}, | ||
{file: "sample.mapml", stream: true, success: true}, | ||
{file: "sample.rss", success: true}, | ||
{file: "sample.rti.zip", out: "dxf", success: true}, | ||
{file: "sample.shp", success: true}, | ||
{file: "sample.shp.zip", success: true}, | ||
{file: "sample.vdv", stream: true, success: true}, | ||
// Using custom options. | ||
{ | ||
file: 'sample.no-shx.shp', | ||
opts: ['--config', 'SHAPE_RESTORE_SHX', 'TRUE'], | ||
file: "sample.no-shx.shp", | ||
opts: ["--config", "SHAPE_RESTORE_SHX", "TRUE"], | ||
success: true, | ||
}, | ||
{ | ||
file: 'sample.geom.csv', | ||
opts: ['-oo', 'GEOM_POSSIBLE_NAMES=the_geom'], | ||
file: "sample.geom.csv", | ||
opts: ["-oo", "GEOM_POSSIBLE_NAMES=the_geom"], | ||
success: true, | ||
@@ -77,41 +77,41 @@ }, | ||
// To format conversions. | ||
{file: 'sample.json', success: true, out: 'csv'}, | ||
{file: 'sample.json', success: true, out: 'dgn'}, | ||
{file: 'sample.json', success: true, out: 'dxf'}, | ||
{file: 'sample.json', success: true, out: 'esri shapefile'}, | ||
{file: 'sample.json', success: true, out: 'flatgeobuf'}, | ||
{file: 'sample.json', success: true, out: 'geoconcept'}, | ||
{file: 'sample.json', success: true, out: 'geojson'}, | ||
{file: 'sample.json', success: true, out: 'geojsonseq'}, | ||
{file: 'sample.json', success: true, out: 'georss'}, | ||
{file: 'sample.json', success: true, out: 'gml'}, | ||
{file: 'sample.json', success: true, out: 'gmt'}, | ||
{file: 'sample.json', success: true, out: 'gpkg'}, | ||
{file: 'sample.json', success: true, out: 'gpx'}, | ||
{file: 'sample.json', success: true, out: 'jml'}, | ||
{file: 'sample.json', success: true, out: 'kml'}, | ||
{file: 'sample.json', success: true, out: 'mapml'}, | ||
{file: 'sample.json', success: true, out: 'mapinfo file'}, | ||
{file: 'sample.json', success: true, out: 'ods'}, | ||
{file: 'sample.json', success: true, out: 'pdf'}, | ||
{file: 'sample.json', success: true, out: 'vdv'}, | ||
{file: 'sample.json', success: true, out: 'xlsx'}, | ||
{file: "sample.json", success: true, out: "csv"}, | ||
{file: "sample.json", success: true, out: "dgn"}, | ||
{file: "sample.json", success: true, out: "dxf"}, | ||
{file: "sample.json", success: true, out: "esri shapefile"}, | ||
{file: "sample.json", success: true, out: "flatgeobuf"}, | ||
{file: "sample.json", success: true, out: "geoconcept"}, | ||
{file: "sample.json", success: true, out: "geojson"}, | ||
{file: "sample.json", success: true, out: "geojsonseq"}, | ||
{file: "sample.json", success: true, out: "georss"}, | ||
{file: "sample.json", success: true, out: "gml"}, | ||
{file: "sample.json", success: true, out: "gmt"}, | ||
{file: "sample.json", success: true, out: "gpkg"}, | ||
{file: "sample.json", success: true, out: "gpx"}, | ||
{file: "sample.json", success: true, out: "jml"}, | ||
{file: "sample.json", success: true, out: "kml"}, | ||
{file: "sample.json", success: true, out: "mapml"}, | ||
{file: "sample.json", success: true, out: "mapinfo file"}, | ||
{file: "sample.json", success: true, out: "ods"}, | ||
{file: "sample.json", success: true, out: "pdf"}, | ||
{file: "sample.json", success: true, out: "vdv"}, | ||
{file: "sample.json", success: true, out: "xlsx"}, | ||
// Known supported stream conversions. | ||
{file: 'sample.csv', stream: true, success: false}, | ||
{file: 'sample.json', stream: true, success: true}, | ||
{file: 'sample.rss', stream: true, success: true}, | ||
{file: 'sample.gml', stream: true, success: true}, | ||
{file: 'sample.gmt', stream: true, success: true}, | ||
{file: 'sample.gpx', stream: true, success: true}, | ||
{file: 'sample.jml', stream: true, success: true}, | ||
{file: 'sample.kml', stream: true, success: true}, | ||
{file: 'sample.mapml', stream: true, success: true}, | ||
{file: 'sample.vdv', stream: true, success: true}, | ||
{file: "sample.csv", stream: true, success: false}, | ||
{file: "sample.json", stream: true, success: true}, | ||
{file: "sample.rss", stream: true, success: true}, | ||
{file: "sample.gml", stream: true, success: true}, | ||
{file: "sample.gmt", stream: true, success: true}, | ||
{file: "sample.gpx", stream: true, success: true}, | ||
{file: "sample.jml", stream: true, success: true}, | ||
{file: "sample.kml", stream: true, success: true}, | ||
{file: "sample.mapml", stream: true, success: true}, | ||
{file: "sample.vdv", stream: true, success: true}, | ||
// Custom destinations. (e.g. database) | ||
{ | ||
file: 'sample.json', | ||
file: "sample.json", | ||
success: true, | ||
dest: './testdata/output/custom.geojson', | ||
dest: dir + "output/custom.geojson", | ||
}, | ||
@@ -137,7 +137,7 @@ ] | ||
} else if (!tt.out) { | ||
t.equal(res.data && res.data.type, 'FeatureCollection', res.cmd) | ||
t.equal(res.data && res.data.type, "FeatureCollection", res.cmd) | ||
} else { | ||
t.ok(res.text || res.stream, res.cmd) | ||
let fn = dir + 'output/r_' + tt.out + res.extname | ||
let fn = dir + "output/r_" + tt.out + res.extname | ||
if (res.stream) { | ||
@@ -144,0 +144,0 @@ res.stream.pipe(createWriteStream(fn)) |
70
index.ts
@@ -1,7 +0,7 @@ | ||
import archiver from 'archiver' | ||
import {execFile} from 'child_process' | ||
import {createReadStream} from 'fs' | ||
import {tmpdir} from 'os' | ||
import {extname, join} from 'path' | ||
import {Readable, Stream} from 'stream' | ||
import archiver from "archiver" | ||
import {execFile} from "child_process" | ||
import {createReadStream} from "fs" | ||
import {tmpdir} from "os" | ||
import {extname, join} from "path" | ||
import {Readable, Stream} from "stream" | ||
@@ -33,4 +33,4 @@ type JSONLike = Record<string, unknown> | ||
const stdoutRe = /csv|geojson|georss|gml|gmt|gpx|jml|kml|mapml|pdf|vdv/i | ||
const vsiStdIn = '/vsistdin/' | ||
const vsiStdOut = '/vsistdout/' | ||
const vsiStdIn = "/vsistdin/" | ||
const vsiStdOut = "/vsistdout/" | ||
@@ -54,3 +54,3 @@ let uniq = Date.now() | ||
this.inputPath = vsiStdIn | ||
this.outputFormat = opts.format ?? 'GeoJSON' | ||
this.outputFormat = opts.format ?? "GeoJSON" | ||
this.customCommand = opts.command | ||
@@ -69,3 +69,3 @@ this.customOptions = opts.options | ||
this.inputStream = input | ||
} else if (typeof input === 'string') { | ||
} else if (typeof input === "string") { | ||
this.inputPath = this.newInputPath(input) | ||
@@ -91,16 +91,16 @@ } else { | ||
private newInputPath(p: string): string { | ||
let path = '' | ||
let path = "" | ||
let ext = extname(p) | ||
switch (ext) { | ||
case '.zip': | ||
case '.kmz': | ||
case '.shz': | ||
path = '/vsizip/' | ||
case ".zip": | ||
case ".kmz": | ||
case ".shz": | ||
path = "/vsizip/" | ||
break | ||
case '.gz': | ||
path = '/vsigzip/' | ||
case ".gz": | ||
path = "/vsigzip/" | ||
break | ||
case '.tar': | ||
path = '/vsitar/' | ||
case ".tar": | ||
path = "/vsitar/" | ||
break | ||
@@ -110,3 +110,3 @@ } | ||
if (/^(http|ftp)/.test(p)) { | ||
path += '/vsicurl/' + p | ||
path += "/vsicurl/" + p | ||
return path | ||
@@ -120,3 +120,3 @@ } | ||
private newOutputPath(f: string) { | ||
let ext = '.' + f.toLowerCase() | ||
let ext = "." + f.toLowerCase() | ||
@@ -127,12 +127,12 @@ if (stdoutRe.test(this.outputFormat)) { | ||
let path = join(tmpdir(), '/ogr_' + uniq++) | ||
let path = join(tmpdir(), "/ogr_" + uniq++) | ||
switch (f.toLowerCase()) { | ||
case 'esri shapefile': | ||
path += '.shz' | ||
ext = '.shz' | ||
case "esri shapefile": | ||
path += ".shz" | ||
ext = ".shz" | ||
break | ||
case 'mapinfo file': | ||
case 'flatgeobuf': | ||
ext = '.zip' | ||
case "mapinfo file": | ||
case "flatgeobuf": | ||
ext = ".zip" | ||
break | ||
@@ -147,5 +147,5 @@ default: | ||
private createZipStream(p: string) { | ||
let archive = archiver('zip') | ||
let archive = archiver("zip") | ||
archive.directory(p, false) | ||
archive.on('error', console.error) | ||
archive.on("error", console.error) | ||
archive.finalize() | ||
@@ -156,7 +156,7 @@ return archive | ||
private async run() { | ||
let command = this.customCommand ?? 'ogr2ogr' | ||
let command = this.customCommand ?? "ogr2ogr" | ||
let args = [ | ||
'-f', | ||
"-f", | ||
this.outputFormat, | ||
'-skipfailures', | ||
"-skipfailures", | ||
this.customDestination || this.outputPath, | ||
@@ -182,3 +182,3 @@ this.inputPath, | ||
let res: Result = { | ||
cmd: command + args.join(' '), | ||
cmd: command + args.join(" "), | ||
text: stdout, | ||
@@ -198,3 +198,3 @@ details: stderr, | ||
if (!this.customDestination && this.outputPath !== vsiStdOut) { | ||
if (this.outputExt === '.zip') { | ||
if (this.outputExt === ".zip") { | ||
res.stream = this.createZipStream(this.outputPath) | ||
@@ -201,0 +201,0 @@ } else { |
{ | ||
"name": "ogr2ogr", | ||
"version": "3.1.0", | ||
"version": "3.1.1", | ||
"description": "ogr2ogr wrapper w/ multiple format support", | ||
@@ -24,4 +24,4 @@ "keywords": [ | ||
"lint": "tsc --noEmit && eslint --ext ts .", | ||
"fmt": "prettier --write \"**/*.{html,js,json,ts,md}\"", | ||
"fmt-check": "prettier --check \"**/*.{html,js,json,ts,md}\"" | ||
"fmt": "prettier --write .", | ||
"fmt-check": "prettier --check ." | ||
}, | ||
@@ -36,6 +36,6 @@ "dependencies": { | ||
"@types/node": "^16.4.5", | ||
"@typescript-eslint/eslint-plugin": "^4.26.0", | ||
"@typescript-eslint/parser": "^4.26.0", | ||
"@typescript-eslint/eslint-plugin": "^5.9.0", | ||
"@typescript-eslint/parser": "^5.9.0", | ||
"blue-tape": "^1.0.0", | ||
"eslint": "^7.4.0", | ||
"eslint": "^8.6.0", | ||
"eslint-config-prettier": "^8.3.0", | ||
@@ -42,0 +42,0 @@ "nyc": "^15.1.0", |
@@ -96,4 +96,4 @@ ![Build Status](https://github.com/wavded/ogr2ogr/workflows/build/badge.svg?branch=master) [![NPM](https://img.shields.io/npm/v/ogr2ogr.svg)](https://npmjs.com/package/ogr2ogr) ![NPM Downloads](https://img.shields.io/npm/dt/ogr2ogr.svg) | ||
```javascript | ||
ogr2ogr('/home/.../path/to/spatial/file', { | ||
command: 'docker run -v /home/:/home --rm osgeo/gdal ogr2ogr', | ||
ogr2ogr("/home/.../path/to/spatial/file", { | ||
command: "docker run -v /home/:/home --rm osgeo/gdal ogr2ogr", | ||
}) | ||
@@ -105,4 +105,4 @@ ``` | ||
```javascript | ||
ogr2ogr('/path/to/file.shp', { | ||
options: ['--config', 'SHAPE_RESTORE_SHX', 'TRUE'], | ||
ogr2ogr("/path/to/file.shp", { | ||
options: ["--config", "SHAPE_RESTORE_SHX", "TRUE"], | ||
}) | ||
@@ -114,4 +114,4 @@ ``` | ||
```javascript | ||
ogr2ogr('/path/to/file.shp', { | ||
options: ['--config', 'CPL_DEBUG', 'TRUE'], | ||
ogr2ogr("/path/to/file.shp", { | ||
options: ["--config", "CPL_DEBUG", "TRUE"], | ||
}) | ||
@@ -123,4 +123,4 @@ ``` | ||
```javascript | ||
ogr2ogr('/path/to/file.csv', { | ||
options: ['-oo', 'GEOM_POSSIBLE_NAMES=the_geom'], | ||
ogr2ogr("/path/to/file.csv", { | ||
options: ["-oo", "GEOM_POSSIBLE_NAMES=the_geom"], | ||
}) | ||
@@ -132,4 +132,4 @@ ``` | ||
```javascript | ||
ogr2ogr('/path/to/file.shp', { | ||
options: ['-t_srs', 'EPSG:4326'], | ||
ogr2ogr("/path/to/file.shp", { | ||
options: ["-t_srs", "EPSG:4326"], | ||
}) | ||
@@ -136,0 +136,0 @@ ``` |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
32604
16