@pairlobby/fixtures 0.18.0 → 0.20.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/fixtures
2
2
 
3
- Part of [PairLobby](https://github.com/PairLobby/app), built from `fixtures` at version 0.18.0. See that repository for documentation.
3
+ Part of [PairLobby](https://github.com/PairLobby/app), built from `fixtures` at version 0.20.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.
@@ -0,0 +1,4 @@
1
+ import type { StoreFactory } from './contract.js';
2
+ /** For a store that keeps files: what every relay must do with them, whatever holds the bytes. */
3
+ export declare function runFileContract(label: string, makeStore: StoreFactory): void;
4
+ //# sourceMappingURL=file-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-contract.d.ts","sourceRoot":"","sources":["../src/file-contract.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAYhD,kGAAkG;AAClG,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,QAkFrE"}
@@ -0,0 +1,88 @@
1
+ import { afterEach, beforeEach, describe, expect, test } from 'vitest';
2
+ import { DEFAULT_MAX_FILE_BYTES, DEFAULT_ROOM_POLICY, UNATTACHED_FILE_LIFETIME_MS, newCredential, newId } from '@pairlobby/protocol';
3
+ import { RoomService } from '@pairlobby/server-core';
4
+ /** Bytes that are not text and cross several storage chunks: 1 MiB chunks are the smallest any store uses. */
5
+ function binary(size) {
6
+ const bytes = new Uint8Array(size);
7
+ for (let index = 0; index < size; index++) {
8
+ bytes[index] = (index * 7 + (index >> 10)) & 0xff;
9
+ }
10
+ return bytes;
11
+ }
12
+ /** For a store that keeps files: what every relay must do with them, whatever holds the bytes. */
13
+ export function runFileContract(label, makeStore) {
14
+ describe(`${label} / files`, () => {
15
+ let store, service, now, roomId, alice, bob, controller;
16
+ const create = async (policy) => {
17
+ const room = await service.createRoom({ name: 'files', displayName: 'alice', kind: 'human', participantCredential: alice, controllerCredential: controller, ...(policy ? { policy } : {}) });
18
+ roomId = room.roomId;
19
+ await service.redeemInvite({ code: room.invite.code, displayName: 'bob', kind: 'agent', participantCredential: bob, attemptId: newId('attempt') });
20
+ };
21
+ const upload = (name, bytes, credential = alice) => service.uploadFile(roomId, credential, { name, mediaType: 'application/octet-stream', bytes });
22
+ const sendWith = (attachments, credential = alice) => service.send(roomId, credential, { type: 'message', payload: { text: 'files', priority: 'normal', attachments }, idempotencyKey: newId('event') });
23
+ beforeEach(async () => {
24
+ store = makeStore();
25
+ now = 1_800_000_000_000;
26
+ service = new RoomService(store, () => now);
27
+ alice = newCredential('participant');
28
+ bob = newCredential('participant');
29
+ controller = newCredential('controller');
30
+ await create();
31
+ });
32
+ afterEach(() => store.close?.());
33
+ test('the store keeps files and says so', async () => {
34
+ expect(store.files).toBeDefined();
35
+ expect((await service.snapshot(roomId, alice)).filesSupported).toBe(true);
36
+ });
37
+ test('an upload is the uploader\'s alone until a message carries it, then anyone in the room can list and fetch it', async () => {
38
+ const file = await upload('notes.txt', new TextEncoder().encode('hello'));
39
+ expect((await service.listFiles(roomId, alice)).files).toEqual([]);
40
+ await expect(service.downloadFile(roomId, bob, file.fileId)).rejects.toThrow('no such file');
41
+ expect((await service.downloadFile(roomId, alice, file.fileId)).bytes).toEqual(new TextEncoder().encode('hello'));
42
+ const sent = await sendWith([file]);
43
+ const listed = (await service.listFiles(roomId, bob)).files;
44
+ expect(listed).toHaveLength(1);
45
+ expect(listed[0]).toMatchObject({ fileId: file.fileId, name: 'notes.txt', size: 5, eventId: sent.event.eventId });
46
+ expect(new TextDecoder().decode((await service.downloadFile(roomId, bob, file.fileId)).bytes)).toBe('hello');
47
+ await expect(sendWith([file])).rejects.toThrow('already sent');
48
+ });
49
+ test('a file larger than one storage chunk comes back byte for byte', async () => {
50
+ const bytes = binary(3 * 1024 * 1024 + 17);
51
+ const file = await upload('video.bin', bytes);
52
+ await sendWith([file]);
53
+ const fetched = await service.downloadFile(roomId, bob, file.fileId);
54
+ expect(fetched.bytes.byteLength).toBe(bytes.byteLength);
55
+ // A deep toEqual over 3 MB takes seconds on a slow runner; the first differing byte says the same.
56
+ expect(fetched.bytes.findIndex((byte, index) => byte !== bytes[index])).toBe(-1);
57
+ expect(fetched.file.sha256).toBe(file.sha256);
58
+ });
59
+ test('usage counts sent and pending files against the room limit, and a refused upload stores nothing', async () => {
60
+ await create({ ...DEFAULT_ROOM_POLICY, maxRetainedFileBytes: 10 });
61
+ await sendWith([await upload('a.bin', binary(6))]);
62
+ await upload('b.bin', binary(3));
63
+ expect((await service.listFiles(roomId, alice)).usage).toEqual({ usedBytes: 9, limitBytes: 10, maxFileBytes: DEFAULT_MAX_FILE_BYTES });
64
+ await expect(upload('c.bin', binary(2))).rejects.toThrow('file storage limit');
65
+ expect((await service.listFiles(roomId, alice)).usage?.usedBytes).toBe(9);
66
+ });
67
+ test('an upload nobody sent is removed after an hour; a sent one stays', async () => {
68
+ const kept = await upload('kept.txt', binary(4));
69
+ await sendWith([kept]);
70
+ const dropped = await upload('dropped.txt', binary(4));
71
+ now += UNATTACHED_FILE_LIFETIME_MS + 1;
72
+ await upload('later.txt', binary(4));
73
+ await expect(service.downloadFile(roomId, alice, dropped.fileId)).rejects.toThrow('no such file');
74
+ expect((await service.downloadFile(roomId, bob, kept.fileId)).bytes).toEqual(binary(4));
75
+ expect((await service.listFiles(roomId, alice)).usage?.usedBytes).toBe(8);
76
+ });
77
+ test('an export lists every sent file, and deleting the room removes them', async () => {
78
+ const file = await upload('report.json', new TextEncoder().encode('{}'));
79
+ await sendWith([file]);
80
+ const exported = await service.export(roomId, alice);
81
+ expect(exported.files?.map((entry) => entry.fileId)).toEqual([file.fileId]);
82
+ await service.delete(roomId, controller);
83
+ expect(await store.files.file(roomId, file.fileId)).toBeNull();
84
+ expect(await store.files.usedBytes(roomId)).toBe(0);
85
+ });
86
+ });
87
+ }
88
+ //# sourceMappingURL=file-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-contract.js","sourceRoot":"","sources":["../src/file-contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAC,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAC,sBAAsB,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,aAAa,EAAE,KAAK,EAAC,MAAM,qBAAqB,CAAC;AAEnI,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAC;AAInD,8GAA8G;AAC9G,SAAS,MAAM,CAAC,IAAY;IACxB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IACnC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACxC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IACtD,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,SAAuB;IAClE,QAAQ,CAAC,GAAG,KAAK,UAAU,EAAE,GAAG,EAAE;QAC9B,IAAI,KAAwB,EAAE,OAAoB,EAAE,GAAW,EAAE,MAAc,EAAE,KAAa,EAAE,GAAW,EAAE,UAAkB,CAAC;QAChI,MAAM,MAAM,GAAG,KAAK,EAAE,MAAmB,EAAE,EAAE;YACzC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,oBAAoB,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC;YACzL,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YACrB,MAAM,OAAO,CAAC,YAAY,CAAC,EAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,qBAAqB,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,EAAC,CAAC,CAAC;QACrJ,CAAC,CAAC;QACF,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,KAAiB,EAAE,UAAU,GAAG,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,EAAC,IAAI,EAAE,SAAS,EAAE,0BAA0B,EAAE,KAAK,EAAC,CAAC,CAAC;QACrK,MAAM,QAAQ,GAAG,CAAC,WAAyB,EAAE,UAAU,GAAG,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,EAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAC,EAAE,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,EAAC,CAAC,CAAC;QACnN,UAAU,CAAC,KAAK,IAAI,EAAE;YAClB,KAAK,GAAG,SAAS,EAAE,CAAC;YACpB,GAAG,GAAG,iBAAiB,CAAC;YACxB,OAAO,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;YAC5C,KAAK,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;YACrC,GAAG,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;YACnC,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;YACzC,MAAM,MAAM,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QACH,SAAS,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAEjC,IAAI,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAClC,MAAM,CAAC,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,8GAA8G,EAAE,KAAK,IAAI,EAAE;YAC5H,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1E,MAAM,CAAC,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACnE,MAAM,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAC7F,MAAM,CAAC,CAAC,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YAElH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;YAC5D,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAC,CAAC,CAAC;YAChH,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7G,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;YAC7E,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;YAC3C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YAC9C,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACvB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACrE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACxD,mGAAmG;YACnG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACjF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iGAAiG,EAAE,KAAK,IAAI,EAAE;YAC/G,MAAM,MAAM,CAAC,EAAC,GAAG,mBAAmB,EAAE,oBAAoB,EAAE,EAAE,EAAC,CAAC,CAAC;YACjE,MAAM,QAAQ,CAAC,CAAC,MAAM,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAC,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,sBAAsB,EAAC,CAAC,CAAC;YACrI,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;YAC/E,MAAM,CAAC,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;YAChF,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACvB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACvD,GAAG,IAAI,2BAA2B,GAAG,CAAC,CAAC;YACvC,MAAM,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAClG,MAAM,CAAC,CAAC,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACxF,MAAM,CAAC,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;YACnF,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACzE,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACvB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACrD,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAE5E,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,KAAK,CAAC,KAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAChE,MAAM,CAAC,MAAM,KAAK,CAAC,KAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC"}
package/dist/harness.d.ts CHANGED
@@ -63,9 +63,9 @@ export declare class RoomHarness {
63
63
  earliestSeq: number;
64
64
  events: ({
65
65
  at: number;
66
+ roomId: string;
66
67
  eventId: string;
67
68
  protocolVersion: 1;
68
- roomId: string;
69
69
  seq: number;
70
70
  senderId: string | null;
71
71
  idempotencyKey: string | null;
@@ -81,6 +81,13 @@ export declare class RoomHarness {
81
81
  priority: "normal" | "priority";
82
82
  responseStage?: "progress" | "final" | undefined;
83
83
  recovers?: string | undefined;
84
+ attachments?: {
85
+ name: string;
86
+ fileId: string;
87
+ size: number;
88
+ mediaType: string;
89
+ sha256: string;
90
+ }[] | undefined;
84
91
  };
85
92
  } | {
86
93
  type: "message.received";
@@ -290,6 +297,7 @@ export declare class RoomHarness {
290
297
  payload: {
291
298
  previous: {
292
299
  invite?: boolean | undefined;
300
+ attach?: boolean | undefined;
293
301
  rename?: boolean | undefined;
294
302
  lock?: boolean | undefined;
295
303
  mute?: boolean | undefined;
@@ -299,6 +307,7 @@ export declare class RoomHarness {
299
307
  };
300
308
  permissions: {
301
309
  invite?: boolean | undefined;
310
+ attach?: boolean | undefined;
302
311
  rename?: boolean | undefined;
303
312
  lock?: boolean | undefined;
304
313
  mute?: boolean | undefined;
@@ -313,6 +322,7 @@ export declare class RoomHarness {
313
322
  participantId: string;
314
323
  previous: {
315
324
  invite?: boolean | undefined;
325
+ attach?: boolean | undefined;
316
326
  rename?: boolean | undefined;
317
327
  lock?: boolean | undefined;
318
328
  mute?: boolean | undefined;
@@ -322,6 +332,7 @@ export declare class RoomHarness {
322
332
  };
323
333
  permissions: {
324
334
  invite?: boolean | undefined;
335
+ attach?: boolean | undefined;
325
336
  rename?: boolean | undefined;
326
337
  lock?: boolean | undefined;
327
338
  mute?: boolean | undefined;
@@ -346,9 +357,9 @@ export declare class RoomHarness {
346
357
  export(credential: string): Promise<{
347
358
  room: {
348
359
  name: string;
349
- expiresAt: number | null;
350
360
  roomId: string;
351
361
  createdAt: number;
362
+ expiresAt: number | null;
352
363
  closedAt: number | null;
353
364
  lifecycle: "open" | "closed" | "expired" | "deleted";
354
365
  policy: {
@@ -361,6 +372,7 @@ export declare class RoomHarness {
361
372
  inviteLifetimeMs: number | null;
362
373
  exportWindowMs: number;
363
374
  connectTicketLifetimeMs: number;
375
+ maxFileBytes?: number | undefined;
364
376
  autoClose?: {
365
377
  mode: "off";
366
378
  } | {
@@ -376,6 +388,7 @@ export declare class RoomHarness {
376
388
  localJoin?: boolean | undefined;
377
389
  permissions?: {
378
390
  invite?: boolean | undefined;
391
+ attach?: boolean | undefined;
379
392
  rename?: boolean | undefined;
380
393
  lock?: boolean | undefined;
381
394
  mute?: boolean | undefined;
@@ -383,6 +396,7 @@ export declare class RoomHarness {
383
396
  pause?: boolean | undefined;
384
397
  turns?: boolean | undefined;
385
398
  } | undefined;
399
+ maxRetainedFileBytes?: number | undefined;
386
400
  };
387
401
  controlRevision: number;
388
402
  latestSeq: number;
@@ -408,6 +422,7 @@ export declare class RoomHarness {
408
422
  muted?: boolean | undefined;
409
423
  permissions?: {
410
424
  invite?: boolean | undefined;
425
+ attach?: boolean | undefined;
411
426
  rename?: boolean | undefined;
412
427
  lock?: boolean | undefined;
413
428
  mute?: boolean | undefined;
@@ -434,6 +449,7 @@ export declare class RoomHarness {
434
449
  renameSelfSupported?: boolean | undefined;
435
450
  adminRolesSupported?: boolean | undefined;
436
451
  permissionsSupported?: boolean | undefined;
452
+ filesSupported?: boolean | undefined;
437
453
  inviteRoleSupported?: boolean | undefined;
438
454
  autoCloseSupported?: boolean | undefined;
439
455
  interruptSupported?: boolean | undefined;
@@ -443,9 +459,9 @@ export declare class RoomHarness {
443
459
  };
444
460
  events: ({
445
461
  at: number;
462
+ roomId: string;
446
463
  eventId: string;
447
464
  protocolVersion: 1;
448
- roomId: string;
449
465
  seq: number;
450
466
  senderId: string | null;
451
467
  idempotencyKey: string | null;
@@ -461,6 +477,13 @@ export declare class RoomHarness {
461
477
  priority: "normal" | "priority";
462
478
  responseStage?: "progress" | "final" | undefined;
463
479
  recovers?: string | undefined;
480
+ attachments?: {
481
+ name: string;
482
+ fileId: string;
483
+ size: number;
484
+ mediaType: string;
485
+ sha256: string;
486
+ }[] | undefined;
464
487
  };
465
488
  } | {
466
489
  type: "message.received";
@@ -670,6 +693,7 @@ export declare class RoomHarness {
670
693
  payload: {
671
694
  previous: {
672
695
  invite?: boolean | undefined;
696
+ attach?: boolean | undefined;
673
697
  rename?: boolean | undefined;
674
698
  lock?: boolean | undefined;
675
699
  mute?: boolean | undefined;
@@ -679,6 +703,7 @@ export declare class RoomHarness {
679
703
  };
680
704
  permissions: {
681
705
  invite?: boolean | undefined;
706
+ attach?: boolean | undefined;
682
707
  rename?: boolean | undefined;
683
708
  lock?: boolean | undefined;
684
709
  mute?: boolean | undefined;
@@ -693,6 +718,7 @@ export declare class RoomHarness {
693
718
  participantId: string;
694
719
  previous: {
695
720
  invite?: boolean | undefined;
721
+ attach?: boolean | undefined;
696
722
  rename?: boolean | undefined;
697
723
  lock?: boolean | undefined;
698
724
  mute?: boolean | undefined;
@@ -702,6 +728,7 @@ export declare class RoomHarness {
702
728
  };
703
729
  permissions: {
704
730
  invite?: boolean | undefined;
731
+ attach?: boolean | undefined;
705
732
  rename?: boolean | undefined;
706
733
  lock?: boolean | undefined;
707
734
  mute?: boolean | undefined;
@@ -721,6 +748,7 @@ export declare class RoomHarness {
721
748
  };
722
749
  }))[];
723
750
  handovers: {
751
+ roomId: string;
724
752
  handoverId: string;
725
753
  revision: number;
726
754
  document: {
@@ -748,7 +776,6 @@ export declare class RoomHarness {
748
776
  body: string;
749
777
  };
750
778
  state: "offered" | "accepted" | "declined";
751
- roomId: string;
752
779
  senderId: string;
753
780
  recipientId: string;
754
781
  offeredEventId: string;
@@ -757,6 +784,16 @@ export declare class RoomHarness {
757
784
  }[];
758
785
  exportedAt: number;
759
786
  complete: boolean;
787
+ files?: {
788
+ name: string;
789
+ fileId: string;
790
+ size: number;
791
+ mediaType: string;
792
+ sha256: string;
793
+ uploaderId: string;
794
+ createdAt: number;
795
+ eventId: string;
796
+ }[] | undefined;
760
797
  }>;
761
798
  dropHistoryBefore(seq: number): void;
762
799
  dispose(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../src/harness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../src/harness.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from './contract.js';
2
2
  export * from './fake-agent.js';
3
+ export * from './file-contract.js';
3
4
  export * from './faulty-store.js';
4
5
  export * from './handover-samples.js';
5
6
  export * from './harness.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from './contract.js';
2
2
  export * from './fake-agent.js';
3
+ export * from './file-contract.js';
3
4
  export * from './faulty-store.js';
4
5
  export * from './handover-samples.js';
5
6
  export * from './harness.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { HandoverRecord, MessageRequest, RequestPage, InviteRecord, ParticipantRecord, RoomEvent, RoomRecord } from '@pairlobby/protocol';
2
2
  import type { Mutation, RoomView } from '@pairlobby/room-core';
3
- import type { EventPage, IdempotencyRecord, RoomStore } from '@pairlobby/server-core';
3
+ import type { EventPage, FileStore, IdempotencyRecord, RoomStore } from '@pairlobby/server-core';
4
4
  type IdempotencyKey = {
5
5
  key: string;
6
6
  requestDigest: string;
@@ -9,6 +9,9 @@ export declare class MemoryStore implements RoomStore {
9
9
  private rooms;
10
10
  private requests;
11
11
  private invites;
12
+ private stored;
13
+ readonly files: FileStore;
14
+ private inRoom;
12
15
  createRoom(room: RoomRecord, participant: ParticipantRecord, event: RoomEvent): Promise<void>;
13
16
  loadRoom(roomId: string): Promise<RoomView | null>;
14
17
  apply(mutation: Mutation, idempotency: IdempotencyKey): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"memory-store.d.ts","sourceRoot":"","sources":["../src/memory-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory-store.d.ts","sourceRoot":"","sources":["../src/memory-store.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,32 @@ export class MemoryStore {
6
6
  rooms = new Map();
7
7
  requests = new Map();
8
8
  invites = new Map();
9
+ stored = new Map();
10
+ files = {
11
+ putFile: async (file, bytes, limitBytes) => {
12
+ const held = [...this.stored.values()].filter((entry) => entry.file.roomId === file.roomId).reduce((total, entry) => total + entry.file.size, 0);
13
+ if (held + file.size > limitBytes) {
14
+ return false;
15
+ }
16
+ this.stored.set(file.fileId, { file, bytes: bytes.slice() });
17
+ return true;
18
+ },
19
+ file: async (roomId, fileId) => this.inRoom(roomId, fileId)?.file ?? null,
20
+ fileBytes: async (roomId, fileId) => this.inRoom(roomId, fileId)?.bytes.slice() ?? null,
21
+ attachedFiles: async (roomId) => [...this.stored.values()].map((entry) => entry.file).filter((file) => file.roomId === roomId && file.eventId !== null).sort((a, b) => a.createdAt - b.createdAt || a.fileId.localeCompare(b.fileId)),
22
+ usedBytes: async (roomId) => [...this.stored.values()].filter((entry) => entry.file.roomId === roomId).reduce((total, entry) => total + entry.file.size, 0),
23
+ deleteUnattachedFiles: async (roomId, before) => {
24
+ for (const [fileId, { file }] of this.stored) {
25
+ if (file.roomId === roomId && file.eventId === null && file.createdAt < before) {
26
+ this.stored.delete(fileId);
27
+ }
28
+ }
29
+ },
30
+ };
31
+ inRoom(roomId, fileId) {
32
+ const entry = this.stored.get(fileId);
33
+ return entry?.file.roomId === roomId ? entry : undefined;
34
+ }
9
35
  async createRoom(room, participant, event) {
10
36
  this.rooms.set(room.roomId, { room, participants: [participant], handovers: [], controls: [], events: [event], idempotency: new Map(), earliestSeq: 1 });
11
37
  }
@@ -24,6 +50,13 @@ export class MemoryStore {
24
50
  if (table.room.nextSeq !== mutation.appendEvent.seq) {
25
51
  throw new ProtocolError(mutation.expectedTurnRevision === undefined ? 'server_unavailable' : 'turn_conflict', 'concurrent room mutation; retry with the same idempotency key');
26
52
  }
53
+ const attaching = (mutation.attachFiles ?? []).map((fileId) => this.inRoom(mutation.room.roomId, fileId));
54
+ if (attaching.some((entry) => !entry || entry.file.eventId !== null)) {
55
+ throw new ProtocolError('invalid_request', 'an attached file is no longer available; upload it again');
56
+ }
57
+ for (const entry of attaching) {
58
+ entry.file = { ...entry.file, eventId: mutation.appendEvent.eventId };
59
+ }
27
60
  table.room = mutation.room;
28
61
  for (const participant of mutation.upsertParticipants)
29
62
  table.participants = upsert(table.participants, participant, 'participantId');
@@ -136,6 +169,11 @@ export class MemoryStore {
136
169
  if (request.roomId === roomId) {
137
170
  this.requests.delete(id);
138
171
  }
172
+ for (const [fileId, { file }] of this.stored) {
173
+ if (file.roomId === roomId) {
174
+ this.stored.delete(fileId);
175
+ }
176
+ }
139
177
  table.events = [];
140
178
  table.handovers = [];
141
179
  }
@@ -1 +1 @@
1
- {"version":3,"file":"memory-store.js","sourceRoot":"","sources":["../src/memory-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory-store.js","sourceRoot":"","sources":["../src/memory-store.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pairlobby/fixtures",
3
- "version": "0.18.0",
3
+ "version": "0.20.0",
4
4
  "description": "PairLobby fixtures: part of the PairLobby room protocol and relay",
5
5
  "license": "Elastic-2.0",
6
6
  "type": "module",
@@ -30,9 +30,9 @@
30
30
  "access": "public"
31
31
  },
32
32
  "dependencies": {
33
- "@pairlobby/protocol": "0.18.0",
34
- "@pairlobby/room-core": "0.18.0",
35
- "@pairlobby/server-core": "0.18.0"
33
+ "@pairlobby/protocol": "0.20.0",
34
+ "@pairlobby/room-core": "0.20.0",
35
+ "@pairlobby/server-core": "0.20.0"
36
36
  },
37
37
  "peerDependencies": {
38
38
  "vitest": ">=4.1.0"