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

@okta/odyssey-contribution-tooling

v1.57.0

Published

A centralized utility package that holds various tools to be used across Odyssey packages.

Readme

@okta/odyssey-contribution-tooling

A centralized utility package that holds various tools to be used across Odyssey packages.

Tools

🌐 Translation Services

The primary goal of this tool is to provide a function, getTranslationServices, that returns a suite of react-i18next utilities:

  • useTranslation: A strongly typed hook that is pre-bound to the given namespace. It provides autocompletion for translation keys and required placeholders.
  • TranslationProvider: A pre-configured provider component that sets up the i18n context. Each instance created by getTranslationServices is completely independent, allowing for multiple, independent translation contexts to be nested without conflict.
  • Trans: A component for rendering translated strings with support for interpolation and nesting React elements, while retaining strong typing for the translation key and placeholder values.
  • i18n: The i18next instance itself, pre-configured with your resources and default language.

These utilities are automatically and strongly typed, giving the consumer full autocompletion and compile-time safety for translation keys and their required placeholders based on their own resource files.

This tool is not meant to be configured manually within consuming packages. Instead, a generation script uses it to produce a standardized, pre-configured i18n.generated/i18n.ts file. See the odyssey-cli package for more information on the generation process.

Below is an example of the auto-generated file produced by this tooling:

import {
  getTranslationServices,
  TypedTFunction,
} from "@okta/odyssey-contribution-tooling";

import { resources } from "./i18n.resources.js";
import {
  defaultLanguageCode,
  i18nResourceType,
  namespace,
} from "./i18n.types.js";

export type * from "@okta/odyssey-contribution-tooling";

export const { i18n, Trans, TranslationProvider, useTranslation } =
  getTranslationServices({
    defaultLanguageCode,
    namespace,
    resources,
  });

export const translate = i18n.t.bind(i18n) as TypedTFunction<i18nResourceType>;

📌 Dependency Notes

[email protected]

The react-i18next package is intentionally pinned to version 15.4.1. Version 15.5.0 and later require TypeScript v5, which would be a breaking change for consuming packages that have not yet upgraded from TypeScript v4. This pin ensures continued compatibility.