New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

pidf-lo

Package Overview
Dependencies
Maintainers
1
Versions
31
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pidf-lo

This library should simplify handling PIDF-LO GEOPRIV documents as described in https://tools.ietf.org/html/rfc5491.

latest
Source
npmnpm
Version
1.3.0
Version published
Weekly downloads
6
-40%
Maintainers
1
Weekly downloads
 
Created
Source

pidf-lo - PIDF-LO and GEOPRIV handling

This library should simplify handling PIDF-LO GEOPRIV documents as described in https://tools.ietf.org/html/rfc5491.

This README currently only describes simple usage of this library. More elaborate implementation examples will be added by time.

Important Notices

This implemenentation only covers a small portion of the PIDF-LO specification documents and is (by far) not complete. Pull requests are therefore highly honored.

This library requires @xmldom/xmldom as a peer-dependency only in node.js environments! JavaScript browser environments always have a DOM implementation on board, therefore @xmldom/xmldom is not needed there.

Installation

Requires node.js and npm.

npm install pidf-lo

Simplified Usage (WGS84 locations)

PIDF-LO creation

import { 
  LocationMethod, 
  PidfLo, 
  XMLCompat,

  getNodeImpl,
  getWebImpl,
} from 'pidf-lo';

// if xmldom interface is available (e.g. on web browsers)
XMLCompat.initialize(getNodeImpl());
// if xmldom interface is NOT available (e.g. on node environments)
// also don't forget to install required peer dependency @xmldom/xmldom
XMLCompat.initialize(getWebImpl());

const pidf = PidfLo.fromSimpleLocation({
  latitude: 48.123,
  longitude: 14.456,
  radius: 24,
  method: LocationMethod.GPS,
});

if (!pidf)
  throw 'Something is wrong with this location';

const xmlObj = pidf.toXML();
console.log(XMLCompat.toXMLString(xmlObj));

PIDF-LO parsing

import { 
  PidfLo, 
  XMLCompat,

  getNodeImpl,
  getWebImpl,
} from 'pidf-lo';

// if xmldom interface is available (e.g. on web browsers)
XMLCompat.initialize(getNodeImpl());
// if xmldom interface is NOT available (e.g. on node environments)
// also don't forget to install required peer dependency @xmldom/xmldom
XMLCompat.initialize(getWebImpl());

const parsed = PidfLo.fromXML('<xml...>');

if (!parsed || !parsed.simple)
  throw 'Something is wrong with this location';

const simpleLoc = parsed.simple;
console.log(`${simpleLoc.latitude} ${simpleLoc.longitude}`);

Usage (Civic Addresses)

PIDF-LO creation

import { 
  LocationMethod, 
  PidfLo, 

  getNodeImpl,
  getWebImpl,
} from 'pidf-lo';

// if xmldom interface is available (e.g. on web browsers)
XMLCompat.initialize(getNodeImpl());
// if xmldom interface is NOT available (e.g. on node environments)
// also don't forget to install required peer dependency @xmldom/xmldom
XMLCompat.initialize(getWebImpl());

const pidf = PidfLo.fromSimpleLocation({
  civic: {
    country: 'AT',
    A1: 'Upper Austria',
    A4: 'Schärding',
    FLR: '5',
    PC: '4780',
    NAM: 'Hospital',
  },
  method: LocationMethod['AP-802.11'],
}, 'lkh-schaerding.at');

if (!pidf)
  throw 'Something is wrong with this location';

const xmlObj = pidf.toXML();
console.log(XMLCompat.toXMLString(xmlObj));

PIDF-LO parsing

import { 
  PidfLo,
  
  getNodeImpl,
  getWebImpl,
} from 'pidf-lo';

// if xmldom interface is available (e.g. on web browsers)
XMLCompat.initialize(getNodeImpl());
// if xmldom interface is NOT available (e.g. on node environments)
// also don't forget to install required peer dependency @xmldom/xmldom
XMLCompat.initialize(getWebImpl());

const parsed = PidfLo.fromXML('<xml...>');

if (!parsed || !parsed.simple || !parsed.simple.civic)
  throw 'Something is wrong with this location';

const simpleCivic = parsed.simple.civic;
console.log(`${simpleCivic.country} ${simpleCivic.A1}`);

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

License

Distributed under the MIT License. See LICENSE for more information.

FAQs

Package last updated on 04 Apr 2024

Did you know?

Socket

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.

Install

Related posts