Releases: typicode/lowdb
v7.0.0
π Simplified syntax with db.update
, new adapter for more file format, consistent presets, automatic write error retry, and a TS error fix!
What's New
- Simplified Syntax: Introducing
db.update
for easier updates and writes. - Flexible Adapters: Added
DataFile
adapters for supporting various formats likeYAML
,JSON5
, ... and adding features like encryption with minimal code. - Automatic Retry: Resolves write errors, especially for Windows users.
Breaking Changes
- Node 16 Dropped: discontinued support for Node 16.
- Consistent Naming: Renamed presets for consistency:
JSONPreset
toJSONFilePreset
JSONSyncPreset
toJSONFileSyncPreset
.
Code Examples
If you were using the JSONPreset
, please rename it
- import { JSONPreset } from 'lowdb/node'
+ import { JSONFilePreset } from 'lowdb/node'
Enjoy the simplified syntax with db.update
- db.data.posts.push(newPost)
- await db.write()
+ await db.update(({ posts }) => posts.push(newPost))
Easily support other formats:
const yamlAdapter = new DataFile('db.yaml', {
parse: YAML.parse,
stringify: YAML.stringify
})
const db = new Low(yamlAdapter, { posts: [] })
Sponsors
Special thanks to lowdb's current sponsor: Mockend.
Your support is essential, you can sponsor this project on GitHub Sponsors β€οΈ
v6.1.1
v6.1.0
New presets
Before
import { Low } from 'lowdb'
import { JSONFile } from 'lowdb/node'
const adapter = new JSONFile(file)
const defaultData = { posts: [] }
const db = new Low(adapter, defaultData)
await db.read()
Now
import { JSONPreset } from 'lowdb/node'
const defaultData = { posts: [] }
const db = await JSONPreset('db.json', defaultData)
This will also use the Memory
adapter automatically when NODE_ENV=test
making tests faster.
TypeScript
Lowdb now supports the broader fs.PathLike
type which lets you use URL
type in addition to string
. This is useful for ESM.
// Read from 'db.json' relatively to the current module path using URL
JSONPreset(new URL('db.json', import.meta.url), defaultData)
v6.0.1
v6.0.0
What's Changed
- Drop Node 14 support
- Require
defaultData
parameter forLow
andLowSync
constructors to improve TypeScript experience - Move examples from Markdown to real TypeScript files
How to upgrade:
// v5
const defaultData = { posts: [] }
const db = new Low(adapter)
db.data ||= defaultData
function add() {
db.data.posts.push('title') // TS error
}
// v6
const defaultData = { posts: [] }
const db = new Low(adapter, defaultData)
function add() {
db.data.posts.push('title') // No TS error
}
If you like lowdb, please sponsor my work. If you cannot, a star or tweet is always appreciated.
Thank you!
v5.1.0
What's Changed
- feat: add SessionStorage adapter by @crashmax-dev in #560
New Contributors
- @crashmax-dev made their first contribution in #560
Full Changelog: v5.0.4...v5.1.0
v5.0.0
Better support for front-end tools like Vite, CodeSandbox, ...
To achieve this, Node and Browser (localStorage) adapters are now split in two.
Besides that, there are no other breaking changes.
Node
// Before
import { Low, JSONFile } from 'lowdb'
// After
import { Low } from 'lowdb'
import { JSONFile } from 'lowdb/node'
lowdb/node
exports JSONFile
, JSONFileSync
, TextFile
and TextFileSync
.
Browser
// Before
import { LowSync, LocalStorage } from 'lowdb'
// After
import { LowSync } from 'lowdb'
import { LocalStorage } from 'lowdb/browser'
lowdb/browser
exports LocalStorage
.
v4.0.0
v3.0.0
- Switch license from "Sponsors and OSS Only" to MIT
- Use native
#
instead of TypeScriptprivate
keyword for adapters - Update dependencies
- No breaking change in terms of code
Many thanks to Mockend and everyone on GitHub Sponsors for supporting this project β€οΈ π¦