@prodforcode/event-forge-mongoose 1.3.0 → 1.5.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/dist/repositories/mongoose-inbox.repository.d.ts +5 -2
- package/dist/repositories/mongoose-inbox.repository.d.ts.map +1 -1
- package/dist/repositories/mongoose-inbox.repository.js +58 -5
- package/dist/repositories/mongoose-inbox.repository.js.map +1 -1
- package/dist/schemas/inbox-message.schema.d.ts.map +1 -1
- package/dist/schemas/inbox-message.schema.js +19 -0
- package/dist/schemas/inbox-message.schema.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CreateInboxMessageDto, IInboxRepository, RecordInboxMessageResult } from '@prodforcode/event-forge-core';
|
|
1
|
+
import { CreateInboxMessageDto, IInboxRepository, InboxMessage, RecordInboxMessageResult } from '@prodforcode/event-forge-core';
|
|
2
2
|
import { Model } from 'mongoose';
|
|
3
3
|
import { InboxMessageDocument } from '../schemas/inbox-message.schema';
|
|
4
4
|
export declare class MongooseInboxRepository implements IInboxRepository {
|
|
@@ -6,10 +6,13 @@ export declare class MongooseInboxRepository implements IInboxRepository {
|
|
|
6
6
|
constructor(model: Model<InboxMessageDocument>);
|
|
7
7
|
record(dto: CreateInboxMessageDto): Promise<RecordInboxMessageResult>;
|
|
8
8
|
exists(messageId: string, source: string): Promise<boolean>;
|
|
9
|
-
markProcessing(id: string): Promise<
|
|
9
|
+
markProcessing(id: string): Promise<boolean>;
|
|
10
10
|
markProcessed(id: string): Promise<void>;
|
|
11
11
|
markFailed(id: string, error: string, permanent?: boolean, scheduledAt?: Date): Promise<void>;
|
|
12
12
|
deleteOlderThan(date: Date): Promise<number>;
|
|
13
|
+
findStuckProcessing(cutoffDate: Date, limit: number): Promise<InboxMessage[]>;
|
|
14
|
+
resetForRetry(id: string, reason: string): Promise<boolean>;
|
|
15
|
+
markPermanentlyFailedRecovery(id: string, reason: string): Promise<void>;
|
|
13
16
|
private toInboxMessage;
|
|
14
17
|
}
|
|
15
18
|
//# sourceMappingURL=mongoose-inbox.repository.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongoose-inbox.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/mongoose-inbox.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"mongoose-inbox.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/mongoose-inbox.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,EAEZ,wBAAwB,EACzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAMvE,qBAAa,uBAAwB,YAAW,gBAAgB;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,KAAK,CAAC,oBAAoB,CAAC;IAEzD,MAAM,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IA4FrE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS3D,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAc5C,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYxC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,UAAQ,EAAE,WAAW,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB3F,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAS5C,mBAAmB,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAc7E,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB3D,6BAA6B,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB9E,OAAO,CAAC,cAAc;CAoBvB"}
|
|
@@ -14,6 +14,13 @@ class MongooseInboxRepository {
|
|
|
14
14
|
});
|
|
15
15
|
if (existing) {
|
|
16
16
|
const message = this.toInboxMessage(existing);
|
|
17
|
+
if (existing.status === event_forge_core_1.InboxMessageStatus.PROCESSING ||
|
|
18
|
+
existing.status === event_forge_core_1.InboxMessageStatus.FAILED) {
|
|
19
|
+
return {
|
|
20
|
+
message,
|
|
21
|
+
isDuplicate: false,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
17
24
|
return {
|
|
18
25
|
message,
|
|
19
26
|
isDuplicate: true,
|
|
@@ -47,6 +54,13 @@ class MongooseInboxRepository {
|
|
|
47
54
|
throw new Error(`Race condition: Duplicate key error but message not found for messageId=${dto.messageId}, source=${dto.source}`);
|
|
48
55
|
}
|
|
49
56
|
const message = this.toInboxMessage(existing);
|
|
57
|
+
if (existing.status === event_forge_core_1.InboxMessageStatus.PROCESSING ||
|
|
58
|
+
existing.status === event_forge_core_1.InboxMessageStatus.FAILED) {
|
|
59
|
+
return {
|
|
60
|
+
message,
|
|
61
|
+
isDuplicate: false,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
50
64
|
return {
|
|
51
65
|
message,
|
|
52
66
|
isDuplicate: true,
|
|
@@ -63,11 +77,13 @@ class MongooseInboxRepository {
|
|
|
63
77
|
return count > 0;
|
|
64
78
|
}
|
|
65
79
|
async markProcessing(id) {
|
|
66
|
-
await this.model.
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
80
|
+
const result = await this.model.findOneAndUpdate({
|
|
81
|
+
_id: id,
|
|
82
|
+
status: { $in: [event_forge_core_1.InboxMessageStatus.RECEIVED, event_forge_core_1.InboxMessageStatus.FAILED] },
|
|
83
|
+
}, {
|
|
84
|
+
$set: { status: event_forge_core_1.InboxMessageStatus.PROCESSING },
|
|
85
|
+
}, { new: true });
|
|
86
|
+
return result !== null;
|
|
71
87
|
}
|
|
72
88
|
async markProcessed(id) {
|
|
73
89
|
await this.model.updateOne({ _id: id }, {
|
|
@@ -99,6 +115,39 @@ class MongooseInboxRepository {
|
|
|
99
115
|
});
|
|
100
116
|
return result.deletedCount;
|
|
101
117
|
}
|
|
118
|
+
async findStuckProcessing(cutoffDate, limit) {
|
|
119
|
+
const docs = await this.model.find({
|
|
120
|
+
status: event_forge_core_1.InboxMessageStatus.PROCESSING,
|
|
121
|
+
$or: [
|
|
122
|
+
{ updatedAt: { $lt: cutoffDate } },
|
|
123
|
+
{ updatedAt: null },
|
|
124
|
+
],
|
|
125
|
+
}).sort({ updatedAt: 1 }).limit(limit);
|
|
126
|
+
return docs.map((doc) => this.toInboxMessage(doc));
|
|
127
|
+
}
|
|
128
|
+
async resetForRetry(id, reason) {
|
|
129
|
+
const result = await this.model.findOneAndUpdate({ _id: id, status: event_forge_core_1.InboxMessageStatus.PROCESSING }, {
|
|
130
|
+
$set: {
|
|
131
|
+
status: event_forge_core_1.InboxMessageStatus.FAILED,
|
|
132
|
+
recoveryReason: reason,
|
|
133
|
+
lastRecoveredAt: new Date(),
|
|
134
|
+
errorMessage: `Recovered: ${reason}`,
|
|
135
|
+
},
|
|
136
|
+
$inc: { recoveryAttempts: 1 },
|
|
137
|
+
}, { new: true });
|
|
138
|
+
return result !== null;
|
|
139
|
+
}
|
|
140
|
+
async markPermanentlyFailedRecovery(id, reason) {
|
|
141
|
+
await this.model.findOneAndUpdate({ _id: id, status: event_forge_core_1.InboxMessageStatus.PROCESSING }, {
|
|
142
|
+
$set: {
|
|
143
|
+
status: event_forge_core_1.InboxMessageStatus.PERMANENTLY_FAILED,
|
|
144
|
+
recoveryReason: reason,
|
|
145
|
+
lastRecoveredAt: new Date(),
|
|
146
|
+
errorMessage: `Recovery exhausted: ${reason}`,
|
|
147
|
+
},
|
|
148
|
+
$inc: { recoveryAttempts: 1 },
|
|
149
|
+
});
|
|
150
|
+
}
|
|
102
151
|
toInboxMessage(doc) {
|
|
103
152
|
return {
|
|
104
153
|
id: doc._id.toString(),
|
|
@@ -113,6 +162,10 @@ class MongooseInboxRepository {
|
|
|
113
162
|
maxRetries: doc.maxRetries,
|
|
114
163
|
scheduledAt: doc.scheduledAt ?? undefined,
|
|
115
164
|
createdAt: doc.createdAt,
|
|
165
|
+
updatedAt: doc.updatedAt,
|
|
166
|
+
recoveryAttempts: doc.recoveryAttempts ?? 0,
|
|
167
|
+
lastRecoveredAt: doc.lastRecoveredAt ?? undefined,
|
|
168
|
+
recoveryReason: doc.recoveryReason ?? undefined,
|
|
116
169
|
};
|
|
117
170
|
}
|
|
118
171
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongoose-inbox.repository.js","sourceRoot":"","sources":["../../src/repositories/mongoose-inbox.repository.ts"],"names":[],"mappings":";;;AAAA,oEAMuC;AASvC,MAAa,uBAAuB;IACL;IAA7B,YAA6B,KAAkC;QAAlC,UAAK,GAAL,KAAK,CAA6B;IAAG,CAAC;IAEnE,KAAK,CAAC,MAAM,CAAC,GAA0B;QAErC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YACxC,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB,CAAC,CAAC;QAEH,IAAI,QAAQ,EAAE,CAAC;YAEb,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,QAAgC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"mongoose-inbox.repository.js","sourceRoot":"","sources":["../../src/repositories/mongoose-inbox.repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbox-message.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/inbox-message.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAsB,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAK1D,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC;IAC1F,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAKD,eAAO,MAAM,kBAAkB;;;;;;;;
|
|
1
|
+
{"version":3,"file":"inbox-message.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/inbox-message.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAsB,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAK1D,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC;IAC1F,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAKD,eAAO,MAAM,kBAAkB;;;;;;;;EAsE9B,CAAC;AA0EF,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC,oBAAoB,CAAC,CAAC"}
|
|
@@ -55,6 +55,18 @@ exports.InboxMessageSchema = new mongoose_1.Schema({
|
|
|
55
55
|
default: null,
|
|
56
56
|
index: true,
|
|
57
57
|
},
|
|
58
|
+
recoveryAttempts: {
|
|
59
|
+
type: Number,
|
|
60
|
+
default: 0,
|
|
61
|
+
},
|
|
62
|
+
lastRecoveredAt: {
|
|
63
|
+
type: Date,
|
|
64
|
+
default: null,
|
|
65
|
+
},
|
|
66
|
+
recoveryReason: {
|
|
67
|
+
type: String,
|
|
68
|
+
default: null,
|
|
69
|
+
},
|
|
58
70
|
}, {
|
|
59
71
|
timestamps: { createdAt: 'createdAt', updatedAt: 'updatedAt' },
|
|
60
72
|
collection: 'inbox_messages',
|
|
@@ -86,4 +98,11 @@ exports.InboxMessageSchema.index({
|
|
|
86
98
|
}, {
|
|
87
99
|
name: 'idx_inbox_retry',
|
|
88
100
|
});
|
|
101
|
+
exports.InboxMessageSchema.index({
|
|
102
|
+
status: 1,
|
|
103
|
+
updatedAt: 1,
|
|
104
|
+
}, {
|
|
105
|
+
name: 'idx_inbox_recovery_sweep',
|
|
106
|
+
partialFilterExpression: { status: 'processing' },
|
|
107
|
+
});
|
|
89
108
|
//# sourceMappingURL=inbox-message.schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbox-message.schema.js","sourceRoot":"","sources":["../../src/schemas/inbox-message.schema.ts"],"names":[],"mappings":";;;AAAA,oEAAiF;AACjF,uCAA0D;AAc7C,QAAA,kBAAkB,GAAG,IAAI,iBAAM,CAC1C;IACE,SAAS,EAAE;QACT,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACf;IACD,MAAM,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACf;IACD,SAAS,EAAE;QACT,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,IAAI;KACZ;IACD,OAAO,EAAE;QACP,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,KAAK;QACxB,QAAQ,EAAE,IAAI;KACf;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,KAAK;QACxB,OAAO,EAAE,IAAI;KACd;IACD,MAAM,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,qCAAkB,CAAC;QACvC,OAAO,EAAE,qCAAkB,CAAC,QAAQ;QACpC,KAAK,EAAE,IAAI;KACZ;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,IAAI;KACd;IACD,WAAW,EAAE;QACX,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,IAAI;KACZ;IACD,UAAU,EAAE;QACV,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,IAAI;KACf;IACD,UAAU,EAAE;QACV,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,IAAI;KACf;IACD,WAAW,EAAE;QACX,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,IAAI;KACZ;CACF,EACD;IACE,UAAU,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE;IAC9D,UAAU,EAAE,gBAAgB;CAC7B,CACF,CAAC;AAKF,0BAAkB,CAAC,KAAK,CACtB;IACE,SAAS,EAAE,CAAC;IACZ,MAAM,EAAE,CAAC;CACV,EACD;IACE,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,iCAAiC;CACxC,CACF,CAAC;AAKF,0BAAkB,CAAC,KAAK,CACtB;IACE,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,CAAC;CACb,EACD;IACE,IAAI,EAAE,sBAAsB;CAC7B,CACF,CAAC;AAKF,0BAAkB,CAAC,KAAK,CACtB;IACE,MAAM,EAAE,CAAC;IACT,SAAS,EAAE,CAAC;CACb,EACD;IACE,IAAI,EAAE,mBAAmB;CAC1B,CACF,CAAC;AAKF,0BAAkB,CAAC,KAAK,CACtB;IACE,MAAM,EAAE,CAAC;IACT,UAAU,EAAE,CAAC;IACb,WAAW,EAAE,CAAC;IACd,SAAS,EAAE,CAAC;CACb,EACD;IACE,IAAI,EAAE,iBAAiB;CACxB,CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"inbox-message.schema.js","sourceRoot":"","sources":["../../src/schemas/inbox-message.schema.ts"],"names":[],"mappings":";;;AAAA,oEAAiF;AACjF,uCAA0D;AAc7C,QAAA,kBAAkB,GAAG,IAAI,iBAAM,CAC1C;IACE,SAAS,EAAE;QACT,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACf;IACD,MAAM,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACf;IACD,SAAS,EAAE;QACT,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,IAAI;KACZ;IACD,OAAO,EAAE;QACP,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,KAAK;QACxB,QAAQ,EAAE,IAAI;KACf;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,KAAK;QACxB,OAAO,EAAE,IAAI;KACd;IACD,MAAM,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,qCAAkB,CAAC;QACvC,OAAO,EAAE,qCAAkB,CAAC,QAAQ;QACpC,KAAK,EAAE,IAAI;KACZ;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,IAAI;KACd;IACD,WAAW,EAAE;QACX,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,IAAI;KACZ;IACD,UAAU,EAAE;QACV,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,IAAI;KACf;IACD,UAAU,EAAE;QACV,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,IAAI;KACf;IACD,WAAW,EAAE;QACX,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,IAAI;KACZ;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,CAAC;KACX;IACD,eAAe,EAAE;QACf,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,IAAI;KACd;IACD,cAAc,EAAE;QACd,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,IAAI;KACd;CACF,EACD;IACE,UAAU,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE;IAC9D,UAAU,EAAE,gBAAgB;CAC7B,CACF,CAAC;AAKF,0BAAkB,CAAC,KAAK,CACtB;IACE,SAAS,EAAE,CAAC;IACZ,MAAM,EAAE,CAAC;CACV,EACD;IACE,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,iCAAiC;CACxC,CACF,CAAC;AAKF,0BAAkB,CAAC,KAAK,CACtB;IACE,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,CAAC;CACb,EACD;IACE,IAAI,EAAE,sBAAsB;CAC7B,CACF,CAAC;AAKF,0BAAkB,CAAC,KAAK,CACtB;IACE,MAAM,EAAE,CAAC;IACT,SAAS,EAAE,CAAC;CACb,EACD;IACE,IAAI,EAAE,mBAAmB;CAC1B,CACF,CAAC;AAKF,0BAAkB,CAAC,KAAK,CACtB;IACE,MAAM,EAAE,CAAC;IACT,UAAU,EAAE,CAAC;IACb,WAAW,EAAE,CAAC;IACd,SAAS,EAAE,CAAC;CACb,EACD;IACE,IAAI,EAAE,iBAAiB;CACxB,CACF,CAAC;AAKF,0BAAkB,CAAC,KAAK,CACtB;IACE,MAAM,EAAE,CAAC;IACT,SAAS,EAAE,CAAC;CACb,EACD;IACE,IAAI,EAAE,0BAA0B;IAChC,uBAAuB,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE;CAClD,CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prodforcode/event-forge-mongoose",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "Mongoose adapter for Universal Inbox-Outbox Pattern (MongoDB)",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"license": "MIT",
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"mongoose": "^8.0.0",
|
|
20
|
-
"@prodforcode/event-forge-core": "1.
|
|
20
|
+
"@prodforcode/event-forge-core": "1.5.0"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
23
|
"@types/jest": "^29.5.11",
|