@insightsentry/mcp 1.4.39 → 1.4.41

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-output.js","sourceRoot":"","sources":["../src/stream-output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { type StreamEndpoint, type StreamRequest } from "./websocket-contract.js";
2
+ import { type RunWebSocketStreamOptions, type StreamRunResult } from "./websocket-stream.js";
3
+ export declare const MAX_MCP_COLLECTION_RESULT_BYTES: number;
4
+ export type CollectionStopReason = Exclude<StreamRunResult["reason"], "aborted" | "broken_pipe"> | "cancelled" | "activation_timeout" | "output_limit_reached";
5
+ export interface WebSocketCollectionResult {
6
+ ok: boolean;
7
+ endpoint: StreamEndpoint;
8
+ activated: boolean;
9
+ stop_reason: CollectionStopReason;
10
+ data_message_count: number;
11
+ warnings: string[];
12
+ messages: Record<string, unknown>[];
13
+ error?: Record<string, unknown>;
14
+ }
15
+ export interface CollectWebSocketOptions {
16
+ request: StreamRequest<unknown>;
17
+ signal?: AbortSignal;
18
+ durationMs: number;
19
+ maxMessages: number;
20
+ maxReconnectAttempts: number;
21
+ maxBytes?: number;
22
+ runStream?: (options: RunWebSocketStreamOptions) => Promise<StreamRunResult>;
23
+ }
24
+ export declare function collectWebSocketStream(options: CollectWebSocketOptions): Promise<WebSocketCollectionResult>;
25
+ //# sourceMappingURL=websocket-collector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-collector.d.ts","sourceRoot":"","sources":["../src/websocket-collector.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,KAAK,yBAAyB,EAE9B,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAE/B,eAAO,MAAM,+BAA+B,QAAa,CAAC;AAO1D,MAAM,MAAM,oBAAoB,GAC5B,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC,GAC7D,WAAW,GACX,oBAAoB,GACpB,sBAAsB,CAAC;AAE3B,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,cAAc,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,oBAAoB,CAAC;IAClC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,yBAAyB,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;CAC9E;AAqED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,yBAAyB,CAAC,CA8EpC"}
@@ -0,0 +1,224 @@
1
+ import { classifyServerError, } from "./websocket-contract.js";
2
+ import { isStreamDataMessage, runWebSocketStream, } from "./websocket-stream.js";
3
+ export const MAX_MCP_COLLECTION_RESULT_BYTES = 256 * 1024;
4
+ const RESULT_METADATA_RESERVE_BYTES = 16 * 1024;
5
+ const DEFAULT_MAX_COLLECTION_BYTES = MAX_MCP_COLLECTION_RESULT_BYTES - RESULT_METADATA_RESERVE_BYTES;
6
+ const MAX_RETURNED_ERROR_STRING_BYTES = 4 * 1024;
7
+ const MAX_DETAILED_IGNORED_ARGUMENT_WARNINGS = 20;
8
+ class CollectionOutput {
9
+ endpoint;
10
+ maxBytes;
11
+ onLimit;
12
+ secrets;
13
+ failure = new Promise(() => { });
14
+ messages = [];
15
+ warnings = [];
16
+ terminalError;
17
+ activated = false;
18
+ limitReached = false;
19
+ bytes = 0;
20
+ constructor(endpoint, maxBytes, onLimit, secrets) {
21
+ this.endpoint = endpoint;
22
+ this.maxBytes = maxBytes;
23
+ this.onLimit = onLimit;
24
+ this.secrets = secrets;
25
+ }
26
+ enqueue(payload) {
27
+ const message = JSON.parse(payload);
28
+ if (!isObject(message))
29
+ return;
30
+ if (message.event === "subscription_status" && message.status === "active") {
31
+ this.activated = true;
32
+ }
33
+ if (typeof message.error === "string") {
34
+ const serverError = message;
35
+ const disposition = classifyServerError(serverError, this.endpoint);
36
+ if (disposition.kind === "terminal") {
37
+ this.terminalError = sanitizeServerError(serverError, this.secrets);
38
+ }
39
+ else {
40
+ this.addWarning(redactString(formatServerWarning(serverError), this.secrets));
41
+ }
42
+ return;
43
+ }
44
+ if (!isStreamDataMessage(message, this.endpoint))
45
+ return;
46
+ this.activated = true;
47
+ const sanitized = sanitizeMessage(message, this.secrets);
48
+ const bytes = Buffer.byteLength(JSON.stringify(sanitized));
49
+ if (!this.reserve(bytes))
50
+ return;
51
+ this.messages.push(sanitized);
52
+ }
53
+ async close() { }
54
+ addWarning(warning) {
55
+ if (!this.reserve(Buffer.byteLength(JSON.stringify(warning)) + 1))
56
+ return false;
57
+ this.warnings.push(warning);
58
+ return true;
59
+ }
60
+ reserve(bytes) {
61
+ if (this.bytes + bytes <= this.maxBytes) {
62
+ this.bytes += bytes;
63
+ return true;
64
+ }
65
+ if (!this.limitReached) {
66
+ this.limitReached = true;
67
+ this.warnings.push(`Collection stopped at the ${this.maxBytes}-byte output size limit before adding another message.`);
68
+ this.onLimit();
69
+ }
70
+ return false;
71
+ }
72
+ }
73
+ export async function collectWebSocketStream(options) {
74
+ const collectionController = new AbortController();
75
+ let callerCancelled = options.signal?.aborted === true;
76
+ const cancelForCaller = () => {
77
+ callerCancelled = true;
78
+ collectionController.abort();
79
+ };
80
+ if (options.signal?.aborted)
81
+ collectionController.abort();
82
+ else
83
+ options.signal?.addEventListener("abort", cancelForCaller, { once: true });
84
+ const secrets = requestSecrets(options.request);
85
+ let lastDiagnostic;
86
+ const output = new CollectionOutput(options.request.endpoint, options.maxBytes ?? DEFAULT_MAX_COLLECTION_BYTES, () => collectionController.abort(), secrets);
87
+ addIgnoredArgumentWarnings(output, options.request.ignoredArgs);
88
+ try {
89
+ const result = await (options.runStream ?? runWebSocketStream)({
90
+ request: options.request,
91
+ output,
92
+ diagnostics: (message) => {
93
+ lastDiagnostic = sanitizeErrorString(message, secrets);
94
+ },
95
+ signal: collectionController.signal,
96
+ durationMs: options.durationMs,
97
+ maxMessages: options.maxMessages,
98
+ maxReconnectAttempts: options.maxReconnectAttempts,
99
+ });
100
+ let stopReason = output.limitReached
101
+ ? "output_limit_reached"
102
+ : result.reason === "aborted" || result.reason === "broken_pipe"
103
+ ? "cancelled"
104
+ : result.reason;
105
+ let ok = result.exitCode === 0;
106
+ if (output.messages.length === 0 && result.exitCode === 0) {
107
+ if (callerCancelled) {
108
+ output.addWarning("Collection was cancelled before any data messages arrived.");
109
+ }
110
+ else if (stopReason === "duration_reached" && output.activated) {
111
+ output.addWarning("The subscription became active, but the collection duration elapsed before any data messages arrived.");
112
+ }
113
+ }
114
+ let terminalError = output.terminalError ??
115
+ (result.exitCode === 1
116
+ ? {
117
+ error: result.reason,
118
+ message: lastDiagnostic ?? `WebSocket collection failed: ${result.reason}.`,
119
+ }
120
+ : undefined);
121
+ if (stopReason === "duration_reached" && !output.activated) {
122
+ ok = false;
123
+ stopReason = "activation_timeout";
124
+ terminalError = {
125
+ error: "activation_timeout",
126
+ message: "Collection duration elapsed before the WebSocket subscription became active.",
127
+ };
128
+ }
129
+ if (output.limitReached)
130
+ stopReason = "output_limit_reached";
131
+ return {
132
+ ok,
133
+ endpoint: options.request.endpoint,
134
+ activated: output.activated,
135
+ stop_reason: stopReason,
136
+ data_message_count: output.messages.length,
137
+ warnings: output.warnings,
138
+ messages: output.messages,
139
+ ...(terminalError ? { error: terminalError } : {}),
140
+ };
141
+ }
142
+ finally {
143
+ options.signal?.removeEventListener("abort", cancelForCaller);
144
+ }
145
+ }
146
+ function addIgnoredArgumentWarnings(output, ignoredArgs) {
147
+ const detailedCount = Math.min(ignoredArgs.length, MAX_DETAILED_IGNORED_ARGUMENT_WARNINGS);
148
+ for (let index = 0; index < detailedCount; index++) {
149
+ if (!output.addWarning(`Ignored inapplicable subscription argument: ${ignoredArgs[index]}.`)) {
150
+ return;
151
+ }
152
+ }
153
+ const remaining = ignoredArgs.length - detailedCount;
154
+ if (remaining > 0) {
155
+ output.addWarning(`${remaining} additional inapplicable subscription arguments were ignored.`);
156
+ }
157
+ }
158
+ function sanitizeServerError(error, secrets) {
159
+ const sanitized = {
160
+ error: sanitizeErrorString(error.error, secrets),
161
+ };
162
+ for (const key of ["message", "action", "reference_id"]) {
163
+ if (typeof error[key] === "string") {
164
+ sanitized[key] = sanitizeErrorString(error[key], secrets);
165
+ }
166
+ }
167
+ if (typeof error.retryable === "boolean")
168
+ sanitized.retryable = error.retryable;
169
+ for (const key of ["delay_seconds", "retry_after_seconds"]) {
170
+ if (typeof error[key] === "number" && Number.isFinite(error[key])) {
171
+ sanitized[key] = error[key];
172
+ }
173
+ }
174
+ return sanitized;
175
+ }
176
+ function sanitizeErrorString(value, secrets) {
177
+ return truncateUtf8(redactString(value, secrets), MAX_RETURNED_ERROR_STRING_BYTES);
178
+ }
179
+ function truncateUtf8(value, maxBytes) {
180
+ if (Buffer.byteLength(value) <= maxBytes)
181
+ return value;
182
+ const suffix = "… [truncated]";
183
+ const prefixBytes = Math.max(0, maxBytes - Buffer.byteLength(suffix));
184
+ let prefix = Buffer.from(value).subarray(0, prefixBytes).toString("utf8");
185
+ while (Buffer.byteLength(prefix + suffix) > maxBytes)
186
+ prefix = prefix.slice(0, -1);
187
+ return prefix + suffix;
188
+ }
189
+ function formatServerWarning(error) {
190
+ return [
191
+ error.error,
192
+ error.message,
193
+ error.reference_id ? `reference_id=${error.reference_id}` : undefined,
194
+ ]
195
+ .filter(Boolean)
196
+ .join(" — ");
197
+ }
198
+ function sanitizeMessage(message, secrets) {
199
+ return Object.fromEntries(Object.entries(message)
200
+ .filter(([key]) => key !== "api_key")
201
+ .map(([key, value]) => [key, sanitizeValue(value, secrets)]));
202
+ }
203
+ function sanitizeValue(value, secrets) {
204
+ if (typeof value === "string")
205
+ return redactString(value, secrets);
206
+ if (Array.isArray(value))
207
+ return value.map((item) => sanitizeValue(item, secrets));
208
+ if (isObject(value))
209
+ return sanitizeMessage(value, secrets);
210
+ return value;
211
+ }
212
+ function redactString(value, secrets) {
213
+ return secrets.reduce((redacted, secret) => redacted.replaceAll(secret, "[REDACTED]"), value);
214
+ }
215
+ function requestSecrets(request) {
216
+ if (!isObject(request.payload))
217
+ return [];
218
+ const apiKey = request.payload.api_key;
219
+ return typeof apiKey === "string" && apiKey ? [apiKey] : [];
220
+ }
221
+ function isObject(value) {
222
+ return Boolean(value && typeof value === "object" && !Array.isArray(value));
223
+ }
224
+ //# sourceMappingURL=websocket-collector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-collector.js","sourceRoot":"","sources":["../src/websocket-collector.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,GAIpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,mBAAmB,EAEnB,kBAAkB,GAEnB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,GAAG,IAAI,CAAC;AAC1D,MAAM,6BAA6B,GAAG,EAAE,GAAG,IAAI,CAAC;AAChD,MAAM,4BAA4B,GAChC,+BAA+B,GAAG,6BAA6B,CAAC;AAClE,MAAM,+BAA+B,GAAG,CAAC,GAAG,IAAI,CAAC;AACjD,MAAM,sCAAsC,GAAG,EAAE,CAAC;AA6BlD,MAAM,gBAAgB;IAUD;IACA;IACA;IACA;IAZV,OAAO,GAAG,IAAI,OAAO,CAAQ,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACvC,QAAQ,GAA8B,EAAE,CAAC;IACzC,QAAQ,GAAa,EAAE,CAAC;IACjC,aAAa,CAA2B;IACxC,SAAS,GAAG,KAAK,CAAC;IAClB,YAAY,GAAG,KAAK,CAAC;IACb,KAAK,GAAG,CAAC,CAAC;IAElB,YACmB,QAAwB,EACxB,QAAgB,EAChB,OAAmB,EACnB,OAAiB;QAHjB,aAAQ,GAAR,QAAQ,CAAgB;QACxB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,YAAO,GAAP,OAAO,CAAY;QACnB,YAAO,GAAP,OAAO,CAAU;IACjC,CAAC;IAEJ,OAAO,CAAC,OAAe;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAC;QAC/C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,OAAO;QAE/B,IAAI,OAAO,CAAC,KAAK,KAAK,qBAAqB,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC3E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;QAED,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACtC,MAAM,WAAW,GAAG,OAA6B,CAAC;YAClD,MAAM,WAAW,GAAG,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpE,IAAI,WAAW,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACpC,IAAI,CAAC,aAAa,GAAG,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACtE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAChF,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO;QAEzD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO;QACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,KAAK,KAAmB,CAAC;IAE/B,UAAU,CAAC,OAAe;QACxB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAChF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,OAAO,CAAC,KAAa;QAC3B,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACxC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,6BAA6B,IAAI,CAAC,QAAQ,wDAAwD,CACnG,CAAC;YACF,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAgC;IAEhC,MAAM,oBAAoB,GAAG,IAAI,eAAe,EAAE,CAAC;IACnD,IAAI,eAAe,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACvD,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,eAAe,GAAG,IAAI,CAAC;QACvB,oBAAoB,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO;QAAE,oBAAoB,CAAC,KAAK,EAAE,CAAC;;QACrD,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhF,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,cAAkC,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,gBAAgB,CACjC,OAAO,CAAC,OAAO,CAAC,QAAQ,EACxB,OAAO,CAAC,QAAQ,IAAI,4BAA4B,EAChD,GAAG,EAAE,CAAC,oBAAoB,CAAC,KAAK,EAAE,EAClC,OAAO,CACR,CAAC;IACF,0BAA0B,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAEhE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAC,CAAC;YAC7D,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM;YACN,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE;gBACvB,cAAc,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACzD,CAAC;YACD,MAAM,EAAE,oBAAoB,CAAC,MAAM;YACnC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;SACnD,CAAC,CAAC;QACH,IAAI,UAAU,GAAyB,MAAM,CAAC,YAAY;YACxD,CAAC,CAAC,sBAAsB;YACxB,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,aAAa;gBAC9D,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QACpB,IAAI,EAAE,GAAG,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC;QAC/B,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC1D,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM,CAAC,UAAU,CAAC,4DAA4D,CAAC,CAAC;YAClF,CAAC;iBAAM,IAAI,UAAU,KAAK,kBAAkB,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACjE,MAAM,CAAC,UAAU,CACf,uGAAuG,CACxG,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,aAAa,GACf,MAAM,CAAC,aAAa;YACpB,CAAC,MAAM,CAAC,QAAQ,KAAK,CAAC;gBACpB,CAAC,CAAC;oBACE,KAAK,EAAE,MAAM,CAAC,MAAM;oBACpB,OAAO,EAAE,cAAc,IAAI,gCAAgC,MAAM,CAAC,MAAM,GAAG;iBAC5E;gBACH,CAAC,CAAC,SAAS,CAAC,CAAC;QACjB,IAAI,UAAU,KAAK,kBAAkB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC3D,EAAE,GAAG,KAAK,CAAC;YACX,UAAU,GAAG,oBAAoB,CAAC;YAClC,aAAa,GAAG;gBACd,KAAK,EAAE,oBAAoB;gBAC3B,OAAO,EAAE,8EAA8E;aACxF,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,YAAY;YAAE,UAAU,GAAG,sBAAsB,CAAC;QAE7D,OAAO;YACL,EAAE;YACF,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ;YAClC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,WAAW,EAAE,UAAU;YACvB,kBAAkB,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;YAC1C,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnD,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B,CAAC,MAAwB,EAAE,WAAqB;IACjF,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,sCAAsC,CAAC,CAAC;IAC3F,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,aAAa,EAAE,KAAK,EAAE,EAAE,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,+CAA+C,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7F,OAAO;QACT,CAAC;IACH,CAAC;IACD,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,GAAG,aAAa,CAAC;IACrD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,MAAM,CAAC,UAAU,CAAC,GAAG,SAAS,+DAA+D,CAAC,CAAC;IACjG,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAAyB,EACzB,OAAiB;IAEjB,MAAM,SAAS,GAA4B;QACzC,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC;KACjD,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,cAAc,CAAU,EAAE,CAAC;QACjE,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;YACnC,SAAS,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,SAAS;QAAE,SAAS,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAChF,KAAK,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,qBAAqB,CAAU,EAAE,CAAC;QACpE,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAClE,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa,EAAE,OAAiB;IAC3D,OAAO,YAAY,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,+BAA+B,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,YAAY,CAAC,KAAa,EAAE,QAAgB;IACnD,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,QAAQ;QAAE,OAAO,KAAK,CAAC;IACvD,MAAM,MAAM,GAAG,eAAe,CAAC;IAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACtE,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1E,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,QAAQ;QAAE,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnF,OAAO,MAAM,GAAG,MAAM,CAAC;AACzB,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAyB;IACpD,OAAO;QACL,KAAK,CAAC,KAAK;QACX,KAAK,CAAC,OAAO;QACb,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS;KACtE;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CACtB,OAAgC,EAChC,OAAiB;IAEjB,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC;SACpC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAC/D,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAc,EAAE,OAAiB;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACnE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACnF,IAAI,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,KAAa,EAAE,OAAiB;IACpD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC;AAChG,CAAC;AAED,SAAS,cAAc,CAAC,OAA+B;IACrD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;IACvC,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9E,CAAC"}
@@ -0,0 +1,71 @@
1
+ export declare const LIVE_WEBSOCKET_URL = "wss://realtime.insightsentry.com/live";
2
+ export declare const NEWSFEED_WEBSOCKET_URL = "wss://realtime.insightsentry.com/newsfeed";
3
+ export type StreamEndpoint = "live" | "newsfeed";
4
+ export type LiveSubscriptionType = "quote" | "series" | "both";
5
+ export type LiveSubscriptionInput = Record<string, unknown>;
6
+ export interface LiveStreamInput {
7
+ symbols?: string | string[];
8
+ type?: string;
9
+ subscriptions?: string | LiveSubscriptionInput[];
10
+ bar_type?: string;
11
+ bar_interval?: number;
12
+ dp?: number;
13
+ currency?: string;
14
+ unit?: string;
15
+ extended?: boolean;
16
+ "24h"?: boolean;
17
+ split?: boolean;
18
+ dadj?: boolean;
19
+ badj?: boolean;
20
+ settlement?: boolean;
21
+ slow_consumer_policy?: "disconnect" | "adaptive";
22
+ }
23
+ export interface NewsfeedStreamInput {
24
+ source?: string;
25
+ related_symbols?: string;
26
+ content?: string;
27
+ }
28
+ export interface LiveStreamPayload {
29
+ api_key: string;
30
+ subscriptions: Array<Record<string, unknown>>;
31
+ slow_consumer_policy?: "disconnect" | "adaptive";
32
+ }
33
+ export interface NewsfeedStreamPayload {
34
+ api_key: string;
35
+ source?: string;
36
+ related_symbols?: string;
37
+ content?: string;
38
+ }
39
+ export interface StreamRequest<TPayload> {
40
+ endpoint: StreamEndpoint;
41
+ url: string;
42
+ payload: TPayload;
43
+ ignoredArgs: string[];
44
+ }
45
+ export declare function buildLiveStreamRequest(input: LiveStreamInput, apiKey: string): StreamRequest<LiveStreamPayload>;
46
+ export declare function buildNewsfeedStreamRequest(input: NewsfeedStreamInput, apiKey: string): StreamRequest<NewsfeedStreamPayload>;
47
+ export interface ServerErrorPayload {
48
+ error: string;
49
+ message?: string;
50
+ reference_id?: string;
51
+ retryable?: boolean;
52
+ action?: string;
53
+ delay_seconds?: number;
54
+ retry_after_seconds?: number;
55
+ [key: string]: unknown;
56
+ }
57
+ export type ServerErrorDisposition = {
58
+ kind: "server_wait";
59
+ } | {
60
+ kind: "partial_validation";
61
+ } | {
62
+ kind: "retry_request";
63
+ delayMs: number;
64
+ } | {
65
+ kind: "reconnect";
66
+ delayMs: number;
67
+ } | {
68
+ kind: "terminal";
69
+ };
70
+ export declare function classifyServerError(error: ServerErrorPayload, endpoint?: StreamEndpoint): ServerErrorDisposition;
71
+ //# sourceMappingURL=websocket-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-contract.d.ts","sourceRoot":"","sources":["../src/websocket-contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,272 @@
1
+ import { SYMBOL_CODE_REGEX } from "./symbol-validation.js";
2
+ export const LIVE_WEBSOCKET_URL = "wss://realtime.insightsentry.com/live";
3
+ export const NEWSFEED_WEBSOCKET_URL = "wss://realtime.insightsentry.com/newsfeed";
4
+ const SERIES_ONLY_KEYS = [
5
+ "bar_type",
6
+ "bar_interval",
7
+ "dp",
8
+ "currency",
9
+ "unit",
10
+ "split",
11
+ "dadj",
12
+ "badj",
13
+ "settlement",
14
+ ];
15
+ const QUOTE_SESSION_KEYS = ["extended", "24h"];
16
+ const SIP_UNSUPPORTED_KEYS = ["currency", "extended", "settlement", "unit", "badj"];
17
+ const SIMPLE_SUBSCRIPTION_KEYS = [...SERIES_ONLY_KEYS, ...QUOTE_SESSION_KEYS];
18
+ const BOOLEAN_SUBSCRIPTION_KEYS = [
19
+ "extended",
20
+ "24h",
21
+ "split",
22
+ "dadj",
23
+ "badj",
24
+ "settlement",
25
+ ];
26
+ const ADVANCED_SUBSCRIPTION_KEYS = new Set(["code", "type", ...SIMPLE_SUBSCRIPTION_KEYS]);
27
+ const BAR_TYPES = new Set(["tick", "second", "minute", "hour", "day", "week", "month"]);
28
+ const SECOND_INTERVALS = new Set([1, 5, 10, 15, 30, 45]);
29
+ export function buildLiveStreamRequest(input, apiKey) {
30
+ requireApiKey(apiKey);
31
+ const ignoredArgs = [];
32
+ if (input.subscriptions && hasSimpleSubscriptionArgs(input)) {
33
+ throw new Error("subscriptions cannot be combined with symbols, type, or shared symbol settings");
34
+ }
35
+ const subscriptions = input.subscriptions
36
+ ? parseAdvancedSubscriptions(input.subscriptions, ignoredArgs)
37
+ : buildSimpleSubscriptions(input, ignoredArgs);
38
+ const payload = {
39
+ api_key: apiKey,
40
+ subscriptions,
41
+ };
42
+ if (input.slow_consumer_policy) {
43
+ payload.slow_consumer_policy = input.slow_consumer_policy;
44
+ }
45
+ return {
46
+ endpoint: "live",
47
+ url: LIVE_WEBSOCKET_URL,
48
+ payload,
49
+ ignoredArgs: unique(ignoredArgs),
50
+ };
51
+ }
52
+ export function buildNewsfeedStreamRequest(input, apiKey) {
53
+ requireApiKey(apiKey);
54
+ const payload = { api_key: apiKey };
55
+ for (const key of ["source", "related_symbols", "content"]) {
56
+ const value = input[key]?.trim();
57
+ if (value)
58
+ payload[key] = value;
59
+ }
60
+ return {
61
+ endpoint: "newsfeed",
62
+ url: NEWSFEED_WEBSOCKET_URL,
63
+ payload,
64
+ ignoredArgs: [],
65
+ };
66
+ }
67
+ function requireApiKey(apiKey) {
68
+ if (!apiKey.trim())
69
+ throw new Error("API key is required");
70
+ }
71
+ function buildSimpleSubscriptions(input, ignoredArgs) {
72
+ const symbols = parseSymbols(input.symbols);
73
+ const type = normalizeSubscriptionType(input.type);
74
+ if (!type) {
75
+ throw new Error("type is required and must be quote, series, or both");
76
+ }
77
+ if (type === "quote") {
78
+ for (const key of SERIES_ONLY_KEYS) {
79
+ if (input[key] !== undefined)
80
+ ignoredArgs.push(key);
81
+ }
82
+ }
83
+ return symbols.map((code) => {
84
+ const raw = { code, type };
85
+ if (type !== "quote") {
86
+ for (const key of SERIES_ONLY_KEYS)
87
+ copyDefined(raw, key, input[key]);
88
+ }
89
+ for (const key of QUOTE_SESSION_KEYS)
90
+ copyDefined(raw, key, input[key]);
91
+ const normalized = normalizeSubscription(raw, ignoredArgs);
92
+ validateSubscription(normalized);
93
+ return normalized;
94
+ });
95
+ }
96
+ function parseAdvancedSubscriptions(raw, ignoredArgs) {
97
+ let decoded;
98
+ if (typeof raw === "string") {
99
+ try {
100
+ decoded = JSON.parse(raw);
101
+ }
102
+ catch (error) {
103
+ throw new Error(`subscriptions must be valid JSON: ${error?.message ?? String(error)}`);
104
+ }
105
+ }
106
+ else {
107
+ decoded = raw;
108
+ }
109
+ if (!Array.isArray(decoded) || decoded.length === 0) {
110
+ throw new Error("subscriptions must be a non-empty JSON array");
111
+ }
112
+ return decoded.map((value, index) => {
113
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
114
+ throw new Error(`subscriptions[${index}] must be an object`);
115
+ }
116
+ const subscription = value;
117
+ if ("api_key" in subscription) {
118
+ throw new Error(`api_key is not allowed in subscriptions[${index}]; use the configured login`);
119
+ }
120
+ const unsupportedKeys = Object.keys(subscription).filter((key) => !ADVANCED_SUBSCRIPTION_KEYS.has(key));
121
+ if (unsupportedKeys.length > 0) {
122
+ throw new Error(`subscriptions[${index}] contains unsupported field${unsupportedKeys.length === 1 ? "" : "s"}: ${unsupportedKeys.join(", ")}`);
123
+ }
124
+ const code = normalizedSymbol(subscription.code, `subscriptions[${index}].code`);
125
+ const type = normalizeSubscriptionType(subscription.type);
126
+ if (!type) {
127
+ throw new Error(`subscriptions[${index}].type is required and must be quote, series, or both`);
128
+ }
129
+ const normalized = { code, type };
130
+ for (const key of SIMPLE_SUBSCRIPTION_KEYS) {
131
+ copyDefined(normalized, key, subscription[key]);
132
+ }
133
+ const result = normalizeSubscription(normalized, ignoredArgs);
134
+ validateSubscription(result, `subscriptions[${index}]`);
135
+ return result;
136
+ });
137
+ }
138
+ function hasSimpleSubscriptionArgs(input) {
139
+ return ["symbols", "type", ...SIMPLE_SUBSCRIPTION_KEYS].some((key) => input[key] !== undefined);
140
+ }
141
+ function normalizeSubscription(subscription, ignoredArgs) {
142
+ const code = String(subscription.code);
143
+ const type = subscription.type;
144
+ if (type === "quote") {
145
+ for (const key of SERIES_ONLY_KEYS) {
146
+ if (key in subscription) {
147
+ delete subscription[key];
148
+ ignoredArgs.push(`${key} for ${code}`);
149
+ }
150
+ }
151
+ }
152
+ if (code.startsWith("SIP:")) {
153
+ for (const key of SIP_UNSUPPORTED_KEYS) {
154
+ if (key in subscription) {
155
+ delete subscription[key];
156
+ ignoredArgs.push(`${key} for ${code}`);
157
+ }
158
+ }
159
+ if (subscription["24h"] === true) {
160
+ delete subscription["24h"];
161
+ ignoredArgs.push(`24h for ${code}`);
162
+ }
163
+ }
164
+ return subscription;
165
+ }
166
+ function validateSubscription(subscription, label = "subscription") {
167
+ const barType = subscription.bar_type;
168
+ if (barType !== undefined && (typeof barType !== "string" || !BAR_TYPES.has(barType))) {
169
+ throw new Error(`${label}.bar_type must be tick, second, minute, hour, day, week, or month`);
170
+ }
171
+ const barInterval = subscription.bar_interval;
172
+ if (barInterval !== undefined &&
173
+ (typeof barInterval !== "number" ||
174
+ !Number.isInteger(barInterval) ||
175
+ barInterval <= 0 ||
176
+ barInterval > 2_147_483_647)) {
177
+ throw new Error(`${label}.bar_interval must be a positive integer`);
178
+ }
179
+ if (barType === "tick" && barInterval !== undefined && barInterval !== 1) {
180
+ throw new Error(`${label}.bar_interval allowed value for tick is 1`);
181
+ }
182
+ if (barType === "second" &&
183
+ barInterval !== undefined &&
184
+ !SECOND_INTERVALS.has(barInterval)) {
185
+ throw new Error(`${label}.bar_interval allowed values for second are 1, 5, 10, 15, 30, 45`);
186
+ }
187
+ const dp = subscription.dp;
188
+ if (dp !== undefined &&
189
+ (typeof dp !== "number" || !Number.isInteger(dp) || dp < 1 || dp > 30_000)) {
190
+ throw new Error(`${label}.dp must be an integer from 1 to 30000`);
191
+ }
192
+ for (const key of BOOLEAN_SUBSCRIPTION_KEYS) {
193
+ if (subscription[key] !== undefined && typeof subscription[key] !== "boolean") {
194
+ throw new Error(`${label}.${key} must be a boolean`);
195
+ }
196
+ }
197
+ for (const key of ["currency", "unit"]) {
198
+ if (subscription[key] !== undefined &&
199
+ (typeof subscription[key] !== "string" || !subscription[key].trim())) {
200
+ throw new Error(`${label}.${key} must be a non-empty string`);
201
+ }
202
+ }
203
+ }
204
+ function parseSymbols(raw) {
205
+ const values = Array.isArray(raw) ? raw : (raw ?? "").split(",");
206
+ const symbols = unique(values.map((value) => value.trim()).filter(Boolean));
207
+ if (symbols.length === 0)
208
+ throw new Error("symbols is required");
209
+ for (const symbol of symbols)
210
+ normalizedSymbol(symbol, "symbols");
211
+ return symbols;
212
+ }
213
+ function normalizedSymbol(value, field) {
214
+ if (typeof value !== "string" || !SYMBOL_CODE_REGEX.test(value.trim())) {
215
+ throw new Error(`${field} must use EXCHANGE:SYMBOL format, e.g. NASDAQ:AAPL`);
216
+ }
217
+ return value.trim();
218
+ }
219
+ function normalizeSubscriptionType(value) {
220
+ if (typeof value !== "string")
221
+ return null;
222
+ const normalized = value.trim().toLowerCase();
223
+ if (normalized === "quotes")
224
+ return "quote";
225
+ if (normalized === "quote" || normalized === "series" || normalized === "both") {
226
+ return normalized;
227
+ }
228
+ return null;
229
+ }
230
+ function copyDefined(target, key, value) {
231
+ if (value !== undefined)
232
+ target[key] = value;
233
+ }
234
+ function unique(values) {
235
+ return [...new Set(values)];
236
+ }
237
+ const PARTIAL_LIVE_ERRORS = new Set([
238
+ "invalid_symbol",
239
+ "invalid_bar_interval",
240
+ "invalid_currency_code",
241
+ "invalid_unit_code",
242
+ ]);
243
+ const SERVER_WAIT_ERRORS = new Set(["processing_throttled", "reconnect_throttled"]);
244
+ const RECONNECT_ACTIONS = new Set([
245
+ "reconnect",
246
+ "reconnect_and_send_request",
247
+ "reconnect_with_current_entitlements",
248
+ ]);
249
+ export function classifyServerError(error, endpoint) {
250
+ if (endpoint === "live" && PARTIAL_LIVE_ERRORS.has(error.error)) {
251
+ return { kind: "partial_validation" };
252
+ }
253
+ if (error.action === "wait_and_retry" && SERVER_WAIT_ERRORS.has(error.error)) {
254
+ return { kind: "server_wait" };
255
+ }
256
+ if (error.retryable !== false &&
257
+ (error.action === "retry_request" || error.error === "temporarily_unavailable")) {
258
+ return { kind: "retry_request", delayMs: serverDelayMs(error) };
259
+ }
260
+ if (error.retryable !== false && error.action && RECONNECT_ACTIONS.has(error.action)) {
261
+ return { kind: "reconnect", delayMs: serverDelayMs(error) };
262
+ }
263
+ return { kind: "terminal" };
264
+ }
265
+ function serverDelayMs(error) {
266
+ const seconds = Math.max(finiteNonNegative(error.delay_seconds), finiteNonNegative(error.retry_after_seconds));
267
+ return Math.ceil(seconds * 1_000);
268
+ }
269
+ function finiteNonNegative(value) {
270
+ return typeof value === "number" && Number.isFinite(value) ? Math.max(0, value) : 0;
271
+ }
272
+ //# sourceMappingURL=websocket-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-contract.js","sourceRoot":"","sources":["../src/websocket-contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,CAAC,MAAM,kBAAkB,GAAG,uCAAuC,CAAC;AAC1E,MAAM,CAAC,MAAM,sBAAsB,GAAG,2CAA2C,CAAC;AAkDlF,MAAM,gBAAgB,GAAG;IACvB,UAAU;IACV,cAAc;IACd,IAAI;IACJ,UAAU;IACV,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,YAAY;CACJ,CAAC;AACX,MAAM,kBAAkB,GAAG,CAAC,UAAU,EAAE,KAAK,CAAU,CAAC;AACxD,MAAM,oBAAoB,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAU,CAAC;AAC7F,MAAM,wBAAwB,GAAG,CAAC,GAAG,gBAAgB,EAAE,GAAG,kBAAkB,CAAU,CAAC;AACvF,MAAM,yBAAyB,GAAG;IAChC,UAAU;IACV,KAAK;IACL,OAAO;IACP,MAAM;IACN,MAAM;IACN,YAAY;CACJ,CAAC;AACX,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,wBAAwB,CAAC,CAAC,CAAC;AAC1F,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AACxF,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAEzD,MAAM,UAAU,sBAAsB,CACpC,KAAsB,EACtB,MAAc;IAEd,aAAa,CAAC,MAAM,CAAC,CAAC;IACtB,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,IAAI,KAAK,CAAC,aAAa,IAAI,yBAAyB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAC;IACJ,CAAC;IACD,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa;QACvC,CAAC,CAAC,0BAA0B,CAAC,KAAK,CAAC,aAAa,EAAE,WAAW,CAAC;QAC9D,CAAC,CAAC,wBAAwB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACjD,MAAM,OAAO,GAAsB;QACjC,OAAO,EAAE,MAAM;QACf,aAAa;KACd,CAAC;IACF,IAAI,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC/B,OAAO,CAAC,oBAAoB,GAAG,KAAK,CAAC,oBAAoB,CAAC;IAC5D,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,kBAAkB;QACvB,OAAO;QACP,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;KACjC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,KAA0B,EAC1B,MAAc;IAEd,aAAa,CAAC,MAAM,CAAC,CAAC;IACtB,MAAM,OAAO,GAA0B,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3D,KAAK,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,iBAAiB,EAAE,SAAS,CAAU,EAAE,CAAC;QACpE,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC;QACjC,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAClC,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,UAAU;QACpB,GAAG,EAAE,sBAAsB;QAC3B,OAAO;QACP,WAAW,EAAE,EAAE;KAChB,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,MAAc;IACnC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,wBAAwB,CAC/B,KAAsB,EACtB,WAAqB;IAErB,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACnC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS;gBAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC1B,MAAM,GAAG,GAA4B,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACpD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,KAAK,MAAM,GAAG,IAAI,gBAAgB;gBAAE,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACxE,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,kBAAkB;YAAE,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACxE,MAAM,UAAU,GAAG,qBAAqB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAC3D,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACjC,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,0BAA0B,CACjC,GAAqC,EACrC,WAAqB;IAErB,IAAI,OAAgB,CAAC;IACrB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,qCAAqC,KAAK,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,GAAG,CAAC;IAChB,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAClC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,iBAAiB,KAAK,qBAAqB,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,YAAY,GAAG,KAAgC,CAAC;QACtD,IAAI,SAAS,IAAI,YAAY,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACb,2CAA2C,KAAK,6BAA6B,CAC9E,CAAC;QACJ,CAAC;QACD,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CACtD,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,0BAA0B,CAAC,GAAG,CAAC,GAAG,CAAC,CAC9C,CAAC;QACF,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACb,iBAAiB,KAAK,+BAA+B,eAAe,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9H,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,YAAY,CAAC,IAAI,EAAE,iBAAiB,KAAK,QAAQ,CAAC,CAAC;QACjF,MAAM,IAAI,GAAG,yBAAyB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CACb,iBAAiB,KAAK,uDAAuD,CAC9E,CAAC;QACJ,CAAC;QACD,MAAM,UAAU,GAA4B,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC3D,KAAK,MAAM,GAAG,IAAI,wBAAwB,EAAE,CAAC;YAC3C,WAAW,CAAC,UAAU,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,CAAC;QACD,MAAM,MAAM,GAAG,qBAAqB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAC9D,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,KAAK,GAAG,CAAC,CAAC;QACxD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAsB;IACvD,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,wBAAwB,CAAC,CAAC,IAAI,CAC1D,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAA4B,CAAC,KAAK,SAAS,CAC3D,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,YAAqC,EACrC,WAAqB;IAErB,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,YAAY,CAAC,IAA4B,CAAC;IACvD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACnC,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;gBACxB,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;gBACzB,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,QAAQ,IAAI,EAAE,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,KAAK,MAAM,GAAG,IAAI,oBAAoB,EAAE,CAAC;YACvC,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;gBACxB,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;gBACzB,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,QAAQ,IAAI,EAAE,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QACD,IAAI,YAAY,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;YACjC,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;YAC3B,WAAW,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,oBAAoB,CAAC,YAAqC,EAAE,KAAK,GAAG,cAAc;IACzF,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC;IACtC,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACtF,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,mEAAmE,CAAC,CAAC;IAC/F,CAAC;IACD,MAAM,WAAW,GAAG,YAAY,CAAC,YAAY,CAAC;IAC9C,IACE,WAAW,KAAK,SAAS;QACzB,CAAC,OAAO,WAAW,KAAK,QAAQ;YAC9B,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC;YAC9B,WAAW,IAAI,CAAC;YAChB,WAAW,GAAG,aAAa,CAAC,EAC9B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,0CAA0C,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,OAAO,KAAK,MAAM,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,2CAA2C,CAAC,CAAC;IACvE,CAAC;IACD,IACE,OAAO,KAAK,QAAQ;QACpB,WAAW,KAAK,SAAS;QACzB,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAqB,CAAC,EAC5C,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,kEAAkE,CAAC,CAAC;IAC9F,CAAC;IACD,MAAM,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC;IAC3B,IACE,EAAE,KAAK,SAAS;QAChB,CAAC,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,EAC1E,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,wCAAwC,CAAC,CAAC;IACpE,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,yBAAyB,EAAE,CAAC;QAC5C,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,OAAO,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YAC9E,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,GAAG,oBAAoB,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAU,EAAE,CAAC;QAChD,IACE,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS;YAC/B,CAAC,OAAO,YAAY,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EACpE,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,GAAG,6BAA6B,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,GAAkC;IACtD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACjE,KAAK,MAAM,MAAM,IAAI,OAAO;QAAE,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAClE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc,EAAE,KAAa;IACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,oDAAoD,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAc;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,UAAU,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IAC5C,IAAI,UAAU,KAAK,OAAO,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC/E,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,MAA+B,EAAE,GAAW,EAAE,KAAc;IAC/E,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC/C,CAAC;AAED,SAAS,MAAM,CAAI,MAAW;IAC5B,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,CAAC;AAoBD,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,gBAAgB;IAChB,sBAAsB;IACtB,uBAAuB;IACvB,mBAAmB;CACpB,CAAC,CAAC;AACH,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,sBAAsB,EAAE,qBAAqB,CAAC,CAAC,CAAC;AACpF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,WAAW;IACX,4BAA4B;IAC5B,qCAAqC;CACtC,CAAC,CAAC;AAEH,MAAM,UAAU,mBAAmB,CACjC,KAAyB,EACzB,QAAyB;IAEzB,IAAI,QAAQ,KAAK,MAAM,IAAI,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC;IACxC,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,gBAAgB,IAAI,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7E,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;IACjC,CAAC;IACD,IACE,KAAK,CAAC,SAAS,KAAK,KAAK;QACzB,CAAC,KAAK,CAAC,MAAM,KAAK,eAAe,IAAI,KAAK,CAAC,KAAK,KAAK,yBAAyB,CAAC,EAC/E,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;IAClE,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QACrF,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;IAC9D,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,aAAa,CAAC,KAAyB;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CACtB,iBAAiB,CAAC,KAAK,CAAC,aAAa,CAAC,EACtC,iBAAiB,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAC7C,CAAC;IACF,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtF,CAAC"}