id-core
v1.0.0-alpha1
Published
iDEditor core OSM data types and graph https://github.com/openstreetmap/iD/blob/master/ARCHITECTURE.md#core
Downloads
18
Maintainers
Readme
iD-core - core data types from iDEditor
ALPHA: see TODO
Overview
This packages up iD Editor core OSM data types and Graph as an npm package to require()
in your own projects. Included:
Usage
Needs to be instantiated with presets **subject to change see TODO.
npm install id-core
var presets = {
categories: {},
defaults: {},
fields: {},
presets: {}
};
var iDCore = require('id-core');
var myNode = new iDCore.Node();
Why
According to https://github.com/openstreetmap/iD/blob/master/ARCHITECTURE.md#core
[iD] eventually aims to be a reusable, modular library to kickstart other JavaScript-based tools for OpenStreetMap.
The OSM data model is complex and hard to implement. iD is not published on npm and importing the whole iD project is excessive for a JavaScript based tool for OpenStreetMap. At Digital Democracy we are building tools on top of OSM, and borrowing from iD gives us a head start.
How
iD does not use a commonJS module structure, so it's not as simple as require
ing what is needed. We use Smash to concatenate just what is needed from d3 and iD editor to make things work. To rebuild from iD source files:
make clean && make
Tests
npm install
npm test
Uses tests directly from iD to test exported objects.
TODO
iD-core
needs to be instantiated with presets, since the core types depend on them being set. We currently export the uninstantiated object though, which is needed for tests to work, but that means we have no access to the instantiated presets object.- Needs documentation beyond https://github.com/openstreetmap/iD/blob/master/ARCHITECTURE.md#core
iD.locale
has no tests yet. It is adapted from iD/js/lib/locale.js which polutes the global namespace, which we don't want. We can writed our own or wait for iD/#890.
License
iD-core is available under the WTFPL, though obviously, if you want to dual-license any contributions that's cool. It includes d3js, which BSD-licensed.