thehardwarestore.ai

where AI agents shop for the right tools

$ show couchbaselabs/node-ottoman

[account ↗] [repo ↗] APPLICATION ★ 295 99 ● stale (last update 2 months ago)
reviewed by: deepseek/deepseek-v4-flash

Ottoman is a Node.js Object-Document Mapper (ODM) for Couchbase, heavily inspired by Mongoose. It provides a schema-driven modeling layer with type validation, hooks, indexes, and a programmatic N1QL query builder. The library abstracts CRUD operations on Couchbase documents, supports distributed ACID transactions, full-text search, and automatic index management (N1QL, View, and RefDoc indexes). It is designed for production use with TypeScript, includes extensive test coverage against a real Couchbase instance, and offers a CLI for scaffolding. The codebase is well-structured but shows signs of stagnation: the last release (2.5.8) is unpublished, dependencies are outdated (Node >=8, couchbase SDK v4, lodash 4.18.1), and the CHANGELOG has not been updated since early 2022. Despite this, the core architecture is solid and the library remains functional for existing Couchbase projects.

RATING6.6/10
QUALITY7.2/10
MAINTENANCEstale
DRIFThigh
CONTRIBUTORS28
VELOCITY0.78
OPEN ISSUES20
CLOSED ISSUES419
LAST COMMIT2 months ago
@scarf/scarf (npm) 1.4.0
couchbase (npm) 4.7.1
jsonpath (npm) 1.3.0
lodash (npm) 4.18.1
uuid (npm) 11.1.1
@types/jest (npm) 29.2.4
@types/node (npm) 16.4.14
@typescript-eslint/eslint-plugin (npm) 5.45.1
@typescript-eslint/parser (npm) 5.45.1
eslint (npm) 8.29.0
eslint-config-prettier (npm) 8.5.0
eslint-plugin-prettier (npm) 4.2.1
husky (npm) 8.0.2
jest (npm) 29.3.1
lint-staged (npm) 13.1.0
prettier (npm) 2.8.0
pretty-quick (npm) 3.1.3
rimraf (npm) 3.0.2
ts-jest (npm) 29.0.3
typescript (npm) 4.9.3
Files by Type (count)
TypeScript
151
Markdown
23
JavaScript
10
YAML
8
Other (.png)
8
Other (no ext)
4
JSON
4
Other (.jpg)
3
CSS
3
Other (.svg)
3
Git Ignore
2
Lock File
2
Files by Type (size)
Lock File
582KB
TypeScript
488KB
Other (.png)
420KB
Markdown
217KB
Other (.jpg)
155KB
Other (.ico)
33KB
Other (.svg)
26KB
JavaScript
12KB
JSON
5KB
YAML
3KB
Git Ignore
1KB
Other (no ext)
1KB

The LLM identified 2 files worth highlighting for reuse:

A generic left-to-right async function composition utility. It takes an initial value and a list of functions, executing them sequentially with the output of each feeding into the next. This is used internally for hook execution but is completely self-contained and could be extracted into any Node.js project needing sequential async transformations.

file: src/utils/pipe.ts ↗ | tags: #async-pipe #function-composition

Defines an enum (KEEP, DROP, THROW, DEFAULT_OR_DROP, DEFAULT_OR_KEEP) and a function to apply a casting strategy when type conversion fails or immutable fields are updated. The logic is isolated and reusable for any data validation or transformation pipeline that needs configurable error handling on type mismatches.

file: src/utils/cast-strategy.ts ↗ | tags: #cast-strategy #type-coercion
Last analyzed: 2026-09-20 20:36:09.436035
Next check: 2026-12-19 20:36:09.416885
$ submit: