
Security News
Insecure Agents Podcast: Certified Patches, Supply Chain Security, and AI Agents
Socket CEO Feross Aboukhadijeh joins Insecure Agents to discuss CVE remediation and why supply chain attacks require a different security approach.
tinyduration
Advanced tools
A small (< 1kb minified + gzipped) javascript package to parse and serialize ISO-8601 durations. This package does only 2 things:
P1DT12H to { days: 1, hours: 12 })This lib has 0 dependencies.
npm install --save tinydurationyarn add tinydurationimport { parse, serialize } from 'tinyduration'
// Basic parsing
const durationObj = parse('P1Y2M3DT4H5M6S')
assert(durationObj, {
years: 1,
months: 2,
days: 3,
hours: 4,
minutes: 5,
seconds: 6,
})
// Serialization
assert(serialize(durationObj), 'P1Y2M3DT4H5M6S')
This library is written in TypeScript.
During publication of the package, the code is transpiled to javascript and put into the dist folder.
The tests can be found the src folder under *.test.ts, testing is done using Jest
Additional commands you'll need for development:
npm test to run all testsnpm run lint to run the linternpm run prettify to auto-fix the indenting issuesnpm run ci to run coverage and lintingnpx changeset to add a changesetnpx changeset version to adopt a changeset, prepping for releasenpx changeset publish to publish to NPM| Property | Type | Description |
|---|---|---|
| negative | boolean or undefined | Duration is positive if undefined |
| years | number or undefined | |
| months | number or undefined | |
| weeks | number or undefined | |
| days | number or undefined | |
| hours | number or undefined | |
| minutes | number or undefined | |
| seconds | number or undefined |
| Property | Type | Description |
|---|---|---|
| allowMultipleFractions | boolean or undefined | Defaults to true. |
parse accepts a string and returns a Duration object.
No attempt is made to change lower units into higher ones, e.g. to change 120 minutes into 2 hours.
Throws InvalidDurationError if an invalid duration string is supplied.
Throws MultipleFractionsError if an the duration string contains multiple fractions while disabled in the config.
According to the spec multiple fractions are not allowed. Currently this is not enforced and the allowMultipleFractions config parameter defaults to true.
import { parse } from 'tinyduration'
const duration = parse('P1W')
assert(duration, { weeks: 1 })
try {
parse('invalid-duration')
} catch (e) {
assert(e.message === 'Invalid duration')
}
serialize accepts a Duration object and returns a serialized duration according to ISO-8601.
If the duration is empty (i.e. all values are 0), PT0S is returned.
import * as Duration from 'tinyduration'
const durationStr = Duration.serialize({ weeks: 1 })
assert(durationStr, 'P1W')
const durationStr = Duration.serialize({})
assert(durationStr, 'PT0S')
MIT
FAQs
ISO-8601 duration parsing and serialization
We found that tinyduration demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

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.

Security News
Socket CEO Feross Aboukhadijeh joins Insecure Agents to discuss CVE remediation and why supply chain attacks require a different security approach.

Security News
Tailwind Labs laid off 75% of its engineering team after revenue dropped 80%, as LLMs redirect traffic away from documentation where developers discover paid products.

Security News
The planned feature introduces a review step before releases go live, following the Shai-Hulud attacks and a rocky migration off classic tokens that disrupted maintainer workflows.