cosmosdb-server
A Cosmos DB server implementation for testing your apps locally.
const { default: cosmosServer } = require("@vercel/cosmosdb-server");
const { CosmosClient } = require("@azure/cosmos");
const https = require("https");
cosmosServer().listen(3000, () => {
console.log(`Cosmos DB server running at https://localhost:3000`);
runClient().catch(console.error);
});
async function runClient() {
const client = new CosmosClient({
endpoint: `https://localhost:3000`,
key: "dummy key",
agent: https.Agent({ rejectUnauthorized: false })
});
const { database } = await client.databases.createIfNotExists({ id: 'test-db' });
const { container } = await database.containers.createIfNotExists({ id: 'test-container' });
}
To choose between listening for HTTP and HTTPS, import the right function.
const { createHttpServer, createHttpsServer } = require("@vercel/cosmosdb-server");
To run the server on cli:
cosmosdb-server -p 3000
or without SSL:
cosmosdb-server -p 3000 --no-ssl
installation
npm install @vercel/cosmosdb-server
It exposes the cosmosdb-server
cli command as well.
API
cosmosServer(opts?: https.ServerOptions): https.Server
Create a new instance of cosmos server. You can pass https server options as the argument.
See https.createServer
for more information.
Supported operations
- Database operations.
- Container operations.
- Item operations.
- User-defined function operations.
- Any SQL queries except the spatial functions
ST_ISVALID
and ST_ISVALIDDETAILED
. Other spatial functions are supported; however, the ST_DISTANCE
function uses centroid distances and results may differ from Cosmos DB values.
It may not support newly added features yet. Please report on the Github issue if you find one.
Developing
To build the project, use yarn build
.
To run the server from development code, after building, use node lib/cli.js
.