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

temporal-spec

v1.0.0

Published

<!-- Links here are NOT rewritten on publish. Any link to another file in this repo must be an absolute GitHub URL rooted at: https://github.com/fullcalendar/temporal-polyfill/blob/main/ (use /tree/main/ instead of /blob/main/ when linking a dir

Readme

temporal-spec

TypeScript type definitions for Temporal, the successor to the JavaScript Date object.

This package ships only type declarations — no runtime code. It describes the shape of the Temporal API (plus the Temporal-related additions to Intl and Date) so that any Temporal implementation, polyfill, or application can share a single, accurate set of types.

Table of Contents

Why This Exists

Temporal is a Stage 4 TC39 proposal that, until recently, no version of TypeScript shipped types for. Implementations each had to carry their own copy of the declarations, and they tended to drift apart.

temporal-spec centralizes those declarations into a standalone, dependency-free package. It's the type layer behind temporal-polyfill, and it's published separately so other Temporal implementations can reuse the exact same types.

Installation

npm install temporal-spec

Because it contains nothing but .d.ts files, it's a devDependency for most consumers.

Entry Points

There are two ways to pull in the types, depending on whether you want Temporal to be a global.

Namespaced (no global pollution)

Import the Temporal (and Intl) namespaces explicitly. This has no side effects — it does not touch the global TypeScript scope, so it's the right choice for libraries:

import type { Temporal } from 'temporal-spec'

function format(zdt: Temporal.ZonedDateTime): string {
  return zdt.toString()
}

Global

Import for its side effects to augment the global scope, making Temporal available everywhere without an explicit import (mirrors how the real API will behave once shipped):

import 'temporal-spec/global'

function format(zdt: Temporal.ZonedDateTime): string {
  return zdt.toString()
}

What's Included

Both entry points cover the full surface of the proposal:

  • The Temporal namespace — Instant, ZonedDateTime, PlainDate, PlainTime, PlainDateTime, PlainYearMonth, PlainMonthDay, Duration, Now, and all of their supporting *Like / options types.
  • Intl.DateTimeFormat augmentations, so format, formatToParts, formatRange, and formatRangeToParts accept Temporal objects.
  • Date.prototype.toTemporalInstant (exposed as a standalone toTemporalInstant function from the namespaced entry point), for bridging legacy Date values into Temporal.

TypeScript Version Notes

TypeScript 6.0+ bundles Temporal types in its built-in lib files (esnext.temporal), so if you're on a recent TypeScript and only need the global types, you may not need this package at all — just enable the lib:

{
  "compilerOptions": {
+   "lib": ["esnext"]
  }
}

Or with more granularity:

{
  "compilerOptions": {
+   "lib": ["esnext.temporal", "esnext.intl", "esnext.date"]
  }
}

temporal-spec remains useful when you:

  • are on TypeScript < 6.0, which has no built-in Temporal types
  • want the namespaced (non-global) form, which lib does not provide
  • are authoring a polyfill and want types decoupled from the consumer's TypeScript version

For Polyfill Authors

If you're building your own Temporal implementation, temporal-spec lets you type-check your output against the same declarations everyone else uses, instead of vendoring a copy that slowly drifts from the spec. Depend on it, point your public types at the Temporal namespace, and stay in sync as the proposal evolves.

Provenance & License

These declarations are derived from the TypeScript project's lib files (esnext.temporal.d.ts, esnext.intl.d.ts, and esnext.date.d.ts), which are Copyright (c) Microsoft Corporation.

Licensed under the Apache License, Version 2.0.