@adonis-agora/collaboration 0.11.0 → 0.12.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/CHANGELOG.md +18 -0
- package/dist/src/collaboration_manager.d.ts +0 -6
- package/dist/src/collaboration_manager.d.ts.map +1 -1
- package/dist/src/collaboration_manager.js +16 -1
- package/dist/src/collaboration_manager.js.map +1 -1
- package/dist/src/documents.d.ts +41 -0
- package/dist/src/documents.d.ts.map +1 -1
- package/dist/src/documents.js +49 -0
- package/dist/src/documents.js.map +1 -1
- package/dist/src/index.d.ts +3 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/observability.d.ts +11 -0
- package/dist/src/observability.d.ts.map +1 -1
- package/dist/src/observability.js +18 -0
- package/dist/src/observability.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @adonis-agora/collaboration
|
|
2
2
|
|
|
3
|
+
## 0.12.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- e911a53: `defineCollection(prefix, declaration?)` and a boot-time warning for patterns without a `:segment`.
|
|
8
|
+
|
|
9
|
+
A `documents` pattern only matches many documents when it has a `:segment` — a bare `'whiteboards'`
|
|
10
|
+
matches exactly one document named `whiteboards`, and `whiteboards/42` falls through to the globals.
|
|
11
|
+
That rule lived only inside the matcher, and getting it wrong was silent.
|
|
12
|
+
|
|
13
|
+
- `...defineCollection('whiteboards', { engine, authorize })` declares `'whiteboards/:id'` with
|
|
14
|
+
`params.id` typed, so the common shape cannot be written without the `:id`. The prefix is the
|
|
15
|
+
literal part of the name; a `:param` or a leading/trailing `/` throws.
|
|
16
|
+
- `CollaborationManager` warns once at boot for every declared pattern that has no `:segment`,
|
|
17
|
+
naming the pattern and the fix (`logger.warn` when the installed logger has one, else
|
|
18
|
+
`console.warn`). `CollabLogger` gains an optional `warn`.
|
|
19
|
+
- `documentPatternParams(pattern)` and `reportCollaborationWarning` are exported.
|
|
20
|
+
|
|
3
21
|
## 0.11.0
|
|
4
22
|
|
|
5
23
|
### Minor Changes
|
|
@@ -5,12 +5,6 @@ import { YjsDriver } from './drivers/yjs/yjs_driver.js';
|
|
|
5
5
|
import { CommentService } from './services/comment_service.js';
|
|
6
6
|
import { type PresenceMember, PresenceService, type PresenceStore } from './services/presence_service.js';
|
|
7
7
|
import type { CollabConnectionContext, CollabDiffSummary, CollaborationConfig, CollaborationEngine, CollabPermission, CollabVersion, PruneVersionsOptions } from './types.js';
|
|
8
|
-
/**
|
|
9
|
-
* Library facade. Each document resolves to an engine (per-doc via
|
|
10
|
-
* `config.engineFor`, default `config.engine`) and a driver instance per
|
|
11
|
-
* engine is built lazily on first use. Self-hosted drivers attach their
|
|
12
|
-
* WebSocket to the HTTP server the first time a document uses them.
|
|
13
|
-
*/
|
|
14
8
|
export declare class CollaborationManager {
|
|
15
9
|
#private;
|
|
16
10
|
private readonly config;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collaboration_manager.d.ts","sourceRoot":"","sources":["../../src/collaboration_manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAA2B,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAEvE,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"collaboration_manager.d.ts","sourceRoot":"","sources":["../../src/collaboration_manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { matchDocumentPattern } from './documents.js';
|
|
1
|
+
import { documentPatternParams, matchDocumentPattern } from './documents.js';
|
|
2
2
|
import { AutomergeDriver } from './drivers/automerge/automerge_driver.js';
|
|
3
3
|
import { PartyKitDriver } from './drivers/partykit/partykit_driver.js';
|
|
4
4
|
import { resolveStorage } from './drivers/shared.js';
|
|
5
5
|
import { YjsDriver } from './drivers/yjs/yjs_driver.js';
|
|
6
|
+
import { reportCollaborationWarning } from './observability.js';
|
|
6
7
|
import { CommentService } from './services/comment_service.js';
|
|
7
8
|
import { PresenceService, } from './services/presence_service.js';
|
|
8
9
|
/**
|
|
@@ -11,6 +12,19 @@ import { PresenceService, } from './services/presence_service.js';
|
|
|
11
12
|
* engine is built lazily on first use. Self-hosted drivers attach their
|
|
12
13
|
* WebSocket to the HTTP server the first time a document uses them.
|
|
13
14
|
*/
|
|
15
|
+
/**
|
|
16
|
+
* A pattern without a `:segment` matches exactly one document — almost never
|
|
17
|
+
* what a `documents` entry means. Say so once, at boot, with the fix.
|
|
18
|
+
*/
|
|
19
|
+
function warnAboutSingleDocumentPatterns(documents) {
|
|
20
|
+
for (const pattern of Object.keys(documents ?? {})) {
|
|
21
|
+
if (documentPatternParams(pattern).length > 0)
|
|
22
|
+
continue;
|
|
23
|
+
reportCollaborationWarning({ pattern }, `document pattern "${pattern}" has no ":param" segment, so it matches exactly one document ` +
|
|
24
|
+
`named "${pattern}" — not "${pattern}/<id>". If it is a collection, declare ` +
|
|
25
|
+
`"${pattern}/:id" or use defineCollection("${pattern}", …).`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
14
28
|
export class CollaborationManager {
|
|
15
29
|
config;
|
|
16
30
|
drivers = new Map();
|
|
@@ -19,6 +33,7 @@ export class CollaborationManager {
|
|
|
19
33
|
presence;
|
|
20
34
|
constructor(config, presenceStore) {
|
|
21
35
|
this.config = config;
|
|
36
|
+
warnAboutSingleDocumentPatterns(config.documents);
|
|
22
37
|
this.comments = new CommentService(resolveStorage(config.storage));
|
|
23
38
|
if (presenceStore) {
|
|
24
39
|
this.presence = new PresenceService(presenceStore);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collaboration_manager.js","sourceRoot":"","sources":["../../src/collaboration_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"collaboration_manager.js","sourceRoot":"","sources":["../../src/collaboration_manager.ts"],"names":[],"mappings":"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"}
|
package/dist/src/documents.d.ts
CHANGED
|
@@ -64,6 +64,47 @@ export interface CollabDocumentDeclaration<P extends Record<string, string> = Re
|
|
|
64
64
|
* pattern it is later attached to is a compile error at the config.
|
|
65
65
|
*/
|
|
66
66
|
export declare function defineDocument<P extends Record<string, string> = Record<string, string>>(declaration: CollabDocumentDeclaration<P>): CollabDocumentDeclaration<P>;
|
|
67
|
+
/** The pattern {@link defineCollection} declares for a prefix. */
|
|
68
|
+
export type CollectionPattern<Prefix extends string> = `${Prefix}/:id`;
|
|
69
|
+
/**
|
|
70
|
+
* Declares a **collection**: many documents named `<prefix>/<id>` that share
|
|
71
|
+
* one engine and one rule — the shape almost every document type has.
|
|
72
|
+
*
|
|
73
|
+
* A pattern only matches many documents when it has a `:segment`; a bare
|
|
74
|
+
* `'whiteboards'` matches exactly one document named `whiteboards`. This
|
|
75
|
+
* helper makes the common case impossible to get wrong: give it the prefix
|
|
76
|
+
* and it declares `'<prefix>/:id'`, with `params.id` typed in `authorize`.
|
|
77
|
+
* Spread it into `documents`:
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* documents: {
|
|
81
|
+
* ...defineCollection('whiteboards', {
|
|
82
|
+
* engine: 'automerge',
|
|
83
|
+
* async authorize(ctx, { params }) {
|
|
84
|
+
* const member = await Whiteboard.isMember(params.id, ctx.userId)
|
|
85
|
+
* return { canRead: member, canWrite: member, canComment: member }
|
|
86
|
+
* },
|
|
87
|
+
* }),
|
|
88
|
+
* ...defineCollection('announcements'), // engine + authorize from the globals
|
|
89
|
+
* }
|
|
90
|
+
*
|
|
91
|
+
* The prefix is the literal part of the name: no `:params`, no leading or
|
|
92
|
+
* trailing slash. Nested literals are fine (`'workspaces/main/boards'`). For a
|
|
93
|
+
* shape that is not `<prefix>/<id>` — several params, a suffix like
|
|
94
|
+
* `researches/:id/writing` — write the pattern out as a key instead.
|
|
95
|
+
*/
|
|
96
|
+
export declare function defineCollection<Prefix extends string>(prefix: Prefix, declaration?: CollabDocumentDeclaration<{
|
|
97
|
+
id: string;
|
|
98
|
+
}>): {
|
|
99
|
+
[K in CollectionPattern<Prefix>]: CollabDocumentDeclaration<{
|
|
100
|
+
id: string;
|
|
101
|
+
}>;
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* The `:name` segments of a pattern, in order — `[]` for a pattern that
|
|
105
|
+
* matches exactly one document.
|
|
106
|
+
*/
|
|
107
|
+
export declare function documentPatternParams(pattern: string): string[];
|
|
67
108
|
/**
|
|
68
109
|
* Casa um docName com um padrão `researches/:id/writing`, extraindo os
|
|
69
110
|
* params nomeados. Retorna null se não casar.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../src/documents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEjG;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,CAAC,OAAO,SAAS,MAAM,IAAI,MAAM,SAAS,OAAO,GACvE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtB;KAAG,IAAI,IAAI,kBAAkB,CAAC,OAAO,CAAC,GAAG,MAAM;CAAE,CAAC;AAEtD,KAAK,kBAAkB,CAAC,OAAO,SAAS,MAAM,IAAI,OAAO,SAAS,GAAG,MAAM,IAAI,IAAI,MAAM,IAAI,EAAE,GAC3F,kBAAkB,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,GACnD,OAAO,SAAS,IAAI,MAAM,IAAI,EAAE,GAC9B,IAAI,GACJ,KAAK,CAAC;AAEZ;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,WAAW,yBAAyB,CACxC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAEzD,iEAAiE;IACjE,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,CACV,GAAG,EAAE,uBAAuB,EAC5B,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,CAAC,CAAA;KAAE,KACjC,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAChC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACtF,WAAW,EAAE,yBAAyB,CAAC,CAAC,CAAC,GACxC,yBAAyB,CAAC,CAAC,CAAC,CAE9B;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAe/B"}
|
|
1
|
+
{"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../src/documents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEjG;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,CAAC,OAAO,SAAS,MAAM,IAAI,MAAM,SAAS,OAAO,GACvE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtB;KAAG,IAAI,IAAI,kBAAkB,CAAC,OAAO,CAAC,GAAG,MAAM;CAAE,CAAC;AAEtD,KAAK,kBAAkB,CAAC,OAAO,SAAS,MAAM,IAAI,OAAO,SAAS,GAAG,MAAM,IAAI,IAAI,MAAM,IAAI,EAAE,GAC3F,kBAAkB,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,GACnD,OAAO,SAAS,IAAI,MAAM,IAAI,EAAE,GAC9B,IAAI,GACJ,KAAK,CAAC;AAEZ;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,WAAW,yBAAyB,CACxC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAEzD,iEAAiE;IACjE,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,CACV,GAAG,EAAE,uBAAuB,EAC5B,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,CAAC,CAAA;KAAE,KACjC,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAChC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACtF,WAAW,EAAE,yBAAyB,CAAC,CAAC,CAAC,GACxC,yBAAyB,CAAC,CAAC,CAAC,CAE9B;AAED,kEAAkE;AAClE,MAAM,MAAM,iBAAiB,CAAC,MAAM,SAAS,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,SAAS,MAAM,EACpD,MAAM,EAAE,MAAM,EACd,WAAW,GAAE,yBAAyB,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAM,GAC1D;KAAG,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,GAAG,yBAAyB,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CAAE,CAiBjF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAK/D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAe/B"}
|
package/dist/src/documents.js
CHANGED
|
@@ -12,6 +12,55 @@
|
|
|
12
12
|
export function defineDocument(declaration) {
|
|
13
13
|
return declaration;
|
|
14
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Declares a **collection**: many documents named `<prefix>/<id>` that share
|
|
17
|
+
* one engine and one rule — the shape almost every document type has.
|
|
18
|
+
*
|
|
19
|
+
* A pattern only matches many documents when it has a `:segment`; a bare
|
|
20
|
+
* `'whiteboards'` matches exactly one document named `whiteboards`. This
|
|
21
|
+
* helper makes the common case impossible to get wrong: give it the prefix
|
|
22
|
+
* and it declares `'<prefix>/:id'`, with `params.id` typed in `authorize`.
|
|
23
|
+
* Spread it into `documents`:
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* documents: {
|
|
27
|
+
* ...defineCollection('whiteboards', {
|
|
28
|
+
* engine: 'automerge',
|
|
29
|
+
* async authorize(ctx, { params }) {
|
|
30
|
+
* const member = await Whiteboard.isMember(params.id, ctx.userId)
|
|
31
|
+
* return { canRead: member, canWrite: member, canComment: member }
|
|
32
|
+
* },
|
|
33
|
+
* }),
|
|
34
|
+
* ...defineCollection('announcements'), // engine + authorize from the globals
|
|
35
|
+
* }
|
|
36
|
+
*
|
|
37
|
+
* The prefix is the literal part of the name: no `:params`, no leading or
|
|
38
|
+
* trailing slash. Nested literals are fine (`'workspaces/main/boards'`). For a
|
|
39
|
+
* shape that is not `<prefix>/<id>` — several params, a suffix like
|
|
40
|
+
* `researches/:id/writing` — write the pattern out as a key instead.
|
|
41
|
+
*/
|
|
42
|
+
export function defineCollection(prefix, declaration = {}) {
|
|
43
|
+
if (prefix === '' ||
|
|
44
|
+
prefix.includes(':') ||
|
|
45
|
+
prefix.startsWith('/') ||
|
|
46
|
+
prefix.endsWith('/') ||
|
|
47
|
+
prefix.includes('//')) {
|
|
48
|
+
throw new Error(`[@adonis-agora/collaboration] defineCollection(${JSON.stringify(prefix)}): the prefix is ` +
|
|
49
|
+
'the literal part of the document name — no ":params", no leading or trailing "/". ' +
|
|
50
|
+
'defineCollection("whiteboards") declares "whiteboards/:id".');
|
|
51
|
+
}
|
|
52
|
+
return { [`${prefix}/:id`]: declaration };
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* The `:name` segments of a pattern, in order — `[]` for a pattern that
|
|
56
|
+
* matches exactly one document.
|
|
57
|
+
*/
|
|
58
|
+
export function documentPatternParams(pattern) {
|
|
59
|
+
return pattern
|
|
60
|
+
.split('/')
|
|
61
|
+
.filter((segment) => segment.startsWith(':'))
|
|
62
|
+
.map((segment) => segment.slice(1));
|
|
63
|
+
}
|
|
15
64
|
/**
|
|
16
65
|
* Casa um docName com um padrão `researches/:id/writing`, extraindo os
|
|
17
66
|
* params nomeados. Retorna null se não casar.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documents.js","sourceRoot":"","sources":["../../src/documents.ts"],"names":[],"mappings":"AAgEA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAC5B,WAAyC;IAEzC,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAe,EACf,OAAe;IAEf,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEhD,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAE,CAAC;QACzC,CAAC;aAAM,IAAI,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"documents.js","sourceRoot":"","sources":["../../src/documents.ts"],"names":[],"mappings":"AAgEA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAC5B,WAAyC;IAEzC,OAAO,WAAW,CAAC;AACrB,CAAC;AAKD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAc,EACd,WAAW,GAA8C,EAAE;IAE3D,IACE,MAAM,KAAK,EAAE;QACb,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;QACpB,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;QACtB,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;QACpB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EACrB,CAAC;QACD,MAAM,IAAI,KAAK,CACb,kDAAkD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB;YACzF,oFAAoF;YACpF,6DAA6D,CAChE,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC,GAAG,MAAM,MAAM,CAAC,EAAE,WAAW,EAEtC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,OAAO,OAAO;SACX,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SAC5C,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAe,EACf,OAAe;IAEf,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEhD,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAE,CAAC;QACzC,CAAC;aAAM,IAAI,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -2,14 +2,14 @@ export { configure } from '../configure.js';
|
|
|
2
2
|
export { type AuthorizeFn, buildWsUrl, CollabAuthorizationError, CollabForbiddenError, type IssuedToken, issueToken, parseLegacyToken, signPartyKitToken, type TokenIssuerConfig, verifyPartyKitToken, } from './auth/token.js';
|
|
3
3
|
export { CollaborationManager } from './collaboration_manager.js';
|
|
4
4
|
export { type CollabDocumentNameFor, type CollabDocuments, type CollaborationAppConfig, type CollaborationAppConfigFor, defineConfig, type InferCollabDocumentNames, } from './define_config.js';
|
|
5
|
-
export type { CollabDocumentDeclaration, DocumentParams } from './documents.js';
|
|
6
|
-
export { defineDocument, matchDocumentPattern } from './documents.js';
|
|
5
|
+
export type { CollabDocumentDeclaration, CollectionPattern, DocumentParams, } from './documents.js';
|
|
6
|
+
export { defineCollection, defineDocument, documentPatternParams, matchDocumentPattern, } from './documents.js';
|
|
7
7
|
export { AutomergeDriver } from './drivers/automerge/automerge_driver.js';
|
|
8
8
|
export { PartyKitDriver, PartyKitRoomError, } from './drivers/partykit/partykit_driver.js';
|
|
9
9
|
export { YjsDriver } from './drivers/yjs/yjs_driver.js';
|
|
10
10
|
export type { CollabHttpContext, CollabManagerLike, CollabRoutesRuntime, CollabRouteUser, ResolveUserFn, } from './http/types.js';
|
|
11
11
|
export { CollabUnauthorizedError } from './http/types.js';
|
|
12
|
-
export { COLLAB_ERROR_EVENT, type CollabErrorEvent, type CollabLogger, collaborationEvents, onCollaborationError, reportCollaborationError, setCollaborationLogger, } from './observability.js';
|
|
12
|
+
export { COLLAB_ERROR_EVENT, type CollabErrorEvent, type CollabLogger, collaborationEvents, onCollaborationError, reportCollaborationError, reportCollaborationWarning, setCollaborationLogger, } from './observability.js';
|
|
13
13
|
export { canMutateComment, collaborationRoutes, defaultResolveUser, secretsMatch, } from './routes.js';
|
|
14
14
|
export { type PresenceMember, PresenceService, type PresenceStore, RedisPresenceStore, } from './services/presence_service.js';
|
|
15
15
|
export { FileSystemStorage } from './storage/file_system_storage.js';
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,KAAK,WAAW,EAChB,UAAU,EACV,wBAAwB,EACxB,oBAAoB,EACpB,KAAK,WAAW,EAChB,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAC9B,YAAY,EACZ,KAAK,wBAAwB,GAC9B,MAAM,oBAAoB,CAAC;AAC5B,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,KAAK,WAAW,EAChB,UAAU,EACV,wBAAwB,EACxB,oBAAoB,EACpB,KAAK,WAAW,EAChB,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAC9B,YAAY,EACZ,KAAK,wBAAwB,GAC9B,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,yBAAyB,EACzB,iBAAiB,EACjB,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EACL,cAAc,EACd,iBAAiB,GAClB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EACL,kBAAkB,EAClB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,cAAc,EACnB,eAAe,EACf,KAAK,aAAa,EAClB,kBAAkB,GACnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACxE,YAAY,EACV,aAAa,EACb,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,cAAc,EACd,oBAAoB,GACrB,MAAM,YAAY,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -4,12 +4,12 @@ export { configure } from '../configure.js';
|
|
|
4
4
|
export { buildWsUrl, CollabAuthorizationError, CollabForbiddenError, issueToken, parseLegacyToken, signPartyKitToken, verifyPartyKitToken, } from './auth/token.js';
|
|
5
5
|
export { CollaborationManager } from './collaboration_manager.js';
|
|
6
6
|
export { defineConfig, } from './define_config.js';
|
|
7
|
-
export { defineDocument, matchDocumentPattern } from './documents.js';
|
|
7
|
+
export { defineCollection, defineDocument, documentPatternParams, matchDocumentPattern, } from './documents.js';
|
|
8
8
|
export { AutomergeDriver } from './drivers/automerge/automerge_driver.js';
|
|
9
9
|
export { PartyKitDriver, PartyKitRoomError, } from './drivers/partykit/partykit_driver.js';
|
|
10
10
|
export { YjsDriver } from './drivers/yjs/yjs_driver.js';
|
|
11
11
|
export { CollabUnauthorizedError } from './http/types.js';
|
|
12
|
-
export { COLLAB_ERROR_EVENT, collaborationEvents, onCollaborationError, reportCollaborationError, setCollaborationLogger, } from './observability.js';
|
|
12
|
+
export { COLLAB_ERROR_EVENT, collaborationEvents, onCollaborationError, reportCollaborationError, reportCollaborationWarning, setCollaborationLogger, } from './observability.js';
|
|
13
13
|
export { canMutateComment, collaborationRoutes, defaultResolveUser, secretsMatch, } from './routes.js';
|
|
14
14
|
export { PresenceService, RedisPresenceStore, } from './services/presence_service.js';
|
|
15
15
|
export { FileSystemStorage } from './storage/file_system_storage.js';
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,0DAA0D;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAEL,UAAU,EACV,wBAAwB,EACxB,oBAAoB,EAEpB,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EAEjB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAKL,YAAY,GAEb,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,0DAA0D;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAEL,UAAU,EACV,wBAAwB,EACxB,oBAAoB,EAEpB,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EAEjB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAKL,YAAY,GAEb,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EACL,cAAc,EACd,iBAAiB,GAClB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAQxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EACL,kBAAkB,EAGlB,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,eAAe,EAEf,kBAAkB,GACnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -22,6 +22,11 @@ import { EventEmitter } from 'node:events';
|
|
|
22
22
|
/** Minimal logger contract — satisfied by the Adonis (pino) logger. */
|
|
23
23
|
export interface CollabLogger {
|
|
24
24
|
error(mergingObject: Record<string, unknown>, message?: string): void;
|
|
25
|
+
/**
|
|
26
|
+
* Configuration warnings — something that runs, but almost certainly not
|
|
27
|
+
* as intended. Optional: without it they go to `console.warn`.
|
|
28
|
+
*/
|
|
29
|
+
warn?(mergingObject: Record<string, unknown>, message?: string): void;
|
|
25
30
|
}
|
|
26
31
|
/** What failed, and while doing what. */
|
|
27
32
|
export interface CollabErrorEvent {
|
|
@@ -47,6 +52,12 @@ export declare const collaborationEvents: EventEmitter<any>;
|
|
|
47
52
|
export declare function setCollaborationLogger(next: CollabLogger | undefined): void;
|
|
48
53
|
/** Subscribes to failures; returns an unsubscribe function. */
|
|
49
54
|
export declare function onCollaborationError(listener: (event: CollabErrorEvent) => void): () => void;
|
|
55
|
+
/**
|
|
56
|
+
* Reports a configuration warning to the logger (`warn`), else to
|
|
57
|
+
* `console.warn`. Not an error and not on the event stream: nothing failed,
|
|
58
|
+
* the config just does not say what it looks like it says. Never throws.
|
|
59
|
+
*/
|
|
60
|
+
export declare function reportCollaborationWarning(details: Record<string, unknown>, message: string): void;
|
|
50
61
|
/** Reports a failure to the logger and/or the event stream. Never throws. */
|
|
51
62
|
export declare function reportCollaborationError(event: CollabErrorEvent): void;
|
|
52
63
|
//# sourceMappingURL=observability.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../../src/observability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,uEAAuE;AACvE,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvE;AAED,yCAAyC;AACzC,MAAM,WAAW,gBAAgB;IAC/B,6BAA6B;IAC7B,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,WAAW,CAAC;IAC7C,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,wBAAwB,CAAC;AAExD,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,mBAAqB,CAAC;AAItD,gFAAgF;AAChF,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI,CAE3E;AAED,+DAA+D;AAC/D,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,GAAG,MAAM,IAAI,CAK5F;AAED,6EAA6E;AAC7E,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CA8BtE"}
|
|
1
|
+
{"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../../src/observability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,uEAAuE;AACvE,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtE;;;OAGG;IACH,IAAI,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvE;AAED,yCAAyC;AACzC,MAAM,WAAW,gBAAgB;IAC/B,6BAA6B;IAC7B,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,WAAW,CAAC;IAC7C,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,wBAAwB,CAAC;AAExD,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,mBAAqB,CAAC;AAItD,gFAAgF;AAChF,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI,CAE3E;AAED,+DAA+D;AAC/D,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,GAAG,MAAM,IAAI,CAK5F;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,MAAM,GACd,IAAI,CAWN;AAED,6EAA6E;AAC7E,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CA8BtE"}
|
|
@@ -20,6 +20,24 @@ export function onCollaborationError(listener) {
|
|
|
20
20
|
collaborationEvents.off(COLLAB_ERROR_EVENT, listener);
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Reports a configuration warning to the logger (`warn`), else to
|
|
25
|
+
* `console.warn`. Not an error and not on the event stream: nothing failed,
|
|
26
|
+
* the config just does not say what it looks like it says. Never throws.
|
|
27
|
+
*/
|
|
28
|
+
export function reportCollaborationWarning(details, message) {
|
|
29
|
+
const full = `[@adonis-agora/collaboration] ${message}`;
|
|
30
|
+
if (logger?.warn) {
|
|
31
|
+
try {
|
|
32
|
+
logger.warn(details, full);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
// A broken logger must not escalate a warning into a failure.
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
console.warn(full, details);
|
|
40
|
+
}
|
|
23
41
|
/** Reports a failure to the logger and/or the event stream. Never throws. */
|
|
24
42
|
export function reportCollaborationError(event) {
|
|
25
43
|
const where = event.docName ? ` for document "${event.docName}"` : '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observability.js","sourceRoot":"","sources":["../../src/observability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"observability.js","sourceRoot":"","sources":["../../src/observability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA6C3C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,qBAAqB,CAAC;AAExD,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,YAAY,EAAE,CAAC;AAEtD,IAAI,MAAgC,CAAC;AAErC,gFAAgF;AAChF,MAAM,UAAU,sBAAsB,CAAC,IAA8B;IACnE,MAAM,GAAG,IAAI,CAAC;AAChB,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,oBAAoB,CAAC,QAA2C;IAC9E,mBAAmB,CAAC,EAAE,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IACrD,OAAO,GAAG,EAAE;QACV,mBAAmB,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CACxC,OAAgC,EAChC,OAAe;IAEf,MAAM,IAAI,GAAG,iCAAiC,OAAO,EAAE,CAAC;IACxD,IAAI,MAAM,EAAE,IAAI,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QAAC,MAAM,CAAC;YACP,8DAA8D;QAChE,CAAC;IACH,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,wBAAwB,CAAC,KAAuB;IAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,MAAM,OAAO,GAAG,iCAAiC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,UAAU,KAAK,EAAE,CAAC;IAEjG,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,CAAC;YACH,MAAM,CAAC,KAAK,CACV;gBACE,GAAG,EAAE,KAAK,CAAC,KAAK;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACrD,EACD,OAAO,CACR,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,2DAA2D;QAC7D,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,mBAAmB,CAAC,aAAa,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC9E,IAAI,WAAW,EAAE,CAAC;QAChB,mBAAmB,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO;IACT,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,uDAAuD;QACvD,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adonis-agora/collaboration",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "Collaborative editing (CRDT) for AdonisJS 7 — Yjs (Hocuspocus) and Automerge drivers, Redis-backed presence, unified version control. Part of the Agora ecosystem.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|