@adonis-agora/collaboration 0.1.4 → 0.2.1

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 (110) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +172 -0
  3. package/dist/commands/collaboration_init.d.ts +26 -0
  4. package/dist/commands/collaboration_init.d.ts.map +1 -0
  5. package/dist/commands/collaboration_init.js +83 -0
  6. package/dist/commands/collaboration_init.js.map +1 -0
  7. package/dist/commands/commands.json +1 -0
  8. package/dist/commands/main.d.ts +16 -0
  9. package/dist/commands/main.d.ts.map +1 -0
  10. package/dist/commands/main.js +20 -0
  11. package/dist/commands/main.js.map +1 -0
  12. package/dist/commands/make_collab_document.d.ts +23 -0
  13. package/dist/commands/make_collab_document.d.ts.map +1 -0
  14. package/dist/commands/make_collab_document.js +75 -0
  15. package/dist/commands/make_collab_document.js.map +1 -0
  16. package/dist/configure.d.ts +3 -1
  17. package/dist/configure.d.ts.map +1 -1
  18. package/dist/configure.js +6 -1
  19. package/dist/configure.js.map +1 -1
  20. package/dist/providers/collaboration_provider.d.ts +6 -2
  21. package/dist/providers/collaboration_provider.d.ts.map +1 -1
  22. package/dist/providers/collaboration_provider.js +36 -17
  23. package/dist/providers/collaboration_provider.js.map +1 -1
  24. package/dist/src/auth/token.d.ts +59 -0
  25. package/dist/src/auth/token.d.ts.map +1 -0
  26. package/dist/src/auth/token.js +91 -0
  27. package/dist/src/auth/token.js.map +1 -0
  28. package/dist/src/codegen/documents_registry.d.ts +28 -0
  29. package/dist/src/codegen/documents_registry.d.ts.map +1 -0
  30. package/dist/src/codegen/documents_registry.js +50 -0
  31. package/dist/src/codegen/documents_registry.js.map +1 -0
  32. package/dist/src/codegen_init.d.ts +3 -0
  33. package/dist/src/codegen_init.d.ts.map +1 -0
  34. package/dist/src/codegen_init.js +45 -0
  35. package/dist/src/codegen_init.js.map +1 -0
  36. package/dist/src/collaboration_manager.d.ts +20 -11
  37. package/dist/src/collaboration_manager.d.ts.map +1 -1
  38. package/dist/src/collaboration_manager.js +46 -17
  39. package/dist/src/collaboration_manager.js.map +1 -1
  40. package/dist/src/define_config.d.ts +25 -6
  41. package/dist/src/define_config.d.ts.map +1 -1
  42. package/dist/src/define_config.js +2 -2
  43. package/dist/src/define_config.js.map +1 -1
  44. package/dist/src/driver.d.ts +26 -32
  45. package/dist/src/driver.d.ts.map +1 -1
  46. package/dist/src/drivers/automerge/automerge_driver.d.ts +7 -12
  47. package/dist/src/drivers/automerge/automerge_driver.d.ts.map +1 -1
  48. package/dist/src/drivers/automerge/automerge_driver.js +37 -75
  49. package/dist/src/drivers/automerge/automerge_driver.js.map +1 -1
  50. package/dist/src/drivers/partykit/partykit_driver.d.ts +54 -0
  51. package/dist/src/drivers/partykit/partykit_driver.d.ts.map +1 -0
  52. package/dist/src/drivers/partykit/partykit_driver.js +162 -0
  53. package/dist/src/drivers/partykit/partykit_driver.js.map +1 -0
  54. package/dist/src/drivers/shared.d.ts +17 -0
  55. package/dist/src/drivers/shared.d.ts.map +1 -0
  56. package/dist/src/drivers/shared.js +46 -0
  57. package/dist/src/drivers/shared.js.map +1 -0
  58. package/dist/src/drivers/yjs/yjs_driver.d.ts +18 -12
  59. package/dist/src/drivers/yjs/yjs_driver.d.ts.map +1 -1
  60. package/dist/src/drivers/yjs/yjs_driver.js +50 -94
  61. package/dist/src/drivers/yjs/yjs_driver.js.map +1 -1
  62. package/dist/src/http/types.d.ts +79 -0
  63. package/dist/src/http/types.d.ts.map +1 -0
  64. package/dist/src/http/types.js +8 -0
  65. package/dist/src/http/types.js.map +1 -0
  66. package/dist/src/index.d.ts +7 -3
  67. package/dist/src/index.d.ts.map +1 -1
  68. package/dist/src/index.js +7 -2
  69. package/dist/src/index.js.map +1 -1
  70. package/dist/src/routes.d.ts +29 -0
  71. package/dist/src/routes.d.ts.map +1 -0
  72. package/dist/src/routes.js +189 -0
  73. package/dist/src/routes.js.map +1 -0
  74. package/dist/src/services/booted_app.js +1 -1
  75. package/dist/src/services/booted_app.js.map +1 -1
  76. package/dist/src/services/comment_service.d.ts +5 -4
  77. package/dist/src/services/comment_service.d.ts.map +1 -1
  78. package/dist/src/services/comment_service.js +5 -4
  79. package/dist/src/services/comment_service.js.map +1 -1
  80. package/dist/src/services/main.js +2 -2
  81. package/dist/src/services/main.js.map +1 -1
  82. package/dist/src/storage/file_system_storage.d.ts +2 -2
  83. package/dist/src/storage/file_system_storage.js +2 -2
  84. package/dist/src/storage/in_memory_storage.d.ts +3 -3
  85. package/dist/src/storage/in_memory_storage.js +3 -3
  86. package/dist/src/storage/lucid_storage.d.ts +9 -8
  87. package/dist/src/storage/lucid_storage.d.ts.map +1 -1
  88. package/dist/src/storage/lucid_storage.js +13 -12
  89. package/dist/src/storage/lucid_storage.js.map +1 -1
  90. package/dist/src/types.d.ts +62 -35
  91. package/dist/src/types.d.ts.map +1 -1
  92. package/dist/src/types.js +5 -6
  93. package/dist/src/types.js.map +1 -1
  94. package/dist/src/versioning.d.ts +3 -3
  95. package/dist/src/versioning.d.ts.map +1 -1
  96. package/dist/src/versioning.js +3 -3
  97. package/dist/src/versioning.js.map +1 -1
  98. package/dist/stubs/collaboration/document_types.stub +41 -0
  99. package/dist/stubs/collaboration/documents_dir.stub +3 -0
  100. package/dist/stubs/collaboration/migrations/collab_comments.stub +29 -0
  101. package/dist/stubs/collaboration/migrations/collab_documents.stub +23 -0
  102. package/dist/stubs/collaboration/migrations/collab_versions.stub +26 -0
  103. package/dist/stubs/partykit/worker/package.json.stub +21 -0
  104. package/dist/stubs/partykit/worker/party.ts.stub +175 -0
  105. package/dist/stubs/partykit/worker/partykit.toml.stub +14 -0
  106. package/package.json +19 -4
  107. package/dist/src/services/presence_service.d.ts +0 -44
  108. package/dist/src/services/presence_service.d.ts.map +0 -1
  109. package/dist/src/services/presence_service.js +0 -103
  110. package/dist/src/services/presence_service.js.map +0 -1
@@ -1,7 +1,9 @@
1
- import type { CollaborationConfig } from './types.js';
1
+ import type { ResolveUserFn } from './http/types.js';
2
+ import type { CollaborationConfig, PartyKitConfig } from './types.js';
2
3
  /**
3
- * Shape do `config/collaboration.ts` publicado pelo stub — versão "app-friendly"
4
- * do {@link CollaborationConfig} (redisUrl como string, storage opcional).
4
+ * Shape of the `config/collaboration.ts` published by the stub — the
5
+ * "app-friendly" version of {@link CollaborationConfig} (redisUrl as a
6
+ * string, optional storage).
5
7
  */
6
8
  export type CollaborationAppConfig = {
7
9
  engine?: CollaborationConfig['engine'];
@@ -9,12 +11,29 @@ export type CollaborationAppConfig = {
9
11
  redisUrl?: string;
10
12
  debounce?: number;
11
13
  authorize: CollaborationConfig['authorize'];
12
- /** Omitido = in-memory (só dev). Produção passa um storage persistente. */
14
+ /** Omitted = in-memory (dev only). Production passes a persistent storage. */
13
15
  storage?: CollaborationConfig['storage'];
16
+ /** Required when engine = 'partykit' (edge sync). */
17
+ partykit?: PartyKitConfig;
18
+ /**
19
+ * Built-in REST endpoints. Registered automatically by the provider
20
+ * unless `enabled: false` — then call `collaborationRoutes(router)`
21
+ * inside `start/routes.ts` and apply your own middleware.
22
+ */
23
+ routes?: {
24
+ /** Default: true. */
25
+ enabled?: boolean;
26
+ /** Default: '/collaboration'. */
27
+ prefix?: string;
28
+ /** Middleware applied to the whole route group (manual mode too). */
29
+ middleware?: unknown[];
30
+ /** Resolves the authenticated user for the token endpoint. */
31
+ resolveUser?: ResolveUserFn;
32
+ };
14
33
  };
15
34
  /**
16
- * Config helper (type-safe) usado no `config/collaboration.ts` do app —
17
- * mesmo padrão do `defineConfig` do @adonisjs/*.
35
+ * Type-safe config helper used in the app's `config/collaboration.ts` —
36
+ * same pattern as @adonisjs/*'s `defineConfig`.
18
37
  */
19
38
  export declare function defineConfig(config: CollaborationAppConfig): CollaborationAppConfig;
20
39
  //# 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,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC5C,2EAA2E;IAC3E,OAAO,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;CAC1C,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,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC5C,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,6 +1,6 @@
1
1
  /**
2
- * Config helper (type-safe) usado no `config/collaboration.ts` do app —
3
- * mesmo padrão do `defineConfig` do @adonisjs/*.
2
+ * Type-safe config helper used in the app's `config/collaboration.ts` —
3
+ * same pattern as @adonisjs/*'s `defineConfig`.
4
4
  */
5
5
  export function defineConfig(config) {
6
6
  return config;
@@ -1 +1 @@
1
- {"version":3,"file":"define_config.js","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"AAgBA;;;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":"AAmCA;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,MAA8B;IACzD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,49 +1,43 @@
1
- import type { CollabComment, CollabConnectionContext, CollabDiffSummary, CollabPermission, CollabVersion, CollaborationConfig } from './types.js';
1
+ import type { AuthorizeFn } from './auth/token.js';
2
+ import type { CollabComment, CollabConnectionContext, CollabDiffSummary, CollabPermission, CollabVersion, CollaborationConfig, CollaborationStorage, PartyKitConfig } from './types.js';
2
3
  /**
3
- * Contrato de um driver CRDT. O driver é dono do motor (Yjs/Hocuspocus ou
4
- * Automerge): recebe o server HTTP do Adonis pra anexar o WebSocket, fala o
5
- * protocolo binário do motor com os clientes e implementa version control
6
- * (nativo no Automerge, via snapshots no Yjs).
4
+ * Contract for a CRDT driver. The driver owns the engine (Yjs/Hocuspocus or
5
+ * Automerge): it receives the Adonis HTTP server to attach the WebSocket,
6
+ * speaks the engine's binary protocol with clients and implements version
7
+ * control (native in Automerge, via snapshots in Yjs).
7
8
  */
8
9
  export interface CollaborationDriver {
9
10
  readonly engine: string;
10
- /** Anexa o transporte WebSocket ao server HTTP (upgrade no path configurado). */
11
+ /** Attaches the WebSocket transport to the HTTP server (upgrade on the configured path). */
11
12
  attach(server: import('node:http').Server): Promise<void>;
12
- /** Estado binário atual do documento (pra export/push externo, ex.: Drive). */
13
+ /** Current binary state of the document (for external export/push, e.g. Drive). */
13
14
  getDocumentState(docName: string): Promise<Uint8Array>;
14
- /** Texto plano do documento (pra LanguageTool, RAG, índices de comentário). */
15
+ /** Plain text of the document (for LanguageTool, RAG, comment indexes). */
15
16
  getDocumentText(docName: string): Promise<string>;
16
- /** Cria uma versão nomeada no histórico. */
17
+ /** Creates a named version in the history. */
17
18
  createVersion(docName: string, createdBy: string | null, label: string | null): Promise<CollabVersion>;
18
- /** Lista as versões do histórico. */
19
+ /** Lists the versions in the history. */
19
20
  listVersions(docName: string): Promise<CollabVersion[]>;
20
- /** Restaura o documento pra uma versão (cria nova versão "restaurado de X"). */
21
+ /** Restores the document to a version (creates a new "restored from X" version). */
21
22
  restoreVersion(docName: string, versionId: string, restoredBy: string | null): Promise<void>;
22
- /** Resumo de diff entre duas versões. */
23
+ /** Diff summary between two versions. */
23
24
  diffVersions(docName: string, aId: string, bId: string): Promise<CollabDiffSummary>;
24
- /** Comentários ancorados do documento (por espaço opcional). */
25
- listComments(docName: string, space?: string): Promise<CollabComment[]>;
26
- /** Cria um comentário ancorado num espaço do documento. */
27
- createComment(docName: string, comment: Omit<CollabComment, 'id' | 'createdAt' | 'updatedAt' | 'resolvedAt'>): Promise<CollabComment>;
28
- /** Resolve/reabre um comentário. Retorna null se não existir. */
29
- resolveComment(docName: string, commentId: string, resolved: boolean): Promise<CollabComment | null>;
30
- /** Remove um comentário. Retorna false se não existir. */
31
- deleteComment(docName: string, commentId: string): Promise<boolean>;
32
- /** Encerra graciosamente (flush + fecha conexões). */
25
+ /** Gracefully shuts down (flush + closes connections). */
33
26
  close(): Promise<void>;
34
27
  }
35
- /**
36
- * Camada de comentários ancorados — genérica por tipo de conteúdo.
37
- * A lib persiste âncoras + lifecycle; o app registra o resolver do seu
38
- * formato (texto, canvas/tldraw, mídia).
39
- */
40
- export interface CommentService {
41
- list(docName: string, space?: string): Promise<CollabComment[]>;
42
- create(docName: string, comment: Omit<CollabComment, 'id' | 'createdAt' | 'updatedAt' | 'resolvedAt'>): Promise<CollabComment>;
43
- resolve(docName: string, commentId: string, resolved: boolean): Promise<CollabComment | null>;
44
- remove(docName: string, commentId: string): Promise<boolean>;
28
+ /** Narrow dependencies for self-hosted engines (Yjs/Automerge). */
29
+ export interface SelfHostedDriverOptions {
30
+ storage?: CollaborationStorage;
31
+ authorize: AuthorizeFn;
32
+ path?: string;
33
+ debounce?: number;
34
+ }
35
+ /** Narrow dependencies for the edge engine (PartyKit). */
36
+ export interface PartyKitDriverOptions {
37
+ storage?: CollaborationStorage;
38
+ partykit: PartyKitConfig;
45
39
  }
46
- /** Helpers compartilhados pelos drivers. */
40
+ /** Helpers shared across drivers. */
47
41
  export type { CollabComment, CollabConnectionContext, CollabPermission, CollabVersion, CollaborationConfig, };
48
42
  export type { CollabDiffSummary };
49
43
  //# sourceMappingURL=driver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../src/driver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,uBAAuB,EACvB,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAEpB;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,iFAAiF;IACjF,MAAM,CAAC,MAAM,EAAE,OAAO,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1D,+EAA+E;IAC/E,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvD,+EAA+E;IAC/E,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAElD,4CAA4C;IAC5C,aAAa,CACX,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB,OAAO,CAAC,aAAa,CAAC,CAAC;IAE1B,qCAAqC;IACrC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAExD,gFAAgF;IAChF,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7F,yCAAyC;IACzC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAEpF,gEAAgE;IAChE,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAExE,2DAA2D;IAC3D,aAAa,CACX,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,CAAC,GAC5E,OAAO,CAAC,aAAa,CAAC,CAAC;IAE1B,iEAAiE;IACjE,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAErG,0DAA0D;IAC1D,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpE,sDAAsD;IACtD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAChE,MAAM,CACJ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,CAAC,GAC5E,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1B,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAC9F,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9D;AAED,4CAA4C;AAC5C,YAAY,EACV,aAAa,EACb,uBAAuB,EACvB,gBAAgB,EAChB,aAAa,EACb,mBAAmB,GACpB,CAAC;AACF,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../src/driver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EACV,aAAa,EACb,uBAAuB,EACvB,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,4FAA4F;IAC5F,MAAM,CAAC,MAAM,EAAE,OAAO,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1D,mFAAmF;IACnF,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvD,2EAA2E;IAC3E,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAElD,8CAA8C;IAC9C,aAAa,CACX,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB,OAAO,CAAC,aAAa,CAAC,CAAC;IAE1B,yCAAyC;IACzC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAExD,oFAAoF;IACpF,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7F,yCAAyC;IACzC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAEpF,0DAA0D;IAC1D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,mEAAmE;AACnE,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,SAAS,EAAE,WAAW,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,0DAA0D;AAC1D,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED,qCAAqC;AACrC,YAAY,EACV,aAAa,EACb,uBAAuB,EACvB,gBAAgB,EAChB,aAAa,EACb,mBAAmB,GACpB,CAAC;AACF,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
@@ -1,30 +1,25 @@
1
- import type { CollaborationDriver } from '../../driver.js';
2
- import type { CollabComment, CollabDiffSummary, CollabVersion, CollaborationConfig } from '../../types.js';
1
+ import type { CollaborationDriver, SelfHostedDriverOptions } from '../../driver.js';
2
+ import type { CollabDiffSummary, CollabVersion } from '../../types.js';
3
3
  export declare class AutomergeDriver implements CollaborationDriver {
4
- #private;
5
- private config;
6
4
  readonly engine = "automerge";
7
5
  private rooms;
8
6
  private wss?;
9
- private commentsService;
10
- constructor(config: CollaborationConfig);
7
+ private readonly options;
8
+ private readonly storage;
9
+ private persistTimers;
10
+ constructor(options: SelfHostedDriverOptions);
11
11
  private loadRoom;
12
12
  private broadcast;
13
13
  attach(server: import('node:http').Server): Promise<void>;
14
14
  private handleClientMessage;
15
- private persistTimers;
16
15
  private persistDebounced;
17
16
  getDocumentState(docName: string): Promise<Uint8Array>;
18
17
  getDocumentText(docName: string): Promise<string>;
19
- /** Versões = marcadores sobre o history nativo (heads hash). */
18
+ /** Versions = markers over the native history (heads hash). */
20
19
  createVersion(docName: string, createdBy: string | null, label: string | null): Promise<CollabVersion>;
21
20
  listVersions(docName: string): Promise<CollabVersion[]>;
22
21
  restoreVersion(docName: string, versionId: string, _restoredBy: string | null): Promise<void>;
23
22
  diffVersions(docName: string, aId: string, bId: string): Promise<CollabDiffSummary>;
24
- listComments(docName: string, space?: string): Promise<CollabComment[]>;
25
- createComment(docName: string, comment: Omit<CollabComment, 'id' | 'createdAt' | 'updatedAt' | 'resolvedAt'>): Promise<CollabComment>;
26
- resolveComment(docName: string, commentId: string, resolved: boolean): Promise<CollabComment | null>;
27
- deleteComment(docName: string, commentId: string): Promise<boolean>;
28
23
  close(): Promise<void>;
29
24
  }
30
25
  //# sourceMappingURL=automerge_driver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"automerge_driver.d.ts","sourceRoot":"","sources":["../../../../src/drivers/automerge/automerge_driver.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAG3D,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EAEpB,MAAM,gBAAgB,CAAC;AAwBxB,qBAAa,eAAgB,YAAW,mBAAmB;;IAO7C,OAAO,CAAC,MAAM;IAN1B,QAAQ,CAAC,MAAM,eAAe;IAE9B,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,GAAG,CAAC,CAAkB;IAC9B,OAAO,CAAC,eAAe,CAAiB;gBAEpB,MAAM,EAAE,mBAAmB;YAcjC,QAAQ;IActB,OAAO,CAAC,SAAS;IAQX,MAAM,CAAC,MAAM,EAAE,OAAO,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAsDjD,mBAAmB;IAkBjC,OAAO,CAAC,aAAa,CAAoD;IAEzE,OAAO,CAAC,gBAAgB;IAgBlB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAKtD,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMvD,gEAAgE;IAC1D,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;IAiBnF,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAIvE,aAAa,CACjB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,CAAC,GAC5E,OAAO,CAAC,aAAa,CAAC;IAInB,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAI1B,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAInE,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;AACpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAwB,MAAM,gBAAgB,CAAC;AAyB7F,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;YAsDjD,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,33 +1,24 @@
1
1
  import * as A from '@automerge/automerge';
2
2
  import { next as ANext } from '@automerge/automerge';
3
3
  import { WebSocketServer } from 'ws';
4
- import { CommentService } from '../../services/comment_service.js';
5
- import { InMemoryCollaborationStorage } from '../../storage/in_memory_storage.js';
6
4
  import { createVersionMetadata, seqVersions } from '../../versioning.js';
5
+ import { lineDiff, resolveStorage } from '../shared.js';
7
6
  export class AutomergeDriver {
8
- config;
9
7
  engine = 'automerge';
10
8
  rooms = new Map();
11
9
  wss;
12
- commentsService;
13
- constructor(config) {
14
- this.config = config;
15
- this.commentsService = new CommentService(config.storage ?? new InMemoryCollaborationStorage());
16
- }
17
- /** Storage configurado ou in-memory (dev). */
18
- #storage() {
19
- if (this.config.storage) {
20
- return this.config.storage;
21
- }
22
- this.#memoryStorage ??= new InMemoryCollaborationStorage();
23
- return this.#memoryStorage;
10
+ options;
11
+ storage;
12
+ persistTimers = new Map();
13
+ constructor(options) {
14
+ this.options = options;
15
+ this.storage = resolveStorage(options.storage);
24
16
  }
25
- #memoryStorage;
26
17
  async loadRoom(docName) {
27
18
  let room = this.rooms.get(docName);
28
19
  if (room)
29
20
  return room;
30
- const stored = await this.#storage().loadDocument(docName);
21
+ const stored = await this.storage.loadDocument(docName);
31
22
  const doc = stored
32
23
  ? A.load(stored.state)
33
24
  : A.from({ content: '' });
@@ -43,7 +34,7 @@ export class AutomergeDriver {
43
34
  }
44
35
  }
45
36
  async attach(server) {
46
- const path = this.config.path ?? '/collaboration';
37
+ const path = this.options.path ?? '/collaboration';
47
38
  const wss = new WebSocketServer({ noServer: true });
48
39
  this.wss = wss;
49
40
  server.on('upgrade', (request, socket, head) => {
@@ -53,25 +44,25 @@ export class AutomergeDriver {
53
44
  wss.handleUpgrade(request, socket, head, async (ws) => {
54
45
  const docName = decodeURIComponent(url.searchParams.get('doc') ?? '');
55
46
  if (!docName) {
56
- ws.close(4000, 'doc obrigatório');
47
+ ws.close(4000, 'doc required');
57
48
  return;
58
49
  }
59
- // Autenticação: token base64 na query (?token=...&doc=...).
50
+ // Authentication: base64 token in the query (?token=...&doc=...).
60
51
  const token = url.searchParams.get('token');
61
52
  if (!token) {
62
- ws.close(4001, 'não autenticado');
53
+ ws.close(4001, 'not authenticated');
63
54
  return;
64
55
  }
65
56
  try {
66
57
  const ctx = JSON.parse(Buffer.from(token, 'base64').toString());
67
- const permission = await this.config.authorize(ctx, docName);
58
+ const permission = await this.options.authorize(ctx, docName);
68
59
  if (!permission.canRead) {
69
- ws.close(4003, 'sem acesso');
60
+ ws.close(4003, 'no access');
70
61
  return;
71
62
  }
72
63
  const room = await this.loadRoom(docName);
73
64
  room.clients.add(ws);
74
- // Envia o estado completo pro cliente novo.
65
+ // Sends the full state to the new client.
75
66
  ws.send(A.save(room.text));
76
67
  ws.on('message', (data) => {
77
68
  void this.handleClientMessage(docName, data, ws);
@@ -81,38 +72,35 @@ export class AutomergeDriver {
81
72
  });
82
73
  }
83
74
  catch {
84
- ws.close(4001, 'autenticação falhou');
75
+ ws.close(4001, 'authentication failed');
85
76
  }
86
77
  });
87
78
  });
88
79
  }
89
- // biome-ignore lint/suspicious/noExplicitAny: tipagem do automerge é instável entre minors
80
+ // biome-ignore lint/suspicious/noExplicitAny: automerge's typing is unstable between minors
90
81
  async handleClientMessage(docName, data, sender) {
91
82
  const room = await this.loadRoom(docName);
92
83
  try {
93
- // Cliente manda um doc binário incremental; merge no doc do server.
84
+ // Client sends an incremental binary doc; merge into the server doc.
94
85
  const incoming = A.load(data);
95
86
  const merged = A.merge(room.text, incoming);
96
87
  room.text = merged;
97
88
  this.broadcast(room, data, sender);
98
- // Persistência com debounce simples por sala.
89
+ // Persistence with simple per-room debounce.
99
90
  await this.persistDebounced(docName, room);
100
91
  }
101
92
  catch {
102
- // Payload inválido: ignora (cliente mal comportado não derruba a sala).
93
+ // Invalid payload: ignore (a badly-behaved client doesn't take down the room).
103
94
  }
104
95
  }
105
- persistTimers = new Map();
106
96
  persistDebounced(docName, room) {
107
97
  return new Promise((resolve) => {
108
98
  const existing = this.persistTimers.get(docName);
109
99
  if (existing)
110
100
  clearTimeout(existing);
111
101
  this.persistTimers.set(docName, setTimeout(() => {
112
- void this.#storage()
113
- .saveDocument(docName, A.save(room.text))
114
- .finally(() => resolve());
115
- }, this.config.debounce ?? 2000));
102
+ void this.storage.saveDocument(docName, A.save(room.text)).finally(() => resolve());
103
+ }, this.options.debounce ?? 2000));
116
104
  });
117
105
  }
118
106
  async getDocumentState(docName) {
@@ -124,32 +112,32 @@ export class AutomergeDriver {
124
112
  const content = room.text.content;
125
113
  return content ? content.toString() : '';
126
114
  }
127
- /** Versões = marcadores sobre o history nativo (heads hash). */
115
+ /** Versions = markers over the native history (heads hash). */
128
116
  async createVersion(docName, createdBy, label) {
129
117
  const room = await this.loadRoom(docName);
130
118
  const heads = ANext.getHeads(room.text);
131
- const existing = await this.#storage().listVersions(docName);
119
+ const existing = await this.storage.listVersions(docName);
132
120
  const version = {
133
121
  ...createVersionMetadata(createdBy, label, seqVersions(existing)),
134
122
  id: heads.join(','),
135
123
  };
136
- // Snapshot = save binário do doc até esses heads (o Automerge comprime
137
- // bem; guardar o doc inteiro como "snapshot" mantém restore O(1)).
138
- await this.#storage().saveVersion(docName, version, A.save(room.text));
124
+ // Snapshot = binary save of the doc up to those heads (Automerge compresses
125
+ // well; storing the whole doc as the "snapshot" keeps restore O(1)).
126
+ await this.storage.saveVersion(docName, version, A.save(room.text));
139
127
  return version;
140
128
  }
141
129
  async listVersions(docName) {
142
- return this.#storage().listVersions(docName);
130
+ return this.storage.listVersions(docName);
143
131
  }
144
132
  async restoreVersion(docName, versionId, _restoredBy) {
145
- const bytes = await this.#storage().loadVersionSnapshot(docName, versionId);
133
+ const bytes = await this.storage.loadVersionSnapshot(docName, versionId);
146
134
  if (!bytes)
147
- throw new Error(`Versão ${versionId} não encontrada`);
135
+ throw new Error(`Version ${versionId} not found`);
148
136
  const snapshotDoc = A.load(bytes);
149
137
  const room = await this.loadRoom(docName);
150
138
  const merged = A.merge(room.text, snapshotDoc);
151
- // Automerge merge converge pro estado mais recente; pra "restaurar",
152
- // sobrescrevemos o campo de conteúdo com o valor da versão.
139
+ // Automerge merge converges to the most recent state; to "restore",
140
+ // we overwrite the content field with the value from the version.
153
141
  const restoredContent = snapshotDoc
154
142
  .content;
155
143
  const finalDoc = A.change(merged, (doc) => {
@@ -157,33 +145,20 @@ export class AutomergeDriver {
157
145
  });
158
146
  room.text = finalDoc;
159
147
  this.broadcast(room, A.save(finalDoc));
160
- await this.#storage().saveDocument(docName, A.save(finalDoc));
148
+ await this.storage.saveDocument(docName, A.save(finalDoc));
161
149
  }
162
150
  async diffVersions(docName, aId, bId) {
163
151
  const [aBytes, bBytes] = await Promise.all([
164
- this.#storage().loadVersionSnapshot(docName, aId),
165
- this.#storage().loadVersionSnapshot(docName, bId),
152
+ this.storage.loadVersionSnapshot(docName, aId),
153
+ this.storage.loadVersionSnapshot(docName, bId),
166
154
  ]);
167
155
  if (!aBytes || !bBytes)
168
- throw new Error('Versão não encontrada');
156
+ throw new Error('Version not found');
169
157
  const textOf = (bytes) => {
170
158
  const doc = A.load(bytes);
171
159
  return doc.content?.toString() ?? '';
172
160
  };
173
- return diffByLine(textOf(aBytes), textOf(bBytes));
174
- }
175
- /* ───────────────────────── comentários ancorados ───────────────────────── */
176
- async listComments(docName, space) {
177
- return this.commentsService.list(docName, space);
178
- }
179
- async createComment(docName, comment) {
180
- return this.commentsService.create(docName, comment);
181
- }
182
- async resolveComment(docName, commentId, resolved) {
183
- return this.commentsService.resolve(docName, commentId, resolved);
184
- }
185
- async deleteComment(docName, commentId) {
186
- return this.commentsService.remove(docName, commentId);
161
+ return lineDiff(textOf(aBytes), textOf(bBytes));
187
162
  }
188
163
  async close() {
189
164
  for (const timer of this.persistTimers.values())
@@ -193,17 +168,4 @@ export class AutomergeDriver {
193
168
  });
194
169
  }
195
170
  }
196
- function diffByLine(a, b) {
197
- const linesA = new Set(a.split('\n'));
198
- const linesB = new Set(b.split('\n'));
199
- let added = 0;
200
- for (const line of linesB)
201
- if (!linesA.has(line))
202
- added++;
203
- let removed = 0;
204
- for (const line of linesA)
205
- if (!linesB.has(line))
206
- removed++;
207
- return { added, removed };
208
- }
209
171
  //# sourceMappingURL=automerge_driver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"automerge_driver.js","sourceRoot":"","sources":["../../../../src/drivers/automerge/automerge_driver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"automerge_driver.js","sourceRoot":"","sources":["../../../../src/drivers/automerge/automerge_driver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import type { CollaborationDriver, PartyKitDriverOptions } from '../../driver.js';
2
+ import type { CollabDiffSummary, CollabVersion } from '../../types.js';
3
+ /**
4
+ * PartyKit driver (edge sync).
5
+ *
6
+ * Unlike the Yjs/Automerge drivers, the transport is NOT attached to the
7
+ * Adonis HTTP server: PartyKit runs as a standalone Worker (Cloudflare
8
+ * Durable Objects) on its own origin and browsers connect to it directly.
9
+ * This driver is the worker's HTTP client — `attach()` is an intentional
10
+ * no-op.
11
+ *
12
+ * Responsibilities:
13
+ * - `getDocumentState`/`getDocumentText`: GET the worker's `onRequest`;
14
+ * - `restoreVersion`: POST the binary update to the live doc (edge broadcast);
15
+ * - version control + comments: stay in Adonis (injected storage),
16
+ * fetching the current room state over HTTP before snapshotting.
17
+ *
18
+ * The worker template (`stubs/partykit/worker/`) is published by
19
+ * `collaboration:init --engine=partykit`.
20
+ */
21
+ export { signPartyKitToken, verifyPartyKitToken } from '../../auth/token.js';
22
+ /** Typed error for non-2xx worker responses. */
23
+ export declare class PartyKitRoomError extends Error {
24
+ readonly status: number;
25
+ readonly body: string;
26
+ readonly docName: string;
27
+ constructor(status: number, body: string, docName: string);
28
+ }
29
+ export declare class PartyKitDriver implements CollaborationDriver {
30
+ readonly engine = "partykit";
31
+ private readonly options;
32
+ private readonly storage;
33
+ constructor(options: PartyKitDriverOptions);
34
+ /** Validates the partykit config (throws a clear message when absent). */
35
+ private partyConfig;
36
+ /** Room HTTP endpoint URL on the worker. */
37
+ private roomUrl;
38
+ /** Authenticated HTTP call to the worker's `onRequest`. */
39
+ private roomRequest;
40
+ /**
41
+ * Intentional no-op: the WebSocket lives in the PartyKit worker, not the
42
+ * Node server. Kept on the interface for provider lifecycle compatibility
43
+ * (which calls attach during ready()).
44
+ */
45
+ attach(_server: import('node:http').Server): Promise<void>;
46
+ getDocumentState(docName: string): Promise<Uint8Array>;
47
+ getDocumentText(docName: string): Promise<string>;
48
+ createVersion(docName: string, createdBy: string | null, label: string | null): Promise<CollabVersion>;
49
+ listVersions(docName: string): Promise<CollabVersion[]>;
50
+ restoreVersion(docName: string, versionId: string, restoredBy: string | null): Promise<void>;
51
+ diffVersions(docName: string, aId: string, bId: string): Promise<CollabDiffSummary>;
52
+ close(): Promise<void>;
53
+ }
54
+ //# sourceMappingURL=partykit_driver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"partykit_driver.d.ts","sourceRoot":"","sources":["../../../../src/drivers/partykit/partykit_driver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAwB,MAAM,gBAAgB,CAAC;AAI7F;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE7E,gDAAgD;AAChD,qBAAa,iBAAkB,SAAQ,KAAK;aAExB,MAAM,EAAE,MAAM;aACd,IAAI,EAAE,MAAM;aACZ,OAAO,EAAE,MAAM;gBAFf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM;CAKlC;AAED,qBAAa,cAAe,YAAW,mBAAmB;IACxD,QAAQ,CAAC,MAAM,cAAc;IAE7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;gBAEnC,OAAO,EAAE,qBAAqB;IAK1C,0EAA0E;IAC1E,OAAO,CAAC,WAAW;IAWnB,4CAA4C;IAC5C,OAAO,CAAC,OAAO;IAOf,2DAA2D;YAC7C,WAAW;IAsBzB;;;;OAIG;IACG,MAAM,CAAC,OAAO,EAAE,OAAO,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1D,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAWtD,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAWjD,aAAa,CACjB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB,OAAO,CAAC,aAAa,CAAC;IASnB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAIvD,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GAAG,IAAI,GACxB,OAAO,CAAC,IAAI,CAAC;IAkBV,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAsBnF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}