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

vitest4dynalite

v0.1.0

Published

Vitest-first Dynalite test integration with Jest-Dynalite parity goals

Readme

vitest4dynalite

Vitest-first Dynalite integration with parity goals for jest-dynalite.

What this package gives you

  • Per-worker Dynalite instance by default for parallel test isolation.
  • Config-file driven table creation and seed data.
  • Reset strategies for balancing speed vs isolation.
  • One-line Vitest config helper (withDynalite) as the default DX path.
  • Advanced manual lifecycle helpers and a withDb side-effect helper.
  • Optional MSW integration behind config.

Install

pnpm add -D vitest4dynalite vitest
pnpm add @aws-sdk/client-dynamodb

Optional:

pnpm add -D msw
pnpm add aws-sdk

Equivalent commands:

npm i -D vitest4dynalite vitest
npm i @aws-sdk/client-dynamodb
npm i -D msw
npm i aws-sdk
yarn add -D vitest4dynalite vitest
yarn add @aws-sdk/client-dynamodb
yarn add -D msw
yarn add aws-sdk

1) Quickstart (recommended)

Create vitest-dynalite.config.js:

/** @type {import('vitest4dynalite').DynaliteConfigFile} */
export default {
  tables: [
    {
      TableName: "users",
      KeySchema: [{ AttributeName: "id", KeyType: "HASH" }],
      AttributeDefinitions: [{ AttributeName: "id", AttributeType: "S" }],
      ProvisionedThroughput: { ReadCapacityUnits: 1, WriteCapacityUnits: 1 },
      data: [{ id: "seed-user-1" }]
    }
  ]
};

Update vitest.config.ts:

import { defineConfig } from "vitest/config";
import { withDynalite } from "vitest4dynalite";

export default withDynalite(
  defineConfig({
    test: {
      globals: true
    }
  }),
  {
    resetStrategy: "balanced",
    resetTiming: "afterEach"
  }
);

Use in tests (AWS SDK v3):

import { DynamoDBClient } from "@aws-sdk/client-dynamodb";

const client = new DynamoDBClient({
  endpoint: process.env.MOCK_DYNAMODB_ENDPOINT,
  region: "local",
  credentials: { accessKeyId: "mock", secretAccessKey: "mock" }
});

Use in tests (AWS SDK v2):

import AWS from "aws-sdk";

const dynamodb = new AWS.DynamoDB({
  ...(process.env.MOCK_DYNAMODB_ENDPOINT
    ? {
        endpoint: process.env.MOCK_DYNAMODB_ENDPOINT,
        sslEnabled: false,
        region: "local"
      }
    : {})
});

For AWS SDK v3 clients, call client.destroy() in afterAll to help fast teardown in large suites.

2) Advanced Manual Lifecycle

import {
  setup,
  startDb,
  stopDb,
  createTables,
  deleteTables
} from "vitest4dynalite";

setup(process.cwd());

beforeAll(async () => {
  await startDb();
  await createTables();
});

afterAll(async () => {
  await deleteTables();
  await stopDb();
});

3) withDb Side-Effect Helper

Add to a suite that should self-manage lifecycle:

import "vitest4dynalite/withDb";

Optional MSW Integration

Set in withDynalite(..., options):

{
  msw: {
    enabled: true,
    handlersModule: "./test/msw-handlers.ts",
    onUnhandledRequest: "warn"
  }
}

If enabled, MSW is loaded lazily and will throw a clear error when msw is not installed.

Configuration Reference

vitest-dynalite.config.js exports:

interface DynaliteConfigFile {
  tables: DynaliteConfigTable[] | (() => DynaliteConfigTable[] | Promise<DynaliteConfigTable[]>);
  basePort?: number;
  region?: string;
  resetTiming?: "afterEach" | "afterFile";
  resetStrategy?: "balanced" | "strict" | "fast";
  msw?: {
    enabled?: boolean;
    handlersModule?: string;
    onUnhandledRequest?: "bypass" | "warn" | "error";
  };
}

Notes

  • MOCK_DYNAMODB_ENDPOINT is set automatically.
  • Default resetTiming is afterEach (override with resetTiming: "afterFile" if needed).
  • resetStrategy: "strict" does delete+recreate.
  • resetStrategy: "balanced" clears and reseeds.
  • resetStrategy: "fast" skips automatic reset.

Publishing

Before first publish, verify package metadata in package.json:

  • name
  • version
  • license
  • repository
  • homepage
  • bugs

Release flow:

pnpm install
pnpm check
pnpm test
pnpm build
pnpm publish --access public --provenance

The prepublishOnly script already enforces check, test, and build during publish.