miakapi 3.0.31 → 4.0.0-alpha.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 +15 -0
- package/README.md +372 -0
- package/contracts/miakapp-v3.json +6 -0
- package/dist/access-token-provider.d.ts +8 -0
- package/dist/access-token-provider.d.ts.map +1 -0
- package/dist/access-token-provider.js +167 -0
- package/dist/access-token-provider.js.map +1 -0
- package/dist/api.d.ts +224 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +47 -0
- package/dist/api.js.map +1 -0
- package/dist/browser-api.d.ts +113 -0
- package/dist/browser-api.d.ts.map +1 -0
- package/dist/browser-api.js +2 -0
- package/dist/browser-api.js.map +1 -0
- package/dist/browser-client.d.ts +3 -0
- package/dist/browser-client.d.ts.map +1 -0
- package/dist/browser-client.js +678 -0
- package/dist/browser-client.js.map +1 -0
- package/dist/browser-relay-credential-provider.d.ts +3 -0
- package/dist/browser-relay-credential-provider.d.ts.map +1 -0
- package/dist/browser-relay-credential-provider.js +243 -0
- package/dist/browser-relay-credential-provider.js.map +1 -0
- package/dist/browser.d.ts +4 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +4 -0
- package/dist/browser.js.map +1 -0
- package/dist/coordinator.d.ts +3 -0
- package/dist/coordinator.d.ts.map +1 -0
- package/dist/coordinator.js +547 -0
- package/dist/coordinator.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/browser-errors.d.ts +31 -0
- package/dist/internal/browser-errors.d.ts.map +1 -0
- package/dist/internal/browser-errors.js +69 -0
- package/dist/internal/browser-errors.js.map +1 -0
- package/dist/internal/browser-socket.d.ts +8 -0
- package/dist/internal/browser-socket.d.ts.map +1 -0
- package/dist/internal/browser-socket.js +204 -0
- package/dist/internal/browser-socket.js.map +1 -0
- package/dist/internal/calls.d.ts +33 -0
- package/dist/internal/calls.d.ts.map +1 -0
- package/dist/internal/calls.js +525 -0
- package/dist/internal/calls.js.map +1 -0
- package/dist/internal/control-plane-response.d.ts +10 -0
- package/dist/internal/control-plane-response.d.ts.map +1 -0
- package/dist/internal/control-plane-response.js +283 -0
- package/dist/internal/control-plane-response.js.map +1 -0
- package/dist/internal/declarations.d.ts +88 -0
- package/dist/internal/declarations.d.ts.map +1 -0
- package/dist/internal/declarations.js +561 -0
- package/dist/internal/declarations.js.map +1 -0
- package/dist/internal/errors.d.ts +31 -0
- package/dist/internal/errors.d.ts.map +1 -0
- package/dist/internal/errors.js +72 -0
- package/dist/internal/errors.js.map +1 -0
- package/dist/internal/events.d.ts +27 -0
- package/dist/internal/events.d.ts.map +1 -0
- package/dist/internal/events.js +207 -0
- package/dist/internal/events.js.map +1 -0
- package/dist/internal/presence.d.ts +15 -0
- package/dist/internal/presence.d.ts.map +1 -0
- package/dist/internal/presence.js +99 -0
- package/dist/internal/presence.js.map +1 -0
- package/dist/internal/resources.d.ts +33 -0
- package/dist/internal/resources.d.ts.map +1 -0
- package/dist/internal/resources.js +136 -0
- package/dist/internal/resources.js.map +1 -0
- package/dist/internal/runtime.d.ts +34 -0
- package/dist/internal/runtime.d.ts.map +1 -0
- package/dist/internal/runtime.js +17 -0
- package/dist/internal/runtime.js.map +1 -0
- package/dist/internal/session.d.ts +33 -0
- package/dist/internal/session.d.ts.map +1 -0
- package/dist/internal/session.js +199 -0
- package/dist/internal/session.js.map +1 -0
- package/dist/internal/socket.d.ts +6 -0
- package/dist/internal/socket.d.ts.map +1 -0
- package/dist/internal/socket.js +176 -0
- package/dist/internal/socket.js.map +1 -0
- package/dist/internal/state.d.ts +30 -0
- package/dist/internal/state.d.ts.map +1 -0
- package/dist/internal/state.js +188 -0
- package/dist/internal/state.js.map +1 -0
- package/dist/internal/user-calls.d.ts +27 -0
- package/dist/internal/user-calls.d.ts.map +1 -0
- package/dist/internal/user-calls.js +325 -0
- package/dist/internal/user-calls.js.map +1 -0
- package/dist/internal/user-session.d.ts +36 -0
- package/dist/internal/user-session.d.ts.map +1 -0
- package/dist/internal/user-session.js +250 -0
- package/dist/internal/user-session.js.map +1 -0
- package/dist/internal/user-state.d.ts +21 -0
- package/dist/internal/user-state.d.ts.map +1 -0
- package/dist/internal/user-state.js +240 -0
- package/dist/internal/user-state.js.map +1 -0
- package/dist/internal/validation.d.ts +32 -0
- package/dist/internal/validation.d.ts.map +1 -0
- package/dist/internal/validation.js +553 -0
- package/dist/internal/validation.js.map +1 -0
- package/dist/protocol/codec.d.ts +75 -0
- package/dist/protocol/codec.d.ts.map +1 -0
- package/dist/protocol/codec.js +1091 -0
- package/dist/protocol/codec.js.map +1 -0
- package/dist/protocol/session.d.ts +14 -0
- package/dist/protocol/session.d.ts.map +1 -0
- package/dist/protocol/session.js +125 -0
- package/dist/protocol/session.js.map +1 -0
- package/dist/protocol/user-session.d.ts +14 -0
- package/dist/protocol/user-session.d.ts.map +1 -0
- package/dist/protocol/user-session.js +116 -0
- package/dist/protocol/user-session.js.map +1 -0
- package/package.json +58 -9
- package/.eslintrc.js +0 -16
- package/.gitattributes +0 -2
- package/main.js +0 -305
- package/miakode.js +0 -56
- package/screenshots/bigGrid.jpg +0 -0
- package/screenshots/formExample.jpg +0 -0
- package/screenshots/properties&table.jpg +0 -0
- package/test.js +0 -45
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
const MAXIMUM_RESPONSE_BYTES = 65_536;
|
|
2
|
+
const MAXIMUM_JSON_DEPTH = 8;
|
|
3
|
+
const MAXIMUM_JSON_VALUES = 128;
|
|
4
|
+
const MAXIMUM_JSON_STRING_BYTES = 16_384;
|
|
5
|
+
const MAXIMUM_JSON_OBJECT_ENTRIES = 32;
|
|
6
|
+
const MAXIMUM_JSON_ARRAY_ITEMS = 32;
|
|
7
|
+
const CONTROL_CHARACTER = /\p{Cc}/u;
|
|
8
|
+
const UTF8 = new TextEncoder();
|
|
9
|
+
function invalidResponse() {
|
|
10
|
+
throw new TypeError('Invalid control-plane response');
|
|
11
|
+
}
|
|
12
|
+
export function cancelResponseBody(response) {
|
|
13
|
+
try {
|
|
14
|
+
const cancellation = response?.body?.cancel();
|
|
15
|
+
void cancellation?.catch(() => undefined);
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
// Rejection still wins even if a custom Fetch implementation exposes a hostile body.
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function hasUnpairedSurrogate(value) {
|
|
22
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
23
|
+
const unit = value.charCodeAt(index);
|
|
24
|
+
if (unit >= 0xd800 && unit <= 0xdbff) {
|
|
25
|
+
const following = value.charCodeAt(index + 1);
|
|
26
|
+
if (index + 1 >= value.length || following < 0xdc00 || following > 0xdfff)
|
|
27
|
+
return true;
|
|
28
|
+
index += 1;
|
|
29
|
+
}
|
|
30
|
+
else if (unit >= 0xdc00 && unit <= 0xdfff) {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
export function exactResponseRecord(value, required, optional) {
|
|
37
|
+
if (value === null || Array.isArray(value) || typeof value !== 'object')
|
|
38
|
+
return invalidResponse();
|
|
39
|
+
const keys = Object.keys(value);
|
|
40
|
+
const allowed = new Set([...required, ...optional]);
|
|
41
|
+
if (Reflect.ownKeys(value).length !== keys.length
|
|
42
|
+
|| required.some((key) => !Object.hasOwn(value, key))
|
|
43
|
+
|| keys.some((key) => !allowed.has(key)))
|
|
44
|
+
return invalidResponse();
|
|
45
|
+
return value;
|
|
46
|
+
}
|
|
47
|
+
export function boundedResponseString(value, minimum, maximum) {
|
|
48
|
+
if (typeof value !== 'string'
|
|
49
|
+
|| hasUnpairedSurrogate(value)
|
|
50
|
+
|| CONTROL_CHARACTER.test(value))
|
|
51
|
+
return invalidResponse();
|
|
52
|
+
const bytes = UTF8.encode(value).byteLength;
|
|
53
|
+
if (bytes < minimum || bytes > maximum)
|
|
54
|
+
return invalidResponse();
|
|
55
|
+
return value;
|
|
56
|
+
}
|
|
57
|
+
export function canonicalRelayUrl(value) {
|
|
58
|
+
const relayUrl = boundedResponseString(value, 1, 2_048);
|
|
59
|
+
let parsed;
|
|
60
|
+
try {
|
|
61
|
+
parsed = new URL(relayUrl);
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return invalidResponse();
|
|
65
|
+
}
|
|
66
|
+
if (parsed.protocol !== 'wss:'
|
|
67
|
+
|| parsed.hostname === ''
|
|
68
|
+
|| parsed.username !== ''
|
|
69
|
+
|| parsed.password !== ''
|
|
70
|
+
|| parsed.search !== ''
|
|
71
|
+
|| parsed.hash !== ''
|
|
72
|
+
|| !parsed.pathname.endsWith('/ws')
|
|
73
|
+
|| parsed.href !== relayUrl)
|
|
74
|
+
return invalidResponse();
|
|
75
|
+
return relayUrl;
|
|
76
|
+
}
|
|
77
|
+
export function parseResponseJson(input) {
|
|
78
|
+
let text;
|
|
79
|
+
try {
|
|
80
|
+
text = new TextDecoder('utf-8', { fatal: true }).decode(input);
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return invalidResponse();
|
|
84
|
+
}
|
|
85
|
+
let index = 0;
|
|
86
|
+
let values = 0;
|
|
87
|
+
const skipWhitespace = () => {
|
|
88
|
+
while (index < text.length) {
|
|
89
|
+
const code = text.charCodeAt(index);
|
|
90
|
+
if (code !== 0x20 && code !== 0x09 && code !== 0x0a && code !== 0x0d)
|
|
91
|
+
break;
|
|
92
|
+
index += 1;
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
const parseString = () => {
|
|
96
|
+
if (text[index] !== '"')
|
|
97
|
+
return invalidResponse();
|
|
98
|
+
const start = index;
|
|
99
|
+
index += 1;
|
|
100
|
+
let escaped = false;
|
|
101
|
+
while (index < text.length) {
|
|
102
|
+
const character = text[index];
|
|
103
|
+
if (!escaped && character === '"') {
|
|
104
|
+
index += 1;
|
|
105
|
+
let decoded;
|
|
106
|
+
try {
|
|
107
|
+
decoded = JSON.parse(text.slice(start, index));
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
return invalidResponse();
|
|
111
|
+
}
|
|
112
|
+
if (typeof decoded !== 'string'
|
|
113
|
+
|| hasUnpairedSurrogate(decoded)
|
|
114
|
+
|| UTF8.encode(decoded).byteLength > MAXIMUM_JSON_STRING_BYTES) {
|
|
115
|
+
return invalidResponse();
|
|
116
|
+
}
|
|
117
|
+
return decoded;
|
|
118
|
+
}
|
|
119
|
+
if (!escaped && character === '\\')
|
|
120
|
+
escaped = true;
|
|
121
|
+
else
|
|
122
|
+
escaped = false;
|
|
123
|
+
index += 1;
|
|
124
|
+
}
|
|
125
|
+
return invalidResponse();
|
|
126
|
+
};
|
|
127
|
+
const parseNumber = () => {
|
|
128
|
+
const match = /^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?/.exec(text.slice(index));
|
|
129
|
+
if (match === null)
|
|
130
|
+
return invalidResponse();
|
|
131
|
+
index += match[0].length;
|
|
132
|
+
const number = Number(match[0]);
|
|
133
|
+
if (!Number.isFinite(number))
|
|
134
|
+
return invalidResponse();
|
|
135
|
+
return number;
|
|
136
|
+
};
|
|
137
|
+
const parseValue = (depth) => {
|
|
138
|
+
if (depth > MAXIMUM_JSON_DEPTH)
|
|
139
|
+
return invalidResponse();
|
|
140
|
+
values += 1;
|
|
141
|
+
if (values > MAXIMUM_JSON_VALUES)
|
|
142
|
+
return invalidResponse();
|
|
143
|
+
skipWhitespace();
|
|
144
|
+
const character = text[index];
|
|
145
|
+
if (character === '"')
|
|
146
|
+
return parseString();
|
|
147
|
+
if (character === '-' || (character !== undefined && character >= '0' && character <= '9')) {
|
|
148
|
+
return parseNumber();
|
|
149
|
+
}
|
|
150
|
+
if (text.startsWith('true', index)) {
|
|
151
|
+
index += 4;
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
if (text.startsWith('false', index)) {
|
|
155
|
+
index += 5;
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
if (text.startsWith('null', index)) {
|
|
159
|
+
index += 4;
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
if (character === '[') {
|
|
163
|
+
index += 1;
|
|
164
|
+
const result = [];
|
|
165
|
+
skipWhitespace();
|
|
166
|
+
if (text[index] === ']') {
|
|
167
|
+
index += 1;
|
|
168
|
+
return result;
|
|
169
|
+
}
|
|
170
|
+
while (true) {
|
|
171
|
+
if (result.length >= MAXIMUM_JSON_ARRAY_ITEMS)
|
|
172
|
+
return invalidResponse();
|
|
173
|
+
result.push(parseValue(depth + 1));
|
|
174
|
+
skipWhitespace();
|
|
175
|
+
if (text[index] === ']') {
|
|
176
|
+
index += 1;
|
|
177
|
+
return result;
|
|
178
|
+
}
|
|
179
|
+
if (text[index] !== ',')
|
|
180
|
+
return invalidResponse();
|
|
181
|
+
index += 1;
|
|
182
|
+
skipWhitespace();
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
if (character === '{') {
|
|
186
|
+
index += 1;
|
|
187
|
+
const result = Object.create(null);
|
|
188
|
+
const keys = new Set();
|
|
189
|
+
skipWhitespace();
|
|
190
|
+
if (text[index] === '}') {
|
|
191
|
+
index += 1;
|
|
192
|
+
return result;
|
|
193
|
+
}
|
|
194
|
+
while (true) {
|
|
195
|
+
if (keys.size >= MAXIMUM_JSON_OBJECT_ENTRIES)
|
|
196
|
+
return invalidResponse();
|
|
197
|
+
const key = parseString();
|
|
198
|
+
if (keys.has(key) || key === '__proto__' || key === 'prototype' || key === 'constructor') {
|
|
199
|
+
return invalidResponse();
|
|
200
|
+
}
|
|
201
|
+
keys.add(key);
|
|
202
|
+
skipWhitespace();
|
|
203
|
+
if (text[index] !== ':')
|
|
204
|
+
return invalidResponse();
|
|
205
|
+
index += 1;
|
|
206
|
+
result[key] = parseValue(depth + 1);
|
|
207
|
+
skipWhitespace();
|
|
208
|
+
if (text[index] === '}') {
|
|
209
|
+
index += 1;
|
|
210
|
+
return result;
|
|
211
|
+
}
|
|
212
|
+
if (text[index] !== ',')
|
|
213
|
+
return invalidResponse();
|
|
214
|
+
index += 1;
|
|
215
|
+
skipWhitespace();
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return invalidResponse();
|
|
219
|
+
};
|
|
220
|
+
skipWhitespace();
|
|
221
|
+
const parsed = parseValue(1);
|
|
222
|
+
skipWhitespace();
|
|
223
|
+
if (index !== text.length)
|
|
224
|
+
return invalidResponse();
|
|
225
|
+
return parsed;
|
|
226
|
+
}
|
|
227
|
+
export async function boundedResponseBody(response, signal) {
|
|
228
|
+
const contentLength = response.headers.get('content-length');
|
|
229
|
+
if (contentLength !== null
|
|
230
|
+
&& (!/^(?:0|[1-9][0-9]*)$/.test(contentLength)
|
|
231
|
+
|| Number(contentLength) > MAXIMUM_RESPONSE_BYTES)) {
|
|
232
|
+
cancelResponseBody(response);
|
|
233
|
+
return invalidResponse();
|
|
234
|
+
}
|
|
235
|
+
if (response.body === null)
|
|
236
|
+
return invalidResponse();
|
|
237
|
+
const reader = response.body.getReader();
|
|
238
|
+
const chunks = [];
|
|
239
|
+
let size = 0;
|
|
240
|
+
const cancelReader = () => {
|
|
241
|
+
try {
|
|
242
|
+
void reader.cancel().catch(() => undefined);
|
|
243
|
+
}
|
|
244
|
+
catch {
|
|
245
|
+
// The caller's validation or cancellation result remains authoritative.
|
|
246
|
+
}
|
|
247
|
+
};
|
|
248
|
+
if (signal !== undefined) {
|
|
249
|
+
signal.addEventListener('abort', cancelReader, { once: true });
|
|
250
|
+
if (signal.aborted)
|
|
251
|
+
cancelReader();
|
|
252
|
+
}
|
|
253
|
+
try {
|
|
254
|
+
while (true) {
|
|
255
|
+
const item = await reader.read();
|
|
256
|
+
if (item.done)
|
|
257
|
+
break;
|
|
258
|
+
size += item.value.byteLength;
|
|
259
|
+
if (size > MAXIMUM_RESPONSE_BYTES) {
|
|
260
|
+
cancelReader();
|
|
261
|
+
return invalidResponse();
|
|
262
|
+
}
|
|
263
|
+
chunks.push(item.value);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
catch {
|
|
267
|
+
return invalidResponse();
|
|
268
|
+
}
|
|
269
|
+
finally {
|
|
270
|
+
signal?.removeEventListener('abort', cancelReader);
|
|
271
|
+
reader.releaseLock();
|
|
272
|
+
}
|
|
273
|
+
if (size === 0)
|
|
274
|
+
return invalidResponse();
|
|
275
|
+
const body = new Uint8Array(size);
|
|
276
|
+
let offset = 0;
|
|
277
|
+
for (const chunk of chunks) {
|
|
278
|
+
body.set(chunk, offset);
|
|
279
|
+
offset += chunk.byteLength;
|
|
280
|
+
}
|
|
281
|
+
return body;
|
|
282
|
+
}
|
|
283
|
+
//# sourceMappingURL=control-plane-response.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control-plane-response.js","sourceRoot":"","sources":["../../src/internal/control-plane-response.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import type { CoordinatorAccess, CoordinatorConfiguration, DeclarationReceipt, EventDeclaration, FunctionHandler, ProtocolValue, StateMutation, UserEventAccess, UserStateAccess } from '../api.js';
|
|
2
|
+
import { type Frame } from '../protocol/codec.js';
|
|
3
|
+
import { type CoordinatorError } from './errors.js';
|
|
4
|
+
import type { RelaySession } from './session.js';
|
|
5
|
+
export type DeclarationDomain = 'state' | 'state_access' | 'events' | 'event_access' | 'functions';
|
|
6
|
+
export declare const DECLARATION_DOMAINS: readonly DeclarationDomain[];
|
|
7
|
+
interface DeclarationRevisions {
|
|
8
|
+
state: number;
|
|
9
|
+
state_access: number;
|
|
10
|
+
events: number;
|
|
11
|
+
event_access: number;
|
|
12
|
+
functions: number;
|
|
13
|
+
}
|
|
14
|
+
export interface DeclarationSnapshot {
|
|
15
|
+
state: Readonly<Record<string, ProtocolValue>>;
|
|
16
|
+
stateAccess: readonly UserStateAccess[];
|
|
17
|
+
events: readonly EventDeclaration[];
|
|
18
|
+
eventAccess: readonly UserEventAccess[];
|
|
19
|
+
functions: Readonly<Record<string, FunctionHandler>>;
|
|
20
|
+
revisions: DeclarationRevisions;
|
|
21
|
+
}
|
|
22
|
+
export interface ActiveDeclarations {
|
|
23
|
+
readonly snapshot: DeclarationSnapshot;
|
|
24
|
+
readonly receipt: DeclarationReceipt;
|
|
25
|
+
readonly stateIds: ReadonlyMap<string, number>;
|
|
26
|
+
readonly topicIds: ReadonlyMap<string, number>;
|
|
27
|
+
readonly functionIds: ReadonlyMap<string, number>;
|
|
28
|
+
}
|
|
29
|
+
export interface DeclarationHost {
|
|
30
|
+
nextRequestId(): number;
|
|
31
|
+
currentSession(): RelaySession | undefined;
|
|
32
|
+
synchronizing(): void;
|
|
33
|
+
activeDeclarationsChanged(active: ActiveDeclarations): void;
|
|
34
|
+
declarationsReady(receipt: DeclarationReceipt): void;
|
|
35
|
+
declarationFailure(failure: CoordinatorError, hasActiveConfiguration: boolean, hasQueuedSnapshot: boolean): void;
|
|
36
|
+
transportFailure(error: unknown): void;
|
|
37
|
+
/**
|
|
38
|
+
* Activation staged the declared value for paths whose acknowledged state is
|
|
39
|
+
* a deletion, which `STATE_SYNC` cannot express; the host reapplies them.
|
|
40
|
+
*/
|
|
41
|
+
restoreDeletions(session: RelaySession, active: ActiveDeclarations, paths: readonly string[]): void;
|
|
42
|
+
}
|
|
43
|
+
export declare class DeclarationManager {
|
|
44
|
+
#private;
|
|
45
|
+
constructor(host: DeclarationHost);
|
|
46
|
+
get desired(): DeclarationSnapshot;
|
|
47
|
+
get active(): ActiveDeclarations | undefined;
|
|
48
|
+
configure(configuration: CoordinatorConfiguration): void;
|
|
49
|
+
declareState(state: Readonly<Record<string, ProtocolValue>>, signal?: AbortSignal): Promise<DeclarationReceipt>;
|
|
50
|
+
declareStateAccess(stateAccess: readonly UserStateAccess[], signal?: AbortSignal): Promise<DeclarationReceipt>;
|
|
51
|
+
declareEvents(events: readonly EventDeclaration[], signal?: AbortSignal): Promise<DeclarationReceipt>;
|
|
52
|
+
declareEventAccess(eventAccess: readonly UserEventAccess[], signal?: AbortSignal): Promise<DeclarationReceipt>;
|
|
53
|
+
declareFunctions(functions: Readonly<Record<string, FunctionHandler>>, signal?: AbortSignal): Promise<DeclarationReceipt>;
|
|
54
|
+
synchronize(session: RelaySession): void;
|
|
55
|
+
/**
|
|
56
|
+
* Records a mutation batch the relay acknowledged with `STATE_SET_OK`.
|
|
57
|
+
*
|
|
58
|
+
* Every later re-declaration of the same state slice carries these values
|
|
59
|
+
* instead of the declared ones, because `STATE_SYNC` replaces the relay's
|
|
60
|
+
* values and an ACL, event or function change — or a reconnect — must not
|
|
61
|
+
* roll the home back. Only acknowledged batches are recorded: a rejected or
|
|
62
|
+
* unknown mutation never reaches this method, so it is never replayed.
|
|
63
|
+
*
|
|
64
|
+
* `sequence` is the order in which the batches were sent. The relay applies
|
|
65
|
+
* one connection's frames in order, so the later batch wins a path.
|
|
66
|
+
*/
|
|
67
|
+
recordConfirmed(mutations: readonly StateMutation[], revision: number, sequence: number): void;
|
|
68
|
+
/**
|
|
69
|
+
* The relay refused to reapply an acknowledged deletion, so it holds the
|
|
70
|
+
* declared value again. That value becomes the acknowledged one, unless a
|
|
71
|
+
* newer mutation of the path was acknowledged meanwhile.
|
|
72
|
+
*/
|
|
73
|
+
restorationRefused(paths: ReadonlyMap<string, number>): void;
|
|
74
|
+
/** The confirmed entry sequence of each path, for a restoration in flight. */
|
|
75
|
+
confirmedSequences(paths: readonly string[]): Map<string, number>;
|
|
76
|
+
handleFrame(frame: Frame): boolean;
|
|
77
|
+
handleError(requestId: number, code: number, retryable: boolean): boolean;
|
|
78
|
+
disconnected(): void;
|
|
79
|
+
stop(): void;
|
|
80
|
+
}
|
|
81
|
+
export declare class AccessManager implements CoordinatorAccess {
|
|
82
|
+
#private;
|
|
83
|
+
constructor(declarations: DeclarationManager);
|
|
84
|
+
declareState(entries: readonly UserStateAccess[], options?: import('../api.js').DeclarationOptions): Promise<DeclarationReceipt>;
|
|
85
|
+
declareEvents(entries: readonly UserEventAccess[], options?: import('../api.js').DeclarationOptions): Promise<DeclarationReceipt>;
|
|
86
|
+
}
|
|
87
|
+
export {};
|
|
88
|
+
//# sourceMappingURL=declarations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"declarations.d.ts","sourceRoot":"","sources":["../../src/internal/declarations.ts"],"names":[],"mappings":"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"}
|