@bridgething/client 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dispatch.generated.d.ts +6 -11
- package/dist/dispatch.generated.d.ts.map +1 -1
- package/dist/dispatch.generated.js +31 -4
- package/dist/dispatch.generated.js.map +1 -1
- package/dist/index.d.ts +0 -33
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -26
- package/dist/index.js.map +1 -1
- package/dist/settings.d.ts +0 -25
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +26 -31
- package/dist/settings.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -27,25 +27,12 @@ export declare class ClientError extends Error {
|
|
|
27
27
|
constructor(message: string, kind: 'not-running' | 'already-running' | 'request-timed-out' | 'shutdown' | 'send-failed' | 'not-connected', err?: unknown);
|
|
28
28
|
}
|
|
29
29
|
export type ClientOptions = {
|
|
30
|
-
/** WebSocket URL. Defaults to `ws://127.0.0.1:8891/` (the on-device daemon). */
|
|
31
30
|
url?: string;
|
|
32
31
|
logLevel?: LogVerbosity;
|
|
33
|
-
/** Auto-connect on construct. Defaults to `true`. */
|
|
34
32
|
autoConnect?: boolean;
|
|
35
|
-
/** Auto-reconnect on close with exponential backoff. Defaults to `true`. */
|
|
36
33
|
reconnect?: boolean;
|
|
37
|
-
/** Constructor for the underlying WebSocket. Defaults to the global `WebSocket` (browser/runtime). */
|
|
38
34
|
websocket?: typeof WebSocket;
|
|
39
35
|
};
|
|
40
|
-
/**
|
|
41
|
-
* Typed webapp-side facade over the on-device daemon's local WebSocket.
|
|
42
|
-
*
|
|
43
|
-
* Single-peer (the daemon); every method addresses it implicitly. Holds one `WebSocket`
|
|
44
|
-
* with auto-reconnect, JSON-encodes outbound `ClientToBridgeMsg`, decodes inbound
|
|
45
|
-
* `BridgeToClientMsg`, and tracks in-flight requests so callers can `await` a reply by id.
|
|
46
|
-
*
|
|
47
|
-
* Surface methods are code-generated and applied to the prototype at module-load via `applyDispatch()`.
|
|
48
|
-
*/
|
|
49
36
|
export interface BridgethingClient extends ClientSurfaces {
|
|
50
37
|
}
|
|
51
38
|
export declare class BridgethingClient {
|
|
@@ -65,29 +52,9 @@ export declare class BridgethingClient {
|
|
|
65
52
|
get connectionState(): ConnectionState;
|
|
66
53
|
on(listener: ClientListener): () => void;
|
|
67
54
|
off(listener: ClientListener): void;
|
|
68
|
-
/**
|
|
69
|
-
* Open the WebSocket if it is not already open. Idempotent when
|
|
70
|
-
* already connecting or open.
|
|
71
|
-
*/
|
|
72
55
|
connect(): void;
|
|
73
|
-
/**
|
|
74
|
-
* Close the WebSocket and cancel any reconnect timer. Pending requests
|
|
75
|
-
* are rejected with `'shutdown'`. After `close()`, `connect()` reopens.
|
|
76
|
-
*/
|
|
77
56
|
close(): void;
|
|
78
|
-
/**
|
|
79
|
-
* Encode and ship a fully-formed message. Caller picks `meta` (`command`, `event`, etc.).
|
|
80
|
-
* For request/response, prefer `request` or a typed surface query method.
|
|
81
|
-
*
|
|
82
|
-
* Sends before the socket opens are queued and flushed on `open`.
|
|
83
|
-
* After `close()`, queued sends reject with `'shutdown'`.
|
|
84
|
-
*/
|
|
85
57
|
send(message: ClientToBridgeMsg): Promise<void>;
|
|
86
|
-
/**
|
|
87
|
-
* Send a request and await the matching response by id. The wire id
|
|
88
|
-
* is generated here and matched against `BridgeToClientMsg.meta.data.requestId`
|
|
89
|
-
* on the way back.
|
|
90
|
-
*/
|
|
91
58
|
request(data: ClientToBridgeMsgData, timeoutMs?: number): Promise<BridgeToClientMsg>;
|
|
92
59
|
private openSocket;
|
|
93
60
|
private scheduleReconnect;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAkB,MAAM,kBAAkB,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAG3G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAM9D,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE3E,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjD,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;AAE1D,qBAAa,WAAY,SAAQ,KAAK;aAGlB,IAAI,EAChB,aAAa,GACb,iBAAiB,GACjB,mBAAmB,GACnB,UAAU,GACV,aAAa,GACb,eAAe;gBAPnB,OAAO,EAAE,MAAM,EACC,IAAI,EAChB,aAAa,GACb,iBAAiB,GACjB,mBAAmB,GACnB,UAAU,GACV,aAAa,GACb,eAAe,EACnB,GAAG,CAAC,EAAE,OAAO;CAMhB;AAcD,MAAM,MAAM,aAAa,GAAG;IAC1B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -51,20 +51,12 @@ export class BridgethingClient {
|
|
|
51
51
|
off(listener) {
|
|
52
52
|
this.listeners.delete(listener);
|
|
53
53
|
}
|
|
54
|
-
/**
|
|
55
|
-
* Open the WebSocket if it is not already open. Idempotent when
|
|
56
|
-
* already connecting or open.
|
|
57
|
-
*/
|
|
58
54
|
connect() {
|
|
59
55
|
if (this.state === 'open' || this.state === 'connecting')
|
|
60
56
|
return;
|
|
61
57
|
this.intentionalClose = false;
|
|
62
58
|
this.openSocket();
|
|
63
59
|
}
|
|
64
|
-
/**
|
|
65
|
-
* Close the WebSocket and cancel any reconnect timer. Pending requests
|
|
66
|
-
* are rejected with `'shutdown'`. After `close()`, `connect()` reopens.
|
|
67
|
-
*/
|
|
68
60
|
close() {
|
|
69
61
|
this.intentionalClose = true;
|
|
70
62
|
if (this.reconnectTimer) {
|
|
@@ -84,17 +76,8 @@ export class BridgethingClient {
|
|
|
84
76
|
while (this.sendQueue.length > 0)
|
|
85
77
|
this.sendQueue.shift().reject(shutdown);
|
|
86
78
|
}
|
|
87
|
-
/**
|
|
88
|
-
* Encode and ship a fully-formed message. Caller picks `meta` (`command`, `event`, etc.).
|
|
89
|
-
* For request/response, prefer `request` or a typed surface query method.
|
|
90
|
-
*
|
|
91
|
-
* Sends before the socket opens are queued and flushed on `open`.
|
|
92
|
-
* After `close()`, queued sends reject with `'shutdown'`.
|
|
93
|
-
*/
|
|
94
79
|
async send(message) {
|
|
95
80
|
this.logger.trace('send', message);
|
|
96
|
-
// msgpack encode returns a view into its own scratch buffer; copy it so a
|
|
97
|
-
// queued frame cannot be clobbered before it flushes
|
|
98
81
|
const frame = new Uint8Array(msgpackEncode(walkUuidFields(message, 'encode')));
|
|
99
82
|
if (this.socket && this.state === 'open') {
|
|
100
83
|
try {
|
|
@@ -112,11 +95,6 @@ export class BridgethingClient {
|
|
|
112
95
|
this.sendQueue.push({ frame, resolve, reject });
|
|
113
96
|
});
|
|
114
97
|
}
|
|
115
|
-
/**
|
|
116
|
-
* Send a request and await the matching response by id. The wire id
|
|
117
|
-
* is generated here and matched against `BridgeToClientMsg.meta.data.requestId`
|
|
118
|
-
* on the way back.
|
|
119
|
-
*/
|
|
120
98
|
request(data, timeoutMs = DEFAULT_REQUEST_TIMEOUT_MS) {
|
|
121
99
|
const id = newUuid();
|
|
122
100
|
const message = { id, meta: { kind: 'request' }, data };
|
|
@@ -180,13 +158,9 @@ export class BridgethingClient {
|
|
|
180
158
|
let msg;
|
|
181
159
|
try {
|
|
182
160
|
if (raw instanceof ArrayBuffer) {
|
|
183
|
-
// uuids cross msgpack as 16-byte bin, so they need the same walk the
|
|
184
|
-
// gateway transport does or nothing correlates to its request
|
|
185
161
|
msg = walkUuidFields(msgpackDecode(new Uint8Array(raw)), 'decode');
|
|
186
162
|
}
|
|
187
163
|
else if (typeof raw === 'string') {
|
|
188
|
-
// the daemon answers in the encoding it was last spoken to, so a text
|
|
189
|
-
// frame can still arrive before our first request lands
|
|
190
164
|
msg = JSON.parse(raw);
|
|
191
165
|
}
|
|
192
166
|
else {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEpF,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAExE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAIhD,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AAGxC,MAAM,WAAW,GAAG,sBAAsB,CAAC;AAC3C,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAC1C,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAavE,MAAM,OAAO,WAAY,SAAQ,KAAK;IAGlB;IAFlB,YACE,OAAe,EACC,IAMG,EACnB,GAAa;QAEb,KAAK,CAAC,OAAO,CAAC,CAAC;QATC,SAAI,GAAJ,IAAI,CAMD;QAInB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,gBAAgB,GAAG,CAAC,KAAK,EAAE,CAAC;IAC/G,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/settings.d.ts
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
import type { ConfigEntry, ConfigField, DocEntry } from '@bridgething/lib';
|
|
2
2
|
export type { ConfigEntry, ConfigField, DocEntry } from '@bridgething/lib';
|
|
3
|
-
/** Identity of the webapp whose settings page is being rendered. */
|
|
4
3
|
export type SettingsContext = {
|
|
5
4
|
webappId: string;
|
|
6
5
|
name: string;
|
|
7
6
|
version: string;
|
|
8
7
|
deviceId: string;
|
|
9
8
|
};
|
|
10
|
-
/** A config or doc key/value after a write; `value` is null when reset to no value. */
|
|
11
9
|
export type KeyValue = {
|
|
12
10
|
key: string;
|
|
13
11
|
value: string | null;
|
|
14
12
|
};
|
|
15
|
-
/** Callback for unsolicited doc changes pushed by the host. */
|
|
16
13
|
export type DocChangedListener = (key: string, value: string | null) => void;
|
|
17
14
|
declare global {
|
|
18
15
|
interface Window {
|
|
@@ -22,46 +19,24 @@ declare global {
|
|
|
22
19
|
__bridgethingSettingsDeliver?: (json: string) => void;
|
|
23
20
|
}
|
|
24
21
|
}
|
|
25
|
-
/**
|
|
26
|
-
* Bridge a webapp settings page to its host inside the bridgething companion
|
|
27
|
-
* app. Speaks the React-Native WebView `postMessage` protocol, not a
|
|
28
|
-
* WebSocket; the host delivers replies through a global installed at import.
|
|
29
|
-
*
|
|
30
|
-
* Network caveat: the page runs on the phone with real internet, but from a
|
|
31
|
-
* `file://` origin, so the webview enforces CORS on fetch/XHR (requests carry
|
|
32
|
-
* `Origin: null`). Websocket APIs are not CORS-gated and work out of the box;
|
|
33
|
-
* prefer them. For a CORS-strict HTTP-only service, fetch from the on-device
|
|
34
|
-
* webapp via `client.net` (phone-tunneled, not origin-restricted) instead.
|
|
35
|
-
*/
|
|
36
22
|
export declare const settings: {
|
|
37
|
-
/** Identity of the webapp and device this settings page is scoped to. */
|
|
38
23
|
context(): Promise<SettingsContext>;
|
|
39
24
|
config: {
|
|
40
|
-
/** The config schema the webapp declared in its manifest. */
|
|
41
25
|
fields(): Promise<ConfigField[]>;
|
|
42
|
-
/** Current config values (declared defaults plus user overrides). */
|
|
43
26
|
list(): Promise<ConfigEntry[]>;
|
|
44
|
-
/** Set a config value; resolves with the stored key/value. */
|
|
45
27
|
set(key: string, value: string): Promise<KeyValue>;
|
|
46
|
-
/** Clear a config override; resolves with the restored default or null. */
|
|
47
28
|
delete(key: string): Promise<KeyValue>;
|
|
48
29
|
};
|
|
49
30
|
doc: {
|
|
50
|
-
/** Read one doc value; resolves with null when unset. */
|
|
51
31
|
get(key: string): Promise<KeyValue>;
|
|
52
|
-
/** List every doc key/value in the webapp's namespace. */
|
|
53
32
|
list(): Promise<DocEntry[]>;
|
|
54
|
-
/** Write one doc value, readable by both the webapp and companion. */
|
|
55
33
|
set(key: string, value: string): Promise<KeyValue>;
|
|
56
|
-
/** Delete one doc value; resolves with a null value. */
|
|
57
34
|
delete(key: string): Promise<{
|
|
58
35
|
key: string;
|
|
59
36
|
value: null;
|
|
60
37
|
}>;
|
|
61
38
|
};
|
|
62
|
-
/** Subscribe to host-pushed doc changes; returns an unsubscribe function. */
|
|
63
39
|
onDocChanged(listener: DocChangedListener): () => void;
|
|
64
|
-
/** Signal the host to close the settings webview. Fire-and-forget. */
|
|
65
40
|
done(): void;
|
|
66
41
|
};
|
|
67
42
|
//# sourceMappingURL=settings.d.ts.map
|
package/dist/settings.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE3E,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAK3E,
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE3E,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAK3E,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AACpG,MAAM,MAAM,QAAQ,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAC7D,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;AAW7E,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,kBAAkB,CAAC,EAAE;YAAE,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;SAAE,CAAC;QAC7D,4BAA4B,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;KACvD;CACF;AAuED,eAAO,MAAM,QAAQ;eACR,OAAO,CAAC,eAAe,CAAC;;kBAIvB,OAAO,CAAC,WAAW,EAAE,CAAC;gBAGxB,OAAO,CAAC,WAAW,EAAE,CAAC;iBAGrB,MAAM,SAAS,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;oBAGtC,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;;;iBAK7B,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;gBAG3B,OAAO,CAAC,QAAQ,EAAE,CAAC;iBAGlB,MAAM,SAAS,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;oBAGtC,MAAM,GAAG,OAAO,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,IAAI,CAAA;SAAE,CAAC;;2BAIrC,kBAAkB,GAAG,MAAM,IAAI;YAI9C,IAAI;CAGb,CAAC"}
|
package/dist/settings.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const CALL_TIMEOUT_MS = 15_000;
|
|
2
|
-
const HOST_MISSING = 'not running inside
|
|
2
|
+
const HOST_MISSING = 'not running inside a bridgething settings host (no companion webview, no host frame)';
|
|
3
3
|
let nextId = 1;
|
|
4
4
|
const pending = new Map();
|
|
5
5
|
const docListeners = new Set();
|
|
@@ -27,12 +27,30 @@ function deliver(json) {
|
|
|
27
27
|
else
|
|
28
28
|
entry.reject(new Error(reply.error));
|
|
29
29
|
}
|
|
30
|
-
|
|
30
|
+
function send(json) {
|
|
31
|
+
if (typeof window === 'undefined')
|
|
32
|
+
return false;
|
|
33
|
+
const webview = window.ReactNativeWebView;
|
|
34
|
+
if (webview) {
|
|
35
|
+
webview.postMessage(json);
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
if (window.parent !== window) {
|
|
39
|
+
window.parent.postMessage(json, '*');
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
if (typeof window !== 'undefined') {
|
|
31
45
|
window.__bridgethingSettingsDeliver = deliver;
|
|
46
|
+
window.addEventListener('message', event => {
|
|
47
|
+
if (event.source !== window.parent || event.source === window)
|
|
48
|
+
return;
|
|
49
|
+
if (typeof event.data === 'string')
|
|
50
|
+
deliver(event.data);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
32
53
|
function call(verb, payload) {
|
|
33
|
-
const host = typeof window !== 'undefined' ? window.ReactNativeWebView : undefined;
|
|
34
|
-
if (!host)
|
|
35
|
-
return Promise.reject(new Error(HOST_MISSING));
|
|
36
54
|
const id = nextId++;
|
|
37
55
|
return new Promise((resolve, reject) => {
|
|
38
56
|
const timer = setTimeout(() => {
|
|
@@ -41,7 +59,8 @@ function call(verb, payload) {
|
|
|
41
59
|
}, CALL_TIMEOUT_MS);
|
|
42
60
|
pending.set(id, { resolve: resolve, reject, timer });
|
|
43
61
|
try {
|
|
44
|
-
|
|
62
|
+
if (!send(JSON.stringify({ id, verb, payload })))
|
|
63
|
+
throw new Error(HOST_MISSING);
|
|
45
64
|
}
|
|
46
65
|
catch (err) {
|
|
47
66
|
pending.delete(id);
|
|
@@ -50,69 +69,45 @@ function call(verb, payload) {
|
|
|
50
69
|
}
|
|
51
70
|
});
|
|
52
71
|
}
|
|
53
|
-
/**
|
|
54
|
-
* Bridge a webapp settings page to its host inside the bridgething companion
|
|
55
|
-
* app. Speaks the React-Native WebView `postMessage` protocol, not a
|
|
56
|
-
* WebSocket; the host delivers replies through a global installed at import.
|
|
57
|
-
*
|
|
58
|
-
* Network caveat: the page runs on the phone with real internet, but from a
|
|
59
|
-
* `file://` origin, so the webview enforces CORS on fetch/XHR (requests carry
|
|
60
|
-
* `Origin: null`). Websocket APIs are not CORS-gated and work out of the box;
|
|
61
|
-
* prefer them. For a CORS-strict HTTP-only service, fetch from the on-device
|
|
62
|
-
* webapp via `client.net` (phone-tunneled, not origin-restricted) instead.
|
|
63
|
-
*/
|
|
64
72
|
export const settings = {
|
|
65
|
-
/** Identity of the webapp and device this settings page is scoped to. */
|
|
66
73
|
context() {
|
|
67
74
|
return call('context');
|
|
68
75
|
},
|
|
69
76
|
config: {
|
|
70
|
-
/** The config schema the webapp declared in its manifest. */
|
|
71
77
|
fields() {
|
|
72
78
|
return call('config.fields');
|
|
73
79
|
},
|
|
74
|
-
/** Current config values (declared defaults plus user overrides). */
|
|
75
80
|
list() {
|
|
76
81
|
return call('config.list');
|
|
77
82
|
},
|
|
78
|
-
/** Set a config value; resolves with the stored key/value. */
|
|
79
83
|
set(key, value) {
|
|
80
84
|
return call('config.set', { key, value });
|
|
81
85
|
},
|
|
82
|
-
/** Clear a config override; resolves with the restored default or null. */
|
|
83
86
|
delete(key) {
|
|
84
87
|
return call('config.delete', { key });
|
|
85
88
|
},
|
|
86
89
|
},
|
|
87
90
|
doc: {
|
|
88
|
-
/** Read one doc value; resolves with null when unset. */
|
|
89
91
|
get(key) {
|
|
90
92
|
return call('doc.get', { key });
|
|
91
93
|
},
|
|
92
|
-
/** List every doc key/value in the webapp's namespace. */
|
|
93
94
|
list() {
|
|
94
95
|
return call('doc.list');
|
|
95
96
|
},
|
|
96
|
-
/** Write one doc value, readable by both the webapp and companion. */
|
|
97
97
|
set(key, value) {
|
|
98
98
|
return call('doc.set', { key, value });
|
|
99
99
|
},
|
|
100
|
-
/** Delete one doc value; resolves with a null value. */
|
|
101
100
|
delete(key) {
|
|
102
101
|
return call('doc.delete', { key });
|
|
103
102
|
},
|
|
104
103
|
},
|
|
105
|
-
/** Subscribe to host-pushed doc changes; returns an unsubscribe function. */
|
|
106
104
|
onDocChanged(listener) {
|
|
107
105
|
docListeners.add(listener);
|
|
108
106
|
return () => docListeners.delete(listener);
|
|
109
107
|
},
|
|
110
|
-
/** Signal the host to close the settings webview. Fire-and-forget. */
|
|
111
108
|
done() {
|
|
112
|
-
|
|
113
|
-
if (!host)
|
|
109
|
+
if (!send(JSON.stringify({ id: nextId++, verb: 'done' })))
|
|
114
110
|
throw new Error(HOST_MISSING);
|
|
115
|
-
host.postMessage(JSON.stringify({ id: nextId++, verb: 'done' }));
|
|
116
111
|
},
|
|
117
112
|
};
|
|
118
113
|
//# sourceMappingURL=settings.js.map
|
package/dist/settings.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAIA,MAAM,eAAe,GAAG,MAAM,CAAC;AAC/B,MAAM,YAAY,GAAG,
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bridgething/client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Typed client SDK a bridgething webapp uses to talk to the on-device daemon on a Spotify Car Thing.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Joey Eamigh <55670930+JoeyEamigh@users.noreply.github.com> (https://github.com/JoeyEamigh)",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"lint": "eslint ."
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@bridgething/lib": "0.
|
|
42
|
+
"@bridgething/lib": "0.9.0",
|
|
43
43
|
"@msgpack/msgpack": "^3.1.3"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|