@kurrent/kurrentdb-client 1.1.2 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/Client/http.d.ts +7 -1
  2. package/dist/Client/http.js +50 -48
  3. package/dist/Client/http.js.map +1 -1
  4. package/dist/Client/index.d.ts +30 -6
  5. package/dist/Client/index.js +77 -11
  6. package/dist/Client/index.js.map +1 -1
  7. package/dist/Client/parseConnectionString.d.ts +2 -2
  8. package/dist/constants.d.ts +3 -0
  9. package/dist/constants.js +6 -1
  10. package/dist/constants.js.map +1 -1
  11. package/dist/events/binaryEvent.d.ts +5 -1
  12. package/dist/events/binaryEvent.js +2 -2
  13. package/dist/events/binaryEvent.js.map +1 -1
  14. package/dist/events/jsonEvent.js +2 -2
  15. package/dist/events/jsonEvent.js.map +1 -1
  16. package/dist/index.d.ts +1 -0
  17. package/dist/index.js +4 -1
  18. package/dist/index.js.map +1 -1
  19. package/dist/projections/createProjection.d.ts +10 -1
  20. package/dist/projections/createProjection.js +13 -2
  21. package/dist/projections/createProjection.js.map +1 -1
  22. package/dist/streams/appendToStream/batchAppend.js +2 -2
  23. package/dist/streams/appendToStream/batchAppend.js.map +1 -1
  24. package/dist/streams/appendToStream/index.d.ts +9 -1
  25. package/dist/streams/appendToStream/index.js +8 -0
  26. package/dist/streams/appendToStream/index.js.map +1 -1
  27. package/dist/streams/readAll.js +18 -18
  28. package/dist/streams/readAll.js.map +1 -1
  29. package/dist/streams/readStream.js +26 -34
  30. package/dist/streams/readStream.js.map +1 -1
  31. package/dist/types/index.d.ts +88 -2
  32. package/dist/types/index.js.map +1 -1
  33. package/dist/utils/CommandError.d.ts +9 -3
  34. package/dist/utils/CommandError.js +42 -1
  35. package/dist/utils/CommandError.js.map +1 -1
  36. package/dist/utils/credentials.d.ts +19 -0
  37. package/dist/utils/credentials.js +31 -0
  38. package/dist/utils/credentials.js.map +1 -0
  39. package/dist/utils/grpcUUID.d.ts +1 -0
  40. package/dist/utils/grpcUUID.js +12 -12
  41. package/dist/utils/grpcUUID.js.map +1 -1
  42. package/generated/kurrentdb/protocols/v1/projectionmanagement_pb.d.ts +3 -0
  43. package/generated/kurrentdb/protocols/v1/projectionmanagement_pb.js +31 -1
  44. package/generated/kurrentdb/protocols/v2/streams/errors_pb.d.ts +85 -0
  45. package/generated/kurrentdb/protocols/v2/streams/errors_pb.js +625 -1
  46. package/generated/kurrentdb/protocols/v2/streams/streams_grpc_pb.d.ts +17 -0
  47. package/generated/kurrentdb/protocols/v2/streams/streams_grpc_pb.js +53 -0
  48. package/generated/kurrentdb/protocols/v2/streams/streams_pb.d.ts +134 -0
  49. package/generated/kurrentdb/protocols/v2/streams/streams_pb.js +1041 -1
  50. package/package.json +3 -5
@@ -0,0 +1,19 @@
1
+ import type { BasicCredentials, BearerCredentials, Credentials } from "../types";
2
+ /**
3
+ * Type predicate narrowing {@link Credentials} to {@link BasicCredentials}
4
+ * (username/password). Prefer this over inline `"username" in credentials`
5
+ * checks so the discrimination lives in one place.
6
+ */
7
+ export declare const isBasicCredentials: (credentials?: Credentials) => credentials is BasicCredentials;
8
+ /**
9
+ * Type predicate narrowing {@link Credentials} to {@link BearerCredentials}.
10
+ */
11
+ export declare const isBearerCredentials: (credentials?: Credentials) => credentials is BearerCredentials;
12
+ /**
13
+ * Render a {@link Credentials} value as the verbatim value of an
14
+ * `Authorization` HTTP header (`"Basic ..."` or `"Bearer ..."`).
15
+ *
16
+ * Shared between the gRPC metadata generator and the HTTP fallback so the two
17
+ * paths stay in lockstep.
18
+ */
19
+ export declare const toAuthorizationHeader: (credentials: Credentials) => string;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toAuthorizationHeader = exports.isBearerCredentials = exports.isBasicCredentials = void 0;
4
+ /**
5
+ * Type predicate narrowing {@link Credentials} to {@link BasicCredentials}
6
+ * (username/password). Prefer this over inline `"username" in credentials`
7
+ * checks so the discrimination lives in one place.
8
+ */
9
+ const isBasicCredentials = (credentials) => credentials !== undefined && "username" in credentials;
10
+ exports.isBasicCredentials = isBasicCredentials;
11
+ /**
12
+ * Type predicate narrowing {@link Credentials} to {@link BearerCredentials}.
13
+ */
14
+ const isBearerCredentials = (credentials) => credentials !== undefined && "bearerToken" in credentials;
15
+ exports.isBearerCredentials = isBearerCredentials;
16
+ /**
17
+ * Render a {@link Credentials} value as the verbatim value of an
18
+ * `Authorization` HTTP header (`"Basic ..."` or `"Bearer ..."`).
19
+ *
20
+ * Shared between the gRPC metadata generator and the HTTP fallback so the two
21
+ * paths stay in lockstep.
22
+ */
23
+ const toAuthorizationHeader = (credentials) => {
24
+ if ((0, exports.isBearerCredentials)(credentials)) {
25
+ return `Bearer ${credentials.bearerToken}`;
26
+ }
27
+ const auth = Buffer.from(`${credentials.username}:${credentials.password}`).toString("base64");
28
+ return `Basic ${auth}`;
29
+ };
30
+ exports.toAuthorizationHeader = toAuthorizationHeader;
31
+ //# sourceMappingURL=credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/utils/credentials.ts"],"names":[],"mappings":";;;AAMA;;;;GAIG;AACI,MAAM,kBAAkB,GAAG,CAChC,WAAyB,EACQ,EAAE,CACnC,WAAW,KAAK,SAAS,IAAI,UAAU,IAAI,WAAW,CAAC;AAH5C,QAAA,kBAAkB,sBAG0B;AAEzD;;GAEG;AACI,MAAM,mBAAmB,GAAG,CACjC,WAAyB,EACS,EAAE,CACpC,WAAW,KAAK,SAAS,IAAI,aAAa,IAAI,WAAW,CAAC;AAH/C,QAAA,mBAAmB,uBAG4B;AAE5D;;;;;;GAMG;AACI,MAAM,qBAAqB,GAAG,CAAC,WAAwB,EAAU,EAAE;IACxE,IAAI,IAAA,2BAAmB,EAAC,WAAW,CAAC,EAAE,CAAC;QACrC,OAAO,UAAU,WAAW,CAAC,WAAW,EAAE,CAAC;IAC7C,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CACtB,GAAG,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,QAAQ,EAAE,CAClD,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrB,OAAO,SAAS,IAAI,EAAE,CAAC;AACzB,CAAC,CAAC;AATW,QAAA,qBAAqB,yBAShC"}
@@ -2,3 +2,4 @@ import { UUID } from "../../generated/kurrentdb/protocols/v1/shared_pb";
2
2
  export declare const createUUID: (id?: string) => UUID;
3
3
  export declare function parseUUID(uuid: UUID): string;
4
4
  export declare function parseUUID(uuid: UUID | undefined): string | undefined;
5
+ export declare const structuredUUIDToString: (structured: UUID.Structured) => string;
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createUUID = void 0;
3
+ exports.structuredUUIDToString = exports.createUUID = void 0;
4
4
  exports.parseUUID = parseUUID;
5
- const uuid_1 = require("uuid");
5
+ const crypto_1 = require("crypto");
6
6
  const shared_pb_1 = require("../../generated/kurrentdb/protocols/v1/shared_pb");
7
- const createUUID = (id = (0, uuid_1.v4)()) => {
7
+ const createUUID = (id = (0, crypto_1.randomUUID)()) => {
8
8
  const uuid = new shared_pb_1.UUID();
9
9
  uuid.setString(id);
10
10
  return uuid;
@@ -14,16 +14,16 @@ function parseUUID(uuid) {
14
14
  if (!uuid)
15
15
  return undefined;
16
16
  if (uuid.hasStructured()) {
17
- const structured = uuid.getStructured();
18
- const leastSignificantBits = BigInt(structured.getLeastSignificantBits());
19
- const mostSignificantBits = BigInt(structured.getMostSignificantBits());
20
- const buffer = new ArrayBuffer(16);
21
- const dataView = new DataView(buffer);
22
- dataView.setBigUint64(0, mostSignificantBits);
23
- dataView.setBigUint64(8, leastSignificantBits);
24
- const uint8Array = new Uint8Array(buffer);
25
- return (0, uuid_1.stringify)(uint8Array);
17
+ return (0, exports.structuredUUIDToString)(uuid.getStructured());
26
18
  }
27
19
  return uuid.getString();
28
20
  }
21
+ const structuredUUIDToString = (structured) => {
22
+ const ms = toUnsignedHex(structured.getMostSignificantBits());
23
+ const ls = toUnsignedHex(structured.getLeastSignificantBits());
24
+ return `${ms.slice(0, 8)}-${ms.slice(8, 12)}-${ms.slice(12)}-${ls.slice(0, 4)}-${ls.slice(4)}`;
25
+ };
26
+ exports.structuredUUIDToString = structuredUUIDToString;
27
+ const U64_MASK = (1n << 64n) - 1n;
28
+ const toUnsignedHex = (value) => (BigInt(value) & U64_MASK).toString(16).padStart(16, "0");
29
29
  //# sourceMappingURL=grpcUUID.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"grpcUUID.js","sourceRoot":"","sources":["../../src/utils/grpcUUID.ts"],"names":[],"mappings":";;;AAWA,8BAmBC;AA9BD,+BAAqC;AACrC,gFAAwE;AAEjE,MAAM,UAAU,GAAG,CAAC,KAAa,IAAA,SAAE,GAAE,EAAQ,EAAE;IACpD,MAAM,IAAI,GAAG,IAAI,gBAAI,EAAE,CAAC;IACxB,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACnB,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAJW,QAAA,UAAU,cAIrB;AAIF,SAAgB,SAAS,CAAC,IAAsB;IAC9C,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAE5B,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAG,CAAC;QACzC,MAAM,oBAAoB,GAAG,MAAM,CAAC,UAAU,CAAC,uBAAuB,EAAE,CAAC,CAAC;QAC1E,MAAM,mBAAmB,GAAG,MAAM,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEtC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;QAC9C,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;QAE/C,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QAE1C,OAAO,IAAA,gBAAS,EAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"grpcUUID.js","sourceRoot":"","sources":["../../src/utils/grpcUUID.ts"],"names":[],"mappings":";;;AAWA,8BAQC;AAnBD,mCAAoC;AACpC,gFAAwE;AAEjE,MAAM,UAAU,GAAG,CAAC,KAAa,IAAA,mBAAU,GAAE,EAAQ,EAAE;IAC5D,MAAM,IAAI,GAAG,IAAI,gBAAI,EAAE,CAAC;IACxB,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACnB,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAJW,QAAA,UAAU,cAIrB;AAIF,SAAgB,SAAS,CAAC,IAAsB;IAC9C,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAE5B,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;QACzB,OAAO,IAAA,8BAAsB,EAAC,IAAI,CAAC,aAAa,EAAG,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AAC1B,CAAC;AAEM,MAAM,sBAAsB,GAAG,CAAC,UAA2B,EAAU,EAAE;IAC5E,MAAM,EAAE,GAAG,aAAa,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAC;IAC9D,MAAM,EAAE,GAAG,aAAa,CAAC,UAAU,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAC/D,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CACrE,CAAC,EACD,CAAC,CACF,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACrB,CAAC,CAAC;AAPW,QAAA,sBAAsB,0BAOjC;AAEF,MAAM,QAAQ,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;AAClC,MAAM,aAAa,GAAG,CAAC,KAAa,EAAU,EAAE,CAC9C,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC"}
@@ -49,6 +49,8 @@ export namespace CreateReq {
49
49
  setContinuous(value?: CreateReq.Options.Continuous): Options;
50
50
  getQuery(): string;
51
51
  setQuery(value: string): Options;
52
+ getEngineVersion(): number;
53
+ setEngineVersion(value: number): Options;
52
54
 
53
55
  getModeCase(): Options.ModeCase;
54
56
 
@@ -68,6 +70,7 @@ export namespace CreateReq {
68
70
  pb_transient?: CreateReq.Options.Transient.AsObject,
69
71
  continuous?: CreateReq.Options.Continuous.AsObject,
70
72
  query: string,
73
+ engineVersion: number,
71
74
  }
72
75
 
73
76
 
@@ -864,7 +864,8 @@ proto.event_store.client.projections.CreateReq.Options.toObject = function(inclu
864
864
  oneTime: (f = msg.getOneTime()) && kurrentdb_protocols_v1_shared_pb.Empty.toObject(includeInstance, f),
865
865
  pb_transient: (f = msg.getTransient()) && proto.event_store.client.projections.CreateReq.Options.Transient.toObject(includeInstance, f),
866
866
  continuous: (f = msg.getContinuous()) && proto.event_store.client.projections.CreateReq.Options.Continuous.toObject(includeInstance, f),
867
- query: jspb.Message.getFieldWithDefault(msg, 4, "")
867
+ query: jspb.Message.getFieldWithDefault(msg, 4, ""),
868
+ engineVersion: jspb.Message.getFieldWithDefault(msg, 5, 0)
868
869
  };
869
870
 
870
871
  if (includeInstance) {
@@ -920,6 +921,10 @@ proto.event_store.client.projections.CreateReq.Options.deserializeBinaryFromRead
920
921
  var value = /** @type {string} */ (reader.readString());
921
922
  msg.setQuery(value);
922
923
  break;
924
+ case 5:
925
+ var value = /** @type {number} */ (reader.readInt32());
926
+ msg.setEngineVersion(value);
927
+ break;
923
928
  default:
924
929
  reader.skipField();
925
930
  break;
@@ -980,6 +985,13 @@ proto.event_store.client.projections.CreateReq.Options.serializeBinaryToWriter =
980
985
  f
981
986
  );
982
987
  }
988
+ f = message.getEngineVersion();
989
+ if (f !== 0) {
990
+ writer.writeInt32(
991
+ 5,
992
+ f
993
+ );
994
+ }
983
995
  };
984
996
 
985
997
 
@@ -1432,6 +1444,24 @@ proto.event_store.client.projections.CreateReq.Options.prototype.setQuery = func
1432
1444
  };
1433
1445
 
1434
1446
 
1447
+ /**
1448
+ * optional int32 engine_version = 5;
1449
+ * @return {number}
1450
+ */
1451
+ proto.event_store.client.projections.CreateReq.Options.prototype.getEngineVersion = function() {
1452
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 5, 0));
1453
+ };
1454
+
1455
+
1456
+ /**
1457
+ * @param {number} value
1458
+ * @return {!proto.event_store.client.projections.CreateReq.Options} returns this
1459
+ */
1460
+ proto.event_store.client.projections.CreateReq.Options.prototype.setEngineVersion = function(value) {
1461
+ return jspb.Message.setProto3IntField(this, 5, value);
1462
+ };
1463
+
1464
+
1435
1465
  /**
1436
1466
  * optional Options options = 1;
1437
1467
  * @return {?proto.event_store.client.projections.CreateReq.Options}
@@ -185,6 +185,90 @@ export namespace StreamAlreadyInAppendSessionErrorDetails {
185
185
  }
186
186
  }
187
187
 
188
+ export class AppendConsistencyViolationErrorDetails extends jspb.Message {
189
+ clearViolationsList(): void;
190
+ getViolationsList(): Array<ConsistencyViolation>;
191
+ setViolationsList(value: Array<ConsistencyViolation>): AppendConsistencyViolationErrorDetails;
192
+ addViolations(value?: ConsistencyViolation, index?: number): ConsistencyViolation;
193
+
194
+ serializeBinary(): Uint8Array;
195
+ toObject(includeInstance?: boolean): AppendConsistencyViolationErrorDetails.AsObject;
196
+ static toObject(includeInstance: boolean, msg: AppendConsistencyViolationErrorDetails): AppendConsistencyViolationErrorDetails.AsObject;
197
+ static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
198
+ static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
199
+ static serializeBinaryToWriter(message: AppendConsistencyViolationErrorDetails, writer: jspb.BinaryWriter): void;
200
+ static deserializeBinary(bytes: Uint8Array): AppendConsistencyViolationErrorDetails;
201
+ static deserializeBinaryFromReader(message: AppendConsistencyViolationErrorDetails, reader: jspb.BinaryReader): AppendConsistencyViolationErrorDetails;
202
+ }
203
+
204
+ export namespace AppendConsistencyViolationErrorDetails {
205
+ export type AsObject = {
206
+ violationsList: Array<ConsistencyViolation.AsObject>,
207
+ }
208
+ }
209
+
210
+ export class ConsistencyViolation extends jspb.Message {
211
+ getCheckIndex(): number;
212
+ setCheckIndex(value: number): ConsistencyViolation;
213
+
214
+ hasStreamState(): boolean;
215
+ clearStreamState(): void;
216
+ getStreamState(): ConsistencyViolation.StreamStateViolation | undefined;
217
+ setStreamState(value?: ConsistencyViolation.StreamStateViolation): ConsistencyViolation;
218
+
219
+ getTypeCase(): ConsistencyViolation.TypeCase;
220
+
221
+ serializeBinary(): Uint8Array;
222
+ toObject(includeInstance?: boolean): ConsistencyViolation.AsObject;
223
+ static toObject(includeInstance: boolean, msg: ConsistencyViolation): ConsistencyViolation.AsObject;
224
+ static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
225
+ static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
226
+ static serializeBinaryToWriter(message: ConsistencyViolation, writer: jspb.BinaryWriter): void;
227
+ static deserializeBinary(bytes: Uint8Array): ConsistencyViolation;
228
+ static deserializeBinaryFromReader(message: ConsistencyViolation, reader: jspb.BinaryReader): ConsistencyViolation;
229
+ }
230
+
231
+ export namespace ConsistencyViolation {
232
+ export type AsObject = {
233
+ checkIndex: number,
234
+ streamState?: ConsistencyViolation.StreamStateViolation.AsObject,
235
+ }
236
+
237
+
238
+ export class StreamStateViolation extends jspb.Message {
239
+ getStream(): string;
240
+ setStream(value: string): StreamStateViolation;
241
+ getExpectedState(): string;
242
+ setExpectedState(value: string): StreamStateViolation;
243
+ getActualState(): string;
244
+ setActualState(value: string): StreamStateViolation;
245
+
246
+ serializeBinary(): Uint8Array;
247
+ toObject(includeInstance?: boolean): StreamStateViolation.AsObject;
248
+ static toObject(includeInstance: boolean, msg: StreamStateViolation): StreamStateViolation.AsObject;
249
+ static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
250
+ static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
251
+ static serializeBinaryToWriter(message: StreamStateViolation, writer: jspb.BinaryWriter): void;
252
+ static deserializeBinary(bytes: Uint8Array): StreamStateViolation;
253
+ static deserializeBinaryFromReader(message: StreamStateViolation, reader: jspb.BinaryReader): StreamStateViolation;
254
+ }
255
+
256
+ export namespace StreamStateViolation {
257
+ export type AsObject = {
258
+ stream: string,
259
+ expectedState: string,
260
+ actualState: string,
261
+ }
262
+ }
263
+
264
+
265
+ export enum TypeCase {
266
+ TYPE_NOT_SET = 0,
267
+ STREAM_STATE = 2,
268
+ }
269
+
270
+ }
271
+
188
272
  export enum StreamsError {
189
273
  STREAMS_ERROR_UNSPECIFIED = 0,
190
274
  STREAMS_ERROR_STREAM_NOT_FOUND = 1,
@@ -196,4 +280,5 @@ export enum StreamsError {
196
280
  STREAMS_ERROR_APPEND_TRANSACTION_SIZE_EXCEEDED = 7,
197
281
  STREAMS_ERROR_STREAM_ALREADY_IN_APPEND_SESSION = 8,
198
282
  STREAMS_ERROR_APPEND_SESSION_NO_REQUESTS = 9,
283
+ STREAMS_ERROR_APPEND_CONSISTENCY_VIOLATION = 14,
199
284
  }