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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commit.d.ts","sourceRoot":"","sources":["../../../src/persistence/commit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEpD,QAAA,IAAI,MAAM,EAaM,KAAK,MAAM,SAAS,UAAU,GAAG,UAAU,EACzD,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,EAAE,KACb,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB,eAAe,MAAM,CAAC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var Commit = function (id, partitionId, streamId, commitSequence, events) {
4
+ this.id = id;
5
+ this.partitionId = partitionId;
6
+ this.streamId = streamId;
7
+ this.commitSequence = commitSequence;
8
+ this.events = events;
9
+ };
10
+ exports.default = Commit;
11
+ //# sourceMappingURL=commit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commit.js","sourceRoot":"","sources":["../../../src/persistence/commit.ts"],"names":[],"mappings":";;AAEA,IAAI,MAAM,GAAG,UAEX,EAAU,EACV,WAAmB,EACnB,QAAgB,EAChB,cAAsB,EACtB,MAAgB;IAEhB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACzB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACrC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,CAMoB,CAAC;AAErB,kBAAe,MAAM,CAAC"}
@@ -0,0 +1,6 @@
1
+ interface IConcurrencyError extends Error {
2
+ message: string;
3
+ }
4
+ declare var ConcurrencyError: new (message: string) => IConcurrencyError;
5
+ export default ConcurrencyError;
6
+ //# sourceMappingURL=concurrency_error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concurrency_error.d.ts","sourceRoot":"","sources":["../../../src/persistence/concurrency_error.ts"],"names":[],"mappings":"AAEA,UAAU,iBAAkB,SAAQ,KAAK;IACvC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,QAAA,IAAI,gBAAgB,EAGJ,KACd,OAAO,EAAE,MAAM,KACZ,iBAAiB,CAAC;AAIvB,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,13 @@
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 node_util_1 = __importDefault(require("node:util"));
7
+ var ConcurrencyError = function (message) {
8
+ Error.call(this);
9
+ this.message = message;
10
+ };
11
+ node_util_1.default.inherits(ConcurrencyError, Error);
12
+ exports.default = ConcurrencyError;
13
+ //# sourceMappingURL=concurrency_error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concurrency_error.js","sourceRoot":"","sources":["../../../src/persistence/concurrency_error.ts"],"names":[],"mappings":";;;;;AAAA,0DAA6B;AAM7B,IAAI,gBAAgB,GAAG,UAAmC,OAAe;IACvE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACzB,CAEsB,CAAC;AAEvB,mBAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAEvC,kBAAe,gBAAgB,CAAC"}
@@ -0,0 +1,6 @@
1
+ interface IDuplicateCommitError extends Error {
2
+ message: string;
3
+ }
4
+ declare var DuplicateCommitError: new (message: string) => IDuplicateCommitError;
5
+ export default DuplicateCommitError;
6
+ //# sourceMappingURL=duplicate_commit_error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duplicate_commit_error.d.ts","sourceRoot":"","sources":["../../../src/persistence/duplicate_commit_error.ts"],"names":[],"mappings":"AAEA,UAAU,qBAAsB,SAAQ,KAAK;IAC3C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,QAAA,IAAI,oBAAoB,EAGR,KACd,OAAO,EAAE,MAAM,KACZ,qBAAqB,CAAC;AAI3B,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,13 @@
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 node_util_1 = __importDefault(require("node:util"));
7
+ var DuplicateCommitError = function (message) {
8
+ Error.call(this);
9
+ this.message = message;
10
+ };
11
+ node_util_1.default.inherits(DuplicateCommitError, Error);
12
+ exports.default = DuplicateCommitError;
13
+ //# sourceMappingURL=duplicate_commit_error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duplicate_commit_error.js","sourceRoot":"","sources":["../../../src/persistence/duplicate_commit_error.ts"],"names":[],"mappings":";;;;;AAAA,0DAA6B;AAM7B,IAAI,oBAAoB,GAAG,UAAuC,OAAe;IAC/E,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACzB,CAE0B,CAAC;AAE3B,mBAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;AAE3C,kBAAe,oBAAoB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import Promise from "bluebird";
2
+ import type { ICommit, ISnapshot, NodeCallback } from "../../types";
3
+ interface IInMemoryPartition {
4
+ _commits: ICommit[];
5
+ _streamIndex: Record<string, ICommit[]>;
6
+ _commitIds: string[];
7
+ _commitConcurrencyCheck: string[];
8
+ _snapshots: Record<string, ISnapshot>;
9
+ _promisify<T>(value: T, callback?: NodeCallback<T>): Promise<T>;
10
+ truncateStreamFrom(streamId: string, commitSequence: number, remove?: boolean | NodeCallback<void>, callback?: NodeCallback<void>): Promise<void>;
11
+ applyCommitHeader(commitId: string, header: Record<string, unknown>, callback?: NodeCallback<ICommit>): Promise<ICommit>;
12
+ append(commit: ICommit, callback?: NodeCallback<ICommit>): Promise<ICommit>;
13
+ storeSnapshot(streamId: string, snapshot: Record<string, unknown> | undefined, version: number, callback?: NodeCallback<ISnapshot>): Promise<ISnapshot>;
14
+ loadSnapshot(streamId: string, callback?: NodeCallback<ISnapshot | undefined>): Promise<ISnapshot | undefined>;
15
+ markAsDispatched(commit: ICommit, callback?: NodeCallback<ICommit>): Promise<ICommit>;
16
+ getUndispatched(callback?: NodeCallback<ICommit[]>): Promise<ICommit[]>;
17
+ queryAll(callback?: NodeCallback<ICommit[]>): Promise<ICommit[]>;
18
+ getLatestCommit(streamId: string, callback?: NodeCallback<ICommit | undefined>): Promise<ICommit | undefined>;
19
+ queryStream(streamId: string, fromEventSequence?: number | NodeCallback<ICommit[]>, callback?: NodeCallback<ICommit[]>): Promise<ICommit[]>;
20
+ }
21
+ declare var InMemoryPartition: new () => IInMemoryPartition;
22
+ export default InMemoryPartition;
23
+ //# sourceMappingURL=inmemory_partition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inmemory_partition.d.ts","sourceRoot":"","sources":["../../../../src/persistence/inmemory/inmemory_partition.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,UAAU,CAAC;AAE/B,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIpE,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACxC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACtC,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAChE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClJ,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzH,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5E,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACxJ,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IAC/G,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtF,eAAe,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACxE,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACjE,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAC9G,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CAC7I;AAED,QAAA,IAAI,iBAAiB,EAML,UAAU,kBAAkB,CAAC;AAkK7C,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,138 @@
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 concurrency_error_1 = __importDefault(require("../concurrency_error"));
9
+ const duplicate_commit_error_1 = __importDefault(require("../duplicate_commit_error"));
10
+ var InMemoryPartition = function () {
11
+ this._commits = [];
12
+ this._streamIndex = {};
13
+ this._commitIds = [];
14
+ this._commitConcurrencyCheck = [];
15
+ this._snapshots = {};
16
+ };
17
+ function getConcurrencyKey(commit) {
18
+ return commit.streamId + "-" + commit.commitSequence;
19
+ }
20
+ InMemoryPartition.prototype._promisify = function (value, callback) {
21
+ return bluebird_1.default.resolve(value).nodeify(callback);
22
+ };
23
+ InMemoryPartition.prototype.truncateStreamFrom = function (streamId, commitSequence, remove, callback) {
24
+ if (typeof remove === "function") {
25
+ callback = remove;
26
+ }
27
+ var self = this;
28
+ var commits = Array.from(this._streamIndex[streamId]);
29
+ for (var i = 0; i < commits.length; i++) {
30
+ var commit = commits[i];
31
+ if (commit.commitSequence >= commitSequence) {
32
+ //remove from commitId
33
+ self._commitIds = lodash_1.default.without(self._commitIds, commit.id);
34
+ self._commitConcurrencyCheck = lodash_1.default.without(self._commitConcurrencyCheck, getConcurrencyKey(commit));
35
+ self._commits = lodash_1.default.without(self._commits, commit);
36
+ }
37
+ }
38
+ commits = commits.slice(0, Math.max(commitSequence, 0));
39
+ this._streamIndex[streamId] = commits;
40
+ return this._promisify(undefined, callback);
41
+ };
42
+ InMemoryPartition.prototype.applyCommitHeader = function (commitId, header, callback) {
43
+ var commit = lodash_1.default.find(this._commits, { id: commitId });
44
+ if (commit) {
45
+ lodash_1.default.assign(commit, header);
46
+ }
47
+ else {
48
+ throw new Error("Trying to apply header to missing commit: " + commitId);
49
+ }
50
+ return this._promisify(commit, callback);
51
+ };
52
+ InMemoryPartition.prototype.append = function (commit, callback) {
53
+ commit.isDispatched = false;
54
+ //check for duplicates
55
+ if (lodash_1.default.includes(this._commitIds, commit.id)) {
56
+ throw new duplicate_commit_error_1.default("Duplicate commit of " + commit.id);
57
+ }
58
+ var concurrencyKey = getConcurrencyKey(commit);
59
+ if (lodash_1.default.includes(this._commitConcurrencyCheck, concurrencyKey)) {
60
+ throw new concurrency_error_1.default("Concurrency error on stream " + commit.streamId);
61
+ }
62
+ //check concurrency
63
+ this._commits.push(commit);
64
+ this._commitIds.push(commit.id);
65
+ this._commitConcurrencyCheck.push(concurrencyKey);
66
+ var index = this._streamIndex[commit.streamId];
67
+ if (!index) {
68
+ index = this._streamIndex[commit.streamId] = [];
69
+ }
70
+ index.push(commit);
71
+ return this._promisify(commit, callback);
72
+ };
73
+ InMemoryPartition.prototype.storeSnapshot = function (streamId, snapshot, version, callback) {
74
+ return this._promisify((this._snapshots[streamId] = {
75
+ id: streamId,
76
+ version: version,
77
+ snapshot: snapshot,
78
+ }), callback);
79
+ };
80
+ // Loads the latest snapshot
81
+ InMemoryPartition.prototype.loadSnapshot = function (streamId, callback) {
82
+ return this._promisify(this._snapshots[streamId], callback);
83
+ };
84
+ InMemoryPartition.prototype.markAsDispatched = function (commit, callback) {
85
+ commit.isDispatched = true;
86
+ return this._promisify(commit, callback);
87
+ };
88
+ InMemoryPartition.prototype.getUndispatched = function (callback) {
89
+ var commits = this._commits;
90
+ var undispatched = [];
91
+ for (var i = 0; i < commits.length; i++) {
92
+ if (!commits[i].isDispatched) {
93
+ undispatched.push(commits[i]);
94
+ }
95
+ }
96
+ return this._promisify(undispatched, callback);
97
+ };
98
+ InMemoryPartition.prototype.queryAll = function (callback) {
99
+ return this._promisify(this._commits.slice(), callback);
100
+ };
101
+ InMemoryPartition.prototype.getLatestCommit = function (streamId, callback) {
102
+ var result = this._streamIndex[streamId];
103
+ if (result) {
104
+ return this._promisify(result.slice().pop(), callback);
105
+ }
106
+ return this._promisify(undefined, callback);
107
+ };
108
+ InMemoryPartition.prototype.queryStream = function (streamId, fromEventSequence, callback) {
109
+ if (lodash_1.default.isFunction(fromEventSequence)) {
110
+ callback = fromEventSequence;
111
+ fromEventSequence = 0;
112
+ }
113
+ var result = this._streamIndex[streamId];
114
+ if (result) {
115
+ var sliced = result.slice();
116
+ if (fromEventSequence > 0) {
117
+ var startCommitId = 0;
118
+ var foundEvents = 0;
119
+ for (var i = 0; i < sliced.length; i++) {
120
+ foundEvents += sliced[0].events.length;
121
+ startCommitId++;
122
+ if (foundEvents >= fromEventSequence) {
123
+ break;
124
+ }
125
+ }
126
+ var tooMany = foundEvents - fromEventSequence;
127
+ sliced = sliced.slice(startCommitId - (tooMany > 0 ? 1 : 0));
128
+ if (tooMany > 0) {
129
+ sliced[0] = lodash_1.default.clone(sliced[0]); // avoid modifying reference
130
+ sliced[0].events = sliced[0].events.slice(sliced[0].events.length - tooMany);
131
+ }
132
+ }
133
+ return this._promisify(sliced, callback);
134
+ }
135
+ return this._promisify(result, callback);
136
+ };
137
+ exports.default = InMemoryPartition;
138
+ //# sourceMappingURL=inmemory_partition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inmemory_partition.js","sourceRoot":"","sources":["../../../../src/persistence/inmemory/inmemory_partition.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import Promise from "bluebird";
2
+ import type { NodeCallback } from "../../types";
3
+ import Partition from "./inmemory_partition";
4
+ type InMemoryPartitionInstance = InstanceType<typeof Partition>;
5
+ interface IInMemoryPersistence {
6
+ _partitions: Record<string, InMemoryPartitionInstance>;
7
+ _promisify<T>(value: T, callback?: NodeCallback<T>): Promise<T>;
8
+ openPartition(partitionId?: string, callback?: NodeCallback<InMemoryPartitionInstance>): Promise<InMemoryPartitionInstance>;
9
+ _getPartition(partitionId?: string): InMemoryPartitionInstance;
10
+ }
11
+ declare var InMemoryPersistence: new () => IInMemoryPersistence;
12
+ export default InMemoryPersistence;
13
+ //# sourceMappingURL=inmemory_persistence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inmemory_persistence.d.ts","sourceRoot":"","sources":["../../../../src/persistence/inmemory/inmemory_persistence.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,UAAU,CAAC;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAE7C,KAAK,yBAAyB,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,CAAC;AAEhE,UAAU,oBAAoB;IAC5B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IACvD,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAChE,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,yBAAyB,CAAC,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC5H,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,yBAAyB,CAAC;CAChE;AAED,QAAA,IAAI,mBAAmB,EAEP,UAAU,oBAAoB,CAAC;AAmB/C,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,26 @@
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 inmemory_partition_1 = __importDefault(require("./inmemory_partition"));
8
+ var InMemoryPersistence = function InMemoryPersistance() {
9
+ this._partitions = {};
10
+ };
11
+ InMemoryPersistence.prototype._promisify = function (value, callback) {
12
+ return bluebird_1.default.resolve(value).nodeify(callback);
13
+ };
14
+ InMemoryPersistence.prototype.openPartition = function (partitionId, callback) {
15
+ return this._promisify(this._getPartition(partitionId), callback);
16
+ };
17
+ InMemoryPersistence.prototype._getPartition = function (partitionId) {
18
+ var currentPartitionId = partitionId || "master";
19
+ var partition = this._partitions[currentPartitionId];
20
+ if (partition == null) {
21
+ partition = this._partitions[currentPartitionId] = new inmemory_partition_1.default();
22
+ }
23
+ return partition;
24
+ };
25
+ exports.default = InMemoryPersistence;
26
+ //# sourceMappingURL=inmemory_persistence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inmemory_persistence.js","sourceRoot":"","sources":["../../../../src/persistence/inmemory/inmemory_persistence.ts"],"names":[],"mappings":";;;;;AAAA,wDAA+B;AAE/B,8EAA6C;AAW7C,IAAI,mBAAmB,GAAG,SAAS,mBAAmB;IACpD,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACxB,CAA8C,CAAC;AAE/C,mBAAmB,CAAC,SAAS,CAAC,UAAU,GAAG,UAAyC,KAAQ,EAAE,QAA0B;IACtH,OAAO,kBAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,mBAAmB,CAAC,SAAS,CAAC,aAAa,GAAG,UAAsC,WAAoB,EAAE,QAAkD;IAC1J,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,CAAC;AACpE,CAAC,CAAC;AAEF,mBAAmB,CAAC,SAAS,CAAC,aAAa,GAAG,UAAsC,WAAoB;IACtG,IAAI,kBAAkB,GAAG,WAAW,IAAI,QAAQ,CAAC;IACjD,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACrD,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;QACtB,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,GAAG,IAAI,4BAAS,EAAE,CAAC;IACrE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,kBAAe,mBAAmB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { ICommit, NodeCallback } from "../types";
2
+ interface IPersistencePartitionTemplate {
3
+ append(_commit: ICommit, _callback?: NodeCallback<ICommit>): void;
4
+ getUndispatched(_callback?: NodeCallback<ICommit[]>): void;
5
+ markAsDispatched(_commit: ICommit, _callback?: NodeCallback<void>): void;
6
+ queryAll(_callback?: NodeCallback<ICommit[]>): void;
7
+ queryStream(_streamId: string, _callback?: NodeCallback<ICommit[]>): void;
8
+ }
9
+ /** Abstract template — subclasses must override all methods. */
10
+ declare var PersistencePartition: new () => IPersistencePartitionTemplate;
11
+ export default PersistencePartition;
12
+ //# sourceMappingURL=persistence_partition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence_partition.d.ts","sourceRoot":"","sources":["../../../src/persistence/persistence_partition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEtD,UAAU,6BAA6B;IACrC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IAClE,eAAe,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;IAC3D,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACzE,QAAQ,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;IACpD,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;CAC3E;AAED,gEAAgE;AAChE,QAAA,IAAI,oBAAoB,EAAgC,UAAU,6BAA6B,CAAC;AAsBhG,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /** Abstract template — subclasses must override all methods. */
4
+ var PersistencePartition = function () { };
5
+ PersistencePartition.prototype.append = function (_commit, _callback) {
6
+ //add commit
7
+ };
8
+ PersistencePartition.prototype.getUndispatched = function (_callback) {
9
+ //return events which are not dispatched
10
+ };
11
+ PersistencePartition.prototype.markAsDispatched = function (_commit, _callback) {
12
+ //return events which are not dispatched
13
+ };
14
+ PersistencePartition.prototype.queryAll = function (_callback) {
15
+ //return Query
16
+ };
17
+ PersistencePartition.prototype.queryStream = function (_streamId, _callback) {
18
+ //return Query;
19
+ };
20
+ exports.default = PersistencePartition;
21
+ //# sourceMappingURL=persistence_partition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence_partition.js","sourceRoot":"","sources":["../../../src/persistence/persistence_partition.ts"],"names":[],"mappings":";;AAUA,gEAAgE;AAChE,IAAI,oBAAoB,GAAG,cAAa,CAAuD,CAAC;AAEhG,oBAAoB,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,OAAgB,EAAE,SAAiC;IACnG,YAAY;AACd,CAAC,CAAC;AAEF,oBAAoB,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,SAAmC;IAC5F,wCAAwC;AAC1C,CAAC,CAAC;AAEF,oBAAoB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,OAAgB,EAAE,SAA8B;IAC1G,wCAAwC;AAC1C,CAAC,CAAC;AAEF,oBAAoB,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,SAAmC;IACrF,cAAc;AAChB,CAAC,CAAC;AAEF,oBAAoB,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,SAAiB,EAAE,SAAmC;IAC3G,eAAe;AACjB,CAAC,CAAC;AAEF,kBAAe,oBAAoB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { NodeCallback } from "../types";
2
+ interface IPersistenceProviderTemplate {
3
+ openPartition(_partitionId?: string, _callback?: NodeCallback<unknown>): void;
4
+ deletePartition(_partitionId?: string, _callback?: NodeCallback<void>): void;
5
+ close(_callback?: NodeCallback<void>): void;
6
+ }
7
+ /** Abstract template — subclasses must override all methods. */
8
+ declare var PersistenceProvider: new () => IPersistenceProviderTemplate;
9
+ export default PersistenceProvider;
10
+ //# sourceMappingURL=persistence_provider_template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence_provider_template.d.ts","sourceRoot":"","sources":["../../../src/persistence/persistence_provider_template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,UAAU,4BAA4B;IACpC,aAAa,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IAC9E,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7E,KAAK,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC7C;AAED,gEAAgE;AAChE,QAAA,IAAI,mBAAmB,EAAgC,UAAU,4BAA4B,CAAC;AAU9F,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /** Abstract template — subclasses must override all methods. */
4
+ var PersistenceProvider = function () { };
5
+ PersistenceProvider.prototype.openPartition = function (_partitionId, _callback) {
6
+ // body...
7
+ };
8
+ PersistenceProvider.prototype.deletePartition = function (_partitionId, _callback) { };
9
+ PersistenceProvider.prototype.close = function (_callback) { };
10
+ exports.default = PersistenceProvider;
11
+ //# sourceMappingURL=persistence_provider_template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence_provider_template.js","sourceRoot":"","sources":["../../../src/persistence/persistence_provider_template.ts"],"names":[],"mappings":";;AAQA,gEAAgE;AAChE,IAAI,mBAAmB,GAAG,cAAa,CAAsD,CAAC;AAE9F,mBAAmB,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,YAAqB,EAAE,SAAiC;IAC9G,UAAU;AACZ,CAAC,CAAC;AAEF,mBAAmB,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,YAAqB,EAAE,SAA8B,IAAG,CAAC,CAAC;AAEpH,mBAAmB,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,SAA8B,IAAG,CAAC,CAAC;AAEnF,kBAAe,mBAAmB,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface IMasterReplicationService {
2
+ handle(_first_argument: unknown): void;
3
+ }
4
+ /** Abstract template — subclasses must override handle. */
5
+ declare var MasterReplicatonService: new () => IMasterReplicationService;
6
+ export default MasterReplicatonService;
7
+ //# sourceMappingURL=master_replication_service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"master_replication_service.d.ts","sourceRoot":"","sources":["../../../src/replication/master_replication_service.ts"],"names":[],"mappings":"AAAA,UAAU,yBAAyB;IACjC,MAAM,CAAC,eAAe,EAAE,OAAO,GAAG,IAAI,CAAC;CACxC;AAED,2DAA2D;AAC3D,QAAA,IAAI,uBAAuB,EAAgC,UAAU,yBAAyB,CAAC;AAM/F,eAAe,uBAAuB,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /** Abstract template — subclasses must override handle. */
4
+ var MasterReplicatonService = function () { };
5
+ MasterReplicatonService.prototype.handle = function (_first_argument) {
6
+ // body...
7
+ };
8
+ exports.default = MasterReplicatonService;
9
+ //# sourceMappingURL=master_replication_service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"master_replication_service.js","sourceRoot":"","sources":["../../../src/replication/master_replication_service.ts"],"names":[],"mappings":";;AAIA,2DAA2D;AAC3D,IAAI,uBAAuB,GAAG,cAAa,CAAmD,CAAC;AAE/F,uBAAuB,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,eAAwB;IAC3E,UAAU;AACZ,CAAC,CAAC;AAEF,kBAAe,uBAAuB,CAAC"}
@@ -0,0 +1,68 @@
1
+ import type Bluebird from "bluebird";
2
+ /**
3
+ * Node-style error-first callback.
4
+ */
5
+ export type NodeCallback<T> = (err: Error | null, result?: T) => void;
6
+ /**
7
+ * Minimum event contract that tapeworm requires.
8
+ * Tapeworm reads `type` for delete detection and manages `version` internally.
9
+ * All other fields (payload, aggregateId, etc.) pass through untouched.
10
+ */
11
+ export interface IBaseEvent {
12
+ id: string;
13
+ type: string;
14
+ version?: number;
15
+ [key: string]: unknown;
16
+ }
17
+ /**
18
+ * A commit groups one or more events for atomic persistence.
19
+ */
20
+ export interface ICommit<TEvent extends IBaseEvent = IBaseEvent> {
21
+ id: string;
22
+ partitionId: string;
23
+ streamId: string;
24
+ commitSequence: number;
25
+ events: TEvent[];
26
+ isDispatched?: boolean;
27
+ [key: string]: unknown;
28
+ }
29
+ /**
30
+ * Snapshot of aggregate state at a point in time.
31
+ */
32
+ export interface ISnapshot {
33
+ id: string;
34
+ version: number;
35
+ snapshot?: Record<string, unknown>;
36
+ storedDateTime?: string;
37
+ }
38
+ /**
39
+ * The persistence partition interface that all store implementations must satisfy.
40
+ * Methods marked optional are only implemented by some stores.
41
+ */
42
+ export interface IPersistencePartition<TEvent extends IBaseEvent = IBaseEvent> {
43
+ append(commit: ICommit<TEvent>, callback?: NodeCallback<ICommit<TEvent>>): Bluebird<ICommit<TEvent>>;
44
+ queryAll(callback?: NodeCallback<ICommit<TEvent>[]>): Bluebird<ICommit<TEvent>[]>;
45
+ queryStream(streamId: string, fromEventSequence?: number | NodeCallback<ICommit<TEvent>[]>, callback?: NodeCallback<ICommit<TEvent>[]>): Bluebird<ICommit<TEvent>[]>;
46
+ getUndispatched(callback?: NodeCallback<ICommit<TEvent>[]>): Bluebird<ICommit<TEvent>[]>;
47
+ markAsDispatched(commit: ICommit<TEvent>, callback?: NodeCallback<ICommit<TEvent>>): Bluebird<ICommit<TEvent>>;
48
+ storeSnapshot?(streamId: string, snapshot: Record<string, unknown> | undefined, version: number, callback?: NodeCallback<ISnapshot>): Bluebird<ISnapshot>;
49
+ loadSnapshot?(streamId: string, callback?: NodeCallback<ISnapshot | undefined>): Bluebird<ISnapshot | undefined>;
50
+ removeSnapshot?(streamId: string, callback?: NodeCallback<void>): Bluebird<void>;
51
+ removeSnapshots?(streamIds: string[], callback?: NodeCallback<void>): Bluebird<void>;
52
+ getLatestCommit?(streamId: string, callback?: NodeCallback<ICommit<TEvent> | undefined>): Bluebird<ICommit<TEvent> | undefined>;
53
+ truncateStreamFrom?(streamId: string, commitSequence: number, remove?: boolean | NodeCallback<void>, callback?: NodeCallback<void>): Bluebird<void>;
54
+ applyCommitHeader?(commitId: string, header: Record<string, unknown>, callback?: NodeCallback<ICommit<TEvent>>): Bluebird<ICommit<TEvent>>;
55
+ queryStreamWithSnapshot?(streamId: string, callback?: NodeCallback<unknown>): Bluebird<unknown>;
56
+ querySnapshotsByMaxDateTime?(dateTime: string, callback?: NodeCallback<ISnapshot[]>): Bluebird<ISnapshot[]>;
57
+ }
58
+ /**
59
+ * Top-level persistence provider — manages partitions.
60
+ */
61
+ export interface IPersistenceProvider<TEvent extends IBaseEvent = IBaseEvent> {
62
+ openPartition(partitionId?: string, callback?: NodeCallback<IPersistencePartition<TEvent>>): Bluebird<IPersistencePartition<TEvent>>;
63
+ }
64
+ /**
65
+ * Dispatch handler for publishing committed events.
66
+ */
67
+ export type DispatchHandler<TEvent extends IBaseEvent = IBaseEvent> = (commit: ICommit<TEvent>, done?: () => void) => void;
68
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
package/index.ts ADDED
@@ -0,0 +1,21 @@
1
+ import EventStore from "./src/event_store";
2
+
3
+ export {
4
+ Commit,
5
+ ConcurrencyError,
6
+ DuplicateCommitError,
7
+ Event,
8
+ EventStorePartition,
9
+ EventStream,
10
+ } from "./src/event_store";
11
+ // Re-export types for TypeScript consumers
12
+ export type {
13
+ DispatchHandler,
14
+ IBaseEvent,
15
+ ICommit,
16
+ IPersistencePartition,
17
+ IPersistenceProvider,
18
+ ISnapshot,
19
+ NodeCallback,
20
+ } from "./src/types";
21
+ export default EventStore;
package/package.json CHANGED
@@ -1,46 +1,44 @@
1
- {
2
- "name": "tapeworm",
3
- "version": "0.5.0",
4
- "description": "",
5
- "main": "index.js",
6
- "directories": {
7
- "test": "test"
8
- },
9
- "scripts": {
10
- "test": "mocha test --recursive",
11
- "test.watch": "mocha test --watch --recursive",
12
- "test.ci": "istanbul cover node_modules/mocha/bin/_mocha -- --recursive test -u exports -R tap >> tape.tap && istanbul report clover",
13
- "coverage": "istanbul cover node_modules/mocha/bin/_mocha -- --recursive test -u exports -R spec",
14
- "coverage-start": "istanbul cover node_modules/mocha/bin/_mocha test --recursive -- -u exports -R spec && start coverage/lcov-report/index.html",
15
- "lint": "eslint --env node --env mocha lib test",
16
- "lint.ci": "eslint --env node --env mocha -f checkstyle lib test > checkstyle-result.xml || echo"
17
- },
18
- "repository": {
19
- "type": "git",
20
- "url": "https://github.com/surikaterna/tapeworm"
21
- },
22
- "keywords": [
23
- "event sourcing",
24
- "event",
25
- "store"
26
- ],
27
- "prettier": "prettier-config-surikaterna",
28
- "author": "",
29
- "license": "MIT",
30
- "devDependencies": {
31
- "babel-eslint": "^4.1.1",
32
- "eslint": "^1.2.1",
33
- "eslint-config-airbnb-es5": "^1.0.8",
34
- "eslint-plugin-react": "^3.3.1",
35
- "istanbul": "^0.3.2",
36
- "mocha": "^2.0.1",
37
- "prettier": "^2.1.2",
38
- "prettier-config-surikaterna": "^1.0.1",
39
- "should": "^4.1.0"
40
- },
41
- "dependencies": {
42
- "bluebird": "^2.5.2",
43
- "lodash": "^4.17.21",
44
- "uuid": "^8.3.2"
45
- }
46
- }
1
+ {
2
+ "name": "tapeworm",
3
+ "version": "0.6.0",
4
+ "description": "",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "directories": {
8
+ "test": "test"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc && node scripts/postbuild.js",
12
+ "test": "vitest run",
13
+ "test:watch": "vitest watch",
14
+ "check": "biome check src test",
15
+ "format": "biome format src test",
16
+ "format:fix": "biome format --write src test",
17
+ "lint": "biome lint src test",
18
+ "lint:fix": "biome lint --write src test"
19
+ },
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "https://github.com/surikaterna/tapeworm"
23
+ },
24
+ "keywords": [
25
+ "event sourcing",
26
+ "event",
27
+ "store"
28
+ ],
29
+ "author": "",
30
+ "license": "MIT",
31
+ "devDependencies": {
32
+ "@biomejs/biome": "2.2.4",
33
+ "@types/bluebird": "3.5.42",
34
+ "@types/lodash": "4.17.24",
35
+ "@types/node": "26.5.1",
36
+ "@types/uuid": "8.3.4",
37
+ "vitest": "^5.0.0"
38
+ },
39
+ "dependencies": {
40
+ "bluebird": "^2.5.2",
41
+ "lodash": "^4.18.0",
42
+ "uuid": "^11.1.1"
43
+ }
44
+ }