@pairlobby/server-core 0.24.0 → 0.25.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/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  # @pairlobby/server-core
2
2
 
3
- Part of [PairLobby](https://github.com/PairLobby/app), built from `packages/server-core` at version 0.24.0. See that repository for documentation.
3
+ Part of [PairLobby](https://github.com/PairLobby/app), built from `packages/server-core` at version 0.25.0. See that repository for documentation.
4
4
 
5
5
  Licensed under the [Elastic License 2.0](LICENSE): you may use, copy, modify and distribute it, but may not offer it to others as a hosted or managed service.
@@ -4,6 +4,15 @@ export declare const CREATE_TOKEN_HEADER = "x-pairlobby-account-token";
4
4
  export declare const CREATE_TOKEN_REQUIRED = "this relay needs its create token to start a room; set PAIRLOBBY_CREATE_TOKEN";
5
5
  /** One message for a missing and a wrong team token, so the answer says nothing about which. */
6
6
  export declare const TEAM_TOKEN_REFUSED = "this is not the team token for this relay";
7
+ /** The same, on a relay where people log in with their own tokens. */
8
+ export declare const LOGIN_TOKEN_REFUSED = "this token does not log in to this relay";
9
+ /** A person on a relay with personal tokens. */
10
+ export type RelayMember = {
11
+ handle: string;
12
+ name?: string;
13
+ };
14
+ /** The member whose personal token has this SHA-256 digest, or null. */
15
+ export type MemberLookup = (digest: string) => Promise<RelayMember | null>;
7
16
  export type RateLimit = {
8
17
  perMinute: number;
9
18
  };
@@ -31,6 +40,10 @@ export declare const DEFAULT_ADMISSION_LIMITS: AdmissionLimits;
31
40
  export type AdmissionOptions = {
32
41
  /** When set, creating a room needs this token in the create token header. Joining with an invite never does. */
33
42
  createToken?: string;
43
+ /** Personal tokens: each creates rooms like the create token, logs in as its member, and names that member on the rooms they create and join. */
44
+ members?: MemberLookup;
45
+ /** Whether the create token also logs people in, beside personal tokens. Default true; false leaves it for creating rooms only. */
46
+ teamTokenLogin?: boolean;
34
47
  /** Absent means no rate limits. */
35
48
  limiter?: RateLimiter;
36
49
  limits?: Partial<AdmissionLimits>;
@@ -53,16 +66,20 @@ export declare function memoryRateLimiter({ now, maxKeys }?: MemoryRateLimiterOp
53
66
  /** Builds the checks a router runs before creating a room or redeeming an invite. */
54
67
  export declare function createAdmission(options: AdmissionOptions): {
55
68
  tokenMatches: (request: Request) => Promise<boolean>;
56
- /** Creating a room needs the create token here. */
69
+ /** Creating a room needs the create token or a personal token here. */
57
70
  createTokenRequired: boolean;
58
- /** Refuses a room creation without the create token, then counts it against the caller. */
59
- beforeCreate(request: Request, context?: RequestContext): Promise<void>;
71
+ /** People hold their own tokens here, so rooms and participants can name a member. */
72
+ memberTokens: boolean;
73
+ /** The member a request's personal token names, or null; refuses nothing. */
74
+ member(request: Request): Promise<RelayMember | null>;
75
+ /** Refuses a room creation without a token that may create rooms, counts it against the caller, and returns the member creating it. */
76
+ beforeCreate(request: Request, context?: RequestContext): Promise<RelayMember | null>;
60
77
  /**
61
- * The team token check behind token-mode login: counted first, in its own bucket so
78
+ * The token check behind token-mode login: counted first, in its own bucket so
62
79
  * guessing cannot spend the create budget, then refused the same way whether the
63
- * token is missing or wrong.
80
+ * token is missing or wrong. Returns the member, or null for the team token.
64
81
  */
65
- beforeAccountCheck(request: Request, context?: RequestContext): Promise<void>;
82
+ beforeAccountCheck(request: Request, context?: RequestContext): Promise<RelayMember | null>;
66
83
  /** Counts an invite redemption against the caller and the whole relay, before the code is looked up. */
67
84
  beforeRedeem(request: Request, context?: RequestContext): Promise<void>;
68
85
  /** A code that matched nothing costs the caller once more, so guessing is slower than joining. */
@@ -1 +1 @@
1
- {"version":3,"file":"admission.d.ts","sourceRoot":"","sources":["../src/admission.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,YAAY,CAAC;AAE/C,sGAAsG;AACtG,eAAO,MAAM,mBAAmB,8BAA8B,CAAC;AAE/D,eAAO,MAAM,qBAAqB,kFAAkF,CAAC;AAErH,gGAAgG;AAChG,eAAO,MAAM,kBAAkB,8CAA8C,CAAC;AAE9E,MAAM,MAAM,SAAS,GAAG;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC,CAAC;AAE5C,MAAM,MAAM,YAAY,GAAG;IAAC,EAAE,EAAE,IAAI,CAAA;CAAC,GAAG;IAAC,EAAE,EAAE,KAAK,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAC,CAAC;AAE1E,2HAA2H;AAC3H,MAAM,WAAW,WAAW;IACxB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC5E;AAED,MAAM,MAAM,eAAe,GAAG;IAC1B,6CAA6C;IAC7C,yBAAyB,EAAE,MAAM,CAAC;IAClC,iGAAiG;IACjG,yBAAyB,EAAE,MAAM,CAAC;IAClC,+EAA+E;IAC/E,qBAAqB,EAAE,MAAM,CAAC;IAC9B,sHAAsH;IACtH,+BAA+B,EAAE,MAAM,CAAC;CAC3C,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,eAAiJ,CAAC;AAEzL,MAAM,MAAM,gBAAgB,GAAG;IAC3B,gHAAgH;IAChH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAClC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gKAAgK;IAChK,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,KAAK,MAAM,GAAG,SAAS,CAAC;IAClF,qGAAqG;IACrG,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC;CACnE,CAAC;AAIF,KAAK,wBAAwB,GAAG;IAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAC,CAAC;AAEvE,6GAA6G;AAC7G,wBAAgB,iBAAiB,CAAC,EAAC,GAAc,EAAE,OAAgB,EAAC,GAAE,wBAA6B,GAAG,WAAW,CAwBhH;AAED,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB;4BAgBhB,OAAO,KAAG,OAAO,CAAC,OAAO,CAAC;IAM3D,mDAAmD;;IAEnD,2FAA2F;0BAC/D,OAAO,YAAW,cAAc,GAAQ,OAAO,CAAC,IAAI,CAAC;IAMjF;;;;OAIG;gCAC+B,OAAO,YAAW,cAAc,GAAQ,OAAO,CAAC,IAAI,CAAC;IAMvF,wGAAwG;0BAC5E,OAAO,YAAW,cAAc,GAAQ,OAAO,CAAC,IAAI,CAAC;IAIjF,kGAAkG;gCAChE,OAAO,YAAW,cAAc,GAAQ,OAAO,CAAC,IAAI,CAAC;EAO9F;AAED,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAE3D;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAInF"}
1
+ {"version":3,"file":"admission.d.ts","sourceRoot":"","sources":["../src/admission.ts"],"names":[],"mappings":"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"}
package/dist/admission.js CHANGED
@@ -7,6 +7,8 @@ export const CREATE_TOKEN_HEADER = 'x-pairlobby-account-token';
7
7
  export const CREATE_TOKEN_REQUIRED = 'this relay needs its create token to start a room; set PAIRLOBBY_CREATE_TOKEN';
8
8
  /** One message for a missing and a wrong team token, so the answer says nothing about which. */
9
9
  export const TEAM_TOKEN_REFUSED = 'this is not the team token for this relay';
10
+ /** The same, on a relay where people log in with their own tokens. */
11
+ export const LOGIN_TOKEN_REFUSED = 'this token does not log in to this relay';
10
12
  export const DEFAULT_ADMISSION_LIMITS = { createPerMinutePerAddress: 10, redeemPerMinutePerAddress: 20, redeemPerMinuteGlobal: 300, accountCheckPerMinutePerAddress: 30 };
11
13
  /** Token buckets in memory: each key refills at its per-minute rate and holds at most one minute's worth. */
12
14
  export function memoryRateLimiter({ now = Date.now, maxKeys = 10_000 } = {}) {
@@ -50,32 +52,53 @@ export function createAdmission(options) {
50
52
  throw new ProtocolError('rate_limited', 'too many attempts from here; wait a moment and try again', { retryAfterMs: decision.retryAfterMs });
51
53
  }
52
54
  };
53
- /** Whether the request carries the create token, compared as digests so the time taken says nothing about it. */
54
- const tokenMatches = async (request) => {
55
+ const tokenRequired = tokenDigest !== null || options.members !== undefined;
56
+ /** Who the token in the request stands for; the create token is compared as digests so the time taken says nothing about it. */
57
+ const caller = async (request) => {
55
58
  const offered = request.headers.get(CREATE_TOKEN_HEADER);
56
- return Boolean(tokenDigest && offered && digestsEqual(await hashCredential(offered), await tokenDigest));
59
+ if (!offered || (!tokenDigest && !options.members)) {
60
+ return null;
61
+ }
62
+ const digest = await hashCredential(offered);
63
+ if (tokenDigest && digestsEqual(digest, await tokenDigest)) {
64
+ return { kind: 'team' };
65
+ }
66
+ const member = await options.members?.(digest);
67
+ return member ? { kind: 'member', member } : null;
57
68
  };
69
+ const tokenMatches = async (request) => (await caller(request))?.kind === 'team';
58
70
  return {
59
71
  tokenMatches,
60
- /** Creating a room needs the create token here. */
61
- createTokenRequired: tokenDigest !== null,
62
- /** Refuses a room creation without the create token, then counts it against the caller. */
72
+ /** Creating a room needs the create token or a personal token here. */
73
+ createTokenRequired: tokenRequired,
74
+ /** People hold their own tokens here, so rooms and participants can name a member. */
75
+ memberTokens: options.members !== undefined,
76
+ /** The member a request's personal token names, or null; refuses nothing. */
77
+ async member(request) {
78
+ const found = await caller(request);
79
+ return found?.kind === 'member' ? found.member : null;
80
+ },
81
+ /** Refuses a room creation without a token that may create rooms, counts it against the caller, and returns the member creating it. */
63
82
  async beforeCreate(request, context = {}) {
64
- if (tokenDigest && !(await tokenMatches(request))) {
83
+ const found = await caller(request);
84
+ if (tokenRequired && !found) {
65
85
  throw new ProtocolError('unauthorized', CREATE_TOKEN_REQUIRED);
66
86
  }
67
87
  await take(request, context, `create:address:${address(request, context)}`, 1, { perMinute: limits.createPerMinutePerAddress });
88
+ return found?.kind === 'member' ? found.member : null;
68
89
  },
69
90
  /**
70
- * The team token check behind token-mode login: counted first, in its own bucket so
91
+ * The token check behind token-mode login: counted first, in its own bucket so
71
92
  * guessing cannot spend the create budget, then refused the same way whether the
72
- * token is missing or wrong.
93
+ * token is missing or wrong. Returns the member, or null for the team token.
73
94
  */
74
95
  async beforeAccountCheck(request, context = {}) {
75
96
  await take(request, context, `account-check:address:${address(request, context)}`, 1, { perMinute: limits.accountCheckPerMinutePerAddress });
76
- if (!(await tokenMatches(request))) {
77
- throw new ProtocolError('unauthorized', TEAM_TOKEN_REFUSED);
97
+ const found = await caller(request);
98
+ if (!found || (found.kind === 'team' && options.teamTokenLogin === false)) {
99
+ throw new ProtocolError('unauthorized', options.members ? LOGIN_TOKEN_REFUSED : TEAM_TOKEN_REFUSED);
78
100
  }
101
+ return found.kind === 'member' ? found.member : null;
79
102
  },
80
103
  /** Counts an invite redemption against the caller and the whole relay, before the code is looked up. */
81
104
  async beforeRedeem(request, context = {}) {
@@ -1 +1 @@
1
- {"version":3,"file":"admission.js","sourceRoot":"","sources":["../src/admission.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"admission.js","sourceRoot":"","sources":["../src/admission.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ export declare class AutoCloseStore implements RoomStore {
8
8
  private readonly now;
9
9
  constructor(store: RoomStore, now: Clock);
10
10
  get files(): FileStore | undefined;
11
+ get unreceivedRequests(): RoomStore['unreceivedRequests'];
11
12
  createRoom(room: RoomRecord, participant: ParticipantRecord, event: RoomEvent): Promise<void>;
12
13
  loadRoom(roomId: string): Promise<RoomView | null>;
13
14
  apply(mutation: Mutation, idempotency: IdempotencyKey): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"auto-close-store.d.ts","sourceRoot":"","sources":["../src/auto-close-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auto-close-store.d.ts","sourceRoot":"","sources":["../src/auto-close-store.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAC,MAAM,qBAAqB,CAAC;AAE7I,OAAO,KAAK,EAAC,QAAQ,EAAE,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAE7D,OAAO,KAAK,EAAC,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAC,MAAM,YAAY,CAAC;AAEnF,KAAK,KAAK,GAAG,MAAM,MAAM,CAAC;AAE1B,KAAK,cAAc,GAAG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAWxD,qBAAa,cAAe,YAAW,SAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAa,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAtC,KAAK,EAAE,SAAS,EAAmB,GAAG,EAAE,KAAK;IAE1E,IAAI,KAAK,IAAI,SAAS,GAAG,SAAS,CAEjC;IAED,IAAI,kBAAkB,IAAI,SAAS,CAAC,oBAAoB,CAAC,CAExD;IAEK,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7F,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAoBlD,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrE,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAI5E,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAIlE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAIrE,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAIjF,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAI5D,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAIzI,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpE,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAIlG,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAIpD,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAI/E,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAIhF,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAIzG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/E,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAI5D,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAG5C"}
@@ -22,6 +22,9 @@ export class AutoCloseStore {
22
22
  get files() {
23
23
  return this.store.files;
24
24
  }
25
+ get unreceivedRequests() {
26
+ return this.store.unreceivedRequests?.bind(this.store);
27
+ }
25
28
  async createRoom(room, participant, event) {
26
29
  await this.store.createRoom(refreshAutoClose(room, [participant], event, this.now()), participant, event);
27
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"auto-close-store.js","sourceRoot":"","sources":["../src/auto-close-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auto-close-store.js","sourceRoot":"","sources":["../src/auto-close-store.ts"],"names":[],"mappings":"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"}
package/dist/changes.d.ts CHANGED
@@ -35,6 +35,7 @@ export declare class NotifyingStore implements RoomStore {
35
35
  private readonly notifier;
36
36
  constructor(store: RoomStore, notifier: ChangeNotifier);
37
37
  get files(): FileStore | undefined;
38
+ get unreceivedRequests(): RoomStore['unreceivedRequests'];
38
39
  createRoom(room: RoomRecord, participant: ParticipantRecord, event: RoomEvent): Promise<void>;
39
40
  loadRoom(roomId: string): Promise<RoomView | null>;
40
41
  apply(mutation: Mutation, idempotency: IdempotencyKey): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"changes.d.ts","sourceRoot":"","sources":["../src/changes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"changes.d.ts","sourceRoot":"","sources":["../src/changes.ts"],"names":[],"mappings":"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"}
package/dist/changes.js CHANGED
@@ -73,6 +73,9 @@ export class NotifyingStore {
73
73
  get files() {
74
74
  return this.store.files;
75
75
  }
76
+ get unreceivedRequests() {
77
+ return this.store.unreceivedRequests?.bind(this.store);
78
+ }
76
79
  async createRoom(room, participant, event) {
77
80
  await this.store.createRoom(room, participant, event);
78
81
  this.notifier.changed(room.roomId);
@@ -1 +1 @@
1
- {"version":3,"file":"changes.js","sourceRoot":"","sources":["../src/changes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"changes.js","sourceRoot":"","sources":["../src/changes.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,gFAAgF;AAChF,oFAAoF;AAiBpF,MAAM,OAAO,cAAc;IACN,OAAO,GAAG,IAAI,GAAG,EAA2C,CAAC;IAC7D,UAAU,CAAS;IAC5B,IAAI,GAAG,CAAC,CAAC;IACT,MAAM,GAAG,KAAK,CAAC;IAEvB,YAAY,EAAC,UAAU,GAAG,IAAI,KAA2B,EAAE;QACvD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED,8CAA8C;IAC9C,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,MAAc,EAAE,EAAU;QAC3B,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,MAAM,GAA+B,GAAG,EAAE,GAAE,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;YAC7C,IAAI,IAAI,GAAG,KAAK,CAAC;YACjB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAClD,MAAM,GAAG,CAAC,KAAK,EAAE,EAAE;gBACf,IAAI,IAAI,EAAE,CAAC;oBACP,OAAO;gBACX,CAAC;gBACD,IAAI,GAAG,IAAI,CAAC;gBACZ,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACtC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBACrB,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC;oBACnB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAChC,CAAC;gBACD,OAAO,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;QACnD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/B,OAAO,EAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC,CAAC;IAClD,CAAC;IAED,OAAO,CAAC,MAAc;QAClB,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YACzD,MAAM,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;IACL,CAAC;IAED,kFAAkF;IAClF,KAAK;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;YAC5C,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;gBAC7B,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;QACL,CAAC;IACL,CAAC;CACJ;AAED,2FAA2F;AAC3F,MAAM,OAAO,cAAc;IACM;IAAmC;IAAhE,YAA6B,KAAgB,EAAmB,QAAwB;QAA3D,UAAK,GAAL,KAAK,CAAW;QAAmB,aAAQ,GAAR,QAAQ,CAAgB;IAAG,CAAC;IAE5F,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IAC5B,CAAC;IAED,IAAI,kBAAkB;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAgB,EAAE,WAA8B,EAAE,KAAgB;QAC/E,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,QAAQ,CAAC,MAAc;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAAkB,EAAE,WAA2B;QACvD,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,UAAU,CAAC,MAAc,EAAE,KAAa,EAAE,KAAa;QACnD,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,UAAU,CAAC,MAAc,EAAE,GAAW;QAClC,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,SAAS,CAAC,MAAc,EAAE,OAAe;QACrC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,iBAAiB,CAAC,MAAc,EAAE,GAAW;QACzC,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrD,CAAC;IAED,SAAS,CAAC,MAAoB;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,cAAc,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,aAAa,CAAC,MAAc,EAAE,SAAiB,EAAE,cAAsB,EAAE,kBAAiC;QACtG,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,kBAAkB,CAAC,CAAC;IAC3F,CAAC;IAED,cAAc,CAAC,MAAc,EAAE,aAAqB;QAChD,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC5D,CAAC;IAED,uBAAuB,CAAC,MAAc,EAAE,cAAsB;QAC1D,OAAO,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACtE,CAAC;IAED,SAAS,CAAC,MAAc;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,cAAc,CAAC,MAAc,EAAE,OAAe;QAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,aAAa,CAAC,MAAc,EAAE,cAAsB;QAChD,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAgB,EAAE,QAA0B,EAAE,gBAAwB;QACpF,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,eAAe,CAAC,MAAc,EAAE,KAAa,EAAE,KAAa,EAAE,WAAoB;QAC9E,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,SAAkC;QACjE,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc;QAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,aAAa,CAAC,GAAW,EAAE,KAAa;QACpC,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,eAAe;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC;CACJ"}
package/dist/relay.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { LiveTransport, LocalRoom, RelayLimits, ServerDescription } from '@pairlobby/protocol';
2
- import type { Admission } from './admission.js';
1
+ import type { LiveTransport, LocalRoom, ReceiptMode, RelayLimits, ServerDescription } from '@pairlobby/protocol';
2
+ import type { Admission, RelayMember } from './admission.js';
3
3
  import type { ChangeNotifier } from './changes.js';
4
4
  import type { RequestContext, RoomExecutor, Scheduler } from './ports.js';
5
5
  import type { RoomService } from './service.js';
@@ -61,10 +61,16 @@ export interface RelayOptions {
61
61
  discovery?: () => DiscoveryDocument;
62
62
  /**
63
63
  * Token-mode login: answers `GET /api/online/account` for a caller holding the team
64
- * token (the create token). Absent means the path is unknown. Needs `admission`.
64
+ * token (the create token) or a personal token, with the member it names or null for
65
+ * the team token. Absent means the path is unknown. Needs `admission`.
65
66
  */
66
- accountCheck?: (request: Request) => TeamAccount;
67
+ accountCheck?: (request: Request, member: RelayMember | null) => RelayAccount;
67
68
  }
69
+ /**
70
+ * Internal claim from `edge` to `inRoom`: the member whose personal token came with a room
71
+ * creation or an invite redemption. `edge` removes any copy a caller sent.
72
+ */
73
+ export declare const MEMBER_HEADER = "x-pairlobby-member";
68
74
  /** Where `edge` sends a request that needs a room: the room's id, and the request to run there. */
69
75
  export type RoomRoute = {
70
76
  roomId: string;
@@ -84,10 +90,12 @@ export interface Relay {
84
90
  export interface DiscoveryDocument {
85
91
  version: 1;
86
92
  name?: string;
93
+ /** `members` says people log in with their own tokens, so a login names a person. */
87
94
  login: {
88
95
  mode: 'token' | 'none';
89
96
  tokenHelp?: string;
90
97
  verify?: string;
98
+ members?: boolean;
91
99
  };
92
100
  relays: string[];
93
101
  features: string[];
@@ -101,6 +109,15 @@ export interface TeamAccount {
101
109
  server: string;
102
110
  handle: null;
103
111
  }
112
+ /** The account a personal token stands for: one member, by handle. */
113
+ export interface MemberAccount {
114
+ email: null;
115
+ userId: `member:${string}`;
116
+ name: string | null;
117
+ server: string;
118
+ handle: string;
119
+ }
120
+ export type RelayAccount = TeamAccount | MemberAccount;
104
121
  export interface ServerInfo {
105
122
  /** Addresses other devices can use to reach this server; empty when it only listens on this device. */
106
123
  shareUrls: string[];
@@ -116,13 +133,14 @@ export type RelayDescriptionInput = {
116
133
  limits: RelayLimits;
117
134
  features: string[];
118
135
  transport?: LiveTransport;
136
+ receiptMode?: ReceiptMode;
119
137
  info?: ServerInfo;
120
138
  };
121
139
  /**
122
140
  * `GET /v1/server` for any relay, including one that answers it outside this router, such as
123
141
  * a Worker in front of Durable Objects. Every relay speaking this protocol has message stages.
124
142
  */
125
- export declare function describeRelay({ limits, features, transport, info }: RelayDescriptionInput): ServerDescription;
143
+ export declare function describeRelay({ limits, features, transport, receiptMode, info }: RelayDescriptionInput): ServerDescription;
126
144
  /** Refuses a request declaring another protocol version, before anything else looks at it. Null when it may go on. */
127
145
  export declare function protocolVersionRefusal(request: Request): Response | null;
128
146
  //# sourceMappingURL=relay.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../src/relay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../src/relay.ts"],"names":[],"mappings":"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"}
package/dist/relay.js CHANGED
@@ -5,8 +5,13 @@
5
5
  //! otherwise it names the room. `inRoom` then runs it inside that room. A platform with
6
6
  //! one process calls `handle`, which does both; one with an object per room, such as a
7
7
  //! Worker in front of Durable Objects, calls `edge` in front and `inRoom` in the object.
8
- import { INVITE_PROBE_LENGTH, CreateInviteRequest, CreateRoomRequest, PROTOCOL_VERSION, PROTOCOL_VERSION_HEADER, FileId, MAX_EVENT_WAIT_MS, ProtocolError, ReadEventsQuery, RedeemInviteRequest, JoinAsGuestRequest, LocalJoinRequest, RoomId, hashCredential, newId, normalizeInviteCode, SetLocalJoinRequest, RenameRoomRequest, RenameSelfRequest, SendEventRequest, SetAccessRequest, SetInviteRoleRequest, SetAutoCloseRequest, SetLockedRequest, SetMutedRequest, SetPermissionsRequest, SetRoleRequest, TurnClaimRequest, TurnTokenRequest, TurnModeRequest, TurnActionRequest, ResolveRequestRequest, ProviderWaitRequest, SetExpiryRequest, ControlRequest } from '@pairlobby/protocol';
8
+ import { INVITE_PROBE_LENGTH, CreateInviteRequest, CreateRoomRequest, PROTOCOL_VERSION, PROTOCOL_VERSION_HEADER, FileId, MAX_EVENT_WAIT_MS, ProtocolError, ReadEventsQuery, ReceiptRequest, RedeemInviteRequest, JoinAsGuestRequest, LocalJoinRequest, RoomId, hashCredential, newId, normalizeInviteCode, SetLocalJoinRequest, RenameRoomRequest, RenameSelfRequest, SendEventRequest, SetAccessRequest, SetInviteRoleRequest, SetAutoCloseRequest, SetLockedRequest, SetMutedRequest, SetPermissionsRequest, SetRoleRequest, TurnClaimRequest, TurnTokenRequest, TurnModeRequest, TurnActionRequest, ResolveRequestRequest, ProviderWaitRequest, SetExpiryRequest, ControlRequest } from '@pairlobby/protocol';
9
9
  import { directExecutor } from './ports.js';
10
+ /**
11
+ * Internal claim from `edge` to `inRoom`: the member whose personal token came with a room
12
+ * creation or an invite redemption. `edge` removes any copy a caller sent.
13
+ */
14
+ export const MEMBER_HEADER = 'x-pairlobby-member';
10
15
  const JSON_HEADERS = { 'content-type': 'application/json; charset=utf-8', [PROTOCOL_VERSION_HEADER]: String(PROTOCOL_VERSION) };
11
16
  export function createRelay(options) {
12
17
  const { service } = options;
@@ -15,7 +20,7 @@ export function createRelay(options) {
15
20
  const peerIsLocal = (request, context) => !options.behindProxy && Boolean(options.peerIsLocal?.(request, context));
16
21
  async function edge(request, context = {}) {
17
22
  try {
18
- return await edgeRoute(request, context, options, inviteRoom, peerIsLocal);
23
+ return await edgeRoute(claiming(request, null), context, options, inviteRoom, peerIsLocal);
19
24
  }
20
25
  catch (error) {
21
26
  return failure(error);
@@ -94,8 +99,8 @@ async function edgeRoute(request, context, options, inviteRoom, peerIsLocal) {
94
99
  return new Response(JSON.stringify(options.discovery()), { status: 200, headers: { ...JSON_HEADERS, 'cache-control': 'public, max-age=300' } });
95
100
  }
96
101
  if (options.accountCheck && options.admission && method === 'GET' && path === '/api/online/account') {
97
- await options.admission.beforeAccountCheck(request, context);
98
- return json(options.accountCheck(request));
102
+ const member = await options.admission.beforeAccountCheck(request, context);
103
+ return json(options.accountCheck(request, member));
99
104
  }
100
105
  const local = await routeLocal(request, context, options, peerIsLocal);
101
106
  if (local) {
@@ -106,8 +111,8 @@ async function edgeRoute(request, context, options, inviteRoom, peerIsLocal) {
106
111
  }
107
112
  // A new room gets its id here, because a relay with an object per room routes by it.
108
113
  if (segments[1] === 'rooms' && segments.length === 2 && method === 'POST') {
109
- await options.admission?.beforeCreate(request, context);
110
- return { roomId: newId('room'), request };
114
+ const member = (await options.admission?.beforeCreate(request, context)) ?? null;
115
+ return { roomId: newId('room'), request: claiming(request, member) };
111
116
  }
112
117
  // A code names its room only through its digest; the room then checks the code itself.
113
118
  if (segments[1] === 'invites' && segments[2] === 'redeem' && method === 'POST') {
@@ -120,13 +125,30 @@ async function edgeRoute(request, context, options, inviteRoom, peerIsLocal) {
120
125
  await options.admission?.afterUnknownInvite(request, context);
121
126
  throw new ProtocolError('invite_unknown', normalized ? 'that invite code is not valid' : 'that invite code is not well formed');
122
127
  }
123
- return { roomId, request: new Request(request.url, { method: request.method, headers: request.headers, body }) };
128
+ const member = (await options.admission?.member(request)) ?? null;
129
+ return { roomId, request: claiming(new Request(request.url, { method: request.method, headers: request.headers, body }), member) };
124
130
  }
125
131
  if (segments[1] !== 'rooms' || segments.length < 3) {
126
132
  return errorResponse('invalid_request', 'unknown path', 404);
127
133
  }
128
134
  return { roomId: segments[2], request };
129
135
  }
136
+ /** The request with `MEMBER_HEADER` naming `member`, or without it for null; unchanged when it already says so. */
137
+ function claiming(request, member) {
138
+ if (request.headers.get(MEMBER_HEADER) === (member?.handle ?? null)) {
139
+ return request;
140
+ }
141
+ const headers = new Headers(request.headers);
142
+ headers.delete(MEMBER_HEADER);
143
+ if (member) {
144
+ headers.set(MEMBER_HEADER, member.handle);
145
+ }
146
+ return new Request(request, { headers });
147
+ }
148
+ /** The verified member `edge` put on a request; only `edge` may set it. */
149
+ function claimedMember(request) {
150
+ return request.headers.get(MEMBER_HEADER) ?? undefined;
151
+ }
130
152
  const NOT_LOCAL = 'joining by name is only open to devices on this relay\'s local network or tailnet; ask for an invite code';
131
153
  /**
132
154
  * Finding and joining rooms by name: both need a transport that vouches the caller is local.
@@ -169,22 +191,25 @@ export function describe(options) {
169
191
  ...(options.inviteProbe ? ['invite-probe'] : []),
170
192
  ...(options.admission?.createTokenRequired ? ['create-token'] : []),
171
193
  ...(options.accountCheck && options.admission ? ['token-login'] : []),
194
+ ...(options.admission?.memberTokens ? ['member-tokens'] : []),
195
+ ...(profile.receiptMode !== 'events' ? ['receipt-watermark'] : []),
172
196
  ...(options.features ?? [])
173
197
  ];
174
198
  const transport = options.transport ?? (options.changes ? 'long-poll' : undefined);
175
- return describeRelay({ limits: profile.limits, features, ...(transport ? { transport } : {}), ...(options.serverInfo ? { info: options.serverInfo() } : {}) });
199
+ return describeRelay({ limits: profile.limits, features, receiptMode: profile.receiptMode, ...(transport ? { transport } : {}), ...(options.serverInfo ? { info: options.serverInfo() } : {}) });
176
200
  }
177
201
  /**
178
202
  * `GET /v1/server` for any relay, including one that answers it outside this router, such as
179
203
  * a Worker in front of Durable Objects. Every relay speaking this protocol has message stages.
180
204
  */
181
- export function describeRelay({ limits, features, transport, info }) {
205
+ export function describeRelay({ limits, features, transport, receiptMode, info }) {
182
206
  return {
183
207
  protocol: PROTOCOL_VERSION,
184
208
  ...info,
185
209
  features: [...new Set(['message-stages', ...features])],
186
210
  ...(transport ? { transport: { live: transport, ...(transport === 'long-poll' ? { maxWaitMs: MAX_EVENT_WAIT_MS } : {}) } } : {}),
187
- limits
211
+ limits,
212
+ ...(receiptMode ? { receiptMode } : {})
188
213
  };
189
214
  }
190
215
  /**
@@ -192,14 +217,14 @@ export function describeRelay({ limits, features, transport, info }) {
192
217
  * answered as soon as anything is newer than `after`, at the deadline, or on any other change
193
218
  * to the room, so the client rereads whatever else it watches.
194
219
  */
195
- async function readWaiting(service, changes, roomId, credential, after, limit, waitMs) {
196
- const waiting = changes.wait(roomId, Math.min(waitMs, MAX_EVENT_WAIT_MS));
220
+ async function readWaiting(service, changes, roomId, credential, query) {
221
+ const waiting = changes.wait(roomId, Math.min(query.wait, MAX_EVENT_WAIT_MS));
197
222
  try {
198
- const page = await service.read(roomId, credential, after, limit);
199
- if (page.events.length > 0 || !waiting || !(await waiting.changed)) {
223
+ const page = await service.read(roomId, credential, query.after, query.limit, query.receiptsAfter);
224
+ if (page.events.length > 0 || (page.receipts?.length ?? 0) > 0 || !waiting || !(await waiting.changed)) {
200
225
  return json(page);
201
226
  }
202
- return json(await service.read(roomId, credential, after, limit));
227
+ return json(await service.read(roomId, credential, query.after, query.limit, query.receiptsAfter));
203
228
  }
204
229
  finally {
205
230
  waiting?.cancel();
@@ -213,13 +238,15 @@ async function roomRoute(request, roomId, context, options) {
213
238
  const method = request.method.toUpperCase();
214
239
  if (segments[1] === 'rooms' && segments.length === 2 && method === 'POST') {
215
240
  const input = CreateRoomRequest.parse(await request.json());
216
- const created = await service.createRoom({ ...input, roomId });
241
+ const member = claimedMember(request);
242
+ const created = await service.createRoom({ ...input, roomId, ...(member ? { owner: member, member } : {}) });
217
243
  return json({ room: created.snapshot, participantId: created.participantId, invite: created.invite }, 201);
218
244
  }
219
245
  if (segments[1] === 'invites' && segments[2] === 'redeem' && method === 'POST') {
220
246
  const input = RedeemInviteRequest.parse(await request.json());
247
+ const member = claimedMember(request);
221
248
  try {
222
- const result = await service.redeemInvite(input);
249
+ const result = await service.redeemInvite({ ...input, ...(member ? { member } : {}) });
223
250
  return json({ roomId: result.roomId, participantId: result.participantId, role: result.role, room: result.snapshot });
224
251
  }
225
252
  catch (error) {
@@ -329,10 +356,12 @@ async function roomRoute(request, roomId, context, options) {
329
356
  case 'GET events': {
330
357
  const query = ReadEventsQuery.parse(Object.fromEntries(new URL(request.url).searchParams));
331
358
  if (changes && query.wait > 0) {
332
- return readWaiting(service, changes, roomId, credential, query.after, query.limit, query.wait);
359
+ return readWaiting(service, changes, roomId, credential, query);
333
360
  }
334
- return json(await service.read(roomId, credential, query.after, query.limit));
361
+ return json(await service.read(roomId, credential, query.after, query.limit, query.receiptsAfter));
335
362
  }
363
+ case 'POST receipts':
364
+ return json(await service.receipt(roomId, credential, ReceiptRequest.parse(await request.json()).throughSeq));
336
365
  case 'POST events': {
337
366
  const input = SendEventRequest.parse(await request.json());
338
367
  const result = await service.send(roomId, credential, input);