npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

abagnale

v1.1.3

Published

Forge unique IDs for Refract data structure elements

Downloads

14

Readme

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:

Name | Description | Default -------------- | -------------------------------------------------- | ------- separator | Character to denote path segments | . uriSeparator | Character 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.