Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

abagnale

Package Overview
Dependencies
Maintainers
4
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

abagnale

Forge unique IDs for Refract data structure elements

  • 1.1.3
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
10
increased by42.86%
Maintainers
4
Weekly downloads
 
Created
Source

Abagnale

Build Status Coverage Status NPM version License

A library to forge IDs for elements in Refract data structures. Data structures can come from MSON or other input sources.

Abagnale attempts to give all elements within the structure a unique ID, even for elements it does not know. It accomplishes this by crawling the element contents and looking for structures that look like other elements.

Along with unique IDs it also attempts to give each element a unique URI fragment that is safe to use in a URL and based on the element's unique ID. This can be found in a link relation called uri-fragment.

See the test output directory for examples of generated IDs and URI fragments.

It is named after Frank Abagnale, one of the most notorious tricksters ever known. He forged several fake IDs, a pilots license with which he flew over a million miles, faked being a college professor, worked as a fake chief resident pediatrician, and worked in the Louisiana State Attorney General's office with a fake degree from Harvard before being caught.

Installation & Usage

This project is available via npm:

npm install abagnale

There are two ways to use the module: either via module-level methods or by instantiating a class instance.

import abagnale, {Abagnale} from 'abagnale';

// Input should be an array of refract elements
const input = [/* ... */];

// Module method
abagnale.forge(input, {separator: '.'});

// Class method
let instance = new Abagnale({separator: '.'});
instance.forge(input);

Available Options

The following options can be set:

NameDescriptionDefault
separatorCharacter to denote path segments.
uriSeparatorCharacter to denote path segments in URI fragments/

Notable Missing Features

The following list of features in no particular order are known to be missing or cause issues. Please feel free to open a pull request with new features and fixes based on this list! wink wink nudge nudge :beers:

  • Elements in meta are not yet given IDs
  • Elements in attributes are not yet given IDs

Reference

abagnale.Abagnale([options])

Create a new instance of the Abagnale class, which can be used to forge IDs for refract elements.

import {Abagnale} from 'abagnale';

const instance = new Abagnale({separator: '.'});

// Now you can use it!
abagnale.forge([/* input array of elements */]);

// It is also possible to clear the element id cache, essentially resetting
// the instance. After doing this, the instance will generate IDs that have
// already been generated, which can be useful when processing a new unrelated
// document.
abagnale.cache = {};

abagnale.forge(structures, options)

This is a module-level shortcut that instantiates an Abagnale class with options and then calls forge(structures) on it. The structures are modified in-place and returned.

import abagnale from 'abagnale';

abagnale.forge([/* input array of elements */], {separator: '.'});

License

Copyright © 2016 Apiary, Inc. MIT licensed.

FAQs

Package last updated on 17 Mar 2017

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc