Security News
New Python Packaging Proposal Aims to Solve Phantom Dependency Problem with SBOMs
PEP 770 proposes adding SBOM support to Python packages to improve transparency and catch hidden non-Python dependencies that security tools oft miss.
Streaming parser from OSM XML to OSM JSON objects
Implements a Node Transport Stream. Takes a readable stream of OSM XML and outputs a stream of objects compatible with Overpass OSM JSON. Also reads OsmChange XML and outputs the same format but with an additional property action
which is one of create
, modify
, delete
. Uses sax-js to work in both node and the browser.
NB: The name of this module is a bit of a misnomer - it outputs objects, not JSON.
npm install osm2json
var fs = require('fs')
var Osm2Json = require('../lib/osm2json')
var rs = fs.createReadableStream(__dirname + './test.osm')
rs.pipe(new Osm2Json()).pipe(process.stdout)
// node
{
type: 'node',
id: 1,
version: 0,
timestamp: '2013-09-05T19:38:11.187Z',
uid: 1,
user: 'gregor',
lat: 0,
lon: 0,
tags: { null: 'island' }
}
// way
{
type: 'way',
id: 3,
version: 3,
timestamp: '2013-09-05T19:38:11Z',
changeset: 49,
nodes: [ 19, 20, 21, 22, 26, 27 ],
tags: { name: 'York St' }
}
// relation
{
type: 'relation',
id: 1,
members: [
{
type: 'relation',
ref: 1745069,
role: 'outer'
},
{
type: 'relation',
ref: 172789
}
],
tags: {
from: 'Konrad-Adenauer-Platz',
name: 'VRS 636'
}
}
var through = require('through2')
var fs = require('fs')
var path = require('path')
var Osm2Json = require('../lib/osm2json')
var rs = fs.createReadStream(path.join(__dirname, '../test/test.osm'))
var jsonStream = through.obj(write, end)
jsonStream.push('[')
var start = true
rs.pipe(new Osm2Json()).pipe(jsonStream).pipe(process.stdout)
function write (row, enc, next) {
if (!start) {
this.push(', ')
} else {
start = false
}
next(null, JSON.stringify(row, null, 2))
}
function end (next) {
this.push(']\n')
}
var Osm2Json = require('osm2json')
Create a transform stream with:
opts.coerceIds
- coerce id-type fields (id, uid, version, changeset, ref
) to Number
(default true
) - useful for osm-p2p-db where ids can be strings.opts.bounds
- Also parse bounds (default true
)opts.types
- An array of element types you are interested in, e.g. opts.types = ['node']
(default ['node', 'way', 'relation', 'changeset']
)opts.strict
- Be a jerk about XML (default false
). In strict mode will throw an error if:
osm
, osmChange
, diffResult
create, modify, delete
) appears when the root is not osmChange
create, modify, delete, node, way, relation, changeset, bounds, nd, tag, member
Any attribute that is not a valid OSM XML attribute will be ignored (see WHITELISTS
). tag
, member
, or nd
elements without the required attributes will throw an error. The readable side of the stream is in objectMode
.
Parse str
and return the result. Will throw any error.
PRs welcome. Please follow JS Standard Style. Right now this could do with some tests. If you are feeling ambitious, this could be sped up by using node-expat on node. The interface is similar to sax-js and it should be possible to wrap this to use sax-js on the browser and node-expat on the server using the browserify browser
field
MIT (c) 2016, Digital Democracy.
[2.0.0] - 2016-08-22
role
attribute on the member
element in XML is empty, no role
prop will be set on member of result.FAQs
Converts an OSM XML file to OSM JSON objects as a transform stream
The npm package osm2json receives a total of 1 weekly downloads. As such, osm2json popularity was classified as not popular.
We found that osm2json demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PEP 770 proposes adding SBOM support to Python packages to improve transparency and catch hidden non-Python dependencies that security tools oft miss.
Security News
Socket CEO Feross Aboukhadijeh discusses open source security challenges, including zero-day attacks and supply chain risks, on the Cyber Security Council podcast.
Security News
Research
Socket researchers uncover how threat actors weaponize Out-of-Band Application Security Testing (OAST) techniques across the npm, PyPI, and RubyGems ecosystems to exfiltrate sensitive data.