@murphai/gateway-core 0.1.1
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/LICENSE +674 -0
- package/README.md +7 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/contracts.d.ts +445 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +231 -0
- package/dist/contracts.js.map +1 -0
- package/dist/errors.d.ts +13 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +19 -0
- package/dist/errors.js.map +1 -0
- package/dist/event-log.d.ts +8 -0
- package/dist/event-log.d.ts.map +1 -0
- package/dist/event-log.js +35 -0
- package/dist/event-log.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/opaque-ids.d.ts +33 -0
- package/dist/opaque-ids.d.ts.map +1 -0
- package/dist/opaque-ids.js +168 -0
- package/dist/opaque-ids.js.map +1 -0
- package/dist/routes.d.ts +59 -0
- package/dist/routes.d.ts.map +1 -0
- package/dist/routes.js +319 -0
- package/dist/routes.js.map +1 -0
- package/dist/shared.d.ts +4 -0
- package/dist/shared.d.ts.map +1 -0
- package/dist/shared.js +15 -0
- package/dist/shared.js.map +1 -0
- package/dist/snapshot.d.ts +23 -0
- package/dist/snapshot.d.ts.map +1 -0
- package/dist/snapshot.js +388 -0
- package/dist/snapshot.js.map +1 -0
- package/package.json +36 -0
package/dist/routes.js
ADDED
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
import { normalizeNullableString } from './shared.js';
|
|
2
|
+
import { gatewayConversationDirectnessValues, gatewayConversationRouteSchema, } from './contracts.js';
|
|
3
|
+
export function normalizeGatewayConversationRoute(input) {
|
|
4
|
+
return gatewayConversationRouteSchema.parse({
|
|
5
|
+
channel: normalizeNullableString(input?.channel),
|
|
6
|
+
identityId: normalizeNullableString(input?.identityId),
|
|
7
|
+
participantId: normalizeNullableString(input?.participantId),
|
|
8
|
+
threadId: normalizeNullableString(input?.threadId),
|
|
9
|
+
directness: normalizeGatewayConversationDirectness(input?.directness),
|
|
10
|
+
reply: {
|
|
11
|
+
kind: input?.reply?.kind ?? null,
|
|
12
|
+
target: normalizeNullableString(input?.reply?.target),
|
|
13
|
+
},
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
export function gatewayConversationRouteFromBinding(binding) {
|
|
17
|
+
const conversation = gatewayConversationRefFromBinding(binding);
|
|
18
|
+
return gatewayConversationRouteFromConversationRef(conversation, {
|
|
19
|
+
kind: binding.delivery?.kind ?? null,
|
|
20
|
+
target: binding.delivery?.target ?? null,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
export function gatewayConversationRouteFromOutboxIntent(intent) {
|
|
24
|
+
const conversation = gatewayConversationRefFromBinding({
|
|
25
|
+
actorId: intent.actorId,
|
|
26
|
+
channel: intent.channel,
|
|
27
|
+
identityId: intent.identityId,
|
|
28
|
+
threadId: intent.threadId,
|
|
29
|
+
threadIsDirect: intent.threadIsDirect,
|
|
30
|
+
});
|
|
31
|
+
return gatewayConversationRouteFromConversationRef(conversation, {
|
|
32
|
+
kind: intent.bindingDelivery?.kind ?? null,
|
|
33
|
+
target: intent.bindingDelivery?.target ?? null,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
export function gatewayConversationRouteFromCapture(capture) {
|
|
37
|
+
const conversation = gatewayConversationRefFromCapture({
|
|
38
|
+
accountId: capture.accountId ?? null,
|
|
39
|
+
actorId: capture.actor.id ?? null,
|
|
40
|
+
source: capture.source,
|
|
41
|
+
threadId: capture.thread.id,
|
|
42
|
+
threadIsDirect: capture.thread.isDirect ?? null,
|
|
43
|
+
});
|
|
44
|
+
return gatewayConversationRouteFromConversationRef(conversation);
|
|
45
|
+
}
|
|
46
|
+
export function mergeGatewayConversationRoutes(base, patch) {
|
|
47
|
+
const merged = mergeGatewayConversationRefs(gatewayConversationRouteToConversationRef(base), gatewayConversationRouteToConversationRef(patch));
|
|
48
|
+
const reply = mergeGatewayReplyRoute(base?.reply, patch?.reply, merged);
|
|
49
|
+
return gatewayConversationRouteFromConversationRef(merged, {
|
|
50
|
+
kind: reply.kind,
|
|
51
|
+
target: reply.target,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
export function resolveGatewayConversationRouteKey(route) {
|
|
55
|
+
const normalized = normalizeGatewayConversationRoute(route);
|
|
56
|
+
return resolveGatewayConversationKey({
|
|
57
|
+
actorId: normalized.participantId,
|
|
58
|
+
channel: normalized.channel,
|
|
59
|
+
identityId: normalized.identityId,
|
|
60
|
+
threadId: normalized.threadId,
|
|
61
|
+
threadIsDirect: threadIsDirectFromGatewayDirectness(normalized.directness),
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
export function gatewayConversationRouteCanSend(route) {
|
|
65
|
+
const normalized = normalizeGatewayConversationRoute(route);
|
|
66
|
+
const inferredDelivery = inferGatewayBindingDelivery({
|
|
67
|
+
channel: normalized.channel,
|
|
68
|
+
conversation: gatewayConversationRouteToConversationRef(normalized),
|
|
69
|
+
deliveryKind: normalized.reply.kind,
|
|
70
|
+
deliveryTarget: normalized.reply.target,
|
|
71
|
+
});
|
|
72
|
+
if (!normalized.channel || !inferredDelivery) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
if (normalized.channel === 'email' && !normalized.identityId) {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
if (normalized.channel === 'linq' && inferredDelivery.kind !== 'thread') {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
export function gatewayChannelSupportsReplyToMessage(channel) {
|
|
84
|
+
return normalizeNullableString(channel) === 'linq';
|
|
85
|
+
}
|
|
86
|
+
export function gatewayBindingDeliveryFromRoute(route) {
|
|
87
|
+
const normalized = normalizeGatewayConversationRoute(route);
|
|
88
|
+
return inferGatewayBindingDelivery({
|
|
89
|
+
channel: normalized.channel,
|
|
90
|
+
conversation: gatewayConversationRouteToConversationRef(normalized),
|
|
91
|
+
deliveryKind: normalized.reply.kind,
|
|
92
|
+
deliveryTarget: normalized.reply.target,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
function inferGatewayBindingDelivery(input) {
|
|
96
|
+
switch (input.channel) {
|
|
97
|
+
case 'telegram':
|
|
98
|
+
case 'email':
|
|
99
|
+
return inferThreadFirstGatewayReply({
|
|
100
|
+
conversation: input.conversation ?? {},
|
|
101
|
+
deliveryKind: input.deliveryKind ?? null,
|
|
102
|
+
deliveryTarget: input.deliveryTarget ?? null,
|
|
103
|
+
includeParticipant: true,
|
|
104
|
+
});
|
|
105
|
+
case 'linq':
|
|
106
|
+
return inferThreadFirstGatewayReply({
|
|
107
|
+
conversation: input.conversation ?? {},
|
|
108
|
+
deliveryKind: input.deliveryKind ?? null,
|
|
109
|
+
deliveryTarget: input.deliveryTarget ?? null,
|
|
110
|
+
includeParticipant: false,
|
|
111
|
+
});
|
|
112
|
+
default:
|
|
113
|
+
return inferFallbackGatewayReply({
|
|
114
|
+
conversation: input.conversation ?? {},
|
|
115
|
+
deliveryKind: input.deliveryKind ?? null,
|
|
116
|
+
deliveryTarget: input.deliveryTarget ?? null,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
function gatewayConversationRouteFromConversationRef(conversation, reply) {
|
|
121
|
+
return normalizeGatewayConversationRoute({
|
|
122
|
+
channel: conversation.channel,
|
|
123
|
+
identityId: conversation.identityId,
|
|
124
|
+
participantId: conversation.participantId,
|
|
125
|
+
threadId: conversation.threadId,
|
|
126
|
+
directness: normalizeGatewayConversationDirectness(conversation.directness),
|
|
127
|
+
reply: reply
|
|
128
|
+
? {
|
|
129
|
+
kind: reply.kind ?? null,
|
|
130
|
+
target: reply.target ?? null,
|
|
131
|
+
}
|
|
132
|
+
: null,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
function gatewayConversationRouteToConversationRef(input) {
|
|
136
|
+
return {
|
|
137
|
+
channel: normalizeNullableString(input?.channel),
|
|
138
|
+
identityId: normalizeNullableString(input?.identityId),
|
|
139
|
+
participantId: normalizeNullableString(input?.participantId),
|
|
140
|
+
threadId: normalizeNullableString(input?.threadId),
|
|
141
|
+
directness: normalizeGatewayConversationDirectness(input?.directness),
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
function gatewayConversationRefFromBinding(binding) {
|
|
145
|
+
return normalizeGatewayConversationRef({
|
|
146
|
+
channel: binding.channel,
|
|
147
|
+
identityId: binding.identityId,
|
|
148
|
+
participantId: binding.actorId,
|
|
149
|
+
threadId: binding.threadId,
|
|
150
|
+
directness: gatewayConversationDirectnessFromThreadIsDirect(binding.threadIsDirect),
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
function gatewayConversationRefFromCapture(input) {
|
|
154
|
+
return normalizeGatewayConversationRef({
|
|
155
|
+
channel: input.source,
|
|
156
|
+
identityId: input.source === 'email' || input.source === 'linq' ? input.accountId : null,
|
|
157
|
+
participantId: input.actorId,
|
|
158
|
+
threadId: input.threadId,
|
|
159
|
+
directness: gatewayConversationDirectnessFromThreadIsDirect(input.threadIsDirect),
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
function normalizeGatewayConversationRef(input) {
|
|
163
|
+
if (!input) {
|
|
164
|
+
return {};
|
|
165
|
+
}
|
|
166
|
+
return {
|
|
167
|
+
channel: normalizeNullableString(input.channel),
|
|
168
|
+
identityId: normalizeNullableString(input.identityId),
|
|
169
|
+
participantId: normalizeNullableString(input.participantId),
|
|
170
|
+
threadId: normalizeNullableString(input.threadId),
|
|
171
|
+
directness: normalizeGatewayConversationDirectness(input.directness),
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
function mergeGatewayConversationRefs(base, patch) {
|
|
175
|
+
const normalizedBase = normalizeGatewayConversationRef(base);
|
|
176
|
+
const normalizedPatch = normalizeGatewayConversationRef(patch);
|
|
177
|
+
return {
|
|
178
|
+
channel: normalizedPatch.channel ?? normalizedBase.channel,
|
|
179
|
+
identityId: normalizedPatch.identityId ?? normalizedBase.identityId,
|
|
180
|
+
participantId: normalizedPatch.participantId ?? normalizedBase.participantId,
|
|
181
|
+
threadId: normalizedPatch.threadId ?? normalizedBase.threadId,
|
|
182
|
+
directness: normalizedPatch.directness ?? normalizedBase.directness,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
function mergeGatewayReplyRoute(base, patch, mergedConversation) {
|
|
186
|
+
const explicitKind = patch && 'kind' in patch ? patch.kind ?? null : base?.kind ?? null;
|
|
187
|
+
const explicitTarget = patch && 'target' in patch
|
|
188
|
+
? normalizeNullableString(patch.target)
|
|
189
|
+
: normalizeNullableString(base?.target);
|
|
190
|
+
if (patch && 'kind' in patch) {
|
|
191
|
+
return {
|
|
192
|
+
kind: explicitKind,
|
|
193
|
+
target: explicitTarget,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
if (explicitKind === 'thread' && (!patch || !('target' in patch))) {
|
|
197
|
+
return {
|
|
198
|
+
kind: 'thread',
|
|
199
|
+
target: mergedConversation.threadId ?? null,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
return {
|
|
203
|
+
kind: explicitKind,
|
|
204
|
+
target: explicitTarget,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
function resolveGatewayConversationKey(input) {
|
|
208
|
+
const channel = normalizeNullableString(input.channel);
|
|
209
|
+
const identityId = normalizeNullableString(input.identityId);
|
|
210
|
+
const actorId = normalizeNullableString(input.actorId);
|
|
211
|
+
const threadId = normalizeNullableString(input.threadId);
|
|
212
|
+
if (!channel) {
|
|
213
|
+
return null;
|
|
214
|
+
}
|
|
215
|
+
const scope = input.threadIsDirect === true
|
|
216
|
+
? actorId
|
|
217
|
+
? ['actor', actorId]
|
|
218
|
+
: threadId
|
|
219
|
+
? ['thread', threadId]
|
|
220
|
+
: null
|
|
221
|
+
: input.threadIsDirect === false
|
|
222
|
+
? threadId
|
|
223
|
+
? ['thread', threadId]
|
|
224
|
+
: null
|
|
225
|
+
: actorId
|
|
226
|
+
? ['actor', actorId]
|
|
227
|
+
: threadId
|
|
228
|
+
? ['thread', threadId]
|
|
229
|
+
: null;
|
|
230
|
+
if (!scope) {
|
|
231
|
+
return null;
|
|
232
|
+
}
|
|
233
|
+
const entries = [
|
|
234
|
+
['channel', channel],
|
|
235
|
+
['identity', identityId],
|
|
236
|
+
scope,
|
|
237
|
+
].filter((entry) => entry[1] !== null);
|
|
238
|
+
return entries
|
|
239
|
+
.map(([key, value]) => `${key}:${encodeURIComponent(value)}`)
|
|
240
|
+
.join('|');
|
|
241
|
+
}
|
|
242
|
+
function normalizeGatewayConversationDirectness(value) {
|
|
243
|
+
const normalized = normalizeNullableString(value);
|
|
244
|
+
return gatewayConversationDirectnessValues.includes(normalized)
|
|
245
|
+
? normalized
|
|
246
|
+
: null;
|
|
247
|
+
}
|
|
248
|
+
function threadIsDirectFromGatewayDirectness(directness) {
|
|
249
|
+
switch (normalizeGatewayConversationDirectness(directness)) {
|
|
250
|
+
case 'direct':
|
|
251
|
+
return true;
|
|
252
|
+
case 'group':
|
|
253
|
+
return false;
|
|
254
|
+
default:
|
|
255
|
+
return null;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
function gatewayConversationDirectnessFromThreadIsDirect(threadIsDirect) {
|
|
259
|
+
if (threadIsDirect === true) {
|
|
260
|
+
return 'direct';
|
|
261
|
+
}
|
|
262
|
+
if (threadIsDirect === false) {
|
|
263
|
+
return 'group';
|
|
264
|
+
}
|
|
265
|
+
return null;
|
|
266
|
+
}
|
|
267
|
+
function inferThreadFirstGatewayReply(input) {
|
|
268
|
+
const explicit = resolveExplicitGatewayReply(input);
|
|
269
|
+
if (explicit) {
|
|
270
|
+
return explicit;
|
|
271
|
+
}
|
|
272
|
+
if (input.conversation.threadId) {
|
|
273
|
+
return {
|
|
274
|
+
kind: 'thread',
|
|
275
|
+
target: input.conversation.threadId,
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
if (input.includeParticipant && input.conversation.participantId) {
|
|
279
|
+
return {
|
|
280
|
+
kind: 'participant',
|
|
281
|
+
target: input.conversation.participantId,
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
return null;
|
|
285
|
+
}
|
|
286
|
+
function inferFallbackGatewayReply(input) {
|
|
287
|
+
const explicit = resolveExplicitGatewayReply(input);
|
|
288
|
+
if (explicit) {
|
|
289
|
+
return explicit;
|
|
290
|
+
}
|
|
291
|
+
if (input.conversation.directness === 'group' && input.conversation.threadId) {
|
|
292
|
+
return {
|
|
293
|
+
kind: 'thread',
|
|
294
|
+
target: input.conversation.threadId,
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
if (input.conversation.participantId) {
|
|
298
|
+
return {
|
|
299
|
+
kind: 'participant',
|
|
300
|
+
target: input.conversation.participantId,
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
if (input.conversation.threadId) {
|
|
304
|
+
return {
|
|
305
|
+
kind: 'thread',
|
|
306
|
+
target: input.conversation.threadId,
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
return null;
|
|
310
|
+
}
|
|
311
|
+
function resolveExplicitGatewayReply(input) {
|
|
312
|
+
const kind = input.deliveryKind ?? null;
|
|
313
|
+
const target = normalizeNullableString(input.deliveryTarget);
|
|
314
|
+
if (!kind || !target) {
|
|
315
|
+
return null;
|
|
316
|
+
}
|
|
317
|
+
return { kind, target };
|
|
318
|
+
}
|
|
319
|
+
//# sourceMappingURL=routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
|
package/dist/shared.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,OAAO,CAAA;AAEzB,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAOvF;AAED,eAAO,MAAM,kBAAkB,aAK3B,CAAA"}
|
package/dist/shared.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { z } from 'incur';
|
|
2
|
+
export function normalizeNullableString(value) {
|
|
3
|
+
if (typeof value !== 'string') {
|
|
4
|
+
return null;
|
|
5
|
+
}
|
|
6
|
+
const normalized = value.trim();
|
|
7
|
+
return normalized.length > 0 ? normalized : null;
|
|
8
|
+
}
|
|
9
|
+
export const isoTimestampSchema = z
|
|
10
|
+
.string()
|
|
11
|
+
.min(1)
|
|
12
|
+
.refine((value) => !Number.isNaN(Date.parse(value)), {
|
|
13
|
+
message: 'Expected an ISO timestamp.',
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,OAAO,CAAA;AAEzB,MAAM,UAAU,uBAAuB,CAAC,KAAgC;IACtE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC/B,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAA;AAClD,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;IACnD,OAAO,EAAE,4BAA4B;CACtC,CAAC,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type GatewayAttachment, type GatewayConversation, type GatewayEvent, type GatewayFetchAttachmentsInput, type GatewayGetConversationInput, type GatewayListConversationsInput, type GatewayListConversationsResult, type GatewayMessage, type GatewayPermissionRequest, type GatewayPollEventsInput, type GatewayPollEventsResult, type GatewayProjectionSnapshot, type GatewayReadMessagesInput, type GatewayReadMessagesResult } from './contracts.js';
|
|
2
|
+
export interface GatewayEventEmission extends Omit<GatewayEvent, 'cursor' | 'schema'> {
|
|
3
|
+
}
|
|
4
|
+
export interface GatewayEventLogState {
|
|
5
|
+
events: GatewayEvent[];
|
|
6
|
+
nextCursor: number;
|
|
7
|
+
snapshot: GatewayProjectionSnapshot | null;
|
|
8
|
+
}
|
|
9
|
+
export declare const DEFAULT_GATEWAY_EVENT_RETENTION = 512;
|
|
10
|
+
export declare function listGatewayConversationsFromSnapshot(snapshot: GatewayProjectionSnapshot, input?: GatewayListConversationsInput): GatewayListConversationsResult;
|
|
11
|
+
export declare function getGatewayConversationFromSnapshot(snapshot: GatewayProjectionSnapshot, input: GatewayGetConversationInput): GatewayConversation | null;
|
|
12
|
+
export declare function readGatewayMessagesFromSnapshot(snapshot: GatewayProjectionSnapshot, input: GatewayReadMessagesInput): GatewayReadMessagesResult;
|
|
13
|
+
export declare function fetchGatewayAttachmentsFromSnapshot(snapshot: GatewayProjectionSnapshot, input: GatewayFetchAttachmentsInput): GatewayAttachment[];
|
|
14
|
+
export declare function listGatewayOpenPermissionsFromSnapshot(snapshot: GatewayProjectionSnapshot, input?: {
|
|
15
|
+
sessionKey?: string | null;
|
|
16
|
+
}): GatewayPermissionRequest[];
|
|
17
|
+
export declare function diffGatewayProjectionSnapshots(previous: GatewayProjectionSnapshot | null, next: GatewayProjectionSnapshot): GatewayEventEmission[];
|
|
18
|
+
export declare function applyGatewayProjectionSnapshotToEventLog(state: GatewayEventLogState, snapshot: GatewayProjectionSnapshot, retention?: number): GatewayEventLogState;
|
|
19
|
+
export declare function pollGatewayEventLogState(state: GatewayEventLogState, input?: GatewayPollEventsInput): GatewayPollEventsResult;
|
|
20
|
+
export declare function compareGatewayConversationsDescending(left: GatewayConversation, right: GatewayConversation): number;
|
|
21
|
+
export declare function compareGatewayMessagesAscending(left: GatewayMessage, right: GatewayMessage): number;
|
|
22
|
+
export declare function deriveLastMessagePreview(message: GatewayMessage | null): string | null;
|
|
23
|
+
//# sourceMappingURL=snapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAaL,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,EAChC,KAAK,6BAA6B,EAClC,KAAK,8BAA8B,EACnC,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC/B,MAAM,gBAAgB,CAAA;AASvB,MAAM,WAAW,oBACf,SAAQ,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAAG;AAEpD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,YAAY,EAAE,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,yBAAyB,GAAG,IAAI,CAAA;CAC3C;AAED,eAAO,MAAM,+BAA+B,MAAM,CAAA;AAElD,wBAAgB,oCAAoC,CAClD,QAAQ,EAAE,yBAAyB,EACnC,KAAK,CAAC,EAAE,6BAA6B,GACpC,8BAA8B,CAuBhC;AAED,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,yBAAyB,EACnC,KAAK,EAAE,2BAA2B,GACjC,mBAAmB,GAAG,IAAI,CAgB5B;AAED,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,yBAAyB,EACnC,KAAK,EAAE,wBAAwB,GAC9B,yBAAyB,CAwB3B;AAED,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,yBAAyB,EACnC,KAAK,EAAE,4BAA4B,GAClC,iBAAiB,EAAE,CAiDrB;AAED,wBAAgB,sCAAsC,CACpD,QAAQ,EAAE,yBAAyB,EACnC,KAAK,CAAC,EAAE;IACN,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B,GACA,wBAAwB,EAAE,CAmB5B;AAED,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,yBAAyB,GAAG,IAAI,EAC1C,IAAI,EAAE,yBAAyB,GAC9B,oBAAoB,EAAE,CA8ExB;AAED,wBAAgB,wCAAwC,CACtD,KAAK,EAAE,oBAAoB,EAC3B,QAAQ,EAAE,yBAAyB,EACnC,SAAS,GAAE,MAAwC,GAClD,oBAAoB,CAyCtB;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,oBAAoB,EAC3B,KAAK,CAAC,EAAE,sBAAsB,GAC7B,uBAAuB,CAmBzB;AAED,wBAAgB,qCAAqC,CACnD,IAAI,EAAE,mBAAmB,EACzB,KAAK,EAAE,mBAAmB,GACzB,MAAM,CAKR;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,cAAc,GACpB,MAAM,CAKR;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAQtF"}
|