diff --git a/index.d.ts b/index.d.ts
index 78aa0b5..7ee64f7 100644
--- a/index.d.ts
+++ b/index.d.ts
@@ -1,14 +1,15 @@
///
///
+// Expose classes
export class Position {
constructor(commitPosition: number|Long, preparePosition: number|Long);
readonly commitPosition: Long;
readonly preparePosition: Long;
+ static readonly start: number;
+ static readonly end: number;
}
-// Expose classes
-
export class UserCredentials {
constructor(username: string, password: string);
readonly username: string;
@@ -35,6 +36,57 @@ export class GossipSeed {
readonly hostHeader: string;
}
+export interface ProjectionDetails {
+ readonly coreProcessingTime: number,
+ readonly version: number,
+ readonly epoch: number,
+ readonly effectiveName: string,
+ readonly writesInProgress: number,
+ readonly readsInProgress: number,
+ readonly partitionsCached: number,
+ readonly status: string,
+ readonly stateReason: string,
+ readonly name: string,
+ readonly mode: string,
+ readonly position: string,
+ readonly progress: number,
+ readonly lastCheckpoint: string,
+ readonly eventsProcessedAfterRestart: number,
+ readonly statusUrl: string,
+ readonly stateUrl: string,
+ readonly resultUrl: string,
+ readonly queryUrl: string,
+ readonly enableCommandUrl: string,
+ readonly disableCommandUrl: string,
+ readonly checkpointStatus: string,
+ readonly bufferedEvents: number,
+ readonly writePendingEventsBeforeCheckpoint: number,
+ readonly writePendingEventsAfterCheckpoint: number
+}
+
+export class ProjectionsManager {
+ constructor(log: Logger, httpEndPoint: string, operationTimeout: number);
+ enable(name: string, userCredentials: UserCredentials): Promise;
+ disable(name: string, userCredentials: UserCredentials): Promise;
+ abort(name: string, userCredentials: UserCredentials): Promise;
+ createOneTime(query: string, userCredentials: UserCredentials): Promise;
+ createTransient(name: string, query: string, userCredentials: UserCredentials): Promise;
+ createContinuous(name: string, query: string, trackEmittedStreams: boolean, userCredentials: UserCredentials): Promise;
+ listAll(userCredentials: UserCredentials): Promise;
+ listOneTime(userCredentials: UserCredentials): Promise;
+ listContinuous(userCredentials: UserCredentials): Promise;
+ getStatus(name: string, userCredentials: UserCredentials): Promise;
+ getState(name: string, userCredentials: UserCredentials): Promise;
+ getPartitionState(name: string, partitionId: string, userCredentials: UserCredentials): Promise;
+ getResult(name: string, userCredentials: UserCredentials): Promise;
+ getPartitionResult(name: string, partitionId: string, userCredentials: UserCredentials): Promise;
+ getStatistics(name: string, userCredentials: UserCredentials): Promise;
+ getQuery(name: string, userCredentials: UserCredentials): Promise;
+ getState(name: string, userCredentials: UserCredentials): Promise;
+ updateQuery(name: string, query: string, userCredentials: UserCredentials): Promise;
+ deleteQuery(name: string, deleteEmittedStreams: boolean, userCredentials: UserCredentials): Promise;
+}
+
// Expose errors
export class WrongExpectedVersionError {
readonly name: string;
@@ -59,8 +111,12 @@ export class AccessDeniedError {
readonly transactionId?: Long;
}
-// Expose enums/constants
+export class ProjectionCommandFailedError {
+ readonly httpStatusCode: number;
+ readonly message: string;
+}
+// Expose enums/constants
export namespace expectedVersion {
const any: number;
const noStream: number;
@@ -72,12 +128,17 @@ export namespace positions {
const end: Position;
}
+export namespace streamPosition {
+ const start: number;
+ const end: number;
+}
+
+//TODO
// systemMetadata
// eventReadStatus
// sliceReadStatus
// Expose loggers
-
export interface Logger {
debug(fmt: string, ...args: any[]): void;
info(fmt: string, ...args: any[]): void;
@@ -228,12 +289,12 @@ export interface TcpEndPoint {
}
export interface HeartbeatInfo {
- connectionId: string;
- remoteEndPoint: TcpEndPoint;
- requestSentAt: number;
- requestPkgNumber: number;
- responseReceivedAt: number;
- responsePkgNumber: number;
+ readonly connectionId: string;
+ readonly remoteEndPoint: TcpEndPoint;
+ readonly requestSentAt: number;
+ readonly requestPkgNumber: number;
+ readonly responseReceivedAt: number;
+ readonly responsePkgNumber: number;
}
export interface EventData {
@@ -277,7 +338,6 @@ export interface EventStoreNodeConnection {
}
// Expose helper functions
-
export interface ConnectionSettings {
log?: Logger,
verboseLogging?: boolean,
@@ -310,58 +370,7 @@ export interface ConnectionSettings {
gossipTimeout?: number
}
+// Expose Helper functions
export function createConnection(settings: ConnectionSettings, endPointOrGossipSeed: string | TcpEndPoint | GossipSeed[], connectionName?: string): EventStoreNodeConnection;
export function createJsonEventData(eventId: string, event: any, metadata?: any, type?: string): EventData;
export function createEventData(eventId: string, type: string, isJson: boolean, data: Buffer, metadata?: Buffer): EventData;
-
-// Projections
-export interface ProjectionDetails {
- coreProcessingTime: number,
- version: number,
- epoch: number,
- effectiveName: string,
- writesInProgress: number,
- readsInProgress: number,
- partitionsCached: number,
- status: string,
- stateReason: string,
- name: string,
- mode: string,
- position: string,
- progress: number,
- lastCheckpoint: string,
- eventsProcessedAfterRestart: number,
- statusUrl: string,
- stateUrl: string,
- resultUrl: string,
- queryUrl: string,
- enableCommandUrl: string,
- disableCommandUrl: string,
- checkpointStatus: string,
- bufferedEvents: number,
- writePendingEventsBeforeCheckpoint: number,
- writePendingEventsAfterCheckpoint: number
-}
-
-export class ProjectionsManager {
- constructor(log: Logger, httpEndPoint: string, operationTimeout: number);
- enable(name: string, userCredentials: UserCredentials): Promise;
- disable(name: string, userCredentials: UserCredentials): Promise;
- abort(name: string, userCredentials: UserCredentials): Promise;
- createOneTime(query: string, userCredentials: UserCredentials): Promise;
- createTransient(name: string, query: string, userCredentials: UserCredentials): Promise;
- createContinuous(name: string, query: string, trackEmittedStreams: boolean, userCredentials: UserCredentials): Promise;
- listAll(userCredentials: UserCredentials): Promise;
- listOneTime(userCredentials: UserCredentials): Promise;
- listContinuous(userCredentials: UserCredentials): Promise;
- getStatus(name: string, userCredentials: UserCredentials): Promise;
- getState(name: string, userCredentials: UserCredentials): Promise;
- getPartitionState(name: string, partitionId: string, userCredentials: UserCredentials): Promise;
- getResult(name: string, userCredentials: UserCredentials): Promise;
- getPartitionResult(name: string, partitionId: string, userCredentials: UserCredentials): Promise;
- getStatistics(name: string, userCredentials: UserCredentials): Promise;
- getQuery(name: string, userCredentials: UserCredentials): Promise;
- getState(name: string, userCredentials: UserCredentials): Promise;
- updateQuery(name: string, query: string, userCredentials: UserCredentials): Promise;
- deleteQuery(name: string, deleteEmittedStreams: boolean, userCredentials: UserCredentials): Promise;
-}
diff --git a/package.json b/package.json
index d46c824..692885f 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "node-eventstore-client",
- "version": "0.2.1",
+ "version": "0.2.2",
"description": "A port of the EventStore .Net ClientAPI to Node.js",
"main": "index.js",
"types": "index.d.ts",
diff --git a/src/client.js b/src/client.js
index a79f797..7ca9d09 100644
--- a/src/client.js
+++ b/src/client.js
@@ -4,15 +4,23 @@ var results = require('./results');
const expectedVersion = {
any: -2,
noStream: -1,
- emptyStream: -1
+ emptyStream: -1,
+ streamExists: -4
};
Object.freeze(expectedVersion);
+
const positions = {
start: new results.Position(0, 0),
end: new results.Position(-1, -1)
};
Object.freeze(positions);
+const streamPosition = {
+ start: 0,
+ end: -1
+};
+Object.freeze(streamPosition);
+
/**
* Create an EventData object from JavaScript event/metadata that will be serialized as json
* @public
@@ -60,6 +68,7 @@ module.exports.ProjectionCommandFailedError = require('./errors/projectionComman
// Expose enums/constants
module.exports.expectedVersion = expectedVersion;
module.exports.positions = positions;
+module.exports.streamPosition = streamPosition;
module.exports.systemMetadata = require('./common/systemMetadata');
module.exports.eventReadStatus = results.EventReadStatus;
module.exports.sliceReadStatus = require('./sliceReadStatus');
diff --git a/src/results.js b/src/results.js
index a5e5f10..649eb2e 100644
--- a/src/results.js
+++ b/src/results.js
@@ -30,6 +30,8 @@ Position.prototype.toString = function() {
return [this.commitPosition.toString(), this.preparePosition.toString()].join("/");
};
+Position.start = new Position(0,0);
+Position.end = new Position(-1,-1);
const EventReadStatus = {
Success: 'success',