@adonis-agora/collaboration 0.9.3 → 0.10.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.
Files changed (57) hide show
  1. package/CHANGELOG.md +110 -0
  2. package/dist/providers/collaboration_provider.d.ts +15 -5
  3. package/dist/providers/collaboration_provider.d.ts.map +1 -1
  4. package/dist/providers/collaboration_provider.js +53 -24
  5. package/dist/providers/collaboration_provider.js.map +1 -1
  6. package/dist/src/auth/token.d.ts +20 -2
  7. package/dist/src/auth/token.d.ts.map +1 -1
  8. package/dist/src/auth/token.js +31 -8
  9. package/dist/src/auth/token.js.map +1 -1
  10. package/dist/src/codegen_init.d.ts.map +1 -1
  11. package/dist/src/codegen_init.js +11 -1
  12. package/dist/src/codegen_init.js.map +1 -1
  13. package/dist/src/collaboration_manager.d.ts.map +1 -1
  14. package/dist/src/collaboration_manager.js +4 -0
  15. package/dist/src/collaboration_manager.js.map +1 -1
  16. package/dist/src/define_config.d.ts +32 -1
  17. package/dist/src/define_config.d.ts.map +1 -1
  18. package/dist/src/define_config.js +6 -0
  19. package/dist/src/define_config.js.map +1 -1
  20. package/dist/src/drivers/automerge/automerge_driver.d.ts +7 -1
  21. package/dist/src/drivers/automerge/automerge_driver.d.ts.map +1 -1
  22. package/dist/src/drivers/automerge/automerge_driver.js +74 -11
  23. package/dist/src/drivers/automerge/automerge_driver.js.map +1 -1
  24. package/dist/src/drivers/yjs/yjs_driver.d.ts +20 -0
  25. package/dist/src/drivers/yjs/yjs_driver.d.ts.map +1 -1
  26. package/dist/src/drivers/yjs/yjs_driver.js +84 -19
  27. package/dist/src/drivers/yjs/yjs_driver.js.map +1 -1
  28. package/dist/src/http/types.d.ts +24 -1
  29. package/dist/src/http/types.d.ts.map +1 -1
  30. package/dist/src/http/types.js.map +1 -1
  31. package/dist/src/index.d.ts +4 -3
  32. package/dist/src/index.d.ts.map +1 -1
  33. package/dist/src/index.js +3 -2
  34. package/dist/src/index.js.map +1 -1
  35. package/dist/src/observability.d.ts +52 -0
  36. package/dist/src/observability.d.ts.map +1 -0
  37. package/dist/src/observability.js +50 -0
  38. package/dist/src/observability.js.map +1 -0
  39. package/dist/src/routes.d.ts +35 -5
  40. package/dist/src/routes.d.ts.map +1 -1
  41. package/dist/src/routes.js +117 -26
  42. package/dist/src/routes.js.map +1 -1
  43. package/dist/src/services/comment_service.d.ts +9 -0
  44. package/dist/src/services/comment_service.d.ts.map +1 -1
  45. package/dist/src/services/comment_service.js +17 -4
  46. package/dist/src/services/comment_service.js.map +1 -1
  47. package/dist/src/storage/lucid_storage.d.ts +7 -0
  48. package/dist/src/storage/lucid_storage.d.ts.map +1 -1
  49. package/dist/src/storage/lucid_storage.js +34 -11
  50. package/dist/src/storage/lucid_storage.js.map +1 -1
  51. package/dist/src/types.d.ts +14 -4
  52. package/dist/src/types.d.ts.map +1 -1
  53. package/dist/src/versioning.d.ts +6 -0
  54. package/dist/src/versioning.d.ts.map +1 -1
  55. package/dist/src/versioning.js +10 -0
  56. package/dist/src/versioning.js.map +1 -1
  57. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,115 @@
1
1
  # @adonis-agora/collaboration
2
2
 
3
+ ## 0.10.0
4
+
5
+ ### Minor Changes
6
+
7
+ - b44c00e: `useAutomergeDoc` reconnects, and two parameters the routes discard are gone
8
+
9
+ **The Automerge hook opened one socket and never rebuilt it.** `ws.onclose` set `status` to
10
+ `'disconnected'` and that was the end of it — the effect's deps (`docName`, `config`,
11
+ `WebSocketImpl`) are all stable, so nothing ever ran again. Meanwhile `change()` went on mutating
12
+ the local document and never sending it: a user typing into a document that had stopped syncing,
13
+ with no state on the hook that could have told them.
14
+
15
+ It now reconnects on the same terms as the Yjs `DocSession`, sharing its vocabulary rather than
16
+ growing a second one — `MAX_RECONNECT_ATTEMPTS`, `isPermanentFailure` and the exhausted-budget error
17
+ are now exported from `session.ts` and used by both. A fresh token per attempt, backoff from 1s
18
+ capped at 15s, five attempts, reset by a connection that opens, and an exhausted budget that keeps
19
+ the last real failure as its `cause`. A **permanent** failure is not retried at all: a `4000` /
20
+ `4001` / `4003` close, or a document the server routes to another engine.
21
+
22
+ **Changes made while disconnected are not dropped.** The protocol exchanges whole documents, so the
23
+ local doc is its own outbox: the change is applied locally, counted, and the whole saved document is
24
+ written the moment a socket is open again. Two new fields on the result make that visible —
25
+ `pendingChanges` (local changes not yet written to the socket) and `synced` (the server's state has
26
+ been merged on the _current_ connection, the Automerge counterpart of the Yjs flag). Disabling the
27
+ editor on a disconnect is no longer the honest thing to do; showing `pendingChanges` is.
28
+
29
+ **Breaking, small:** `userId` is gone from three client signatures, because the routes already
30
+ ignored it in favour of the authenticated caller — `createVersion(config, docName, label)`,
31
+ `createComment(config, input)` and `useComments().create({ space, anchor, body, authorName? })`. It
32
+ was dead on the wire while reading as if it decided who the author was. Drop the argument; nothing
33
+ else changes.
34
+
35
+ **`CommentService.get(docName, commentId)`** is new. Authorizing a comment PATCH or DELETE resolved
36
+ its one comment by listing the document's entire thread and filtering — correct, and O(n) in the
37
+ comments, so the check got slower the longer the discussion got. `CollaborationStorage` gains an
38
+ optional `getComment`, implemented by `LucidStorage` as an indexed single-row query; storages
39
+ without it fall back to the old scan, now behind one call.
40
+
41
+ - b44c00e: Fix route registration, authorize in manual mode, comment permissions, restore semantics, presence wiring and failure visibility.
42
+
43
+ **Route registration phase (behaviour change).** The provider registered the built-in REST routes in
44
+ `ready()`, which runs _after_ `Server.boot()` has called `router.commit()` — the router drains its
45
+ pending list there and refuses everything later, so the auto-registered `/collaboration/*` endpoints
46
+ were silently orphaned and answered `404` in a served build while looking perfectly configured.
47
+ Registration moved to `boot()`. The WebSocket attach stays in `ready()`, where it belongs: the node
48
+ HTTP server does not exist before `start()`. A test now drives the real lifecycle order and pins
49
+ both directions.
50
+
51
+ **`authorize` in manual mode (behaviour change, security).** `resolveRuntime` read `authorize` only
52
+ from the options, and only the provider passed it — so `collaborationRoutes(router)` called from
53
+ `start/routes.ts` had none, and the absent variable failed in opposite directions in the same file:
54
+ `guard()` fell to its deny literal (`403` for everyone on `/comments`, `/versions`, `/state`) while
55
+ `issueToken` skipped the check entirely (`if (authorize) {…}`), handing any authenticated caller a
56
+ token for any document. Now there is one resolution order — the explicit option, else the manager's
57
+ rule (declared document → global `authorize` → deny), else the app config, else deny — and
58
+ `issueToken` **throws `CollabForbiddenError` when it has no rule** instead of minting. Manual
59
+ registration enforces exactly what the provider and the WebSocket handshake enforce.
60
+
61
+ **`collaborationRoutes` is synchronous (API change).** It was `async` only to `await import()` the
62
+ app config, and a `RouteGroup` closes as soon as its callback returns — so it could not be wrapped in
63
+ `router.group(() => …)` and every consuming app wrote a global middleware matched against a
64
+ hardcoded `/collaboration` prefix, which silently stopped protecting anything when `routes.prefix`
65
+ changed. Config is now resolved lazily at request time and the function returns `void`; an existing
66
+ `await collaborationRoutes(...)` still works. `defaultResolveUser` also calls `ctx.auth.check()`
67
+ (or `authenticate()`) before reading `ctx.auth.user`, so a lazily-resolving auth stack produces a
68
+ caller instead of a blanket `401`.
69
+
70
+ **Comment mutations are author-or-elevated (behaviour change, security).** `PATCH`/`DELETE
71
+ /comments/:id` checked only the document-level `canComment` and then called
72
+ `comments.resolve/remove`, which never look at `userId` — anyone who could comment could resolve or
73
+ delete anyone else's thread. The rule is now explicit and exported as `canMutateComment`: the author
74
+ may always mutate their own comment, anyone else needs `canWrite` on the document. An unknown
75
+ comment id answers `404`.
76
+
77
+ **`restoreVersion` honours its contract (behaviour change).** Both drivers did `void restoredBy` and
78
+ overwrote the document without recording what they replaced, in the one operation of a version
79
+ history that most needs to be undoable. A restore now writes the pre-restore state to the history
80
+ first, as a version labelled `restored from #<seq>` attributed to `restoredBy`, and a bad
81
+ `versionId` still fails before anything is written.
82
+
83
+ **Presence is actually wired.** The provider built a `RedisPresenceStore` from `redisUrl` and the
84
+ manager wrapped it in a `PresenceService`, but `#buildDriver` never passed `presence` into the driver
85
+ options — the drivers' join/leave were dead code and `listPresence()` returned `[]` forever. It is
86
+ forwarded now, and the driver's bookkeeping is keyed by **socket** instead of by document: the old
87
+ `Map<docName, userId>` held one slot per document, so a second editor overwrote the first and either
88
+ disconnect evicted both. A user with two tabs leaves the roster only when the last one closes. The
89
+ Automerge driver feeds presence too.
90
+
91
+ **Storage and authorize failures are visible, and denial is distinct from error.** The library took no
92
+ logger and emitted no events; `onStoreDocument`/`beforeUnloadDocument` called `saveDocument` bare
93
+ inside hooks that swallow throws, and a throw from `authorize` escaped `onAuthenticate` as a generic
94
+ handshake failure — so an outage and a denial looked identical to the client, and an app-side
95
+ database error inside the rule became an unbounded reconnect storm. New: `onCollaborationError`,
96
+ `collaborationEvents`, `setCollaborationLogger` (the provider installs the Adonis logger when it can
97
+ resolve one), and `CollabAuthorizationError`, thrown when the rule could not be evaluated, alongside
98
+ `CollabForbiddenError` for an actual denial.
99
+
100
+ **Document names are type-checkable.** `defineConfig` is generic, so the literal keys of `documents`
101
+ survive instead of being widened to `string`, and the new `InferCollabDocumentNames<typeof config>`
102
+ derives the union of declared patterns (`CollabDocumentNameFor` resolves one into a concrete name
103
+ shape). The Assembler codegen hook only ever indexed `app/collaboration/documents`, which apps that
104
+ declare documents inline in `config/collaboration.ts` never create; that limitation is now stated in
105
+ the hook and the docs point at the config route.
106
+
107
+ **Also:** `AutomergeDriver.close()` no longer hangs forever on a driver that was never attached
108
+ (`this.wss?.close(cb)` never runs `cb` when there is no server). Docs corrected where they asserted
109
+ the broken behaviour: `authorize` is evaluated **once per connection**, not "on every relevant
110
+ permission change" — revoking access does not drop an open socket; the versions `POST` body has no
111
+ `userId`; and the routes, presence and manual-mode pages describe what the code does.
112
+
3
113
  ## 0.9.1
4
114
 
5
115
  ### Patch Changes
@@ -4,18 +4,28 @@ import type { ApplicationService } from '@adonisjs/core/types';
4
4
  *
5
5
  * - `register()` hands the booted app to `services/main` and binds the
6
6
  * `CollaborationManager` singleton from `config/collaboration.ts`;
7
- * - `boot()`/`ready()` attaches the collaboration WebSocket upgrade to the
8
- * Adonis HTTP server (path from config, default `/collaboration`);
9
- * - `ready()` registers the built-in REST endpoints automatically unless
10
- * `routes.enabled: false` — then call `collaborationRoutes(router)` in
11
- * `start/routes.ts` with your own middleware;
7
+ * - `boot()` installs the logger and registers the built-in REST endpoints
8
+ * — **before** the router commits — unless `routes.enabled: false`;
9
+ * - `ready()` attaches the collaboration WebSocket upgrade to the Adonis HTTP
10
+ * server (path from config, default `/collaboration`);
12
11
  * - `shutdown()` flushes pending stores and closes all connections.
12
+ *
13
+ * The two phases are not interchangeable, and both directions of the mistake
14
+ * are silent:
15
+ *
16
+ * - routes must be registered in `boot()`, because `Server.boot()` calls
17
+ * `router.commit()` during `start()` and everything registered after that
18
+ * is dropped from the route store — the endpoints look configured and
19
+ * answer 404;
20
+ * - the WebSocket attach must stay in `ready()`, because the node HTTP
21
+ * server only exists once Ignitor created it in `start()`.
13
22
  */
14
23
  export default class CollaborationServiceProvider {
15
24
  protected app: ApplicationService;
16
25
  private config?;
17
26
  constructor(app: ApplicationService);
18
27
  register(): void;
28
+ boot(): Promise<void>;
19
29
  ready(): Promise<void>;
20
30
  shutdown(): Promise<void>;
21
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"collaboration_provider.d.ts","sourceRoot":"","sources":["../../providers/collaboration_provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAQ/D;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,OAAO,4BAA4B;IAGnC,SAAS,CAAC,GAAG,EAAE,kBAAkB;IAF7C,OAAO,CAAC,MAAM,CAAC,CAAyB;gBAElB,GAAG,EAAE,kBAAkB;IAE7C,QAAQ;IA8BF,KAAK;IAiDL,QAAQ;CAIf"}
1
+ {"version":3,"file":"collaboration_provider.d.ts","sourceRoot":"","sources":["../../providers/collaboration_provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAS/D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,OAAO,OAAO,4BAA4B;IAGnC,SAAS,CAAC,GAAG,EAAE,kBAAkB;IAF7C,OAAO,CAAC,MAAM,CAAC,CAAyB;gBAElB,GAAG,EAAE,kBAAkB;IAE7C,QAAQ;IA8BF,IAAI;IAyCJ,KAAK;IA0BL,QAAQ;CAKf"}
@@ -1,5 +1,6 @@
1
1
  import { Redis } from 'ioredis';
2
2
  import { CollaborationManager } from '../src/collaboration_manager.js';
3
+ import { setCollaborationLogger } from '../src/observability.js';
3
4
  import { collaborationRoutes } from '../src/routes.js';
4
5
  import { setBootedApp } from '../src/services/booted_app.js';
5
6
  import { RedisPresenceStore } from '../src/services/presence_service.js';
@@ -8,12 +9,21 @@ import { RedisPresenceStore } from '../src/services/presence_service.js';
8
9
  *
9
10
  * - `register()` hands the booted app to `services/main` and binds the
10
11
  * `CollaborationManager` singleton from `config/collaboration.ts`;
11
- * - `boot()`/`ready()` attaches the collaboration WebSocket upgrade to the
12
- * Adonis HTTP server (path from config, default `/collaboration`);
13
- * - `ready()` registers the built-in REST endpoints automatically unless
14
- * `routes.enabled: false` — then call `collaborationRoutes(router)` in
15
- * `start/routes.ts` with your own middleware;
12
+ * - `boot()` installs the logger and registers the built-in REST endpoints
13
+ * — **before** the router commits — unless `routes.enabled: false`;
14
+ * - `ready()` attaches the collaboration WebSocket upgrade to the Adonis HTTP
15
+ * server (path from config, default `/collaboration`);
16
16
  * - `shutdown()` flushes pending stores and closes all connections.
17
+ *
18
+ * The two phases are not interchangeable, and both directions of the mistake
19
+ * are silent:
20
+ *
21
+ * - routes must be registered in `boot()`, because `Server.boot()` calls
22
+ * `router.commit()` during `start()` and everything registered after that
23
+ * is dropped from the route store — the endpoints look configured and
24
+ * answer 404;
25
+ * - the WebSocket attach must stay in `ready()`, because the node HTTP
26
+ * server only exists once Ignitor created it in `start()`.
17
27
  */
18
28
  export default class CollaborationServiceProvider {
19
29
  app;
@@ -45,22 +55,18 @@ export default class CollaborationServiceProvider {
45
55
  return new CollaborationManager(managerConfig, presenceStore);
46
56
  });
47
57
  }
48
- async ready() {
49
- // Attach happens in `ready()` (lifecycle phase 4): Ignitor created the
50
- // node HTTP server during `start()` (phase 3), so getNodeServer() exists.
51
- // Outside the web process (ace/console/test/repl) there is no HTTP
52
- // server — collaboration does not start; the manager stays available.
53
- const env = this.app.getEnvironment();
54
- if (env !== 'web') {
55
- return;
58
+ async boot() {
59
+ // Storage and authorize failures otherwise vanish inside socket hooks.
60
+ try {
61
+ const logger = (await this.app.container.make('logger'));
62
+ if (logger && typeof logger.error === 'function') {
63
+ setCollaborationLogger(logger);
64
+ }
56
65
  }
57
- const manager = await this.app.container.make(CollaborationManager);
58
- const adonisServer = (await this.app.container.make('server'));
59
- const nodeServer = adonisServer.getNodeServer?.();
60
- if (!nodeServer) {
61
- throw new Error('[@adonis-agora/collaboration] getNodeServer() unavailable in ready() — check @adonisjs/http-server version');
66
+ catch {
67
+ // No logger bound (bare container, some test harnesses): the event
68
+ // stream in src/observability.ts still carries every failure.
62
69
  }
63
- await manager.attach(nodeServer);
64
70
  // Auto-register built-in REST endpoints unless explicitly disabled.
65
71
  const routes = this.config?.routes;
66
72
  if (routes?.enabled === false) {
@@ -68,7 +74,16 @@ export default class CollaborationServiceProvider {
68
74
  }
69
75
  const router = (await this.app.container.make('router'));
70
76
  const runtimeOptions = {
77
+ // Resolved per request, never here: building the manager during boot
78
+ // would open its Redis connection in every environment, including ace.
71
79
  managerFallback: () => this.app.container.make(CollaborationManager),
80
+ // The token endpoint must resolve permissions exactly like the WebSocket
81
+ // handshake does — through the manager, so declared documents' own
82
+ // `authorize` applies and an unmatched document still fails closed.
83
+ authorize: async (ctx, docName) => {
84
+ const manager = await this.app.container.make(CollaborationManager);
85
+ return manager.authorize(ctx, docName);
86
+ },
72
87
  };
73
88
  if (routes?.prefix !== undefined)
74
89
  runtimeOptions.prefix = routes.prefix;
@@ -76,13 +91,27 @@ export default class CollaborationServiceProvider {
76
91
  runtimeOptions.middleware = routes.middleware;
77
92
  if (routes?.resolveUser !== undefined)
78
93
  runtimeOptions.resolveUser = routes.resolveUser;
79
- // The token endpoint must resolve permissions exactly like the WebSocket
80
- // handshake does — through the manager, so declared documents' own
81
- // `authorize` applies and an unmatched document still fails closed.
82
- runtimeOptions.authorize = (ctx, docName) => manager.authorize(ctx, docName);
83
- await collaborationRoutes(router, runtimeOptions);
94
+ collaborationRoutes(router, runtimeOptions);
95
+ }
96
+ async ready() {
97
+ // Attach happens in `ready()` (lifecycle phase 4): Ignitor created the
98
+ // node HTTP server during `start()` (phase 3), so getNodeServer() exists.
99
+ // Outside the web process (ace/console/test/repl) there is no HTTP
100
+ // server — collaboration does not start; the manager stays available.
101
+ const env = this.app.getEnvironment();
102
+ if (env !== 'web') {
103
+ return;
104
+ }
105
+ const manager = await this.app.container.make(CollaborationManager);
106
+ const adonisServer = (await this.app.container.make('server'));
107
+ const nodeServer = adonisServer.getNodeServer?.();
108
+ if (!nodeServer) {
109
+ throw new Error('[@adonis-agora/collaboration] getNodeServer() unavailable in ready() — check @adonisjs/http-server version');
110
+ }
111
+ await manager.attach(nodeServer);
84
112
  }
85
113
  async shutdown() {
114
+ setCollaborationLogger(undefined);
86
115
  const manager = await this.app.container.make(CollaborationManager);
87
116
  await manager.close();
88
117
  }
@@ -1 +1 @@
1
- {"version":3,"file":"collaboration_provider.js","sourceRoot":"","sources":["../../providers/collaboration_provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collaboration_provider.js","sourceRoot":"","sources":["../../providers/collaboration_provider.ts"],"names":[],"mappings":"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"}
@@ -46,11 +46,29 @@ export interface IssuedToken {
46
46
  }
47
47
  /** Thrown when authorize() denies read access for the document. */
48
48
  export declare class CollabForbiddenError extends Error {
49
- constructor(docName: string);
49
+ constructor(docName: string, message?: string);
50
+ }
51
+ /**
52
+ * Thrown when the permission rule itself could not be evaluated — a broken
53
+ * `authorize`, or a database the rule needs and cannot reach.
54
+ *
55
+ * Distinct from {@link CollabForbiddenError} on purpose: "you may not" is a
56
+ * final answer a client should respect, while "we could not tell" is a
57
+ * transient condition it may retry. Collapsing the two is what turns an app's
58
+ * database blip into an unbounded reconnect storm.
59
+ */
60
+ export declare class CollabAuthorizationError extends Error {
61
+ readonly docName: string;
62
+ readonly cause?: unknown | undefined;
63
+ constructor(docName: string, cause?: unknown | undefined);
50
64
  }
51
65
  /**
52
66
  * Issues an ephemeral credential for `docName`, enforcing the permission
53
- * seam via `authorize` when one is provided.
67
+ * seam via `authorize`.
68
+ *
69
+ * **Fails closed without a rule.** Skipping the check when `authorize` is
70
+ * absent handed any authenticated caller a token for any document; an absent
71
+ * rule is a misconfiguration, not a grant.
54
72
  */
55
73
  export declare function issueToken(config: TokenIssuerConfig, user: {
56
74
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/auth/token.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7F;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;CAC9E;AAED,0EAA0E;AAC1E,MAAM,MAAM,WAAW,GAAG,CACxB,GAAG,EAAE,uBAAuB,EAC5B,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAE/B,0DAA0D;AAC1D,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;CAAE,EACjG,MAAM,EAAE,MAAM,EACd,gBAAgB,SAAM,GACrB,MAAM,CAQR;AAED,kFAAkF;AAClF,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAoBzD;AAED,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,uBAAuB,GAAG,IAAI,CAO9E;AAED,6DAA6D;AAC7D,wBAAgB,UAAU,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAS7E;AAED,0CAA0C;AAC1C,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,mEAAmE;AACnE,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,iBAAiB,EACzB,IAAI,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAC1C,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,WAAW,GACtB,OAAO,CAAC,WAAW,CAAC,CA4BtB"}
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/auth/token.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7F;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;CAC9E;AAED,0EAA0E;AAC1E,MAAM,MAAM,WAAW,GAAG,CACxB,GAAG,EAAE,uBAAuB,EAC5B,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAE/B,0DAA0D;AAC1D,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;CAAE,EACjG,MAAM,EAAE,MAAM,EACd,gBAAgB,SAAM,GACrB,MAAM,CAQR;AAED,kFAAkF;AAClF,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAoBzD;AAED,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,uBAAuB,GAAG,IAAI,CAO9E;AAED,6DAA6D;AAC7D,wBAAgB,UAAU,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAS7E;AAED,0CAA0C;AAC1C,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,mEAAmE;AACnE,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;CAI9C;AAED;;;;;;;;GAQG;AACH,qBAAa,wBAAyB,SAAQ,KAAK;IAE/C,QAAQ,CAAC,OAAO,EAAE,MAAM;aACN,KAAK,CAAC,EAAE,OAAO;gBADxB,OAAO,EAAE,MAAM,EACN,KAAK,CAAC,EAAE,OAAO,YAAA;CAKpC;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,iBAAiB,EACzB,IAAI,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAC1C,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,WAAW,GACtB,OAAO,CAAC,WAAW,CAAC,CA+BtB"}
@@ -52,26 +52,49 @@ export function buildWsUrl(config, docName) {
52
52
  }
53
53
  /** Thrown when authorize() denies read access for the document. */
54
54
  export class CollabForbiddenError extends Error {
55
- constructor(docName) {
56
- super(`no access to document "${docName}"`);
55
+ constructor(docName, message) {
56
+ super(message ?? `no access to document "${docName}"`);
57
57
  this.name = 'CollabForbiddenError';
58
58
  }
59
59
  }
60
+ /**
61
+ * Thrown when the permission rule itself could not be evaluated — a broken
62
+ * `authorize`, or a database the rule needs and cannot reach.
63
+ *
64
+ * Distinct from {@link CollabForbiddenError} on purpose: "you may not" is a
65
+ * final answer a client should respect, while "we could not tell" is a
66
+ * transient condition it may retry. Collapsing the two is what turns an app's
67
+ * database blip into an unbounded reconnect storm.
68
+ */
69
+ export class CollabAuthorizationError extends Error {
70
+ docName;
71
+ cause;
72
+ constructor(docName, cause) {
73
+ super(`could not evaluate access to document "${docName}"`);
74
+ this.docName = docName;
75
+ this.cause = cause;
76
+ this.name = 'CollabAuthorizationError';
77
+ }
78
+ }
60
79
  /**
61
80
  * Issues an ephemeral credential for `docName`, enforcing the permission
62
- * seam via `authorize` when one is provided.
81
+ * seam via `authorize`.
82
+ *
83
+ * **Fails closed without a rule.** Skipping the check when `authorize` is
84
+ * absent handed any authenticated caller a token for any document; an absent
85
+ * rule is a misconfiguration, not a grant.
63
86
  */
64
87
  export async function issueToken(config, user, docName, authorize) {
65
88
  const ctx = {
66
89
  userId: user.id,
67
90
  ...(user.name ? { user: { name: user.name } } : {}),
68
91
  };
69
- let permission;
70
- if (authorize) {
71
- permission = await authorize(ctx, docName);
72
- if (!permission.canRead)
73
- throw new CollabForbiddenError(docName);
92
+ if (!authorize) {
93
+ throw new CollabForbiddenError(docName, `no authorize rule configured — refusing to issue a token for "${docName}". Set authorize in config/collaboration.ts, or pass one to collaborationRoutes().`);
74
94
  }
95
+ const permission = await authorize(ctx, docName);
96
+ if (!permission.canRead)
97
+ throw new CollabForbiddenError(docName);
75
98
  if (config.engine === 'partykit') {
76
99
  if (!config.partykit?.jwtSecret) {
77
100
  throw new Error('config.partykit.jwtSecret is required when engine=partykit');
@@ -1 +1 @@
1
- {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/auth/token.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/auth/token.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"codegen_init.d.ts","sourceRoot":"","sources":["../../src/codegen_init.ts"],"names":[],"mappings":"wBA8D2B,CAAC,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,KAAK,IAAI;AAAxF,wBAAyF"}
1
+ {"version":3,"file":"codegen_init.d.ts","sourceRoot":"","sources":["../../src/codegen_init.ts"],"names":[],"mappings":"wBAwE2B,CAAC,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,KAAK,IAAI;AAAxF,wBAAyF"}
@@ -17,12 +17,22 @@ import { renderDocumentsRegistry } from './codegen/documents_registry.js';
17
17
  * init: [() => import('@adonis-agora/collaboration/codegen_init')]
18
18
  * }
19
19
  * ```
20
+ *
21
+ * **Scope, stated plainly.** This hook only knows about the directory, which
22
+ * only exists once `make:collab-document` created it. Documents declared the
23
+ * other supported way — `defineDocument` inline in `config/collaboration.ts` —
24
+ * are invisible to it, and it early-returns generating nothing. For those,
25
+ * derive the union from the config with `InferCollabDocumentNames<typeof
26
+ * collaborationConfig>`; `defineConfig` is generic so the literal keys
27
+ * survive. See docs/codegen/documents-registry.
20
28
  */
21
29
  // The wrapper's inferred return type references non-portable @poppinss
22
30
  // internals — annotate explicitly so the declaration emit stays portable.
23
31
  const initHook = hooks.init((_parent, _hooksManager, indexGenerator) => {
24
32
  const source = './app/collaboration/documents';
25
- // Directory not created yet: nothing to index (make:collab-document creates it).
33
+ // Directory not created yet: nothing to index. Apps that declare their
34
+ // documents inline in config/collaboration.ts never create it — that is
35
+ // expected, and InferCollabDocumentNames is their route to the same type.
26
36
  if (!existsSync(source)) {
27
37
  return;
28
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"codegen_init.js","sourceRoot":"","sources":["../../src/codegen_init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAyB,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAEjG;;;;;;;;;;;;;;;;GAgBG;AACH,uEAAuE;AACvE,0EAA0E;AAC1E,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CACzB,CACE,OAAgB,EAChB,aAAsB,EACtB,cAEC,EACD,EAAE;IACF,MAAM,MAAM,GAAG,+BAA+B,CAAC;IAE/C,iFAAiF;IACjF,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,OAAO;IACT,CAAC;IAED,cAAc,CAAC,GAAG,CAAC,iBAAiB,EAAE;QACpC,MAAM;QACN,IAAI,EAAE,CAAC,SAAS,CAAC;QACjB,MAAM,EAAE,wCAAwC;QAChD,EAAE,EAAE,CACF,GAAyC,EACzC,MAA4C,EAC5C,OAAgB,EAChB,OAAmD,EACnD,EAAE;YACF,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC1E,MAAM;gBACN,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC;aAC/C,CAAC,CAAC,CAAC;YAEJ,KAAK,MAAM,IAAI,IAAI,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClD,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC,CACF,CAAC;AAEF,0IAA0I;AAC1I,eAAe,QAAyE,CAAC"}
1
+ {"version":3,"file":"codegen_init.js","sourceRoot":"","sources":["../../src/codegen_init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAyB,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAEjG;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,uEAAuE;AACvE,0EAA0E;AAC1E,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CACzB,CACE,OAAgB,EAChB,aAAsB,EACtB,cAEC,EACD,EAAE;IACF,MAAM,MAAM,GAAG,+BAA+B,CAAC;IAE/C,uEAAuE;IACvE,wEAAwE;IACxE,0EAA0E;IAC1E,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,OAAO;IACT,CAAC;IAED,cAAc,CAAC,GAAG,CAAC,iBAAiB,EAAE;QACpC,MAAM;QACN,IAAI,EAAE,CAAC,SAAS,CAAC;QACjB,MAAM,EAAE,wCAAwC;QAChD,EAAE,EAAE,CACF,GAAyC,EACzC,MAA4C,EAC5C,OAAgB,EAChB,OAAmD,EACnD,EAAE;YACF,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC1E,MAAM;gBACN,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC;aAC/C,CAAC,CAAC,CAAC;YAEJ,KAAK,MAAM,IAAI,IAAI,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClD,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC,CACF,CAAC;AAEF,0IAA0I;AAC1I,eAAe,QAAyE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"collaboration_manager.d.ts","sourceRoot":"","sources":["../../src/collaboration_manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collaboration_manager.d.ts","sourceRoot":"","sources":["../../src/collaboration_manager.ts"],"names":[],"mappings":"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"}
@@ -78,6 +78,10 @@ export class CollaborationManager {
78
78
  const shared = {
79
79
  authorize: (ctx, docName) => this.authorize(ctx, docName),
80
80
  ...(storage ? { storage } : {}),
81
+ // Without this the presence store the provider builds from `redisUrl`
82
+ // is never reached: the drivers' join/leave both guard on
83
+ // `options.presence`, so `listPresence()` answered [] forever.
84
+ ...(this.presence ? { presence: this.presence } : {}),
81
85
  ...(this.config.path !== undefined ? { path: this.config.path } : {}),
82
86
  ...(this.config.debounce !== undefined ? { debounce: this.config.debounce } : {}),
83
87
  };
@@ -1 +1 @@
1
- {"version":3,"file":"collaboration_manager.js","sourceRoot":"","sources":["../../src/collaboration_manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collaboration_manager.js","sourceRoot":"","sources":["../../src/collaboration_manager.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,37 @@ export type CollaborationAppConfig = {
36
36
  /**
37
37
  * Type-safe config helper used in the app's `config/collaboration.ts` —
38
38
  * same pattern as @adonisjs/*'s `defineConfig`.
39
+ *
40
+ * Generic over the literal config so the **keys of `documents` survive**.
41
+ * Returning the widened `CollaborationAppConfig` collapsed them to `string`,
42
+ * which is why there was no way to get a union of declared document names out
43
+ * of the config and every call site hand-built doc-name strings. See
44
+ * {@link InferCollabDocumentNames}.
39
45
  */
40
- export declare function defineConfig(config: CollaborationAppConfig): CollaborationAppConfig;
46
+ export declare function defineConfig<T extends CollaborationAppConfig>(config: T): T;
47
+ /**
48
+ * The union of document-name patterns declared in `config/collaboration.ts`.
49
+ *
50
+ * ```ts
51
+ * // types/collaboration.ts
52
+ * import type { InferCollabDocumentNames } from '@adonis-agora/collaboration'
53
+ * import collaborationConfig from '#config/collaboration'
54
+ *
55
+ * export type CollabDocumentName = InferCollabDocumentNames<typeof collaborationConfig>
56
+ * // → 'researches/:id/writing' | 'whiteboards/:id'
57
+ * ```
58
+ *
59
+ * The patterns keep their `:param` segments — they are the declaration, not a
60
+ * resolved name. Build a concrete name from one with
61
+ * {@link CollabDocumentNameFor} when you want the parameters checked too.
62
+ */
63
+ export type InferCollabDocumentNames<T> = T extends {
64
+ documents: infer D;
65
+ } ? Extract<keyof D, string> : never;
66
+ /**
67
+ * A declared pattern with its `:params` replaced by strings — so
68
+ * `'researches/:id/writing'` accepts `` `researches/${string}/writing` `` and
69
+ * rejects a typo'd `'research/42/writing'`.
70
+ */
71
+ export type CollabDocumentNameFor<Pattern extends string> = Pattern extends `${infer Head}/:${infer Rest}` ? Rest extends `${string}/${infer Tail}` ? `${Head}/${string}/${CollabDocumentNameFor<Tail>}` : `${Head}/${string}` : Pattern;
41
72
  //# sourceMappingURL=define_config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"define_config.d.ts","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEtE;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACvC,SAAS,CAAC,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC7C,SAAS,CAAC,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC7C,8EAA8E;IAC9E,OAAO,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACzC,qDAAqD;IACrD,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B;;;;OAIG;IACH,MAAM,CAAC,EAAE;QACP,qBAAqB;QACrB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,iCAAiC;QACjC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,qEAAqE;QACrE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;QACvB,8DAA8D;QAC9D,WAAW,CAAC,EAAE,aAAa,CAAC;KAC7B,CAAC;CACH,CAAC;AAEF;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,sBAAsB,GAAG,sBAAsB,CAEnF"}
1
+ {"version":3,"file":"define_config.d.ts","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEtE;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACvC,SAAS,CAAC,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC7C,SAAS,CAAC,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC7C,8EAA8E;IAC9E,OAAO,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACzC,qDAAqD;IACrD,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B;;;;OAIG;IACH,MAAM,CAAC,EAAE;QACP,qBAAqB;QACrB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,iCAAiC;QACjC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,qEAAqE;QACrE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;QACvB,8DAA8D;QAC9D,WAAW,CAAC,EAAE,aAAa,CAAC;KAC7B,CAAC;CACH,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,sBAAsB,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAE3E;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,wBAAwB,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,SAAS,EAAE,MAAM,CAAC,CAAA;CAAE,GACtE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GACxB,KAAK,CAAC;AAEV;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,MAAM,IACtD,OAAO,SAAS,GAAG,MAAM,IAAI,KAAK,MAAM,IAAI,EAAE,GAC1C,IAAI,SAAS,GAAG,MAAM,IAAI,MAAM,IAAI,EAAE,GACpC,GAAG,IAAI,IAAI,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE,GAClD,GAAG,IAAI,IAAI,MAAM,EAAE,GACrB,OAAO,CAAC"}
@@ -1,6 +1,12 @@
1
1
  /**
2
2
  * Type-safe config helper used in the app's `config/collaboration.ts` —
3
3
  * same pattern as @adonisjs/*'s `defineConfig`.
4
+ *
5
+ * Generic over the literal config so the **keys of `documents` survive**.
6
+ * Returning the widened `CollaborationAppConfig` collapsed them to `string`,
7
+ * which is why there was no way to get a union of declared document names out
8
+ * of the config and every call site hand-built doc-name strings. See
9
+ * {@link InferCollabDocumentNames}.
4
10
  */
5
11
  export function defineConfig(config) {
6
12
  return config;
@@ -1 +1 @@
1
- {"version":3,"file":"define_config.js","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"AAqCA;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,MAA8B;IACzD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"define_config.js","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"AAqCA;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAAmC,MAAS;IACtE,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -18,7 +18,13 @@ export declare class AutomergeDriver implements CollaborationDriver {
18
18
  /** Versions = markers over the native history (heads hash). */
19
19
  createVersion(docName: string, createdBy: string | null, label: string | null): Promise<CollabVersion>;
20
20
  listVersions(docName: string): Promise<CollabVersion[]>;
21
- restoreVersion(docName: string, versionId: string, _restoredBy: string | null): Promise<void>;
21
+ /**
22
+ * Restores `versionId` — recording the state it replaces as a new version
23
+ * attributed to `restoredBy`, per the driver contract. Automerge keeps the
24
+ * change history natively, but the *version list* is ours, and a restore
25
+ * that leaves no entry in it is a restore nobody can undo.
26
+ */
27
+ restoreVersion(docName: string, versionId: string, restoredBy: string | null): Promise<void>;
22
28
  diffVersions(docName: string, aId: string, bId: string): Promise<CollabDiffSummary>;
23
29
  close(): Promise<void>;
24
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"automerge_driver.d.ts","sourceRoot":"","sources":["../../../../src/drivers/automerge/automerge_driver.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AACpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAwB,MAAM,gBAAgB,CAAC;AA4B7F,qBAAa,eAAgB,YAAW,mBAAmB;IACzD,QAAQ,CAAC,MAAM,eAAe;IAE9B,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,GAAG,CAAC,CAAkB;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;IAC/C,OAAO,CAAC,aAAa,CAAoD;gBAE7D,OAAO,EAAE,uBAAuB;YAK9B,QAAQ;IActB,OAAO,CAAC,SAAS;IAQX,MAAM,CAAC,MAAM,EAAE,OAAO,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YA4DjD,mBAAmB;IAkBjC,OAAO,CAAC,gBAAgB;IAclB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAKtD,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMvD,+DAA+D;IACzD,aAAa,CACjB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB,OAAO,CAAC,aAAa,CAAC;IAgBnB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAIvD,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAAG,IAAI,GACzB,OAAO,CAAC,IAAI,CAAC;IAoBV,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAenF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAM7B"}
1
+ {"version":3,"file":"automerge_driver.d.ts","sourceRoot":"","sources":["../../../../src/drivers/automerge/automerge_driver.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAEpF,OAAO,KAAK,EACV,iBAAiB,EAEjB,aAAa,EAEd,MAAM,gBAAgB,CAAC;AA+BxB,qBAAa,eAAgB,YAAW,mBAAmB;IACzD,QAAQ,CAAC,MAAM,eAAe;IAE9B,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,GAAG,CAAC,CAAkB;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;IAC/C,OAAO,CAAC,aAAa,CAAoD;gBAE7D,OAAO,EAAE,uBAAuB;YAK9B,QAAQ;IActB,OAAO,CAAC,SAAS;IAQX,MAAM,CAAC,MAAM,EAAE,OAAO,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YA8FjD,mBAAmB;IAkBjC,OAAO,CAAC,gBAAgB;IAwBlB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAKtD,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMvD,+DAA+D;IACzD,aAAa,CACjB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB,OAAO,CAAC,aAAa,CAAC;IAgBnB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAI7D;;;;;OAKG;IACG,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GAAG,IAAI,GACxB,OAAO,CAAC,IAAI,CAAC;IAoCV,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAenF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAU7B"}