@univerjs-pro/collaboration-comment-endpoint 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.
- package/dist/endpoint.d.ts +24 -0
- package/dist/endpoint.js +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/package.json +27 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { IUniverCommentService } from "@univerjs-pro/collaboration-comment-service";
|
|
2
|
+
import type { ITrustedUnitRoomHost } from "@univerjs-pro/collaboration-endpoint";
|
|
3
|
+
import { type NodeTransportContext, type NodeTransportMiddlewareObject, type NodeTransportNext } from "@univerjs-pro/collaboration-transport-node";
|
|
4
|
+
export interface UniverCommentEndpointOptions {
|
|
5
|
+
readonly service: IUniverCommentService;
|
|
6
|
+
readonly roomHost: ITrustedUnitRoomHost;
|
|
7
|
+
readonly protocolBasePath?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class UniverCommentEndpoint implements NodeTransportMiddlewareObject {
|
|
10
|
+
private readonly _service;
|
|
11
|
+
private readonly _roomHost;
|
|
12
|
+
private readonly _protocolBasePath;
|
|
13
|
+
private readonly _subscription;
|
|
14
|
+
private readonly _calls;
|
|
15
|
+
private _disposed;
|
|
16
|
+
private _disposePromise;
|
|
17
|
+
constructor(options: UniverCommentEndpointOptions);
|
|
18
|
+
handle(context: NodeTransportContext, next: NodeTransportNext): Promise<void>;
|
|
19
|
+
dispose(): Promise<void>;
|
|
20
|
+
private _track;
|
|
21
|
+
private _handleHttp;
|
|
22
|
+
private _resolveWriteSession;
|
|
23
|
+
private _publish;
|
|
24
|
+
}
|
package/dist/endpoint.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';function _0x5b17(_0x419b61,_0xc5fc95){_0x419b61=_0x419b61-0xdd;const _0x3b0181=_0x3b01();let _0x5b1717=_0x3b0181[_0x419b61];return _0x5b1717;}const _0x2500cd=_0x5b17;(function(_0x2e33ae,_0x3075e9){const _0x46db03=_0x5b17,_0x2b19c2=_0x2e33ae();while(!![]){try{const _0x48a65b=parseInt(_0x46db03(0x142))/0x1+-parseInt(_0x46db03(0x13e))/0x2+-parseInt(_0x46db03(0xea))/0x3*(-parseInt(_0x46db03(0x10c))/0x4)+parseInt(_0x46db03(0x13a))/0x5*(-parseInt(_0x46db03(0xe8))/0x6)+-parseInt(_0x46db03(0x111))/0x7+-parseInt(_0x46db03(0xe7))/0x8*(-parseInt(_0x46db03(0x123))/0x9)+parseInt(_0x46db03(0xde))/0xa*(parseInt(_0x46db03(0x109))/0xb);if(_0x48a65b===_0x3075e9)break;else _0x2b19c2['push'](_0x2b19c2['shift']());}catch(_0x1e2732){_0x2b19c2['push'](_0x2b19c2['shift']());}}}(_0x3b01,0x556e5));Object[_0x2500cd(0x11e)](exports,'__esModule',{'value':!![]}),exports[_0x2500cd(0x107)]=void 0x0;const node_crypto_1=require('node:crypto'),collaboration_service_1=require('@univerjs-pro/collaboration-service'),collaboration_transport_node_1=require('@univerjs-pro/collaboration-transport-node'),protocol_1=require('@univerjs/protocol'),OK_ERROR={'code':protocol_1[_0x2500cd(0x100)]['OK'],'message':''};class UniverCommentEndpoint{[_0x2500cd(0x147)];[_0x2500cd(0x134)];[_0x2500cd(0x11c)];[_0x2500cd(0x133)];['_calls']=new Set();[_0x2500cd(0x139)]=![];['_disposePromise'];constructor(_0x86ca87){const _0x454fa3=_0x2500cd;if(!_0x86ca87?.[_0x454fa3(0xf0)])throw new TypeError(_0x454fa3(0xec));if(!_0x86ca87?.[_0x454fa3(0x11f)])throw new TypeError('UniverCommentEndpoint\x20requires\x20a\x20roomHost');this[_0x454fa3(0x147)]=_0x86ca87[_0x454fa3(0xf0)],this[_0x454fa3(0x134)]=_0x86ca87[_0x454fa3(0x11f)],this[_0x454fa3(0x11c)]=normalizeBasePath(_0x86ca87['protocolBasePath']??_0x454fa3(0x14e)),this['_subscription']=this[_0x454fa3(0x147)]['on'](_0x454fa3(0x108),_0x684829=>this[_0x454fa3(0x12a)](this['_publish'](_0x684829)));}['handle'](_0x2ea899,_0x32e926){const _0x23c397=_0x2500cd;if(this['_disposed']||_0x2ea899[_0x23c397(0xdd)]!==_0x23c397(0x150))return _0x32e926();return this[_0x23c397(0x12a)](this[_0x23c397(0x11a)](_0x2ea899,_0x32e926));}['dispose'](){const _0x20d701=_0x2500cd;if(this[_0x20d701(0xe4)])return this['_disposePromise'];return this['_disposed']=!![],this[_0x20d701(0x133)][_0x20d701(0xe0)](),this[_0x20d701(0xe4)]=Promise[_0x20d701(0x12e)]([...this[_0x20d701(0x126)]])[_0x20d701(0xf4)](()=>undefined),this[_0x20d701(0xe4)];}[_0x2500cd(0x12a)](_0x504e41){const _0x311d4a=_0x2500cd;return this[_0x311d4a(0x126)][_0x311d4a(0xdf)](_0x504e41),void _0x504e41[_0x311d4a(0xfc)](()=>this['_calls']['delete'](_0x504e41))[_0x311d4a(0x14d)](()=>undefined),_0x504e41;}async[_0x2500cd(0x11a)](_0x276bb6,_0x578337){const _0x521d12=_0x2500cd;let _0x3ce292,_0x108741;try{_0x108741=new URL(_0x276bb6[_0x521d12(0x112)][_0x521d12(0x12c)]??'/',_0x521d12(0x124)),_0x3ce292=matchRoute(_0x276bb6[_0x521d12(0x112)][_0x521d12(0x102)],_0x108741[_0x521d12(0x129)],this[_0x521d12(0x11c)]);}catch(_0xc39e92){writeFailure(_0x276bb6['response'],_0xc39e92,_0x521d12(0x141));return;}if(!_0x3ce292)return _0x578337();try{if(!_0x276bb6[_0x521d12(0x116)])throw new collaboration_service_1[(_0x521d12(0x12b))]('UNAUTHENTICATED',_0x521d12(0x145));if(_0x3ce292['action']===_0x521d12(0x121)){const _0x3610ab=_0x276bb6['incomingMessage'][_0x521d12(0x102)]===_0x521d12(0xe6)?{'unitId':_0x3ce292[_0x521d12(0x117)],'threadId':_0x108741[_0x521d12(0x131)][_0x521d12(0x143)]('threadId')}:await _0x276bb6[_0x521d12(0x146)](),_0x2d0fc6=listRequest(_0x3610ab,_0x3ce292[_0x521d12(0x117)]),_0x25dfe7=await this[_0x521d12(0x147)][_0x521d12(0x10b)]({'unitID':_0x3ce292['unitID'],'threadIDs':_0x2d0fc6[_0x521d12(0xfb)]},{'session':httpSession(_0x276bb6[_0x521d12(0x116)]),'customData':_0x276bb6[_0x521d12(0x149)]});writeJson(_0x276bb6[_0x521d12(0xf7)],0xc8,{'error':OK_ERROR,..._0x25dfe7});return;}const _0x48e71f=objectBody(await _0x276bb6['readJson']()),_0x22ee2a=requiredString(_0x48e71f[_0x521d12(0x125)],_0x521d12(0x125));if(_0x22ee2a!==_0x3ce292[_0x521d12(0x117)])throw invalid(_0x521d12(0xeb));const _0x295bbe=requiredString(_0x48e71f['memberId'],'memberId'),_0x4cb59f=this[_0x521d12(0x104)](_0x3ce292[_0x521d12(0x13c)],_0x3ce292[_0x521d12(0x117)],_0x295bbe,_0x276bb6[_0x521d12(0x116)]),_0x4d120c={'session':_0x4cb59f,'customData':_0x276bb6[_0x521d12(0x149)]};switch(_0x3ce292[_0x521d12(0x13c)]){case _0x521d12(0xdf):{const _0x4b1ba0=await this[_0x521d12(0x147)][_0x521d12(0x11d)]({'unitID':_0x3ce292['unitID'],'content':requiredString(_0x48e71f['content'],_0x521d12(0x118)),'mentions':stringArray(_0x48e71f[_0x521d12(0x135)],_0x521d12(0x135))},_0x4d120c);writeJson(_0x276bb6['response'],0xc8,{'error':OK_ERROR,'comment':_0x4b1ba0});return;}case _0x521d12(0xf2):{const _0x48fb1b=await this[_0x521d12(0x147)][_0x521d12(0x10d)]({'unitID':_0x3ce292[_0x521d12(0x117)],'threadID':requiredString(_0x48e71f[_0x521d12(0xfb)],_0x521d12(0xfb)),'content':requiredString(_0x48e71f['content'],_0x521d12(0x118)),'mentions':stringArray(_0x48e71f[_0x521d12(0x135)],'mention')},_0x4d120c);writeJson(_0x276bb6[_0x521d12(0xf7)],0xc8,{'error':OK_ERROR,'reply':_0x48fb1b});return;}case _0x521d12(0xed):{const _0x289b07=solvedStatus(_0x48e71f['solved']);await this[_0x521d12(0x147)][_0x521d12(0xef)]({'unitID':_0x3ce292[_0x521d12(0x117)],'threadID':requiredString(_0x48e71f['threadId'],_0x521d12(0xfb)),'solved':_0x289b07},_0x4d120c),writeJson(_0x276bb6[_0x521d12(0xf7)],0xc8,{'error':OK_ERROR});return;}case _0x521d12(0xfd):{await this[_0x521d12(0x147)][_0x521d12(0x103)]({'unitID':_0x3ce292['unitID'],'threadID':requiredString(_0x48e71f[_0x521d12(0xfb)],'threadId'),'replyID':requiredString(_0x48e71f['replyId'],_0x521d12(0xee)),'content':requiredString(_0x48e71f['content'],'content'),'mentions':stringArray(_0x48e71f['mention'],_0x521d12(0x135))},_0x4d120c),writeJson(_0x276bb6['response'],0xc8,{'error':OK_ERROR});return;}case _0x521d12(0xe3):{await this[_0x521d12(0x147)][_0x521d12(0x14b)]({'unitID':_0x3ce292['unitID'],'threadID':requiredString(_0x48e71f['threadId'],'threadId'),...optionalString(_0x48e71f[_0x521d12(0xee)],_0x521d12(0xee))},_0x4d120c),writeJson(_0x276bb6[_0x521d12(0xf7)],0xc8,{'error':OK_ERROR});return;}}}catch(_0x9de0e4){writeFailure(_0x276bb6[_0x521d12(0xf7)],_0x9de0e4,_0x3ce292[_0x521d12(0x13c)]);}}[_0x2500cd(0x104)](_0xf8d9c7,_0x4c336b,_0x584cac,_0x340ea8){const _0x4a6586=_0x2500cd,_0x19e9a4=this[_0x4a6586(0x134)][_0x4a6586(0xf1)]({'unitID':_0x4c336b,'memberID':_0x584cac,'authenticatedUserID':_0x340ea8});if(_0x19e9a4)return _0x19e9a4;if(_0xf8d9c7==='solved'&&_0x584cac===_0x340ea8){const _0x52bc2a=this[_0x4a6586(0x134)][_0x4a6586(0x127)]({'unitID':_0x4c336b,'authenticatedUserID':_0x340ea8});if(_0x52bc2a)return _0x52bc2a;}throw new collaboration_service_1[(_0x4a6586(0x12b))]('PERMISSION_DENIED',_0x4a6586(0x13d));}async[_0x2500cd(0x13f)](_0x345d32){const _0x17fbff=_0x2500cd;try{await this[_0x17fbff(0x134)]['publishTrustedUnitEvent']({'unitID':_0x345d32['update'][_0x17fbff(0x125)],'origin':_0x345d32[_0x17fbff(0x105)],'eventID':'comment_update','data':{'commentUpdateEvent':_0x345d32[_0x17fbff(0x101)]}});}catch{}}}function _0x3b01(){const _0x451d4b=['unknown','102613dtHLoj','getAll','some','HTTP\x20user\x20is\x20not\x20authenticated','readJson','_service','NOT_FOUND','customData','UNIT_NOT_FOUND','deleteComment','status','catch','/universer-api','NodeTransportError','http','kind','10FwpMqy','add','dispose','error','Invalid\x20route\x20unitId','delete','_disposePromise','content-type','GET','8WfERXA','744RgXkRg','REQUEST_ABORTED','383391MLbUvs','Route\x20and\x20body\x20unitId\x20must\x20match','UniverCommentEndpoint\x20requires\x20a\x20service','solved','replyId','setThreadSolved','service','findJoinedSession','reply','endsWith','then','solved\x20must\x20be\x20OpenOrReOpen\x20or\x20Solved','/comment/unit/','response','length','randomUUID','INTERNAL_ERROR','threadId','finally','edit','\x20must\x20be\x20a\x20non-empty\x20string','code','ErrorCode','update','method','editComment','_resolveWriteSession','session','ADAPTER_FAILURE','UniverCommentEndpoint','commentCommitted','1206667eBkaGh','INVALID_REQUEST','listComments','16HZyOjp','replyComment','protocolBasePath\x20must\x20be\x20an\x20absolute\x20path\x20without\x20a\x20trailing\x20slash','REQUEST_BODY_TOO_LARGE','\x20must\x20be\x20an\x20array\x20of\x20non-empty\x20strings','651588PTgvmS','incomingMessage','split','PERMISSION_DENIED','CommentSolvedStatus','userId','unitID','content','object','_handleHttp','Internal\x20error','_protocolBasePath','addComment','defineProperty','roomHost','create','list','POST','4901517eBNExR','http://localhost','unitId','_calls','findJoinedSessionByUser','INVALID_ARGUMENT','pathname','_track','CollabError','url','OpenOrReOpen','allSettled','Solved','end','searchParams','stringify','_subscription','_roomHost','mention','isArray','setHeader','http-','_disposed','26530fIMdCk','startsWith','action','Comment\x20member\x20is\x20not\x20an\x20authenticated\x20joined\x20Session','334316AxEXgi','_publish','message'];_0x3b01=function(){return _0x451d4b;};return _0x3b01();}exports[_0x2500cd(0x107)]=UniverCommentEndpoint;function matchRoute(_0x1a6bb5,_0x4e0ccd,_0x2dae4e){const _0x2a0c1c=_0x2500cd,_0x5064e9=_0x2dae4e+_0x2a0c1c(0xf6);if(!_0x4e0ccd[_0x2a0c1c(0x13b)](_0x5064e9))return null;const _0x234c61=_0x4e0ccd['slice'](_0x5064e9[_0x2a0c1c(0xf8)]),_0x3e2611=_0x234c61[_0x2a0c1c(0x113)]('/');if(_0x3e2611[_0x2a0c1c(0xf8)]!==0x2||!_0x3e2611[0x0]||!_0x3e2611[0x1])return null;const _0x3e854a=_0x3e2611[0x1];if(![_0x2a0c1c(0xdf),_0x2a0c1c(0x121),'reply','solved',_0x2a0c1c(0xfd),_0x2a0c1c(0xe3)]['includes'](_0x3e854a))return null;if(_0x3e854a==='list'&&_0x1a6bb5!==_0x2a0c1c(0xe6)&&_0x1a6bb5!==_0x2a0c1c(0x122)||_0x3e854a!=='list'&&_0x1a6bb5!=='POST')return null;let _0x192344;try{_0x192344=decodeURIComponent(_0x3e2611[0x0]);}catch{throw invalid('Route\x20contains\x20invalid\x20encoding');}if(!_0x192344||_0x192344['includes']('/'))throw invalid(_0x2a0c1c(0xe2));return{'action':_0x3e854a,'unitID':_0x192344};}function listRequest(_0x402f68,_0xcfa869){const _0x453e3f=_0x2500cd,_0x7b8285=objectBody(_0x402f68),_0x46ef17=requiredString(_0x7b8285[_0x453e3f(0x125)],_0x453e3f(0x125));if(_0x46ef17!==_0xcfa869)throw invalid(_0x453e3f(0xeb));return{'unitId':_0x46ef17,'threadId':stringArray(_0x7b8285[_0x453e3f(0xfb)],_0x453e3f(0xfb))};}function objectBody(_0x350160){const _0x4e5445=_0x2500cd;if(!_0x350160||typeof _0x350160!==_0x4e5445(0x119)||Array[_0x4e5445(0x136)](_0x350160))throw invalid('Request\x20body\x20must\x20be\x20an\x20object');return _0x350160;}function requiredString(_0x9fac89,_0x4395e2){const _0x472af8=_0x2500cd;if(typeof _0x9fac89!=='string'||_0x9fac89[_0x472af8(0xf8)]===0x0)throw invalid(_0x4395e2+_0x472af8(0xfe));return _0x9fac89;}function optionalString(_0xfdf5c2,_0x129d86){if(_0xfdf5c2===undefined||_0xfdf5c2===null||_0xfdf5c2==='')return{};return{'replyID':requiredString(_0xfdf5c2,_0x129d86)};}function stringArray(_0x32d44e,_0x555d4c){const _0x4803d6=_0x2500cd;if(!Array[_0x4803d6(0x136)](_0x32d44e)||_0x32d44e[_0x4803d6(0x144)](_0x229d84=>typeof _0x229d84!=='string'||_0x229d84[_0x4803d6(0xf8)]===0x0))throw invalid(_0x555d4c+_0x4803d6(0x110));return[..._0x32d44e];}function solvedStatus(_0x541f52){const _0x3f3e46=_0x2500cd;if(_0x541f52!==protocol_1[_0x3f3e46(0x115)][_0x3f3e46(0x12d)]&&_0x541f52!==protocol_1[_0x3f3e46(0x115)][_0x3f3e46(0x12f)])throw invalid(_0x3f3e46(0xf5));return _0x541f52;}function httpSession(_0x29d108){const _0x5ad399=_0x2500cd;return{'memberId':_0x5ad399(0x138)+(0x0,node_crypto_1[_0x5ad399(0xf9)])(),'userId':_0x29d108,'customData':Object[_0x5ad399(0x120)](null)};}function invalid(_0x1b0755){const _0x360a1c=_0x2500cd;return new collaboration_service_1[(_0x360a1c(0x12b))]('INVALID_REQUEST',_0x1b0755);}function normalizeBasePath(_0x2bf2ad){const _0x5d49c3=_0x2500cd;if(!_0x2bf2ad[_0x5d49c3(0x13b)]('/')||_0x2bf2ad==='/'||_0x2bf2ad[_0x5d49c3(0xf3)]('/')||_0x2bf2ad['includes']('//'))throw new TypeError(_0x5d49c3(0x10e));return _0x2bf2ad;}function writeFailure(_0x294db9,_0x16caed,_0x2b0f9e){const _0x130113=_0x2500cd,_0x5b2ba1=protocolFailure(_0x16caed),_0x45e64f=_0x2b0f9e==='list'?{'comments':{},'users':{}}:_0x2b0f9e===_0x130113(0xdf)?{'comment':undefined}:_0x2b0f9e===_0x130113(0xf2)?{'reply':undefined}:{};writeJson(_0x294db9,_0x5b2ba1[_0x130113(0x14c)],{'error':_0x5b2ba1[_0x130113(0xe1)],..._0x45e64f});}function protocolFailure(_0x108773){const _0x2eeaa4=_0x2500cd;if(_0x108773 instanceof collaboration_transport_node_1[_0x2eeaa4(0x14f)]){if(_0x108773[_0x2eeaa4(0xff)]===_0x2eeaa4(0x10f))return{'status':0x19d,'error':{'code':protocol_1[_0x2eeaa4(0x100)][_0x2eeaa4(0x128)],'message':_0x108773[_0x2eeaa4(0x140)]}};if(_0x108773['code']==='INVALID_JSON'||_0x108773[_0x2eeaa4(0xff)]===_0x2eeaa4(0xe9))return{'status':0x190,'error':{'code':protocol_1['ErrorCode']['INVALID_ARGUMENT'],'message':_0x108773[_0x2eeaa4(0x140)]}};return{'status':0x1f7,'error':{'code':protocol_1[_0x2eeaa4(0x100)][_0x2eeaa4(0xfa)],'message':_0x108773['message']}};}if(!(_0x108773 instanceof collaboration_service_1['CollabError']))return{'status':0x1f4,'error':{'code':protocol_1[_0x2eeaa4(0x100)][_0x2eeaa4(0xfa)],'message':_0x2eeaa4(0x11b)}};const [_0x3ac6cd,_0xc0dd5e]=((()=>{const _0x50fc0b=_0x2eeaa4;switch(_0x108773['code']){case _0x50fc0b(0x10a):return[0x190,protocol_1['ErrorCode'][_0x50fc0b(0x128)]];case'UNAUTHENTICATED':return[0x191,protocol_1[_0x50fc0b(0x100)]['UNAUTHENTICATED']];case'PERMISSION_DENIED':return[0x193,protocol_1[_0x50fc0b(0x100)][_0x50fc0b(0x114)]];case _0x50fc0b(0x14a):return[0x194,protocol_1[_0x50fc0b(0x100)][_0x50fc0b(0x148)]];case _0x50fc0b(0x106):return[0x1f7,protocol_1[_0x50fc0b(0x100)][_0x50fc0b(0xfa)]];default:return[0x1f4,protocol_1[_0x50fc0b(0x100)][_0x50fc0b(0xfa)]];}})());return{'status':_0x3ac6cd,'error':{'code':_0xc0dd5e,'message':_0x108773['message']}};}function writeJson(_0xde17f5,_0x51b26d,_0x36327e){const _0x50295e=_0x2500cd;if(_0xde17f5['writableEnded'])return;_0xde17f5['statusCode']=_0x51b26d,_0xde17f5[_0x50295e(0x137)](_0x50295e(0xe5),'application/json;\x20charset=utf-8'),_0xde17f5[_0x50295e(0x130)](JSON[_0x50295e(0x132)](_0x36327e));}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['UniverCommentEndpoint']=void 0x0;var endpoint_js_1=require('./endpoint.js');Object['defineProperty'](exports,'UniverCommentEndpoint',{'enumerable':!![],'get':function(){return endpoint_js_1['UniverCommentEndpoint'];}});
|
package/package.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@univerjs-pro/collaboration-comment-endpoint",
|
|
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-comment-service": "1.0.0-insiders.20260727-46ed76c",
|
|
19
|
+
"@univerjs-pro/collaboration-endpoint": "1.0.0-insiders.20260727-46ed76c",
|
|
20
|
+
"@univerjs-pro/collaboration-service": "1.0.0-insiders.20260727-46ed76c",
|
|
21
|
+
"@univerjs-pro/collaboration-transport-node": "1.0.0-insiders.20260727-46ed76c",
|
|
22
|
+
"@univerjs/protocol": "1.0.0-insiders.20260727-46ed76c"
|
|
23
|
+
},
|
|
24
|
+
"publishConfig": {
|
|
25
|
+
"access": "public"
|
|
26
|
+
}
|
|
27
|
+
}
|