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.
Files changed (108) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/LICENSE +22 -22
  3. package/README.md +332 -332
  4. package/biome.json +58 -0
  5. package/dist/index.d.ts +5 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +20 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/src/dispatch/dispatch_service.d.ts +8 -0
  10. package/dist/src/dispatch/dispatch_service.d.ts.map +1 -0
  11. package/dist/src/dispatch/dispatch_service.js +9 -0
  12. package/dist/src/dispatch/dispatch_service.js.map +1 -0
  13. package/dist/src/event.d.ts +10 -0
  14. package/dist/src/event.d.ts.map +1 -0
  15. package/dist/src/event.js +12 -0
  16. package/dist/src/event.js.map +1 -0
  17. package/dist/src/event_store.d.ts +29 -0
  18. package/dist/src/event_store.d.ts.map +1 -0
  19. package/dist/src/event_store.js +71 -0
  20. package/dist/src/event_store.js.map +1 -0
  21. package/dist/src/event_store_partition.d.ts +28 -0
  22. package/dist/src/event_store_partition.d.ts.map +1 -0
  23. package/dist/src/event_store_partition.js +130 -0
  24. package/dist/src/event_store_partition.js.map +1 -0
  25. package/dist/src/event_stream.d.ts +32 -0
  26. package/dist/src/event_stream.d.ts.map +1 -0
  27. package/dist/src/event_stream.js +142 -0
  28. package/dist/src/event_stream.js.map +1 -0
  29. package/dist/src/persistence/commit.d.ts +4 -0
  30. package/dist/src/persistence/commit.d.ts.map +1 -0
  31. package/dist/src/persistence/commit.js +11 -0
  32. package/dist/src/persistence/commit.js.map +1 -0
  33. package/dist/src/persistence/concurrency_error.d.ts +6 -0
  34. package/dist/src/persistence/concurrency_error.d.ts.map +1 -0
  35. package/dist/src/persistence/concurrency_error.js +13 -0
  36. package/dist/src/persistence/concurrency_error.js.map +1 -0
  37. package/dist/src/persistence/duplicate_commit_error.d.ts +6 -0
  38. package/dist/src/persistence/duplicate_commit_error.d.ts.map +1 -0
  39. package/dist/src/persistence/duplicate_commit_error.js +13 -0
  40. package/dist/src/persistence/duplicate_commit_error.js.map +1 -0
  41. package/dist/src/persistence/inmemory/inmemory_partition.d.ts +23 -0
  42. package/dist/src/persistence/inmemory/inmemory_partition.d.ts.map +1 -0
  43. package/dist/src/persistence/inmemory/inmemory_partition.js +138 -0
  44. package/dist/src/persistence/inmemory/inmemory_partition.js.map +1 -0
  45. package/dist/src/persistence/inmemory/inmemory_persistence.d.ts +13 -0
  46. package/dist/src/persistence/inmemory/inmemory_persistence.d.ts.map +1 -0
  47. package/dist/src/persistence/inmemory/inmemory_persistence.js +26 -0
  48. package/dist/src/persistence/inmemory/inmemory_persistence.js.map +1 -0
  49. package/dist/src/persistence/persistence_partition.d.ts +12 -0
  50. package/dist/src/persistence/persistence_partition.d.ts.map +1 -0
  51. package/dist/src/persistence/persistence_partition.js +21 -0
  52. package/dist/src/persistence/persistence_partition.js.map +1 -0
  53. package/dist/src/persistence/persistence_provider_template.d.ts +10 -0
  54. package/dist/src/persistence/persistence_provider_template.d.ts.map +1 -0
  55. package/dist/src/persistence/persistence_provider_template.js +11 -0
  56. package/dist/src/persistence/persistence_provider_template.js.map +1 -0
  57. package/dist/src/replication/master_replication_service.d.ts +7 -0
  58. package/dist/src/replication/master_replication_service.d.ts.map +1 -0
  59. package/dist/src/replication/master_replication_service.js +9 -0
  60. package/dist/src/replication/master_replication_service.js.map +1 -0
  61. package/dist/src/types.d.ts +68 -0
  62. package/dist/src/types.d.ts.map +1 -0
  63. package/dist/src/types.js +3 -0
  64. package/dist/src/types.js.map +1 -0
  65. package/index.ts +21 -0
  66. package/package.json +44 -46
  67. package/scripts/postbuild.js +27 -0
  68. package/src/dispatch/dispatch_service.ts +14 -0
  69. package/src/event.ts +24 -0
  70. package/src/event_store.ts +82 -0
  71. package/src/event_store_partition.ts +270 -0
  72. package/src/event_stream.ts +184 -0
  73. package/src/persistence/commit.ts +24 -0
  74. package/src/persistence/concurrency_error.ts +16 -0
  75. package/src/persistence/duplicate_commit_error.ts +16 -0
  76. package/src/persistence/inmemory/inmemory_partition.ts +194 -0
  77. package/src/persistence/inmemory/inmemory_persistence.ts +35 -0
  78. package/src/persistence/persistence_partition.ts +34 -0
  79. package/src/persistence/persistence_provider_template.ts +20 -0
  80. package/src/replication/master_replication_service.ts +12 -0
  81. package/src/types.ts +128 -0
  82. package/test/event_partition.ts +151 -0
  83. package/test/event_store.ts +25 -0
  84. package/test/event_stream.ts +160 -0
  85. package/test/persistence/inmemory.ts +139 -0
  86. package/tsconfig.json +13 -0
  87. package/vitest.config.ts +13 -0
  88. package/.eslintrc +0 -4
  89. package/.travis.yml +0 -4
  90. package/checkstyle-result.xml +0 -1
  91. package/index.js +0 -1
  92. package/lib/dispatch/dispatch_service.js +0 -7
  93. package/lib/event.js +0 -10
  94. package/lib/event_store.js +0 -53
  95. package/lib/event_store_partition.js +0 -148
  96. package/lib/event_stream.js +0 -150
  97. package/lib/persistence/commit.js +0 -12
  98. package/lib/persistence/concurrency_error.js +0 -10
  99. package/lib/persistence/duplicate_commit_error.js +0 -10
  100. package/lib/persistence/inmemory/inmemory_partition.js +0 -146
  101. package/lib/persistence/inmemory/inmemory_persistence.js +0 -25
  102. package/lib/persistence/persistence_partition.js +0 -23
  103. package/lib/persistence/persistence_provider_template.js +0 -17
  104. package/lib/replication/master_replication_service.js +0 -7
  105. package/test/event_partition.js +0 -232
  106. package/test/event_store.js +0 -36
  107. package/test/event_stream.js +0 -214
  108. 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
+ }
@@ -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":";;;;;AAAA,wDAA+B;AAC/B,oDAAuB;AACvB,+BAAkC;AAClC,kEAAyC;AA2DzC,IAAI,mBAAmB,GAAG,UAExB,WAAmB,EACnB,oBAA2C,EAC3C,eAAiC;IAEjC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IAChC,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAC;IAClD,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;IAExC,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,gBAAC,CAAC,OAAO,CACP;QACE,eAAe;QACf,cAAc;QACd,aAAa;QACb,yBAAyB;QACzB,gBAAgB;QAChB,iBAAiB;QACjB,6BAA6B;KACrB,EACV,UAAU,IAAY;QACpB,uGAAuG;QACvG,IAAI,EAAE,GAAG,IAAI,CAAC,qBAGb,CAAC;QACF,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,GAAG;gBACX,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;YAC/D,CAAC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,KAAK,yBAAyB,EAAE,CAAC;gBACvC,oBAAoB;gBACpB,IAAI,CAAC,IAAI,CAAC,GAAG;oBACX,OAAO,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAChD,IAAI,CAAC,qBAAqB,EAC1B,SAAwD,CACzD,CAAC;gBACJ,CAAC,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAIyB,CAAC;AAE1B,mBAAmB,CAAC,SAAS,CAAC,UAAU,GAAG,UAEzC,QAAgB,EAChB,SAAuD,EACvD,QAA4C;IAE5C,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;QACpC,QAAQ,GAAG,SAAS,CAAC;QACrB,SAAS,GAAG,KAAK,CAAC;IACpB,CAAC;IACD,IAAI,MAAM,GAAG,IAAI,sBAAW,CAC1B,IAA+D,EAC/D,QAAQ,EACR,SAAoB,CACrB,CAAC;IACF,OAAO,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF,mBAAmB,CAAC,SAAS,CAAC,MAAM,GAAG,UAErC,OAA4B,EAC5B,QAAgC;IAEhC,WAAW;IACX,IAAI,IAAI,GAAG,IAAI,CAAC;IAEhB,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,kBAAO,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,MAAe;QACpD,OAAO,IAAI,CAAC,qBAAqB;aAC9B,MAAM,CAAC,MAAM,EAAE,QAAiC,CAAC;aACjD,IAAI,CAAC,UAAU,CAAU;YACxB,IAAI,IAAI,GAAG;gBACT,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACtD,CAAC,CAAC;YACF,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC1B,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACtC,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,YAAY;AACd,CAAC,CAAC;AAEF;;;GAGG;AACH,mBAAmB,CAAC,SAAS,CAAC,MAAM,GAAG,UAErC,QAAgB,EAChB,WAAqC;IAErC,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE;QACzC,EAAE,EAAE,IAAA,SAAI,GAAE;QACV,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,CACpB,EAAE,EACF,EAAE,cAAc,EAAE,IAAI,IAAI,EAAE,EAAE,EAC9B,CAAC,WAAW,IAAK,WAAW,CAAC,OAAmC,CAAC,IAAI,EAAE,CACxE;KACF,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;SAC1C,IAAI,CAAC;QACJ,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC;SACD,IAAI,CAAC,UAAU,MAA2B;QACzC,MAAM,CAAC,MAAM,CAAC,KAAmB,CAAC,CAAC;QACnC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAA,SAAI,GAAE,CAAC,CAAC;IAC/B,CAAC,CAAC;SACD,IAAI,CAAC;QACJ,sCAAsC;QACtC,IAAI,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC7D,CAAC;aAAM,IAAI,IAAI,CAAC,qBAAqB,CAAC,eAAe,EAAE,CAAC;YACtD,OAAO,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAChE,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,0BAA0B;AAE1B,mBAAmB,CAAC,SAAS,CAAC,YAAY,GAAG,UAE3C,QAAgB,EAChB,QAAkC;IAElC,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACpE,CAAC,CAAC;AAEF,mBAAmB,CAAC,SAAS,CAAC,SAAS,GAAG,UAExC,QAAkC;IAElC,OAAO,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACvD,CAAC,CAAC;AAEF,mBAAmB,CAAC,SAAS,CAAC,gCAAgC,GAAG,UAE/D,QAAgB,EAChB,QAAgC;IAEhC,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,OAAO,IAAI,kBAAO,CAAC,UACjB,OAAiC,EACjC,MAA+B;QAE/B,IAAI,CAAC,YAAY,EAAE,CACjB,QAAQ,EACR,UAAU,GAAiB,EAAE,QAAoB;YAC/C,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,IAAI,eAAe,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC3D,IAAI,CAAC,WAAW,CACd,QAAQ,EACR,eAAe,EACf,UAAU,IAAkB,EAAE,GAAe;oBAC3C,OAAO,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;gBAChD,CAAC,CACF,CAAC;YACJ,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,4BAA4B;AAE5B,mBAAmB,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAElD,QAAgB,EAChB,cAAsB,EACtB,QAA6B;IAE7B,OAAO,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,EAAE,CACpD,QAAQ,EACR,cAAc,EACd,QAAQ,CACT,CAAC;AACJ,CAAC,CAAC;AAEF,mBAAmB,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAEjD,QAAgB,EAChB,MAA+B,EAC/B,QAAgC;IAEhC,OAAO,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,CACnD,QAAQ,EACR,MAAM,EACN,QAAQ,CACT,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,mBAAmB,CAAC"}
@@ -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