tapeworm 0.5.0 → 0.6.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.
- package/CHANGELOG.md +17 -0
- package/LICENSE +22 -22
- package/README.md +332 -332
- package/biome.json +58 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/src/dispatch/dispatch_service.d.ts +8 -0
- package/dist/src/dispatch/dispatch_service.d.ts.map +1 -0
- package/dist/src/dispatch/dispatch_service.js +9 -0
- package/dist/src/dispatch/dispatch_service.js.map +1 -0
- package/dist/src/event.d.ts +10 -0
- package/dist/src/event.d.ts.map +1 -0
- package/dist/src/event.js +12 -0
- package/dist/src/event.js.map +1 -0
- package/dist/src/event_store.d.ts +29 -0
- package/dist/src/event_store.d.ts.map +1 -0
- package/dist/src/event_store.js +71 -0
- package/dist/src/event_store.js.map +1 -0
- package/dist/src/event_store_partition.d.ts +28 -0
- package/dist/src/event_store_partition.d.ts.map +1 -0
- package/dist/src/event_store_partition.js +130 -0
- package/dist/src/event_store_partition.js.map +1 -0
- package/dist/src/event_stream.d.ts +32 -0
- package/dist/src/event_stream.d.ts.map +1 -0
- package/dist/src/event_stream.js +142 -0
- package/dist/src/event_stream.js.map +1 -0
- package/dist/src/persistence/commit.d.ts +4 -0
- package/dist/src/persistence/commit.d.ts.map +1 -0
- package/dist/src/persistence/commit.js +11 -0
- package/dist/src/persistence/commit.js.map +1 -0
- package/dist/src/persistence/concurrency_error.d.ts +6 -0
- package/dist/src/persistence/concurrency_error.d.ts.map +1 -0
- package/dist/src/persistence/concurrency_error.js +13 -0
- package/dist/src/persistence/concurrency_error.js.map +1 -0
- package/dist/src/persistence/duplicate_commit_error.d.ts +6 -0
- package/dist/src/persistence/duplicate_commit_error.d.ts.map +1 -0
- package/dist/src/persistence/duplicate_commit_error.js +13 -0
- package/dist/src/persistence/duplicate_commit_error.js.map +1 -0
- package/dist/src/persistence/inmemory/inmemory_partition.d.ts +23 -0
- package/dist/src/persistence/inmemory/inmemory_partition.d.ts.map +1 -0
- package/dist/src/persistence/inmemory/inmemory_partition.js +138 -0
- package/dist/src/persistence/inmemory/inmemory_partition.js.map +1 -0
- package/dist/src/persistence/inmemory/inmemory_persistence.d.ts +13 -0
- package/dist/src/persistence/inmemory/inmemory_persistence.d.ts.map +1 -0
- package/dist/src/persistence/inmemory/inmemory_persistence.js +26 -0
- package/dist/src/persistence/inmemory/inmemory_persistence.js.map +1 -0
- package/dist/src/persistence/persistence_partition.d.ts +12 -0
- package/dist/src/persistence/persistence_partition.d.ts.map +1 -0
- package/dist/src/persistence/persistence_partition.js +21 -0
- package/dist/src/persistence/persistence_partition.js.map +1 -0
- package/dist/src/persistence/persistence_provider_template.d.ts +10 -0
- package/dist/src/persistence/persistence_provider_template.d.ts.map +1 -0
- package/dist/src/persistence/persistence_provider_template.js +11 -0
- package/dist/src/persistence/persistence_provider_template.js.map +1 -0
- package/dist/src/replication/master_replication_service.d.ts +7 -0
- package/dist/src/replication/master_replication_service.d.ts.map +1 -0
- package/dist/src/replication/master_replication_service.js +9 -0
- package/dist/src/replication/master_replication_service.js.map +1 -0
- package/dist/src/types.d.ts +68 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +3 -0
- package/dist/src/types.js.map +1 -0
- package/index.ts +21 -0
- package/package.json +44 -46
- package/scripts/postbuild.js +27 -0
- package/src/dispatch/dispatch_service.ts +14 -0
- package/src/event.ts +24 -0
- package/src/event_store.ts +82 -0
- package/src/event_store_partition.ts +270 -0
- package/src/event_stream.ts +184 -0
- package/src/persistence/commit.ts +24 -0
- package/src/persistence/concurrency_error.ts +16 -0
- package/src/persistence/duplicate_commit_error.ts +16 -0
- package/src/persistence/inmemory/inmemory_partition.ts +194 -0
- package/src/persistence/inmemory/inmemory_persistence.ts +35 -0
- package/src/persistence/persistence_partition.ts +34 -0
- package/src/persistence/persistence_provider_template.ts +20 -0
- package/src/replication/master_replication_service.ts +12 -0
- package/src/types.ts +128 -0
- package/test/event_partition.ts +151 -0
- package/test/event_store.ts +25 -0
- package/test/event_stream.ts +160 -0
- package/test/persistence/inmemory.ts +139 -0
- package/tsconfig.json +13 -0
- package/vitest.config.ts +13 -0
- package/.eslintrc +0 -4
- package/.travis.yml +0 -4
- package/checkstyle-result.xml +0 -1
- package/index.js +0 -1
- package/lib/dispatch/dispatch_service.js +0 -7
- package/lib/event.js +0 -10
- package/lib/event_store.js +0 -53
- package/lib/event_store_partition.js +0 -148
- package/lib/event_stream.js +0 -150
- package/lib/persistence/commit.js +0 -12
- package/lib/persistence/concurrency_error.js +0 -10
- package/lib/persistence/duplicate_commit_error.js +0 -10
- package/lib/persistence/inmemory/inmemory_partition.js +0 -146
- package/lib/persistence/inmemory/inmemory_persistence.js +0 -25
- package/lib/persistence/persistence_partition.js +0 -23
- package/lib/persistence/persistence_provider_template.js +0 -17
- package/lib/replication/master_replication_service.js +0 -7
- package/test/event_partition.js +0 -232
- package/test/event_store.js +0 -36
- package/test/event_stream.js +0 -214
- package/test/persistence/inmemory.js +0 -162
package/biome.json
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://biomejs.dev/schemas/2.2.4/schema.json",
|
|
3
|
+
"vcs": {
|
|
4
|
+
"enabled": true,
|
|
5
|
+
"clientKind": "git",
|
|
6
|
+
"useIgnoreFile": true
|
|
7
|
+
},
|
|
8
|
+
"files": {
|
|
9
|
+
"ignoreUnknown": false
|
|
10
|
+
},
|
|
11
|
+
"formatter": {
|
|
12
|
+
"enabled": true,
|
|
13
|
+
"indentStyle": "space",
|
|
14
|
+
"indentWidth": 2,
|
|
15
|
+
"lineWidth": 160
|
|
16
|
+
},
|
|
17
|
+
"linter": {
|
|
18
|
+
"enabled": true,
|
|
19
|
+
"rules": {
|
|
20
|
+
"recommended": true,
|
|
21
|
+
"complexity": {
|
|
22
|
+
"noArguments": "off",
|
|
23
|
+
"noUselessThisAlias": "off",
|
|
24
|
+
"useArrowFunction": "off",
|
|
25
|
+
"useOptionalChain": "off"
|
|
26
|
+
},
|
|
27
|
+
"correctness": {
|
|
28
|
+
"noInnerDeclarations": "off",
|
|
29
|
+
"noInvalidUseBeforeDeclaration": "off",
|
|
30
|
+
"noUnusedFunctionParameters": "off",
|
|
31
|
+
"noUnusedVariables": "off"
|
|
32
|
+
},
|
|
33
|
+
"style": {
|
|
34
|
+
"useNodejsImportProtocol": "off",
|
|
35
|
+
"useTemplate": "off"
|
|
36
|
+
},
|
|
37
|
+
"suspicious": {
|
|
38
|
+
"noAssignInExpressions": "off",
|
|
39
|
+
"noDoubleEquals": "off",
|
|
40
|
+
"noRedeclare": "off",
|
|
41
|
+
"noShadowRestrictedNames": "off"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"javascript": {
|
|
46
|
+
"formatter": {
|
|
47
|
+
"trailingCommas": "es5"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"assist": {
|
|
51
|
+
"enabled": true,
|
|
52
|
+
"actions": {
|
|
53
|
+
"source": {
|
|
54
|
+
"organizeImports": "on"
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import EventStore from "./src/event_store";
|
|
2
|
+
export { Commit, ConcurrencyError, DuplicateCommitError, Event, EventStorePartition, EventStream, } from "./src/event_store";
|
|
3
|
+
export type { DispatchHandler, IBaseEvent, ICommit, IPersistencePartition, IPersistenceProvider, ISnapshot, NodeCallback, } from "./src/types";
|
|
4
|
+
export default EventStore;
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,EACL,mBAAmB,EACnB,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,eAAe,EACf,UAAU,EACV,OAAO,EACP,qBAAqB,EACrB,oBAAoB,EACpB,SAAS,EACT,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,eAAe,UAAU,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.EventStream = exports.EventStorePartition = exports.Event = exports.DuplicateCommitError = exports.ConcurrencyError = exports.Commit = void 0;
|
|
7
|
+
const event_store_1 = __importDefault(require("./src/event_store"));
|
|
8
|
+
var event_store_2 = require("./src/event_store");
|
|
9
|
+
Object.defineProperty(exports, "Commit", { enumerable: true, get: function () { return event_store_2.Commit; } });
|
|
10
|
+
Object.defineProperty(exports, "ConcurrencyError", { enumerable: true, get: function () { return event_store_2.ConcurrencyError; } });
|
|
11
|
+
Object.defineProperty(exports, "DuplicateCommitError", { enumerable: true, get: function () { return event_store_2.DuplicateCommitError; } });
|
|
12
|
+
Object.defineProperty(exports, "Event", { enumerable: true, get: function () { return event_store_2.Event; } });
|
|
13
|
+
Object.defineProperty(exports, "EventStorePartition", { enumerable: true, get: function () { return event_store_2.EventStorePartition; } });
|
|
14
|
+
Object.defineProperty(exports, "EventStream", { enumerable: true, get: function () { return event_store_2.EventStream; } });
|
|
15
|
+
exports.default = event_store_1.default;
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
17
|
+
// CJS backward compat — added by scripts/postbuild.js
|
|
18
|
+
module.exports = exports.default;
|
|
19
|
+
Object.assign(module.exports, exports);
|
|
20
|
+
module.exports.default = exports.default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;AAAA,oEAA2C;AAE3C,iDAO2B;AANzB,qGAAA,MAAM,OAAA;AACN,+GAAA,gBAAgB,OAAA;AAChB,mHAAA,oBAAoB,OAAA;AACpB,oGAAA,KAAK,OAAA;AACL,kHAAA,mBAAmB,OAAA;AACnB,0GAAA,WAAW,OAAA;AAYb,kBAAe,qBAAU,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ICommit, NodeCallback } from "../types";
|
|
2
|
+
interface IDispatchService {
|
|
3
|
+
dispatch(_commit: ICommit, _callback?: NodeCallback<void>): void;
|
|
4
|
+
}
|
|
5
|
+
/** Abstract template — subclasses must override dispatch. */
|
|
6
|
+
declare var DispatchService: new () => IDispatchService;
|
|
7
|
+
export default DispatchService;
|
|
8
|
+
//# sourceMappingURL=dispatch_service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatch_service.d.ts","sourceRoot":"","sources":["../../../src/dispatch/dispatch_service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEtD,UAAU,gBAAgB;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAClE;AAED,6DAA6D;AAC7D,QAAA,IAAI,eAAe,EAAgC,UAAU,gBAAgB,CAAC;AAM9E,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/** Abstract template — subclasses must override dispatch. */
|
|
4
|
+
var DispatchService = function () { };
|
|
5
|
+
DispatchService.prototype.dispatch = function (_commit, _callback) {
|
|
6
|
+
// body...
|
|
7
|
+
};
|
|
8
|
+
exports.default = DispatchService;
|
|
9
|
+
//# sourceMappingURL=dispatch_service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatch_service.js","sourceRoot":"","sources":["../../../src/dispatch/dispatch_service.ts"],"names":[],"mappings":";;AAMA,6DAA6D;AAC7D,IAAI,eAAe,GAAG,cAAa,CAA0C,CAAC;AAE9E,eAAe,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,OAAgB,EAAE,SAA8B;IAC7F,UAAU;AACZ,CAAC,CAAC;AAEF,kBAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { IBaseEvent } from "./types";
|
|
2
|
+
interface IEvent extends IBaseEvent {
|
|
3
|
+
payload: Record<string, unknown>;
|
|
4
|
+
timestamp: Date;
|
|
5
|
+
metadata: Record<string, unknown>;
|
|
6
|
+
revision: number | null;
|
|
7
|
+
}
|
|
8
|
+
declare var Event: new (id: string, type: string, payload: Record<string, unknown>, metadata?: Record<string, unknown>) => IEvent;
|
|
9
|
+
export default Event;
|
|
10
|
+
//# sourceMappingURL=event.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../src/event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,UAAU,MAAO,SAAQ,UAAU;IACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,QAAA,IAAI,KAAK,EAOO,KACd,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC/B,MAAM,CAAC;AAEZ,eAAe,KAAK,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var Event = function (id, type, payload, metadata) {
|
|
4
|
+
this.id = id;
|
|
5
|
+
this.type = type;
|
|
6
|
+
this.payload = payload;
|
|
7
|
+
this.timestamp = new Date();
|
|
8
|
+
this.metadata = metadata || {};
|
|
9
|
+
this.revision = null; //filled by eventstore on append
|
|
10
|
+
};
|
|
11
|
+
exports.default = Event;
|
|
12
|
+
//# sourceMappingURL=event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event.js","sourceRoot":"","sources":["../../src/event.ts"],"names":[],"mappings":";;AASA,IAAI,KAAK,GAAG,UAAwB,EAAU,EAAE,IAAY,EAAE,OAAgC,EAAE,QAAkC;IAChI,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACvB,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,gCAAgC;AACxD,CAKW,CAAC;AAEZ,kBAAe,KAAK,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import Promise from "bluebird";
|
|
2
|
+
import Event from "./event";
|
|
3
|
+
import Partition from "./event_store_partition";
|
|
4
|
+
import EventStream from "./event_stream";
|
|
5
|
+
import Commit from "./persistence/commit";
|
|
6
|
+
import ConcurrencyError from "./persistence/concurrency_error";
|
|
7
|
+
import DuplicateCommitError from "./persistence/duplicate_commit_error";
|
|
8
|
+
import type { DispatchHandler, IPersistenceProvider, NodeCallback } from "./types";
|
|
9
|
+
type PartitionInstance = InstanceType<typeof Partition>;
|
|
10
|
+
declare var _PENDING: Record<string, never>;
|
|
11
|
+
interface IEventStore {
|
|
12
|
+
_store: IPersistenceProvider;
|
|
13
|
+
_dispatchService?: DispatchHandler;
|
|
14
|
+
_partitions: Record<string, PartitionInstance | typeof _PENDING>;
|
|
15
|
+
openPartition(partitionId?: string, callback?: NodeCallback<PartitionInstance>): Promise<PartitionInstance>;
|
|
16
|
+
}
|
|
17
|
+
declare var EventStore: {
|
|
18
|
+
new (persistenceStore?: IPersistenceProvider, dispatchService?: DispatchHandler): IEventStore;
|
|
19
|
+
Event: typeof Event;
|
|
20
|
+
EventStream: typeof EventStream;
|
|
21
|
+
EventStorePartition: typeof Partition;
|
|
22
|
+
Commit: typeof Commit;
|
|
23
|
+
ConcurrencyError: typeof ConcurrencyError;
|
|
24
|
+
DuplicateCommitError: typeof DuplicateCommitError;
|
|
25
|
+
};
|
|
26
|
+
export default EventStore;
|
|
27
|
+
export { Event, EventStream, Commit, ConcurrencyError, DuplicateCommitError };
|
|
28
|
+
export { Partition as EventStorePartition };
|
|
29
|
+
//# sourceMappingURL=event_store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event_store.d.ts","sourceRoot":"","sources":["../../src/event_store.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,UAAU,CAAC;AAC/B,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,SAAS,MAAM,yBAAyB,CAAC;AAChD,OAAO,WAAW,MAAM,gBAAgB,CAAC;AACzC,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,gBAAgB,MAAM,iCAAiC,CAAC;AAC/D,OAAO,oBAAoB,MAAM,sCAAsC,CAAC;AAExE,OAAO,KAAK,EAAE,eAAe,EAAyB,oBAAoB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1G,KAAK,iBAAiB,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,CAAC;AAExD,QAAA,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,CAAC;AAEzC,UAAU,WAAW;IACnB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,gBAAgB,CAAC,EAAE,eAAe,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,QAAQ,CAAC,CAAC;IACjE,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC7G;AAED,QAAA,IAAI,UAAU,EAIE;IACd,KAAK,gBAAgB,CAAC,EAAE,oBAAoB,EAAE,eAAe,CAAC,EAAE,eAAe,GAAG,WAAW,CAAC;IAC9F,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,WAAW,EAAE,OAAO,WAAW,CAAC;IAChC,mBAAmB,EAAE,OAAO,SAAS,CAAC;IACtC,MAAM,EAAE,OAAO,MAAM,CAAC;IACtB,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;IAC1C,oBAAoB,EAAE,OAAO,oBAAoB,CAAC;CACnD,CAAC;AA4CF,eAAe,UAAU,CAAC;AAG1B,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAC;AAC9E,OAAO,EAAE,SAAS,IAAI,mBAAmB,EAAE,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.EventStorePartition = exports.DuplicateCommitError = exports.ConcurrencyError = exports.Commit = exports.EventStream = exports.Event = void 0;
|
|
7
|
+
const bluebird_1 = __importDefault(require("bluebird"));
|
|
8
|
+
const event_1 = __importDefault(require("./event"));
|
|
9
|
+
exports.Event = event_1.default;
|
|
10
|
+
const event_store_partition_1 = __importDefault(require("./event_store_partition"));
|
|
11
|
+
exports.EventStorePartition = event_store_partition_1.default;
|
|
12
|
+
const event_stream_1 = __importDefault(require("./event_stream"));
|
|
13
|
+
exports.EventStream = event_stream_1.default;
|
|
14
|
+
const commit_1 = __importDefault(require("./persistence/commit"));
|
|
15
|
+
exports.Commit = commit_1.default;
|
|
16
|
+
const concurrency_error_1 = __importDefault(require("./persistence/concurrency_error"));
|
|
17
|
+
exports.ConcurrencyError = concurrency_error_1.default;
|
|
18
|
+
const duplicate_commit_error_1 = __importDefault(require("./persistence/duplicate_commit_error"));
|
|
19
|
+
exports.DuplicateCommitError = duplicate_commit_error_1.default;
|
|
20
|
+
const inmemory_persistence_1 = __importDefault(require("./persistence/inmemory/inmemory_persistence"));
|
|
21
|
+
var _PENDING = {};
|
|
22
|
+
var EventStore = function (persistenceStore, dispatchService) {
|
|
23
|
+
this._store = persistenceStore || new inmemory_persistence_1.default();
|
|
24
|
+
this._dispatchService = dispatchService;
|
|
25
|
+
this._partitions = {};
|
|
26
|
+
};
|
|
27
|
+
EventStore.prototype.openPartition = function (partitionId, callback) {
|
|
28
|
+
var partition = null;
|
|
29
|
+
var pid = partitionId || "master";
|
|
30
|
+
partition = this._partitions[pid];
|
|
31
|
+
var self = this;
|
|
32
|
+
if (!partition) {
|
|
33
|
+
this._partitions[pid] = _PENDING;
|
|
34
|
+
return this._store
|
|
35
|
+
.openPartition(pid)
|
|
36
|
+
.then(function (persistencePartition) {
|
|
37
|
+
var p = new event_store_partition_1.default(pid, persistencePartition, self._dispatchService);
|
|
38
|
+
return (self._partitions[pid] = p);
|
|
39
|
+
})
|
|
40
|
+
.nodeify(callback);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
//_PENDING is set when the partition is loading, wait 5ms at a time to see if it has been loaded
|
|
44
|
+
if (this._partitions[pid] === _PENDING) {
|
|
45
|
+
var promise = new bluebird_1.default(function (resolve) {
|
|
46
|
+
var resolver = function () {
|
|
47
|
+
var partition = self._partitions[pid];
|
|
48
|
+
if (partition === _PENDING) {
|
|
49
|
+
setTimeout(resolver, 5);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
resolve(partition);
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
resolver();
|
|
56
|
+
});
|
|
57
|
+
return promise.nodeify(callback);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
return bluebird_1.default.resolve(this._partitions[pid]).nodeify(callback);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
EventStore.Event = event_1.default;
|
|
65
|
+
EventStore.EventStream = event_stream_1.default;
|
|
66
|
+
EventStore.EventStorePartition = event_store_partition_1.default;
|
|
67
|
+
EventStore.Commit = commit_1.default;
|
|
68
|
+
EventStore.ConcurrencyError = concurrency_error_1.default;
|
|
69
|
+
EventStore.DuplicateCommitError = duplicate_commit_error_1.default;
|
|
70
|
+
exports.default = EventStore;
|
|
71
|
+
//# sourceMappingURL=event_store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event_store.js","sourceRoot":"","sources":["../../src/event_store.ts"],"names":[],"mappings":";;;;;;AAAA,wDAA+B;AAC/B,oDAA4B;AA+EnB,gBA/EF,eAAK,CA+EE;AA9Ed,oFAAgD;AA+E1B,8BA/Ef,+BAAS,CA+EyB;AA9EzC,kEAAyC;AA6EzB,sBA7ET,sBAAW,CA6ES;AA5E3B,kEAA0C;AA4Eb,iBA5EtB,gBAAM,CA4EsB;AA3EnC,wFAA+D;AA2E1B,2BA3E9B,2BAAgB,CA2E8B;AA1ErD,kGAAwE;AA0EjB,+BA1EhD,gCAAoB,CA0EgD;AAzE3E,uGAAmF;AAKnF,IAAI,QAAQ,GAA0B,EAAE,CAAC;AASzC,IAAI,UAAU,GAAG,UAA6B,gBAAuC,EAAE,eAAiC;IACtH,IAAI,CAAC,MAAM,GAAG,gBAAgB,IAAI,IAAI,8BAAwB,EAAE,CAAC;IACjE,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;IACxC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACxB,CAQC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAA6B,WAAoB,EAAE,QAA0C;IAChI,IAAI,SAAS,GAA+C,IAAI,CAAC;IACjE,IAAI,GAAG,GAAG,WAAW,IAAI,QAAQ,CAAC;IAClC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;QACjC,OAAO,IAAI,CAAC,MAAM;aACf,aAAa,CAAC,GAAG,CAAC;aAClB,IAAI,CAAC,UAAU,oBAA2C;YACzD,IAAI,CAAC,GAAG,IAAI,+BAAS,CAAC,GAAG,EAAE,oBAAoB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC;aACD,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,gGAAgG;QAChG,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;YACvC,IAAI,OAAO,GAAG,IAAI,kBAAO,CAAoB,UAAU,OAAO;gBAC5D,IAAI,QAAQ,GAAG;oBACb,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;oBACtC,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;wBAC3B,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;oBAC1B,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,SAA8B,CAAC,CAAC;oBAC1C,CAAC;gBACH,CAAC,CAAC;gBACF,QAAQ,EAAE,CAAC;YACb,CAAC,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,OAAO,kBAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAsB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,UAAU,CAAC,KAAK,GAAG,eAAK,CAAC;AACzB,UAAU,CAAC,WAAW,GAAG,sBAAW,CAAC;AACrC,UAAU,CAAC,mBAAmB,GAAG,+BAAS,CAAC;AAC3C,UAAU,CAAC,MAAM,GAAG,gBAAM,CAAC;AAC3B,UAAU,CAAC,gBAAgB,GAAG,2BAAgB,CAAC;AAC/C,UAAU,CAAC,oBAAoB,GAAG,gCAAoB,CAAC;AAEvD,kBAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import Promise from "bluebird";
|
|
2
|
+
import EventStream from "./event_stream";
|
|
3
|
+
import type { DispatchHandler, ICommit, IPersistencePartition, NodeCallback } from "./types";
|
|
4
|
+
type EventStreamInstance = InstanceType<typeof EventStream>;
|
|
5
|
+
interface IEventStorePartition {
|
|
6
|
+
_partitionId: string;
|
|
7
|
+
_persistencePartition: IPersistencePartition;
|
|
8
|
+
_dispatchService?: DispatchHandler;
|
|
9
|
+
openStream(streamId: string, writeOnly?: boolean | NodeCallback<EventStreamInstance>, callback?: NodeCallback<EventStreamInstance>): Promise<EventStreamInstance>;
|
|
10
|
+
append(commits: ICommit | ICommit[], callback?: NodeCallback<unknown>): Promise<ICommit[]>;
|
|
11
|
+
delete(streamId: string, deleteEvent?: Record<string, unknown>): Promise<void>;
|
|
12
|
+
_queryStream(streamId: string, callback?: NodeCallback<ICommit[]>): Promise<ICommit[]>;
|
|
13
|
+
_queryAll(callback?: NodeCallback<ICommit[]>): Promise<ICommit[]>;
|
|
14
|
+
_queryStreamWithSnapshotFallback(streamId: string, callback?: NodeCallback<unknown>): Promise<unknown>;
|
|
15
|
+
_truncateStreamFrom(streamId: string, commitSequence: number, callback?: NodeCallback<void>): Promise<void>;
|
|
16
|
+
_applyCommitHeader(commitId: string, header: Record<string, unknown>, callback?: NodeCallback<ICommit>): Promise<ICommit>;
|
|
17
|
+
storeSnapshot?: IPersistencePartition["storeSnapshot"];
|
|
18
|
+
loadSnapshot?: IPersistencePartition["loadSnapshot"];
|
|
19
|
+
queryStream?: IPersistencePartition["queryStream"];
|
|
20
|
+
queryStreamWithSnapshot?: IPersistencePartition["queryStreamWithSnapshot"];
|
|
21
|
+
removeSnapshot?: IPersistencePartition["removeSnapshot"];
|
|
22
|
+
getLatestCommit?: IPersistencePartition["getLatestCommit"];
|
|
23
|
+
querySnapshotsByMaxDateTime?: IPersistencePartition["querySnapshotsByMaxDateTime"];
|
|
24
|
+
[key: string]: unknown;
|
|
25
|
+
}
|
|
26
|
+
declare var EventStorePartition: new (partitionId: string, persistencePartition: IPersistencePartition, dispatchService?: DispatchHandler) => IEventStorePartition;
|
|
27
|
+
export default EventStorePartition;
|
|
28
|
+
//# sourceMappingURL=event_store_partition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event_store_partition.d.ts","sourceRoot":"","sources":["../../src/event_store_partition.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,UAAU,CAAC;AAG/B,OAAO,WAAW,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,EACV,eAAe,EAEf,OAAO,EACP,qBAAqB,EAErB,YAAY,EACb,MAAM,SAAS,CAAC;AAEjB,KAAK,mBAAmB,GAAG,YAAY,CAAC,OAAO,WAAW,CAAC,CAAC;AAE5D,UAAU,oBAAoB;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,gBAAgB,CAAC,EAAE,eAAe,CAAC;IACnC,UAAU,CACR,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC,mBAAmB,CAAC,EACvD,QAAQ,CAAC,EAAE,YAAY,CAAC,mBAAmB,CAAC,GAC3C,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAChC,MAAM,CACJ,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,EAC5B,QAAQ,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,GAC/B,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACtB,MAAM,CACJ,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC,GACjC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACtB,SAAS,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAClE,gCAAgC,CAC9B,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,GAC/B,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,mBAAmB,CACjB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,QAAQ,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,GAC5B,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,kBAAkB,CAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,QAAQ,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,GAC/B,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB,aAAa,CAAC,EAAE,qBAAqB,CAAC,eAAe,CAAC,CAAC;IACvD,YAAY,CAAC,EAAE,qBAAqB,CAAC,cAAc,CAAC,CAAC;IACrD,WAAW,CAAC,EAAE,qBAAqB,CAAC,aAAa,CAAC,CAAC;IACnD,uBAAuB,CAAC,EAAE,qBAAqB,CAAC,yBAAyB,CAAC,CAAC;IAC3E,cAAc,CAAC,EAAE,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IACzD,eAAe,CAAC,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IAC3D,2BAA2B,CAAC,EAAE,qBAAqB,CAAC,6BAA6B,CAAC,CAAC;IACnF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,QAAA,IAAI,mBAAmB,EA4CP,KACd,WAAW,EAAE,MAAM,EACnB,oBAAoB,EAAE,qBAAqB,EAC3C,eAAe,CAAC,EAAE,eAAe,KAC9B,oBAAoB,CAAC;AA+J1B,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const bluebird_1 = __importDefault(require("bluebird"));
|
|
7
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
8
|
+
const uuid_1 = require("uuid");
|
|
9
|
+
const event_stream_1 = __importDefault(require("./event_stream"));
|
|
10
|
+
var EventStorePartition = function (partitionId, persistencePartition, dispatchService) {
|
|
11
|
+
this._partitionId = partitionId;
|
|
12
|
+
this._persistencePartition = persistencePartition;
|
|
13
|
+
this._dispatchService = dispatchService;
|
|
14
|
+
var self = this;
|
|
15
|
+
lodash_1.default.forEach([
|
|
16
|
+
"storeSnapshot",
|
|
17
|
+
"loadSnapshot",
|
|
18
|
+
"queryStream",
|
|
19
|
+
"queryStreamWithSnapshot",
|
|
20
|
+
"removeSnapshot",
|
|
21
|
+
"getLatestCommit",
|
|
22
|
+
"querySnapshotsByMaxDateTime",
|
|
23
|
+
], function (what) {
|
|
24
|
+
// biome-ignore lint/complexity/noBannedTypes: dynamic method delegation requires generic function type
|
|
25
|
+
var pp = self._persistencePartition;
|
|
26
|
+
if (pp[what]) {
|
|
27
|
+
self[what] = function () {
|
|
28
|
+
return pp[what].apply(self._persistencePartition, arguments);
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
if (what === "queryStreamWithSnapshot") {
|
|
33
|
+
// fallback function
|
|
34
|
+
self[what] = function () {
|
|
35
|
+
return self._queryStreamWithSnapshotFallback.apply(self._persistencePartition, arguments);
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
EventStorePartition.prototype.openStream = function (streamId, writeOnly, callback) {
|
|
42
|
+
if (typeof writeOnly === "function") {
|
|
43
|
+
callback = writeOnly;
|
|
44
|
+
writeOnly = false;
|
|
45
|
+
}
|
|
46
|
+
var stream = new event_stream_1.default(this, streamId, writeOnly);
|
|
47
|
+
return stream._prepareStream(callback);
|
|
48
|
+
};
|
|
49
|
+
EventStorePartition.prototype.append = function (commits, callback) {
|
|
50
|
+
//pre hooks
|
|
51
|
+
var self = this;
|
|
52
|
+
if (!lodash_1.default.isArray(commits)) {
|
|
53
|
+
commits = [commits];
|
|
54
|
+
}
|
|
55
|
+
return bluebird_1.default.each(commits, function (commit) {
|
|
56
|
+
return self._persistencePartition
|
|
57
|
+
.append(commit, callback)
|
|
58
|
+
.then(function (r) {
|
|
59
|
+
var done = function () {
|
|
60
|
+
self._persistencePartition.markAsDispatched(commit);
|
|
61
|
+
};
|
|
62
|
+
if (self._dispatchService) {
|
|
63
|
+
self._dispatchService(commit, done);
|
|
64
|
+
}
|
|
65
|
+
return r;
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
//post hooks
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Delete function in tapeworm.
|
|
72
|
+
* Triggers a $stream.deleted.event, truncates the stream, and removes snapshots.
|
|
73
|
+
*/
|
|
74
|
+
EventStorePartition.prototype.delete = function (streamId, deleteEvent) {
|
|
75
|
+
var self = this;
|
|
76
|
+
var event = Object.assign({}, deleteEvent, {
|
|
77
|
+
id: (0, uuid_1.v4)(),
|
|
78
|
+
type: "$stream.deleted.event",
|
|
79
|
+
payload: Object.assign({}, { dateOfDeletion: new Date() }, (deleteEvent && deleteEvent.payload) || {}),
|
|
80
|
+
});
|
|
81
|
+
return this._truncateStreamFrom(streamId, -1)
|
|
82
|
+
.then(function () {
|
|
83
|
+
return self.openStream(streamId, false);
|
|
84
|
+
})
|
|
85
|
+
.then(function (stream) {
|
|
86
|
+
stream.append(event);
|
|
87
|
+
return stream.commit((0, uuid_1.v4)());
|
|
88
|
+
})
|
|
89
|
+
.then(function () {
|
|
90
|
+
// support legacy/unsupported approach
|
|
91
|
+
if (self._persistencePartition.removeSnapshot) {
|
|
92
|
+
return self._persistencePartition.removeSnapshot(streamId);
|
|
93
|
+
}
|
|
94
|
+
else if (self._persistencePartition.removeSnapshots) {
|
|
95
|
+
return self._persistencePartition.removeSnapshots([streamId]);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
};
|
|
99
|
+
/*** UNDOCUMENTED API ***/
|
|
100
|
+
EventStorePartition.prototype._queryStream = function (streamId, callback) {
|
|
101
|
+
return this._persistencePartition.queryStream(streamId, callback);
|
|
102
|
+
};
|
|
103
|
+
EventStorePartition.prototype._queryAll = function (callback) {
|
|
104
|
+
return this._persistencePartition.queryAll(callback);
|
|
105
|
+
};
|
|
106
|
+
EventStorePartition.prototype._queryStreamWithSnapshotFallback = function (streamId, callback) {
|
|
107
|
+
var self = this;
|
|
108
|
+
return new bluebird_1.default(function (resolve, reject) {
|
|
109
|
+
self.loadSnapshot?.(streamId, function (err, snapshot) {
|
|
110
|
+
if (err) {
|
|
111
|
+
reject(err);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
var snapshotVersion = (snapshot && snapshot.version) || -1;
|
|
115
|
+
self.queryStream(streamId, snapshotVersion, function (_err, res) {
|
|
116
|
+
resolve({ snapshot: snapshot, commits: res });
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}).nodeify(callback);
|
|
121
|
+
};
|
|
122
|
+
/*** NEEDED FOR SYNCING ***/
|
|
123
|
+
EventStorePartition.prototype._truncateStreamFrom = function (streamId, commitSequence, callback) {
|
|
124
|
+
return this._persistencePartition.truncateStreamFrom?.(streamId, commitSequence, callback);
|
|
125
|
+
};
|
|
126
|
+
EventStorePartition.prototype._applyCommitHeader = function (commitId, header, callback) {
|
|
127
|
+
return this._persistencePartition.applyCommitHeader?.(commitId, header, callback);
|
|
128
|
+
};
|
|
129
|
+
exports.default = EventStorePartition;
|
|
130
|
+
//# sourceMappingURL=event_store_partition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event_store_partition.js","sourceRoot":"","sources":["../../src/event_store_partition.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import Promise from "bluebird";
|
|
2
|
+
import type { IBaseEvent, ICommit, NodeCallback } from "./types";
|
|
3
|
+
/** Subset of EventStorePartition that EventStream depends on. */
|
|
4
|
+
interface IEventPartition {
|
|
5
|
+
_partitionId: string;
|
|
6
|
+
getLatestCommit?: (streamId: string) => Promise<ICommit | undefined>;
|
|
7
|
+
_queryStream: (streamId: string, callback?: NodeCallback<ICommit[]>) => Promise<ICommit[]>;
|
|
8
|
+
append: (commit: ICommit, callback?: NodeCallback<unknown>) => Promise<unknown>;
|
|
9
|
+
}
|
|
10
|
+
interface IEventStream {
|
|
11
|
+
_partition: IEventPartition;
|
|
12
|
+
_streamId: string;
|
|
13
|
+
_writeOnly: boolean;
|
|
14
|
+
_uncommittedEvents: IBaseEvent[];
|
|
15
|
+
_committedEvents: IBaseEvent[];
|
|
16
|
+
_version: number;
|
|
17
|
+
_isDeleted: boolean;
|
|
18
|
+
_commitSequence: number;
|
|
19
|
+
_prepareStream(callback?: NodeCallback<IEventStream>): Promise<IEventStream>;
|
|
20
|
+
getVersion(): number;
|
|
21
|
+
append(event: IBaseEvent): void;
|
|
22
|
+
hasChanges(): boolean;
|
|
23
|
+
commit(commitId: string, callback?: NodeCallback<IEventStream>): Promise<IEventStream | undefined>;
|
|
24
|
+
_clearChanges(): void;
|
|
25
|
+
revertChanges(): void;
|
|
26
|
+
_buildCommit(commitId: string, events: IBaseEvent[]): ICommit;
|
|
27
|
+
getCommittedEvents(): IBaseEvent[];
|
|
28
|
+
getUncommittedEvents(): IBaseEvent[];
|
|
29
|
+
}
|
|
30
|
+
declare var EventStream: new (eventPartition: IEventPartition, streamId: string, writeOnly?: boolean) => IEventStream;
|
|
31
|
+
export default EventStream;
|
|
32
|
+
//# sourceMappingURL=event_stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event_stream.d.ts","sourceRoot":"","sources":["../../src/event_stream.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,UAAU,CAAC;AAG/B,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEjE,iEAAiE;AACjE,UAAU,eAAe;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IACrE,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3F,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACjF;AAED,UAAU,YAAY;IACpB,UAAU,EAAE,eAAe,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,kBAAkB,EAAE,UAAU,EAAE,CAAC;IACjC,gBAAgB,EAAE,UAAU,EAAE,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7E,UAAU,IAAI,MAAM,CAAC;IACrB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,UAAU,IAAI,OAAO,CAAC;IACtB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC;IACnG,aAAa,IAAI,IAAI,CAAC;IACtB,aAAa,IAAI,IAAI,CAAC;IACtB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAC9D,kBAAkB,IAAI,UAAU,EAAE,CAAC;IACnC,oBAAoB,IAAI,UAAU,EAAE,CAAC;CACtC;AAGD,QAAA,IAAI,WAAW,EAWC,KACd,cAAc,EAAE,eAAe,EAC/B,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,OAAO,KAChB,YAAY,CAAC;AAqIlB,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const bluebird_1 = __importDefault(require("bluebird"));
|
|
7
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
8
|
+
const commit_1 = __importDefault(require("./persistence/commit"));
|
|
9
|
+
// writeOnly - will never read entire stream from
|
|
10
|
+
var EventStream = function (eventPartition, streamId, writeOnly) {
|
|
11
|
+
if (streamId === undefined) {
|
|
12
|
+
throw new Error("StreamId must be defined!");
|
|
13
|
+
}
|
|
14
|
+
this._partition = eventPartition;
|
|
15
|
+
this._streamId = streamId;
|
|
16
|
+
this._writeOnly = writeOnly || false;
|
|
17
|
+
this._uncommittedEvents = [];
|
|
18
|
+
this._committedEvents = [];
|
|
19
|
+
this._version = 0;
|
|
20
|
+
this._isDeleted = false;
|
|
21
|
+
};
|
|
22
|
+
EventStream.prototype._prepareStream = function (callback) {
|
|
23
|
+
this._committedEvents = [];
|
|
24
|
+
this._commitSequence = -1;
|
|
25
|
+
var self = this;
|
|
26
|
+
if (self._writeOnly === true && self._partition.getLatestCommit) {
|
|
27
|
+
// if stream should only be opened for appending commits, only really care about getting the correct commitSequence (from last commit)
|
|
28
|
+
return self._partition
|
|
29
|
+
.getLatestCommit(self._streamId)
|
|
30
|
+
.then(function (commit) {
|
|
31
|
+
if (commit) {
|
|
32
|
+
self._commitSequence = commit.commitSequence;
|
|
33
|
+
var lastEvent = commit.events[commit.events.length - 1];
|
|
34
|
+
if (lastEvent && lastEvent.type === "$stream.deleted.event") {
|
|
35
|
+
self._isDeleted = true;
|
|
36
|
+
}
|
|
37
|
+
self._version = lastEvent.version + 1;
|
|
38
|
+
}
|
|
39
|
+
// if no commit is found, assume its a new stream, and keep default versions
|
|
40
|
+
})
|
|
41
|
+
.then(function () {
|
|
42
|
+
return self;
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
return self._partition
|
|
47
|
+
._queryStream(self._streamId, callback)
|
|
48
|
+
.then(function (commits) {
|
|
49
|
+
self._version = 0;
|
|
50
|
+
if (!commits || commits.length === 0) {
|
|
51
|
+
commits = [];
|
|
52
|
+
self._version = -1;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
if (commits[0] && commits[0].events && commits[0].events[0] && commits[0].events[0].type === "$stream.deleted.event") {
|
|
56
|
+
throw new Error("Stream is deleted");
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
var version = 0;
|
|
60
|
+
for (var i = 0; i < commits.length; i++) {
|
|
61
|
+
self._commitSequence++;
|
|
62
|
+
for (var j = 0; j < commits[i].events.length; j++) {
|
|
63
|
+
self._version++;
|
|
64
|
+
commits[i].events[j].version = version++;
|
|
65
|
+
self._committedEvents.push(commits[i].events[j]);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
})
|
|
69
|
+
.then(function () {
|
|
70
|
+
return self;
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
EventStream.prototype.getVersion = function () {
|
|
75
|
+
return this._version;
|
|
76
|
+
};
|
|
77
|
+
EventStream.prototype.append = function (event) {
|
|
78
|
+
this._uncommittedEvents.push(event);
|
|
79
|
+
};
|
|
80
|
+
EventStream.prototype.hasChanges = function () {
|
|
81
|
+
return this._uncommittedEvents.length > 0;
|
|
82
|
+
};
|
|
83
|
+
EventStream.prototype.commit = function (commitId, callback) {
|
|
84
|
+
var self = this;
|
|
85
|
+
if (this._isDeleted) {
|
|
86
|
+
throw new Error("Stream is deleted, unable to commit: " +
|
|
87
|
+
this._uncommittedEvents.map(function (event) {
|
|
88
|
+
return event.type;
|
|
89
|
+
}));
|
|
90
|
+
}
|
|
91
|
+
if (!this.hasChanges()) {
|
|
92
|
+
//nothing to commit
|
|
93
|
+
return bluebird_1.default.resolve().nodeify(callback);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
var commit = this._buildCommit(commitId, this._uncommittedEvents);
|
|
97
|
+
return this._partition.append(commit, callback).then(function () {
|
|
98
|
+
//rebuild local state
|
|
99
|
+
var events = self._uncommittedEvents;
|
|
100
|
+
self._version = events[events.length - 1].version + 1;
|
|
101
|
+
if (self._writeOnly === true) {
|
|
102
|
+
self._commitSequence++;
|
|
103
|
+
self._clearChanges();
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
for (var i = 0; i < events.length; i++) {
|
|
107
|
+
self._committedEvents.push(events[i]);
|
|
108
|
+
}
|
|
109
|
+
self._clearChanges();
|
|
110
|
+
self._commitSequence++;
|
|
111
|
+
return self;
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
EventStream.prototype._clearChanges = function () {
|
|
117
|
+
this._uncommittedEvents = [];
|
|
118
|
+
};
|
|
119
|
+
EventStream.prototype.revertChanges = function () {
|
|
120
|
+
//trunc the uncomitted events log
|
|
121
|
+
this._uncommittedEvents = [];
|
|
122
|
+
};
|
|
123
|
+
EventStream.prototype._buildCommit = function (commitId, events) {
|
|
124
|
+
var commitSequence = this._commitSequence;
|
|
125
|
+
var commit = new commit_1.default(commitId, this._partition._partitionId, this._streamId, ++commitSequence, events);
|
|
126
|
+
var version = this._version == -1 ? 0 : this._version;
|
|
127
|
+
lodash_1.default.forEach(events, function (evt) {
|
|
128
|
+
evt.version = version++;
|
|
129
|
+
});
|
|
130
|
+
return commit;
|
|
131
|
+
};
|
|
132
|
+
EventStream.prototype.getCommittedEvents = function () {
|
|
133
|
+
if (this._writeOnly) {
|
|
134
|
+
throw new Error("Cannot access committed events when using writeOnly mode...");
|
|
135
|
+
}
|
|
136
|
+
return this._committedEvents.slice();
|
|
137
|
+
};
|
|
138
|
+
EventStream.prototype.getUncommittedEvents = function () {
|
|
139
|
+
return this._uncommittedEvents.slice();
|
|
140
|
+
};
|
|
141
|
+
exports.default = EventStream;
|
|
142
|
+
//# sourceMappingURL=event_stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event_stream.js","sourceRoot":"","sources":["../../src/event_stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IBaseEvent, ICommit } from "../types";
|
|
2
|
+
declare var Commit: new <TEvent extends IBaseEvent = IBaseEvent>(id: string, partitionId: string, streamId: string, commitSequence: number, events: TEvent[]) => ICommit<TEvent>;
|
|
3
|
+
export default Commit;
|
|
4
|
+
//# sourceMappingURL=commit.d.ts.map
|