Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@binaris/shift-interfaces-node-client

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@binaris/shift-interfaces-node-client - npm Package Compare versions

Comparing version
0.2.0-rc.0
to
0.2.0
+2
gen-client.build.log
>>> @binaris/shift-interfaces-node-client
tsc
{
"files": {
"common/config/rush/shrinkwrap.yaml": "40a541f36a5f307d6ca131296a78fc269cb27678"
},
"arguments": "tsc "
}

Sorry, the diff of this file is not supported yet

+184
-1
import fetch from 'node-fetch';
import { RequestInit } from 'node-fetch';
import { ValidationError } from './common';
import { ClassValidator, ValidationError } from './common';
import { ClientContext, Version, VersionedMaybeObject } from './interfaces';
export interface Options extends Pick<RequestInit, 'agent' | 'redirect' | 'follow' | 'compress'> {

@@ -34,1 +35,183 @@ fetchImplementation?: typeof fetch;

export { ValidationError, };
export declare type Context = ClientContext;
export interface DB {
get(ctx: ClientContext, key: string): Promise<any>;
getWithVersion(ctx: ClientContext, key: string): Promise<VersionedMaybeObject>;
setIfVersion(ctx: ClientContext, key: string, value: ({}) | (Array<any>) | ((null) | (string) | (number) | (boolean)), version: Version): Promise<boolean>;
startPolling(ctx: ClientContext, key: string): Promise<VersionedMaybeObject>;
create(ctx: ClientContext, key: string, value: ({}) | (Array<any>) | ((null) | (string) | (number) | (boolean))): Promise<boolean>;
remove(ctx: ClientContext, key: string): Promise<boolean>;
}
export declare class DBClient {
readonly serverUrl: string;
protected readonly options: Options;
static readonly methods: string[];
static readonly validators: ClassValidator;
protected readonly props: {
"get": {
"description": string;
"type": string;
"properties": {
"params": {
"type": string;
"properties": {
"key": {
"type": string;
};
};
"propertyOrder": string[];
"required": string[];
};
"returns": {};
};
"propertyOrder": string[];
"required": string[];
};
"getWithVersion": {
"description": string;
"type": string;
"properties": {
"params": {
"type": string;
"properties": {
"key": {
"type": string;
};
};
"propertyOrder": string[];
"required": string[];
};
"returns": {
"$ref": string;
};
};
"propertyOrder": string[];
"required": string[];
};
"setIfVersion": {
"description": string;
"type": string;
"properties": {
"params": {
"type": string;
"properties": {
"key": {
"type": string;
};
"value": {
"anyOf": ({
"type": string;
"properties": {};
"items"?: undefined;
} | {
"type": string;
"items": {};
"properties"?: undefined;
} | {
"type": string[];
"properties"?: undefined;
"items"?: undefined;
})[];
};
"version": {
"$ref": string;
};
};
"propertyOrder": string[];
"required": string[];
};
"returns": {
"type": string;
};
};
"propertyOrder": string[];
"required": string[];
};
"startPolling": {
"description": string;
"type": string;
"properties": {
"params": {
"type": string;
"properties": {
"key": {
"type": string;
};
};
"propertyOrder": string[];
"required": string[];
};
"returns": {
"$ref": string;
};
};
"propertyOrder": string[];
"required": string[];
};
"create": {
"description": string;
"type": string;
"properties": {
"params": {
"type": string;
"properties": {
"key": {
"type": string;
};
"value": {
"anyOf": ({
"type": string;
"properties": {};
"items"?: undefined;
} | {
"type": string;
"items": {};
"properties"?: undefined;
} | {
"type": string[];
"properties"?: undefined;
"items"?: undefined;
})[];
};
};
"propertyOrder": string[];
"required": string[];
};
"returns": {
"type": string;
};
};
"propertyOrder": string[];
"required": string[];
};
"remove": {
"description": string;
"type": string;
"properties": {
"params": {
"type": string;
"properties": {
"key": {
"type": string;
};
};
"propertyOrder": string[];
"required": string[];
};
"returns": {
"type": string;
};
};
"propertyOrder": string[];
"required": string[];
};
};
readonly validators: ClassValidator;
constructor(serverUrl: string, options?: Options);
get(ctx: ClientContext, key: string, options?: Options): Promise<any>;
getWithVersion(ctx: ClientContext, key: string, options?: Options): Promise<VersionedMaybeObject>;
setIfVersion(ctx: ClientContext, key: string, value: ({}) | (Array<any>) | ((null) | (string) | (number) | (boolean)), version: Version, options?: Options): Promise<boolean>;
startPolling(ctx: ClientContext, key: string, options?: Options): Promise<VersionedMaybeObject>;
create(ctx: ClientContext, key: string, value: ({}) | (Array<any>) | ((null) | (string) | (number) | (boolean)), options?: Options): Promise<boolean>;
remove(ctx: ClientContext, key: string, options?: Options): Promise<boolean>;
}
+396
-0
"use strict";
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
// tslint:disable
const node_fetch_1 = require("node-fetch");
const abort_controller_1 = require("abort-controller");
const common_1 = require("./common");
exports.ValidationError = common_1.ValidationError;
const interfaces_1 = require("./interfaces");
class RequestError extends Error {

@@ -30,2 +45,383 @@ constructor(message,

exports.TimeoutError = TimeoutError;
class DBClient {
constructor(serverUrl, options = {}) {
this.serverUrl = serverUrl;
this.options = options;
this.props = interfaces_1.schema.definitions.DB.properties;
this.validators = DBClient.validators;
}
async get(ctx, key, options) {
const body = {
ctx,
key,
};
const mergedOptions = Object.assign({ serverUrl: this.serverUrl }, this.options, options);
const { fetchImplementation, timeoutMs, headers, serverUrl } = mergedOptions, fetchOptions = __rest(mergedOptions, ["fetchImplementation", "timeoutMs", "headers", "serverUrl"]);
const fetchImpl = fetchImplementation || node_fetch_1.default;
let timeout;
if (timeoutMs) {
const controller = new abort_controller_1.default();
timeout = setTimeout(() => controller.abort(), timeoutMs);
fetchOptions.signal = controller.signal;
}
let response;
let responseBody;
let responseText;
let isJSON;
try {
response = await fetchImpl(`${serverUrl}/get`, Object.assign({}, fetchOptions, { headers: Object.assign({}, headers, { 'Content-Type': 'application/json' }), body: JSON.stringify(body), method: 'POST' }));
isJSON = (response.headers.get('content-type') || '').startsWith('application/json');
if (isJSON) {
responseBody = await response.json();
}
else {
responseText = await response.text();
}
}
catch (err) {
if (err.message === 'The user aborted a request.') {
timeout = undefined;
throw new TimeoutError('Request aborted due to timeout', 'get', mergedOptions);
}
throw new RequestError(err.message, err, 'get', mergedOptions);
}
finally {
if (timeout)
clearTimeout(timeout);
}
if (response.status >= 200 && response.status < 300) {
const validator = this.validators.get;
const wrapped = { returns: responseBody }; // wrapped for coersion
if (!validator(wrapped)) {
throw new common_1.ValidationError('Failed to validate response', validator.errors);
}
return wrapped.returns;
}
else if (!isJSON) {
// fall through to throw
}
else if (response.status === 400) {
if (responseBody.name === 'ValidationError') {
throw new common_1.ValidationError(responseBody.message, responseBody.errors);
}
}
else if (response.status === 500) {
throw new interfaces_1.InternalServerError(responseBody.message);
}
throw new RequestError(`${response.status} - ${response.statusText}`, { responseText: responseText && responseText.slice(0, 256), responseBody }, 'get', mergedOptions);
}
async getWithVersion(ctx, key, options) {
const body = {
ctx,
key,
};
const mergedOptions = Object.assign({ serverUrl: this.serverUrl }, this.options, options);
const { fetchImplementation, timeoutMs, headers, serverUrl } = mergedOptions, fetchOptions = __rest(mergedOptions, ["fetchImplementation", "timeoutMs", "headers", "serverUrl"]);
const fetchImpl = fetchImplementation || node_fetch_1.default;
let timeout;
if (timeoutMs) {
const controller = new abort_controller_1.default();
timeout = setTimeout(() => controller.abort(), timeoutMs);
fetchOptions.signal = controller.signal;
}
let response;
let responseBody;
let responseText;
let isJSON;
try {
response = await fetchImpl(`${serverUrl}/getWithVersion`, Object.assign({}, fetchOptions, { headers: Object.assign({}, headers, { 'Content-Type': 'application/json' }), body: JSON.stringify(body), method: 'POST' }));
isJSON = (response.headers.get('content-type') || '').startsWith('application/json');
if (isJSON) {
responseBody = await response.json();
}
else {
responseText = await response.text();
}
}
catch (err) {
if (err.message === 'The user aborted a request.') {
timeout = undefined;
throw new TimeoutError('Request aborted due to timeout', 'getWithVersion', mergedOptions);
}
throw new RequestError(err.message, err, 'getWithVersion', mergedOptions);
}
finally {
if (timeout)
clearTimeout(timeout);
}
if (response.status >= 200 && response.status < 300) {
const validator = this.validators.getWithVersion;
const wrapped = { returns: responseBody }; // wrapped for coersion
if (!validator(wrapped)) {
throw new common_1.ValidationError('Failed to validate response', validator.errors);
}
return wrapped.returns;
}
else if (!isJSON) {
// fall through to throw
}
else if (response.status === 400) {
if (responseBody.name === 'ValidationError') {
throw new common_1.ValidationError(responseBody.message, responseBody.errors);
}
}
else if (response.status === 500) {
throw new interfaces_1.InternalServerError(responseBody.message);
}
throw new RequestError(`${response.status} - ${response.statusText}`, { responseText: responseText && responseText.slice(0, 256), responseBody }, 'getWithVersion', mergedOptions);
}
async setIfVersion(ctx, key, value, version, options) {
const body = {
ctx,
key,
value,
version,
};
const mergedOptions = Object.assign({ serverUrl: this.serverUrl }, this.options, options);
const { fetchImplementation, timeoutMs, headers, serverUrl } = mergedOptions, fetchOptions = __rest(mergedOptions, ["fetchImplementation", "timeoutMs", "headers", "serverUrl"]);
const fetchImpl = fetchImplementation || node_fetch_1.default;
let timeout;
if (timeoutMs) {
const controller = new abort_controller_1.default();
timeout = setTimeout(() => controller.abort(), timeoutMs);
fetchOptions.signal = controller.signal;
}
let response;
let responseBody;
let responseText;
let isJSON;
try {
response = await fetchImpl(`${serverUrl}/setIfVersion`, Object.assign({}, fetchOptions, { headers: Object.assign({}, headers, { 'Content-Type': 'application/json' }), body: JSON.stringify(body), method: 'POST' }));
isJSON = (response.headers.get('content-type') || '').startsWith('application/json');
if (isJSON) {
responseBody = await response.json();
}
else {
responseText = await response.text();
}
}
catch (err) {
if (err.message === 'The user aborted a request.') {
timeout = undefined;
throw new TimeoutError('Request aborted due to timeout', 'setIfVersion', mergedOptions);
}
throw new RequestError(err.message, err, 'setIfVersion', mergedOptions);
}
finally {
if (timeout)
clearTimeout(timeout);
}
if (response.status >= 200 && response.status < 300) {
const validator = this.validators.setIfVersion;
const wrapped = { returns: responseBody }; // wrapped for coersion
if (!validator(wrapped)) {
throw new common_1.ValidationError('Failed to validate response', validator.errors);
}
return wrapped.returns;
}
else if (!isJSON) {
// fall through to throw
}
else if (response.status === 400) {
if (responseBody.name === 'ValidationError') {
throw new common_1.ValidationError(responseBody.message, responseBody.errors);
}
}
else if (response.status === 500) {
throw new interfaces_1.InternalServerError(responseBody.message);
}
throw new RequestError(`${response.status} - ${response.statusText}`, { responseText: responseText && responseText.slice(0, 256), responseBody }, 'setIfVersion', mergedOptions);
}
async startPolling(ctx, key, options) {
const body = {
ctx,
key,
};
const mergedOptions = Object.assign({ serverUrl: this.serverUrl }, this.options, options);
const { fetchImplementation, timeoutMs, headers, serverUrl } = mergedOptions, fetchOptions = __rest(mergedOptions, ["fetchImplementation", "timeoutMs", "headers", "serverUrl"]);
const fetchImpl = fetchImplementation || node_fetch_1.default;
let timeout;
if (timeoutMs) {
const controller = new abort_controller_1.default();
timeout = setTimeout(() => controller.abort(), timeoutMs);
fetchOptions.signal = controller.signal;
}
let response;
let responseBody;
let responseText;
let isJSON;
try {
response = await fetchImpl(`${serverUrl}/startPolling`, Object.assign({}, fetchOptions, { headers: Object.assign({}, headers, { 'Content-Type': 'application/json' }), body: JSON.stringify(body), method: 'POST' }));
isJSON = (response.headers.get('content-type') || '').startsWith('application/json');
if (isJSON) {
responseBody = await response.json();
}
else {
responseText = await response.text();
}
}
catch (err) {
if (err.message === 'The user aborted a request.') {
timeout = undefined;
throw new TimeoutError('Request aborted due to timeout', 'startPolling', mergedOptions);
}
throw new RequestError(err.message, err, 'startPolling', mergedOptions);
}
finally {
if (timeout)
clearTimeout(timeout);
}
if (response.status >= 200 && response.status < 300) {
const validator = this.validators.startPolling;
const wrapped = { returns: responseBody }; // wrapped for coersion
if (!validator(wrapped)) {
throw new common_1.ValidationError('Failed to validate response', validator.errors);
}
return wrapped.returns;
}
else if (!isJSON) {
// fall through to throw
}
else if (response.status === 400) {
if (responseBody.name === 'ValidationError') {
throw new common_1.ValidationError(responseBody.message, responseBody.errors);
}
}
else if (response.status === 500) {
throw new interfaces_1.InternalServerError(responseBody.message);
}
throw new RequestError(`${response.status} - ${response.statusText}`, { responseText: responseText && responseText.slice(0, 256), responseBody }, 'startPolling', mergedOptions);
}
async create(ctx, key, value, options) {
const body = {
ctx,
key,
value,
};
const mergedOptions = Object.assign({ serverUrl: this.serverUrl }, this.options, options);
const { fetchImplementation, timeoutMs, headers, serverUrl } = mergedOptions, fetchOptions = __rest(mergedOptions, ["fetchImplementation", "timeoutMs", "headers", "serverUrl"]);
const fetchImpl = fetchImplementation || node_fetch_1.default;
let timeout;
if (timeoutMs) {
const controller = new abort_controller_1.default();
timeout = setTimeout(() => controller.abort(), timeoutMs);
fetchOptions.signal = controller.signal;
}
let response;
let responseBody;
let responseText;
let isJSON;
try {
response = await fetchImpl(`${serverUrl}/create`, Object.assign({}, fetchOptions, { headers: Object.assign({}, headers, { 'Content-Type': 'application/json' }), body: JSON.stringify(body), method: 'POST' }));
isJSON = (response.headers.get('content-type') || '').startsWith('application/json');
if (isJSON) {
responseBody = await response.json();
}
else {
responseText = await response.text();
}
}
catch (err) {
if (err.message === 'The user aborted a request.') {
timeout = undefined;
throw new TimeoutError('Request aborted due to timeout', 'create', mergedOptions);
}
throw new RequestError(err.message, err, 'create', mergedOptions);
}
finally {
if (timeout)
clearTimeout(timeout);
}
if (response.status >= 200 && response.status < 300) {
const validator = this.validators.create;
const wrapped = { returns: responseBody }; // wrapped for coersion
if (!validator(wrapped)) {
throw new common_1.ValidationError('Failed to validate response', validator.errors);
}
return wrapped.returns;
}
else if (!isJSON) {
// fall through to throw
}
else if (response.status === 400) {
if (responseBody.name === 'ValidationError') {
throw new common_1.ValidationError(responseBody.message, responseBody.errors);
}
}
else if (response.status === 500) {
throw new interfaces_1.InternalServerError(responseBody.message);
}
throw new RequestError(`${response.status} - ${response.statusText}`, { responseText: responseText && responseText.slice(0, 256), responseBody }, 'create', mergedOptions);
}
async remove(ctx, key, options) {
const body = {
ctx,
key,
};
const mergedOptions = Object.assign({ serverUrl: this.serverUrl }, this.options, options);
const { fetchImplementation, timeoutMs, headers, serverUrl } = mergedOptions, fetchOptions = __rest(mergedOptions, ["fetchImplementation", "timeoutMs", "headers", "serverUrl"]);
const fetchImpl = fetchImplementation || node_fetch_1.default;
let timeout;
if (timeoutMs) {
const controller = new abort_controller_1.default();
timeout = setTimeout(() => controller.abort(), timeoutMs);
fetchOptions.signal = controller.signal;
}
let response;
let responseBody;
let responseText;
let isJSON;
try {
response = await fetchImpl(`${serverUrl}/remove`, Object.assign({}, fetchOptions, { headers: Object.assign({}, headers, { 'Content-Type': 'application/json' }), body: JSON.stringify(body), method: 'POST' }));
isJSON = (response.headers.get('content-type') || '').startsWith('application/json');
if (isJSON) {
responseBody = await response.json();
}
else {
responseText = await response.text();
}
}
catch (err) {
if (err.message === 'The user aborted a request.') {
timeout = undefined;
throw new TimeoutError('Request aborted due to timeout', 'remove', mergedOptions);
}
throw new RequestError(err.message, err, 'remove', mergedOptions);
}
finally {
if (timeout)
clearTimeout(timeout);
}
if (response.status >= 200 && response.status < 300) {
const validator = this.validators.remove;
const wrapped = { returns: responseBody }; // wrapped for coersion
if (!validator(wrapped)) {
throw new common_1.ValidationError('Failed to validate response', validator.errors);
}
return wrapped.returns;
}
else if (!isJSON) {
// fall through to throw
}
else if (response.status === 400) {
if (responseBody.name === 'ValidationError') {
throw new common_1.ValidationError(responseBody.message, responseBody.errors);
}
}
else if (response.status === 500) {
throw new interfaces_1.InternalServerError(responseBody.message);
}
throw new RequestError(`${response.status} - ${response.statusText}`, { responseText: responseText && responseText.slice(0, 256), responseBody }, 'remove', mergedOptions);
}
}
DBClient.methods = [
'get',
'getWithVersion',
'setIfVersion',
'startPolling',
'create',
'remove',
];
DBClient.validators = common_1.createReturnTypeValidator(interfaces_1.schema, 'DB');
exports.DBClient = DBClient;
//# sourceMappingURL=client.js.map
+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"client.js","sourceRoot":"","sources":["src/client.ts"],"names":[],"mappings":";;AAIA,qCAAsF;AAqCpF,0BArCkD,wBAAe,CAqClD;AAzBjB,MAAa,YAAa,SAAQ,KAAK;IAErC,YACE,OAAe;IACf;;;;OAIG;IACa,KAAU,EACV,MAAc,EACd,OAAY;QAE5B,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,UAAK,GAAL,KAAK,CAAK;QACV,WAAM,GAAN,MAAM,CAAQ;QACd,YAAO,GAAP,OAAO,CAAK;QAVd,SAAI,GAAG,cAAc,CAAC;IAatC,CAAC;CACF;AAfD,oCAeC;AAED,MAAa,YAAa,SAAQ,KAAK;IAErC,YAAY,OAAe,EAAkB,MAAc,EAAkB,OAAY;QACvF,KAAK,CAAC,OAAO,CAAC,CAAC;QAD4B,WAAM,GAAN,MAAM,CAAQ;QAAkB,YAAO,GAAP,OAAO,CAAK;QADzE,SAAI,GAAG,cAAc,CAAC;IAGtC,CAAC;CACF;AALD,oCAKC"}
{"version":3,"file":"client.js","sourceRoot":"","sources":["src/client.ts"],"names":[],"mappings":"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"}
export declare const schema: {
"$schema": string;
"definitions": {};
"definitions": {
"Comparable": {
"anyOf": ({
"description": string;
"type": string;
"format": string;
"coerce-date": boolean;
} | {
"type": string[];
"description"?: undefined;
"format"?: undefined;
"coerce-date"?: undefined;
})[];
};
"Equatable": {
"anyOf": ({
"description": string;
"type": string;
"format": string;
"coerce-date": boolean;
} | {
"type": string[];
"description"?: undefined;
"format"?: undefined;
"coerce-date"?: undefined;
})[];
};
"Serializable": {
"anyOf": ({
"type": string;
"properties": {};
"items"?: undefined;
} | {
"type": string;
"items": {};
"properties"?: undefined;
} | {
"type": string[];
"properties"?: undefined;
"items"?: undefined;
})[];
};
"PathFilter": {
"type": string;
"properties": {
"path": {
"type": string;
"items": {
"type": string;
};
};
};
"propertyOrder": string[];
"required": string[];
};
"EqFilter": {
"type": string;
"properties": {
"operator": {
"type": string;
"enum": string[];
};
"value": {
"anyOf": ({
"description": string;
"type": string;
"format": string;
"coerce-date": boolean;
} | {
"type": string[];
"description"?: undefined;
"format"?: undefined;
"coerce-date"?: undefined;
})[];
};
"path": {
"type": string;
"items": {
"type": string;
};
};
};
"propertyOrder": string[];
"required": string[];
};
"NeFilter": {
"type": string;
"properties": {
"operator": {
"type": string;
"enum": string[];
};
"value": {
"anyOf": ({
"description": string;
"type": string;
"format": string;
"coerce-date": boolean;
} | {
"type": string[];
"description"?: undefined;
"format"?: undefined;
"coerce-date"?: undefined;
})[];
};
"path": {
"type": string;
"items": {
"type": string;
};
};
};
"propertyOrder": string[];
"required": string[];
};
"ComparableFilter": {
"type": string;
"properties": {
"value": {
"anyOf": ({
"description": string;
"type": string;
"format": string;
"coerce-date": boolean;
} | {
"type": string[];
"description"?: undefined;
"format"?: undefined;
"coerce-date"?: undefined;
})[];
};
"path": {
"type": string;
"items": {
"type": string;
};
};
};
"propertyOrder": string[];
"required": string[];
};
"GtFilter": {
"type": string;
"properties": {
"operator": {
"type": string;
"enum": string[];
};
"value": {
"anyOf": ({
"description": string;
"type": string;
"format": string;
"coerce-date": boolean;
} | {
"type": string[];
"description"?: undefined;
"format"?: undefined;
"coerce-date"?: undefined;
})[];
};
"path": {
"type": string;
"items": {
"type": string;
};
};
};
"propertyOrder": string[];
"required": string[];
};
"GteFilter": {
"type": string;
"properties": {
"operator": {
"type": string;
"enum": string[];
};
"value": {
"anyOf": ({
"description": string;
"type": string;
"format": string;
"coerce-date": boolean;
} | {
"type": string[];
"description"?: undefined;
"format"?: undefined;
"coerce-date"?: undefined;
})[];
};
"path": {
"type": string;
"items": {
"type": string;
};
};
};
"propertyOrder": string[];
"required": string[];
};
"LtFilter": {
"type": string;
"properties": {
"operator": {
"type": string;
"enum": string[];
};
"value": {
"anyOf": ({
"description": string;
"type": string;
"format": string;
"coerce-date": boolean;
} | {
"type": string[];
"description"?: undefined;
"format"?: undefined;
"coerce-date"?: undefined;
})[];
};
"path": {
"type": string;
"items": {
"type": string;
};
};
};
"propertyOrder": string[];
"required": string[];
};
"LteFilter": {
"type": string;
"properties": {
"operator": {
"type": string;
"enum": string[];
};
"value": {
"anyOf": ({
"description": string;
"type": string;
"format": string;
"coerce-date": boolean;
} | {
"type": string[];
"description"?: undefined;
"format"?: undefined;
"coerce-date"?: undefined;
})[];
};
"path": {
"type": string;
"items": {
"type": string;
};
};
};
"propertyOrder": string[];
"required": string[];
};
"ExistsFilter": {
"type": string;
"properties": {
"operator": {
"type": string;
"enum": string[];
};
"path": {
"type": string;
"items": {
"type": string;
};
};
};
"propertyOrder": string[];
"required": string[];
};
"IsNullFilter": {
"type": string;
"properties": {
"operator": {
"type": string;
"enum": string[];
};
"path": {
"type": string;
"items": {
"type": string;
};
};
};
"propertyOrder": string[];
"required": string[];
};
"MatchesFilter": {
"type": string;
"properties": {
"operator": {
"type": string;
"enum": string[];
};
"pattern": {
"type": string;
};
"caseInsensitive": {
"type": string;
};
"path": {
"type": string;
"items": {
"type": string;
};
};
};
"propertyOrder": string[];
"required": string[];
};
"StartsWithFilter": {
"type": string;
"properties": {
"operator": {
"type": string;
"enum": string[];
};
"value": {
"type": string;
};
"path": {
"type": string;
"items": {
"type": string;
};
};
};
"propertyOrder": string[];
"required": string[];
};
"AndFilter": {
"type": string;
"properties": {
"operator": {
"type": string;
"enum": string[];
};
"filters": {
"type": string;
"items": {
"anyOf": {
"$ref": string;
}[];
};
};
};
"propertyOrder": string[];
"required": string[];
};
"OrFilter": {
"type": string;
"properties": {
"operator": {
"type": string;
"enum": string[];
};
"filters": {
"type": string;
"items": {
"anyOf": {
"$ref": string;
}[];
};
};
};
"propertyOrder": string[];
"required": string[];
};
"NotFilter": {
"type": string;
"properties": {
"operator": {
"type": string;
"enum": string[];
};
"filter": {
"anyOf": {
"$ref": string;
}[];
};
};
"propertyOrder": string[];
"required": string[];
};
"Filter": {
"anyOf": {
"$ref": string;
}[];
};
"Direction": {
"enum": string[];
"type": string;
};
"Order": {
"type": string;
"properties": {
"path": {
"type": string;
"items": {
"type": string;
};
};
"direction": {
"$ref": string;
};
};
"propertyOrder": string[];
"required": string[];
};
"Query": {
"type": string;
"properties": {
"filter": {
"anyOf": {
"$ref": string;
}[];
};
"limit": {
"type": string;
};
"skip": {
"type": string;
};
"orderBy": {
"type": string;
"items": {
"$ref": string;
};
};
};
"propertyOrder": string[];
"required": string[];
};
"ClientContext": {
"type": string;
"properties": {
"auth": {
"type": string;
"properties": {
"v1": {
"type": string;
"properties": {
"accountId": {
"type": string;
};
"token": {
"type": string;
};
};
"propertyOrder": string[];
"required": string[];
};
};
"propertyOrder": string[];
"required": string[];
};
};
"propertyOrder": string[];
"required": string[];
};
"ServerOnlyContext": {
"type": string;
"properties": {
"tags": {
"type": string;
"additionalProperties": {
"type": string;
};
"propertyOrder": never[];
};
"logLevel": {
"type": string;
};
"logExtra": {
"type": string;
"additionalProperties": {};
"propertyOrder": never[];
};
"sampleRate": {
"type": string;
};
};
"propertyOrder": string[];
};
"UpdateOptions": {
"type": string;
"properties": {
"operationId": {
"description": string;
"type": string;
};
};
"propertyOrder": string[];
};
"Version": {
"type": string;
"properties": {
"major": {
"type": string;
};
"minor": {
"type": string;
};
};
"propertyOrder": string[];
"required": string[];
};
"Patch": {
"type": string;
"properties": {
"version": {
"$ref": string;
};
"operationId": {
"description": string;
"type": string;
};
"ops": {
"type": string;
"items": {
"anyOf": {
"$ref": string;
}[];
};
};
};
"propertyOrder": string[];
"required": string[];
};
"KeyedPatches": {
"type": string;
"items": {
"type": string;
"items": ({
"type": string;
"items"?: undefined;
} | {
"type": string;
"items": {
"$ref": string;
};
})[];
"minItems": number;
"additionalItems": {
"anyOf": ({
"type": string;
"items"?: undefined;
} | {
"type": string;
"items": {
"$ref": string;
};
})[];
};
};
};
"VersionedObject": {
"type": string;
"properties": {
"version": {
"$ref": string;
};
"value": {
"anyOf": ({
"type": string;
"properties": {};
"items"?: undefined;
} | {
"type": string;
"items": {};
"properties"?: undefined;
} | {
"type": string[];
"properties"?: undefined;
"items"?: undefined;
})[];
};
};
"propertyOrder": string[];
"required": string[];
};
"VersionedMaybeObject": {
"type": string;
"properties": {
"version": {
"$ref": string;
};
"value": {
"anyOf": ({
"type": string;
"properties": {};
"items"?: undefined;
} | {
"type": string;
"items": {};
"properties"?: undefined;
} | {
"type": string[];
"properties"?: undefined;
"items"?: undefined;
})[];
};
};
"propertyOrder": string[];
"required": string[];
};
"Patches": {
"type": string;
"properties": {
"patches": {
"description": string;
"type": string;
"items": {
"$ref": string;
};
};
};
"propertyOrder": string[];
"required": string[];
};
"StoredDocument": {
"type": string;
"properties": {
"updatedAt": {
"type": string;
};
"version": {
"$ref": string;
};
"value": {
"anyOf": ({
"type": string;
"properties": {};
"items"?: undefined;
} | {
"type": string;
"items": {};
"properties"?: undefined;
} | {
"type": string[];
"properties"?: undefined;
"items"?: undefined;
})[];
};
"patches": {
"description": string;
"type": string;
"items": {
"$ref": string;
};
};
};
"propertyOrder": string[];
"required": string[];
};
"Tombstone": {
"description": string;
"type": string;
"properties": {
"updatedAt": {
"type": string;
};
"version": {
"$ref": string;
};
"patches": {
"description": string;
"type": string;
"items": {
"$ref": string;
};
};
};
"propertyOrder": string[];
"required": string[];
};
"DB": {
"type": string;
"properties": {
"get": {
"description": string;
"type": string;
"properties": {
"params": {
"type": string;
"properties": {
"key": {
"type": string;
};
};
"propertyOrder": string[];
"required": string[];
};
"returns": {};
};
"propertyOrder": string[];
"required": string[];
};
"getWithVersion": {
"description": string;
"type": string;
"properties": {
"params": {
"type": string;
"properties": {
"key": {
"type": string;
};
};
"propertyOrder": string[];
"required": string[];
};
"returns": {
"$ref": string;
};
};
"propertyOrder": string[];
"required": string[];
};
"setIfVersion": {
"description": string;
"type": string;
"properties": {
"params": {
"type": string;
"properties": {
"key": {
"type": string;
};
"value": {
"anyOf": ({
"type": string;
"properties": {};
"items"?: undefined;
} | {
"type": string;
"items": {};
"properties"?: undefined;
} | {
"type": string[];
"properties"?: undefined;
"items"?: undefined;
})[];
};
"version": {
"$ref": string;
};
};
"propertyOrder": string[];
"required": string[];
};
"returns": {
"type": string;
};
};
"propertyOrder": string[];
"required": string[];
};
"startPolling": {
"description": string;
"type": string;
"properties": {
"params": {
"type": string;
"properties": {
"key": {
"type": string;
};
};
"propertyOrder": string[];
"required": string[];
};
"returns": {
"$ref": string;
};
};
"propertyOrder": string[];
"required": string[];
};
"create": {
"description": string;
"type": string;
"properties": {
"params": {
"type": string;
"properties": {
"key": {
"type": string;
};
"value": {
"anyOf": ({
"type": string;
"properties": {};
"items"?: undefined;
} | {
"type": string;
"items": {};
"properties"?: undefined;
} | {
"type": string[];
"properties"?: undefined;
"items"?: undefined;
})[];
};
};
"propertyOrder": string[];
"required": string[];
};
"returns": {
"type": string;
};
};
"propertyOrder": string[];
"required": string[];
};
"remove": {
"description": string;
"type": string;
"properties": {
"params": {
"type": string;
"properties": {
"key": {
"type": string;
};
};
"propertyOrder": string[];
"required": string[];
};
"returns": {
"type": string;
};
};
"propertyOrder": string[];
"required": string[];
};
};
"propertyOrder": string[];
"required": string[];
};
"AddOperation<any>": {
"type": string;
"properties": {
"op": {
"type": string;
"enum": string[];
};
"value": {};
"path": {
"type": string;
};
};
"propertyOrder": string[];
"required": string[];
};
"RemoveOperation": {
"type": string;
"properties": {
"op": {
"type": string;
"enum": string[];
};
"path": {
"type": string;
};
};
"propertyOrder": string[];
"required": string[];
};
"ReplaceOperation<any>": {
"type": string;
"properties": {
"op": {
"type": string;
"enum": string[];
};
"value": {};
"path": {
"type": string;
};
};
"propertyOrder": string[];
"required": string[];
};
"MoveOperation": {
"type": string;
"properties": {
"op": {
"type": string;
"enum": string[];
};
"from": {
"type": string;
};
"path": {
"type": string;
};
};
"propertyOrder": string[];
"required": string[];
};
"CopyOperation": {
"type": string;
"properties": {
"op": {
"type": string;
"enum": string[];
};
"from": {
"type": string;
};
"path": {
"type": string;
};
};
"propertyOrder": string[];
"required": string[];
};
"TestOperation<any>": {
"type": string;
"properties": {
"op": {
"type": string;
"enum": string[];
};
"value": {};
"path": {
"type": string;
};
};
"propertyOrder": string[];
"required": string[];
};
"GetOperation<any>": {
"type": string;
"properties": {
"op": {
"type": string;
"enum": string[];
};
"value": {};
"path": {
"type": string;
};
};
"propertyOrder": string[];
"required": string[];
};
};
};

@@ -8,1 +964,177 @@ export declare class InternalServerError extends Error {

}
export declare enum Direction {
ASC = "ASC",
DESC = "DESC"
}
export declare type Comparable = (Date) | ((string) | (number));
export declare type Equatable = (Date) | ((string) | (number) | (boolean));
export declare type Serializable = ({}) | (Array<any>) | ((null) | (string) | (number) | (boolean));
export declare type Filter = (EqFilter) | (NeFilter) | (GtFilter) | (GteFilter) | (LtFilter) | (LteFilter) | (ExistsFilter) | (IsNullFilter) | (MatchesFilter) | (StartsWithFilter) | (AndFilter) | (OrFilter) | (NotFilter);
export interface PathFilter {
readonly path: Array<string>;
}
export interface EqFilter {
readonly operator: "eq";
readonly value: (Date) | ((string) | (number) | (boolean));
readonly path: Array<string>;
}
export interface NeFilter {
readonly operator: "ne";
readonly value: (Date) | ((string) | (number) | (boolean));
readonly path: Array<string>;
}
export interface ComparableFilter {
readonly value: (Date) | ((string) | (number));
readonly path: Array<string>;
}
export interface GtFilter {
readonly operator: "gt";
readonly value: (Date) | ((string) | (number));
readonly path: Array<string>;
}
export interface GteFilter {
readonly operator: "gte";
readonly value: (Date) | ((string) | (number));
readonly path: Array<string>;
}
export interface LtFilter {
readonly operator: "lt";
readonly value: (Date) | ((string) | (number));
readonly path: Array<string>;
}
export interface LteFilter {
readonly operator: "lte";
readonly value: (Date) | ((string) | (number));
readonly path: Array<string>;
}
export interface ExistsFilter {
readonly operator: "exists";
readonly path: Array<string>;
}
export interface IsNullFilter {
readonly operator: "isNull";
readonly path: Array<string>;
}
export interface MatchesFilter {
readonly operator: "matches";
readonly pattern: string;
readonly caseInsensitive: boolean;
readonly path: Array<string>;
}
export interface StartsWithFilter {
readonly operator: "startsWith";
readonly value: string;
readonly path: Array<string>;
}
export interface AndFilter {
readonly operator: "and";
readonly filters: Array<(EqFilter) | (NeFilter) | (GtFilter) | (GteFilter) | (LtFilter) | (LteFilter) | (ExistsFilter) | (IsNullFilter) | (MatchesFilter) | (StartsWithFilter) | (AndFilter) | (OrFilter) | (NotFilter)>;
}
export interface OrFilter {
readonly operator: "or";
readonly filters: Array<(EqFilter) | (NeFilter) | (GtFilter) | (GteFilter) | (LtFilter) | (LteFilter) | (ExistsFilter) | (IsNullFilter) | (MatchesFilter) | (StartsWithFilter) | (AndFilter) | (OrFilter) | (NotFilter)>;
}
export interface NotFilter {
readonly operator: "not";
readonly filter: (EqFilter) | (NeFilter) | (GtFilter) | (GteFilter) | (LtFilter) | (LteFilter) | (ExistsFilter) | (IsNullFilter) | (MatchesFilter) | (StartsWithFilter) | (AndFilter) | (OrFilter) | (NotFilter);
}
export interface Order {
readonly path: Array<string>;
readonly direction: Direction;
}
export interface Query {
readonly filter: (EqFilter) | (NeFilter) | (GtFilter) | (GteFilter) | (LtFilter) | (LteFilter) | (ExistsFilter) | (IsNullFilter) | (MatchesFilter) | (StartsWithFilter) | (AndFilter) | (OrFilter) | (NotFilter);
readonly limit?: number;
readonly skip?: number;
readonly orderBy?: Array<Order>;
}
export interface ClientContext {
readonly auth: {
v1: {
accountId: string;
token: string;
};
};
}
export interface ServerOnlyContext {
readonly tags?: {};
readonly logLevel?: string;
readonly logExtra?: {};
readonly sampleRate?: number;
}
export interface UpdateOptions {
readonly operationId?: string;
}
export interface Version {
readonly major: number;
readonly minor: number;
}
export interface Patch {
readonly version: Version;
readonly operationId?: string;
readonly ops: Array<(AddOperation_of_any_end) | (RemoveOperation) | (ReplaceOperation_of_any_end) | (MoveOperation) | (CopyOperation) | (TestOperation_of_any_end) | (GetOperation_of_any_end)>;
}
export interface VersionedObject {
readonly version: Version;
readonly value: ({}) | (Array<any>) | ((null) | (string) | (number) | (boolean));
}
export interface VersionedMaybeObject {
readonly version: Version;
readonly value?: ({}) | (Array<any>) | ((null) | (string) | (number) | (boolean));
}
export interface Patches {
readonly patches: Array<Patch>;
}
export interface StoredDocument {
readonly updatedAt: number;
readonly version: Version;
readonly value: ({}) | (Array<any>) | ((null) | (string) | (number) | (boolean));
readonly patches: Array<Patch>;
}
export interface Tombstone {
readonly updatedAt: number;
readonly version: Version;
readonly patches: Array<Patch>;
}
export interface DB {
get(key: string): Promise<any>;
getWithVersion(key: string): Promise<VersionedMaybeObject>;
setIfVersion(key: string, value: ({}) | (Array<any>) | ((null) | (string) | (number) | (boolean)), version: Version): Promise<boolean>;
startPolling(key: string): Promise<VersionedMaybeObject>;
create(key: string, value: ({}) | (Array<any>) | ((null) | (string) | (number) | (boolean))): Promise<boolean>;
remove(key: string): Promise<boolean>;
}
export interface AddOperation_of_any_end {
readonly op: "add";
readonly value: any;
readonly path: string;
}
export interface RemoveOperation {
readonly op: "remove";
readonly path: string;
}
export interface ReplaceOperation_of_any_end {
readonly op: "replace";
readonly value: any;
readonly path: string;
}
export interface MoveOperation {
readonly op: "move";
readonly from: string;
readonly path: string;
}
export interface CopyOperation {
readonly op: "copy";
readonly from: string;
readonly path: string;
}
export interface TestOperation_of_any_end {
readonly op: "test";
readonly value: any;
readonly path: string;
}
export interface GetOperation_of_any_end {
readonly op: "_get";
readonly value: any;
readonly path: string;
}

@@ -6,3 +6,1596 @@ "use strict";

"$schema": "http://json-schema.org/draft-07/schema#",
"definitions": {}
"definitions": {
"Comparable": {
"anyOf": [
{
"description": "Enables basic storage and retrieval of dates and times.",
"type": "string",
"format": "date-time",
"coerce-date": true
},
{
"type": [
"string",
"number"
]
}
]
},
"Equatable": {
"anyOf": [
{
"description": "Enables basic storage and retrieval of dates and times.",
"type": "string",
"format": "date-time",
"coerce-date": true
},
{
"type": [
"string",
"number",
"boolean"
]
}
]
},
"Serializable": {
"anyOf": [
{
"type": "object",
"properties": {}
},
{
"type": "array",
"items": {}
},
{
"type": [
"null",
"string",
"number",
"boolean"
]
}
]
},
"PathFilter": {
"type": "object",
"properties": {
"path": {
"type": "array",
"items": {
"type": "string"
}
}
},
"propertyOrder": [
"path"
],
"required": [
"path"
]
},
"EqFilter": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": [
"eq"
]
},
"value": {
"anyOf": [
{
"description": "Enables basic storage and retrieval of dates and times.",
"type": "string",
"format": "date-time",
"coerce-date": true
},
{
"type": [
"string",
"number",
"boolean"
]
}
]
},
"path": {
"type": "array",
"items": {
"type": "string"
}
}
},
"propertyOrder": [
"operator",
"value",
"path"
],
"required": [
"operator",
"path",
"value"
]
},
"NeFilter": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": [
"ne"
]
},
"value": {
"anyOf": [
{
"description": "Enables basic storage and retrieval of dates and times.",
"type": "string",
"format": "date-time",
"coerce-date": true
},
{
"type": [
"string",
"number",
"boolean"
]
}
]
},
"path": {
"type": "array",
"items": {
"type": "string"
}
}
},
"propertyOrder": [
"operator",
"value",
"path"
],
"required": [
"operator",
"path",
"value"
]
},
"ComparableFilter": {
"type": "object",
"properties": {
"value": {
"anyOf": [
{
"description": "Enables basic storage and retrieval of dates and times.",
"type": "string",
"format": "date-time",
"coerce-date": true
},
{
"type": [
"string",
"number"
]
}
]
},
"path": {
"type": "array",
"items": {
"type": "string"
}
}
},
"propertyOrder": [
"value",
"path"
],
"required": [
"path",
"value"
]
},
"GtFilter": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": [
"gt"
]
},
"value": {
"anyOf": [
{
"description": "Enables basic storage and retrieval of dates and times.",
"type": "string",
"format": "date-time",
"coerce-date": true
},
{
"type": [
"string",
"number"
]
}
]
},
"path": {
"type": "array",
"items": {
"type": "string"
}
}
},
"propertyOrder": [
"operator",
"value",
"path"
],
"required": [
"operator",
"path",
"value"
]
},
"GteFilter": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": [
"gte"
]
},
"value": {
"anyOf": [
{
"description": "Enables basic storage and retrieval of dates and times.",
"type": "string",
"format": "date-time",
"coerce-date": true
},
{
"type": [
"string",
"number"
]
}
]
},
"path": {
"type": "array",
"items": {
"type": "string"
}
}
},
"propertyOrder": [
"operator",
"value",
"path"
],
"required": [
"operator",
"path",
"value"
]
},
"LtFilter": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": [
"lt"
]
},
"value": {
"anyOf": [
{
"description": "Enables basic storage and retrieval of dates and times.",
"type": "string",
"format": "date-time",
"coerce-date": true
},
{
"type": [
"string",
"number"
]
}
]
},
"path": {
"type": "array",
"items": {
"type": "string"
}
}
},
"propertyOrder": [
"operator",
"value",
"path"
],
"required": [
"operator",
"path",
"value"
]
},
"LteFilter": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": [
"lte"
]
},
"value": {
"anyOf": [
{
"description": "Enables basic storage and retrieval of dates and times.",
"type": "string",
"format": "date-time",
"coerce-date": true
},
{
"type": [
"string",
"number"
]
}
]
},
"path": {
"type": "array",
"items": {
"type": "string"
}
}
},
"propertyOrder": [
"operator",
"value",
"path"
],
"required": [
"operator",
"path",
"value"
]
},
"ExistsFilter": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": [
"exists"
]
},
"path": {
"type": "array",
"items": {
"type": "string"
}
}
},
"propertyOrder": [
"operator",
"path"
],
"required": [
"operator",
"path"
]
},
"IsNullFilter": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": [
"isNull"
]
},
"path": {
"type": "array",
"items": {
"type": "string"
}
}
},
"propertyOrder": [
"operator",
"path"
],
"required": [
"operator",
"path"
]
},
"MatchesFilter": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": [
"matches"
]
},
"pattern": {
"type": "string"
},
"caseInsensitive": {
"type": "boolean"
},
"path": {
"type": "array",
"items": {
"type": "string"
}
}
},
"propertyOrder": [
"operator",
"pattern",
"caseInsensitive",
"path"
],
"required": [
"caseInsensitive",
"operator",
"path",
"pattern"
]
},
"StartsWithFilter": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": [
"startsWith"
]
},
"value": {
"type": "string"
},
"path": {
"type": "array",
"items": {
"type": "string"
}
}
},
"propertyOrder": [
"operator",
"value",
"path"
],
"required": [
"operator",
"path",
"value"
]
},
"AndFilter": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": [
"and"
]
},
"filters": {
"type": "array",
"items": {
"anyOf": [
{
"$ref": "#/definitions/EqFilter"
},
{
"$ref": "#/definitions/NeFilter"
},
{
"$ref": "#/definitions/GtFilter"
},
{
"$ref": "#/definitions/GteFilter"
},
{
"$ref": "#/definitions/LtFilter"
},
{
"$ref": "#/definitions/LteFilter"
},
{
"$ref": "#/definitions/ExistsFilter"
},
{
"$ref": "#/definitions/IsNullFilter"
},
{
"$ref": "#/definitions/MatchesFilter"
},
{
"$ref": "#/definitions/StartsWithFilter"
},
{
"$ref": "#/definitions/AndFilter"
},
{
"$ref": "#/definitions/OrFilter"
},
{
"$ref": "#/definitions/NotFilter"
}
]
}
}
},
"propertyOrder": [
"operator",
"filters"
],
"required": [
"filters",
"operator"
]
},
"OrFilter": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": [
"or"
]
},
"filters": {
"type": "array",
"items": {
"anyOf": [
{
"$ref": "#/definitions/EqFilter"
},
{
"$ref": "#/definitions/NeFilter"
},
{
"$ref": "#/definitions/GtFilter"
},
{
"$ref": "#/definitions/GteFilter"
},
{
"$ref": "#/definitions/LtFilter"
},
{
"$ref": "#/definitions/LteFilter"
},
{
"$ref": "#/definitions/ExistsFilter"
},
{
"$ref": "#/definitions/IsNullFilter"
},
{
"$ref": "#/definitions/MatchesFilter"
},
{
"$ref": "#/definitions/StartsWithFilter"
},
{
"$ref": "#/definitions/AndFilter"
},
{
"$ref": "#/definitions/OrFilter"
},
{
"$ref": "#/definitions/NotFilter"
}
]
}
}
},
"propertyOrder": [
"operator",
"filters"
],
"required": [
"filters",
"operator"
]
},
"NotFilter": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": [
"not"
]
},
"filter": {
"anyOf": [
{
"$ref": "#/definitions/EqFilter"
},
{
"$ref": "#/definitions/NeFilter"
},
{
"$ref": "#/definitions/GtFilter"
},
{
"$ref": "#/definitions/GteFilter"
},
{
"$ref": "#/definitions/LtFilter"
},
{
"$ref": "#/definitions/LteFilter"
},
{
"$ref": "#/definitions/ExistsFilter"
},
{
"$ref": "#/definitions/IsNullFilter"
},
{
"$ref": "#/definitions/MatchesFilter"
},
{
"$ref": "#/definitions/StartsWithFilter"
},
{
"$ref": "#/definitions/AndFilter"
},
{
"$ref": "#/definitions/OrFilter"
},
{
"$ref": "#/definitions/NotFilter"
}
]
}
},
"propertyOrder": [
"operator",
"filter"
],
"required": [
"filter",
"operator"
]
},
"Filter": {
"anyOf": [
{
"$ref": "#/definitions/EqFilter"
},
{
"$ref": "#/definitions/NeFilter"
},
{
"$ref": "#/definitions/GtFilter"
},
{
"$ref": "#/definitions/GteFilter"
},
{
"$ref": "#/definitions/LtFilter"
},
{
"$ref": "#/definitions/LteFilter"
},
{
"$ref": "#/definitions/ExistsFilter"
},
{
"$ref": "#/definitions/IsNullFilter"
},
{
"$ref": "#/definitions/MatchesFilter"
},
{
"$ref": "#/definitions/StartsWithFilter"
},
{
"$ref": "#/definitions/AndFilter"
},
{
"$ref": "#/definitions/OrFilter"
},
{
"$ref": "#/definitions/NotFilter"
}
]
},
"Direction": {
"enum": [
"ASC",
"DESC"
],
"type": "string"
},
"Order": {
"type": "object",
"properties": {
"path": {
"type": "array",
"items": {
"type": "string"
}
},
"direction": {
"$ref": "#/definitions/Direction"
}
},
"propertyOrder": [
"path",
"direction"
],
"required": [
"direction",
"path"
]
},
"Query": {
"type": "object",
"properties": {
"filter": {
"anyOf": [
{
"$ref": "#/definitions/EqFilter"
},
{
"$ref": "#/definitions/NeFilter"
},
{
"$ref": "#/definitions/GtFilter"
},
{
"$ref": "#/definitions/GteFilter"
},
{
"$ref": "#/definitions/LtFilter"
},
{
"$ref": "#/definitions/LteFilter"
},
{
"$ref": "#/definitions/ExistsFilter"
},
{
"$ref": "#/definitions/IsNullFilter"
},
{
"$ref": "#/definitions/MatchesFilter"
},
{
"$ref": "#/definitions/StartsWithFilter"
},
{
"$ref": "#/definitions/AndFilter"
},
{
"$ref": "#/definitions/OrFilter"
},
{
"$ref": "#/definitions/NotFilter"
}
]
},
"limit": {
"type": "number"
},
"skip": {
"type": "number"
},
"orderBy": {
"type": "array",
"items": {
"$ref": "#/definitions/Order"
}
}
},
"propertyOrder": [
"filter",
"limit",
"skip",
"orderBy"
],
"required": [
"filter"
]
},
"ClientContext": {
"type": "object",
"properties": {
"auth": {
"type": "object",
"properties": {
"v1": {
"type": "object",
"properties": {
"accountId": {
"type": "string"
},
"token": {
"type": "string"
}
},
"propertyOrder": [
"accountId",
"token"
],
"required": [
"accountId",
"token"
]
}
},
"propertyOrder": [
"v1"
],
"required": [
"v1"
]
}
},
"propertyOrder": [
"auth"
],
"required": [
"auth"
]
},
"ServerOnlyContext": {
"type": "object",
"properties": {
"tags": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"propertyOrder": []
},
"logLevel": {
"type": "string"
},
"logExtra": {
"type": "object",
"additionalProperties": {},
"propertyOrder": []
},
"sampleRate": {
"type": "number"
}
},
"propertyOrder": [
"tags",
"logLevel",
"logExtra",
"sampleRate"
]
},
"UpdateOptions": {
"type": "object",
"properties": {
"operationId": {
"description": "Used to mark an update originated from a specific operation (useful for optimistic UI).\nThis is meant to be UUID generated by the client.",
"type": "string"
}
},
"propertyOrder": [
"operationId"
]
},
"Version": {
"type": "object",
"properties": {
"major": {
"type": "number"
},
"minor": {
"type": "number"
}
},
"propertyOrder": [
"major",
"minor"
],
"required": [
"major",
"minor"
]
},
"Patch": {
"type": "object",
"properties": {
"version": {
"$ref": "#/definitions/Version"
},
"operationId": {
"description": "Used to mark an update originated from a specific operation (useful for optimistic UI).",
"type": "string"
},
"ops": {
"type": "array",
"items": {
"anyOf": [
{
"$ref": "#/definitions/AddOperation<any>"
},
{
"$ref": "#/definitions/RemoveOperation"
},
{
"$ref": "#/definitions/ReplaceOperation<any>"
},
{
"$ref": "#/definitions/MoveOperation"
},
{
"$ref": "#/definitions/CopyOperation"
},
{
"$ref": "#/definitions/TestOperation<any>"
},
{
"$ref": "#/definitions/GetOperation<any>"
}
]
}
}
},
"propertyOrder": [
"version",
"operationId",
"ops"
],
"required": [
"ops",
"version"
]
},
"KeyedPatches": {
"type": "array",
"items": {
"type": "array",
"items": [
{
"type": "string"
},
{
"type": "array",
"items": {
"$ref": "#/definitions/Patch"
}
}
],
"minItems": 2,
"additionalItems": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"$ref": "#/definitions/Patch"
}
}
]
}
}
},
"VersionedObject": {
"type": "object",
"properties": {
"version": {
"$ref": "#/definitions/Version"
},
"value": {
"anyOf": [
{
"type": "object",
"properties": {}
},
{
"type": "array",
"items": {}
},
{
"type": [
"null",
"string",
"number",
"boolean"
]
}
]
}
},
"propertyOrder": [
"version",
"value"
],
"required": [
"value",
"version"
]
},
"VersionedMaybeObject": {
"type": "object",
"properties": {
"version": {
"$ref": "#/definitions/Version"
},
"value": {
"anyOf": [
{
"type": "object",
"properties": {}
},
{
"type": "array",
"items": {}
},
{
"type": [
"null",
"string",
"number",
"boolean"
]
}
]
}
},
"propertyOrder": [
"version",
"value"
],
"required": [
"version"
]
},
"Patches": {
"type": "object",
"properties": {
"patches": {
"description": "Stores changes made to the document, meant to be used internally by poll().",
"type": "array",
"items": {
"$ref": "#/definitions/Patch"
}
}
},
"propertyOrder": [
"patches"
],
"required": [
"patches"
]
},
"StoredDocument": {
"type": "object",
"properties": {
"updatedAt": {
"type": "number"
},
"version": {
"$ref": "#/definitions/Version"
},
"value": {
"anyOf": [
{
"type": "object",
"properties": {}
},
{
"type": "array",
"items": {}
},
{
"type": [
"null",
"string",
"number",
"boolean"
]
}
]
},
"patches": {
"description": "Stores changes made to the document, meant to be used internally by poll().",
"type": "array",
"items": {
"$ref": "#/definitions/Patch"
}
}
},
"propertyOrder": [
"updatedAt",
"version",
"value",
"patches"
],
"required": [
"patches",
"updatedAt",
"value",
"version"
]
},
"Tombstone": {
"description": "A deleted document in the database, used for updating and for\nstreaming.",
"type": "object",
"properties": {
"updatedAt": {
"type": "number"
},
"version": {
"$ref": "#/definitions/Version"
},
"patches": {
"description": "Stores changes made to the document, meant to be used internally by poll().",
"type": "array",
"items": {
"$ref": "#/definitions/Patch"
}
}
},
"propertyOrder": [
"updatedAt",
"version",
"patches"
],
"required": [
"patches",
"updatedAt",
"version"
]
},
"DB": {
"type": "object",
"properties": {
"get": {
"description": "Gets a single document.",
"type": "object",
"properties": {
"params": {
"type": "object",
"properties": {
"key": {
"type": "string"
}
},
"propertyOrder": [
"key"
],
"required": [
"key"
]
},
"returns": {}
},
"propertyOrder": [
"params",
"returns"
],
"required": [
"params",
"returns"
]
},
"getWithVersion": {
"description": "Gets a single document and its version. First half of an update cycle.",
"type": "object",
"properties": {
"params": {
"type": "object",
"properties": {
"key": {
"type": "string"
}
},
"propertyOrder": [
"key"
],
"required": [
"key"
]
},
"returns": {
"$ref": "#/definitions/VersionedMaybeObject"
}
},
"propertyOrder": [
"params",
"returns"
],
"required": [
"params",
"returns"
]
},
"setIfVersion": {
"description": "Updates document at key if version matches. Second half of an update cycle.",
"type": "object",
"properties": {
"params": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"value": {
"anyOf": [
{
"type": "object",
"properties": {}
},
{
"type": "array",
"items": {}
},
{
"type": [
"null",
"string",
"number",
"boolean"
]
}
]
},
"version": {
"$ref": "#/definitions/Version"
}
},
"propertyOrder": [
"key",
"value",
"version"
],
"required": [
"key",
"value",
"version"
]
},
"returns": {
"type": "boolean"
}
},
"propertyOrder": [
"params",
"returns"
],
"required": [
"params",
"returns"
]
},
"startPolling": {
"description": "Gets the \"current version\" of a document with the intent to poll on it.",
"type": "object",
"properties": {
"params": {
"type": "object",
"properties": {
"key": {
"type": "string"
}
},
"propertyOrder": [
"key"
],
"required": [
"key"
]
},
"returns": {
"$ref": "#/definitions/VersionedMaybeObject"
}
},
"propertyOrder": [
"params",
"returns"
],
"required": [
"params",
"returns"
]
},
"create": {
"description": "Creates a document for a given key.",
"type": "object",
"properties": {
"params": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"value": {
"anyOf": [
{
"type": "object",
"properties": {}
},
{
"type": "array",
"items": {}
},
{
"type": [
"null",
"string",
"number",
"boolean"
]
}
]
}
},
"propertyOrder": [
"key",
"value"
],
"required": [
"key",
"value"
]
},
"returns": {
"type": "boolean"
}
},
"propertyOrder": [
"params",
"returns"
],
"required": [
"params",
"returns"
]
},
"remove": {
"description": "Removes the document at key.",
"type": "object",
"properties": {
"params": {
"type": "object",
"properties": {
"key": {
"type": "string"
}
},
"propertyOrder": [
"key"
],
"required": [
"key"
]
},
"returns": {
"type": "boolean"
}
},
"propertyOrder": [
"params",
"returns"
],
"required": [
"params",
"returns"
]
}
},
"propertyOrder": [
"get",
"getWithVersion",
"setIfVersion",
"startPolling",
"create",
"remove"
],
"required": [
"create",
"get",
"getWithVersion",
"remove",
"setIfVersion",
"startPolling"
]
},
"AddOperation<any>": {
"type": "object",
"properties": {
"op": {
"type": "string",
"enum": [
"add"
]
},
"value": {},
"path": {
"type": "string"
}
},
"propertyOrder": [
"op",
"value",
"path"
],
"required": [
"op",
"path",
"value"
]
},
"RemoveOperation": {
"type": "object",
"properties": {
"op": {
"type": "string",
"enum": [
"remove"
]
},
"path": {
"type": "string"
}
},
"propertyOrder": [
"op",
"path"
],
"required": [
"op",
"path"
]
},
"ReplaceOperation<any>": {
"type": "object",
"properties": {
"op": {
"type": "string",
"enum": [
"replace"
]
},
"value": {},
"path": {
"type": "string"
}
},
"propertyOrder": [
"op",
"value",
"path"
],
"required": [
"op",
"path",
"value"
]
},
"MoveOperation": {
"type": "object",
"properties": {
"op": {
"type": "string",
"enum": [
"move"
]
},
"from": {
"type": "string"
},
"path": {
"type": "string"
}
},
"propertyOrder": [
"op",
"from",
"path"
],
"required": [
"from",
"op",
"path"
]
},
"CopyOperation": {
"type": "object",
"properties": {
"op": {
"type": "string",
"enum": [
"copy"
]
},
"from": {
"type": "string"
},
"path": {
"type": "string"
}
},
"propertyOrder": [
"op",
"from",
"path"
],
"required": [
"from",
"op",
"path"
]
},
"TestOperation<any>": {
"type": "object",
"properties": {
"op": {
"type": "string",
"enum": [
"test"
]
},
"value": {},
"path": {
"type": "string"
}
},
"propertyOrder": [
"op",
"value",
"path"
],
"required": [
"op",
"path",
"value"
]
},
"GetOperation<any>": {
"type": "object",
"properties": {
"op": {
"type": "string",
"enum": [
"_get"
]
},
"value": {},
"path": {
"type": "string"
}
},
"propertyOrder": [
"op",
"value",
"path"
],
"required": [
"op",
"path",
"value"
]
}
}
};

@@ -16,2 +1609,7 @@ class InternalServerError extends Error {

exports.InternalServerError = InternalServerError;
var Direction;
(function (Direction) {
Direction["ASC"] = "ASC";
Direction["DESC"] = "DESC";
})(Direction = exports.Direction || (exports.Direction = {}));
//# sourceMappingURL=interfaces.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["src/interfaces.ts"],"names":[],"mappings":";;AAAA,iBAAiB;AACJ,QAAA,MAAM,GAAG;IACpB,SAAS,EAAE,yCAAyC;IACpD,aAAa,EAAE,EAAE;CAClB,CAAC;AAEF,MAAa,mBAAoB,SAAQ,KAAK;IAA9C;;QACkB,SAAI,GAAG,qBAAqB,CAAC;IAC/C,CAAC;CAAA;AAFD,kDAEC"}
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["src/interfaces.ts"],"names":[],"mappings":"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"}

@@ -18,3 +18,8 @@ {

"name": "@binaris/shift-interfaces-node-client",
"version": "0.2.0-rc.0"
"version": "0.2.0",
"scripts": {
"lint": "echo generated code",
"test": "echo generated code",
"build": "tsc"
}
}

@@ -9,2 +9,42 @@ // tslint:disable

InternalServerError,
PathFilter,
EqFilter,
NeFilter,
ComparableFilter,
GtFilter,
GteFilter,
LtFilter,
LteFilter,
ExistsFilter,
IsNullFilter,
MatchesFilter,
StartsWithFilter,
AndFilter,
OrFilter,
NotFilter,
Order,
Query,
ClientContext,
ServerOnlyContext,
UpdateOptions,
Version,
Patch,
VersionedObject,
VersionedMaybeObject,
Patches,
StoredDocument,
Tombstone,
DB,
AddOperation_of_any_end,
RemoveOperation,
ReplaceOperation_of_any_end,
MoveOperation,
CopyOperation,
TestOperation_of_any_end,
GetOperation_of_any_end,
Direction,
Comparable,
Equatable,
Serializable,
Filter,
} from './interfaces';

@@ -46,2 +86,513 @@

export type Context = ClientContext;
export interface DB {
get(ctx: ClientContext ,key: string): Promise<any>;
getWithVersion(ctx: ClientContext ,key: string): Promise<VersionedMaybeObject>;
setIfVersion(ctx: ClientContext ,key: string, value: ({ }) | (Array<any>) | ((null) | (string) | (number) | (boolean)), version: Version): Promise<boolean>;
startPolling(ctx: ClientContext ,key: string): Promise<VersionedMaybeObject>;
create(ctx: ClientContext ,key: string, value: ({ }) | (Array<any>) | ((null) | (string) | (number) | (boolean))): Promise<boolean>;
remove(ctx: ClientContext ,key: string): Promise<boolean>;
}
export class DBClient {
public static readonly methods = [
'get',
'getWithVersion',
'setIfVersion',
'startPolling',
'create',
'remove',
];
public static readonly validators: ClassValidator = createReturnTypeValidator(schema, 'DB');
protected readonly props = schema.definitions.DB.properties;
public readonly validators: ClassValidator; // We don't have class name in method scope because mustache sux
public constructor(public readonly serverUrl: string, protected readonly options: Options = {}) {
this.validators = DBClient.validators;
}
public async get(ctx: ClientContext ,key: string, options?: Options): Promise<any> {
const body = {
ctx,
key,
};
const mergedOptions = {
serverUrl: this.serverUrl,
...this.options,
...options,
};
const { fetchImplementation, timeoutMs, headers, serverUrl, ...fetchOptions } = mergedOptions;
const fetchImpl = fetchImplementation || fetch;
let timeout: NodeJS.Timeout | undefined;
if (timeoutMs) {
const controller = new AbortController();
timeout = setTimeout(() => controller.abort(), timeoutMs);
(fetchOptions as any).signal = controller.signal;
}
let response: Response;
let responseBody: any;
let responseText: string | undefined;
let isJSON: boolean;
try {
response = await fetchImpl(`${serverUrl}/get`, {
...fetchOptions,
headers: {
...headers,
'Content-Type': 'application/json',
},
body: JSON.stringify(body),
method: 'POST',
});
isJSON = (response.headers.get('content-type') || '').startsWith('application/json');
if (isJSON) {
responseBody = await response.json();
} else {
responseText = await response.text();
}
} catch (err) {
if (err.message === 'The user aborted a request.') {
timeout = undefined;
throw new TimeoutError('Request aborted due to timeout', 'get', mergedOptions);
}
throw new RequestError(err.message, err, 'get', mergedOptions);
} finally {
if (timeout) clearTimeout(timeout);
}
if (response.status >= 200 && response.status < 300) {
const validator = this.validators.get;
const wrapped = { returns: responseBody }; // wrapped for coersion
if (!validator(wrapped)) {
throw new ValidationError('Failed to validate response', validator.errors);
}
return wrapped.returns as any;
} else if (!isJSON) {
// fall through to throw
} else if (response.status === 400) {
if (responseBody.name === 'ValidationError') {
throw new ValidationError(responseBody.message, responseBody.errors);
}
} else if (response.status === 500) {
throw new InternalServerError(responseBody.message);
}
throw new RequestError(`${response.status} - ${response.statusText}`,
{ responseText: responseText && responseText.slice(0, 256), responseBody },
'get',
mergedOptions);
}
public async getWithVersion(ctx: ClientContext ,key: string, options?: Options): Promise<VersionedMaybeObject> {
const body = {
ctx,
key,
};
const mergedOptions = {
serverUrl: this.serverUrl,
...this.options,
...options,
};
const { fetchImplementation, timeoutMs, headers, serverUrl, ...fetchOptions } = mergedOptions;
const fetchImpl = fetchImplementation || fetch;
let timeout: NodeJS.Timeout | undefined;
if (timeoutMs) {
const controller = new AbortController();
timeout = setTimeout(() => controller.abort(), timeoutMs);
(fetchOptions as any).signal = controller.signal;
}
let response: Response;
let responseBody: any;
let responseText: string | undefined;
let isJSON: boolean;
try {
response = await fetchImpl(`${serverUrl}/getWithVersion`, {
...fetchOptions,
headers: {
...headers,
'Content-Type': 'application/json',
},
body: JSON.stringify(body),
method: 'POST',
});
isJSON = (response.headers.get('content-type') || '').startsWith('application/json');
if (isJSON) {
responseBody = await response.json();
} else {
responseText = await response.text();
}
} catch (err) {
if (err.message === 'The user aborted a request.') {
timeout = undefined;
throw new TimeoutError('Request aborted due to timeout', 'getWithVersion', mergedOptions);
}
throw new RequestError(err.message, err, 'getWithVersion', mergedOptions);
} finally {
if (timeout) clearTimeout(timeout);
}
if (response.status >= 200 && response.status < 300) {
const validator = this.validators.getWithVersion;
const wrapped = { returns: responseBody }; // wrapped for coersion
if (!validator(wrapped)) {
throw new ValidationError('Failed to validate response', validator.errors);
}
return wrapped.returns as VersionedMaybeObject;
} else if (!isJSON) {
// fall through to throw
} else if (response.status === 400) {
if (responseBody.name === 'ValidationError') {
throw new ValidationError(responseBody.message, responseBody.errors);
}
} else if (response.status === 500) {
throw new InternalServerError(responseBody.message);
}
throw new RequestError(`${response.status} - ${response.statusText}`,
{ responseText: responseText && responseText.slice(0, 256), responseBody },
'getWithVersion',
mergedOptions);
}
public async setIfVersion(ctx: ClientContext ,key: string, value: ({ }) | (Array<any>) | ((null) | (string) | (number) | (boolean)), version: Version, options?: Options): Promise<boolean> {
const body = {
ctx,
key,
value,
version,
};
const mergedOptions = {
serverUrl: this.serverUrl,
...this.options,
...options,
};
const { fetchImplementation, timeoutMs, headers, serverUrl, ...fetchOptions } = mergedOptions;
const fetchImpl = fetchImplementation || fetch;
let timeout: NodeJS.Timeout | undefined;
if (timeoutMs) {
const controller = new AbortController();
timeout = setTimeout(() => controller.abort(), timeoutMs);
(fetchOptions as any).signal = controller.signal;
}
let response: Response;
let responseBody: any;
let responseText: string | undefined;
let isJSON: boolean;
try {
response = await fetchImpl(`${serverUrl}/setIfVersion`, {
...fetchOptions,
headers: {
...headers,
'Content-Type': 'application/json',
},
body: JSON.stringify(body),
method: 'POST',
});
isJSON = (response.headers.get('content-type') || '').startsWith('application/json');
if (isJSON) {
responseBody = await response.json();
} else {
responseText = await response.text();
}
} catch (err) {
if (err.message === 'The user aborted a request.') {
timeout = undefined;
throw new TimeoutError('Request aborted due to timeout', 'setIfVersion', mergedOptions);
}
throw new RequestError(err.message, err, 'setIfVersion', mergedOptions);
} finally {
if (timeout) clearTimeout(timeout);
}
if (response.status >= 200 && response.status < 300) {
const validator = this.validators.setIfVersion;
const wrapped = { returns: responseBody }; // wrapped for coersion
if (!validator(wrapped)) {
throw new ValidationError('Failed to validate response', validator.errors);
}
return wrapped.returns as boolean;
} else if (!isJSON) {
// fall through to throw
} else if (response.status === 400) {
if (responseBody.name === 'ValidationError') {
throw new ValidationError(responseBody.message, responseBody.errors);
}
} else if (response.status === 500) {
throw new InternalServerError(responseBody.message);
}
throw new RequestError(`${response.status} - ${response.statusText}`,
{ responseText: responseText && responseText.slice(0, 256), responseBody },
'setIfVersion',
mergedOptions);
}
public async startPolling(ctx: ClientContext ,key: string, options?: Options): Promise<VersionedMaybeObject> {
const body = {
ctx,
key,
};
const mergedOptions = {
serverUrl: this.serverUrl,
...this.options,
...options,
};
const { fetchImplementation, timeoutMs, headers, serverUrl, ...fetchOptions } = mergedOptions;
const fetchImpl = fetchImplementation || fetch;
let timeout: NodeJS.Timeout | undefined;
if (timeoutMs) {
const controller = new AbortController();
timeout = setTimeout(() => controller.abort(), timeoutMs);
(fetchOptions as any).signal = controller.signal;
}
let response: Response;
let responseBody: any;
let responseText: string | undefined;
let isJSON: boolean;
try {
response = await fetchImpl(`${serverUrl}/startPolling`, {
...fetchOptions,
headers: {
...headers,
'Content-Type': 'application/json',
},
body: JSON.stringify(body),
method: 'POST',
});
isJSON = (response.headers.get('content-type') || '').startsWith('application/json');
if (isJSON) {
responseBody = await response.json();
} else {
responseText = await response.text();
}
} catch (err) {
if (err.message === 'The user aborted a request.') {
timeout = undefined;
throw new TimeoutError('Request aborted due to timeout', 'startPolling', mergedOptions);
}
throw new RequestError(err.message, err, 'startPolling', mergedOptions);
} finally {
if (timeout) clearTimeout(timeout);
}
if (response.status >= 200 && response.status < 300) {
const validator = this.validators.startPolling;
const wrapped = { returns: responseBody }; // wrapped for coersion
if (!validator(wrapped)) {
throw new ValidationError('Failed to validate response', validator.errors);
}
return wrapped.returns as VersionedMaybeObject;
} else if (!isJSON) {
// fall through to throw
} else if (response.status === 400) {
if (responseBody.name === 'ValidationError') {
throw new ValidationError(responseBody.message, responseBody.errors);
}
} else if (response.status === 500) {
throw new InternalServerError(responseBody.message);
}
throw new RequestError(`${response.status} - ${response.statusText}`,
{ responseText: responseText && responseText.slice(0, 256), responseBody },
'startPolling',
mergedOptions);
}
public async create(ctx: ClientContext ,key: string, value: ({ }) | (Array<any>) | ((null) | (string) | (number) | (boolean)), options?: Options): Promise<boolean> {
const body = {
ctx,
key,
value,
};
const mergedOptions = {
serverUrl: this.serverUrl,
...this.options,
...options,
};
const { fetchImplementation, timeoutMs, headers, serverUrl, ...fetchOptions } = mergedOptions;
const fetchImpl = fetchImplementation || fetch;
let timeout: NodeJS.Timeout | undefined;
if (timeoutMs) {
const controller = new AbortController();
timeout = setTimeout(() => controller.abort(), timeoutMs);
(fetchOptions as any).signal = controller.signal;
}
let response: Response;
let responseBody: any;
let responseText: string | undefined;
let isJSON: boolean;
try {
response = await fetchImpl(`${serverUrl}/create`, {
...fetchOptions,
headers: {
...headers,
'Content-Type': 'application/json',
},
body: JSON.stringify(body),
method: 'POST',
});
isJSON = (response.headers.get('content-type') || '').startsWith('application/json');
if (isJSON) {
responseBody = await response.json();
} else {
responseText = await response.text();
}
} catch (err) {
if (err.message === 'The user aborted a request.') {
timeout = undefined;
throw new TimeoutError('Request aborted due to timeout', 'create', mergedOptions);
}
throw new RequestError(err.message, err, 'create', mergedOptions);
} finally {
if (timeout) clearTimeout(timeout);
}
if (response.status >= 200 && response.status < 300) {
const validator = this.validators.create;
const wrapped = { returns: responseBody }; // wrapped for coersion
if (!validator(wrapped)) {
throw new ValidationError('Failed to validate response', validator.errors);
}
return wrapped.returns as boolean;
} else if (!isJSON) {
// fall through to throw
} else if (response.status === 400) {
if (responseBody.name === 'ValidationError') {
throw new ValidationError(responseBody.message, responseBody.errors);
}
} else if (response.status === 500) {
throw new InternalServerError(responseBody.message);
}
throw new RequestError(`${response.status} - ${response.statusText}`,
{ responseText: responseText && responseText.slice(0, 256), responseBody },
'create',
mergedOptions);
}
public async remove(ctx: ClientContext ,key: string, options?: Options): Promise<boolean> {
const body = {
ctx,
key,
};
const mergedOptions = {
serverUrl: this.serverUrl,
...this.options,
...options,
};
const { fetchImplementation, timeoutMs, headers, serverUrl, ...fetchOptions } = mergedOptions;
const fetchImpl = fetchImplementation || fetch;
let timeout: NodeJS.Timeout | undefined;
if (timeoutMs) {
const controller = new AbortController();
timeout = setTimeout(() => controller.abort(), timeoutMs);
(fetchOptions as any).signal = controller.signal;
}
let response: Response;
let responseBody: any;
let responseText: string | undefined;
let isJSON: boolean;
try {
response = await fetchImpl(`${serverUrl}/remove`, {
...fetchOptions,
headers: {
...headers,
'Content-Type': 'application/json',
},
body: JSON.stringify(body),
method: 'POST',
});
isJSON = (response.headers.get('content-type') || '').startsWith('application/json');
if (isJSON) {
responseBody = await response.json();
} else {
responseText = await response.text();
}
} catch (err) {
if (err.message === 'The user aborted a request.') {
timeout = undefined;
throw new TimeoutError('Request aborted due to timeout', 'remove', mergedOptions);
}
throw new RequestError(err.message, err, 'remove', mergedOptions);
} finally {
if (timeout) clearTimeout(timeout);
}
if (response.status >= 200 && response.status < 300) {
const validator = this.validators.remove;
const wrapped = { returns: responseBody }; // wrapped for coersion
if (!validator(wrapped)) {
throw new ValidationError('Failed to validate response', validator.errors);
}
return wrapped.returns as boolean;
} else if (!isJSON) {
// fall through to throw
} else if (response.status === 400) {
if (responseBody.name === 'ValidationError') {
throw new ValidationError(responseBody.message, responseBody.errors);
}
} else if (response.status === 500) {
throw new InternalServerError(responseBody.message);
}
throw new RequestError(`${response.status} - ${response.statusText}`,
{ responseText: responseText && responseText.slice(0, 256), responseBody },
'remove',
mergedOptions);
}
}
// tslint:disable
export const schema = {
"$schema": "http://json-schema.org/draft-07/schema#",
"definitions": {}
"definitions": {
"Comparable": {
"anyOf": [
{
"description": "Enables basic storage and retrieval of dates and times.",
"type": "string",
"format": "date-time",
"coerce-date": true
},
{
"type": [
"string",
"number"
]
}
]
},
"Equatable": {
"anyOf": [
{
"description": "Enables basic storage and retrieval of dates and times.",
"type": "string",
"format": "date-time",
"coerce-date": true
},
{
"type": [
"string",
"number",
"boolean"
]
}
]
},
"Serializable": {
"anyOf": [
{
"type": "object",
"properties": {}
},
{
"type": "array",
"items": {}
},
{
"type": [
"null",
"string",
"number",
"boolean"
]
}
]
},
"PathFilter": {
"type": "object",
"properties": {
"path": {
"type": "array",
"items": {
"type": "string"
}
}
},
"propertyOrder": [
"path"
],
"required": [
"path"
]
},
"EqFilter": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": [
"eq"
]
},
"value": {
"anyOf": [
{
"description": "Enables basic storage and retrieval of dates and times.",
"type": "string",
"format": "date-time",
"coerce-date": true
},
{
"type": [
"string",
"number",
"boolean"
]
}
]
},
"path": {
"type": "array",
"items": {
"type": "string"
}
}
},
"propertyOrder": [
"operator",
"value",
"path"
],
"required": [
"operator",
"path",
"value"
]
},
"NeFilter": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": [
"ne"
]
},
"value": {
"anyOf": [
{
"description": "Enables basic storage and retrieval of dates and times.",
"type": "string",
"format": "date-time",
"coerce-date": true
},
{
"type": [
"string",
"number",
"boolean"
]
}
]
},
"path": {
"type": "array",
"items": {
"type": "string"
}
}
},
"propertyOrder": [
"operator",
"value",
"path"
],
"required": [
"operator",
"path",
"value"
]
},
"ComparableFilter": {
"type": "object",
"properties": {
"value": {
"anyOf": [
{
"description": "Enables basic storage and retrieval of dates and times.",
"type": "string",
"format": "date-time",
"coerce-date": true
},
{
"type": [
"string",
"number"
]
}
]
},
"path": {
"type": "array",
"items": {
"type": "string"
}
}
},
"propertyOrder": [
"value",
"path"
],
"required": [
"path",
"value"
]
},
"GtFilter": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": [
"gt"
]
},
"value": {
"anyOf": [
{
"description": "Enables basic storage and retrieval of dates and times.",
"type": "string",
"format": "date-time",
"coerce-date": true
},
{
"type": [
"string",
"number"
]
}
]
},
"path": {
"type": "array",
"items": {
"type": "string"
}
}
},
"propertyOrder": [
"operator",
"value",
"path"
],
"required": [
"operator",
"path",
"value"
]
},
"GteFilter": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": [
"gte"
]
},
"value": {
"anyOf": [
{
"description": "Enables basic storage and retrieval of dates and times.",
"type": "string",
"format": "date-time",
"coerce-date": true
},
{
"type": [
"string",
"number"
]
}
]
},
"path": {
"type": "array",
"items": {
"type": "string"
}
}
},
"propertyOrder": [
"operator",
"value",
"path"
],
"required": [
"operator",
"path",
"value"
]
},
"LtFilter": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": [
"lt"
]
},
"value": {
"anyOf": [
{
"description": "Enables basic storage and retrieval of dates and times.",
"type": "string",
"format": "date-time",
"coerce-date": true
},
{
"type": [
"string",
"number"
]
}
]
},
"path": {
"type": "array",
"items": {
"type": "string"
}
}
},
"propertyOrder": [
"operator",
"value",
"path"
],
"required": [
"operator",
"path",
"value"
]
},
"LteFilter": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": [
"lte"
]
},
"value": {
"anyOf": [
{
"description": "Enables basic storage and retrieval of dates and times.",
"type": "string",
"format": "date-time",
"coerce-date": true
},
{
"type": [
"string",
"number"
]
}
]
},
"path": {
"type": "array",
"items": {
"type": "string"
}
}
},
"propertyOrder": [
"operator",
"value",
"path"
],
"required": [
"operator",
"path",
"value"
]
},
"ExistsFilter": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": [
"exists"
]
},
"path": {
"type": "array",
"items": {
"type": "string"
}
}
},
"propertyOrder": [
"operator",
"path"
],
"required": [
"operator",
"path"
]
},
"IsNullFilter": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": [
"isNull"
]
},
"path": {
"type": "array",
"items": {
"type": "string"
}
}
},
"propertyOrder": [
"operator",
"path"
],
"required": [
"operator",
"path"
]
},
"MatchesFilter": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": [
"matches"
]
},
"pattern": {
"type": "string"
},
"caseInsensitive": {
"type": "boolean"
},
"path": {
"type": "array",
"items": {
"type": "string"
}
}
},
"propertyOrder": [
"operator",
"pattern",
"caseInsensitive",
"path"
],
"required": [
"caseInsensitive",
"operator",
"path",
"pattern"
]
},
"StartsWithFilter": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": [
"startsWith"
]
},
"value": {
"type": "string"
},
"path": {
"type": "array",
"items": {
"type": "string"
}
}
},
"propertyOrder": [
"operator",
"value",
"path"
],
"required": [
"operator",
"path",
"value"
]
},
"AndFilter": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": [
"and"
]
},
"filters": {
"type": "array",
"items": {
"anyOf": [
{
"$ref": "#/definitions/EqFilter"
},
{
"$ref": "#/definitions/NeFilter"
},
{
"$ref": "#/definitions/GtFilter"
},
{
"$ref": "#/definitions/GteFilter"
},
{
"$ref": "#/definitions/LtFilter"
},
{
"$ref": "#/definitions/LteFilter"
},
{
"$ref": "#/definitions/ExistsFilter"
},
{
"$ref": "#/definitions/IsNullFilter"
},
{
"$ref": "#/definitions/MatchesFilter"
},
{
"$ref": "#/definitions/StartsWithFilter"
},
{
"$ref": "#/definitions/AndFilter"
},
{
"$ref": "#/definitions/OrFilter"
},
{
"$ref": "#/definitions/NotFilter"
}
]
}
}
},
"propertyOrder": [
"operator",
"filters"
],
"required": [
"filters",
"operator"
]
},
"OrFilter": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": [
"or"
]
},
"filters": {
"type": "array",
"items": {
"anyOf": [
{
"$ref": "#/definitions/EqFilter"
},
{
"$ref": "#/definitions/NeFilter"
},
{
"$ref": "#/definitions/GtFilter"
},
{
"$ref": "#/definitions/GteFilter"
},
{
"$ref": "#/definitions/LtFilter"
},
{
"$ref": "#/definitions/LteFilter"
},
{
"$ref": "#/definitions/ExistsFilter"
},
{
"$ref": "#/definitions/IsNullFilter"
},
{
"$ref": "#/definitions/MatchesFilter"
},
{
"$ref": "#/definitions/StartsWithFilter"
},
{
"$ref": "#/definitions/AndFilter"
},
{
"$ref": "#/definitions/OrFilter"
},
{
"$ref": "#/definitions/NotFilter"
}
]
}
}
},
"propertyOrder": [
"operator",
"filters"
],
"required": [
"filters",
"operator"
]
},
"NotFilter": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": [
"not"
]
},
"filter": {
"anyOf": [
{
"$ref": "#/definitions/EqFilter"
},
{
"$ref": "#/definitions/NeFilter"
},
{
"$ref": "#/definitions/GtFilter"
},
{
"$ref": "#/definitions/GteFilter"
},
{
"$ref": "#/definitions/LtFilter"
},
{
"$ref": "#/definitions/LteFilter"
},
{
"$ref": "#/definitions/ExistsFilter"
},
{
"$ref": "#/definitions/IsNullFilter"
},
{
"$ref": "#/definitions/MatchesFilter"
},
{
"$ref": "#/definitions/StartsWithFilter"
},
{
"$ref": "#/definitions/AndFilter"
},
{
"$ref": "#/definitions/OrFilter"
},
{
"$ref": "#/definitions/NotFilter"
}
]
}
},
"propertyOrder": [
"operator",
"filter"
],
"required": [
"filter",
"operator"
]
},
"Filter": {
"anyOf": [
{
"$ref": "#/definitions/EqFilter"
},
{
"$ref": "#/definitions/NeFilter"
},
{
"$ref": "#/definitions/GtFilter"
},
{
"$ref": "#/definitions/GteFilter"
},
{
"$ref": "#/definitions/LtFilter"
},
{
"$ref": "#/definitions/LteFilter"
},
{
"$ref": "#/definitions/ExistsFilter"
},
{
"$ref": "#/definitions/IsNullFilter"
},
{
"$ref": "#/definitions/MatchesFilter"
},
{
"$ref": "#/definitions/StartsWithFilter"
},
{
"$ref": "#/definitions/AndFilter"
},
{
"$ref": "#/definitions/OrFilter"
},
{
"$ref": "#/definitions/NotFilter"
}
]
},
"Direction": {
"enum": [
"ASC",
"DESC"
],
"type": "string"
},
"Order": {
"type": "object",
"properties": {
"path": {
"type": "array",
"items": {
"type": "string"
}
},
"direction": {
"$ref": "#/definitions/Direction"
}
},
"propertyOrder": [
"path",
"direction"
],
"required": [
"direction",
"path"
]
},
"Query": {
"type": "object",
"properties": {
"filter": {
"anyOf": [
{
"$ref": "#/definitions/EqFilter"
},
{
"$ref": "#/definitions/NeFilter"
},
{
"$ref": "#/definitions/GtFilter"
},
{
"$ref": "#/definitions/GteFilter"
},
{
"$ref": "#/definitions/LtFilter"
},
{
"$ref": "#/definitions/LteFilter"
},
{
"$ref": "#/definitions/ExistsFilter"
},
{
"$ref": "#/definitions/IsNullFilter"
},
{
"$ref": "#/definitions/MatchesFilter"
},
{
"$ref": "#/definitions/StartsWithFilter"
},
{
"$ref": "#/definitions/AndFilter"
},
{
"$ref": "#/definitions/OrFilter"
},
{
"$ref": "#/definitions/NotFilter"
}
]
},
"limit": {
"type": "number"
},
"skip": {
"type": "number"
},
"orderBy": {
"type": "array",
"items": {
"$ref": "#/definitions/Order"
}
}
},
"propertyOrder": [
"filter",
"limit",
"skip",
"orderBy"
],
"required": [
"filter"
]
},
"ClientContext": {
"type": "object",
"properties": {
"auth": {
"type": "object",
"properties": {
"v1": {
"type": "object",
"properties": {
"accountId": {
"type": "string"
},
"token": {
"type": "string"
}
},
"propertyOrder": [
"accountId",
"token"
],
"required": [
"accountId",
"token"
]
}
},
"propertyOrder": [
"v1"
],
"required": [
"v1"
]
}
},
"propertyOrder": [
"auth"
],
"required": [
"auth"
]
},
"ServerOnlyContext": {
"type": "object",
"properties": {
"tags": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"propertyOrder": []
},
"logLevel": {
"type": "string"
},
"logExtra": {
"type": "object",
"additionalProperties": {},
"propertyOrder": []
},
"sampleRate": {
"type": "number"
}
},
"propertyOrder": [
"tags",
"logLevel",
"logExtra",
"sampleRate"
]
},
"UpdateOptions": {
"type": "object",
"properties": {
"operationId": {
"description": "Used to mark an update originated from a specific operation (useful for optimistic UI).\nThis is meant to be UUID generated by the client.",
"type": "string"
}
},
"propertyOrder": [
"operationId"
]
},
"Version": {
"type": "object",
"properties": {
"major": {
"type": "number"
},
"minor": {
"type": "number"
}
},
"propertyOrder": [
"major",
"minor"
],
"required": [
"major",
"minor"
]
},
"Patch": {
"type": "object",
"properties": {
"version": {
"$ref": "#/definitions/Version"
},
"operationId": {
"description": "Used to mark an update originated from a specific operation (useful for optimistic UI).",
"type": "string"
},
"ops": {
"type": "array",
"items": {
"anyOf": [
{
"$ref": "#/definitions/AddOperation<any>"
},
{
"$ref": "#/definitions/RemoveOperation"
},
{
"$ref": "#/definitions/ReplaceOperation<any>"
},
{
"$ref": "#/definitions/MoveOperation"
},
{
"$ref": "#/definitions/CopyOperation"
},
{
"$ref": "#/definitions/TestOperation<any>"
},
{
"$ref": "#/definitions/GetOperation<any>"
}
]
}
}
},
"propertyOrder": [
"version",
"operationId",
"ops"
],
"required": [
"ops",
"version"
]
},
"KeyedPatches": {
"type": "array",
"items": {
"type": "array",
"items": [
{
"type": "string"
},
{
"type": "array",
"items": {
"$ref": "#/definitions/Patch"
}
}
],
"minItems": 2,
"additionalItems": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"$ref": "#/definitions/Patch"
}
}
]
}
}
},
"VersionedObject": {
"type": "object",
"properties": {
"version": {
"$ref": "#/definitions/Version"
},
"value": {
"anyOf": [
{
"type": "object",
"properties": {}
},
{
"type": "array",
"items": {}
},
{
"type": [
"null",
"string",
"number",
"boolean"
]
}
]
}
},
"propertyOrder": [
"version",
"value"
],
"required": [
"value",
"version"
]
},
"VersionedMaybeObject": {
"type": "object",
"properties": {
"version": {
"$ref": "#/definitions/Version"
},
"value": {
"anyOf": [
{
"type": "object",
"properties": {}
},
{
"type": "array",
"items": {}
},
{
"type": [
"null",
"string",
"number",
"boolean"
]
}
]
}
},
"propertyOrder": [
"version",
"value"
],
"required": [
"version"
]
},
"Patches": {
"type": "object",
"properties": {
"patches": {
"description": "Stores changes made to the document, meant to be used internally by poll().",
"type": "array",
"items": {
"$ref": "#/definitions/Patch"
}
}
},
"propertyOrder": [
"patches"
],
"required": [
"patches"
]
},
"StoredDocument": {
"type": "object",
"properties": {
"updatedAt": {
"type": "number"
},
"version": {
"$ref": "#/definitions/Version"
},
"value": {
"anyOf": [
{
"type": "object",
"properties": {}
},
{
"type": "array",
"items": {}
},
{
"type": [
"null",
"string",
"number",
"boolean"
]
}
]
},
"patches": {
"description": "Stores changes made to the document, meant to be used internally by poll().",
"type": "array",
"items": {
"$ref": "#/definitions/Patch"
}
}
},
"propertyOrder": [
"updatedAt",
"version",
"value",
"patches"
],
"required": [
"patches",
"updatedAt",
"value",
"version"
]
},
"Tombstone": {
"description": "A deleted document in the database, used for updating and for\nstreaming.",
"type": "object",
"properties": {
"updatedAt": {
"type": "number"
},
"version": {
"$ref": "#/definitions/Version"
},
"patches": {
"description": "Stores changes made to the document, meant to be used internally by poll().",
"type": "array",
"items": {
"$ref": "#/definitions/Patch"
}
}
},
"propertyOrder": [
"updatedAt",
"version",
"patches"
],
"required": [
"patches",
"updatedAt",
"version"
]
},
"DB": {
"type": "object",
"properties": {
"get": {
"description": "Gets a single document.",
"type": "object",
"properties": {
"params": {
"type": "object",
"properties": {
"key": {
"type": "string"
}
},
"propertyOrder": [
"key"
],
"required": [
"key"
]
},
"returns": {}
},
"propertyOrder": [
"params",
"returns"
],
"required": [
"params",
"returns"
]
},
"getWithVersion": {
"description": "Gets a single document and its version. First half of an update cycle.",
"type": "object",
"properties": {
"params": {
"type": "object",
"properties": {
"key": {
"type": "string"
}
},
"propertyOrder": [
"key"
],
"required": [
"key"
]
},
"returns": {
"$ref": "#/definitions/VersionedMaybeObject"
}
},
"propertyOrder": [
"params",
"returns"
],
"required": [
"params",
"returns"
]
},
"setIfVersion": {
"description": "Updates document at key if version matches. Second half of an update cycle.",
"type": "object",
"properties": {
"params": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"value": {
"anyOf": [
{
"type": "object",
"properties": {}
},
{
"type": "array",
"items": {}
},
{
"type": [
"null",
"string",
"number",
"boolean"
]
}
]
},
"version": {
"$ref": "#/definitions/Version"
}
},
"propertyOrder": [
"key",
"value",
"version"
],
"required": [
"key",
"value",
"version"
]
},
"returns": {
"type": "boolean"
}
},
"propertyOrder": [
"params",
"returns"
],
"required": [
"params",
"returns"
]
},
"startPolling": {
"description": "Gets the \"current version\" of a document with the intent to poll on it.",
"type": "object",
"properties": {
"params": {
"type": "object",
"properties": {
"key": {
"type": "string"
}
},
"propertyOrder": [
"key"
],
"required": [
"key"
]
},
"returns": {
"$ref": "#/definitions/VersionedMaybeObject"
}
},
"propertyOrder": [
"params",
"returns"
],
"required": [
"params",
"returns"
]
},
"create": {
"description": "Creates a document for a given key.",
"type": "object",
"properties": {
"params": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"value": {
"anyOf": [
{
"type": "object",
"properties": {}
},
{
"type": "array",
"items": {}
},
{
"type": [
"null",
"string",
"number",
"boolean"
]
}
]
}
},
"propertyOrder": [
"key",
"value"
],
"required": [
"key",
"value"
]
},
"returns": {
"type": "boolean"
}
},
"propertyOrder": [
"params",
"returns"
],
"required": [
"params",
"returns"
]
},
"remove": {
"description": "Removes the document at key.",
"type": "object",
"properties": {
"params": {
"type": "object",
"properties": {
"key": {
"type": "string"
}
},
"propertyOrder": [
"key"
],
"required": [
"key"
]
},
"returns": {
"type": "boolean"
}
},
"propertyOrder": [
"params",
"returns"
],
"required": [
"params",
"returns"
]
}
},
"propertyOrder": [
"get",
"getWithVersion",
"setIfVersion",
"startPolling",
"create",
"remove"
],
"required": [
"create",
"get",
"getWithVersion",
"remove",
"setIfVersion",
"startPolling"
]
},
"AddOperation<any>": {
"type": "object",
"properties": {
"op": {
"type": "string",
"enum": [
"add"
]
},
"value": {},
"path": {
"type": "string"
}
},
"propertyOrder": [
"op",
"value",
"path"
],
"required": [
"op",
"path",
"value"
]
},
"RemoveOperation": {
"type": "object",
"properties": {
"op": {
"type": "string",
"enum": [
"remove"
]
},
"path": {
"type": "string"
}
},
"propertyOrder": [
"op",
"path"
],
"required": [
"op",
"path"
]
},
"ReplaceOperation<any>": {
"type": "object",
"properties": {
"op": {
"type": "string",
"enum": [
"replace"
]
},
"value": {},
"path": {
"type": "string"
}
},
"propertyOrder": [
"op",
"value",
"path"
],
"required": [
"op",
"path",
"value"
]
},
"MoveOperation": {
"type": "object",
"properties": {
"op": {
"type": "string",
"enum": [
"move"
]
},
"from": {
"type": "string"
},
"path": {
"type": "string"
}
},
"propertyOrder": [
"op",
"from",
"path"
],
"required": [
"from",
"op",
"path"
]
},
"CopyOperation": {
"type": "object",
"properties": {
"op": {
"type": "string",
"enum": [
"copy"
]
},
"from": {
"type": "string"
},
"path": {
"type": "string"
}
},
"propertyOrder": [
"op",
"from",
"path"
],
"required": [
"from",
"op",
"path"
]
},
"TestOperation<any>": {
"type": "object",
"properties": {
"op": {
"type": "string",
"enum": [
"test"
]
},
"value": {},
"path": {
"type": "string"
}
},
"propertyOrder": [
"op",
"value",
"path"
],
"required": [
"op",
"path",
"value"
]
},
"GetOperation<any>": {
"type": "object",
"properties": {
"op": {
"type": "string",
"enum": [
"_get"
]
},
"value": {},
"path": {
"type": "string"
}
},
"propertyOrder": [
"op",
"value",
"path"
],
"required": [
"op",
"path",
"value"
]
}
}
};

@@ -11,1 +1604,212 @@

export enum Direction {
ASC = 'ASC',
DESC = 'DESC',
}
export type Comparable = (Date) | ((string) | (number));
export type Equatable = (Date) | ((string) | (number) | (boolean));
export type Serializable = ({ }) | (Array<any>) | ((null) | (string) | (number) | (boolean));
export type Filter = (EqFilter) | (NeFilter) | (GtFilter) | (GteFilter) | (LtFilter) | (LteFilter) | (ExistsFilter) | (IsNullFilter) | (MatchesFilter) | (StartsWithFilter) | (AndFilter) | (OrFilter) | (NotFilter);
export interface PathFilter {
readonly path: Array<string>;
}
export interface EqFilter {
readonly operator: "eq";
readonly value: (Date) | ((string) | (number) | (boolean));
readonly path: Array<string>;
}
export interface NeFilter {
readonly operator: "ne";
readonly value: (Date) | ((string) | (number) | (boolean));
readonly path: Array<string>;
}
export interface ComparableFilter {
readonly value: (Date) | ((string) | (number));
readonly path: Array<string>;
}
export interface GtFilter {
readonly operator: "gt";
readonly value: (Date) | ((string) | (number));
readonly path: Array<string>;
}
export interface GteFilter {
readonly operator: "gte";
readonly value: (Date) | ((string) | (number));
readonly path: Array<string>;
}
export interface LtFilter {
readonly operator: "lt";
readonly value: (Date) | ((string) | (number));
readonly path: Array<string>;
}
export interface LteFilter {
readonly operator: "lte";
readonly value: (Date) | ((string) | (number));
readonly path: Array<string>;
}
export interface ExistsFilter {
readonly operator: "exists";
readonly path: Array<string>;
}
export interface IsNullFilter {
readonly operator: "isNull";
readonly path: Array<string>;
}
export interface MatchesFilter {
readonly operator: "matches";
readonly pattern: string;
readonly caseInsensitive: boolean;
readonly path: Array<string>;
}
export interface StartsWithFilter {
readonly operator: "startsWith";
readonly value: string;
readonly path: Array<string>;
}
export interface AndFilter {
readonly operator: "and";
readonly filters: Array<(EqFilter) | (NeFilter) | (GtFilter) | (GteFilter) | (LtFilter) | (LteFilter) | (ExistsFilter) | (IsNullFilter) | (MatchesFilter) | (StartsWithFilter) | (AndFilter) | (OrFilter) | (NotFilter)>;
}
export interface OrFilter {
readonly operator: "or";
readonly filters: Array<(EqFilter) | (NeFilter) | (GtFilter) | (GteFilter) | (LtFilter) | (LteFilter) | (ExistsFilter) | (IsNullFilter) | (MatchesFilter) | (StartsWithFilter) | (AndFilter) | (OrFilter) | (NotFilter)>;
}
export interface NotFilter {
readonly operator: "not";
readonly filter: (EqFilter) | (NeFilter) | (GtFilter) | (GteFilter) | (LtFilter) | (LteFilter) | (ExistsFilter) | (IsNullFilter) | (MatchesFilter) | (StartsWithFilter) | (AndFilter) | (OrFilter) | (NotFilter);
}
export interface Order {
readonly path: Array<string>;
readonly direction: Direction;
}
export interface Query {
readonly filter: (EqFilter) | (NeFilter) | (GtFilter) | (GteFilter) | (LtFilter) | (LteFilter) | (ExistsFilter) | (IsNullFilter) | (MatchesFilter) | (StartsWithFilter) | (AndFilter) | (OrFilter) | (NotFilter);
readonly limit?: number;
readonly skip?: number;
readonly orderBy?: Array<Order>;
}
export interface ClientContext {
readonly auth: { v1: { accountId: string; token: string; }; };
}
export interface ServerOnlyContext {
readonly tags?: {};
readonly logLevel?: string;
readonly logExtra?: {};
readonly sampleRate?: number;
}
export interface UpdateOptions {
readonly operationId?: string;
}
export interface Version {
readonly major: number;
readonly minor: number;
}
export interface Patch {
readonly version: Version;
readonly operationId?: string;
readonly ops: Array<(AddOperation_of_any_end) | (RemoveOperation) | (ReplaceOperation_of_any_end) | (MoveOperation) | (CopyOperation) | (TestOperation_of_any_end) | (GetOperation_of_any_end)>;
}
export interface VersionedObject {
readonly version: Version;
readonly value: ({ }) | (Array<any>) | ((null) | (string) | (number) | (boolean));
}
export interface VersionedMaybeObject {
readonly version: Version;
readonly value?: ({ }) | (Array<any>) | ((null) | (string) | (number) | (boolean));
}
export interface Patches {
readonly patches: Array<Patch>;
}
export interface StoredDocument {
readonly updatedAt: number;
readonly version: Version;
readonly value: ({ }) | (Array<any>) | ((null) | (string) | (number) | (boolean));
readonly patches: Array<Patch>;
}
export interface Tombstone {
readonly updatedAt: number;
readonly version: Version;
readonly patches: Array<Patch>;
}
export interface DB {
get(key: string): Promise<any>;
getWithVersion(key: string): Promise<VersionedMaybeObject>;
setIfVersion(key: string, value: ({ }) | (Array<any>) | ((null) | (string) | (number) | (boolean)), version: Version): Promise<boolean>;
startPolling(key: string): Promise<VersionedMaybeObject>;
create(key: string, value: ({ }) | (Array<any>) | ((null) | (string) | (number) | (boolean))): Promise<boolean>;
remove(key: string): Promise<boolean>;
}
export interface AddOperation_of_any_end {
readonly op: "add";
readonly value: any;
readonly path: string;
}
export interface RemoveOperation {
readonly op: "remove";
readonly path: string;
}
export interface ReplaceOperation_of_any_end {
readonly op: "replace";
readonly value: any;
readonly path: string;
}
export interface MoveOperation {
readonly op: "move";
readonly from: string;
readonly path: string;
}
export interface CopyOperation {
readonly op: "copy";
readonly from: string;
readonly path: string;
}
export interface TestOperation_of_any_end {
readonly op: "test";
readonly value: any;
readonly path: string;
}
export interface GetOperation_of_any_end {
readonly op: "_get";
readonly value: any;
readonly path: string;
}