Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,8 @@ out/

# Local tool distributions
.tooling/

# Node workspace artifacts
node_modules/
packages/*/node_modules/
packages/*/dist/
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,15 @@ Requirements:
- Java 17+
- Gradle 8+

## Node Adapter Status

Node.js adapter work is tracked in issue `#106` and lives under `packages/memory-server`.

Current state:
- package scaffold exists (`@jongodb/memory-server`)
- runtime process manager is in progress (`#108`)
- Jest/Vitest helpers and compatibility smoke suites are planned (`#109`, `#110`)

## Transaction Contract (Current)

Supported in current scope:
Expand Down
57 changes: 57 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 13 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"name": "jongodb-workspace",
"private": true,
"description": "Workspace scripts for jongodb Node adapter packages.",
"workspaces": [
"packages/*"
],
"scripts": {
"node:build": "npm run --workspace @jongodb/memory-server build",
"node:test": "npm run --workspace @jongodb/memory-server test",
"node:typecheck": "npm run --workspace @jongodb/memory-server typecheck"
}
}
18 changes: 18 additions & 0 deletions packages/memory-server/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# @jongodb/memory-server

Node.js adapter package for starting a `jongodb` test server and obtaining a MongoDB URI.

Current status:
- package scaffold is in place
- runtime process manager is tracked in issue `#108`

## Local Commands

From repository root:

```bash
npm ci
npm run node:build
npm run node:typecheck
npm run node:test
```
34 changes: 34 additions & 0 deletions packages/memory-server/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{
"name": "@jongodb/memory-server",
"version": "0.0.0-development",
"description": "Node.js launcher for jongodb in-memory server",
"keywords": [
"mongodb",
"mongodb-memory-server",
"jongodb",
"integration-test",
"jest",
"vitest"
],
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"files": [
"dist"
],
"engines": {
"node": ">=20"
},
"scripts": {
"build": "tsc -p tsconfig.json",
"clean": "rm -rf dist",
"typecheck": "tsc -p tsconfig.json --noEmit",
"pretest": "npm run build",
"test": "node --test dist/test/*.test.js"
},
"devDependencies": {
"@types/node": "^20.17.57",
"typescript": "^5.9.2"
}
}
28 changes: 28 additions & 0 deletions packages/memory-server/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
export interface JongodbMemoryServerOptions {
host?: string;
port?: number;
databaseName?: string;
startupTimeoutMs?: number;
logLevel?: "silent" | "info" | "debug";
}

export interface JongodbMemoryServer {
readonly uri: string;
stop(): Promise<void>;
}

function notImplementedError(): Error {
return new Error(
"Runtime process manager is not implemented yet. Track progress in issue #108."
);
}

/**
* Starts a local jongodb-backed MongoDB-compatible endpoint for tests.
* Runtime process lifecycle is implemented in issue #108.
*/
export async function startJongodbMemoryServer(
_options: JongodbMemoryServerOptions = {}
): Promise<JongodbMemoryServer> {
throw notImplementedError();
}
10 changes: 10 additions & 0 deletions packages/memory-server/src/test/scaffold.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { test } from "node:test";
import assert from "node:assert/strict";

import { startJongodbMemoryServer } from "../index.js";

test("startJongodbMemoryServer is scaffolded and explicitly not implemented", async () => {
await assert.rejects(async () => {
await startJongodbMemoryServer();
}, /not implemented/i);
});
19 changes: 19 additions & 0 deletions packages/memory-server/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"compilerOptions": {
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"declaration": true,
"declarationMap": true,
"strict": true,
"rootDir": "src",
"outDir": "dist",
"types": [
"node"
],
"skipLibCheck": true
},
"include": [
"src/**/*.ts"
]
}