Skip to content

A simple local DynamoDB API. Without the need for Docker.

License

Notifications You must be signed in to change notification settings

stacksjs/dynamodb-tooling

Repository files navigation

Social Card of this repo

DynamoDB Goodies

npm version GitHub Actions Commitizen friendly

Features

  • Zero-config DynamoDB setup
  • Local development with SSL support (wip)
  • DynamoDB Toolbox integration

Install

bun install -d dynamodb-tooling

Get Started

Getting started with the DynamoDB Tooling is easy. Just import dynamoDb and get going:

import { dynamoDb } from 'dynamodb-tooling'

interface LaunchOptions {
  port: number
  dbPath?: string
  additionalArgs?: string[]
  verbose?: boolean
  detached?: boolean
  javaOpts?: string
}

const childProcess = await dynamoDb.launch(options)
dynamoDb.stopChild(childProcess)
dynamoDb.stop(options.port)
dynamoDb.relaunch()

dynamoDb.configureInstaller()

await dynamoDb.install()

Example

import { dynamoDb } from 'dynamodb-tooling'

const port = 8000
// if you want to share with Bun Shell
// eslint-disable-next-line antfu/no-top-level-await
await dynamoDb.launch({
  port,
  additionalArgs: ['-sharedDb'],
})
// do your tests / trigger your logic
dynamoDb.stop(port)

Alternatively, you can use it as a detached server:

const port = 8000
const child = await dynamoDb.launch({ port })
// trigger your logic
await dynamoDb.stopChild(child)

Configuration

The client can be configured using a dynamodb.config.ts (or dynamodb.config.js) file and it will be automatically loaded.

// dynamodb.config.ts (or dynamodb.config.js)
export default {
  installPath: path.join(os.tmpdir(), 'dynamodb-local'),
  downloadUrl: 'https://d1ni2b6xgvw0s0.cloudfront.net/v2.x/dynamodb_local_latest.tar.gz', // the official download URL
}

Testing

bun test

Changelog

Please see our releases page for more information on what has changed recently.

Contributing

Please review the Contributing Guide for details.

Community

For help, discussion about best practices, or any other conversation that would benefit from being searchable:

Discussions on GitHub

For casual chit-chat with others using this package:

Join the Stacks Discord Server

Postcardware

Stacks OSS will always stay open-sourced, and we will always love to receive postcards from wherever Stacks is used! And we also publish them on our website. Thank you, Spatie.

Our address: Stacks.js, 12665 Village Ln #2306, Playa Vista, CA 90094, United States 🌎

Sponsors

We would like to extend our thanks to the following sponsors for funding Stacks development. If you are interested in becoming a sponsor, please reach out to us.

Credits

License

The MIT License (MIT). Please see LICENSE for more information.

Made with 💙