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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@wmfs/tymly-data-types

v1.6.0

Published

A library of data types often found in digital services.

Readme

tymly-data-types

A work-in-progress library of data types often found in digital services.

Install

$ npm install @wmfs/tymly-data-types --save

Reference

The full list of 31 data-types currently defined by tymly-data-types is shown below.

  • The chances are you'll never need to use all these in any one scenario (that's where domains and categories can help narrow things down).

| Data Item Name | Title | Category | Domain(s) | Description | | -------------- | ----------- | -------- | --------- | ----------- | | address | Address | text | location | A string denoting an address which could be used to send a letter. | | appointmentTime | Appointment time | dateTime | general | A date and time, often originally defined for a point in the future, to express when a particular event should occur. | | boolean | Boolean | choice | general | A general boolean value of true or false. | | choice | Choice | choice | general | Use when a value should be taken from a known set, but no other data type is appropriate. | | date | Date | dateTime | general | General-purpose type for expressing a particular date (without a time component). | | dateOfBirth | Date of birth | dateTime | people | The date (no time portion) for expressing the date a person was born. | | dateTime | Date/time | dateTime | general | General-purpose type for expressing a date and time. | | email | Email | text | general, computing, person | Used to convey an email address. | | ethnicity | Ethnicity | choice | people | Used to express the ethnicity of a person. | | eventTime | Event time | dateTime | general | A date and time relating to when a particular event occurred. | | frsCallsign | Callsign | text | fire | A unique code to identify a vehicle, officer or other asset. | | fsecCode | FSEC code | choice | fire | A code to help categorise a premise (as defined by Home Office). | | gender | Gender | choice | people | For describing a person's gender. | | hostname | Hostname | text | computing | Used to convey an internet host name (RFC 5322). | | idnHostname | IDN Hostname | text | computing | Used to convey an internationalized host name (RFC 5890). | | integer | Integer | number | general | General-purpose type for expressing an integer value. | | ipv4 | IPv4 | text | computing | Used to convey an IPv4 address. | | ipv6 | IPv6 | text | computing | Used to convey an IPv6 address. | | latLong | Latitude/Longitude | number | location | A pair of numbers denoting a point on the Earth's surface. | | name | Person's name | text | people | A data-type for expressing a person's name. | | notes | Notes | text | general | A data-item for expressing additional free-form notes often to provide deeper context for other data. | | text | Text | text | general | General-purpose type for expressing textual data (a mixture of letters, numbers and symbols). | | time | Time | dateTime | general | General-purpose type for expressing a time of day (without being related to any particular date). | | title | Title | choice | people | Titles used to address people with (Miss, Mr. etc.) | | uprn | UPRN | number | location, fire | Unique Property Reference Number as issued by Ordnance Survey as part of their gazetteer products. | | uri | URI | text | general, computing | A universal resource identifier (URI) according to RFC3986. | | usrn | USRN | number | location, fire | Unique Street Reference Number as issued by Ordnance Survey as part of their gazetteer products. | | yesNo | Yes/No | choice | general | A data type to express a Yes/No response. | | yesNoNa | Yes/No/Not Applicable | choice | general | A data type to express a 'Yes', 'No' or 'Not applicable' response. | | yesNoOther | Yes/No/Other | choice | general | A data type to express a 'Yes', 'No' or 'Other' response. | | yesNoUnknown | Yes/No/Unknown | choice | general | A data type to express a 'Yes', 'No' or 'Unknown' response. |

Domains

Data items are grouped into specialist domains, this helps narrow lists of data-items to just those suitable to the business domain(s) being addressed:

  • A single data-type can feature in multiple domains.
  • Note the general domain is considered the "default". Without any explicit configuration (i.e. no specialist domains are provided via options), the various methods in the tymly-data-types API will return data items to just those within the general domain.

| Domain Name | Title | Description | | ----------- | ----------- | ----------- | | computing | Computing | Specialist data-types specific to computing. | | fire | Fire Service | Data-types that are often used in the Fire and Rescue sector. | | general | General | A set of general-purpose data types that can be used as a fallback if nothing more specific is available via other domains. | | location | Location | Types often found when dealing with geo-spatial data. | | people | People | Commonplace data-types relating to people (name, date of birth etc.) |

Categories

As well as being grouped into one-or-more problem domains, each data-type is also assigned to a more functional category:

| Category Name | Title | Description | | ------------- | ----------- | ----------- | | choice | Choice | Data items that relate to a finite, known set of values. | | dateTime | Date/time | Data items that relate to moments-in-time. | | number | Number | Data items that relate to a numeric value. | | ref | Reference | Data items whose value can relate to another entity | | text | Text | Data items that can contain a mixture of letters, numbers and symbols. |

API

getDomains(options)

Use the getDomains() method to get an array of available domains.

Options

Supply options as an object with the following keys (note all of this is optional):

| Key | Description | | --- | ----------- | | filterString | If provided will help filter domains to just those matching the supplied string. | | sort | Controls the order of that the domains will be returned. A string of either seq (default) or name. |

getCategories(options)

Use the getCategories() method to grab a list of categories.

Options

Supply options as an object with the following keys (note all of this is optional):

| Key | Description | | --- | ----------- | | filterString | If provided will help filter categories to just those matching the supplied string. | | sort | Controls the order of that the categories will be returned. A string of either seq (default) or name. | | domainRestriction| An array of strings denoting zero-or-more domain names. Only categories with one or more data-items in any of these domains will be returned. If no domainRestriction array is provided, then any categories used by data-items in just the general domain will be returned. |

getDataTypes(options)

The main event, get a list of data-items as restricted by an object of optional options:

| Key | Description | | ------ | ----------- | | filterString | If provided will help filter data-items to just those matching the supplied string. | | domainRestriction | Only data-types belonging to any of the domains provided will be returned. Use just as described in the getCategories() method. If omitted, will be restricted to data-types in the general domain.| | category | An optional string. Only data-types belonging to the supplied category name will be returned. | | sort | Controls the order of that the data items will be returned. A string of either seq (default) or name. |

  • This method returns an array of zero-or-more dataType objects. Take a look here to see the type of thing returned.

getDataTypeByName(dataTypeName)

Returns the specified data type.

getDataTypeNames()

Returns an array of data-type names.

getCategoryDefaultDataTypeNames()

Returns a key/value object where key is the name of a category and value is the name of a dataType considered the "default" for that category.

{
  "text": "text",
  "number": "integer",
  "dateTime": "dateTime",
  "choice": "choice"
}

getDataItemsByCategory(options)

Just like getDataTypes() but returns a key/value object where key is a category name and value is the associated array of data items.

Testing

$ npm test

Todo

  • Make into an online database! :smiley:
  • Modules (having everything in one big JSON file is a bit wrong).
  • Introduce versioning solution
  • Validation of domains, categories and data-types.
  • Especially integrity checks (data items belong to valid domains/categories), JSON Schema based?

License

MIT