@weaveprotocol/core 0.2.2 → 0.2.4
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/README.md +8 -3
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/network/peer-auth.d.ts +19 -0
- package/dist/network/peer-auth.d.ts.map +1 -1
- package/dist/network/peer-auth.js +22 -8
- package/dist/network/peer-auth.js.map +1 -1
- package/dist/node/actions.d.ts.map +1 -1
- package/dist/node/actions.js +19 -4
- package/dist/node/actions.js.map +1 -1
- package/dist/node/carrier.d.ts +16 -0
- package/dist/node/carrier.d.ts.map +1 -1
- package/dist/node/carrier.js +12 -0
- package/dist/node/carrier.js.map +1 -1
- package/dist/node/index.d.ts +2 -2
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/space-runtime.d.ts.map +1 -1
- package/dist/node/space-runtime.js +9 -1
- package/dist/node/space-runtime.js.map +1 -1
- package/dist/node/types.d.ts +4 -0
- package/dist/node/types.d.ts.map +1 -1
- package/dist/records/describe.d.ts +2 -0
- package/dist/records/describe.d.ts.map +1 -1
- package/dist/records/describe.js +5 -0
- package/dist/records/describe.js.map +1 -1
- package/dist/schema/collection-def.d.ts +16 -0
- package/dist/schema/collection-def.d.ts.map +1 -1
- package/dist/schema/collection-def.js +30 -0
- package/dist/schema/collection-def.js.map +1 -1
- package/dist/schemas/apps.d.ts +16 -1
- package/dist/schemas/apps.d.ts.map +1 -1
- package/dist/schemas/apps.js +41 -2
- package/dist/schemas/apps.js.map +1 -1
- package/dist/schemas/index.d.ts +2 -2
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +2 -2
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/screens.d.ts +16 -4
- package/dist/schemas/screens.d.ts.map +1 -1
- package/dist/schemas/screens.js +49 -6
- package/dist/schemas/screens.js.map +1 -1
- package/dist/session/auth.d.ts +17 -1
- package/dist/session/auth.d.ts.map +1 -1
- package/dist/session/auth.js +72 -0
- package/dist/session/auth.js.map +1 -1
- package/dist/session/connect.d.ts +57 -3
- package/dist/session/connect.d.ts.map +1 -1
- package/dist/session/connect.js +47 -4
- package/dist/session/connect.js.map +1 -1
- package/dist/session/connection.d.ts +8 -1
- package/dist/session/connection.d.ts.map +1 -1
- package/dist/session/connection.js +6 -1
- package/dist/session/connection.js.map +1 -1
- package/dist/session/index.d.ts +3 -3
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +1 -1
- package/dist/session/index.js.map +1 -1
- package/dist/space/notify.d.ts +58 -0
- package/dist/space/notify.d.ts.map +1 -1
- package/dist/space/notify.js +91 -0
- package/dist/space/notify.js.map +1 -1
- package/docs/README.md +49 -0
- package/docs/agents.md +59 -0
- package/docs/building-an-app.md +162 -0
- package/docs/collections.md +151 -0
- package/docs/records-and-queries.md +125 -0
- package/docs/screens-and-apps.md +129 -0
- package/package.json +2 -1
|
@@ -2,6 +2,7 @@ import { type Capability } from '../identity/ucan.js';
|
|
|
2
2
|
import type { RootSigner } from '../identity/root-signer.js';
|
|
3
3
|
import { type StoreFactory } from '../node/stores.js';
|
|
4
4
|
import type { CacheConfig, NewSpace, NodeNetworkConfig, P2PNode } from '../node/types.js';
|
|
5
|
+
import { type NotifyProposal } from '../space/notify.js';
|
|
5
6
|
import type { KeyValueStore } from './stay-signed-in.js';
|
|
6
7
|
/** What an app asks a home for */
|
|
7
8
|
export interface ConnectRequest {
|
|
@@ -44,7 +45,40 @@ export interface ConnectRequest {
|
|
|
44
45
|
readonly agent?: boolean;
|
|
45
46
|
/** How many days the note should last, 1–365. The home decides; default 7. */
|
|
46
47
|
readonly days?: number;
|
|
48
|
+
/**
|
|
49
|
+
* "Let me know when…" subscriptions to offer the person, at most 8. Each
|
|
50
|
+
* one they say yes to, the home adds to the account's subscriptions,
|
|
51
|
+
* naming this app; the account's carriers do the noticing. Never from an
|
|
52
|
+
* agent, and not when a carrier connects: it proposes later, with a
|
|
53
|
+
* {@link ProposeRequest}.
|
|
54
|
+
*/
|
|
55
|
+
readonly notify?: ReadonlyArray<NotifyProposal>;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* What an app or carrier already connected to a home asks for later:
|
|
59
|
+
* subscriptions, and nothing else. The home knows it by the origin the
|
|
60
|
+
* browser reports, and refuses one it has no connection for.
|
|
61
|
+
*/
|
|
62
|
+
export interface ProposeRequest {
|
|
63
|
+
readonly v: 1;
|
|
64
|
+
readonly kind: 'propose';
|
|
65
|
+
/** What it calls itself. Shown, never trusted. */
|
|
66
|
+
readonly name?: string;
|
|
67
|
+
/** 1 to 8 subscriptions to offer the person */
|
|
68
|
+
readonly notify: ReadonlyArray<NotifyProposal>;
|
|
47
69
|
}
|
|
70
|
+
/** What the home answers a {@link ProposeRequest} with, once the person decided */
|
|
71
|
+
export interface Proposed {
|
|
72
|
+
readonly v: 1;
|
|
73
|
+
readonly kind: 'proposed';
|
|
74
|
+
/** The subscriptions added or found, by the person's yes: none when they kept none */
|
|
75
|
+
readonly notify: ReadonlyArray<{
|
|
76
|
+
readonly id: string;
|
|
77
|
+
readonly label: string;
|
|
78
|
+
}>;
|
|
79
|
+
}
|
|
80
|
+
/** Whether a request the home received is a proposal rather than a connection */
|
|
81
|
+
export declare const isProposeRequest: (request: ConnectRequest | ProposeRequest) => request is ProposeRequest;
|
|
48
82
|
/** The longest a home gives a note for */
|
|
49
83
|
export declare const MAX_GRANT_DAYS = 365;
|
|
50
84
|
/** A space an app was given */
|
|
@@ -91,6 +125,11 @@ export interface Grant {
|
|
|
91
125
|
readonly expiresAt: number;
|
|
92
126
|
/** Present, and true, when the note is an agent's */
|
|
93
127
|
readonly agent?: true;
|
|
128
|
+
/** The subscriptions made from the request's `notify`, by the person's yes: their ids and labels */
|
|
129
|
+
readonly notify?: ReadonlyArray<{
|
|
130
|
+
readonly id: string;
|
|
131
|
+
readonly label: string;
|
|
132
|
+
}>;
|
|
94
133
|
/** The home that granted it, so the app can go back there */
|
|
95
134
|
readonly home: string;
|
|
96
135
|
/**
|
|
@@ -192,6 +231,21 @@ export declare function connectCarrier(options: {
|
|
|
192
231
|
readonly name?: string;
|
|
193
232
|
readonly timeoutMs?: number;
|
|
194
233
|
}): Promise<CarryGrant>;
|
|
234
|
+
/**
|
|
235
|
+
* Offers the person subscriptions, from an app or carrier already connected
|
|
236
|
+
* to their home. Call it from a click, in a page that stays open: the home
|
|
237
|
+
* opens in a popup, and the person keeps the ones they want.
|
|
238
|
+
*
|
|
239
|
+
* @param options.home The home it connected to — a grant's `home`
|
|
240
|
+
* @returns What the home added or found; an empty list when the person kept none
|
|
241
|
+
* @throws When the popup is blocked, closed or denied, or the home knows no connection from here
|
|
242
|
+
*/
|
|
243
|
+
export declare function proposeToHome(options: {
|
|
244
|
+
readonly home: string;
|
|
245
|
+
readonly notify: ReadonlyArray<NotifyProposal>;
|
|
246
|
+
readonly name?: string;
|
|
247
|
+
readonly timeoutMs?: number;
|
|
248
|
+
}): Promise<Proposed>;
|
|
195
249
|
/** A signer that answers with the note the home gave — the app holds nothing else. */
|
|
196
250
|
export declare function grantSigner(grant: Grant): RootSigner;
|
|
197
251
|
/**
|
|
@@ -219,11 +273,11 @@ export declare function grantStore(storage?: KeyValueStore | null, key?: string)
|
|
|
219
273
|
};
|
|
220
274
|
/** A request as the home received it */
|
|
221
275
|
export interface IncomingRequest {
|
|
222
|
-
readonly request: ConnectRequest;
|
|
276
|
+
readonly request: ConnectRequest | ProposeRequest;
|
|
223
277
|
/** Where it came from, as the browser reports it — the only name to trust */
|
|
224
278
|
readonly origin: string;
|
|
225
|
-
/** Sends the
|
|
226
|
-
approve(
|
|
279
|
+
/** Sends the answer back to that origin, and closes the window */
|
|
280
|
+
approve(answer: Omit<Grant, 'home'> | Omit<CarryGrant, 'home'> | Proposed): void;
|
|
227
281
|
/** Says no, and closes the window */
|
|
228
282
|
deny(reason?: string): void;
|
|
229
283
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/session/connect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/session/connect.ts"],"names":[],"mappings":"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"}
|
package/dist/session/connect.js
CHANGED
|
@@ -18,6 +18,10 @@
|
|
|
18
18
|
* Every peer checks the note, so the app cannot write anywhere it was not
|
|
19
19
|
* given. It never holds the seed, so it cannot become the account.
|
|
20
20
|
*
|
|
21
|
+
* Once connected, an app — or the account's carrier — can come back with a
|
|
22
|
+
* smaller ask: "notify them when…" (`proposeToHome`). The same popup, the
|
|
23
|
+
* same approval, and the home writes what the person keeps.
|
|
24
|
+
*
|
|
21
25
|
* The popup and the app talk with `postMessage`. Each side checks the other's
|
|
22
26
|
* origin as the browser reports it — never as a message claims it — and the
|
|
23
27
|
* home only ever sends a grant to the origin that asked for it.
|
|
@@ -32,11 +36,14 @@ import { createNode } from '../node/node.js';
|
|
|
32
36
|
import { indexedDBStores } from '../node/stores.js';
|
|
33
37
|
import { checkStartingRoles } from '../space/space-access.js';
|
|
34
38
|
import { parseSpaceInvite } from '../space/space-manager.js';
|
|
39
|
+
import { checkProposal, MAX_PROPOSALS } from '../space/notify.js';
|
|
35
40
|
/** Messages between an app and the home it opened */
|
|
36
41
|
const HELLO = 'weave:hello';
|
|
37
42
|
const REQUEST = 'weave:request';
|
|
38
43
|
const GRANT = 'weave:grant';
|
|
39
44
|
const DENIED = 'weave:denied';
|
|
45
|
+
/** Whether a request the home received is a proposal rather than a connection */
|
|
46
|
+
export const isProposeRequest = (request) => 'kind' in request && request.kind === 'propose';
|
|
40
47
|
/** The longest a home gives a note for */
|
|
41
48
|
export const MAX_GRANT_DAYS = 365;
|
|
42
49
|
/**
|
|
@@ -155,6 +162,26 @@ export async function connectCarrier(options) {
|
|
|
155
162
|
checkCarryGrant(grant);
|
|
156
163
|
return { ...grant, home: homeUrl.href };
|
|
157
164
|
}
|
|
165
|
+
/**
|
|
166
|
+
* Offers the person subscriptions, from an app or carrier already connected
|
|
167
|
+
* to their home. Call it from a click, in a page that stays open: the home
|
|
168
|
+
* opens in a popup, and the person keeps the ones they want.
|
|
169
|
+
*
|
|
170
|
+
* @param options.home The home it connected to — a grant's `home`
|
|
171
|
+
* @returns What the home added or found; an empty list when the person kept none
|
|
172
|
+
* @throws When the popup is blocked, closed or denied, or the home knows no connection from here
|
|
173
|
+
*/
|
|
174
|
+
export async function proposeToHome(options) {
|
|
175
|
+
if (options.notify.length === 0 || options.notify.length > MAX_PROPOSALS)
|
|
176
|
+
throw new Error(`Propose 1 to ${MAX_PROPOSALS} subscriptions.`);
|
|
177
|
+
const homeUrl = new URL(options.home, globalThis.location.href);
|
|
178
|
+
const popup = openHome(homeUrl);
|
|
179
|
+
const request = { v: 1, kind: 'propose', ...(options.name ? { name: options.name } : {}), notify: options.notify };
|
|
180
|
+
const answer = (await askHome(popup, homeUrl.origin, request, options.timeoutMs));
|
|
181
|
+
if (answer?.kind !== 'proposed' || !Array.isArray(answer.notify))
|
|
182
|
+
throw new Error('Your account home did not answer the proposal.');
|
|
183
|
+
return answer;
|
|
184
|
+
}
|
|
158
185
|
/** Refuses a carry grant that is not an invite to a private space the account made. */
|
|
159
186
|
function checkCarryGrant(grant) {
|
|
160
187
|
if (grant?.kind !== 'carry' || typeof grant.did !== 'string' || typeof grant.carry?.invite !== 'string') {
|
|
@@ -300,7 +327,7 @@ export function receiveConnectRequest(timeoutMs = 10_000) {
|
|
|
300
327
|
globalThis.clearTimeout(timer);
|
|
301
328
|
// A request this home cannot read — often an app newer than the home —
|
|
302
329
|
// is answered, not ignored: otherwise both sides wait with nothing said.
|
|
303
|
-
if (!isRequest(data.request)) {
|
|
330
|
+
if (!isRequest(data.request, event.origin)) {
|
|
304
331
|
opener.postMessage({ type: DENIED, reason: 'Your account home did not understand what was asked. It may be older than this app — update it, or use another home.' }, event.origin);
|
|
305
332
|
globalThis.setTimeout(() => globalThis.close(), 100);
|
|
306
333
|
resolve(null);
|
|
@@ -315,7 +342,7 @@ export function receiveConnectRequest(timeoutMs = 10_000) {
|
|
|
315
342
|
resolve({
|
|
316
343
|
request: data.request,
|
|
317
344
|
origin,
|
|
318
|
-
approve: (
|
|
345
|
+
approve: (answer) => reply({ type: GRANT, grant: answer }),
|
|
319
346
|
deny: (reason) => reply({ type: DENIED, reason: reason ?? 'Access was not given.' }),
|
|
320
347
|
});
|
|
321
348
|
};
|
|
@@ -329,7 +356,16 @@ export function receiveConnectRequest(timeoutMs = 10_000) {
|
|
|
329
356
|
opener.postMessage({ type: HELLO }, '*');
|
|
330
357
|
});
|
|
331
358
|
}
|
|
332
|
-
function isRequest(value) {
|
|
359
|
+
function isRequest(value, origin) {
|
|
360
|
+
const proposal = value;
|
|
361
|
+
if (proposal?.kind !== undefined) {
|
|
362
|
+
return (proposal.v === 1 &&
|
|
363
|
+
proposal.kind === 'propose' &&
|
|
364
|
+
(proposal.name === undefined || (typeof proposal.name === 'string' && proposal.name.length <= 80)) &&
|
|
365
|
+
Array.isArray(proposal.notify) &&
|
|
366
|
+
proposal.notify.length > 0 &&
|
|
367
|
+
isProposals(proposal.notify, origin));
|
|
368
|
+
}
|
|
333
369
|
const request = value;
|
|
334
370
|
return (!!request &&
|
|
335
371
|
request.v === 1 &&
|
|
@@ -341,10 +377,17 @@ function isRequest(value) {
|
|
|
341
377
|
(request.contacts === undefined || typeof request.contacts === 'boolean') &&
|
|
342
378
|
(request.create === undefined || isNewSpaces(request.create)) &&
|
|
343
379
|
(request.days === undefined || (Number.isInteger(request.days) && request.days >= 1 && request.days <= MAX_GRANT_DAYS)) &&
|
|
380
|
+
(request.notify === undefined || isProposals(request.notify, origin)) &&
|
|
344
381
|
// An agent works in spaces that exist: none made for it, and no carrying.
|
|
345
382
|
(request.agent === undefined ||
|
|
346
383
|
request.agent === false ||
|
|
347
|
-
(request.agent === true && request.access !== 'carry' && request.create === undefined && !request.contacts))
|
|
384
|
+
(request.agent === true && request.access !== 'carry' && request.create === undefined && !request.contacts)) &&
|
|
385
|
+
// Subscriptions are the person's, proposed by an app they are looking at.
|
|
386
|
+
(request.notify === undefined || (request.access !== 'carry' && request.agent !== true)));
|
|
387
|
+
}
|
|
388
|
+
/** Subscriptions an app proposes: few, each one it could offer, each click leading back to it */
|
|
389
|
+
function isProposals(value, origin) {
|
|
390
|
+
return Array.isArray(value) && value.length <= MAX_PROPOSALS && value.every((proposal) => checkProposal(proposal, origin) === null);
|
|
348
391
|
}
|
|
349
392
|
/** At most this many spaces made for an app in one go */
|
|
350
393
|
const MAX_CREATE = 8;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/session/connect.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/session/connect.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,7 +23,8 @@
|
|
|
23
23
|
*/
|
|
24
24
|
import type { NodeNetworkConfig, P2PNode } from '../node/types.js';
|
|
25
25
|
import type { StoreFactory } from '../node/stores.js';
|
|
26
|
-
import { type ConnectRequest, type Grant } from './connect.js';
|
|
26
|
+
import { type ConnectRequest, type Grant, type Proposed } from './connect.js';
|
|
27
|
+
import type { NotifyProposal } from '../space/notify.js';
|
|
27
28
|
import type { KeyValueStore } from './stay-signed-in.js';
|
|
28
29
|
export interface WeaveConnectionConfig {
|
|
29
30
|
/** The account home to suggest — the person can use their own instead */
|
|
@@ -65,6 +66,12 @@ export interface WeaveConnection {
|
|
|
65
66
|
connect(home?: string): Promise<void>;
|
|
66
67
|
/** Forgets the grant and this app's key, and stops the node. The account is untouched. */
|
|
67
68
|
disconnect(): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Offers the person subscriptions — "notify me when…" — once connected.
|
|
71
|
+
* Opens the home; call it from a click.
|
|
72
|
+
* @returns What they kept
|
|
73
|
+
*/
|
|
74
|
+
propose(notify: ReadonlyArray<NotifyProposal>): Promise<Proposed>;
|
|
68
75
|
}
|
|
69
76
|
export declare function createWeaveConnection(config: WeaveConnectionConfig): WeaveConnection;
|
|
70
77
|
//# sourceMappingURL=connection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/session/connection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/session/connection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAQL,KAAK,cAAc,EACnB,KAAK,KAAK,EACV,KAAK,QAAQ,EACd,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,qBAAqB;IACpC,yEAAyE;IACzE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sBAAsB;IACtB,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG,GAAG,UAAU,CAAC,CAAC;IACzD,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IACrC,uDAAuD;IACvD,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACxC,qEAAqE;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,YAAY,CAAC;CAClD;AAED;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,cAAc,GAAG,YAAY,GAAG,OAAO,GAAG,SAAS,CAAC;AAEhG,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,6FAA6F;IAC7F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,IAAI,eAAe,CAAC;IAC5B,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAClE,2EAA2E;IAC3E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB;;;OAGG;IACH,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,0FAA0F;IAC1F,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACnE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,GAAG,eAAe,CA8HpF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { appKey, connectToHome, homeAddress, forgetAppKey, grantStore, startConnectedNode, } from './connect.js';
|
|
1
|
+
import { appKey, connectToHome, homeAddress, forgetAppKey, grantStore, proposeToHome, startConnectedNode, } from './connect.js';
|
|
2
2
|
export function createWeaveConnection(config) {
|
|
3
3
|
const storage = config.storage !== undefined ? config.storage : (globalThis.localStorage ?? null);
|
|
4
4
|
const grants = grantStore(storage);
|
|
@@ -114,6 +114,11 @@ export function createWeaveConnection(config) {
|
|
|
114
114
|
}
|
|
115
115
|
},
|
|
116
116
|
disconnect: () => end(null),
|
|
117
|
+
propose(notify) {
|
|
118
|
+
if (!state.grant)
|
|
119
|
+
return Promise.reject(new Error('Connect to your account home first.'));
|
|
120
|
+
return proposeToHome({ home: state.grant.home, notify, ...(config.request.name ? { name: config.request.name } : {}) });
|
|
121
|
+
},
|
|
117
122
|
};
|
|
118
123
|
return connection;
|
|
119
124
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/session/connection.ts"],"names":[],"mappings":"AAyBA,OAAO,EACL,MAAM,EACN,aAAa,EACb,WAAW,EACX,YAAY,EACZ,UAAU,EACV,kBAAkB,
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/session/connection.ts"],"names":[],"mappings":"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"}
|
package/dist/session/index.d.ts
CHANGED
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
* isomorphic core.
|
|
9
9
|
*/
|
|
10
10
|
export { createWeaveAuth, MIN_PASSWORD_LENGTH } from './auth.js';
|
|
11
|
-
export type { WeaveAuth, WeaveAuthConfig, AuthState, AuthStage, AuthSetup, AuthError, AccountEntry, WeaveSession, MovedToPod, Connection, GrantChoice, } from './auth.js';
|
|
11
|
+
export type { WeaveAuth, WeaveAuthConfig, AuthState, AuthStage, AuthSetup, AuthError, AccountEntry, WeaveSession, MovedToPod, Connection, GrantChoice, ProposeChoice, } from './auth.js';
|
|
12
12
|
export { createWeaveConnection } from './connection.js';
|
|
13
13
|
export type { WeaveConnection, WeaveConnectionConfig, ConnectionState, ConnectionStatus } from './connection.js';
|
|
14
|
-
export { connectToHome, connectCarrier, homeAddress, receiveConnectRequest, startConnectedNode, grantSigner, grantStore, grantCapabilities, appKey, forgetAppKey, MAX_GRANT_DAYS, } from './connect.js';
|
|
15
|
-
export type { ConnectRequest, ConnectOptions, Grant, CarryGrant, GrantedSpace, IncomingRequest, AppKey } from './connect.js';
|
|
14
|
+
export { connectToHome, connectCarrier, proposeToHome, isProposeRequest, homeAddress, receiveConnectRequest, startConnectedNode, grantSigner, grantStore, grantCapabilities, appKey, forgetAppKey, MAX_GRANT_DAYS, } from './connect.js';
|
|
15
|
+
export type { ConnectRequest, ConnectOptions, ProposeRequest, Proposed, Grant, CarryGrant, GrantedSpace, IncomingRequest, AppKey } from './connect.js';
|
|
16
16
|
export { browserPlace, folderPlace, pickPod, rememberPod, recallPod, forgetPod, listAccounts, inspectPod, storesFor, } from './places.js';
|
|
17
17
|
export type { Place, PodContents } from './places.js';
|
|
18
18
|
export { createStaySignedIn, STAY_SIGNED_IN_CHOICES, DEFAULT_STAY_SIGNED_IN } from './stay-signed-in.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACjE,YAAY,EACV,SAAS,EACT,eAAe,EACf,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,UAAU,EACV,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACjE,YAAY,EACV,SAAS,EACT,eAAe,EACf,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,UAAU,EACV,WAAW,EACX,aAAa,GACd,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACjH,OAAO,EACL,aAAa,EACb,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACrB,kBAAkB,EAClB,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,MAAM,EACN,YAAY,EACZ,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACvJ,OAAO,EACL,YAAY,EACZ,WAAW,EACX,OAAO,EACP,WAAW,EACX,SAAS,EACT,SAAS,EACT,YAAY,EACZ,UAAU,EACV,SAAS,GACV,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACzG,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvG,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChH,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/session/index.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
export { createWeaveAuth, MIN_PASSWORD_LENGTH } from './auth.js';
|
|
11
11
|
export { createWeaveConnection } from './connection.js';
|
|
12
|
-
export { connectToHome, connectCarrier, homeAddress, receiveConnectRequest, startConnectedNode, grantSigner, grantStore, grantCapabilities, appKey, forgetAppKey, MAX_GRANT_DAYS, } from './connect.js';
|
|
12
|
+
export { connectToHome, connectCarrier, proposeToHome, isProposeRequest, homeAddress, receiveConnectRequest, startConnectedNode, grantSigner, grantStore, grantCapabilities, appKey, forgetAppKey, MAX_GRANT_DAYS, } from './connect.js';
|
|
13
13
|
export { browserPlace, folderPlace, pickPod, rememberPod, recallPod, forgetPod, listAccounts, inspectPod, storesFor, } from './places.js';
|
|
14
14
|
export { createStaySignedIn, STAY_SIGNED_IN_CHOICES, DEFAULT_STAY_SIGNED_IN } from './stay-signed-in.js';
|
|
15
15
|
export { offerToPhone, collectFromDesktop, readPairingTicket, clearPairingTicket } from './pairing.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAejE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EACL,aAAa,EACb,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACrB,kBAAkB,EAClB,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,MAAM,EACN,YAAY,EACZ,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,YAAY,EACZ,WAAW,EACX,OAAO,EACP,WAAW,EACX,SAAS,EACT,SAAS,EACT,YAAY,EACZ,UAAU,EACV,SAAS,GACV,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAEzG,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvG,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhH,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/space/notify.d.ts
CHANGED
|
@@ -17,6 +17,13 @@
|
|
|
17
17
|
*
|
|
18
18
|
* The same split as a query in a space held in part (spec/05-sync-and-storage.md, What a node holds): the part a
|
|
19
19
|
* blind node can check runs there, the rest where the keys are.
|
|
20
|
+
*
|
|
21
|
+
* An app knows its own collections and topics better than the person does,
|
|
22
|
+
* so it may propose subscriptions (`NotifyProposal`): when it connects, or
|
|
23
|
+
* later, as a node already connected (`proposeToHome`). The carrier does the
|
|
24
|
+
* same from the collections it sees go by. The person says yes to each on the
|
|
25
|
+
* home's approval screen, and the home writes them into the registry naming
|
|
26
|
+
* the app — the app never writes there itself.
|
|
20
27
|
*/
|
|
21
28
|
import type { Expression } from '../types.js';
|
|
22
29
|
import type { SpaceKey } from '../privacy/space-encryption.js';
|
|
@@ -46,7 +53,39 @@ export interface NotifyWhen {
|
|
|
46
53
|
readonly paused?: boolean;
|
|
47
54
|
/** When it was made: nothing written before it notifies */
|
|
48
55
|
readonly since: string;
|
|
56
|
+
/** The app that proposed it, by the origin the browser reported. Absent: the person made it in the home. */
|
|
57
|
+
readonly app?: NotifyApp;
|
|
58
|
+
}
|
|
59
|
+
/** Who proposed a subscription */
|
|
60
|
+
export interface NotifyApp {
|
|
61
|
+
readonly origin: string;
|
|
62
|
+
/** What the app called itself. Shown, never trusted. */
|
|
63
|
+
readonly name?: string;
|
|
49
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* A subscription an app asks for. It looks at the spaces the app may reach —
|
|
67
|
+
* every space for a whole-account app or a carrier, else the spaces it was
|
|
68
|
+
* given — or at `spaces`, some of those. `topic.me` stands for the account's
|
|
69
|
+
* DID, which the app does not know before it connects: "mentions me".
|
|
70
|
+
*/
|
|
71
|
+
export interface NotifyProposal {
|
|
72
|
+
readonly label: string;
|
|
73
|
+
readonly collection: string;
|
|
74
|
+
readonly topic?: {
|
|
75
|
+
readonly field: string;
|
|
76
|
+
readonly value: string | number | boolean;
|
|
77
|
+
} | {
|
|
78
|
+
readonly field: string;
|
|
79
|
+
readonly me: true;
|
|
80
|
+
};
|
|
81
|
+
readonly others?: boolean;
|
|
82
|
+
/** Only these of the spaces the app may reach. Default: all of them. */
|
|
83
|
+
readonly spaces?: ReadonlyArray<string>;
|
|
84
|
+
/** Must be on the app's own origin. Default: the app's origin. */
|
|
85
|
+
readonly open?: string;
|
|
86
|
+
}
|
|
87
|
+
/** At most this many proposals in one request */
|
|
88
|
+
export declare const MAX_PROPOSALS = 8;
|
|
50
89
|
/** A subscription as a carrier holds it: no values, only tags */
|
|
51
90
|
export interface CarriedSubscription {
|
|
52
91
|
readonly v: 1;
|
|
@@ -62,6 +101,25 @@ export interface CarriedSubscription {
|
|
|
62
101
|
}
|
|
63
102
|
/** Why a subscription can't be kept, or null */
|
|
64
103
|
export declare function checkNotify(when: unknown): string | null;
|
|
104
|
+
/**
|
|
105
|
+
* Why an app's proposal can't be offered, or null. `origin` is the app's, as
|
|
106
|
+
* the browser reported it: a click may only lead back to the app that asked.
|
|
107
|
+
*/
|
|
108
|
+
export declare function checkProposal(proposal: unknown, origin: string): string | null;
|
|
109
|
+
/**
|
|
110
|
+
* The spaces a proposal looks at, given the ones the app may reach; null when
|
|
111
|
+
* it names one outside them.
|
|
112
|
+
*/
|
|
113
|
+
export declare function proposalSpaces(proposal: NotifyProposal, reach: NotifySpaces): NotifySpaces | null;
|
|
114
|
+
/** The subscription a proposal becomes, once the person says yes to it */
|
|
115
|
+
export declare function fromProposal(proposal: NotifyProposal, context: {
|
|
116
|
+
readonly app: NotifyApp;
|
|
117
|
+
readonly spaces: NotifySpaces;
|
|
118
|
+
readonly account: string;
|
|
119
|
+
readonly since?: string;
|
|
120
|
+
}): NotifyWhen;
|
|
121
|
+
/** Whether two subscriptions ask about the same thing: an app connecting again adds nothing twice */
|
|
122
|
+
export declare function sameSubscription(a: NotifyWhen, b: NotifyWhen): boolean;
|
|
65
123
|
/** A space the account follows, as far as a subscription needs: its id, and its current key when private */
|
|
66
124
|
export interface NotifySpace {
|
|
67
125
|
readonly id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notify.d.ts","sourceRoot":"","sources":["../../src/space/notify.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"notify.d.ts","sourceRoot":"","sources":["../../src/space/notify.ts"],"names":[],"mappings":"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"}
|
package/dist/space/notify.js
CHANGED
|
@@ -4,6 +4,8 @@ import { checkTopics, topicKey, topicTag } from '../records/topics.js';
|
|
|
4
4
|
export const NOTIFY_COLLECTION = 'sys.notify';
|
|
5
5
|
/** Subscriptions as a carrier holds them, in its carry space: the same key, values replaced by tags */
|
|
6
6
|
export const SUBSCRIPTION_COLLECTION = 'sys.subscription';
|
|
7
|
+
/** At most this many proposals in one request */
|
|
8
|
+
export const MAX_PROPOSALS = 8;
|
|
7
9
|
const COLLECTION = /^[a-z][a-z0-9-]*(\.[a-z0-9-]+)+$/;
|
|
8
10
|
/** Why a subscription can't be kept, or null */
|
|
9
11
|
export function checkNotify(when) {
|
|
@@ -40,8 +42,97 @@ export function checkNotify(when) {
|
|
|
40
42
|
}
|
|
41
43
|
if (typeof w.since !== 'string' || !Number.isFinite(Date.parse(w.since)))
|
|
42
44
|
return 'since must be a date';
|
|
45
|
+
if (w.app !== undefined) {
|
|
46
|
+
const a = w.app;
|
|
47
|
+
if (typeof a !== 'object' || a === null || typeof a.origin !== 'string' || !isOrigin(a.origin))
|
|
48
|
+
return 'app.origin must be a web origin';
|
|
49
|
+
if (a.name !== undefined && (typeof a.name !== 'string' || a.name.length > 80))
|
|
50
|
+
return 'app.name must be text, at most 80 characters';
|
|
51
|
+
}
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* `https://chat.example`, nothing after it: what a browser reports as a
|
|
56
|
+
* message's origin. A browser extension's origin (`chrome-extension://<id>`)
|
|
57
|
+
* is one too, though `URL` gives it none.
|
|
58
|
+
*/
|
|
59
|
+
function isOrigin(value) {
|
|
60
|
+
if (/^(chrome|moz|safari-web)-extension:\/\/[a-z0-9-]{1,64}$/i.test(value))
|
|
61
|
+
return true;
|
|
62
|
+
try {
|
|
63
|
+
return new URL(value).origin === value;
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Why an app's proposal can't be offered, or null. `origin` is the app's, as
|
|
71
|
+
* the browser reported it: a click may only lead back to the app that asked.
|
|
72
|
+
*/
|
|
73
|
+
export function checkProposal(proposal, origin) {
|
|
74
|
+
const p = proposal;
|
|
75
|
+
if (typeof p !== 'object' || p === null)
|
|
76
|
+
return 'A proposed subscription must be an object';
|
|
77
|
+
const topic = p.topic;
|
|
78
|
+
if (topic !== undefined && (typeof topic !== 'object' || topic === null || ('me' in topic && (topic.me !== true || 'value' in topic)))) {
|
|
79
|
+
return 'topic is { field, value } or { field, me: true }';
|
|
80
|
+
}
|
|
81
|
+
const problem = checkNotify({
|
|
82
|
+
label: p.label,
|
|
83
|
+
collection: p.collection,
|
|
84
|
+
spaces: p.spaces ?? 'all',
|
|
85
|
+
...(topic ? { topic: { field: topic.field, value: topic.me === true ? 'me' : topic.value } } : {}),
|
|
86
|
+
...(p.others !== undefined ? { others: p.others } : {}),
|
|
87
|
+
...(p.open !== undefined ? { open: p.open } : {}),
|
|
88
|
+
since: new Date(0).toISOString(),
|
|
89
|
+
app: { origin },
|
|
90
|
+
});
|
|
91
|
+
if (problem)
|
|
92
|
+
return problem;
|
|
93
|
+
if (p.open !== undefined && new URL(p.open).origin !== origin)
|
|
94
|
+
return 'open must be an address on the app’s own site';
|
|
43
95
|
return null;
|
|
44
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* The spaces a proposal looks at, given the ones the app may reach; null when
|
|
99
|
+
* it names one outside them.
|
|
100
|
+
*/
|
|
101
|
+
export function proposalSpaces(proposal, reach) {
|
|
102
|
+
if (!proposal.spaces)
|
|
103
|
+
return reach;
|
|
104
|
+
if (reach !== 'all' && proposal.spaces.some((id) => !reach.includes(id)))
|
|
105
|
+
return null;
|
|
106
|
+
return [...new Set(proposal.spaces)];
|
|
107
|
+
}
|
|
108
|
+
/** The subscription a proposal becomes, once the person says yes to it */
|
|
109
|
+
export function fromProposal(proposal, context) {
|
|
110
|
+
const topic = proposal.topic;
|
|
111
|
+
const when = {
|
|
112
|
+
label: proposal.label.trim(),
|
|
113
|
+
collection: proposal.collection,
|
|
114
|
+
spaces: context.spaces,
|
|
115
|
+
...(topic ? { topic: { field: topic.field, value: 'me' in topic ? context.account : topic.value } } : {}),
|
|
116
|
+
others: proposal.others ?? true,
|
|
117
|
+
open: proposal.open ?? `${context.app.origin}/`,
|
|
118
|
+
since: context.since ?? new Date().toISOString(),
|
|
119
|
+
app: context.app,
|
|
120
|
+
};
|
|
121
|
+
// An app on plain http elsewhere than this machine: a click goes to the home instead.
|
|
122
|
+
if (checkNotify(when) === null || proposal.open !== undefined)
|
|
123
|
+
return when;
|
|
124
|
+
const { open: _open, ...rest } = when;
|
|
125
|
+
return rest;
|
|
126
|
+
}
|
|
127
|
+
/** Whether two subscriptions ask about the same thing: an app connecting again adds nothing twice */
|
|
128
|
+
export function sameSubscription(a, b) {
|
|
129
|
+
const spaces = (s) => (s === 'all' ? 'all' : [...s].sort().join(','));
|
|
130
|
+
return (a.collection === b.collection &&
|
|
131
|
+
spaces(a.spaces) === spaces(b.spaces) &&
|
|
132
|
+
a.topic?.field === b.topic?.field &&
|
|
133
|
+
a.topic?.value === b.topic?.value &&
|
|
134
|
+
(a.others ?? true) === (b.others ?? true));
|
|
135
|
+
}
|
|
45
136
|
/**
|
|
46
137
|
* What a carrier gets: the subscription with its value replaced by each
|
|
47
138
|
* space's tag. A private space whose key this device doesn't hold gets none,
|