@adonis-agora/collaboration-client 0.7.1 → 0.8.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/dist/src/components/excalidraw_board.d.ts +1 -1
- package/dist/src/components/excalidraw_board.d.ts.map +1 -1
- package/dist/src/components/excalidraw_board.js +1 -1
- package/dist/src/components/excalidraw_board.js.map +1 -1
- package/dist/src/context.d.ts +17 -3
- package/dist/src/context.d.ts.map +1 -1
- package/dist/src/context.js +7 -1
- package/dist/src/context.js.map +1 -1
- package/dist/src/docs/automerge_doc.d.ts.map +1 -1
- package/dist/src/docs/automerge_doc.js.map +1 -1
- package/dist/src/docs/index.d.ts +2 -2
- package/dist/src/docs/index.d.ts.map +1 -1
- package/dist/src/docs/index.js.map +1 -1
- package/dist/src/docs/yjs_doc.d.ts.map +1 -1
- package/dist/src/docs/yjs_doc.js.map +1 -1
- package/dist/src/editors/index.d.ts +3 -3
- package/dist/src/editors/index.d.ts.map +1 -1
- package/dist/src/editors/index.js +1 -1
- package/dist/src/editors/index.js.map +1 -1
- package/dist/src/hooks/use_automerge_doc.js +1 -1
- package/dist/src/hooks/use_automerge_doc.js.map +1 -1
- package/dist/src/hooks/use_collab_doc.d.ts +19 -1
- package/dist/src/hooks/use_collab_doc.d.ts.map +1 -1
- package/dist/src/hooks/use_collab_doc.js +10 -2
- package/dist/src/hooks/use_collab_doc.js.map +1 -1
- package/dist/src/index.d.ts +26 -25
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +13 -12
- package/dist/src/index.js.map +1 -1
- package/dist/src/pre_issued_token.d.ts +45 -0
- package/dist/src/pre_issued_token.d.ts.map +1 -0
- package/dist/src/pre_issued_token.js +77 -0
- package/dist/src/pre_issued_token.js.map +1 -0
- package/dist/src/rest_client.d.ts.map +1 -1
- package/dist/src/rest_client.js.map +1 -1
- package/dist/src/session.d.ts +23 -1
- package/dist/src/session.d.ts.map +1 -1
- package/dist/src/session.js +24 -1
- package/dist/src/session.js.map +1 -1
- package/dist/src/transports/hocuspocus.d.ts.map +1 -1
- package/dist/src/transports/normalize_status.js.map +1 -1
- package/dist/src/transports/partykit.d.ts.map +1 -1
- package/dist/src/transports/partyserver.d.ts.map +1 -1
- package/dist/src/types.d.ts +35 -1
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +12 -12
|
@@ -24,5 +24,5 @@ export interface ExcalidrawBoardProps {
|
|
|
24
24
|
* />
|
|
25
25
|
* ```
|
|
26
26
|
*/
|
|
27
|
-
export declare function ExcalidrawBoard({ docName, readOnly, langCode, baseUrl, getHeaders, }: ExcalidrawBoardProps): import("react
|
|
27
|
+
export declare function ExcalidrawBoard({ docName, readOnly, langCode, baseUrl, getHeaders, }: ExcalidrawBoardProps): import("react").JSX.Element;
|
|
28
28
|
//# sourceMappingURL=excalidraw_board.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"excalidraw_board.d.ts","sourceRoot":"","sources":["../../../src/components/excalidraw_board.tsx"],"names":[],"mappings":"AA6DA,MAAM,WAAW,oBAAoB;IACnC,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,8DAA8D;IAC9D,UAAU,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,EAC9B,OAAO,EACP,QAAgB,EAChB,QAAkB,EAClB,OAAO,EACP,UAAU,GACX,EAAE,oBAAoB
|
|
1
|
+
{"version":3,"file":"excalidraw_board.d.ts","sourceRoot":"","sources":["../../../src/components/excalidraw_board.tsx"],"names":[],"mappings":"AA6DA,MAAM,WAAW,oBAAoB;IACnC,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,8DAA8D;IAC9D,UAAU,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,EAC9B,OAAO,EACP,QAAgB,EAChB,QAAkB,EAClB,OAAO,EACP,UAAU,GACX,EAAE,oBAAoB,+BAWtB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { lazy, Suspense, useEffect, useState } from 'react';
|
|
3
3
|
import { useExcalidrawSync } from '../hooks/use_excalidraw_sync.js';
|
|
4
4
|
import { CollaborationProvider, useCollabDoc } from '../index.js';
|
|
5
5
|
// O CSS do Excalidraw precisa ser importado pelo APP HOST, não por esta
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"excalidraw_board.js","sourceRoot":"","sources":["../../../src/components/excalidraw_board.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"excalidraw_board.js","sourceRoot":"","sources":["../../../src/components/excalidraw_board.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAElE,wEAAwE;AACxE,mEAAmE;AACnE,sEAAsE;AACtE,kEAAkE;AAClE,qEAAqE;AACrE,gEAAgE;AAChE,mEAAmE;AACnE,kDAAkD;AAElD,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE;IACrC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;IACnD,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;AACrC,CAAC,CAAC,CAAC;AAEH,SAAS,YAAY;IACnB,OAAO,CACL,cAAK,SAAS,EAAC,4DAA4D,YACzE,YAAG,SAAS,EAAC,+BAA+B,uCAAsB,GAC9D,CACP,CAAC;AACJ,CAAC;AAQD,SAAS,oBAAoB,CAAC,EAC5B,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,QAAQ,GAAG,OAAO,GACQ;IAC1B,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAChD,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAU,IAAI,CAAC,CAAC;IAC9C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9C,SAAS,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAEtC,iBAAiB,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,GAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAEtF,IAAI,CAAC,OAAO;QAAE,OAAO,KAAC,YAAY,KAAG,CAAC;IAEtC,OAAO,CACL,cAAK,SAAS,EAAC,oDAAoD,YACjE,KAAC,QAAQ,IAAC,QAAQ,EAAE,KAAC,YAAY,KAAG,YAClC,KAAC,cAAc,IACb,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,QAAQ,EACzB,WAAW,EAAE,EAAE,QAAQ,EAAE,EAAE,mBAAmB,EAAE,SAAS,EAAE,EAAE,GAC7D,GACO,GACP,CACP,CAAC;AACJ,CAAC;AAeD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,QAAQ,GAAG,OAAO,EAClB,OAAO,EACP,UAAU,GACW;IACrB,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,SAAS,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAEtC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAC,YAAY,KAAG,CAAC;IAEtC,OAAO,CACL,KAAC,qBAAqB,IAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,YAC7D,KAAC,oBAAoB,IAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAI,GAC5D,CACzB,CAAC;AACJ,CAAC"}
|
package/dist/src/context.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
2
|
import { DocSession } from './session.js';
|
|
3
|
-
import type { CollaborationClientConfig } from './types.js';
|
|
3
|
+
import type { CollaborationClientConfig, CollabTokenInfo } from './types.js';
|
|
4
4
|
interface CollaborationContextValue {
|
|
5
5
|
/** Sempre retorna o config mais recente do render atual. */
|
|
6
6
|
getConfig(): CollaborationClientConfig;
|
|
@@ -23,10 +23,24 @@ export interface CollaborationProviderProps extends CollaborationClientConfig {
|
|
|
23
23
|
* <Editor docName="researches/42/writing" />
|
|
24
24
|
* </CollaborationProvider>
|
|
25
25
|
* ```
|
|
26
|
+
*
|
|
27
|
+
* `initialTokens` entrega tokens que o server já emitiu ao renderizar a
|
|
28
|
+
* página, um por docName: a primeira conexão abre o socket direto, sem o
|
|
29
|
+
* `GET /collaboration/token` na frente. Reconexão continua buscando token
|
|
30
|
+
* novo por HTTP.
|
|
26
31
|
*/
|
|
27
|
-
export declare function CollaborationProvider({ children, ...config }: CollaborationProviderProps): import("react
|
|
32
|
+
export declare function CollaborationProvider({ children, ...config }: CollaborationProviderProps): import("react").JSX.Element;
|
|
28
33
|
/** Contexto interno — lança se usado fora do provider. */
|
|
29
34
|
export declare function useCollaborationContext(): CollaborationContextValue;
|
|
35
|
+
/** Opções aplicadas só quando a sessão é **criada**. */
|
|
36
|
+
export interface GetOrCreateSessionOptions {
|
|
37
|
+
/**
|
|
38
|
+
* Token pré-emitido pelo server para a primeira conexão. Ignorado quando a
|
|
39
|
+
* sessão já existe: ela já está conectada (ou reconectando com token
|
|
40
|
+
* próprio), e um token de renderização não tem nada a acrescentar ali.
|
|
41
|
+
*/
|
|
42
|
+
initialToken?: CollabTokenInfo | null | undefined;
|
|
43
|
+
}
|
|
30
44
|
/**
|
|
31
45
|
* Pega ou cria a sessão do documento (1 Y.Doc por docName).
|
|
32
46
|
*
|
|
@@ -35,6 +49,6 @@ export declare function useCollaborationContext(): CollaborationContextValue;
|
|
|
35
49
|
* uma sessão nova — senão o consumidor recebe um editor morto que não
|
|
36
50
|
* reconecta (o `start()` curto-circuita no `#startPromise` antigo).
|
|
37
51
|
*/
|
|
38
|
-
export declare function getOrCreateSession(context: CollaborationContextValue, docName: string): DocSession;
|
|
52
|
+
export declare function getOrCreateSession(context: CollaborationContextValue, docName: string, options?: GetOrCreateSessionOptions): DocSession;
|
|
39
53
|
export {};
|
|
40
54
|
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/context.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/context.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAA+B,MAAM,OAAO,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7E,UAAU,yBAAyB;IACjC,4DAA4D;IAC5D,SAAS,IAAI,yBAAyB,CAAC;IACvC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACnC;AAID,MAAM,WAAW,0BAA2B,SAAQ,yBAAyB;IAC3E,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,EAAE,0BAA0B,+BAkBxF;AAED,0DAA0D;AAC1D,wBAAgB,uBAAuB,IAAI,yBAAyB,CAMnE;AAED,wDAAwD;AACxD,MAAM,WAAW,yBAAyB;IACxC;;;;OAIG;IACH,YAAY,CAAC,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,CAAC;CACnD;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,yBAAyB,EAClC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,yBAAyB,GAClC,UAAU,CAUZ"}
|
package/dist/src/context.js
CHANGED
|
@@ -16,6 +16,11 @@ const CollaborationContext = createContext(null);
|
|
|
16
16
|
* <Editor docName="researches/42/writing" />
|
|
17
17
|
* </CollaborationProvider>
|
|
18
18
|
* ```
|
|
19
|
+
*
|
|
20
|
+
* `initialTokens` entrega tokens que o server já emitiu ao renderizar a
|
|
21
|
+
* página, um por docName: a primeira conexão abre o socket direto, sem o
|
|
22
|
+
* `GET /collaboration/token` na frente. Reconexão continua buscando token
|
|
23
|
+
* novo por HTTP.
|
|
19
24
|
*/
|
|
20
25
|
export function CollaborationProvider({ children, ...config }) {
|
|
21
26
|
const sessionsRef = useRef(null);
|
|
@@ -46,12 +51,13 @@ export function useCollaborationContext() {
|
|
|
46
51
|
* uma sessão nova — senão o consumidor recebe um editor morto que não
|
|
47
52
|
* reconecta (o `start()` curto-circuita no `#startPromise` antigo).
|
|
48
53
|
*/
|
|
49
|
-
export function getOrCreateSession(context, docName) {
|
|
54
|
+
export function getOrCreateSession(context, docName, options) {
|
|
50
55
|
const existing = context.sessions.get(docName);
|
|
51
56
|
if (existing && !existing.isDestroyed)
|
|
52
57
|
return existing;
|
|
53
58
|
const session = new DocSession(docName, context.getConfig(), {
|
|
54
59
|
registry: context.sessions,
|
|
60
|
+
...(options?.initialToken ? { initialToken: options.initialToken } : {}),
|
|
55
61
|
});
|
|
56
62
|
context.sessions.set(docName, session);
|
|
57
63
|
return session;
|
package/dist/src/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/context.tsx"],"names":[],"mappings":";AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/context.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAkB,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAS1C,MAAM,oBAAoB,GAAG,aAAa,CAAmC,IAAI,CAAC,CAAC;AAMnF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAAE,QAAQ,EAAE,GAAG,MAAM,EAA8B;IACvF,MAAM,WAAW,GAAG,MAAM,CAAiC,IAAI,CAAC,CAAC;IACjE,IAAI,WAAW,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QACjC,WAAW,CAAC,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;IACtD,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAA4B,MAAM,CAAC,CAAC;IAC5D,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC;IAE3B,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,CAAC;QACL,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO;QAClC,QAAQ,EAAE,WAAW,CAAC,OAAkC;KACzD,CAAC,EACF,EAAE,CACH,CAAC;IAEF,OAAO,KAAC,oBAAoB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAAiC,CAAC;AACjG,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,uBAAuB;IACrC,MAAM,OAAO,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAYD;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAkC,EAClC,OAAe,EACf,OAAmC;IAEnC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW;QAAE,OAAO,QAAQ,CAAC;IAEvD,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE;QAC3D,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzE,CAAC,CAAC;IACH,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACvC,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automerge_doc.d.ts","sourceRoot":"","sources":["../../../src/docs/automerge_doc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;GAIG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACjE,4DAA4D;IAC5D,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC;IACpB,yDAAyD;IACzD,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IACxC,2DAA2D;IAC3D,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;CAC5C;AAED,qBAAa,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAE,YAAW,SAAS;IACzE,OAAO,CAAC,QAAQ,CAAC,IAAI;
|
|
1
|
+
{"version":3,"file":"automerge_doc.d.ts","sourceRoot":"","sources":["../../../src/docs/automerge_doc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;GAIG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACjE,4DAA4D;IAC5D,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC;IACpB,yDAAyD;IACzD,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IACxC,2DAA2D;IAC3D,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;CAC5C;AAED,qBAAa,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAE,YAAW,SAAS;IACzE,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAI;IAE1D,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAGlC;IAED,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAIvC;IAED,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAEzC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automerge_doc.js","sourceRoot":"","sources":["../../../src/docs/automerge_doc.ts"],"names":[],"mappings":"AAgBA,MAAM,OAAO,kBAAkB;IACA;
|
|
1
|
+
{"version":3,"file":"automerge_doc.js","sourceRoot":"","sources":["../../../src/docs/automerge_doc.ts"],"names":[],"mappings":"AAgBA,MAAM,OAAO,kBAAkB;IACA,IAAI;IAAjC,YAA6B,IAAyB;oBAAzB,IAAI;IAAwB,CAAC;IAE1D,IAAI,CAAI,GAAW;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAChC,OAAO,GAAG,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,CAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,GAAW,EAAE,KAAc;QAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;YACtB,GAA+B,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,QAAoB;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;CACF"}
|
package/dist/src/docs/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { AutomergeCollabDoc } from './automerge_doc.js';
|
|
2
1
|
export type { AutomergeDocHost } from './automerge_doc.js';
|
|
3
|
-
export {
|
|
2
|
+
export { AutomergeCollabDoc } from './automerge_doc.js';
|
|
4
3
|
export type { CollabDoc, RichTextDoc } from './types.js';
|
|
4
|
+
export { YjsCollabDoc } from './yjs_doc.js';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/docs/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/docs/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/docs/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/docs/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yjs_doc.d.ts","sourceRoot":"","sources":["../../../src/docs/yjs_doc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,CAAC,MAAM,KAAK,CAAC;AAC9B,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzD;;;GAGG;AACH,qBAAa,YAAa,YAAW,WAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG;
|
|
1
|
+
{"version":3,"file":"yjs_doc.d.ts","sourceRoot":"","sources":["../../../src/docs/yjs_doc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,CAAC,MAAM,KAAK,CAAC;AAC9B,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzD;;;GAGG;AACH,qBAAa,YAAa,YAAW,WAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG;IAAhC,YAA6B,GAAG,EAAE,CAAC,CAAC,GAAG,EAAI;IAE3C,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAElC;IAED,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAEvC;IAED,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE5B;IAED,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAGzC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yjs_doc.js","sourceRoot":"","sources":["../../../src/docs/yjs_doc.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,OAAO,YAAY;IACM;
|
|
1
|
+
{"version":3,"file":"yjs_doc.js","sourceRoot":"","sources":["../../../src/docs/yjs_doc.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,OAAO,YAAY;IACM,GAAG;IAAhC,YAA6B,GAAU;mBAAV,GAAG;IAAU,CAAC;IAE3C,IAAI,CAAI,GAAW;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAU,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAkB,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,GAAW,EAAE,KAAc;QAC/B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAU,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,CAAC,GAAW;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,QAAQ,CAAC,QAAoB;QAC3B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAChC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC;CACF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { createExcalidrawAdapter } from './excalidraw.js';
|
|
2
1
|
export type { ExcalidrawScene } from './excalidraw.js';
|
|
3
|
-
export {
|
|
4
|
-
export type { TldrawScene } from './tldraw.js';
|
|
2
|
+
export { createExcalidrawAdapter } from './excalidraw.js';
|
|
5
3
|
export { createTextAdapter } from './text.js';
|
|
4
|
+
export type { TldrawScene } from './tldraw.js';
|
|
5
|
+
export { createTldrawAdapter } from './tldraw.js';
|
|
6
6
|
export type { CollabEditorAdapter, CollabEditorView } from './types.js';
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/editors/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/editors/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/editors/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/editors/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -2,7 +2,7 @@ import * as A from '@automerge/automerge';
|
|
|
2
2
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
3
3
|
import { useCollaborationContext } from '../context.js';
|
|
4
4
|
import { fetchToken, resolveBaseUrl } from '../rest_client.js';
|
|
5
|
-
import { MAX_RECONNECT_ATTEMPTS, MAX_RECONNECT_DELAY_MS,
|
|
5
|
+
import { isPermanentFailure, MAX_RECONNECT_ATTEMPTS, MAX_RECONNECT_DELAY_MS, reconnectExhausted, } from '../session.js';
|
|
6
6
|
const SEND_DEBOUNCE_MS = 200;
|
|
7
7
|
/**
|
|
8
8
|
* Close codes the AutomergeDriver uses for an answer, not an outage.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use_automerge_doc.js","sourceRoot":"","sources":["../../../src/hooks/use_automerge_doc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"use_automerge_doc.js","sourceRoot":"","sources":["../../../src/hooks/use_automerge_doc.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,23 @@
|
|
|
1
1
|
import * as Y from 'yjs';
|
|
2
2
|
import type { CollabDoc } from '../docs/types.js';
|
|
3
|
-
import type { CollabStatus } from '../types.js';
|
|
3
|
+
import type { CollabStatus, CollabTokenInfo } from '../types.js';
|
|
4
4
|
export interface UseCollabDocOptions {
|
|
5
5
|
docName: string;
|
|
6
|
+
/**
|
|
7
|
+
* Token que o server já emitiu para este documento — tipicamente uma prop
|
|
8
|
+
* da página (`issueCollaborationToken` no controller). Com ele o socket
|
|
9
|
+
* abre no mount, sem o `GET /collaboration/token` antes.
|
|
10
|
+
*
|
|
11
|
+
* Vale só para a **primeira** conexão desta sessão: reconexão sempre busca
|
|
12
|
+
* um token novo, e um token inválido ou expirado é ignorado (a sessão cai
|
|
13
|
+
* no fluxo HTTP normal).
|
|
14
|
+
*
|
|
15
|
+
* Quando mais de um hook toca o mesmo documento (`useAwareness`,
|
|
16
|
+
* `useCollabEditor`), prefira `initialTokens` no `<CollaborationProvider>`:
|
|
17
|
+
* quem cria a sessão é o primeiro hook a montar, e do provider o token vale
|
|
18
|
+
* para qualquer um deles.
|
|
19
|
+
*/
|
|
20
|
+
token?: CollabTokenInfo | null | undefined;
|
|
6
21
|
}
|
|
7
22
|
export interface UseCollabDocResult {
|
|
8
23
|
/** Y.Doc compartilhado (estável enquanto o provider viver). */
|
|
@@ -31,6 +46,9 @@ export interface UseCollabDocResult {
|
|
|
31
46
|
* ```tsx
|
|
32
47
|
* const { doc, status, synced } = useCollabDoc({ docName: 'researches/42/writing' })
|
|
33
48
|
* ```
|
|
49
|
+
*
|
|
50
|
+
* Passe `token` (emitido pelo server junto com a página) para abrir o socket
|
|
51
|
+
* sem o round-trip do `/collaboration/token` antes.
|
|
34
52
|
*/
|
|
35
53
|
export declare function useCollabDoc(options: UseCollabDocOptions): UseCollabDocResult;
|
|
36
54
|
//# sourceMappingURL=use_collab_doc.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use_collab_doc.d.ts","sourceRoot":"","sources":["../../../src/hooks/use_collab_doc.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"use_collab_doc.d.ts","sourceRoot":"","sources":["../../../src/hooks/use_collab_doc.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEjE,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,CAAC;CAC5C;AAED,MAAM,WAAW,kBAAkB;IACjC,+DAA+D;IAC/D,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;IACX;;;OAGG;IACH,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB;;;;OAIG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAeD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,kBAAkB,CA8C7E"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useCallback, useEffect, useMemo, useSyncExternalStore } from 'react';
|
|
1
|
+
import { useCallback, useEffect, useMemo, useRef, useSyncExternalStore } from 'react';
|
|
2
2
|
import * as Y from 'yjs';
|
|
3
3
|
import { getOrCreateSession, useCollaborationContext } from '../context.js';
|
|
4
4
|
import { YjsCollabDoc } from '../docs/yjs_doc.js';
|
|
@@ -24,6 +24,9 @@ function getServerDoc() {
|
|
|
24
24
|
* ```tsx
|
|
25
25
|
* const { doc, status, synced } = useCollabDoc({ docName: 'researches/42/writing' })
|
|
26
26
|
* ```
|
|
27
|
+
*
|
|
28
|
+
* Passe `token` (emitido pelo server junto com a página) para abrir o socket
|
|
29
|
+
* sem o round-trip do `/collaboration/token` antes.
|
|
27
30
|
*/
|
|
28
31
|
export function useCollabDoc(options) {
|
|
29
32
|
const { docName } = options;
|
|
@@ -33,7 +36,12 @@ export function useCollabDoc(options) {
|
|
|
33
36
|
// do render vazava uma sessão por render de servidor — além de ser um
|
|
34
37
|
// render impuro sob React concorrente.
|
|
35
38
|
const isBrowser = typeof window !== 'undefined';
|
|
36
|
-
|
|
39
|
+
// O token só é lido na CRIAÇÃO da sessão, então fica fora das deps: props de
|
|
40
|
+
// página costumam ser um objeto novo a cada render, e colocá-lo ali faria o
|
|
41
|
+
// memo recomputar sem que nada tivesse mudado.
|
|
42
|
+
const tokenRef = useRef(options.token);
|
|
43
|
+
tokenRef.current = options.token;
|
|
44
|
+
const session = useMemo(() => isBrowser ? getOrCreateSession(context, docName, { initialToken: tokenRef.current }) : null, [context, docName, isBrowser]);
|
|
37
45
|
const subscribe = useCallback((onStoreChange) => session?.subscribe(onStoreChange) ?? (() => { }), [session]);
|
|
38
46
|
const getSnapshot = useCallback(() => session?.getSnapshot() ?? SERVER_SNAPSHOT, [session]);
|
|
39
47
|
const snapshot = useSyncExternalStore(subscribe, getSnapshot, () => SERVER_SNAPSHOT);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use_collab_doc.js","sourceRoot":"","sources":["../../../src/hooks/use_collab_doc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"use_collab_doc.js","sourceRoot":"","sources":["../../../src/hooks/use_collab_doc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AACtF,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAE5E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAyClD,MAAM,eAAe,GAAuB,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAEjG;;;;GAIG;AACH,IAAI,SAA4B,CAAC;AACjC,SAAS,YAAY;IACnB,IAAI,CAAC,SAAS;QAAE,SAAS,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;IACxC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,YAAY,CAAC,OAA4B;IACvD,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,OAAO,GAAG,uBAAuB,EAAE,CAAC;IAE1C,0EAA0E;IAC1E,0EAA0E;IAC1E,sEAAsE;IACtE,uCAAuC;IACvC,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC;IAEhD,6EAA6E;IAC7E,4EAA4E;IAC5E,+CAA+C;IAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvC,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;IAEjC,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE,CACH,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAC7F,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAC9B,CAAC;IAEF,MAAM,SAAS,GAAG,WAAW,CAC3B,CAAC,aAAyB,EAAE,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,EAC9E,CAAC,OAAO,CAAC,CACV,CAAC;IACF,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5F,MAAM,QAAQ,GAAG,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC;IAErF,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,YAAY,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAE9D,0EAA0E;IAC1E,qEAAqE;IACrE,uEAAuE;IACvE,2EAA2E;IAC3E,oEAAoE;IACpE,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAE9C,OAAO;QACL,GAAG;QACH,SAAS;QACT,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,KAAK,EAAE,QAAQ,CAAC,KAAK;KACtB,CAAC;AACJ,CAAC"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,31 +1,32 @@
|
|
|
1
|
+
export type { ExcalidrawBoardProps } from './components/excalidraw_board.js';
|
|
2
|
+
export { ExcalidrawBoard } from './components/excalidraw_board.js';
|
|
3
|
+
export type { CollaborationProviderProps, GetOrCreateSessionOptions } from './context.js';
|
|
1
4
|
export { CollaborationProvider, useCollaborationContext } from './context.js';
|
|
2
|
-
export type {
|
|
3
|
-
export {
|
|
4
|
-
export type {
|
|
5
|
+
export type { AutomergeDocHost, CollabDoc, RichTextDoc } from './docs/index.js';
|
|
6
|
+
export { AutomergeCollabDoc, YjsCollabDoc } from './docs/index.js';
|
|
7
|
+
export type { CollabEditorAdapter, CollabEditorView, ExcalidrawScene, TldrawScene, } from './editors/index.js';
|
|
8
|
+
export { createExcalidrawAdapter, createTextAdapter, createTldrawAdapter, } from './editors/index.js';
|
|
9
|
+
export type { UseAutomergeDocResult } from './hooks/use_automerge_doc.js';
|
|
10
|
+
export { useAutomergeDoc } from './hooks/use_automerge_doc.js';
|
|
11
|
+
export type { CollabLocalUser, UseAwarenessOptions, UseAwarenessResult, } from './hooks/use_awareness.js';
|
|
12
|
+
export { useAwareness } from './hooks/use_awareness.js';
|
|
13
|
+
export type { UseCollabDocOptions, UseCollabDocResult } from './hooks/use_collab_doc.js';
|
|
14
|
+
export { useCollabDoc } from './hooks/use_collab_doc.js';
|
|
15
|
+
export type { UseCollabEditorOptions, UseCollabEditorResult, } from './hooks/use_collab_editor.js';
|
|
16
|
+
export { useCollabEditor } from './hooks/use_collab_editor.js';
|
|
17
|
+
export type { UseCommentsResult } from './hooks/use_comments.js';
|
|
18
|
+
export { useComments } from './hooks/use_comments.js';
|
|
19
|
+
export type { ExcalidrawAPIHandle, UseExcalidrawSyncOptions } from './hooks/use_excalidraw_sync.js';
|
|
20
|
+
export { useExcalidrawSync } from './hooks/use_excalidraw_sync.js';
|
|
21
|
+
export type { UseVersionsResult } from './hooks/use_versions.js';
|
|
22
|
+
export { useVersions } from './hooks/use_versions.js';
|
|
23
|
+
export { PRE_ISSUED_TOKEN_MIN_TTL_MS, preIssuedTokenExpiry, usablePreIssuedToken, } from './pre_issued_token.js';
|
|
5
24
|
export { CollabRestError, collabFetch, createComment, createVersion, deleteComment, fetchToken, listComments, listVersions, resolveComment, restoreVersion, } from './rest_client.js';
|
|
6
|
-
export {
|
|
25
|
+
export type { DocSessionOptions, DocSessionSnapshot } from './session.js';
|
|
26
|
+
export { DocSession } from './session.js';
|
|
7
27
|
export { HocuspocusCollabTransport } from './transports/hocuspocus.js';
|
|
28
|
+
export { defaultTransportFactory } from './transports/index.js';
|
|
8
29
|
export { PartyKitCollabTransport } from './transports/partykit.js';
|
|
9
30
|
export { PartyServerCollabTransport } from './transports/partyserver.js';
|
|
10
|
-
export {
|
|
11
|
-
export type { UseCollabDocOptions, UseCollabDocResult } from './hooks/use_collab_doc.js';
|
|
12
|
-
export { useAwareness } from './hooks/use_awareness.js';
|
|
13
|
-
export type { CollabLocalUser, UseAwarenessOptions, UseAwarenessResult, } from './hooks/use_awareness.js';
|
|
14
|
-
export { useComments } from './hooks/use_comments.js';
|
|
15
|
-
export type { UseCommentsResult } from './hooks/use_comments.js';
|
|
16
|
-
export { useVersions } from './hooks/use_versions.js';
|
|
17
|
-
export type { UseVersionsResult } from './hooks/use_versions.js';
|
|
18
|
-
export type { CollabComment, CollabPeer, CollabStatus, CollabTokenInfo, CollabTransport, CollabVersion, CollaborationClientConfig, TransportFactory, } from './types.js';
|
|
19
|
-
export { useAutomergeDoc } from './hooks/use_automerge_doc.js';
|
|
20
|
-
export type { UseAutomergeDocResult } from './hooks/use_automerge_doc.js';
|
|
21
|
-
export { useExcalidrawSync } from './hooks/use_excalidraw_sync.js';
|
|
22
|
-
export type { UseExcalidrawSyncOptions, ExcalidrawAPIHandle } from './hooks/use_excalidraw_sync.js';
|
|
23
|
-
export { ExcalidrawBoard } from './components/excalidraw_board.js';
|
|
24
|
-
export type { ExcalidrawBoardProps } from './components/excalidraw_board.js';
|
|
25
|
-
export { createExcalidrawAdapter, createTldrawAdapter, createTextAdapter, } from './editors/index.js';
|
|
26
|
-
export type { CollabEditorAdapter, CollabEditorView, ExcalidrawScene, TldrawScene, } from './editors/index.js';
|
|
27
|
-
export { useCollabEditor } from './hooks/use_collab_editor.js';
|
|
28
|
-
export type { UseCollabEditorOptions, UseCollabEditorResult, } from './hooks/use_collab_editor.js';
|
|
29
|
-
export { YjsCollabDoc, AutomergeCollabDoc } from './docs/index.js';
|
|
30
|
-
export type { CollabDoc, RichTextDoc, AutomergeDocHost } from './docs/index.js';
|
|
31
|
+
export type { CollabComment, CollaborationClientConfig, CollabPeer, CollabStatus, CollabTokenInfo, CollabTransport, CollabVersion, TransportFactory, } from './types.js';
|
|
31
32
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,YAAY,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC9E,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACnE,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,YAAY,EACV,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,YAAY,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AACpG,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,eAAe,EACf,WAAW,EACX,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,YAAY,EACV,aAAa,EACb,yBAAyB,EACzB,UAAU,EACV,YAAY,EACZ,eAAe,EACf,eAAe,EACf,aAAa,EACb,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
|
+
export { ExcalidrawBoard } from './components/excalidraw_board.js';
|
|
1
2
|
export { CollaborationProvider, useCollaborationContext } from './context.js';
|
|
2
|
-
export {
|
|
3
|
+
export { AutomergeCollabDoc, YjsCollabDoc } from './docs/index.js';
|
|
4
|
+
export { createExcalidrawAdapter, createTextAdapter, createTldrawAdapter, } from './editors/index.js';
|
|
5
|
+
export { useAutomergeDoc } from './hooks/use_automerge_doc.js';
|
|
6
|
+
export { useAwareness } from './hooks/use_awareness.js';
|
|
7
|
+
export { useCollabDoc } from './hooks/use_collab_doc.js';
|
|
8
|
+
export { useCollabEditor } from './hooks/use_collab_editor.js';
|
|
9
|
+
export { useComments } from './hooks/use_comments.js';
|
|
10
|
+
export { useExcalidrawSync } from './hooks/use_excalidraw_sync.js';
|
|
11
|
+
export { useVersions } from './hooks/use_versions.js';
|
|
12
|
+
export { PRE_ISSUED_TOKEN_MIN_TTL_MS, preIssuedTokenExpiry, usablePreIssuedToken, } from './pre_issued_token.js';
|
|
3
13
|
export { CollabRestError, collabFetch, createComment, createVersion, deleteComment, fetchToken, listComments, listVersions, resolveComment, restoreVersion, } from './rest_client.js';
|
|
4
|
-
export {
|
|
14
|
+
export { DocSession } from './session.js';
|
|
5
15
|
export { HocuspocusCollabTransport } from './transports/hocuspocus.js';
|
|
16
|
+
export { defaultTransportFactory } from './transports/index.js';
|
|
6
17
|
export { PartyKitCollabTransport } from './transports/partykit.js';
|
|
7
18
|
export { PartyServerCollabTransport } from './transports/partyserver.js';
|
|
8
|
-
export { useCollabDoc } from './hooks/use_collab_doc.js';
|
|
9
|
-
export { useAwareness } from './hooks/use_awareness.js';
|
|
10
|
-
export { useComments } from './hooks/use_comments.js';
|
|
11
|
-
export { useVersions } from './hooks/use_versions.js';
|
|
12
|
-
export { useAutomergeDoc } from './hooks/use_automerge_doc.js';
|
|
13
|
-
export { useExcalidrawSync } from './hooks/use_excalidraw_sync.js';
|
|
14
|
-
export { ExcalidrawBoard } from './components/excalidraw_board.js';
|
|
15
|
-
export { createExcalidrawAdapter, createTldrawAdapter, createTextAdapter, } from './editors/index.js';
|
|
16
|
-
export { useCollabEditor } from './hooks/use_collab_editor.js';
|
|
17
|
-
export { YjsCollabDoc, AutomergeCollabDoc } from './docs/index.js';
|
|
18
19
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAE9E,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAOnE,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAM/D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAKzD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,eAAe,EACf,WAAW,EACX,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,cAAc,GACf,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { CollabTokenInfo } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Validation for a token the server issued **before** the browser connected —
|
|
4
|
+
* an Inertia/SSR page prop rather than the answer to `GET /collaboration/token`.
|
|
5
|
+
*
|
|
6
|
+
* A fetched token is fresh by construction; a pre-issued one is not. It was
|
|
7
|
+
* minted while the page rendered and then sat in the HTML for as long as the
|
|
8
|
+
* tab stayed open — a restored bfcache entry, a laptop that slept, a tab
|
|
9
|
+
* reopened the next morning. Handing that to the transport buys nothing and
|
|
10
|
+
* costs the first connection, so it is checked here and discarded when dead:
|
|
11
|
+
* the session then takes the ordinary HTTP path, which is what it would have
|
|
12
|
+
* done anyway without a pre-issued token.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* How much life a pre-issued token must have left to be worth using.
|
|
16
|
+
*
|
|
17
|
+
* Not zero: between this check and the server reading the token there is a
|
|
18
|
+
* socket to open, and a credential with 200ms left will be refused on arrival
|
|
19
|
+
* — the failure just costs a round-trip and a reconnect before the client
|
|
20
|
+
* gets the fresh token it could have fetched immediately.
|
|
21
|
+
*/
|
|
22
|
+
export declare const PRE_ISSUED_TOKEN_MIN_TTL_MS = 5000;
|
|
23
|
+
/**
|
|
24
|
+
* Expiry of a token, in epoch ms, or `undefined` when it has none.
|
|
25
|
+
*
|
|
26
|
+
* Reads the server-reported `expiresAt` first. The JWT fallback is for a
|
|
27
|
+
* server older than that field: every collaboration token — edge and
|
|
28
|
+
* self-hosted alike — is a signed JWT carrying its own `exp`, and ignoring it
|
|
29
|
+
* would mean trusting a token this function can see is dead.
|
|
30
|
+
*
|
|
31
|
+
* `undefined` stays a legitimate answer for a token from some other issuer
|
|
32
|
+
* that reports no expiry and is not a readable JWT. It used to be the normal
|
|
33
|
+
* case: the self-hosted format was an unsigned base64 blob with no expiry at
|
|
34
|
+
* all, which is exactly why it stopped being a format.
|
|
35
|
+
*/
|
|
36
|
+
export declare function preIssuedTokenExpiry(info: CollabTokenInfo): number | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* The token if it is worth opening a socket with, `undefined` otherwise.
|
|
39
|
+
*
|
|
40
|
+
* `undefined` is the whole failure mode by design: every rejection here lands
|
|
41
|
+
* the session on the fetch path it already knows how to walk. There is no
|
|
42
|
+
* state in which a bad page prop leaves a document unable to connect.
|
|
43
|
+
*/
|
|
44
|
+
export declare function usablePreIssuedToken(info: CollabTokenInfo | null | undefined, now?: number): CollabTokenInfo | undefined;
|
|
45
|
+
//# sourceMappingURL=pre_issued_token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pre_issued_token.d.ts","sourceRoot":"","sources":["../../src/pre_issued_token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;;;;;;;GAWG;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,OAAQ,CAAC;AAEjD;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAkB9E;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,EACxC,GAAG,GAAE,MAAmB,GACvB,eAAe,GAAG,SAAS,CAY7B"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validation for a token the server issued **before** the browser connected —
|
|
3
|
+
* an Inertia/SSR page prop rather than the answer to `GET /collaboration/token`.
|
|
4
|
+
*
|
|
5
|
+
* A fetched token is fresh by construction; a pre-issued one is not. It was
|
|
6
|
+
* minted while the page rendered and then sat in the HTML for as long as the
|
|
7
|
+
* tab stayed open — a restored bfcache entry, a laptop that slept, a tab
|
|
8
|
+
* reopened the next morning. Handing that to the transport buys nothing and
|
|
9
|
+
* costs the first connection, so it is checked here and discarded when dead:
|
|
10
|
+
* the session then takes the ordinary HTTP path, which is what it would have
|
|
11
|
+
* done anyway without a pre-issued token.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* How much life a pre-issued token must have left to be worth using.
|
|
15
|
+
*
|
|
16
|
+
* Not zero: between this check and the server reading the token there is a
|
|
17
|
+
* socket to open, and a credential with 200ms left will be refused on arrival
|
|
18
|
+
* — the failure just costs a round-trip and a reconnect before the client
|
|
19
|
+
* gets the fresh token it could have fetched immediately.
|
|
20
|
+
*/
|
|
21
|
+
export const PRE_ISSUED_TOKEN_MIN_TTL_MS = 5_000;
|
|
22
|
+
/**
|
|
23
|
+
* Expiry of a token, in epoch ms, or `undefined` when it has none.
|
|
24
|
+
*
|
|
25
|
+
* Reads the server-reported `expiresAt` first. The JWT fallback is for a
|
|
26
|
+
* server older than that field: every collaboration token — edge and
|
|
27
|
+
* self-hosted alike — is a signed JWT carrying its own `exp`, and ignoring it
|
|
28
|
+
* would mean trusting a token this function can see is dead.
|
|
29
|
+
*
|
|
30
|
+
* `undefined` stays a legitimate answer for a token from some other issuer
|
|
31
|
+
* that reports no expiry and is not a readable JWT. It used to be the normal
|
|
32
|
+
* case: the self-hosted format was an unsigned base64 blob with no expiry at
|
|
33
|
+
* all, which is exactly why it stopped being a format.
|
|
34
|
+
*/
|
|
35
|
+
export function preIssuedTokenExpiry(info) {
|
|
36
|
+
if (typeof info.expiresAt === 'number' && Number.isFinite(info.expiresAt)) {
|
|
37
|
+
return info.expiresAt;
|
|
38
|
+
}
|
|
39
|
+
const parts = info.token.split('.');
|
|
40
|
+
if (parts.length !== 3)
|
|
41
|
+
return undefined;
|
|
42
|
+
try {
|
|
43
|
+
const payload = JSON.parse(atob(parts[1].replace(/-/g, '+').replace(/_/g, '/')));
|
|
44
|
+
if (typeof payload.exp === 'number' && Number.isFinite(payload.exp))
|
|
45
|
+
return payload.exp * 1000;
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// Not a JWT we can read: no expiry known, which is the same answer as a
|
|
49
|
+
// format that has none. Never a throw — a malformed token is handled by
|
|
50
|
+
// falling back to HTTP, not by breaking the session that could recover.
|
|
51
|
+
}
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* The token if it is worth opening a socket with, `undefined` otherwise.
|
|
56
|
+
*
|
|
57
|
+
* `undefined` is the whole failure mode by design: every rejection here lands
|
|
58
|
+
* the session on the fetch path it already knows how to walk. There is no
|
|
59
|
+
* state in which a bad page prop leaves a document unable to connect.
|
|
60
|
+
*/
|
|
61
|
+
export function usablePreIssuedToken(info, now = Date.now()) {
|
|
62
|
+
if (!info || typeof info !== 'object')
|
|
63
|
+
return undefined;
|
|
64
|
+
// engine and wsUrl are not decoration: without them there is no transport to
|
|
65
|
+
// build, and a token missing them is not a shortcut, it is a crash.
|
|
66
|
+
if (typeof info.token !== 'string' || info.token.length === 0)
|
|
67
|
+
return undefined;
|
|
68
|
+
if (typeof info.wsUrl !== 'string' || info.wsUrl.length === 0)
|
|
69
|
+
return undefined;
|
|
70
|
+
if (typeof info.engine !== 'string' || info.engine.length === 0)
|
|
71
|
+
return undefined;
|
|
72
|
+
const expiry = preIssuedTokenExpiry(info);
|
|
73
|
+
if (expiry !== undefined && expiry - now <= PRE_ISSUED_TOKEN_MIN_TTL_MS)
|
|
74
|
+
return undefined;
|
|
75
|
+
return info;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=pre_issued_token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pre_issued_token.js","sourceRoot":"","sources":["../../src/pre_issued_token.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,CAAC;AAEjD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAqB;IACxD,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1E,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAE/E,CAAC;QACF,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;IACjG,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;IAC1E,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAwC,EACxC,GAAG,GAAW,IAAI,CAAC,GAAG,EAAE;IAExB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACxD,6EAA6E;IAC7E,oEAAoE;IACpE,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAChF,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAChF,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAElF,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,GAAG,GAAG,IAAI,2BAA2B;QAAE,OAAO,SAAS,CAAC;IAE1F,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rest_client.d.ts","sourceRoot":"","sources":["../../src/rest_client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE5D;;;;GAIG;AAEH,qBAAa,eAAgB,SAAQ,KAAK;aAEtB,MAAM,EAAE,MAAM;aACd,IAAI,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"rest_client.d.ts","sourceRoot":"","sources":["../../src/rest_client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE5D;;;;GAIG;AAEH,qBAAa,eAAgB,SAAQ,KAAK;aAEtB,MAAM,EAAE,MAAM;aACd,IAAI,EAAE,MAAM;IAF9B,YACkB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EAI7B;CACF;AAED,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,yBAAyB,EAAE,SAAS,CAAC,GAAG,MAAM,CAIzF;AAcD,wBAAsB,WAAW,CAAC,CAAC,EACjC,MAAM,EAAE,yBAAyB,EACjC,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;IACL,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GACA,OAAO,CAAC,CAAC,CAAC,CA2BZ;AAID,wBAAgB,UAAU,CAAC,MAAM,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM,iDAI5E;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,iDAI9F;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,yBAAyB,EACjC,KAAK,EAAE,IAAI,CACT,OAAO,YAAY,EAAE,aAAa,EAClC,IAAI,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,CAC3D,+CAMF;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,yBAAyB,EACjC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,OAAO,sDAOlB;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,yBAAyB,EACjC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM;aAEa,OAAO;GAKtC;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM,iDAI9E;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,yBAAyB,EACjC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GAAG,IAAI,+CAMrB;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,yBAAyB,EACjC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,iBAMlB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rest_client.js","sourceRoot":"","sources":["../../src/rest_client.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAEtB;
|
|
1
|
+
{"version":3,"file":"rest_client.js","sourceRoot":"","sources":["../../src/rest_client.ts"],"names":[],"mappings":"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"}
|
package/dist/src/session.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as Y from 'yjs';
|
|
2
|
-
import type { CollabStatus,
|
|
2
|
+
import type { CollaborationClientConfig, CollabStatus, CollabTokenInfo, CollabTransport } from './types.js';
|
|
3
3
|
export declare const MAX_RECONNECT_DELAY_MS = 15000;
|
|
4
4
|
/**
|
|
5
5
|
* Circuit breaker: depois de MAX_RECONNECT_ATTEMPTS falhas consecutivas no
|
|
@@ -49,6 +49,13 @@ export interface DocSessionRegistry {
|
|
|
49
49
|
}
|
|
50
50
|
export interface DocSessionOptions {
|
|
51
51
|
registry?: DocSessionRegistry;
|
|
52
|
+
/**
|
|
53
|
+
* Token the server already issued for this document (SSR/Inertia prop),
|
|
54
|
+
* used **once** for the first connection. Falls back to
|
|
55
|
+
* `config.initialTokens[docName]` when omitted, and to the HTTP endpoint
|
|
56
|
+
* when neither is usable.
|
|
57
|
+
*/
|
|
58
|
+
initialToken?: CollabTokenInfo | null | undefined;
|
|
52
59
|
}
|
|
53
60
|
/**
|
|
54
61
|
* Session for a single document: fetches the ephemeral token, creates the
|
|
@@ -79,6 +86,21 @@ export interface DocSessionOptions {
|
|
|
79
86
|
* Ephemeral tokens expire, so on `disconnected` (after having connected at
|
|
80
87
|
* least once) the transport is torn down and rebuilt with a fresh token,
|
|
81
88
|
* using exponential backoff.
|
|
89
|
+
*
|
|
90
|
+
* ## Pre-issued token
|
|
91
|
+
*
|
|
92
|
+
* The first connection may skip the token request entirely when the server
|
|
93
|
+
* issued one while rendering the page (`issueCollaborationToken`) — that is
|
|
94
|
+
* one whole round-trip removed from the path between opening a page and
|
|
95
|
+
* seeing its text.
|
|
96
|
+
*
|
|
97
|
+
* It is used **once**, and deliberately: reconnects go back to the HTTP
|
|
98
|
+
* endpoint, because a token minted at render time is exactly the thing that
|
|
99
|
+
* has expired by the time a socket drops an hour later, and because
|
|
100
|
+
* re-fetching is what re-runs `authorize` and makes revocation take effect.
|
|
101
|
+
* A pre-issued token that is malformed or already dead is dropped by
|
|
102
|
+
* {@link usablePreIssuedToken} and the session fetches one like it always
|
|
103
|
+
* did — a bad page prop can slow the first paint, never block the document.
|
|
82
104
|
*/
|
|
83
105
|
export declare class DocSession {
|
|
84
106
|
#private;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAIzB,OAAO,KAAK,EACV,yBAAyB,EACzB,YAAY,EACZ,eAAe,EACf,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAC7C;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAIxD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,GAAG,KAAK,CAOnE;AAED,6DAA6D;AAC7D,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,wEAAwE;IACxE,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,iFAAiF;AACjF,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAC7C,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,CAAC;CACnD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,qBAAa,UAAU;;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;IAmBpB,YAAY,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,yBAAyB,EAAE,OAAO,CAAC,EAAE,iBAAiB,EAM1F;IAED,IAAI,SAAS,IAAI,eAAe,GAAG,SAAS,CAE3C;IAED,IAAI,KAAK,IAAI,KAAK,GAAG,IAAI,CAExB;IAED,qEAAqE;IACrE,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAE/B;IAED,uEAAuE;IACvE,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,gEAAgE;IAChE,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;;;;;;OAOG;IACH,IAAI,MAAM,IAAI,OAAO,CAIpB;IAED,SAAS,IAAI,YAAY,CAExB;IAED;;;;OAIG;IACH,WAAW,IAAI,kBAAkB,CAiBhC;IAED,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAO1C;IAED;;;OAGG;IACH,MAAM,IAAI,MAAM,IAAI,CASnB;IAED,+DAA+D;IAC/D,OAAO,IAAI,IAAI,CAId;IAED,2EAA2E;IAC3E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAMrB;IAED;;;;;OAKG;IACH,IAAI,IAAI,IAAI,CAcX;IA6GD;;;;OAIG;IACH,OAAO,IAAI,IAAI,CAcd;CACF"}
|
package/dist/src/session.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as Y from 'yjs';
|
|
2
|
+
import { usablePreIssuedToken } from './pre_issued_token.js';
|
|
2
3
|
import { fetchToken } from './rest_client.js';
|
|
3
4
|
import { defaultTransportFactory } from './transports/index.js';
|
|
4
5
|
export const MAX_RECONNECT_DELAY_MS = 15_000;
|
|
@@ -69,6 +70,21 @@ export function reconnectExhausted(lastFailure) {
|
|
|
69
70
|
* Ephemeral tokens expire, so on `disconnected` (after having connected at
|
|
70
71
|
* least once) the transport is torn down and rebuilt with a fresh token,
|
|
71
72
|
* using exponential backoff.
|
|
73
|
+
*
|
|
74
|
+
* ## Pre-issued token
|
|
75
|
+
*
|
|
76
|
+
* The first connection may skip the token request entirely when the server
|
|
77
|
+
* issued one while rendering the page (`issueCollaborationToken`) — that is
|
|
78
|
+
* one whole round-trip removed from the path between opening a page and
|
|
79
|
+
* seeing its text.
|
|
80
|
+
*
|
|
81
|
+
* It is used **once**, and deliberately: reconnects go back to the HTTP
|
|
82
|
+
* endpoint, because a token minted at render time is exactly the thing that
|
|
83
|
+
* has expired by the time a socket drops an hour later, and because
|
|
84
|
+
* re-fetching is what re-runs `authorize` and makes revocation take effect.
|
|
85
|
+
* A pre-issued token that is malformed or already dead is dropped by
|
|
86
|
+
* {@link usablePreIssuedToken} and the session fetches one like it always
|
|
87
|
+
* did — a bad page prop can slow the first paint, never block the document.
|
|
72
88
|
*/
|
|
73
89
|
export class DocSession {
|
|
74
90
|
docName;
|
|
@@ -88,10 +104,12 @@ export class DocSession {
|
|
|
88
104
|
#engine;
|
|
89
105
|
#registry;
|
|
90
106
|
#snapshot;
|
|
107
|
+
#preIssuedToken;
|
|
91
108
|
constructor(docName, config, options) {
|
|
92
109
|
this.docName = docName;
|
|
93
110
|
this.#config = config;
|
|
94
111
|
this.#registry = options?.registry;
|
|
112
|
+
this.#preIssuedToken = options?.initialToken ?? config.initialTokens?.[docName] ?? undefined;
|
|
95
113
|
this.doc = new Y.Doc();
|
|
96
114
|
}
|
|
97
115
|
get transport() {
|
|
@@ -220,7 +238,12 @@ export class DocSession {
|
|
|
220
238
|
const generation = this.#generation;
|
|
221
239
|
const stale = () => this.#destroyed || this.#detached || generation !== this.#generation;
|
|
222
240
|
try {
|
|
223
|
-
|
|
241
|
+
// Single use, and consumed even when unusable: a token that was already
|
|
242
|
+
// expired at render time stays expired, and re-examining it on every
|
|
243
|
+
// reconnect only delays the fetch that actually works.
|
|
244
|
+
const preIssued = this.#preIssuedToken;
|
|
245
|
+
this.#preIssuedToken = undefined;
|
|
246
|
+
const info = usablePreIssuedToken(preIssued) ?? (await fetchToken(this.#config, this.docName));
|
|
224
247
|
this.#engine = info.engine;
|
|
225
248
|
if (stale())
|
|
226
249
|
return;
|
package/dist/src/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAQhE,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAC7C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAExC;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAY;IAC7C,OAAO,+FAA+F,CAAC,IAAI,CACzG,KAAK,CAAC,OAAO,CACd,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAyB;IAC1D,OAAO,IAAI,KAAK,CACd,uBAAuB,sBAAsB,YAC3C,WAAW,CAAC,CAAC,CAAC,mBAAmB,WAAW,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAC5D,EAAE,EACF,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CACjD,CAAC;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hocuspocus.d.ts","sourceRoot":"","sources":["../../../src/transports/hocuspocus.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGpE;;;GAGG;AAEH,KAAK,cAAc,GAAG,MAAM,IAAI,CAAC;AAEjC,qBAAa,yBAA0B,YAAW,eAAe;IAC/D,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;IACpB,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,MAAM,CAAoD;IAClE,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAA6B;
|
|
1
|
+
{"version":3,"file":"hocuspocus.d.ts","sourceRoot":"","sources":["../../../src/transports/hocuspocus.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGpE;;;GAGG;AAEH,KAAK,cAAc,GAAG,MAAM,IAAI,CAAC;AAEjC,qBAAa,yBAA0B,YAAW,eAAe;IAC/D,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;IACpB,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,MAAM,CAAoD;IAClE,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAA6B;IAE9C,YAAY,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAuC7D;IAED,OAAO,CAAC,IAAI;IAIZ,IAAI,SAAS,wDAEZ;IAED,SAAS,IAAI,OAAO,aAAa,EAAE,YAAY,CAE9C;IAED,QAAQ,IAAI,OAAO,CAElB;IAED,SAAS,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,IAAI,CAG9C;IAED,OAAO,IAAI,IAAI,CAEd;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize_status.js","sourceRoot":"","sources":["../../../src/transports/normalize_status.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,GAAuB,EACvB,
|
|
1
|
+
{"version":3,"file":"normalize_status.js","sourceRoot":"","sources":["../../../src/transports/normalize_status.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,GAAuB,EACvB,QAAQ,GAAiB,YAAY;IAErC,IAAI,GAAG,KAAK,WAAW;QAAE,OAAO,WAAW,CAAC;IAC5C,IAAI,GAAG,KAAK,cAAc;QAAE,OAAO,cAAc,CAAC;IAClD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"partykit.d.ts","sourceRoot":"","sources":["../../../src/transports/partykit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,iBAAiB,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAmClF,qBAAa,uBAAwB,YAAW,eAAe;IAC7D,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;IACpB,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,SAAS,CAAyB;
|
|
1
|
+
{"version":3,"file":"partykit.d.ts","sourceRoot":"","sources":["../../../src/transports/partykit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,iBAAiB,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAmClF,qBAAa,uBAAwB,YAAW,eAAe;IAC7D,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;IACpB,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,SAAS,CAAyB;IAE1C,YAAY,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EA+C7D;IAED,IAAI,SAAS,IAAI,iBAAiB,CAAC,SAAS,CAE3C;IAED,SAAS,IAAI,YAAY,CAExB;IAED,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAG1C;IAED,OAAO,IAAI,IAAI,CAEd;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"partyserver.d.ts","sourceRoot":"","sources":["../../../src/transports/partyserver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,iBAAiB,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAqClF,qBAAa,0BAA2B,YAAW,eAAe;IAChE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;IACpB,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,SAAS,CAAyB;
|
|
1
|
+
{"version":3,"file":"partyserver.d.ts","sourceRoot":"","sources":["../../../src/transports/partyserver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,iBAAiB,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAqClF,qBAAa,0BAA2B,YAAW,eAAe;IAChE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;IACpB,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,SAAS,CAAyB;IAE1C,YAAY,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EA6C7D;IAED,IAAI,SAAS,IAAI,iBAAiB,CAAC,SAAS,CAE3C;IAED,SAAS,IAAI,YAAY,CAExB;IAED,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAG1C;IAED,OAAO,IAAI,IAAI,CAEd;CACF"}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -6,13 +6,30 @@ import type * as AwarenessProtocol from 'y-protocols/awareness.js';
|
|
|
6
6
|
import type * as Y from 'yjs';
|
|
7
7
|
/** Estado da conexão WebSocket com o sync engine. */
|
|
8
8
|
export type CollabStatus = 'connecting' | 'connected' | 'disconnected' | 'error';
|
|
9
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* Resposta de GET /collaboration/token — e a forma de um token que o server
|
|
11
|
+
* emitiu adiantado (`issueCollaborationToken`) e mandou junto com a página.
|
|
12
|
+
*/
|
|
10
13
|
export interface CollabTokenInfo {
|
|
11
14
|
token: string;
|
|
12
15
|
/** URL do WS (self-hosted: path relativo; partykit: origin remoto). */
|
|
13
16
|
wsUrl: string;
|
|
14
17
|
/** Engine informado pelo server (yjs | automerge | partykit). */
|
|
15
18
|
engine: string;
|
|
19
|
+
/**
|
|
20
|
+
* Epoch em ms em que a credencial deixa de ser aceita. Toda engine reporta:
|
|
21
|
+
* self-hosted e partykit emitem o MESMO formato assinado, com validade
|
|
22
|
+
* curta (5 min). Antes o self-hosted era um base64 sem assinatura e sem
|
|
23
|
+
* expiração — um token que nunca morria e que qualquer um podia forjar.
|
|
24
|
+
*
|
|
25
|
+
* Opcional porque um emissor customizado pode não ter validade a reportar;
|
|
26
|
+
* nada que a lib emite vem sem ela.
|
|
27
|
+
*
|
|
28
|
+
* Só importa para um token pré-emitido: ele pode ficar no HTML enquanto a
|
|
29
|
+
* aba estiver aberta, e o client precisa distinguir "já morreu" de "vale
|
|
30
|
+
* tentar" sem abrir um socket pra descobrir.
|
|
31
|
+
*/
|
|
32
|
+
expiresAt?: number | null | undefined;
|
|
16
33
|
}
|
|
17
34
|
/** Comentário persistido (espelho do CollabComment do server). */
|
|
18
35
|
export interface CollabComment {
|
|
@@ -92,5 +109,22 @@ export interface CollaborationClientConfig {
|
|
|
92
109
|
createTransport?: TransportFactory;
|
|
93
110
|
/** Override de fetch (testes/SSR). */
|
|
94
111
|
fetchImpl?: typeof fetch;
|
|
112
|
+
/**
|
|
113
|
+
* Tokens que o server já emitiu para esta renderização, por docName.
|
|
114
|
+
*
|
|
115
|
+
* Corta o `GET /collaboration/token` do caminho crítico: o socket abre no
|
|
116
|
+
* mount, sem esperar um round-trip para o mesmo servidor que renderizou a
|
|
117
|
+
* página e já sabia a resposta.
|
|
118
|
+
*
|
|
119
|
+
* **Usado uma vez, na primeira conexão.** Toda reconexão volta a buscar um
|
|
120
|
+
* token novo por HTTP — é assim que a expiração vira revogação, porque cada
|
|
121
|
+
* reconexão re-executa `authorize`. Um token pré-emitido inválido ou já
|
|
122
|
+
* expirado é ignorado e a sessão cai no fluxo HTTP normal.
|
|
123
|
+
*
|
|
124
|
+
* ```tsx
|
|
125
|
+
* <CollaborationProvider initialTokens={{ [docName]: collabToken }}>
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
128
|
+
initialTokens?: Record<string, CollabTokenInfo | null | undefined> | undefined;
|
|
95
129
|
}
|
|
96
130
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,KAAK,iBAAiB,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,KAAK,CAAC,MAAM,KAAK,CAAC;AAE9B,qDAAqD;AACrD,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,WAAW,GAAG,cAAc,GAAG,OAAO,CAAC;AAEjF
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adonis-agora/collaboration-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "Client-side React hooks for @adonis-agora/collaboration — collaborative docs, presence, comments and versions. Part of the Agora ecosystem.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"y-partykit": "^0.0.33",
|
|
31
31
|
"y-partyserver": "^2.2.0",
|
|
32
32
|
"y-protocols": "^1.0.7",
|
|
33
|
-
"yjs": "^13.6.
|
|
33
|
+
"yjs": "^13.6.32"
|
|
34
34
|
},
|
|
35
35
|
"peerDependencies": {
|
|
36
36
|
"react": "^18.0.0 || ^19.0.0",
|
|
@@ -45,17 +45,17 @@
|
|
|
45
45
|
}
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@swc/core": "1.
|
|
49
|
-
"@testing-library/react": "16.3.
|
|
50
|
-
"@types/node": "
|
|
51
|
-
"@types/react": "
|
|
52
|
-
"@types/react-dom": "
|
|
53
|
-
"jsdom": "
|
|
54
|
-
"react": "
|
|
55
|
-
"react-dom": "
|
|
56
|
-
"typescript": "
|
|
48
|
+
"@swc/core": "1.16.1",
|
|
49
|
+
"@testing-library/react": "16.3.3",
|
|
50
|
+
"@types/node": "26.4.0",
|
|
51
|
+
"@types/react": "19.2.18",
|
|
52
|
+
"@types/react-dom": "19.2.5",
|
|
53
|
+
"jsdom": "30.0.1",
|
|
54
|
+
"react": "19.2.8",
|
|
55
|
+
"react-dom": "19.2.8",
|
|
56
|
+
"typescript": "7.0.2",
|
|
57
57
|
"unplugin-swc": "1.5.11",
|
|
58
|
-
"vitest": "
|
|
58
|
+
"vitest": "4.1.11"
|
|
59
59
|
},
|
|
60
60
|
"engines": {
|
|
61
61
|
"node": ">=20.6.0"
|