@univerjs-pro/collaboration-comment-service 1.0.0-insiders.20260727-46ed76c

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.
@@ -0,0 +1,102 @@
1
+ import type { CollabSession } from "@univerjs-pro/collaboration-service";
2
+ import type { CommentSolvedStatus } from "@univerjs/protocol";
3
+ import type { CommentRequest } from "./types.js";
4
+ export interface CommentRecord {
5
+ readonly unitID: string;
6
+ readonly threadID: string;
7
+ readonly replyID: string;
8
+ readonly authorUserID: string;
9
+ readonly content: string;
10
+ readonly mentions: readonly string[];
11
+ readonly solved: CommentSolvedStatus;
12
+ readonly createdAt: number;
13
+ readonly updatedAt: number;
14
+ readonly generation: string;
15
+ }
16
+ export interface CommentDatabaseContext {
17
+ readonly session: CollabSession;
18
+ readonly request: CommentRequest;
19
+ }
20
+ export interface CreateRootDatabaseInput {
21
+ readonly unitID: string;
22
+ readonly threadID: string;
23
+ readonly authorUserID: string;
24
+ readonly content: string;
25
+ readonly mentions: readonly string[];
26
+ }
27
+ export interface CreateReplyDatabaseInput extends CreateRootDatabaseInput {
28
+ readonly replyID: string;
29
+ }
30
+ export interface GetCommentDatabaseInput {
31
+ readonly unitID: string;
32
+ readonly threadID: string;
33
+ readonly replyID: string;
34
+ }
35
+ export interface ListThreadsDatabaseInput {
36
+ readonly unitID: string;
37
+ readonly threadIDs: readonly string[];
38
+ }
39
+ export interface EditCommentDatabaseInput extends GetCommentDatabaseInput {
40
+ readonly expectedAuthorUserID: string;
41
+ readonly content: string;
42
+ readonly mentions: readonly string[];
43
+ }
44
+ export interface SetThreadSolvedDatabaseInput {
45
+ readonly unitID: string;
46
+ readonly threadID: string;
47
+ readonly solved: CommentSolvedStatus;
48
+ }
49
+ export interface DeleteCommentDatabaseInput {
50
+ readonly unitID: string;
51
+ readonly threadID: string;
52
+ readonly replyID?: string;
53
+ readonly expectedGeneration: string;
54
+ }
55
+ export type CreateCommentDatabaseResult = {
56
+ readonly status: "created";
57
+ readonly record: CommentRecord;
58
+ } | {
59
+ readonly status: "duplicate";
60
+ };
61
+ export type CreateReplyDatabaseResult = CreateCommentDatabaseResult | {
62
+ readonly status: "not-found";
63
+ } | {
64
+ readonly status: "closed";
65
+ };
66
+ export type EditCommentDatabaseResult = {
67
+ readonly status: "edited";
68
+ readonly record: CommentRecord;
69
+ } | {
70
+ readonly status: "unchanged";
71
+ readonly record: CommentRecord;
72
+ } | {
73
+ readonly status: "not-found";
74
+ } | {
75
+ readonly status: "closed";
76
+ } | {
77
+ readonly status: "author-mismatch";
78
+ };
79
+ export type SetThreadSolvedDatabaseResult = {
80
+ readonly status: "updated";
81
+ } | {
82
+ readonly status: "unchanged";
83
+ } | {
84
+ readonly status: "not-found";
85
+ };
86
+ export type DeleteCommentDatabaseResult = {
87
+ readonly status: "deleted";
88
+ } | {
89
+ readonly status: "not-found";
90
+ } | {
91
+ readonly status: "generation-mismatch";
92
+ };
93
+ export interface ICommentDatabaseAdapter {
94
+ createRoot(input: CreateRootDatabaseInput, context: CommentDatabaseContext): Promise<CreateCommentDatabaseResult>;
95
+ createReply(input: CreateReplyDatabaseInput, context: CommentDatabaseContext): Promise<CreateReplyDatabaseResult>;
96
+ getComment(input: GetCommentDatabaseInput, context: CommentDatabaseContext): Promise<CommentRecord | null>;
97
+ listThreads(input: ListThreadsDatabaseInput, context: CommentDatabaseContext): Promise<readonly CommentRecord[]>;
98
+ editComment(input: EditCommentDatabaseInput, context: CommentDatabaseContext): Promise<EditCommentDatabaseResult>;
99
+ setThreadSolved(input: SetThreadSolvedDatabaseInput, context: CommentDatabaseContext): Promise<SetThreadSolvedDatabaseResult>;
100
+ deleteComment(input: DeleteCommentDatabaseInput, context: CommentDatabaseContext): Promise<DeleteCommentDatabaseResult>;
101
+ dispose(): Promise<void>;
102
+ }
@@ -0,0 +1 @@
1
+ 'use strict';function _0x45bd(_0x2aa183,_0x54313e){_0x2aa183=_0x2aa183-0x16c;var _0x4b30ae=_0x4b30();var _0x45bd3a=_0x4b30ae[_0x2aa183];return _0x45bd3a;}var _0x1c5f58=_0x45bd;(function(_0x1495cf,_0x1c9d80){var _0x2ada39=_0x45bd,_0x1fe1e9=_0x1495cf();while(!![]){try{var _0x1f114b=parseInt(_0x2ada39(0x171))/0x1+parseInt(_0x2ada39(0x176))/0x2*(parseInt(_0x2ada39(0x16f))/0x3)+parseInt(_0x2ada39(0x16d))/0x4*(-parseInt(_0x2ada39(0x173))/0x5)+parseInt(_0x2ada39(0x175))/0x6*(-parseInt(_0x2ada39(0x174))/0x7)+-parseInt(_0x2ada39(0x177))/0x8+-parseInt(_0x2ada39(0x170))/0x9+-parseInt(_0x2ada39(0x16e))/0xa*(-parseInt(_0x2ada39(0x172))/0xb);if(_0x1f114b===_0x1c9d80)break;else _0x1fe1e9['push'](_0x1fe1e9['shift']());}catch(_0x2a800e){_0x1fe1e9['push'](_0x1fe1e9['shift']());}}}(_0x4b30,0x8f140));function _0x4b30(){var _0xc91cd1=['8vNGkur','27722810coIXfu','48kiugpM','5570082cCcNgy','216561BcTOJN','11RDmrOT','2515885EiNhYm','1373638hCaKoC','6jHiHwS','27668xbmgfj','6421216hyPzgj','defineProperty','__esModule'];_0x4b30=function(){return _0xc91cd1;};return _0x4b30();}Object[_0x1c5f58(0x178)](exports,_0x1c5f58(0x16c),{'value':!![]});
@@ -0,0 +1,5 @@
1
+ export { UniverCommentService } from "./service.js";
2
+ export type { UniverCommentServiceOptions } from "./service.js";
3
+ export type { CommentDatabaseContext, CommentRecord, CreateCommentDatabaseResult, CreateReplyDatabaseResult, CreateReplyDatabaseInput, CreateRootDatabaseInput, DeleteCommentDatabaseInput, DeleteCommentDatabaseResult, EditCommentDatabaseInput, EditCommentDatabaseResult, GetCommentDatabaseInput, ICommentDatabaseAdapter, ListThreadsDatabaseInput, SetThreadSolvedDatabaseInput, SetThreadSolvedDatabaseResult, } from "./database-adapter.js";
4
+ export type { AddCommentMiddlewareContext, CommentMiddleware, CommentMiddlewareAction, CommentMiddlewareMap, CommentMiddlewareNext, DeleteCommentMiddlewareContext, DeleteCommentMiddlewareTarget, EditCommentMiddlewareContext, ListCommentsMiddlewareContext, ReplyCommentMiddlewareContext, SetThreadSolvedMiddlewareContext, } from "./middleware.js";
5
+ export type { AddCommentInput, AddCommentRequest, CommentCallOptions, CommentCommittedEvent, CommentListResult, CommentRequest, CommentServiceEventMap, CommentUserProviderContext, CommentWriteRequest, DeleteCommentInput, DeleteCommentRequest, EditCommentInput, EditCommentRequest, ICommentUserProvider, IUniverCommentService, ListCommentsInput, ListCommentsRequest, ReplyCommentInput, ReplyCommentRequest, SetThreadSolvedInput, SetThreadSolvedRequest, } from "./types.js";
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ 'use strict';Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['UniverCommentService']=void 0x0;var service_js_1=require('./service.js');Object['defineProperty'](exports,'UniverCommentService',{'enumerable':!![],'get':function(){return service_js_1['UniverCommentService'];}});
@@ -0,0 +1,39 @@
1
+ import type { CollabSession, Disposable } from "@univerjs-pro/collaboration-service";
2
+ import type { AddCommentRequest, DeleteCommentRequest, EditCommentRequest, ListCommentsRequest, ReplyCommentRequest, SetThreadSolvedRequest } from "./types.js";
3
+ export interface DeleteCommentMiddlewareTarget {
4
+ readonly kind: "root" | "reply";
5
+ readonly threadID: string;
6
+ readonly replyID: string;
7
+ readonly authorUserID: string;
8
+ readonly generation: string;
9
+ }
10
+ interface BaseCommentMiddlewareContext<TRequest> {
11
+ readonly session: CollabSession;
12
+ readonly request: TRequest;
13
+ }
14
+ export type AddCommentMiddlewareContext = BaseCommentMiddlewareContext<AddCommentRequest>;
15
+ export type ListCommentsMiddlewareContext = BaseCommentMiddlewareContext<ListCommentsRequest>;
16
+ export type ReplyCommentMiddlewareContext = BaseCommentMiddlewareContext<ReplyCommentRequest>;
17
+ export type SetThreadSolvedMiddlewareContext = BaseCommentMiddlewareContext<SetThreadSolvedRequest>;
18
+ export type EditCommentMiddlewareContext = BaseCommentMiddlewareContext<EditCommentRequest>;
19
+ export interface DeleteCommentMiddlewareContext extends BaseCommentMiddlewareContext<DeleteCommentRequest> {
20
+ readonly target: DeleteCommentMiddlewareTarget;
21
+ }
22
+ export type CommentMiddlewareNext = () => Promise<void>;
23
+ export type CommentMiddleware<TContext> = (context: TContext, next: CommentMiddlewareNext) => void | Promise<void>;
24
+ export type CommentMiddlewareAction = "addComment" | "listComments" | "replyComment" | "setThreadSolved" | "editComment" | "deleteComment";
25
+ export interface CommentMiddlewareMap {
26
+ readonly addComment: CommentMiddleware<AddCommentMiddlewareContext>;
27
+ readonly listComments: CommentMiddleware<ListCommentsMiddlewareContext>;
28
+ readonly replyComment: CommentMiddleware<ReplyCommentMiddlewareContext>;
29
+ readonly setThreadSolved: CommentMiddleware<SetThreadSolvedMiddlewareContext>;
30
+ readonly editComment: CommentMiddleware<EditCommentMiddlewareContext>;
31
+ readonly deleteComment: CommentMiddleware<DeleteCommentMiddlewareContext>;
32
+ }
33
+ export declare class CommentMiddlewareRegistry {
34
+ private readonly _middlewares;
35
+ use<K extends CommentMiddlewareAction>(action: K, middleware: CommentMiddlewareMap[K]): Disposable;
36
+ run<TContext>(action: CommentMiddlewareAction, context: TContext, terminal: () => void | Promise<void>): Promise<void>;
37
+ clear(): void;
38
+ }
39
+ export {};
@@ -0,0 +1 @@
1
+ 'use strict';const _0x1afec0=_0x19e2;(function(_0x56c498,_0x4a9cf4){const _0x16a207=_0x19e2,_0x3db224=_0x56c498();while(!![]){try{const _0x1c1279=parseInt(_0x16a207(0x114))/0x1*(-parseInt(_0x16a207(0x11b))/0x2)+parseInt(_0x16a207(0x105))/0x3+-parseInt(_0x16a207(0x11c))/0x4*(parseInt(_0x16a207(0x11a))/0x5)+parseInt(_0x16a207(0x10a))/0x6*(-parseInt(_0x16a207(0x118))/0x7)+parseInt(_0x16a207(0x11e))/0x8*(-parseInt(_0x16a207(0x10d))/0x9)+-parseInt(_0x16a207(0x108))/0xa+parseInt(_0x16a207(0x119))/0xb*(parseInt(_0x16a207(0x115))/0xc);if(_0x1c1279===_0x4a9cf4)break;else _0x3db224['push'](_0x3db224['shift']());}catch(_0x547be7){_0x3db224['push'](_0x3db224['shift']());}}}(_0x94ff,0x2e1ac));function _0x19e2(_0x4cb14c,_0x1fb2da){_0x4cb14c=_0x4cb14c-0x105;const _0x94ff97=_0x94ff();let _0x19e227=_0x94ff97[_0x4cb14c];return _0x19e227;}Object[_0x1afec0(0x111)](exports,'__esModule',{'value':!![]}),exports['CommentMiddlewareRegistry']=void 0x0;class CommentMiddlewareRegistry{[_0x1afec0(0x110)]=new Map();[_0x1afec0(0x10f)](_0x56cc2a,_0x54017e){const _0x23cdcf=_0x1afec0,_0x469faa=this[_0x23cdcf(0x110)]['get'](_0x56cc2a)??[],_0x250a8b=_0x54017e;_0x469faa[_0x23cdcf(0x106)](_0x250a8b),this[_0x23cdcf(0x110)][_0x23cdcf(0x10b)](_0x56cc2a,_0x469faa);let _0x287820=![];return{'dispose':()=>{const _0x3e13a0=_0x23cdcf;if(_0x287820)return;_0x287820=!![];const _0x57136a=_0x469faa[_0x3e13a0(0x112)](_0x250a8b);if(_0x57136a>=0x0)_0x469faa['splice'](_0x57136a,0x1);}};}async[_0x1afec0(0x10e)](_0x49a0b4,_0x29ef97,_0x5b79ef){const _0x4c7355=_0x1afec0,_0x20595e=[...this['_middlewares'][_0x4c7355(0x117)](_0x49a0b4)??[]],_0x323088=async _0x4b7d0e=>{const _0x4df195=_0x4c7355,_0x54b720=_0x20595e[_0x4b7d0e];if(!_0x54b720)return _0x5b79ef();let _0x201188=![],_0x4eb964;const _0x15afc2=()=>{const _0x1a67ef=_0x19e2;if(_0x201188)throw new Error('Middleware\x20for\x20action\x20'+_0x49a0b4+_0x1a67ef(0x10c));return _0x201188=!![],_0x4eb964=_0x323088(_0x4b7d0e+0x1),_0x4eb964;};try{await _0x54b720(_0x29ef97,_0x15afc2);}catch(_0x43861a){if(_0x4eb964)await _0x4eb964[_0x4df195(0x113)](()=>undefined);throw _0x43861a;}if(!_0x201188)throw new Error(_0x4df195(0x116)+_0x49a0b4+_0x4df195(0x11d));await _0x4eb964;};await _0x323088(0x0);}[_0x1afec0(0x109)](){const _0x48f6bf=_0x1afec0;this[_0x48f6bf(0x110)]['clear']();}}function _0x94ff(){const _0xd112f0=['\x20completed\x20without\x20calling\x20next()','3688nUZqiy','477135BYjpBw','push','CommentMiddlewareRegistry','725910VbqzCE','clear','6XrCCZi','set','\x20called\x20next()\x20more\x20than\x20once','7155iCLtWR','run','use','_middlewares','defineProperty','indexOf','catch','7falDjo','66312gZUtMo','Middleware\x20for\x20action\x20','get','574763oSAQns','1551EIHaaJ','175WremeI','55922ssVjNA','3708wGzhHY'];_0x94ff=function(){return _0xd112f0;};return _0x94ff();}exports[_0x1afec0(0x107)]=CommentMiddlewareRegistry;
@@ -0,0 +1,34 @@
1
+ import { type Disposable } from "@univerjs-pro/collaboration-service";
2
+ import { type IReply, type IThread } from "@univerjs/protocol";
3
+ import type { ICommentDatabaseAdapter } from "./database-adapter.js";
4
+ import { type CommentMiddlewareAction, type CommentMiddlewareMap } from "./middleware.js";
5
+ import type { AddCommentInput, CommentCallOptions, CommentListResult, CommentServiceEventMap, CommentServiceListener, DeleteCommentInput, EditCommentInput, ICommentUserProvider, IUniverCommentService, ListCommentsInput, ReplyCommentInput, SetThreadSolvedInput } from "./types.js";
6
+ export interface UniverCommentServiceOptions {
7
+ readonly database: ICommentDatabaseAdapter;
8
+ readonly userProvider?: ICommentUserProvider;
9
+ }
10
+ export declare class UniverCommentService implements IUniverCommentService {
11
+ private readonly _middleware;
12
+ private readonly _listeners;
13
+ private readonly _calls;
14
+ private readonly _database;
15
+ private readonly _userProvider;
16
+ private _state;
17
+ private _disposePromise;
18
+ constructor(options: UniverCommentServiceOptions);
19
+ use<K extends CommentMiddlewareAction>(action: K, middleware: CommentMiddlewareMap[K]): Disposable;
20
+ on<K extends keyof CommentServiceEventMap>(event: K, listener: CommentServiceListener<K>): Disposable;
21
+ addComment(input: AddCommentInput, options: CommentCallOptions): Promise<IThread>;
22
+ listComments(input: ListCommentsInput, options: CommentCallOptions): Promise<CommentListResult>;
23
+ replyComment(input: ReplyCommentInput, options: CommentCallOptions): Promise<IReply>;
24
+ editComment(input: EditCommentInput, options: CommentCallOptions): Promise<void>;
25
+ setThreadSolved(input: SetThreadSolvedInput, options: CommentCallOptions): Promise<void>;
26
+ deleteComment(input: DeleteCommentInput, options: CommentCallOptions): Promise<void>;
27
+ dispose(): Promise<void>;
28
+ private _createUpdate;
29
+ private _resolveUsers;
30
+ private _emitWrite;
31
+ private _call;
32
+ private _databaseCall;
33
+ private _assertRunning;
34
+ }
@@ -0,0 +1 @@
1
+ 'use strict';const _0x5dcc2b=_0x24e7;function _0x4f22(){const _0x50f17b=['find','_listeners','userID','set','699958DZAqLd','reply','clear','root','_database','Open\x20Comment\x20thread\x20was\x20not\x20found','UniverCommentService','CommentUpdateEventType','_emitWrite','updated','_assertRunning','create','session','INVALID_REQUEST','setThreadSolved','Delete','closed','use','CommentMiddlewareRegistry','Only\x20the\x20Comment\x20author\x20can\x20edit\x20it','_disposePromise','283752iUEcDw','length','__esModule','filter','has','Solve','UniverCommentService\x20requires\x20a\x20database','_middleware','106520Tlvuum','_databaseCall','randomUUID','get','userId','getUsers','Comment\x20ID\x20already\x20exists','content','617720AdUmaj','getComment','CommentSolvedStatus','61955idDuWF','solved','running','unitID','_calls','threadID','forEach','listThreads','2208162wrcyoZ','mentions','Comment\x20was\x20not\x20found','createRoot','status','createdAt','duplicate','editComment','flatMap','_resolveUsers','replyID','string','Comment\x20Service\x20is\x20','author-mismatch','session.userId','UNIT_NOT_FOUND','record','generation-mismatch','Comment\x20thread\x20was\x20not\x20found','35yHTGOs','deleteComment','values','Edit','listComments','push','localeCompare','solved\x20must\x20be\x20OpenOrReOpen\x20or\x20Solved','_userProvider','not-found','userProvider','customData','_state','threadIDs','map','1244HaJYGY','session.memberId','OpenOrReOpen','commentCommitted','authorUserID','add','generation','_createUpdate','sort','addComment','CollabError','dispose','memberId','run','createReply','6vmnNVt','defineProperty','_call','Comment\x20changed\x20before\x20deletion','replies','finally','delete'];_0x4f22=function(){return _0x50f17b;};return _0x4f22();}(function(_0x212453,_0x2f631d){const _0x18b149=_0x24e7,_0x52c067=_0x212453();while(!![]){try{const _0x4c991c=-parseInt(_0x18b149(0xc2))/0x1+parseInt(_0x18b149(0x123))/0x2*(-parseInt(_0x18b149(0xfb))/0x3)+-parseInt(_0x18b149(0xec))/0x4*(-parseInt(_0x18b149(0xdd))/0x5)+parseInt(_0x18b149(0xca))/0x6+-parseInt(_0x18b149(0x106))/0x7+parseInt(_0x18b149(0xbf))/0x8+parseInt(_0x18b149(0x11b))/0x9;if(_0x4c991c===_0x2f631d)break;else _0x52c067['push'](_0x52c067['shift']());}catch(_0x38e8dc){_0x52c067['push'](_0x52c067['shift']());}}}(_0x4f22,0x3362e));Object[_0x5dcc2b(0xfc)](exports,_0x5dcc2b(0x11d),{'value':!![]}),exports[_0x5dcc2b(0x10c)]=void 0x0;const node_crypto_1=require('node:crypto'),collaboration_service_1=require('@univerjs-pro/collaboration-service'),protocol_1=require('@univerjs/protocol'),middleware_js_1=require('./middleware.js');class UniverCommentService{['_middleware']=new middleware_js_1[(_0x5dcc2b(0x118))]();[_0x5dcc2b(0x103)]=new Map();[_0x5dcc2b(0xc6)]=new Set();[_0x5dcc2b(0x10a)];['_userProvider'];[_0x5dcc2b(0xe9)]=_0x5dcc2b(0xc4);[_0x5dcc2b(0x11a)];constructor(_0x5e68e1){const _0x325928=_0x5dcc2b;if(!_0x5e68e1?.['database'])throw new TypeError(_0x325928(0x121));this['_database']=_0x5e68e1['database'],this[_0x325928(0xe5)]=_0x5e68e1[_0x325928(0xe7)];}[_0x5dcc2b(0x117)](_0x70bcd3,_0x44c617){const _0x2fd178=_0x5dcc2b;return this[_0x2fd178(0x110)](),this[_0x2fd178(0x122)][_0x2fd178(0x117)](_0x70bcd3,_0x44c617);}['on'](_0x24b744,_0x10e07d){const _0x395dd4=_0x5dcc2b;this[_0x395dd4(0x110)]();const _0x524746=this[_0x395dd4(0x103)]['get'](_0x24b744)??new Set(),_0x22c7b7=_0x10e07d;_0x524746['add'](_0x22c7b7),this['_listeners'][_0x395dd4(0x105)](_0x24b744,_0x524746);let _0x393844=![];return{'dispose':()=>{const _0x4e6559=_0x395dd4;if(_0x393844)return;_0x393844=!![],_0x524746[_0x4e6559(0x101)](_0x22c7b7);}};}[_0x5dcc2b(0xf5)](_0x5b63b3,_0x211a4f){const _0x40d882=_0x5dcc2b;return this[_0x40d882(0xfd)](async()=>{const _0x2496c0=_0x40d882;validateUnitID(_0x5b63b3[_0x2496c0(0xc5)]),validateContent(_0x5b63b3[_0x2496c0(0xbe)]);const _0x484824=createRequest(_0x5b63b3,_0x211a4f);let _0x470553;return await this[_0x2496c0(0x122)]['run']('addComment',{'session':_0x211a4f[_0x2496c0(0x112)],'request':_0x484824},async()=>{const _0x4d9168=_0x2496c0,_0x29cdae=await this['_databaseCall'](()=>this['_database'][_0x4d9168(0xcd)]({'unitID':_0x5b63b3[_0x4d9168(0xc5)],'threadID':(0x0,node_crypto_1[_0x4d9168(0xb9)])(),'authorUserID':trustedUserID(_0x211a4f['session']),'content':_0x5b63b3[_0x4d9168(0xbe)],'mentions':[..._0x5b63b3[_0x4d9168(0xcb)]]},databaseContext(_0x211a4f[_0x4d9168(0x112)],_0x484824)));if(_0x29cdae[_0x4d9168(0xce)]==='duplicate')throw invalidRequest(_0x4d9168(0xbd));_0x470553=threadFromRecords([_0x29cdae['record']]),await this[_0x4d9168(0x10e)](_0x211a4f[_0x4d9168(0x112)],_0x484824,await this[_0x4d9168(0xf3)](protocol_1['CommentUpdateEventType']['Add'],_0x29cdae['record'],_0x211a4f['session'],_0x484824));}),_0x470553;});}[_0x5dcc2b(0xe1)](_0x251693,_0x5d2db1){const _0x58f5e8=_0x5dcc2b;return this[_0x58f5e8(0xfd)](async()=>{const _0x56d6c1=_0x58f5e8;validateUnitID(_0x251693[_0x56d6c1(0xc5)]),_0x251693[_0x56d6c1(0xea)][_0x56d6c1(0xc8)](_0xfe74cc=>validateID(_0x56d6c1(0xc7),_0xfe74cc));const _0x33df43=createRequest(_0x251693,_0x5d2db1);let _0x229d47;return await this[_0x56d6c1(0x122)]['run'](_0x56d6c1(0xe1),{'session':_0x5d2db1[_0x56d6c1(0x112)],'request':_0x33df43},async()=>{const _0x27b2b2=_0x56d6c1,_0xa70285=await this[_0x27b2b2(0xb8)](()=>this['_database'][_0x27b2b2(0xc9)]({'unitID':_0x251693[_0x27b2b2(0xc5)],'threadIDs':[...new Set(_0x251693[_0x27b2b2(0xea)])]},databaseContext(_0x5d2db1[_0x27b2b2(0x112)],_0x33df43))),_0x4be9e9=groupThreads(_0xa70285),_0xe49f71=Object[_0x27b2b2(0xdf)](_0x4be9e9)[_0x27b2b2(0xd2)](_0x2c6556=>_0x2c6556[_0x27b2b2(0xff)][_0x27b2b2(0xeb)](_0x41724b=>_0x41724b['userId']));_0x229d47={'comments':_0x4be9e9,'users':await this[_0x27b2b2(0xd3)](_0xe49f71,_0x5d2db1[_0x27b2b2(0x112)],_0x33df43)};}),_0x229d47;});}['replyComment'](_0x13f639,_0x26bd39){return this['_call'](async()=>{const _0x15bf65=_0x24e7;validateUnitID(_0x13f639['unitID']),validateID(_0x15bf65(0xc7),_0x13f639[_0x15bf65(0xc7)]),validateContent(_0x13f639[_0x15bf65(0xbe)]);const _0x4c5077=createRequest(_0x13f639,_0x26bd39);let _0x3ccbe3;return await this[_0x15bf65(0x122)][_0x15bf65(0xf9)]('replyComment',{'session':_0x26bd39[_0x15bf65(0x112)],'request':_0x4c5077},async()=>{const _0x51d0f6=_0x15bf65,_0x5580c4=await this[_0x51d0f6(0xb8)](()=>this[_0x51d0f6(0x10a)][_0x51d0f6(0xfa)]({'unitID':_0x13f639[_0x51d0f6(0xc5)],'threadID':_0x13f639['threadID'],'replyID':(0x0,node_crypto_1[_0x51d0f6(0xb9)])(),'authorUserID':trustedUserID(_0x26bd39['session']),'content':_0x13f639['content'],'mentions':[..._0x13f639[_0x51d0f6(0xcb)]]},databaseContext(_0x26bd39[_0x51d0f6(0x112)],_0x4c5077)));if(_0x5580c4[_0x51d0f6(0xce)]===_0x51d0f6(0xe6)||_0x5580c4['status']===_0x51d0f6(0x116))throw notFound(_0x51d0f6(0x10b));if(_0x5580c4[_0x51d0f6(0xce)]===_0x51d0f6(0xd0))throw invalidRequest('Comment\x20ID\x20already\x20exists');_0x3ccbe3=replyFromRecord(_0x5580c4[_0x51d0f6(0xda)]),await this[_0x51d0f6(0x10e)](_0x26bd39[_0x51d0f6(0x112)],_0x4c5077,await this['_createUpdate'](protocol_1[_0x51d0f6(0x10d)]['Reply'],_0x5580c4['record'],_0x26bd39[_0x51d0f6(0x112)],_0x4c5077));}),_0x3ccbe3;});}[_0x5dcc2b(0xd1)](_0x1184fb,_0x3aebff){const _0x5d35f8=_0x5dcc2b;return this[_0x5d35f8(0xfd)](async()=>{const _0x1e39cc=_0x5d35f8;validateTarget(_0x1184fb),validateContent(_0x1184fb[_0x1e39cc(0xbe)]);const _0x384087=createRequest(_0x1184fb,_0x3aebff);await this['_middleware']['run'](_0x1e39cc(0xd1),{'session':_0x3aebff[_0x1e39cc(0x112)],'request':_0x384087},async()=>{const _0x582958=_0x1e39cc,_0xb78a5f=await this[_0x582958(0xb8)](()=>this[_0x582958(0x10a)][_0x582958(0xd1)]({'unitID':_0x1184fb[_0x582958(0xc5)],'threadID':_0x1184fb[_0x582958(0xc7)],'replyID':_0x1184fb['replyID'],'expectedAuthorUserID':trustedUserID(_0x3aebff['session']),'content':_0x1184fb['content'],'mentions':[..._0x1184fb['mentions']]},databaseContext(_0x3aebff['session'],_0x384087)));if(_0xb78a5f['status']===_0x582958(0xd7))throw denied(_0x582958(0x119));if(_0xb78a5f[_0x582958(0xce)]===_0x582958(0xe6)||_0xb78a5f[_0x582958(0xce)]===_0x582958(0x116))throw notFound('Open\x20Comment\x20was\x20not\x20found');_0xb78a5f[_0x582958(0xce)]==='edited'&&await this[_0x582958(0x10e)](_0x3aebff['session'],_0x384087,updateFromRecord(protocol_1[_0x582958(0x10d)][_0x582958(0xe0)],_0xb78a5f[_0x582958(0xda)],_0x3aebff[_0x582958(0x112)]));});});}[_0x5dcc2b(0x114)](_0x5011f2,_0x38547d){const _0x2c985f=_0x5dcc2b;return this[_0x2c985f(0xfd)](async()=>{const _0x5affb2=_0x2c985f;validateUnitID(_0x5011f2[_0x5affb2(0xc5)]),validateID(_0x5affb2(0xc7),_0x5011f2[_0x5affb2(0xc7)]);if(_0x5011f2[_0x5affb2(0xc3)]!==protocol_1[_0x5affb2(0xc1)][_0x5affb2(0xee)]&&_0x5011f2[_0x5affb2(0xc3)]!==protocol_1[_0x5affb2(0xc1)]['Solved'])throw invalidRequest(_0x5affb2(0xe4));const _0x27c2fe=createRequest(_0x5011f2,_0x38547d);await this[_0x5affb2(0x122)][_0x5affb2(0xf9)](_0x5affb2(0x114),{'session':_0x38547d['session'],'request':_0x27c2fe},async()=>{const _0x47a1b4=_0x5affb2,_0x38f1e5=await this[_0x47a1b4(0xb8)](()=>this[_0x47a1b4(0x10a)][_0x47a1b4(0x114)](_0x5011f2,databaseContext(_0x38547d[_0x47a1b4(0x112)],_0x27c2fe)));if(_0x38f1e5['status']===_0x47a1b4(0xe6))throw notFound(_0x47a1b4(0xdc));_0x38f1e5[_0x47a1b4(0xce)]===_0x47a1b4(0x10f)&&await this[_0x47a1b4(0x10e)](_0x38547d[_0x47a1b4(0x112)],_0x27c2fe,{'memberId':_0x38547d[_0x47a1b4(0x112)][_0x47a1b4(0xf8)],'userId':trustedUserID(_0x38547d[_0x47a1b4(0x112)]),'unitId':_0x5011f2[_0x47a1b4(0xc5)],'threadId':_0x5011f2[_0x47a1b4(0xc7)],'type':protocol_1[_0x47a1b4(0x10d)][_0x47a1b4(0x120)],'solved':_0x5011f2[_0x47a1b4(0xc3)]});});});}[_0x5dcc2b(0xde)](_0x2a6422,_0x410934){const _0x185906=_0x5dcc2b;return this[_0x185906(0xfd)](async()=>{const _0xdd588f=_0x185906;validateUnitID(_0x2a6422[_0xdd588f(0xc5)]),validateID(_0xdd588f(0xc7),_0x2a6422[_0xdd588f(0xc7)]);if(_0x2a6422['replyID']!==undefined)validateID('replyID',_0x2a6422['replyID']);const _0x2aeb94=_0x2a6422[_0xdd588f(0xd4)]===_0x2a6422['threadID']?undefined:_0x2a6422[_0xdd588f(0xd4)],_0x4df283=createRequest({'unitID':_0x2a6422['unitID'],'threadID':_0x2a6422[_0xdd588f(0xc7)],..._0x2aeb94===undefined?{}:{'replyID':_0x2aeb94}},_0x410934),_0x3e70d=await this['_databaseCall'](()=>this[_0xdd588f(0x10a)][_0xdd588f(0xc0)]({'unitID':_0x2a6422['unitID'],'threadID':_0x2a6422['threadID'],'replyID':_0x2aeb94??_0x2a6422[_0xdd588f(0xc7)]},databaseContext(_0x410934[_0xdd588f(0x112)],_0x4df283)));if(!_0x3e70d)throw notFound(_0xdd588f(0xcc));await this[_0xdd588f(0x122)][_0xdd588f(0xf9)](_0xdd588f(0xde),{'session':_0x410934[_0xdd588f(0x112)],'request':_0x4df283,'target':{'kind':_0x2aeb94===undefined?_0xdd588f(0x109):_0xdd588f(0x107),'threadID':_0x3e70d[_0xdd588f(0xc7)],'replyID':_0x3e70d[_0xdd588f(0xd4)],'authorUserID':_0x3e70d[_0xdd588f(0xf0)],'generation':_0x3e70d['generation']}},async()=>{const _0x44f513=_0xdd588f,_0x2c32f5=await this[_0x44f513(0xb8)](()=>this['_database'][_0x44f513(0xde)]({'unitID':_0x2a6422[_0x44f513(0xc5)],'threadID':_0x2a6422[_0x44f513(0xc7)],..._0x2aeb94===undefined?{}:{'replyID':_0x2aeb94},'expectedGeneration':_0x3e70d[_0x44f513(0xf2)]},databaseContext(_0x410934[_0x44f513(0x112)],_0x4df283)));if(_0x2c32f5[_0x44f513(0xce)]===_0x44f513(0xe6))throw notFound(_0x44f513(0xcc));if(_0x2c32f5[_0x44f513(0xce)]===_0x44f513(0xdb))throw invalidRequest(_0x44f513(0xfe));await this['_emitWrite'](_0x410934[_0x44f513(0x112)],_0x4df283,{'memberId':_0x410934[_0x44f513(0x112)][_0x44f513(0xf8)],'userId':trustedUserID(_0x410934[_0x44f513(0x112)]),'unitId':_0x2a6422[_0x44f513(0xc5)],'threadId':_0x2a6422[_0x44f513(0xc7)],'type':protocol_1['CommentUpdateEventType'][_0x44f513(0x115)],..._0x2aeb94===undefined?{}:{'replyId':_0x2aeb94}});});});}[_0x5dcc2b(0xf7)](){const _0x5eb309=_0x5dcc2b;if(this['_disposePromise'])return this[_0x5eb309(0x11a)];return this[_0x5eb309(0xe9)]='disposing',this[_0x5eb309(0x11a)]=((async()=>{const _0x1a9291=_0x5eb309;await Promise['allSettled']([...this[_0x1a9291(0xc6)]]),this[_0x1a9291(0x122)][_0x1a9291(0x108)](),this[_0x1a9291(0x103)][_0x1a9291(0x108)](),this[_0x1a9291(0xe9)]='disposed';})()),this[_0x5eb309(0x11a)];}async[_0x5dcc2b(0xf3)](_0x15ce15,_0x2022a5,_0x37d783,_0x15825f){const _0x31edef=_0x5dcc2b,_0x4bce94=await this[_0x31edef(0xd3)]([_0x2022a5[_0x31edef(0xf0)]],_0x37d783,_0x15825f);return{...updateFromRecord(_0x15ce15,_0x2022a5,_0x37d783),..._0x4bce94[_0x2022a5[_0x31edef(0xf0)]]?{'user':_0x4bce94[_0x2022a5[_0x31edef(0xf0)]]}:{}};}async[_0x5dcc2b(0xd3)](_0x3584c4,_0x174e34,_0xceaf88){const _0x5975b9=_0x5dcc2b,_0x21ccc7=[...new Set(_0x3584c4[_0x5975b9(0x11e)](Boolean))];if(!this[_0x5975b9(0xe5)]||_0x21ccc7[_0x5975b9(0x11c)]===0x0)return{};let _0x1e93b4;try{_0x1e93b4=await this[_0x5975b9(0xe5)][_0x5975b9(0xbc)](_0x21ccc7,{'session':_0x174e34,'request':_0xceaf88});}catch{return{};}const _0x5363ec=new Set(_0x21ccc7),_0x3644d9={};for(const _0x5f0f29 of _0x1e93b4){if(_0x5f0f29?.[_0x5975b9(0x104)]&&_0x5363ec[_0x5975b9(0x11f)](_0x5f0f29[_0x5975b9(0x104)]))_0x3644d9[_0x5f0f29['userID']]=_0x5f0f29;}return _0x3644d9;}async[_0x5dcc2b(0x10e)](_0x1d23d0,_0x5f33ee,_0x30b556){const _0x1c94a2=_0x5dcc2b,_0x39eac6={'session':_0x1d23d0,'request':_0x5f33ee,'update':_0x30b556,'committedAt':Date['now']()};for(const _0x48b913 of[...this[_0x1c94a2(0x103)][_0x1c94a2(0xba)](_0x1c94a2(0xef))??[]]){try{await _0x48b913(_0x39eac6);}catch{}}}['_call'](_0x1592ec){const _0x23ebd0=_0x5dcc2b;this[_0x23ebd0(0x110)]();const _0x395b2a=_0x1592ec();return this[_0x23ebd0(0xc6)][_0x23ebd0(0xf1)](_0x395b2a),void _0x395b2a[_0x23ebd0(0x100)](()=>this[_0x23ebd0(0xc6)][_0x23ebd0(0x101)](_0x395b2a))['catch'](()=>undefined),_0x395b2a;}async[_0x5dcc2b(0xb8)](_0x3530cf){const _0x2307ce=_0x5dcc2b;try{return await _0x3530cf();}catch(_0x1bd7da){if(_0x1bd7da instanceof collaboration_service_1[_0x2307ce(0xf6)])throw _0x1bd7da;throw new collaboration_service_1['CollabError']('ADAPTER_FAILURE','Comment\x20Database\x20Adapter\x20failed',{'retryable':!![],'cause':_0x1bd7da});}}[_0x5dcc2b(0x110)](){const _0x526320=_0x5dcc2b;if(this['_state']!==_0x526320(0xc4))throw new collaboration_service_1[(_0x526320(0xf6))]('INTERNAL_ERROR',_0x526320(0xd6)+this[_0x526320(0xe9)],{'retryable':!![]});}}exports[_0x5dcc2b(0x10c)]=UniverCommentService;function createRequest(_0x54ccc0,_0x589abe){const _0x2c3591=_0x5dcc2b;return{..._0x54ccc0,'customData':_0x589abe[_0x2c3591(0xe8)]??Object[_0x2c3591(0x111)](null)};}function databaseContext(_0xd050f0,_0x40342b){return{'session':_0xd050f0,'request':_0x40342b};}function trustedUserID(_0xe2f285){const _0x432585=_0x5dcc2b;return validateID(_0x432585(0xd8),_0xe2f285?.[_0x432585(0xbb)]),validateID(_0x432585(0xed),_0xe2f285?.[_0x432585(0xf8)]),_0xe2f285[_0x432585(0xbb)];}function _0x24e7(_0x43a4c0,_0x267f8d){_0x43a4c0=_0x43a4c0-0xb8;const _0x4f22d1=_0x4f22();let _0x24e797=_0x4f22d1[_0x43a4c0];return _0x24e797;}function replyFromRecord(_0x5eb3be){const _0x2305a5=_0x5dcc2b;return{'threadId':_0x5eb3be[_0x2305a5(0xc7)],'replyId':_0x5eb3be[_0x2305a5(0xd4)],'content':_0x5eb3be[_0x2305a5(0xbe)],'userId':_0x5eb3be[_0x2305a5(0xf0)],'createTimestamp':_0x5eb3be[_0x2305a5(0xcf)]};}function threadFromRecords(_0x18971f){const _0x54762c=_0x5dcc2b,_0x507517=_0x18971f[_0x54762c(0x102)](_0x1a2b8a=>_0x1a2b8a['replyID']===_0x1a2b8a[_0x54762c(0xc7)]);return{'threadId':_0x507517[_0x54762c(0xc7)],'solved':_0x507517[_0x54762c(0xc3)],'replies':_0x18971f[_0x54762c(0xeb)](replyFromRecord)};}function groupThreads(_0x2bba24){const _0x193272=_0x5dcc2b,_0x57e24e=new Map();for(const _0x5506d6 of _0x2bba24){const _0x3bf012=_0x57e24e[_0x193272(0xba)](_0x5506d6[_0x193272(0xc7)])??[];_0x3bf012[_0x193272(0xe2)](_0x5506d6),_0x57e24e[_0x193272(0x105)](_0x5506d6[_0x193272(0xc7)],_0x3bf012);}const _0x4569fc={};for(const [_0x3eb98e,_0x41e3c3]of _0x57e24e){const _0x50d26f=_0x41e3c3[_0x193272(0x102)](_0x345fda=>_0x345fda[_0x193272(0xd4)]===_0x3eb98e);if(!_0x50d26f)continue;const _0x5739b4=[..._0x41e3c3][_0x193272(0xf4)]((_0x1d6527,_0x4eb2ea)=>{const _0x4dd692=_0x193272;if(_0x1d6527[_0x4dd692(0xd4)]===_0x3eb98e)return-0x1;if(_0x4eb2ea[_0x4dd692(0xd4)]===_0x3eb98e)return 0x1;return _0x1d6527[_0x4dd692(0xcf)]-_0x4eb2ea[_0x4dd692(0xcf)]||_0x1d6527[_0x4dd692(0xd4)][_0x4dd692(0xe3)](_0x4eb2ea[_0x4dd692(0xd4)]);});_0x4569fc[_0x3eb98e]=threadFromRecords(_0x5739b4);}return _0x4569fc;}function updateFromRecord(_0x20488b,_0x331256,_0x8a6ad0){const _0x2db077=_0x5dcc2b;return{'memberId':_0x8a6ad0[_0x2db077(0xf8)],'userId':_0x8a6ad0[_0x2db077(0xbb)],'unitId':_0x331256[_0x2db077(0xc5)],'threadId':_0x331256[_0x2db077(0xc7)],'type':_0x20488b,'replyId':_0x331256[_0x2db077(0xd4)],'content':_0x331256['content'],'createTimestamp':String(_0x331256[_0x2db077(0xcf)])};}function validateTarget(_0x4b0c52){const _0xa014f2=_0x5dcc2b;validateUnitID(_0x4b0c52[_0xa014f2(0xc5)]),validateID('threadID',_0x4b0c52[_0xa014f2(0xc7)]),validateID(_0xa014f2(0xd4),_0x4b0c52['replyID']);}function validateUnitID(_0x191ab5){const _0x1f8491=_0x5dcc2b;validateID(_0x1f8491(0xc5),_0x191ab5);}function validateContent(_0x374f53){const _0xde1d3d=_0x5dcc2b;if(typeof _0x374f53!==_0xde1d3d(0xd5)||_0x374f53[_0xde1d3d(0x11c)]===0x0)throw invalidRequest('content\x20must\x20be\x20a\x20non-empty\x20string');}function validateID(_0x1b151a,_0x1483a1){const _0x16416f=_0x5dcc2b;if(typeof _0x1483a1!==_0x16416f(0xd5)||_0x1483a1[_0x16416f(0x11c)]===0x0)throw invalidRequest(_0x1b151a+'\x20must\x20be\x20a\x20non-empty\x20string');}function invalidRequest(_0x2f1950){const _0x23bbf0=_0x5dcc2b;return new collaboration_service_1[(_0x23bbf0(0xf6))](_0x23bbf0(0x113),_0x2f1950);}function notFound(_0xc2457c){const _0x15ac02=_0x5dcc2b;return new collaboration_service_1[(_0x15ac02(0xf6))](_0x15ac02(0xd9),_0xc2457c);}function denied(_0x2eeb00){const _0x157dbe=_0x5dcc2b;return new collaboration_service_1[(_0x157dbe(0xf6))]('PERMISSION_DENIED',_0x2eeb00);}
@@ -0,0 +1,88 @@
1
+ import type { CollabCallOptions, CollabSession, CustomData, Disposable } from "@univerjs-pro/collaboration-service";
2
+ import type { CommentSolvedStatus, ICommentUpdate, IReply, IThread, IUser } from "@univerjs/protocol";
3
+ export interface CommentCallOptions extends CollabCallOptions {
4
+ }
5
+ export interface AddCommentInput {
6
+ readonly unitID: string;
7
+ readonly content: string;
8
+ readonly mentions: readonly string[];
9
+ }
10
+ export interface ListCommentsInput {
11
+ readonly unitID: string;
12
+ readonly threadIDs: readonly string[];
13
+ }
14
+ export interface ReplyCommentInput {
15
+ readonly unitID: string;
16
+ readonly threadID: string;
17
+ readonly content: string;
18
+ readonly mentions: readonly string[];
19
+ }
20
+ export interface SetThreadSolvedInput {
21
+ readonly unitID: string;
22
+ readonly threadID: string;
23
+ readonly solved: CommentSolvedStatus;
24
+ }
25
+ export interface EditCommentInput {
26
+ readonly unitID: string;
27
+ readonly threadID: string;
28
+ readonly replyID: string;
29
+ readonly content: string;
30
+ readonly mentions: readonly string[];
31
+ }
32
+ export interface DeleteCommentInput {
33
+ readonly unitID: string;
34
+ readonly threadID: string;
35
+ readonly replyID?: string;
36
+ }
37
+ export interface AddCommentRequest extends AddCommentInput {
38
+ readonly customData: CustomData;
39
+ }
40
+ export interface ListCommentsRequest extends ListCommentsInput {
41
+ readonly customData: CustomData;
42
+ }
43
+ export interface ReplyCommentRequest extends ReplyCommentInput {
44
+ readonly customData: CustomData;
45
+ }
46
+ export interface SetThreadSolvedRequest extends SetThreadSolvedInput {
47
+ readonly customData: CustomData;
48
+ }
49
+ export interface EditCommentRequest extends EditCommentInput {
50
+ readonly customData: CustomData;
51
+ }
52
+ export interface DeleteCommentRequest extends DeleteCommentInput {
53
+ readonly customData: CustomData;
54
+ }
55
+ export type CommentRequest = AddCommentRequest | ListCommentsRequest | ReplyCommentRequest | SetThreadSolvedRequest | EditCommentRequest | DeleteCommentRequest;
56
+ export type CommentWriteRequest = Exclude<CommentRequest, ListCommentsRequest>;
57
+ export interface CommentListResult {
58
+ readonly comments: Readonly<Record<string, IThread>>;
59
+ readonly users: Readonly<Record<string, IUser>>;
60
+ }
61
+ export interface CommentUserProviderContext {
62
+ readonly session: CollabSession;
63
+ readonly request: CommentRequest;
64
+ }
65
+ export interface ICommentUserProvider {
66
+ getUsers(userIDs: readonly string[], context: CommentUserProviderContext): Promise<readonly IUser[]>;
67
+ }
68
+ export interface CommentCommittedEvent {
69
+ readonly session: CollabSession;
70
+ readonly request: CommentWriteRequest;
71
+ readonly update: ICommentUpdate;
72
+ readonly committedAt: number;
73
+ }
74
+ export interface CommentServiceEventMap {
75
+ readonly commentCommitted: CommentCommittedEvent;
76
+ }
77
+ export type CommentServiceListener<K extends keyof CommentServiceEventMap> = (event: CommentServiceEventMap[K]) => void | Promise<void>;
78
+ export interface IUniverCommentService {
79
+ addComment(input: AddCommentInput, options: CommentCallOptions): Promise<IThread>;
80
+ listComments(input: ListCommentsInput, options: CommentCallOptions): Promise<CommentListResult>;
81
+ replyComment(input: ReplyCommentInput, options: CommentCallOptions): Promise<IReply>;
82
+ setThreadSolved(input: SetThreadSolvedInput, options: CommentCallOptions): Promise<void>;
83
+ editComment(input: EditCommentInput, options: CommentCallOptions): Promise<void>;
84
+ deleteComment(input: DeleteCommentInput, options: CommentCallOptions): Promise<void>;
85
+ use<K extends import("./middleware.js").CommentMiddlewareAction>(action: K, middleware: import("./middleware.js").CommentMiddlewareMap[K]): Disposable;
86
+ on<K extends keyof CommentServiceEventMap>(event: K, listener: CommentServiceListener<K>): Disposable;
87
+ dispose(): Promise<void>;
88
+ }
package/dist/types.js ADDED
@@ -0,0 +1 @@
1
+ 'use strict';var _0x4570c2=_0x2b1f;function _0x2b1f(_0x9323fd,_0x547ab9){_0x9323fd=_0x9323fd-0x18d;var _0x1e3002=_0x1e30();var _0x2b1ff2=_0x1e3002[_0x9323fd];return _0x2b1ff2;}(function(_0x13c6ff,_0x54b131){var _0x3e8cdf=_0x2b1f,_0x2b95ab=_0x13c6ff();while(!![]){try{var _0xfc4828=-parseInt(_0x3e8cdf(0x18d))/0x1*(parseInt(_0x3e8cdf(0x195))/0x2)+-parseInt(_0x3e8cdf(0x190))/0x3+-parseInt(_0x3e8cdf(0x197))/0x4+-parseInt(_0x3e8cdf(0x193))/0x5*(parseInt(_0x3e8cdf(0x18e))/0x6)+-parseInt(_0x3e8cdf(0x18f))/0x7+-parseInt(_0x3e8cdf(0x194))/0x8+-parseInt(_0x3e8cdf(0x191))/0x9*(-parseInt(_0x3e8cdf(0x196))/0xa);if(_0xfc4828===_0x54b131)break;else _0x2b95ab['push'](_0x2b95ab['shift']());}catch(_0x527c8a){_0x2b95ab['push'](_0x2b95ab['shift']());}}}(_0x1e30,0x76a6d));function _0x1e30(){var _0xbbca45=['9cRlmWY','defineProperty','95vkJnaF','2344176bDzODv','190HTSsmf','22105730xOyztX','1114832rtuXvV','__esModule','3187KQVvZk','4548kuBfRG','5408998mpoygZ','188895BIMQwK'];_0x1e30=function(){return _0xbbca45;};return _0x1e30();}Object[_0x4570c2(0x192)](exports,_0x4570c2(0x198),{'value':!![]});
package/package.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "@univerjs-pro/collaboration-comment-service",
3
+ "type": "commonjs",
4
+ "main": "./dist/index.js",
5
+ "types": "./dist/index.d.ts",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./dist/index.d.ts",
9
+ "import": "./dist/index.js",
10
+ "require": "./dist/index.js"
11
+ }
12
+ },
13
+ "files": [
14
+ "dist"
15
+ ],
16
+ "version": "1.0.0-insiders.20260727-46ed76c",
17
+ "dependencies": {
18
+ "@univerjs-pro/collaboration-service": "1.0.0-insiders.20260727-46ed76c",
19
+ "@univerjs/protocol": "1.0.0-insiders.20260727-46ed76c"
20
+ },
21
+ "publishConfig": {
22
+ "access": "public"
23
+ }
24
+ }