@instantdb/core 0.22.139-experimental.streams.22079869443.1 → 0.22.139
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/commonjs/Connection.d.ts +1 -2
- package/dist/commonjs/Connection.d.ts.map +1 -1
- package/dist/commonjs/Connection.js +2 -6
- package/dist/commonjs/Connection.js.map +1 -1
- package/dist/commonjs/Reactor.d.ts +0 -12
- package/dist/commonjs/Reactor.d.ts.map +1 -1
- package/dist/commonjs/Reactor.js +18 -63
- package/dist/commonjs/Reactor.js.map +1 -1
- package/dist/commonjs/index.d.ts +2 -41
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/index.js +1 -41
- package/dist/commonjs/index.js.map +1 -1
- package/dist/esm/Connection.d.ts +1 -2
- package/dist/esm/Connection.d.ts.map +1 -1
- package/dist/esm/Connection.js +2 -6
- package/dist/esm/Connection.js.map +1 -1
- package/dist/esm/Reactor.d.ts +0 -12
- package/dist/esm/Reactor.d.ts.map +1 -1
- package/dist/esm/Reactor.js +9 -53
- package/dist/esm/Reactor.js.map +1 -1
- package/dist/esm/index.d.ts +2 -41
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -42
- package/dist/esm/index.js.map +1 -1
- package/dist/standalone/index.js +1604 -2203
- package/dist/standalone/index.umd.cjs +3 -3
- package/package.json +2 -2
- package/src/Connection.ts +2 -6
- package/src/Reactor.js +10 -56
- package/src/index.ts +1 -71
- package/tsconfig.json +1 -2
- package/dist/commonjs/Stream.d.ts +0 -112
- package/dist/commonjs/Stream.d.ts.map +0 -1
- package/dist/commonjs/Stream.js +0 -708
- package/dist/commonjs/Stream.js.map +0 -1
- package/dist/esm/Stream.d.ts +0 -112
- package/dist/esm/Stream.d.ts.map +0 -1
- package/dist/esm/Stream.js +0 -701
- package/dist/esm/Stream.js.map +0 -1
- package/src/Stream.ts +0 -1016
|
@@ -70,7 +70,6 @@ export declare class SSEConnection implements Connection<EventSourceType> {
|
|
|
70
70
|
private closeFired;
|
|
71
71
|
private sseInitTimeout;
|
|
72
72
|
private ES;
|
|
73
|
-
private messageUrl;
|
|
74
73
|
conn: EventSourceType;
|
|
75
74
|
url: string;
|
|
76
75
|
id: string;
|
|
@@ -78,7 +77,7 @@ export declare class SSEConnection implements Connection<EventSourceType> {
|
|
|
78
77
|
onmessage: (event: MsgEvent<EventSourceType>) => void;
|
|
79
78
|
onclose: (event: CloseEvent<EventSourceType>) => void;
|
|
80
79
|
onerror: (event: ErrorEvent<EventSourceType>) => void;
|
|
81
|
-
constructor(ES: EventSourceConstructor, url: string
|
|
80
|
+
constructor(ES: EventSourceConstructor, url: string);
|
|
82
81
|
private handleMessage;
|
|
83
82
|
private handleError;
|
|
84
83
|
private handleClose;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Connection.d.ts","sourceRoot":"","sources":["../../src/Connection.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Connection.d.ts","sourceRoot":"","sources":["../../src/Connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,7 +59,6 @@ class SSEConnection {
|
|
|
59
59
|
closeFired = false;
|
|
60
60
|
sseInitTimeout = undefined;
|
|
61
61
|
ES;
|
|
62
|
-
messageUrl;
|
|
63
62
|
conn;
|
|
64
63
|
url;
|
|
65
64
|
id;
|
|
@@ -67,10 +66,9 @@ class SSEConnection {
|
|
|
67
66
|
onmessage;
|
|
68
67
|
onclose;
|
|
69
68
|
onerror;
|
|
70
|
-
constructor(ES, url
|
|
69
|
+
constructor(ES, url) {
|
|
71
70
|
this.id = `${this.type}_${_connId++}`;
|
|
72
71
|
this.url = url;
|
|
73
|
-
this.messageUrl = messageUrl || this.url;
|
|
74
72
|
this.ES = ES;
|
|
75
73
|
this.conn = new ES(url);
|
|
76
74
|
// Close the connection if we didn't get an init within 10 seconds
|
|
@@ -133,10 +131,8 @@ class SSEConnection {
|
|
|
133
131
|
}
|
|
134
132
|
}
|
|
135
133
|
async postMessages(messages) {
|
|
136
|
-
// TODO(dww): Create a connection with chunked encoding so we can
|
|
137
|
-
// send multiple messages over one request
|
|
138
134
|
try {
|
|
139
|
-
const resp = await fetch(this.
|
|
135
|
+
const resp = await fetch(this.url, {
|
|
140
136
|
method: 'POST',
|
|
141
137
|
headers: { 'Content-Type': 'application/json' },
|
|
142
138
|
body: JSON.stringify({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Connection.js","sourceRoot":"","sources":["../../src/Connection.ts"],"names":[],"mappings":"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","sourcesContent":["export interface EventSourceType {\n readonly url: string;\n readonly readyState: number;\n\n onopen: ((this: EventSourceType, ev: Event) => any) | null;\n onmessage: ((this: EventSourceType, ev: MessageEvent) => any) | null;\n onerror: ((this: EventSourceType, ev: Event) => any) | null;\n\n close(): void;\n}\n\nexport interface EventSourceConstructor {\n OPEN: number;\n CONNECTING: number;\n CLOSED: number;\n new (url: string): EventSourceType;\n}\n\nlet _connId = 0;\n\ntype Conn = EventSourceType | WebSocket;\n\ntype OpenEvent<T extends Conn> = {\n target: Connection<T>;\n};\n\ntype MessageData = {\n op: string;\n [key: string]: any;\n};\n\ntype SendMessageData = {\n 'client-event-id': string;\n [key: string]: any;\n};\n\ntype MsgEvent<T extends Conn> = {\n target: Connection<T>;\n message: MessageData | MessageData[];\n};\n\ntype CloseEvent<T extends Conn> = {\n target: Connection<T>;\n};\n\ninterface ErrorEvent<T extends Conn> {\n target: Connection<T>;\n}\n\nexport type TransportType = 'ws' | 'sse';\n\nexport interface Connection<T extends Conn> {\n conn: T;\n type: 'ws' | 'sse';\n id: string;\n close(): void;\n isOpen(): boolean;\n isConnecting(): boolean;\n send(msg: SendMessageData): void;\n onopen: ((event: OpenEvent<T>) => void) | null;\n onmessage: ((event: MsgEvent<T>) => void) | null;\n onclose: ((event: CloseEvent<T>) => void) | null;\n onerror: ((event: ErrorEvent<T>) => void) | null;\n}\n\nexport class WSConnection implements Connection<WebSocket> {\n type: TransportType = 'ws';\n conn: WebSocket;\n id: string;\n onopen: (event: OpenEvent<WebSocket>) => void;\n onmessage: (event: MsgEvent<WebSocket>) => void;\n onclose: (event: CloseEvent<WebSocket>) => void;\n onerror: (event: ErrorEvent<WebSocket>) => void;\n constructor(url: string) {\n this.id = `${this.type}_${_connId++}`;\n this.conn = new WebSocket(url);\n this.conn.onopen = (_e) => {\n if (this.onopen) {\n this.onopen({ target: this });\n }\n };\n this.conn.onmessage = (e) => {\n if (this.onmessage) {\n this.onmessage({\n target: this,\n message: JSON.parse(e.data.toString()),\n });\n }\n };\n this.conn.onclose = (_e) => {\n if (this.onclose) {\n this.onclose({ target: this });\n }\n };\n this.conn.onerror = (_e) => {\n if (this.onerror) {\n this.onerror({ target: this });\n }\n };\n }\n\n close() {\n this.conn.close();\n }\n\n isOpen(): boolean {\n return this.conn.readyState === (WebSocket.OPEN ?? 1);\n }\n\n isConnecting(): boolean {\n return this.conn.readyState === (WebSocket.CONNECTING ?? 0);\n }\n\n send(msg: SendMessageData) {\n return this.conn.send(JSON.stringify(msg));\n }\n}\n\ntype SSEInitParams = {\n machineId: string;\n sessionId: string;\n sseToken: string;\n};\n\nexport class SSEConnection implements Connection<EventSourceType> {\n type: TransportType = 'sse';\n private initParams: SSEInitParams | null = null;\n private sendQueue: any[] = [];\n private sendPromise: Promise<void> | null;\n private closeFired: boolean = false;\n private sseInitTimeout: ReturnType<typeof setTimeout> | undefined = undefined;\n private ES: EventSourceConstructor;\n private messageUrl: string;\n conn: EventSourceType;\n url: string;\n id: string;\n onopen: (event: OpenEvent<EventSourceType>) => void;\n onmessage: (event: MsgEvent<EventSourceType>) => void;\n onclose: (event: CloseEvent<EventSourceType>) => void;\n onerror: (event: ErrorEvent<EventSourceType>) => void;\n\n constructor(ES: EventSourceConstructor, url: string, messageUrl?: string) {\n this.id = `${this.type}_${_connId++}`;\n this.url = url;\n this.messageUrl = messageUrl || this.url;\n this.ES = ES;\n this.conn = new ES(url);\n\n // Close the connection if we didn't get an init within 10 seconds\n this.sseInitTimeout = setTimeout(() => {\n if (!this.initParams) {\n this.handleError();\n }\n }, 10000);\n\n this.conn.onmessage = (e) => {\n const message = JSON.parse(e.data);\n if (Array.isArray(message)) {\n for (const msg of message) {\n this.handleMessage(msg);\n }\n } else {\n this.handleMessage(message);\n }\n };\n\n this.conn.onerror = (e) => {\n this.handleError();\n };\n }\n\n private handleMessage(msg: MessageData) {\n if (msg.op === 'sse-init') {\n this.initParams = {\n machineId: msg['machine-id'],\n sessionId: msg['session-id'],\n sseToken: msg['sse-token'],\n };\n if (this.onopen) {\n this.onopen({ target: this });\n }\n clearTimeout(this.sseInitTimeout);\n return;\n }\n if (this.onmessage) {\n this.onmessage({\n target: this,\n message: msg,\n });\n }\n }\n\n // Runs the onerror and closes the connection\n private handleError() {\n try {\n if (this.onerror) {\n this.onerror({ target: this });\n }\n } finally {\n this.handleClose();\n }\n }\n\n private handleClose() {\n this.conn.close();\n if (this.onclose && !this.closeFired) {\n this.closeFired = true;\n this.onclose({ target: this });\n }\n }\n\n private async postMessages(messages: any[]): Promise<void> {\n // TODO(dww): Create a connection with chunked encoding so we can\n // send multiple messages over one request\n try {\n const resp = await fetch(this.messageUrl, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n machine_id: this.initParams?.machineId,\n session_id: this.initParams?.sessionId,\n sse_token: this.initParams?.sseToken,\n messages,\n }),\n });\n if (!resp.ok) {\n this.handleError();\n }\n } catch (e) {\n this.handleError();\n }\n }\n\n private async flushQueue() {\n if (this.sendPromise || !this.sendQueue.length) return;\n\n const messages = this.sendQueue;\n this.sendQueue = [];\n const sendPromise = this.postMessages(messages);\n this.sendPromise = sendPromise;\n sendPromise.then(() => {\n this.sendPromise = null;\n this.flushQueue();\n });\n }\n\n send(msg: SendMessageData) {\n if (!this.isOpen() || !this.initParams) {\n if (this.isConnecting()) {\n throw new Error(\n `Failed to execute 'send' on 'EventSource': Still in CONNECTING state.`,\n );\n }\n if (this.conn.readyState === this.ES.CLOSED) {\n throw new Error(`EventSource is already in CLOSING or CLOSED state.`);\n }\n throw new Error(`EventSource is in invalid state.`);\n }\n this.sendQueue.push(msg);\n this.flushQueue();\n }\n\n isOpen(): boolean {\n return this.conn.readyState === this.ES.OPEN && this.initParams !== null;\n }\n\n isConnecting(): boolean {\n return (\n this.conn.readyState === this.ES.CONNECTING ||\n (this.conn.readyState === this.ES.OPEN && this.initParams === null)\n );\n }\n\n close() {\n this.handleClose();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Connection.js","sourceRoot":"","sources":["../../src/Connection.ts"],"names":[],"mappings":"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","sourcesContent":["export interface EventSourceType {\n readonly url: string;\n readonly readyState: number;\n\n onopen: ((this: EventSourceType, ev: Event) => any) | null;\n onmessage: ((this: EventSourceType, ev: MessageEvent) => any) | null;\n onerror: ((this: EventSourceType, ev: Event) => any) | null;\n\n close(): void;\n}\n\nexport interface EventSourceConstructor {\n OPEN: number;\n CONNECTING: number;\n CLOSED: number;\n new (url: string): EventSourceType;\n}\n\nlet _connId = 0;\n\ntype Conn = EventSourceType | WebSocket;\n\ntype OpenEvent<T extends Conn> = {\n target: Connection<T>;\n};\n\ntype MessageData = {\n op: string;\n [key: string]: any;\n};\n\ntype SendMessageData = {\n 'client-event-id': string;\n [key: string]: any;\n};\n\ntype MsgEvent<T extends Conn> = {\n target: Connection<T>;\n message: MessageData | MessageData[];\n};\n\ntype CloseEvent<T extends Conn> = {\n target: Connection<T>;\n};\n\ninterface ErrorEvent<T extends Conn> {\n target: Connection<T>;\n}\n\nexport type TransportType = 'ws' | 'sse';\n\nexport interface Connection<T extends Conn> {\n conn: T;\n type: 'ws' | 'sse';\n id: string;\n close(): void;\n isOpen(): boolean;\n isConnecting(): boolean;\n send(msg: SendMessageData): void;\n onopen: ((event: OpenEvent<T>) => void) | null;\n onmessage: ((event: MsgEvent<T>) => void) | null;\n onclose: ((event: CloseEvent<T>) => void) | null;\n onerror: ((event: ErrorEvent<T>) => void) | null;\n}\n\nexport class WSConnection implements Connection<WebSocket> {\n type: TransportType = 'ws';\n conn: WebSocket;\n id: string;\n onopen: (event: OpenEvent<WebSocket>) => void;\n onmessage: (event: MsgEvent<WebSocket>) => void;\n onclose: (event: CloseEvent<WebSocket>) => void;\n onerror: (event: ErrorEvent<WebSocket>) => void;\n constructor(url: string) {\n this.id = `${this.type}_${_connId++}`;\n this.conn = new WebSocket(url);\n this.conn.onopen = (_e) => {\n if (this.onopen) {\n this.onopen({ target: this });\n }\n };\n this.conn.onmessage = (e) => {\n if (this.onmessage) {\n this.onmessage({\n target: this,\n message: JSON.parse(e.data.toString()),\n });\n }\n };\n this.conn.onclose = (_e) => {\n if (this.onclose) {\n this.onclose({ target: this });\n }\n };\n this.conn.onerror = (_e) => {\n if (this.onerror) {\n this.onerror({ target: this });\n }\n };\n }\n\n close() {\n this.conn.close();\n }\n\n isOpen(): boolean {\n return this.conn.readyState === (WebSocket.OPEN ?? 1);\n }\n\n isConnecting(): boolean {\n return this.conn.readyState === (WebSocket.CONNECTING ?? 0);\n }\n\n send(msg: SendMessageData) {\n return this.conn.send(JSON.stringify(msg));\n }\n}\n\ntype SSEInitParams = {\n machineId: string;\n sessionId: string;\n sseToken: string;\n};\n\nexport class SSEConnection implements Connection<EventSourceType> {\n type: TransportType = 'sse';\n private initParams: SSEInitParams | null = null;\n private sendQueue: any[] = [];\n private sendPromise: Promise<void> | null;\n private closeFired: boolean = false;\n private sseInitTimeout: ReturnType<typeof setTimeout> | undefined = undefined;\n private ES: EventSourceConstructor;\n conn: EventSourceType;\n url: string;\n id: string;\n onopen: (event: OpenEvent<EventSourceType>) => void;\n onmessage: (event: MsgEvent<EventSourceType>) => void;\n onclose: (event: CloseEvent<EventSourceType>) => void;\n onerror: (event: ErrorEvent<EventSourceType>) => void;\n\n constructor(ES: EventSourceConstructor, url: string) {\n this.id = `${this.type}_${_connId++}`;\n this.url = url;\n this.ES = ES;\n this.conn = new ES(url);\n\n // Close the connection if we didn't get an init within 10 seconds\n this.sseInitTimeout = setTimeout(() => {\n if (!this.initParams) {\n this.handleError();\n }\n }, 10000);\n\n this.conn.onmessage = (e) => {\n const message = JSON.parse(e.data);\n if (Array.isArray(message)) {\n for (const msg of message) {\n this.handleMessage(msg);\n }\n } else {\n this.handleMessage(message);\n }\n };\n\n this.conn.onerror = (e) => {\n this.handleError();\n };\n }\n\n private handleMessage(msg: MessageData) {\n if (msg.op === 'sse-init') {\n this.initParams = {\n machineId: msg['machine-id'],\n sessionId: msg['session-id'],\n sseToken: msg['sse-token'],\n };\n if (this.onopen) {\n this.onopen({ target: this });\n }\n clearTimeout(this.sseInitTimeout);\n return;\n }\n if (this.onmessage) {\n this.onmessage({\n target: this,\n message: msg,\n });\n }\n }\n\n // Runs the onerror and closes the connection\n private handleError() {\n try {\n if (this.onerror) {\n this.onerror({ target: this });\n }\n } finally {\n this.handleClose();\n }\n }\n\n private handleClose() {\n this.conn.close();\n if (this.onclose && !this.closeFired) {\n this.closeFired = true;\n this.onclose({ target: this });\n }\n }\n\n private async postMessages(messages: any[]): Promise<void> {\n try {\n const resp = await fetch(this.url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n machine_id: this.initParams?.machineId,\n session_id: this.initParams?.sessionId,\n sse_token: this.initParams?.sseToken,\n messages,\n }),\n });\n if (!resp.ok) {\n this.handleError();\n }\n } catch (e) {\n this.handleError();\n }\n }\n\n private async flushQueue() {\n if (this.sendPromise || !this.sendQueue.length) return;\n\n const messages = this.sendQueue;\n this.sendQueue = [];\n const sendPromise = this.postMessages(messages);\n this.sendPromise = sendPromise;\n sendPromise.then(() => {\n this.sendPromise = null;\n this.flushQueue();\n });\n }\n\n send(msg: SendMessageData) {\n if (!this.isOpen() || !this.initParams) {\n if (this.isConnecting()) {\n throw new Error(\n `Failed to execute 'send' on 'EventSource': Still in CONNECTING state.`,\n );\n }\n if (this.conn.readyState === this.ES.CLOSED) {\n throw new Error(`EventSource is already in CLOSING or CLOSED state.`);\n }\n throw new Error(`EventSource is in invalid state.`);\n }\n this.sendQueue.push(msg);\n this.flushQueue();\n }\n\n isOpen(): boolean {\n return this.conn.readyState === this.ES.OPEN && this.initParams !== null;\n }\n\n isConnecting(): boolean {\n return (\n this.conn.readyState === this.ES.CONNECTING ||\n (this.conn.readyState === this.ES.OPEN && this.initParams === null)\n );\n }\n\n close() {\n this.handleClose();\n }\n}\n"]}
|
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
export namespace STATUS {
|
|
2
|
-
let CONNECTING: string;
|
|
3
|
-
let OPENED: string;
|
|
4
|
-
let AUTHENTICATED: string;
|
|
5
|
-
let CLOSED: string;
|
|
6
|
-
let ERRORED: string;
|
|
7
|
-
}
|
|
8
1
|
/**
|
|
9
2
|
* @template {import('./presence.ts').RoomSchemaShape} [RoomSchema = {}]
|
|
10
3
|
*/
|
|
@@ -21,8 +14,6 @@ export default class Reactor<RoomSchema extends import("./presence.ts").RoomSche
|
|
|
21
14
|
kv: PersistedObject<any, any, any>;
|
|
22
15
|
/** @type {SyncTable} */
|
|
23
16
|
_syncTable: SyncTable;
|
|
24
|
-
/** @type {InstantStream} */
|
|
25
|
-
_instantStream: InstantStream;
|
|
26
17
|
/** @type {Record<string, Array<{ q: any, cb: (data: any) => any }>>} */
|
|
27
18
|
queryCbs: Record<string, Array<{
|
|
28
19
|
q: any;
|
|
@@ -125,8 +116,6 @@ export default class Reactor<RoomSchema extends import("./presence.ts").RoomSche
|
|
|
125
116
|
}, enableCardinalityInference: boolean): void;
|
|
126
117
|
_handleReceive(connId: any, msg: any): void;
|
|
127
118
|
_sessionId: any;
|
|
128
|
-
createWriteStream(opts: any): import("./Stream.ts").InstantWritableStream<string>;
|
|
129
|
-
createReadStream(opts: any): ReadableStream<string>;
|
|
130
119
|
_pendingMutations(): any;
|
|
131
120
|
_updatePendingMutations(f: any): void;
|
|
132
121
|
/**
|
|
@@ -382,7 +371,6 @@ export type QuerySubInStorage = import("./reactorTypes.ts").QuerySubInStorage;
|
|
|
382
371
|
import * as s from './store.ts';
|
|
383
372
|
import { PersistedObject } from './utils/PersistedObject.ts';
|
|
384
373
|
import { SyncTable } from './SyncTable.ts';
|
|
385
|
-
import { InstantStream } from './Stream.ts';
|
|
386
374
|
import { Deferred } from './utils/Deferred.js';
|
|
387
375
|
import * as authAPI from './authAPI.ts';
|
|
388
376
|
import * as StorageApi from './StorageAPI.ts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Reactor.d.ts","sourceRoot":"","sources":["../../src/Reactor.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Reactor.d.ts","sourceRoot":"","sources":["../../src/Reactor.js"],"names":[],"mappings":"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"}
|
package/dist/commonjs/Reactor.js
CHANGED
|
@@ -36,7 +36,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.STATUS = void 0;
|
|
40
39
|
// @ts-check
|
|
41
40
|
const weakHash_ts_1 = __importDefault(require("./utils/weakHash.js"));
|
|
42
41
|
const instaql_ts_1 = __importDefault(require("./instaql.js"));
|
|
@@ -64,14 +63,13 @@ const fetch_ts_1 = require("./utils/fetch.js");
|
|
|
64
63
|
const uuid_1 = require("uuid");
|
|
65
64
|
const Connection_ts_1 = require("./Connection.js");
|
|
66
65
|
const SyncTable_ts_1 = require("./SyncTable.js");
|
|
67
|
-
const Stream_ts_1 = require("./Stream.js");
|
|
68
66
|
/** @typedef {import('./utils/log.ts').Logger} Logger */
|
|
69
67
|
/** @typedef {import('./Connection.ts').Connection} Connection */
|
|
70
68
|
/** @typedef {import('./Connection.ts').TransportType} TransportType */
|
|
71
69
|
/** @typedef {import('./Connection.ts').EventSourceConstructor} EventSourceConstructor */
|
|
72
70
|
/** @typedef {import('./reactorTypes.ts').QuerySub} QuerySub */
|
|
73
71
|
/** @typedef {import('./reactorTypes.ts').QuerySubInStorage} QuerySubInStorage */
|
|
74
|
-
|
|
72
|
+
const STATUS = {
|
|
75
73
|
CONNECTING: 'connecting',
|
|
76
74
|
OPENED: 'opened',
|
|
77
75
|
AUTHENTICATED: 'authenticated',
|
|
@@ -208,15 +206,13 @@ class Reactor {
|
|
|
208
206
|
attrs;
|
|
209
207
|
_isOnline = true;
|
|
210
208
|
_isShutdown = false;
|
|
211
|
-
status =
|
|
209
|
+
status = STATUS.CONNECTING;
|
|
212
210
|
/** @type {PersistedObject<string, QuerySub, QuerySubInStorage>} */
|
|
213
211
|
querySubs;
|
|
214
212
|
/** @type {PersistedObject} */
|
|
215
213
|
kv;
|
|
216
214
|
/** @type {SyncTable} */
|
|
217
215
|
_syncTable;
|
|
218
|
-
/** @type {InstantStream} */
|
|
219
|
-
_instantStream;
|
|
220
216
|
/** @type {Record<string, Array<{ q: any, cb: (data: any) => any }>>} */
|
|
221
217
|
queryCbs = {};
|
|
222
218
|
/** @type {Record<string, Array<{ q: any, eventId: string, dfd: Deferred }>>} */
|
|
@@ -308,12 +304,6 @@ class Reactor {
|
|
|
308
304
|
}, this._log, (triples) => {
|
|
309
305
|
return s.createStore(this.ensureAttrs(), triples, this.config.enableCardinalityInference, this.config.useDateObjects);
|
|
310
306
|
}, () => this.ensureAttrs());
|
|
311
|
-
this._instantStream = new Stream_ts_1.InstantStream({
|
|
312
|
-
WStream: this.config.WritableStream || WritableStream,
|
|
313
|
-
RStream: this.config.ReadableStream || ReadableStream,
|
|
314
|
-
trySend: this._trySendAuthed.bind(this),
|
|
315
|
-
log: this._log,
|
|
316
|
-
});
|
|
317
307
|
this._oauthCallbackResponse = this._oauthLoginInit();
|
|
318
308
|
// kick off a request to cache it
|
|
319
309
|
this.getCurrentUser().then((userInfo) => {
|
|
@@ -339,8 +329,8 @@ class Reactor {
|
|
|
339
329
|
this._startSocket();
|
|
340
330
|
}
|
|
341
331
|
else {
|
|
342
|
-
this._log.info('Changing status from', this.status, 'to',
|
|
343
|
-
this._setStatus(
|
|
332
|
+
this._log.info('Changing status from', this.status, 'to', STATUS.CLOSED);
|
|
333
|
+
this._setStatus(STATUS.CLOSED);
|
|
344
334
|
}
|
|
345
335
|
});
|
|
346
336
|
});
|
|
@@ -462,7 +452,6 @@ class Reactor {
|
|
|
462
452
|
this.status = status;
|
|
463
453
|
this._errorMessage = err;
|
|
464
454
|
this.notifyConnectionStatusSubs(status);
|
|
465
|
-
this._instantStream.onConnectionStatusChange(status);
|
|
466
455
|
}
|
|
467
456
|
_onMergeKv = (key, storageV, inMemoryV) => {
|
|
468
457
|
switch (key) {
|
|
@@ -540,7 +529,7 @@ class Reactor {
|
|
|
540
529
|
}
|
|
541
530
|
switch (msg.op) {
|
|
542
531
|
case 'init-ok': {
|
|
543
|
-
this._setStatus(
|
|
532
|
+
this._setStatus(STATUS.AUTHENTICATED);
|
|
544
533
|
this._reconnectTimeoutMs = 0;
|
|
545
534
|
this._setAttrs(msg.attrs);
|
|
546
535
|
this._flushPendingMessages();
|
|
@@ -604,22 +593,6 @@ class Reactor {
|
|
|
604
593
|
this._syncTable.onSyncUpdateTriples(msg);
|
|
605
594
|
break;
|
|
606
595
|
}
|
|
607
|
-
case 'start-stream-ok': {
|
|
608
|
-
this._instantStream.onStartStreamOk(msg);
|
|
609
|
-
break;
|
|
610
|
-
}
|
|
611
|
-
case 'stream-flushed': {
|
|
612
|
-
this._instantStream.onStreamFlushed(msg);
|
|
613
|
-
break;
|
|
614
|
-
}
|
|
615
|
-
case 'append-failed': {
|
|
616
|
-
this._instantStream.onAppendFailed(msg);
|
|
617
|
-
break;
|
|
618
|
-
}
|
|
619
|
-
case 'stream-append': {
|
|
620
|
-
this._instantStream.onStreamAppend(msg);
|
|
621
|
-
break;
|
|
622
|
-
}
|
|
623
596
|
case 'refresh-ok': {
|
|
624
597
|
const { computations, attrs } = msg;
|
|
625
598
|
const processedTxId = msg['processed-tx-id'];
|
|
@@ -764,12 +737,6 @@ class Reactor {
|
|
|
764
737
|
break;
|
|
765
738
|
}
|
|
766
739
|
}
|
|
767
|
-
createWriteStream(opts) {
|
|
768
|
-
return this._instantStream.createWriteStream(opts);
|
|
769
|
-
}
|
|
770
|
-
createReadStream(opts) {
|
|
771
|
-
return this._instantStream.createReadStream(opts);
|
|
772
|
-
}
|
|
773
740
|
_pendingMutations() {
|
|
774
741
|
return this.kv.currentValue.pendingMutations ?? new Map();
|
|
775
742
|
}
|
|
@@ -836,26 +803,17 @@ class Reactor {
|
|
|
836
803
|
return;
|
|
837
804
|
}
|
|
838
805
|
// We failed to init
|
|
839
|
-
this._setStatus(
|
|
806
|
+
this._setStatus(STATUS.ERRORED, errorMessage);
|
|
840
807
|
this.notifyAll();
|
|
841
808
|
return;
|
|
842
809
|
}
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
return;
|
|
851
|
-
}
|
|
852
|
-
case 'start-stream':
|
|
853
|
-
case 'append-stream':
|
|
854
|
-
case 'subscribe-stream':
|
|
855
|
-
case 'unsubscribe-stream': {
|
|
856
|
-
this._instantStream.onRecieveError(msg);
|
|
857
|
-
return;
|
|
858
|
-
}
|
|
810
|
+
if (msg['original-event']?.op === 'resync-table') {
|
|
811
|
+
this._syncTable.onResyncError(msg);
|
|
812
|
+
return;
|
|
813
|
+
}
|
|
814
|
+
if (msg['original-event']?.op === 'start-sync') {
|
|
815
|
+
this._syncTable.onStartSyncError(msg);
|
|
816
|
+
return;
|
|
859
817
|
}
|
|
860
818
|
// We've caught some error which has no corresponding listener.
|
|
861
819
|
// Let's console.error to let the user know.
|
|
@@ -1251,7 +1209,7 @@ class Reactor {
|
|
|
1251
1209
|
});
|
|
1252
1210
|
return;
|
|
1253
1211
|
}
|
|
1254
|
-
if (this.status !==
|
|
1212
|
+
if (this.status !== STATUS.AUTHENTICATED) {
|
|
1255
1213
|
this._finishTransaction('enqueued', eventId);
|
|
1256
1214
|
return;
|
|
1257
1215
|
}
|
|
@@ -1347,7 +1305,7 @@ class Reactor {
|
|
|
1347
1305
|
});
|
|
1348
1306
|
}
|
|
1349
1307
|
_trySendAuthed(...args) {
|
|
1350
|
-
if (this.status !==
|
|
1308
|
+
if (this.status !== STATUS.AUTHENTICATED) {
|
|
1351
1309
|
return;
|
|
1352
1310
|
}
|
|
1353
1311
|
this._trySend(...args);
|
|
@@ -1357,10 +1315,7 @@ class Reactor {
|
|
|
1357
1315
|
return;
|
|
1358
1316
|
}
|
|
1359
1317
|
if (!ignoreLogging[msg.op]) {
|
|
1360
|
-
this._log.info('[send]', this._transport.id, msg.op,
|
|
1361
|
-
'client-event-id': eventId,
|
|
1362
|
-
...msg,
|
|
1363
|
-
});
|
|
1318
|
+
this._log.info('[send]', this._transport.id, msg.op, msg);
|
|
1364
1319
|
}
|
|
1365
1320
|
switch (msg.op) {
|
|
1366
1321
|
case 'transact': {
|
|
@@ -1381,7 +1336,7 @@ class Reactor {
|
|
|
1381
1336
|
return;
|
|
1382
1337
|
}
|
|
1383
1338
|
this._log.info('[socket][open]', this._transport.id);
|
|
1384
|
-
this._setStatus(
|
|
1339
|
+
this._setStatus(STATUS.OPENED);
|
|
1385
1340
|
this.getCurrentUser()
|
|
1386
1341
|
.then((resp) => {
|
|
1387
1342
|
this._trySend((0, id_ts_1.default)(), {
|
|
@@ -1451,7 +1406,7 @@ class Reactor {
|
|
|
1451
1406
|
this._log.info('[socket][close]', targetTransport.id, 'skip; this is no longer the current transport');
|
|
1452
1407
|
return;
|
|
1453
1408
|
}
|
|
1454
|
-
this._setStatus(
|
|
1409
|
+
this._setStatus(STATUS.CLOSED);
|
|
1455
1410
|
for (const room of Object.values(this._rooms)) {
|
|
1456
1411
|
room.isConnected = false;
|
|
1457
1412
|
}
|