strapi-plugin-comments 3.0.7-beta.1 → 3.0.7
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/README.md +1 -1
- package/dist/_chunks/index-Bpnqk6JP.js +1 -0
- package/dist/_chunks/{index-D9B514y5.mjs → index-CF4vndXw.mjs} +3117 -3125
- package/dist/_chunks/{index-CTrpEEVW.js → index-CFIjHfkZ.js} +95 -95
- package/dist/_chunks/index-CHDv123w.js +44 -0
- package/dist/_chunks/{index-wsRcN626.mjs → index-CwHmRIcs.mjs} +91 -92
- package/dist/_chunks/{index-CVaM8WKt.mjs → index-DGKkpdmq.mjs} +1639 -1650
- package/dist/_chunks/{index-DbSxM8lO.js → index-YPqaQ-iX.js} +35 -35
- package/dist/_chunks/{index-BpDl_L4E.mjs → index-pLgOJz-6.mjs} +2097 -2094
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/server/index.js +5 -5
- package/dist/server/index.mjs +305 -310
- package/dist/server/src/controllers/index.d.ts +105 -0
- package/dist/server/src/index.d.ts +420 -0
- package/dist/server/src/services/admin/admin.service.d.ts +105 -0
- package/dist/server/src/services/client.service.d.ts +105 -0
- package/dist/server/src/services/index.d.ts +315 -0
- package/dist/server/src/validators/api/controllers/client.controller.validator.d.ts +105 -0
- package/package.json +8 -8
- package/dist/_chunks/index-BgJ65O-2.js +0 -44
- package/dist/_chunks/index-CYrQYscU.js +0 -1
package/dist/admin/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const e=require("../_chunks/index-
|
|
1
|
+
"use strict";const e=require("../_chunks/index-CFIjHfkZ.js");require("react");module.exports=e.index;
|
package/dist/admin/index.mjs
CHANGED
package/dist/server/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";const v=require("zod"),Cm=require("no-profanity");require("fs");require("path");const gm={uid:/^(?<type>[a-z0-9-]+)\:{2}(?<api>[a-z0-9-]+)\.{1}(?<contentType>[a-z0-9-]+)$/i,relatedUid:/^(?<uid>[a-z0-9-]+\:{2}[a-z0-9-]+\.[a-z0-9-]+)\:{1}(?<id>[a-z0-9-]+)$/i,email:/\S+@\S+\.\S+/,sorting:/^(?<path>[a-z0-9-_\:\.]+)\:+(asc|desc)$/i},oa={ENABLED_COLLECTIONS:"enabledCollections",APPROVAL_FLOW:"approvalFlow",
|
|
1
|
+
"use strict";const v=require("zod"),Cm=require("no-profanity");require("fs");require("path");const gm={uid:/^(?<type>[a-z0-9-]+)\:{2}(?<api>[a-z0-9-]+)\.{1}(?<contentType>[a-z0-9-]+)$/i,relatedUid:/^(?<uid>[a-z0-9-]+\:{2}[a-z0-9-]+\.[a-z0-9-]+)\:{1}(?<id>[a-z0-9-]+)$/i,email:/\S+@\S+\.\S+/,sorting:/^(?<path>[a-z0-9-_\:\.]+)\:+(asc|desc)$/i},oa={ENABLED_COLLECTIONS:"enabledCollections",APPROVAL_FLOW:"approvalFlow",MODERATOR_ROLES:"moderatorRoles",AUTHOR_BLOCKED_PROPS:"blockedAuthorProps"};var Io=(i=>(i.PENDING="PENDING",i.APPROVED="APPROVED",i.REJECTED="REJECTED",i))(Io||{}),Xt=(i=>(i.BAD_LANGUAGE="BAD_LANGUAGE",i.DISCRIMINATION="DISCRIMINATION",i.OTHER="OTHER",i))(Xt||{});const Ev="plugin::comments",Ov={collectionName:"plugin_comments_comments",info:{tableName:"plugin-comments-comments",singularName:"comment",pluralName:"comments",displayName:"Comment",description:"Comment content type",kind:"collectionType"},options:{draftAndPublish:!1},pluginOptions:{"content-manager":{visible:!1},"content-type-builder":{visible:!1}},attributes:{content:{type:"text",configurable:!1,required:!0},blocked:{type:"boolean",default:!1,configurable:!1},blockedThread:{type:"boolean",default:!1,configurable:!1},blockReason:{type:"string",configurable:!1},authorUser:{type:"relation",relation:"oneToOne",target:"plugin::users-permissions.user",configurable:!1},authorId:{type:"string",configurable:!1},authorName:{type:"string",configurable:!1},authorEmail:{type:"email",configurable:!1},authorAvatar:{type:"string",configurable:!1},isAdminComment:{type:"boolean",configurable:!1},removed:{type:"boolean",configurable:!1},approvalStatus:{type:"enumeration",enum:Object.values(Io),configurable:!1},related:{type:"string",configurable:!1},reports:{type:"relation",relation:"oneToMany",target:"plugin::comments.comment-report",mappedBy:"related",configurable:!1},threadOf:{type:"relation",relation:"oneToOne",target:"plugin::comments.comment",configurable:!1}}},Tv={schema:Ov},Iv={collectionName:"plugin_comments_reports",info:{tableName:"plugin-comments-reports",singularName:"comment-report",pluralName:"comment-reports",displayName:"Reports",description:"Reports content type",kind:"collectionType"},options:{draftAndPublish:!1},pluginOptions:{"content-manager":{visible:!1},"content-type-builder":{visible:!1}},attributes:{content:{type:"text",configurable:!1},reason:{type:"enumeration",enum:Object.values(Xt),default:Xt.OTHER,configurable:!1,required:!0},resolved:{type:"boolean",default:!1,configurable:!1},related:{type:"relation",relation:"manyToOne",target:"plugin::comments.comment",inversedBy:"reports",configurable:!1}}},Cv={schema:Iv},xv={comment:Tv,"comment-report":Cv},Rv={name:"comments",plugin:"comments",type:"json"},Nv=({strapi:i})=>{if(!Lv({strapi:i})){i.log.warn("[Comments Plugin] Custom fields disabled. Upgrade Strapi to use custom fields.");return}i.customFields.register(Rv)},Lv=({strapi:i})=>!!i.customFields,zv=i=>{Nv(i)},sr=(i,u)=>i.plugin("comments").contentType(u)?.uid,rl=i=>{const u="plugin::users-permissions.user",o=["media","relation"],{attributes:h}=i.contentType(u)??{attributes:{}};return(Object.keys(h)?.filter(A=>o.includes(h[A]?.type))).includes("avatar")?{populate:{avatar:!0}}:!0};function mm(i){return typeof i=="string"?i.split(":"):"createdAt:desc".split(":")}const ft=(i,u)=>i.plugin("comments").service(u),Pv=i=>{const{gql:{auth:u=!1}={}}=i;return{"Query.findAllFlat":{auth:u},"Query.findAllInHierarchy":{auth:u},"Mutation.createComment":{auth:u},"Mutation.updateComment":{auth:u},"Mutation.removeComment":{auth:u},"Mutation.createAbuseReport":{auth:u}}},Dv=(i,u)=>{const{nonNull:o}=u;return{type:o("Report"),args:{input:o("CreateReport")},async resolve(h,m,A){const{input:E}=m,{state:{user:T=void 0}={}}=A,{commentId:R,relation:z,...I}=E;try{return await ft(i,"client").reportAbuse({...I,commentId:R,relation:z},T)}catch(F){throw F}}}},Fv=(i,u)=>{const{nonNull:o}=u;return{type:o("CommentSingle"),args:{input:o("CreateComment")},async resolve(h,m,A){const{input:E}=m,{state:{user:T=void 0}={}}=A,{relation:R,...z}=E;try{return await ft(i,"client").create({...z,relation:R},T)}catch(I){throw I}}}},Uv=(i,u)=>{const{nonNull:o}=u;return{type:o("CommentSingle"),args:{input:o("RemoveComment")},async resolve(h,m,A){const{input:E}=m,{state:{user:T=void 0}={}}=A,{id:R,relation:z,author:I}=E;try{return await ft(i,"client").markAsRemoved({commentId:R,relation:z,authorId:I?.id},T)}catch(F){throw F}}}},Mv=(i,u)=>{const{nonNull:o}=u;return{type:o("CommentSingle"),args:{input:o("UpdateComment")},async resolve(h,m,A){const{input:E}=m,{state:{user:T=void 0}={}}=A,{id:R,relation:z,...I}=E;try{return await ft(i,"client").update({...I,relation:z,commentId:R},T)}catch(F){throw F}}}},Wv=(i,u)=>{const o={getCreateComment:Fv,getUpdateComment:Mv,getRemoveComment:Uv,getCreateAbuseReport:Dv};return u.extendType({type:"Mutation",definition(h){for(const[m,A]of Object.entries(o)){const E=A(i,u);h.field(m,E)}}})};var xr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Cf={exports:{}};/**
|
|
2
2
|
* @license
|
|
3
3
|
* Lodash <https://lodash.com/>
|
|
4
4
|
* Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
|
|
@@ -24,7 +24,7 @@ __p += '`),$&&(S+=`' +
|
|
|
24
24
|
function print() { __p += __j.call(arguments, '') }
|
|
25
25
|
`:`;
|
|
26
26
|
`)+S+`return __p
|
|
27
|
-
}`;var M=Gs(function(){return D(s,x+"return "+S).apply(o,c)});if(M.source=S,Ds(M))throw M;return M}function Vs(e){return he(e).toLowerCase()}function mf(e){return he(e).toUpperCase()}function Lg(e,t,n){if(e=he(e),e&&(n||t===o))return Nl(e);if(!e||!(t=qt(t)))return e;var r=Zt(e),a=Zt(t),s=Ll(r,a),c=zl(r,a)+1;return Or(r,s,c).join("")}function zg(e,t,n){if(e=he(e),e&&(n||t===o))return e.slice(0,Fa(e)+1);if(!e||!(t=qt(t)))return e;var r=Zt(e),a=zl(r,Zt(t))+1;return Or(r,0,a).join("")}function Pg(e,t,n){if(e=he(e),e&&(n||t===o))return e.replace(ni,"");if(!e||!(t=qt(t)))return e;var r=Zt(e),a=Ll(r,Zt(t));return Or(r,a).join("")}function Yr(e,t){var n=Qe,r=wn;if(Ue(t)){var a="separator"in t?t.separator:a;n="length"in t?H(t.length):n,r="omission"in t?qt(t.omission):r}e=he(e);var s=e.length;if(ci(e)){var c=Zt(e);s=c.length}if(n>=s)return e;var f=n-Dr(r);if(f<1)return r;var g=c?Or(c,0,f).join(""):e.slice(0,f);if(a===o)return g+r;if(c&&(f+=g.length-f),ir(a)){if(e.slice(f).search(a)){var w,b=g;for(a.global||(a=Ua(a.source,he(ii.exec(a))+"g")),a.lastIndex=0;w=a.exec(b);)var S=w.index;g=g.slice(0,S===o?f:S)}}else if(e.indexOf(qt(a),f)!=f){var O=g.lastIndexOf(a);O>-1&&(g=g.slice(0,O))}return g+r}function re(e){return e=he(e),e&&kf.test(e)?e.replace(ti,Oh):e}var Dg=Gr(function(e,t,n){return e+(n?" ":"")+t.toUpperCase()}),Mn=cs("toUpperCase");function vf(e,t,n){return e=he(e),t=n?o:t,t===o?at(e)?Ch(e):Cl(e):e.match(t)||[]}var Gs=te(function(e,t){try{return Lt(e,o,t)}catch(n){return Ds(n)?n:new P(n)}}),qs=Zn(function(e,t){return $t(t,function(n){n=yn(n),Rn(e,n,vt(e[n],e))}),e});function yf(e){var t=e==null?0:e.length,n=X();return e=t?Ie(e,function(r){if(typeof r[1]!="function")throw new Kt(E);return[n(r[0]),r[1]]}):[],te(function(r){for(var a=-1;++a<t;){var s=e[a];if(Lt(s[0],this,r))return Lt(s[1],this,r)}})}function Li(e){return ic(Dt(e,F))}function Hs(e){return function(){return e}}function Fg(e,t){return e==null||e!==e?t:e}var Ug=vc(),_f=vc(!0);function lt(e){return e}function Ys(e){return gu(typeof e=="function"?e:Dt(e,F))}function Mg(e){return es(Dt(e,F))}function Wg(e,t){return vu(e,Dt(t,F))}var Bg=te(function(e,t){return function(n){return yi(n,e,t)}}),jg=te(function(e,t){return function(n){return yi(e,n,t)}});function Qs(e,t,n){var r=rt(t),a=uo(t,r);n==null&&!(Ue(t)&&(a.length||!r.length))&&(n=t,t=e,e=this,a=uo(t,rt(t)));var s=!(Ue(n)&&"chain"in n)||!!n.chain,c=an(e);return $t(a,function(f){var g=t[f];e[f]=g,c&&(e.prototype[f]=function(){var w=this.__chain__;if(s||w){var b=e(this.__wrapped__),S=b.__actions__=Ot(this.__actions__);return S.push({func:g,args:arguments,thisArg:e}),b.__chain__=w,b}return g.apply(e,kt([this.value()],arguments))})}),e}function $g(){return et._===this&&(et._=Hn),this}function Js(){}function bf(e){return e=H(e),te(function(t){return ts(t,e)})}var kg=fs(Ie),Vg=fs(Ho),wf=fs(Ta);function Xs(e){return ys(e)?xa(yn(e)):ed(e)}function Gg(e){return function(t){return e==null?o:kr(e,t)}}var qg=_c(),Hg=_c(!0);function Zs(){return[]}function Ks(){return!1}function Yg(){return{}}function Qg(){return""}function el(){return!0}function Af(e,t){if(e=H(e),e<1||e>En)return[];var n=Ut,r=De(e,Ut);t=X(t),e-=Ut;for(var a=za(r,t);++n<e;)t(n);return a}function Jg(e){return K(e)?Ie(e,yn):Yt(e)?[e]:Ot(Os(he(e)))}function Xg(e){var t=++Nh;return he(e)+t}var Zg=Cu(function(e,t){return e+t},0),Kg=hs("ceil"),em=Cu(function(e,t){return e/t},1),tm=hs("floor");function nm(e){return e&&e.length?vn(e,lt,pt):o}function rm(e,t){return e&&e.length?vn(e,X(t,2),pt):o}function im(e){return xl(e,lt)}function om(e,t){return xl(e,X(t,2))}function um(e){return e&&e.length?vn(e,lt,mu):o}function am(e,t){return e&&e.length?vn(e,X(t,2),mu):o}var sm=Cu(function(e,t){return e*t},1),lm=hs("round"),cm=Cu(function(e,t){return e-t},0);function fm(e){return e&&e.length?La(e,lt):0}function hm(e,t){return e&&e.length?La(e,X(t,2)):0}return p.after=Dp,p.ary=Wu,p.assign=Ao,p.assignIn=Ku,p.assignInWith=ur,p.assignWith=So,p.at=Eo,p.before=Gc,p.bind=vt,p.bindAll=qs,p.bindKey=Bu,p.castArray=Vp,p.chain=Wc,p.chunk=Td,p.compact=Id,p.concat=Cd,p.cond=yf,p.conforms=Li,p.constant=Hs,p.countBy=gp,p.create=ea,p.curry=qc,p.curryRight=Hc,p.debounce=ju,p.defaults=Ci,p.defaultsDeep=eg,p.defer=Fp,p.delay=Rs,p.difference=xd,p.differenceBy=Rd,p.differenceWith=Nd,p.drop=Ld,p.dropRight=zd,p.dropRightWhile=Pd,p.dropWhile=Dd,p.fill=Fd,p.filter=vp,p.flatMap=jc,p.flatMapDeep=_p,p.flatMapDepth=bp,p.flatten=Ct,p.flattenDeep=$e,p.flattenDepth=Ud,p.flip=Up,p.flow=Ug,p.flowRight=_f,p.fromPairs=Md,p.functions=of,p.functionsIn=xi,p.groupBy=wp,p.initial=Bd,p.intersection=Ts,p.intersectionBy=jd,p.intersectionWith=er,p.invert=af,p.invertBy=sf,p.invokeMap=Sp,p.iteratee=Ys,p.keyBy=Ep,p.keys=rt,p.keysIn=Rt,p.map=Uu,p.mapKeys=ug,p.mapValues=Ws,p.matches=Mg,p.matchesProperty=Wg,p.memoize=wo,p.merge=Bs,p.mergeWith=js,p.method=Bg,p.methodOf=jg,p.mixin=Qs,p.negate=$u,p.nthArg=bf,p.omit=_t,p.omitBy=ag,p.once=Ns,p.orderBy=Op,p.over=kg,p.overArgs=Ls,p.overEvery=Vg,p.overSome=wf,p.partial=zs,p.partialRight=Yc,p.partition=Tp,p.pick=lf,p.pickBy=Ri,p.property=Xs,p.propertyOf=Gg,p.pull=$d,p.pullAll=Pc,p.pullAllBy=kd,p.pullAllWith=Vd,p.pullAt=Gd,p.range=qg,p.rangeRight=Hg,p.rearg=Mp,p.reject=xp,p.remove=qd,p.rest=Wp,p.reverse=Du,p.sampleSize=Np,p.set=cf,p.setWith=sg,p.shuffle=Lp,p.slice=_o,p.sortBy=Vc,p.sortedUniq=Dc,p.sortedUniqBy=tr,p.split=gf,p.spread=Bp,p.tail=ue,p.take=Fc,p.takeRight=on,p.takeRightWhile=Uc,p.takeWhile=Xd,p.tap=ap,p.throttle=jp,p.thru=bo,p.toArray=nf,p.toPairs=ff,p.toPairsIn=hf,p.toPath=Jg,p.toPlainObject=Ms,p.transform=lg,p.unary=$p,p.union=ge,p.unionBy=Zd,p.unionWith=Kd,p.uniq=ep,p.uniqBy=tp,p.uniqWith=np,p.unset=cg,p.unzip=Is,p.unzipWith=Mc,p.update=fg,p.updateWith=hg,p.values=Ni,p.valuesIn=dg,p.without=rp,p.words=vf,p.wrap=kp,p.xor=ip,p.xorBy=Cs,p.xorWith=op,p.zip=xs,p.zipObject=nt,p.zipObjectDeep=Ft,p.zipWith=up,p.entries=ff,p.entriesIn=hf,p.extend=Ku,p.extendWith=ur,Qs(p,p),p.add=Zg,p.attempt=Gs,p.camelCase=vg,p.capitalize=df,p.ceil=Kg,p.clamp=pg,p.clone=Gp,p.cloneDeep=Hp,p.cloneDeepWith=Yp,p.cloneWith=qp,p.conformsTo=Qp,p.deburr=pf,p.defaultTo=Fg,p.divide=em,p.endsWith=yg,p.eq=be,p.escape=_g,p.escapeRegExp=bg,p.every=mp,p.find=yp,p.findIndex=Nc,p.findKey=tg,p.findLast=Bc,p.findLastIndex=rn,p.findLastKey=ng,p.floor=tm,p.forEach=$c,p.forEachRight=kc,p.forIn=rg,p.forInRight=ig,p.forOwn=ta,p.forOwnRight=Oo,p.get=Un,p.gt=ku,p.gte=Ps,p.has=uf,p.hasIn=To,p.head=Lc,p.identity=lt,p.includes=Ap,p.indexOf=Wd,p.inRange=gg,p.invoke=og,p.isArguments=Ir,p.isArray=K,p.isArrayBuffer=Ne,p.isArrayLike=yt,p.isArrayLikeObject=ke,p.isBoolean=un,p.isBuffer=_n,p.isDate=Jp,p.isElement=Ii,p.isEmpty=Vu,p.isEqual=Gu,p.isEqualWith=we,p.isError=Ds,p.isFinite=Qc,p.isFunction=an,p.isInteger=Jc,p.isLength=qu,p.isMap=nr,p.isMatch=Hu,p.isMatchWith=Xc,p.isNaN=Yu,p.isNative=Zc,p.isNil=Qu,p.isNull=Kc,p.isNumber=Fs,p.isObject=Ue,p.isObjectLike=Le,p.isPlainObject=rr,p.isRegExp=ir,p.isSafeInteger=Ju,p.isSet=ef,p.isString=Xu,p.isSymbol=Yt,p.isTypedArray=or,p.isUndefined=Zu,p.isWeakMap=Us,p.isWeakSet=Xp,p.join=zc,p.kebabCase=wg,p.last=xt,p.lastIndexOf=Fe,p.lowerCase=Ag,p.lowerFirst=Sg,p.lt=tf,p.lte=Zp,p.max=nm,p.maxBy=rm,p.mean=im,p.meanBy=om,p.min=um,p.minBy=am,p.stubArray=Zs,p.stubFalse=Ks,p.stubObject=Yg,p.stubString=Qg,p.stubTrue=el,p.multiply=sm,p.nth=Be,p.noConflict=$g,p.noop=Js,p.now=Mu,p.pad=Eg,p.padEnd=Og,p.padStart=Tg,p.parseInt=Ig,p.random=mg,p.reduce=Ip,p.reduceRight=Cp,p.repeat=Cg,p.replace=na,p.result=$s,p.round=lm,p.runInContext=d,p.sample=Rp,p.size=zp,p.snakeCase=ks,p.some=Pp,p.sortedIndex=Hd,p.sortedIndexBy=Fu,p.sortedIndexOf=Ht,p.sortedLastIndex=Yd,p.sortedLastIndexBy=Qd,p.sortedLastIndexOf=Jd,p.startCase=xg,p.startsWith=Rg,p.subtract=cm,p.sum=fm,p.sumBy=hm,p.template=Ng,p.times=Af,p.toFinite=Oe,p.toInteger=H,p.toLength=rf,p.toLower=Vs,p.toNumber=sn,p.toSafeInteger=Kp,p.toString=he,p.toUpper=mf,p.trim=Lg,p.trimEnd=zg,p.trimStart=Pg,p.truncate=Yr,p.unescape=re,p.uniqueId=Xg,p.upperCase=Dg,p.upperFirst=Mn,p.each=$c,p.eachRight=kc,p.first=Lc,Qs(p,function(){var e={};return Nn(p,function(t,n){_e.call(p.prototype,n)||(e[n]=t)}),e}(),{chain:!1}),p.VERSION=h,$t(["bind","bindKey","curry","curryRight","partial","partialRight"],function(e){p[e].placeholder=p}),$t(["drop","take"],function(e,t){ae.prototype[e]=function(n){n=n===o?1:Je(H(n),0);var r=this.__filtered__&&!t?new ae(this):this.clone();return r.__filtered__?r.__takeCount__=De(n,r.__takeCount__):r.__views__.push({size:De(n,Ut),type:e+(r.__dir__<0?"Right":"")}),r},ae.prototype[e+"Right"]=function(n){return this.reverse()[e](n).reverse()}}),$t(["filter","map","takeWhile"],function(e,t){var n=t+1,r=n==fr||n==Ui;ae.prototype[e]=function(a){var s=this.clone();return s.__iteratees__.push({iteratee:X(a,3),type:n}),s.__filtered__=s.__filtered__||r,s}}),$t(["head","last"],function(e,t){var n="take"+(t?"Right":"");ae.prototype[e]=function(){return this[n](1).value()[0]}}),$t(["initial","tail"],function(e,t){var n="drop"+(t?"":"Right");ae.prototype[e]=function(){return this.__filtered__?new ae(this):this[n](1)}}),ae.prototype.compact=function(){return this.filter(lt)},ae.prototype.find=function(e){return this.filter(e).head()},ae.prototype.findLast=function(e){return this.reverse().find(e)},ae.prototype.invokeMap=te(function(e,t){return typeof e=="function"?new ae(this):this.map(function(n){return yi(n,e,t)})}),ae.prototype.reject=function(e){return this.filter($u(X(e)))},ae.prototype.slice=function(e,t){e=H(e);var n=this;return n.__filtered__&&(e>0||t<0)?new ae(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),t!==o&&(t=H(t),n=t<0?n.dropRight(-t):n.take(t-e)),n)},ae.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},ae.prototype.toArray=function(){return this.take(Ut)},Nn(ae.prototype,function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),r=/^(?:head|last)$/.test(t),a=p[r?"take"+(t=="last"?"Right":""):t],s=r||/^find/.test(t);a&&(p.prototype[t]=function(){var c=this.__wrapped__,f=r?[1]:arguments,g=c instanceof ae,w=f[0],b=g||K(c),S=function(B){var $=a.apply(p,kt([B],f));return r&&O?$[0]:$};b&&n&&typeof w=="function"&&w.length!=1&&(g=b=!1);var O=this.__chain__,x=!!this.__actions__.length,N=s&&!O,M=g&&!x;if(!s&&b){c=M?c:new ae(this);var L=e.apply(c,f);return L.__actions__.push({func:bo,args:[S],thisArg:o}),new tn(L,O)}return N&&M?e.apply(this,f):(L=this.thru(S),N?r?L.value()[0]:L.value():L)})}),$t(["pop","push","shift","sort","splice","unshift"],function(e){var t=Jo[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",r=/^(?:pop|shift)$/.test(e);p.prototype[e]=function(){var a=arguments;if(r&&!this.__chain__){var s=this.value();return t.apply(K(s)?s:[],a)}return this[n](function(c){return t.apply(K(c)?c:[],a)})}}),Nn(ae.prototype,function(e,t){var n=p[t];if(n){var r=n.name+"";_e.call(We,r)||(We[r]=[]),We[r].push({name:t,func:n})}}),We[ho(o,Q).name]=[{name:"wrapper",func:o}],ae.prototype.clone=Yl,ae.prototype.reverse=Uh,ae.prototype.value=Mh,p.prototype.at=sp,p.prototype.chain=lp,p.prototype.commit=cp,p.prototype.next=fp,p.prototype.plant=dp,p.prototype.reverse=pp,p.prototype.toJSON=p.prototype.valueOf=p.prototype.value=Ti,p.prototype.first=p.prototype.head,Zi&&(p.prototype[Zi]=hp),p},pn=xh();Pr?((Pr.exports=pn)._=pn,wa._=pn):et._=pn}).call(xr)})(Cf,Cf.exports);var Ce=Cf.exports;const ua=i=>{const{sort:u,fields:o,omit:h,filters:m={},populate:A={},relation:E,pagination:T}=i,R=(m.$or||[]).filter(F=>!Object.keys(F).includes("removed"));let z={...A},I={threadOf:{populate:{authorUser:!0,...A}}};if("author"in A){const{author:F,...U}=A;z={...U,authorUser:F},I={threadOf:{populate:{authorUser:F,...U}}}}return{...i,filters:{...m,$or:[...R,{removed:{$null:!0}},{removed:!1}],related:E},populate:{...z,...I},pagination:T,sort:u,fields:o,omit:h}},Bv=(i,u)=>{const{nonNull:o,stringArg:h}=u,{service:m}=i.plugin("graphql"),{args:A}=m("internals"),E=i.contentType(sr(i,"comment"));return{type:"ResponseFindAll",args:{relation:o(h()),filters:ft(i,"gql").buildContentTypeFilters(E),pagination:A.PaginationArg,sort:A.SortArg},async resolve(T,R){const{relation:z,filters:I,sort:F,pagination:U}=R;return await ft(i,"common").findAllFlat(ua({relation:z,filters:ft(i,"gql").graphQLFiltersToStrapiQuery(I,E),sort:F,pagination:U?{...U,withCount:!Ce.isEmpty(U)}:void 0}),void 0)}}},jv=(i,u)=>{const{nonNull:o,list:h,stringArg:m}=u,{service:A}=i.plugin("graphql"),{args:E}=A("internals"),{naming:{getFiltersInputTypeName:T}}=A("utils"),R=i.contentType(sr(i,"comment"));return{type:o(h("CommentNested")),args:{relation:o(m()),sort:E.SortArg,filters:T(R)},async resolve(z,I){const{relation:F,filters:U,sort:ie}=I;return await ft(i,"common").findAllInHierarchy({...ua({relation:F,filters:ft(i,"gql").graphQLFiltersToStrapiQuery(U,R),sort:ie}),dropBlockedThreads:!0})}}},lr={ENABLED_COLLECTIONS:"enabledCollections",APPROVAL_FLOW:"approvalFlow",ENTRY_LABEL:"entryLabel",MODERATOR_ROLES:"moderatorRoles",BAD_WORDS:"badWords",AUTHOR_BLOCKED_PROPS:"blockedAuthorProps"},ol={GENERIC:"GENERIC",STRAPI:"STRAPI"},$v={uid:/^(?<type>[a-z0-9-]+)\:{2}(?<api>[a-z0-9-]+)\.{1}(?<contentType>[a-z0-9-]+)$/i,relatedUid:/^(?<uid>[a-z0-9-]+\:{2}[a-z0-9-]+\.[a-z0-9-]+)\:{1}(?<id>[a-z0-9-]+)$/i,email:/\S+@\S+\.\S+/,sorting:/^(?<path>[a-z0-9-_\:\.]+)\:+(asc|desc)$/i},kv=(i,u)=>{const{nonNull:o,intArg:h,arg:m}=u,{service:A}=i.plugin("graphql"),{args:E}=A("internals"),{naming:{getFiltersInputTypeName:T}}=A("utils"),R=i.contentType(sr(i,"comment"));return{type:"ResponseFindAllPerAuthor",args:{authorId:o(h()),authorType:m({type:"CommentAuthorType"}),filters:T(R),pagination:E.PaginationArg,sort:E.SortArg},async resolve(z,I){const{authorId:F,authorType:U,filters:ie,sort:j,pagination:Z}=I,ee=U!==ol.GENERIC;return await ft(i,"common").findAllPerAuthor(ua({filters:ft(i,"gql").graphQLFiltersToStrapiQuery(ie,R),sort:j,pagination:Z?{...Z,withCount:!Ce.isEmpty(Z)}:void 0,authorId:F}),ee)}}},Vv=(i,u)=>{const o={findAllFlat:Bv,findAllInHierarchy:jv,findAllPerAuthor:kv};return u.extendType({type:"Query",definition(h){for(const[m,A]of Object.entries(o)){const E=A(i,u);h.field(m,E)}}})},Gv=i=>i.objectType({name:"CommentSingle",definition(u){u.id("id"),u.string("documentId"),u.nonNull.string("content"),u.boolean("blocked"),u.boolean("blockedThread"),u.boolean("removed"),u.string("approvalStatus"),u.field("threadOf",{type:"CommentSingle"}),u.field("author",{type:"CommentAuthor"}),u.string("createdAt"),u.string("updatedAt")}}),qv=i=>i.objectType({name:"CommentAuthor",definition(u){u.id("id"),u.nonNull.string("name"),u.nonNull.string("email"),u.string("avatar")}}),Hv=i=>i.enumType({name:"CommentAuthorType",description:"User type which was the author of comment - Strapi built-in or generic",members:Object.values(ol)}),Yv=i=>i.objectType({name:"CommentNested",definition(u){u.id("id"),u.string("documentId"),u.nonNull.string("content"),u.boolean("blocked"),u.boolean("blockedThread"),u.string("approvalStatus"),u.boolean("removed"),u.field("threadOf",{type:"CommentSingle"}),u.list.field("children",{type:"CommentNested"}),u.field("author",{type:"CommentAuthor"}),u.string("createdAt"),u.string("updatedAt")}}),Qv=i=>i.inputObjectType({name:"CreateComment",definition(u){u.nonNull.string("content"),u.nonNull.string("relation"),u.id("threadOf"),u.field("author",{type:"CreateCommentAuthor"})}}),Jv=i=>i.inputObjectType({name:"CreateCommentAuthor",definition(u){u.nonNull.id("id"),u.nonNull.string("name"),u.string("email"),u.string("avatar")}}),Xv=i=>i.inputObjectType({name:"CreateReport",definition(u){u.id("commentId"),u.nonNull.string("relation"),u.nonNull.string("content"),u.field("reason",{type:"ReportReason"})}});function He(i,u){if(!!!i)throw new Error(u)}function qm(i){return typeof i=="object"&&i!==null}function Zv(i,u){if(!!!i)throw new Error("Unexpected invariant triggered.")}const Kv=/\r\n|[\n\r]/g;function vm(i,u){let o=0,h=1;for(const m of i.body.matchAll(Kv)){if(typeof m.index=="number"||Zv(!1),m.index>=u)break;o=m.index+m[0].length,h+=1}return{line:h,column:u+1-o}}function e0(i){return Hm(i.source,vm(i.source,i.start))}function Hm(i,u){const o=i.locationOffset.column-1,h="".padStart(o)+i.body,m=u.line-1,A=i.locationOffset.line-1,E=u.line+A,T=u.line===1?o:0,R=u.column+T,z=`${i.name}:${E}:${R}
|
|
27
|
+
}`;var M=Gs(function(){return D(s,x+"return "+S).apply(o,c)});if(M.source=S,Ds(M))throw M;return M}function Vs(e){return he(e).toLowerCase()}function mf(e){return he(e).toUpperCase()}function Lg(e,t,n){if(e=he(e),e&&(n||t===o))return Nl(e);if(!e||!(t=qt(t)))return e;var r=Zt(e),a=Zt(t),s=Ll(r,a),c=zl(r,a)+1;return Or(r,s,c).join("")}function zg(e,t,n){if(e=he(e),e&&(n||t===o))return e.slice(0,Fa(e)+1);if(!e||!(t=qt(t)))return e;var r=Zt(e),a=zl(r,Zt(t))+1;return Or(r,0,a).join("")}function Pg(e,t,n){if(e=he(e),e&&(n||t===o))return e.replace(ni,"");if(!e||!(t=qt(t)))return e;var r=Zt(e),a=Ll(r,Zt(t));return Or(r,a).join("")}function Yr(e,t){var n=Qe,r=wn;if(Ue(t)){var a="separator"in t?t.separator:a;n="length"in t?H(t.length):n,r="omission"in t?qt(t.omission):r}e=he(e);var s=e.length;if(ci(e)){var c=Zt(e);s=c.length}if(n>=s)return e;var f=n-Dr(r);if(f<1)return r;var g=c?Or(c,0,f).join(""):e.slice(0,f);if(a===o)return g+r;if(c&&(f+=g.length-f),ir(a)){if(e.slice(f).search(a)){var w,b=g;for(a.global||(a=Ua(a.source,he(ii.exec(a))+"g")),a.lastIndex=0;w=a.exec(b);)var S=w.index;g=g.slice(0,S===o?f:S)}}else if(e.indexOf(qt(a),f)!=f){var O=g.lastIndexOf(a);O>-1&&(g=g.slice(0,O))}return g+r}function re(e){return e=he(e),e&&kf.test(e)?e.replace(ti,Oh):e}var Dg=Gr(function(e,t,n){return e+(n?" ":"")+t.toUpperCase()}),Mn=cs("toUpperCase");function vf(e,t,n){return e=he(e),t=n?o:t,t===o?at(e)?Ch(e):Cl(e):e.match(t)||[]}var Gs=te(function(e,t){try{return Lt(e,o,t)}catch(n){return Ds(n)?n:new P(n)}}),qs=Zn(function(e,t){return $t(t,function(n){n=yn(n),Rn(e,n,vt(e[n],e))}),e});function yf(e){var t=e==null?0:e.length,n=X();return e=t?Ie(e,function(r){if(typeof r[1]!="function")throw new Kt(E);return[n(r[0]),r[1]]}):[],te(function(r){for(var a=-1;++a<t;){var s=e[a];if(Lt(s[0],this,r))return Lt(s[1],this,r)}})}function Li(e){return ic(Dt(e,F))}function Hs(e){return function(){return e}}function Fg(e,t){return e==null||e!==e?t:e}var Ug=vc(),_f=vc(!0);function lt(e){return e}function Ys(e){return gu(typeof e=="function"?e:Dt(e,F))}function Mg(e){return es(Dt(e,F))}function Wg(e,t){return vu(e,Dt(t,F))}var Bg=te(function(e,t){return function(n){return yi(n,e,t)}}),jg=te(function(e,t){return function(n){return yi(e,n,t)}});function Qs(e,t,n){var r=rt(t),a=uo(t,r);n==null&&!(Ue(t)&&(a.length||!r.length))&&(n=t,t=e,e=this,a=uo(t,rt(t)));var s=!(Ue(n)&&"chain"in n)||!!n.chain,c=an(e);return $t(a,function(f){var g=t[f];e[f]=g,c&&(e.prototype[f]=function(){var w=this.__chain__;if(s||w){var b=e(this.__wrapped__),S=b.__actions__=Ot(this.__actions__);return S.push({func:g,args:arguments,thisArg:e}),b.__chain__=w,b}return g.apply(e,kt([this.value()],arguments))})}),e}function $g(){return et._===this&&(et._=Hn),this}function Js(){}function bf(e){return e=H(e),te(function(t){return ts(t,e)})}var kg=fs(Ie),Vg=fs(Ho),wf=fs(Ta);function Xs(e){return ys(e)?xa(yn(e)):ed(e)}function Gg(e){return function(t){return e==null?o:kr(e,t)}}var qg=_c(),Hg=_c(!0);function Zs(){return[]}function Ks(){return!1}function Yg(){return{}}function Qg(){return""}function el(){return!0}function Af(e,t){if(e=H(e),e<1||e>En)return[];var n=Ut,r=De(e,Ut);t=X(t),e-=Ut;for(var a=za(r,t);++n<e;)t(n);return a}function Jg(e){return K(e)?Ie(e,yn):Yt(e)?[e]:Ot(Os(he(e)))}function Xg(e){var t=++Nh;return he(e)+t}var Zg=Cu(function(e,t){return e+t},0),Kg=hs("ceil"),em=Cu(function(e,t){return e/t},1),tm=hs("floor");function nm(e){return e&&e.length?vn(e,lt,pt):o}function rm(e,t){return e&&e.length?vn(e,X(t,2),pt):o}function im(e){return xl(e,lt)}function om(e,t){return xl(e,X(t,2))}function um(e){return e&&e.length?vn(e,lt,mu):o}function am(e,t){return e&&e.length?vn(e,X(t,2),mu):o}var sm=Cu(function(e,t){return e*t},1),lm=hs("round"),cm=Cu(function(e,t){return e-t},0);function fm(e){return e&&e.length?La(e,lt):0}function hm(e,t){return e&&e.length?La(e,X(t,2)):0}return p.after=Dp,p.ary=Wu,p.assign=Ao,p.assignIn=Ku,p.assignInWith=ur,p.assignWith=So,p.at=Eo,p.before=Gc,p.bind=vt,p.bindAll=qs,p.bindKey=Bu,p.castArray=Vp,p.chain=Wc,p.chunk=Td,p.compact=Id,p.concat=Cd,p.cond=yf,p.conforms=Li,p.constant=Hs,p.countBy=gp,p.create=ea,p.curry=qc,p.curryRight=Hc,p.debounce=ju,p.defaults=Ci,p.defaultsDeep=eg,p.defer=Fp,p.delay=Rs,p.difference=xd,p.differenceBy=Rd,p.differenceWith=Nd,p.drop=Ld,p.dropRight=zd,p.dropRightWhile=Pd,p.dropWhile=Dd,p.fill=Fd,p.filter=vp,p.flatMap=jc,p.flatMapDeep=_p,p.flatMapDepth=bp,p.flatten=Ct,p.flattenDeep=$e,p.flattenDepth=Ud,p.flip=Up,p.flow=Ug,p.flowRight=_f,p.fromPairs=Md,p.functions=of,p.functionsIn=xi,p.groupBy=wp,p.initial=Bd,p.intersection=Ts,p.intersectionBy=jd,p.intersectionWith=er,p.invert=af,p.invertBy=sf,p.invokeMap=Sp,p.iteratee=Ys,p.keyBy=Ep,p.keys=rt,p.keysIn=Rt,p.map=Uu,p.mapKeys=ug,p.mapValues=Ws,p.matches=Mg,p.matchesProperty=Wg,p.memoize=wo,p.merge=Bs,p.mergeWith=js,p.method=Bg,p.methodOf=jg,p.mixin=Qs,p.negate=$u,p.nthArg=bf,p.omit=_t,p.omitBy=ag,p.once=Ns,p.orderBy=Op,p.over=kg,p.overArgs=Ls,p.overEvery=Vg,p.overSome=wf,p.partial=zs,p.partialRight=Yc,p.partition=Tp,p.pick=lf,p.pickBy=Ri,p.property=Xs,p.propertyOf=Gg,p.pull=$d,p.pullAll=Pc,p.pullAllBy=kd,p.pullAllWith=Vd,p.pullAt=Gd,p.range=qg,p.rangeRight=Hg,p.rearg=Mp,p.reject=xp,p.remove=qd,p.rest=Wp,p.reverse=Du,p.sampleSize=Np,p.set=cf,p.setWith=sg,p.shuffle=Lp,p.slice=_o,p.sortBy=Vc,p.sortedUniq=Dc,p.sortedUniqBy=tr,p.split=gf,p.spread=Bp,p.tail=ue,p.take=Fc,p.takeRight=on,p.takeRightWhile=Uc,p.takeWhile=Xd,p.tap=ap,p.throttle=jp,p.thru=bo,p.toArray=nf,p.toPairs=ff,p.toPairsIn=hf,p.toPath=Jg,p.toPlainObject=Ms,p.transform=lg,p.unary=$p,p.union=ge,p.unionBy=Zd,p.unionWith=Kd,p.uniq=ep,p.uniqBy=tp,p.uniqWith=np,p.unset=cg,p.unzip=Is,p.unzipWith=Mc,p.update=fg,p.updateWith=hg,p.values=Ni,p.valuesIn=dg,p.without=rp,p.words=vf,p.wrap=kp,p.xor=ip,p.xorBy=Cs,p.xorWith=op,p.zip=xs,p.zipObject=nt,p.zipObjectDeep=Ft,p.zipWith=up,p.entries=ff,p.entriesIn=hf,p.extend=Ku,p.extendWith=ur,Qs(p,p),p.add=Zg,p.attempt=Gs,p.camelCase=vg,p.capitalize=df,p.ceil=Kg,p.clamp=pg,p.clone=Gp,p.cloneDeep=Hp,p.cloneDeepWith=Yp,p.cloneWith=qp,p.conformsTo=Qp,p.deburr=pf,p.defaultTo=Fg,p.divide=em,p.endsWith=yg,p.eq=be,p.escape=_g,p.escapeRegExp=bg,p.every=mp,p.find=yp,p.findIndex=Nc,p.findKey=tg,p.findLast=Bc,p.findLastIndex=rn,p.findLastKey=ng,p.floor=tm,p.forEach=$c,p.forEachRight=kc,p.forIn=rg,p.forInRight=ig,p.forOwn=ta,p.forOwnRight=Oo,p.get=Un,p.gt=ku,p.gte=Ps,p.has=uf,p.hasIn=To,p.head=Lc,p.identity=lt,p.includes=Ap,p.indexOf=Wd,p.inRange=gg,p.invoke=og,p.isArguments=Ir,p.isArray=K,p.isArrayBuffer=Ne,p.isArrayLike=yt,p.isArrayLikeObject=ke,p.isBoolean=un,p.isBuffer=_n,p.isDate=Jp,p.isElement=Ii,p.isEmpty=Vu,p.isEqual=Gu,p.isEqualWith=we,p.isError=Ds,p.isFinite=Qc,p.isFunction=an,p.isInteger=Jc,p.isLength=qu,p.isMap=nr,p.isMatch=Hu,p.isMatchWith=Xc,p.isNaN=Yu,p.isNative=Zc,p.isNil=Qu,p.isNull=Kc,p.isNumber=Fs,p.isObject=Ue,p.isObjectLike=Le,p.isPlainObject=rr,p.isRegExp=ir,p.isSafeInteger=Ju,p.isSet=ef,p.isString=Xu,p.isSymbol=Yt,p.isTypedArray=or,p.isUndefined=Zu,p.isWeakMap=Us,p.isWeakSet=Xp,p.join=zc,p.kebabCase=wg,p.last=xt,p.lastIndexOf=Fe,p.lowerCase=Ag,p.lowerFirst=Sg,p.lt=tf,p.lte=Zp,p.max=nm,p.maxBy=rm,p.mean=im,p.meanBy=om,p.min=um,p.minBy=am,p.stubArray=Zs,p.stubFalse=Ks,p.stubObject=Yg,p.stubString=Qg,p.stubTrue=el,p.multiply=sm,p.nth=Be,p.noConflict=$g,p.noop=Js,p.now=Mu,p.pad=Eg,p.padEnd=Og,p.padStart=Tg,p.parseInt=Ig,p.random=mg,p.reduce=Ip,p.reduceRight=Cp,p.repeat=Cg,p.replace=na,p.result=$s,p.round=lm,p.runInContext=d,p.sample=Rp,p.size=zp,p.snakeCase=ks,p.some=Pp,p.sortedIndex=Hd,p.sortedIndexBy=Fu,p.sortedIndexOf=Ht,p.sortedLastIndex=Yd,p.sortedLastIndexBy=Qd,p.sortedLastIndexOf=Jd,p.startCase=xg,p.startsWith=Rg,p.subtract=cm,p.sum=fm,p.sumBy=hm,p.template=Ng,p.times=Af,p.toFinite=Oe,p.toInteger=H,p.toLength=rf,p.toLower=Vs,p.toNumber=sn,p.toSafeInteger=Kp,p.toString=he,p.toUpper=mf,p.trim=Lg,p.trimEnd=zg,p.trimStart=Pg,p.truncate=Yr,p.unescape=re,p.uniqueId=Xg,p.upperCase=Dg,p.upperFirst=Mn,p.each=$c,p.eachRight=kc,p.first=Lc,Qs(p,function(){var e={};return Nn(p,function(t,n){_e.call(p.prototype,n)||(e[n]=t)}),e}(),{chain:!1}),p.VERSION=h,$t(["bind","bindKey","curry","curryRight","partial","partialRight"],function(e){p[e].placeholder=p}),$t(["drop","take"],function(e,t){ae.prototype[e]=function(n){n=n===o?1:Je(H(n),0);var r=this.__filtered__&&!t?new ae(this):this.clone();return r.__filtered__?r.__takeCount__=De(n,r.__takeCount__):r.__views__.push({size:De(n,Ut),type:e+(r.__dir__<0?"Right":"")}),r},ae.prototype[e+"Right"]=function(n){return this.reverse()[e](n).reverse()}}),$t(["filter","map","takeWhile"],function(e,t){var n=t+1,r=n==fr||n==Ui;ae.prototype[e]=function(a){var s=this.clone();return s.__iteratees__.push({iteratee:X(a,3),type:n}),s.__filtered__=s.__filtered__||r,s}}),$t(["head","last"],function(e,t){var n="take"+(t?"Right":"");ae.prototype[e]=function(){return this[n](1).value()[0]}}),$t(["initial","tail"],function(e,t){var n="drop"+(t?"":"Right");ae.prototype[e]=function(){return this.__filtered__?new ae(this):this[n](1)}}),ae.prototype.compact=function(){return this.filter(lt)},ae.prototype.find=function(e){return this.filter(e).head()},ae.prototype.findLast=function(e){return this.reverse().find(e)},ae.prototype.invokeMap=te(function(e,t){return typeof e=="function"?new ae(this):this.map(function(n){return yi(n,e,t)})}),ae.prototype.reject=function(e){return this.filter($u(X(e)))},ae.prototype.slice=function(e,t){e=H(e);var n=this;return n.__filtered__&&(e>0||t<0)?new ae(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),t!==o&&(t=H(t),n=t<0?n.dropRight(-t):n.take(t-e)),n)},ae.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},ae.prototype.toArray=function(){return this.take(Ut)},Nn(ae.prototype,function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),r=/^(?:head|last)$/.test(t),a=p[r?"take"+(t=="last"?"Right":""):t],s=r||/^find/.test(t);a&&(p.prototype[t]=function(){var c=this.__wrapped__,f=r?[1]:arguments,g=c instanceof ae,w=f[0],b=g||K(c),S=function(B){var $=a.apply(p,kt([B],f));return r&&O?$[0]:$};b&&n&&typeof w=="function"&&w.length!=1&&(g=b=!1);var O=this.__chain__,x=!!this.__actions__.length,N=s&&!O,M=g&&!x;if(!s&&b){c=M?c:new ae(this);var L=e.apply(c,f);return L.__actions__.push({func:bo,args:[S],thisArg:o}),new tn(L,O)}return N&&M?e.apply(this,f):(L=this.thru(S),N?r?L.value()[0]:L.value():L)})}),$t(["pop","push","shift","sort","splice","unshift"],function(e){var t=Jo[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",r=/^(?:pop|shift)$/.test(e);p.prototype[e]=function(){var a=arguments;if(r&&!this.__chain__){var s=this.value();return t.apply(K(s)?s:[],a)}return this[n](function(c){return t.apply(K(c)?c:[],a)})}}),Nn(ae.prototype,function(e,t){var n=p[t];if(n){var r=n.name+"";_e.call(We,r)||(We[r]=[]),We[r].push({name:t,func:n})}}),We[ho(o,Q).name]=[{name:"wrapper",func:o}],ae.prototype.clone=Yl,ae.prototype.reverse=Uh,ae.prototype.value=Mh,p.prototype.at=sp,p.prototype.chain=lp,p.prototype.commit=cp,p.prototype.next=fp,p.prototype.plant=dp,p.prototype.reverse=pp,p.prototype.toJSON=p.prototype.valueOf=p.prototype.value=Ti,p.prototype.first=p.prototype.head,Zi&&(p.prototype[Zi]=hp),p},pn=xh();Pr?((Pr.exports=pn)._=pn,wa._=pn):et._=pn}).call(xr)})(Cf,Cf.exports);var Ce=Cf.exports;const ua=i=>{const{sort:u,fields:o,omit:h,filters:m={},populate:A={},relation:E,pagination:T}=i,R=(m.$or||[]).filter(F=>!Object.keys(F).includes("removed"));let z={...A},I={threadOf:{populate:{authorUser:!0,...A}}};if("author"in A){const{author:F,...U}=A;z={...U,authorUser:F},I={threadOf:{populate:{authorUser:F,...U}}}}return{...i,filters:{...m,$or:[...R,{removed:{$null:!0}},{removed:!1}],related:E},populate:{...z,...I},pagination:T,sort:u,fields:o,omit:h}},Bv=(i,u)=>{const{nonNull:o,stringArg:h}=u,{service:m}=i.plugin("graphql"),{args:A}=m("internals"),E=i.contentType(sr(i,"comment"));return{type:"ResponseFindAll",args:{relation:o(h()),filters:ft(i,"gql").buildContentTypeFilters(E),pagination:A.PaginationArg,sort:A.SortArg},async resolve(T,R){const{relation:z,filters:I,sort:F,pagination:U}=R;return await ft(i,"common").findAllFlat(ua({relation:z,filters:ft(i,"gql").graphQLFiltersToStrapiQuery(I,E),sort:F,pagination:U?{...U,withCount:!Ce.isEmpty(U)}:void 0}),void 0)}}},jv=(i,u)=>{const{nonNull:o,list:h,stringArg:m}=u,{service:A}=i.plugin("graphql"),{args:E}=A("internals"),{naming:{getFiltersInputTypeName:T}}=A("utils"),R=i.contentType(sr(i,"comment"));return{type:o(h("CommentNested")),args:{relation:o(m()),sort:E.SortArg,filters:T(R)},async resolve(z,I){const{relation:F,filters:U,sort:ie}=I;return await ft(i,"common").findAllInHierarchy({...ua({relation:F,filters:ft(i,"gql").graphQLFiltersToStrapiQuery(U,R),sort:ie}),dropBlockedThreads:!0})}}},lr={ENABLED_COLLECTIONS:"enabledCollections",APPROVAL_FLOW:"approvalFlow",ENTRY_LABEL:"entryLabel",MODERATOR_ROLES:"moderatorRoles",BAD_WORDS:"badWords",AUTHOR_BLOCKED_PROPS:"blockedAuthorProps"},ol={GENERIC:"GENERIC",STRAPI:"STRAPI"},$v={relatedUid:/^(?<uid>[a-z0-9-]+\:{2}[a-z0-9-]+\.[a-z0-9-]+)\:{1}(?<id>[a-z0-9-]+)$/i},kv=(i,u)=>{const{nonNull:o,intArg:h,arg:m}=u,{service:A}=i.plugin("graphql"),{args:E}=A("internals"),{naming:{getFiltersInputTypeName:T}}=A("utils"),R=i.contentType(sr(i,"comment"));return{type:"ResponseFindAllPerAuthor",args:{authorId:o(h()),authorType:m({type:"CommentAuthorType"}),filters:T(R),pagination:E.PaginationArg,sort:E.SortArg},async resolve(z,I){const{authorId:F,authorType:U,filters:ie,sort:j,pagination:Z}=I,ee=U!==ol.GENERIC;return await ft(i,"common").findAllPerAuthor(ua({filters:ft(i,"gql").graphQLFiltersToStrapiQuery(ie,R),sort:j,pagination:Z?{...Z,withCount:!Ce.isEmpty(Z)}:void 0,authorId:F}),ee)}}},Vv=(i,u)=>{const o={findAllFlat:Bv,findAllInHierarchy:jv,findAllPerAuthor:kv};return u.extendType({type:"Query",definition(h){for(const[m,A]of Object.entries(o)){const E=A(i,u);h.field(m,E)}}})},Gv=i=>i.objectType({name:"CommentSingle",definition(u){u.id("id"),u.string("documentId"),u.nonNull.string("content"),u.boolean("blocked"),u.boolean("blockedThread"),u.boolean("removed"),u.string("approvalStatus"),u.field("threadOf",{type:"CommentSingle"}),u.field("author",{type:"CommentAuthor"}),u.string("createdAt"),u.string("updatedAt")}}),qv=i=>i.objectType({name:"CommentAuthor",definition(u){u.id("id"),u.nonNull.string("name"),u.nonNull.string("email"),u.string("avatar")}}),Hv=i=>i.enumType({name:"CommentAuthorType",description:"User type which was the author of comment - Strapi built-in or generic",members:Object.values(ol)}),Yv=i=>i.objectType({name:"CommentNested",definition(u){u.id("id"),u.string("documentId"),u.nonNull.string("content"),u.boolean("blocked"),u.boolean("blockedThread"),u.string("approvalStatus"),u.boolean("removed"),u.field("threadOf",{type:"CommentSingle"}),u.list.field("children",{type:"CommentNested"}),u.field("author",{type:"CommentAuthor"}),u.string("createdAt"),u.string("updatedAt")}}),Qv=i=>i.inputObjectType({name:"CreateComment",definition(u){u.nonNull.string("content"),u.nonNull.string("relation"),u.id("threadOf"),u.field("author",{type:"CreateCommentAuthor"})}}),Jv=i=>i.inputObjectType({name:"CreateCommentAuthor",definition(u){u.nonNull.id("id"),u.nonNull.string("name"),u.string("email"),u.string("avatar")}}),Xv=i=>i.inputObjectType({name:"CreateReport",definition(u){u.id("commentId"),u.nonNull.string("relation"),u.nonNull.string("content"),u.field("reason",{type:"ReportReason"})}});function He(i,u){if(!!!i)throw new Error(u)}function qm(i){return typeof i=="object"&&i!==null}function Zv(i,u){if(!!!i)throw new Error("Unexpected invariant triggered.")}const Kv=/\r\n|[\n\r]/g;function vm(i,u){let o=0,h=1;for(const m of i.body.matchAll(Kv)){if(typeof m.index=="number"||Zv(!1),m.index>=u)break;o=m.index+m[0].length,h+=1}return{line:h,column:u+1-o}}function e0(i){return Hm(i.source,vm(i.source,i.start))}function Hm(i,u){const o=i.locationOffset.column-1,h="".padStart(o)+i.body,m=u.line-1,A=i.locationOffset.line-1,E=u.line+A,T=u.line===1?o:0,R=u.column+T,z=`${i.name}:${E}:${R}
|
|
28
28
|
`,I=h.split(/\r\n|[\n\r]/g),F=I[m];if(F.length>120){const U=Math.floor(R/80),ie=R%80,j=[];for(let Z=0;Z<F.length;Z+=80)j.push(F.slice(Z,Z+80));return z+xm([[`${E} |`,j[0]],...j.slice(1,U+1).map(Z=>["|",Z]),["|","^".padStart(ie)],["|",j[U+1]]])}return z+xm([[`${E-1} |`,I[m-1]],[`${E} |`,F],["|","^".padStart(R)],[`${E+1} |`,I[m+1]]])}function xm(i){const u=i.filter(([h,m])=>m!==void 0),o=Math.max(...u.map(([h])=>h.length));return u.map(([h,m])=>h.padStart(o)+(m?" "+m:"")).join(`
|
|
29
29
|
`)}function t0(i){const u=i[0];return u==null||"kind"in u||"length"in u?{nodes:u,source:i[1],positions:i[2],path:i[3],originalError:i[4],extensions:i[5]}:u}class Wn extends Error{constructor(u,...o){var h,m,A;const{nodes:E,source:T,positions:R,path:z,originalError:I,extensions:F}=t0(o);super(u),this.name="GraphQLError",this.path=z??void 0,this.originalError=I??void 0,this.nodes=Rm(Array.isArray(E)?E:E?[E]:void 0);const U=Rm((h=this.nodes)===null||h===void 0?void 0:h.map(j=>j.loc).filter(j=>j!=null));this.source=T??(U==null||(m=U[0])===null||m===void 0?void 0:m.source),this.positions=R??U?.map(j=>j.start),this.locations=R&&T?R.map(j=>vm(T,j)):U?.map(j=>vm(j.source,j.start));const ie=qm(I?.extensions)?I?.extensions:void 0;this.extensions=(A=F??ie)!==null&&A!==void 0?A:Object.create(null),Object.defineProperties(this,{message:{writable:!0,enumerable:!0},name:{enumerable:!1},nodes:{enumerable:!1},source:{enumerable:!1},positions:{enumerable:!1},originalError:{enumerable:!1}}),I!=null&&I.stack?Object.defineProperty(this,"stack",{value:I.stack,writable:!0,configurable:!0}):Error.captureStackTrace?Error.captureStackTrace(this,Wn):Object.defineProperty(this,"stack",{value:Error().stack,writable:!0,configurable:!0})}get[Symbol.toStringTag](){return"GraphQLError"}toString(){let u=this.message;if(this.nodes)for(const o of this.nodes)o.loc&&(u+=`
|
|
30
30
|
|
|
@@ -70,10 +70,10 @@ spurious results.`)}}return!1},p0=5;function g0(i,u){const[o,h]=u?[i,u]:[void 0,
|
|
|
70
70
|
`)),`
|
|
71
71
|
}`)}function le(i,u,o=""){return u!=null&&u!==""?i+u+o:""}function If(i){return le(" ",i.replace(/\n/g,`
|
|
72
72
|
`))}function Um(i){var u;return(u=i?.some(o=>o.includes(`
|
|
73
|
-
`)))!==null&&u!==void 0?u:!1}function _m(i,u){switch(i.kind){case Jt.NULL:return null;case Jt.INT:return parseInt(i.value,10);case Jt.FLOAT:return parseFloat(i.value);case Jt.STRING:case Jt.ENUM:case Jt.BOOLEAN:return i.value;case Jt.LIST:return i.values.map(o=>_m(o,u));case Jt.OBJECT:return Em(i.fields,o=>o.name.value,o=>_m(o.value,u));case Jt.VARIABLE:return u?.[i.name.value]}}function cr(i){if(i!=null||He(!1,"Must provide name."),typeof i=="string"||He(!1,"Expected name to be a string."),i.length===0)throw new Wn("Expected name to be a non-empty string.");for(let u=1;u<i.length;++u)if(!o0(i.charCodeAt(u)))throw new Wn(`Names must only contain [_a-zA-Z0-9] but "${i}" does not.`);if(!i0(i.charCodeAt(0)))throw new Wn(`Names must start with [_a-zA-Z] but "${i}" does not.`);return i}function R0(i){if(i==="true"||i==="false"||i==="null")throw new Wn(`Enum values cannot be named: ${i}`);return cr(i)}function sl(i){return N0(i)||L0(i)||z0(i)||P0(i)||D0(i)||F0(i)||U0(i)||Om(i)}function N0(i){return Di(i,Km)}function L0(i){return Di(i,j0)}function z0(i){return Di(i,V0)}function P0(i){return Di(i,G0)}function D0(i){return Di(i,H0)}function F0(i){return Di(i,Y0)}function U0(i){return Di(i,M0)}function Om(i){return Di(i,W0)}class M0{constructor(u){sl(u)||He(!1,`Expected ${Bn(u)} to be a GraphQL type.`),this.ofType=u}get[Symbol.toStringTag](){return"GraphQLList"}toString(){return"["+String(this.ofType)+"]"}toJSON(){return this.toString()}}class W0{constructor(u){B0(u)||He(!1,`Expected ${Bn(u)} to be a GraphQL nullable type.`),this.ofType=u}get[Symbol.toStringTag](){return"GraphQLNonNull"}toString(){return String(this.ofType)+"!"}toJSON(){return this.toString()}}function B0(i){return sl(i)&&!Om(i)}function Xm(i){return typeof i=="function"?i():i}function Zm(i){return typeof i=="function"?i():i}class Km{constructor(u){var o,h,m,A;const E=(o=u.parseValue)!==null&&o!==void 0?o:Pm;this.name=cr(u.name),this.description=u.description,this.specifiedByURL=u.specifiedByURL,this.serialize=(h=u.serialize)!==null&&h!==void 0?h:Pm,this.parseValue=E,this.parseLiteral=(m=u.parseLiteral)!==null&&m!==void 0?m:(T,R)=>E(_m(T,R)),this.extensions=Rr(u.extensions),this.astNode=u.astNode,this.extensionASTNodes=(A=u.extensionASTNodes)!==null&&A!==void 0?A:[],u.specifiedByURL==null||typeof u.specifiedByURL=="string"||He(!1,`${this.name} must provide "specifiedByURL" as a string, but got: ${Bn(u.specifiedByURL)}.`),u.serialize==null||typeof u.serialize=="function"||He(!1,`${this.name} must provide "serialize" function. If this custom Scalar is also used as an input type, ensure "parseValue" and "parseLiteral" functions are also provided.`),u.parseLiteral&&(typeof u.parseValue=="function"&&typeof u.parseLiteral=="function"||He(!1,`${this.name} must provide both "parseValue" and "parseLiteral" functions.`))}get[Symbol.toStringTag](){return"GraphQLScalarType"}toConfig(){return{name:this.name,description:this.description,specifiedByURL:this.specifiedByURL,serialize:this.serialize,parseValue:this.parseValue,parseLiteral:this.parseLiteral,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}}class j0{constructor(u){var o;this.name=cr(u.name),this.description=u.description,this.isTypeOf=u.isTypeOf,this.extensions=Rr(u.extensions),this.astNode=u.astNode,this.extensionASTNodes=(o=u.extensionASTNodes)!==null&&o!==void 0?o:[],this._fields=()=>tv(u),this._interfaces=()=>ev(u),u.isTypeOf==null||typeof u.isTypeOf=="function"||He(!1,`${this.name} must provide "isTypeOf" as a function, but got: ${Bn(u.isTypeOf)}.`)}get[Symbol.toStringTag](){return"GraphQLObjectType"}getFields(){return typeof this._fields=="function"&&(this._fields=this._fields()),this._fields}getInterfaces(){return typeof this._interfaces=="function"&&(this._interfaces=this._interfaces()),this._interfaces}toConfig(){return{name:this.name,description:this.description,interfaces:this.getInterfaces(),fields:nv(this.getFields()),isTypeOf:this.isTypeOf,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}}function ev(i){var u;const o=Xm((u=i.interfaces)!==null&&u!==void 0?u:[]);return Array.isArray(o)||He(!1,`${i.name} interfaces must be an Array or a function which returns an Array.`),o}function tv(i){const u=Zm(i.fields);return aa(u)||He(!1,`${i.name} fields must be an object with field names as keys or a function which returns such an object.`),Pf(u,(o,h)=>{var m;aa(o)||He(!1,`${i.name}.${h} field config must be an object.`),o.resolve==null||typeof o.resolve=="function"||He(!1,`${i.name}.${h} field resolver must be a function if provided, but got: ${Bn(o.resolve)}.`);const A=(m=o.args)!==null&&m!==void 0?m:{};return aa(A)||He(!1,`${i.name}.${h} args must be an object with argument names as keys.`),{name:cr(h),description:o.description,type:o.type,args:$0(A),resolve:o.resolve,subscribe:o.subscribe,deprecationReason:o.deprecationReason,extensions:Rr(o.extensions),astNode:o.astNode}})}function $0(i){return Object.entries(i).map(([u,o])=>({name:cr(u),description:o.description,type:o.type,defaultValue:o.defaultValue,deprecationReason:o.deprecationReason,extensions:Rr(o.extensions),astNode:o.astNode}))}function aa(i){return qm(i)&&!Array.isArray(i)}function nv(i){return Pf(i,u=>({description:u.description,type:u.type,args:k0(u.args),resolve:u.resolve,subscribe:u.subscribe,deprecationReason:u.deprecationReason,extensions:u.extensions,astNode:u.astNode}))}function k0(i){return Em(i,u=>u.name,u=>({description:u.description,type:u.type,defaultValue:u.defaultValue,deprecationReason:u.deprecationReason,extensions:u.extensions,astNode:u.astNode}))}class V0{constructor(u){var o;this.name=cr(u.name),this.description=u.description,this.resolveType=u.resolveType,this.extensions=Rr(u.extensions),this.astNode=u.astNode,this.extensionASTNodes=(o=u.extensionASTNodes)!==null&&o!==void 0?o:[],this._fields=tv.bind(void 0,u),this._interfaces=ev.bind(void 0,u),u.resolveType==null||typeof u.resolveType=="function"||He(!1,`${this.name} must provide "resolveType" as a function, but got: ${Bn(u.resolveType)}.`)}get[Symbol.toStringTag](){return"GraphQLInterfaceType"}getFields(){return typeof this._fields=="function"&&(this._fields=this._fields()),this._fields}getInterfaces(){return typeof this._interfaces=="function"&&(this._interfaces=this._interfaces()),this._interfaces}toConfig(){return{name:this.name,description:this.description,interfaces:this.getInterfaces(),fields:nv(this.getFields()),resolveType:this.resolveType,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}}class G0{constructor(u){var o;this.name=cr(u.name),this.description=u.description,this.resolveType=u.resolveType,this.extensions=Rr(u.extensions),this.astNode=u.astNode,this.extensionASTNodes=(o=u.extensionASTNodes)!==null&&o!==void 0?o:[],this._types=q0.bind(void 0,u),u.resolveType==null||typeof u.resolveType=="function"||He(!1,`${this.name} must provide "resolveType" as a function, but got: ${Bn(u.resolveType)}.`)}get[Symbol.toStringTag](){return"GraphQLUnionType"}getTypes(){return typeof this._types=="function"&&(this._types=this._types()),this._types}toConfig(){return{name:this.name,description:this.description,types:this.getTypes(),resolveType:this.resolveType,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}}function q0(i){const u=Xm(i.types);return Array.isArray(u)||He(!1,`Must provide Array of types or a function which returns such an array for Union ${i.name}.`),u}class H0{constructor(u){var o;this.name=cr(u.name),this.description=u.description,this.extensions=Rr(u.extensions),this.astNode=u.astNode,this.extensionASTNodes=(o=u.extensionASTNodes)!==null&&o!==void 0?o:[],this._values=typeof u.values=="function"?u.values:Mm(this.name,u.values),this._valueLookup=null,this._nameLookup=null}get[Symbol.toStringTag](){return"GraphQLEnumType"}getValues(){return typeof this._values=="function"&&(this._values=Mm(this.name,this._values())),this._values}getValue(u){return this._nameLookup===null&&(this._nameLookup=m0(this.getValues(),o=>o.name)),this._nameLookup[u]}serialize(u){this._valueLookup===null&&(this._valueLookup=new Map(this.getValues().map(h=>[h.value,h])));const o=this._valueLookup.get(u);if(o===void 0)throw new Wn(`Enum "${this.name}" cannot represent value: ${Bn(u)}`);return o.name}parseValue(u){if(typeof u!="string"){const h=Bn(u);throw new Wn(`Enum "${this.name}" cannot represent non-string value: ${h}.`+Ef(this,h))}const o=this.getValue(u);if(o==null)throw new Wn(`Value "${u}" does not exist in "${this.name}" enum.`+Ef(this,u));return o.value}parseLiteral(u,o){if(u.kind!==Jt.ENUM){const m=Fm(u);throw new Wn(`Enum "${this.name}" cannot represent non-enum value: ${m}.`+Ef(this,m),{nodes:u})}const h=this.getValue(u.value);if(h==null){const m=Fm(u);throw new Wn(`Value "${m}" does not exist in "${this.name}" enum.`+Ef(this,m),{nodes:u})}return h.value}toConfig(){const u=Em(this.getValues(),o=>o.name,o=>({description:o.description,value:o.value,deprecationReason:o.deprecationReason,extensions:o.extensions,astNode:o.astNode}));return{name:this.name,description:this.description,values:u,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}}function Ef(i,u){const o=i.getValues().map(m=>m.name),h=_0(u,o);return g0("the enum value",h)}function Mm(i,u){return aa(u)||He(!1,`${i} values must be an object with value names as keys.`),Object.entries(u).map(([o,h])=>(aa(h)||He(!1,`${i}.${o} must refer to an object with a "value" key representing an internal value but got: ${Bn(h)}.`),{name:R0(o),description:h.description,value:h.value!==void 0?h.value:o,deprecationReason:h.deprecationReason,extensions:Rr(h.extensions),astNode:h.astNode}))}class Y0{constructor(u){var o,h;this.name=cr(u.name),this.description=u.description,this.extensions=Rr(u.extensions),this.astNode=u.astNode,this.extensionASTNodes=(o=u.extensionASTNodes)!==null&&o!==void 0?o:[],this.isOneOf=(h=u.isOneOf)!==null&&h!==void 0?h:!1,this._fields=Q0.bind(void 0,u)}get[Symbol.toStringTag](){return"GraphQLInputObjectType"}getFields(){return typeof this._fields=="function"&&(this._fields=this._fields()),this._fields}toConfig(){const u=Pf(this.getFields(),o=>({description:o.description,type:o.type,defaultValue:o.defaultValue,deprecationReason:o.deprecationReason,extensions:o.extensions,astNode:o.astNode}));return{name:this.name,description:this.description,fields:u,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes,isOneOf:this.isOneOf}}toString(){return this.name}toJSON(){return this.toString()}}function Q0(i){const u=Zm(i.fields);return aa(u)||He(!1,`${i.name} fields must be an object with field names as keys or a function which returns such an object.`),Pf(u,(o,h)=>(!("resolve"in o)||He(!1,`${i.name}.${h} field has a resolve property, but Input Types cannot define resolvers.`),{name:cr(h),description:o.description,type:o.type,defaultValue:o.defaultValue,deprecationReason:o.deprecationReason,extensions:Rr(o.extensions),astNode:o.astNode}))}function Fi(i){const u=J0(i);if(u)throw u;return i}function J0(i){if(typeof i=="string"||He(!1,"Expected name to be a string."),i.startsWith("__"))return new Wn(`Name "${i}" must not begin with "__", which is reserved by GraphQL introspection.`);try{cr(i)}catch(u){return u}}const X0=i=>i.scalarType({name:"ID",asNexusMethod:"id",description:"id as string or integer",serialize:u=>u,parseValue(u){const o=parseInt(u);return Ce.isNumber(o)?o:u},parseLiteral(u){return u.kind===Jt.INT||u.kind===Jt.STRING?u.value:null}}),Z0=i=>i.inputObjectType({name:"IdentifyCommentAuthor",definition(u){u.nonNull.id("id")}}),K0=i=>i.inputObjectType({name:"RemoveComment",definition(u){u.id("id"),u.nonNull.string("relation"),u.field("author",{type:"IdentifyCommentAuthor"})}}),ey=i=>i.objectType({name:"Report",definition(u){u.id("id"),u.nonNull.string("content"),u.field("reason",{type:"ReportReason"}),u.field("related",{type:"CommentSingle"}),u.string("createdAt"),u.string("updatedAt")}}),ty=(i,{reportReasons:u})=>i.enumType({name:"ReportReason",description:"Reason of abuse report",members:Object.values(u)}),ny=i=>i.objectType({name:"ResponseFindAll",definition(u){u.nonNull.list.field("data",{type:"CommentSingle"}),u.field("meta",{type:"ResponseMeta"})}}),ry=i=>i.objectType({name:"ResponseFindAllPerAuthor",definition(u){u.nonNull.list.field("data",{type:"CommentSingle"}),u.field("meta",{type:"ResponseMeta"})}}),iy=i=>i.objectType({name:"ResponseMeta",definition(u){u.field("pagination",{type:"ResponsePagination"})}}),oy=i=>i.objectType({name:"ResponsePagination",definition(u){u.int("page"),u.int("pageSize"),u.int("pageCount"),u.int("total"),u.int("start"),u.int("limit")}}),uy=i=>i.inputObjectType({name:"UpdateComment",definition(u){u.id("id"),u.nonNull.string("content"),u.nonNull.string("relation"),u.field("author",{type:"IdentifyCommentAuthor"})}}),ay=[Gv,qv,Hv,Yv,Qv,Jv,Xv,X0,Z0,K0,ty,ny,ry,iy,oy,uy,ey],sy=(i,u)=>ay.map(o=>o(u,i)),rv=i=>i.plugin("graphql").service("extension"),ly=i=>{const u=rv(i);u.shadowCRUD(sr(i,"comment")).disable(),u.shadowCRUD(sr(i,"comment")).disableQueries(),u.shadowCRUD(sr(i,"comment")).disableMutations(),u.shadowCRUD(sr(i,"comment-report")).disable(),u.shadowCRUD(sr(i,"comment-report")).disableQueries(),u.shadowCRUD(sr(i,"comment-report")).disableMutations()},cy=async({strapi:i})=>{i.plugin("graphql")&&(ly(i),(await ft(i,"common").getConfig(oa.ENABLED_COLLECTIONS,[])).length&&await fy(i))},fy=async i=>{const u=rv(i),o=await ft(i,"common").getConfig();u.use(({strapi:h,nexus:m})=>{const A=sy(o,m),E=Vv(h,m),T=Wv(h,m),R=Pv(o);return{types:[A,E,T],resolversConfig:R}})},ra={render:i=>`plugin::comments.${i}`,comments:{read:"comments-read",moderate:"comments-moderate"},reports:{read:"reports-read",review:"reports-review"},settings:{read:"settings-read",change:"settings-change"}},hy=async({strapi:i})=>{if(i.plugin("graphql")&&await cy({strapi:i}),Object.keys(i.plugins).indexOf("users-permissions")===-1)throw new Error("In order to make the comments plugin work the users-permissions plugin is required");const u=[{section:"plugins",displayName:"Comments: Read",uid:ra.comments.read,pluginName:"comments"},{section:"plugins",displayName:"Comments: Moderate",uid:ra.comments.moderate,pluginName:"comments"},{section:"plugins",displayName:"Reports: Read",uid:ra.reports.read,pluginName:"comments"},{section:"plugins",displayName:"Reports: Moderate",uid:ra.reports.review,pluginName:"comments"},{section:"plugins",displayName:"Settings: Read",uid:ra.settings.read,pluginName:"comments"},{section:"plugins",displayName:"Settings: Change",uid:ra.settings.change,pluginName:"comments"}];await i.admin.services.permission.actionProvider.registerMany(u);const o=ft(i,"common"),h=await o.getConfig(lr.ENABLED_COLLECTIONS,[]);h.length&&i.db.lifecycles.subscribe({models:h,afterDelete:async m=>{const A=m.model.uid,{documentId:E,locale:T}=m.result,R=[A,E].join(":");await o.perRemove(R,T)}})},dy={isValidationEnabled:!0,enabledCollections:[],moderatorRoles:[],approvalFlow:[],entryLabel:{"*":["Title","title","Name","name","Subject","subject"]},reportReasons:{BAD_LANGUAGE:Xt.BAD_LANGUAGE,DISCRIMINATION:Xt.DISCRIMINATION,OTHER:Xt.OTHER},blockedAuthorProps:[]},py=v.z.object({[Xt.BAD_LANGUAGE]:v.z.literal(Xt.BAD_LANGUAGE),[Xt.OTHER]:v.z.literal(Xt.OTHER),[Xt.DISCRIMINATION]:v.z.literal(Xt.DISCRIMINATION)}),bm=v.z.object({isValidationEnabled:v.z.boolean().optional(),reportReasons:py.optional(),isGQLPluginEnabled:v.z.boolean().optional(),[lr.ENABLED_COLLECTIONS]:v.z.array(v.z.string()),[lr.MODERATOR_ROLES]:v.z.array(v.z.string()),[lr.APPROVAL_FLOW]:v.z.array(v.z.string()),[lr.ENTRY_LABEL]:v.z.record(v.z.array(v.z.string())),[lr.BAD_WORDS]:v.z.boolean().optional(),[lr.AUTHOR_BLOCKED_PROPS]:v.z.array(v.z.string()),gql:v.z.object({auth:v.z.boolean().optional()}).optional(),client:v.z.object({url:v.z.string().nullable(),contactEmail:v.z.string().nullable()}).default({url:null,contactEmail:null})}),gy={default:bm.parse(dy),validate:i=>bm.safeParse(i)},Y=({left:i,right:u})=>{if(u!==void 0&&i!==void 0)throw new Error(`Received both left and right values at runtime when opening an Either
|
|
73
|
+
`)))!==null&&u!==void 0?u:!1}function _m(i,u){switch(i.kind){case Jt.NULL:return null;case Jt.INT:return parseInt(i.value,10);case Jt.FLOAT:return parseFloat(i.value);case Jt.STRING:case Jt.ENUM:case Jt.BOOLEAN:return i.value;case Jt.LIST:return i.values.map(o=>_m(o,u));case Jt.OBJECT:return Em(i.fields,o=>o.name.value,o=>_m(o.value,u));case Jt.VARIABLE:return u?.[i.name.value]}}function cr(i){if(i!=null||He(!1,"Must provide name."),typeof i=="string"||He(!1,"Expected name to be a string."),i.length===0)throw new Wn("Expected name to be a non-empty string.");for(let u=1;u<i.length;++u)if(!o0(i.charCodeAt(u)))throw new Wn(`Names must only contain [_a-zA-Z0-9] but "${i}" does not.`);if(!i0(i.charCodeAt(0)))throw new Wn(`Names must start with [_a-zA-Z] but "${i}" does not.`);return i}function R0(i){if(i==="true"||i==="false"||i==="null")throw new Wn(`Enum values cannot be named: ${i}`);return cr(i)}function sl(i){return N0(i)||L0(i)||z0(i)||P0(i)||D0(i)||F0(i)||U0(i)||Om(i)}function N0(i){return Di(i,Km)}function L0(i){return Di(i,j0)}function z0(i){return Di(i,V0)}function P0(i){return Di(i,G0)}function D0(i){return Di(i,H0)}function F0(i){return Di(i,Y0)}function U0(i){return Di(i,M0)}function Om(i){return Di(i,W0)}class M0{constructor(u){sl(u)||He(!1,`Expected ${Bn(u)} to be a GraphQL type.`),this.ofType=u}get[Symbol.toStringTag](){return"GraphQLList"}toString(){return"["+String(this.ofType)+"]"}toJSON(){return this.toString()}}class W0{constructor(u){B0(u)||He(!1,`Expected ${Bn(u)} to be a GraphQL nullable type.`),this.ofType=u}get[Symbol.toStringTag](){return"GraphQLNonNull"}toString(){return String(this.ofType)+"!"}toJSON(){return this.toString()}}function B0(i){return sl(i)&&!Om(i)}function Xm(i){return typeof i=="function"?i():i}function Zm(i){return typeof i=="function"?i():i}class Km{constructor(u){var o,h,m,A;const E=(o=u.parseValue)!==null&&o!==void 0?o:Pm;this.name=cr(u.name),this.description=u.description,this.specifiedByURL=u.specifiedByURL,this.serialize=(h=u.serialize)!==null&&h!==void 0?h:Pm,this.parseValue=E,this.parseLiteral=(m=u.parseLiteral)!==null&&m!==void 0?m:(T,R)=>E(_m(T,R)),this.extensions=Rr(u.extensions),this.astNode=u.astNode,this.extensionASTNodes=(A=u.extensionASTNodes)!==null&&A!==void 0?A:[],u.specifiedByURL==null||typeof u.specifiedByURL=="string"||He(!1,`${this.name} must provide "specifiedByURL" as a string, but got: ${Bn(u.specifiedByURL)}.`),u.serialize==null||typeof u.serialize=="function"||He(!1,`${this.name} must provide "serialize" function. If this custom Scalar is also used as an input type, ensure "parseValue" and "parseLiteral" functions are also provided.`),u.parseLiteral&&(typeof u.parseValue=="function"&&typeof u.parseLiteral=="function"||He(!1,`${this.name} must provide both "parseValue" and "parseLiteral" functions.`))}get[Symbol.toStringTag](){return"GraphQLScalarType"}toConfig(){return{name:this.name,description:this.description,specifiedByURL:this.specifiedByURL,serialize:this.serialize,parseValue:this.parseValue,parseLiteral:this.parseLiteral,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}}class j0{constructor(u){var o;this.name=cr(u.name),this.description=u.description,this.isTypeOf=u.isTypeOf,this.extensions=Rr(u.extensions),this.astNode=u.astNode,this.extensionASTNodes=(o=u.extensionASTNodes)!==null&&o!==void 0?o:[],this._fields=()=>tv(u),this._interfaces=()=>ev(u),u.isTypeOf==null||typeof u.isTypeOf=="function"||He(!1,`${this.name} must provide "isTypeOf" as a function, but got: ${Bn(u.isTypeOf)}.`)}get[Symbol.toStringTag](){return"GraphQLObjectType"}getFields(){return typeof this._fields=="function"&&(this._fields=this._fields()),this._fields}getInterfaces(){return typeof this._interfaces=="function"&&(this._interfaces=this._interfaces()),this._interfaces}toConfig(){return{name:this.name,description:this.description,interfaces:this.getInterfaces(),fields:nv(this.getFields()),isTypeOf:this.isTypeOf,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}}function ev(i){var u;const o=Xm((u=i.interfaces)!==null&&u!==void 0?u:[]);return Array.isArray(o)||He(!1,`${i.name} interfaces must be an Array or a function which returns an Array.`),o}function tv(i){const u=Zm(i.fields);return aa(u)||He(!1,`${i.name} fields must be an object with field names as keys or a function which returns such an object.`),Pf(u,(o,h)=>{var m;aa(o)||He(!1,`${i.name}.${h} field config must be an object.`),o.resolve==null||typeof o.resolve=="function"||He(!1,`${i.name}.${h} field resolver must be a function if provided, but got: ${Bn(o.resolve)}.`);const A=(m=o.args)!==null&&m!==void 0?m:{};return aa(A)||He(!1,`${i.name}.${h} args must be an object with argument names as keys.`),{name:cr(h),description:o.description,type:o.type,args:$0(A),resolve:o.resolve,subscribe:o.subscribe,deprecationReason:o.deprecationReason,extensions:Rr(o.extensions),astNode:o.astNode}})}function $0(i){return Object.entries(i).map(([u,o])=>({name:cr(u),description:o.description,type:o.type,defaultValue:o.defaultValue,deprecationReason:o.deprecationReason,extensions:Rr(o.extensions),astNode:o.astNode}))}function aa(i){return qm(i)&&!Array.isArray(i)}function nv(i){return Pf(i,u=>({description:u.description,type:u.type,args:k0(u.args),resolve:u.resolve,subscribe:u.subscribe,deprecationReason:u.deprecationReason,extensions:u.extensions,astNode:u.astNode}))}function k0(i){return Em(i,u=>u.name,u=>({description:u.description,type:u.type,defaultValue:u.defaultValue,deprecationReason:u.deprecationReason,extensions:u.extensions,astNode:u.astNode}))}class V0{constructor(u){var o;this.name=cr(u.name),this.description=u.description,this.resolveType=u.resolveType,this.extensions=Rr(u.extensions),this.astNode=u.astNode,this.extensionASTNodes=(o=u.extensionASTNodes)!==null&&o!==void 0?o:[],this._fields=tv.bind(void 0,u),this._interfaces=ev.bind(void 0,u),u.resolveType==null||typeof u.resolveType=="function"||He(!1,`${this.name} must provide "resolveType" as a function, but got: ${Bn(u.resolveType)}.`)}get[Symbol.toStringTag](){return"GraphQLInterfaceType"}getFields(){return typeof this._fields=="function"&&(this._fields=this._fields()),this._fields}getInterfaces(){return typeof this._interfaces=="function"&&(this._interfaces=this._interfaces()),this._interfaces}toConfig(){return{name:this.name,description:this.description,interfaces:this.getInterfaces(),fields:nv(this.getFields()),resolveType:this.resolveType,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}}class G0{constructor(u){var o;this.name=cr(u.name),this.description=u.description,this.resolveType=u.resolveType,this.extensions=Rr(u.extensions),this.astNode=u.astNode,this.extensionASTNodes=(o=u.extensionASTNodes)!==null&&o!==void 0?o:[],this._types=q0.bind(void 0,u),u.resolveType==null||typeof u.resolveType=="function"||He(!1,`${this.name} must provide "resolveType" as a function, but got: ${Bn(u.resolveType)}.`)}get[Symbol.toStringTag](){return"GraphQLUnionType"}getTypes(){return typeof this._types=="function"&&(this._types=this._types()),this._types}toConfig(){return{name:this.name,description:this.description,types:this.getTypes(),resolveType:this.resolveType,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}}function q0(i){const u=Xm(i.types);return Array.isArray(u)||He(!1,`Must provide Array of types or a function which returns such an array for Union ${i.name}.`),u}class H0{constructor(u){var o;this.name=cr(u.name),this.description=u.description,this.extensions=Rr(u.extensions),this.astNode=u.astNode,this.extensionASTNodes=(o=u.extensionASTNodes)!==null&&o!==void 0?o:[],this._values=typeof u.values=="function"?u.values:Mm(this.name,u.values),this._valueLookup=null,this._nameLookup=null}get[Symbol.toStringTag](){return"GraphQLEnumType"}getValues(){return typeof this._values=="function"&&(this._values=Mm(this.name,this._values())),this._values}getValue(u){return this._nameLookup===null&&(this._nameLookup=m0(this.getValues(),o=>o.name)),this._nameLookup[u]}serialize(u){this._valueLookup===null&&(this._valueLookup=new Map(this.getValues().map(h=>[h.value,h])));const o=this._valueLookup.get(u);if(o===void 0)throw new Wn(`Enum "${this.name}" cannot represent value: ${Bn(u)}`);return o.name}parseValue(u){if(typeof u!="string"){const h=Bn(u);throw new Wn(`Enum "${this.name}" cannot represent non-string value: ${h}.`+Ef(this,h))}const o=this.getValue(u);if(o==null)throw new Wn(`Value "${u}" does not exist in "${this.name}" enum.`+Ef(this,u));return o.value}parseLiteral(u,o){if(u.kind!==Jt.ENUM){const m=Fm(u);throw new Wn(`Enum "${this.name}" cannot represent non-enum value: ${m}.`+Ef(this,m),{nodes:u})}const h=this.getValue(u.value);if(h==null){const m=Fm(u);throw new Wn(`Value "${m}" does not exist in "${this.name}" enum.`+Ef(this,m),{nodes:u})}return h.value}toConfig(){const u=Em(this.getValues(),o=>o.name,o=>({description:o.description,value:o.value,deprecationReason:o.deprecationReason,extensions:o.extensions,astNode:o.astNode}));return{name:this.name,description:this.description,values:u,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}}function Ef(i,u){const o=i.getValues().map(m=>m.name),h=_0(u,o);return g0("the enum value",h)}function Mm(i,u){return aa(u)||He(!1,`${i} values must be an object with value names as keys.`),Object.entries(u).map(([o,h])=>(aa(h)||He(!1,`${i}.${o} must refer to an object with a "value" key representing an internal value but got: ${Bn(h)}.`),{name:R0(o),description:h.description,value:h.value!==void 0?h.value:o,deprecationReason:h.deprecationReason,extensions:Rr(h.extensions),astNode:h.astNode}))}class Y0{constructor(u){var o,h;this.name=cr(u.name),this.description=u.description,this.extensions=Rr(u.extensions),this.astNode=u.astNode,this.extensionASTNodes=(o=u.extensionASTNodes)!==null&&o!==void 0?o:[],this.isOneOf=(h=u.isOneOf)!==null&&h!==void 0?h:!1,this._fields=Q0.bind(void 0,u)}get[Symbol.toStringTag](){return"GraphQLInputObjectType"}getFields(){return typeof this._fields=="function"&&(this._fields=this._fields()),this._fields}toConfig(){const u=Pf(this.getFields(),o=>({description:o.description,type:o.type,defaultValue:o.defaultValue,deprecationReason:o.deprecationReason,extensions:o.extensions,astNode:o.astNode}));return{name:this.name,description:this.description,fields:u,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes,isOneOf:this.isOneOf}}toString(){return this.name}toJSON(){return this.toString()}}function Q0(i){const u=Zm(i.fields);return aa(u)||He(!1,`${i.name} fields must be an object with field names as keys or a function which returns such an object.`),Pf(u,(o,h)=>(!("resolve"in o)||He(!1,`${i.name}.${h} field has a resolve property, but Input Types cannot define resolvers.`),{name:cr(h),description:o.description,type:o.type,defaultValue:o.defaultValue,deprecationReason:o.deprecationReason,extensions:Rr(o.extensions),astNode:o.astNode}))}function Fi(i){const u=J0(i);if(u)throw u;return i}function J0(i){if(typeof i=="string"||He(!1,"Expected name to be a string."),i.startsWith("__"))return new Wn(`Name "${i}" must not begin with "__", which is reserved by GraphQL introspection.`);try{cr(i)}catch(u){return u}}const X0=i=>i.scalarType({name:"ID",asNexusMethod:"id",description:"id as string or integer",serialize:u=>u,parseValue(u){const o=parseInt(u);return Ce.isNumber(o)?o:u},parseLiteral(u){return u.kind===Jt.INT||u.kind===Jt.STRING?u.value:null}}),Z0=i=>i.inputObjectType({name:"IdentifyCommentAuthor",definition(u){u.nonNull.id("id")}}),K0=i=>i.inputObjectType({name:"RemoveComment",definition(u){u.id("id"),u.nonNull.string("relation"),u.field("author",{type:"IdentifyCommentAuthor"})}}),ey=i=>i.objectType({name:"Report",definition(u){u.id("id"),u.nonNull.string("content"),u.field("reason",{type:"ReportReason"}),u.field("related",{type:"CommentSingle"}),u.string("createdAt"),u.string("updatedAt")}}),ty=(i,{reportReasons:u})=>i.enumType({name:"ReportReason",description:"Reason of abuse report",members:Object.values(u)}),ny=i=>i.objectType({name:"ResponseFindAll",definition(u){u.nonNull.list.field("data",{type:"CommentSingle"}),u.field("meta",{type:"ResponseMeta"})}}),ry=i=>i.objectType({name:"ResponseFindAllPerAuthor",definition(u){u.nonNull.list.field("data",{type:"CommentSingle"}),u.field("meta",{type:"ResponseMeta"})}}),iy=i=>i.objectType({name:"ResponseMeta",definition(u){u.field("pagination",{type:"ResponsePagination"})}}),oy=i=>i.objectType({name:"ResponsePagination",definition(u){u.int("page"),u.int("pageSize"),u.int("pageCount"),u.int("total"),u.int("start"),u.int("limit")}}),uy=i=>i.inputObjectType({name:"UpdateComment",definition(u){u.id("id"),u.nonNull.string("content"),u.nonNull.string("relation"),u.field("author",{type:"IdentifyCommentAuthor"})}}),ay=[Gv,qv,Hv,Yv,Qv,Jv,Xv,X0,Z0,K0,ty,ny,ry,iy,oy,uy,ey],sy=(i,u)=>ay.map(o=>o(u,i)),rv=i=>i.plugin("graphql").service("extension"),ly=i=>{const u=rv(i);u.shadowCRUD(sr(i,"comment")).disable(),u.shadowCRUD(sr(i,"comment")).disableQueries(),u.shadowCRUD(sr(i,"comment")).disableMutations(),u.shadowCRUD(sr(i,"comment-report")).disable(),u.shadowCRUD(sr(i,"comment-report")).disableQueries(),u.shadowCRUD(sr(i,"comment-report")).disableMutations()},cy=async({strapi:i})=>{i.plugin("graphql")&&(ly(i),(await ft(i,"common").getConfig(oa.ENABLED_COLLECTIONS,[])).length&&await fy(i))},fy=async i=>{const u=rv(i),o=await ft(i,"common").getConfig();u.use(({strapi:h,nexus:m})=>{const A=sy(o,m),E=Vv(h,m),T=Wv(h,m),R=Pv(o);return{types:[A,E,T],resolversConfig:R}})},ra={comments:{read:"comments-read",moderate:"comments-moderate"},reports:{read:"reports-read",review:"reports-review"},settings:{read:"settings-read",change:"settings-change"}},hy=async({strapi:i})=>{if(i.plugin("graphql")&&await cy({strapi:i}),Object.keys(i.plugins).indexOf("users-permissions")===-1)throw new Error("In order to make the comments plugin work the users-permissions plugin is required");const u=[{section:"plugins",displayName:"Comments: Read",uid:ra.comments.read,pluginName:"comments"},{section:"plugins",displayName:"Comments: Moderate",uid:ra.comments.moderate,pluginName:"comments"},{section:"plugins",displayName:"Reports: Read",uid:ra.reports.read,pluginName:"comments"},{section:"plugins",displayName:"Reports: Moderate",uid:ra.reports.review,pluginName:"comments"},{section:"plugins",displayName:"Settings: Read",uid:ra.settings.read,pluginName:"comments"},{section:"plugins",displayName:"Settings: Change",uid:ra.settings.change,pluginName:"comments"}];await i.admin.services.permission.actionProvider.registerMany(u);const o=ft(i,"common"),h=await o.getConfig(lr.ENABLED_COLLECTIONS,[]);h.length&&i.db.lifecycles.subscribe({models:h,afterDelete:async m=>{const A=m.model.uid,{documentId:E,locale:T}=m.result,R=[A,E].join(":");await o.perRemove(R,T)}})},dy={isValidationEnabled:!0,enabledCollections:[],moderatorRoles:[],approvalFlow:[],entryLabel:{"*":["Title","title","Name","name","Subject","subject"]},reportReasons:{BAD_LANGUAGE:Xt.BAD_LANGUAGE,DISCRIMINATION:Xt.DISCRIMINATION,OTHER:Xt.OTHER},blockedAuthorProps:[]},py=v.z.object({[Xt.BAD_LANGUAGE]:v.z.literal(Xt.BAD_LANGUAGE),[Xt.OTHER]:v.z.literal(Xt.OTHER),[Xt.DISCRIMINATION]:v.z.literal(Xt.DISCRIMINATION)}),bm=v.z.object({isValidationEnabled:v.z.boolean().optional(),reportReasons:py.optional(),isGQLPluginEnabled:v.z.boolean().optional(),[lr.ENABLED_COLLECTIONS]:v.z.array(v.z.string()),[lr.MODERATOR_ROLES]:v.z.array(v.z.string()),[lr.APPROVAL_FLOW]:v.z.array(v.z.string()),[lr.ENTRY_LABEL]:v.z.record(v.z.array(v.z.string())),[lr.BAD_WORDS]:v.z.boolean().optional(),[lr.AUTHOR_BLOCKED_PROPS]:v.z.array(v.z.string()),gql:v.z.object({auth:v.z.boolean().optional()}).optional(),client:v.z.object({url:v.z.string().nullable(),contactEmail:v.z.string().nullable()}).default({url:null,contactEmail:null})}),gy={default:bm.parse(dy),validate:i=>bm.safeParse(i)},Y=({left:i,right:u})=>{if(u!==void 0&&i!==void 0)throw new Error(`Received both left and right values at runtime when opening an Either
|
|
74
74
|
Left: ${JSON.stringify(i)}
|
|
75
75
|
Right: ${JSON.stringify(u)}`);if(i!==void 0)return i;if(u!==void 0)return u;throw new Error("Received no left or right values at runtime when opening Either")},my=i=>i.left!==void 0,de=i=>i.right!==void 0,iv=i=>({left:i}),il=i=>({right:i});let bn=class ov extends Error{constructor(u,o,h=void 0){super(),this.name="Strapi:Plugin:Comments",this.status=u||500,this.message=o||"Internal error",this.payload=h,Object.setPrototypeOf(this,ov.prototype)}toString(u=this){return`${u.name} - ${u.message}`}toJSON(){return this.payload?{...this.payload,name:this.name,message:this.message}:this}};const ce=(i,u)=>u instanceof bn?i.throw(u.status,JSON.stringify(u)):u,vy=v.z.union([v.z.object({$eq:v.z.string().min(1)}),v.z.object({$eqi:v.z.string().min(1)})]),yy=v.z.union([v.z.object({$ne:v.z.string().min(1)}),v.z.object({$nei:v.z.string().min(1)})]),_y=v.z.union([v.z.object({$gt:v.z.string().min(1)}),v.z.object({$gte:v.z.string().min(1)})]),by=v.z.union([v.z.object({$lt:v.z.string().min(1)}),v.z.object({$lte:v.z.string().min(1)})]),wy=v.z.union([v.z.object({$startsWith:v.z.string().min(1)}),v.z.object({$startsWithi:v.z.string().min(1)})]),Ay=v.z.union([v.z.object({$endsWith:v.z.string().min(1)}),v.z.object({$endsWithi:v.z.string().min(1)})]),Sy=v.z.union([v.z.object({$contains:v.z.string().min(1)}),v.z.object({$containsi:v.z.string().min(1)})]),Ey=v.z.union([v.z.object({$notContains:v.z.string().min(1)}),v.z.object({$notContainsi:v.z.string().min(1)})]),Jr=v.z.union([v.z.string(),v.z.number()]).transform(i=>Number(i)).pipe(v.z.number()),Oy=v.z.union([v.z.string(),v.z.boolean()]).transform(i=>typeof i=="string"?["t","true"].includes(i):i).pipe(v.z.boolean()),Ty=v.z.object({_q:v.z.string().optional()}),uv=v.z.string().regex(/^(createdAt|updatedAt|id):(desc|asc|ASC|DESC)$/,"Invalid orderBy options"),Iy=v.z.union([v.z.string(),v.z.number(),vy,yy,_y,by,wy,Ay,Sy,Ey,v.z.object({$notNull:v.z.boolean()})]),Cy=i=>v.z.object(Object.keys(i).reduce((u,o)=>({...u,[o]:Iy.optional()}),{})),Xr={single:"single",array:"array"},sa=i=>{const u=Object.entries(i).reduce((o,[h,m])=>({...o,[h]:m===Xr.single?Jr:v.z.array(Jr)}),{});return v.z.object(u)},xy=v.z.object({pageSize:Jr.default(10),page:Jr.default(1)}).merge(Ty).merge(v.z.object({orderBy:uv.optional().nullable()})),Nt=i=>{if(!i.success){const u=i.error.issues.map(o=>`Path: ${o.path.join(".")} Code: ${o.code} Message: ${o.message}`).join(`
|
|
76
|
-
`);return iv(new bn(400,u))}return il(i.data)},Df=i=>v.z.string().regex(gm.relatedUid,{message:'Field "relation" got incorrect format, use format like "api::<collection name>.<content type name>:<document id>"'}).refine(u=>i.some(o=>u.startsWith(o)),"Invalid relation or not enabled collections"),Ry=v.z.object({id:v.z.union([v.z.number(),v.z.string()]),name:v.z.string().min(1).max(100).optional(),email:v.z.string().email(),avatar:v.z.string().url().optional()});v.z.union([v.z.string(),v.z.number(),v.z.boolean()]);const av=xy.merge(v.z.object({_q:v.z.string().optional()})),Qr=i=>Nt(sa({id:Xr.single}).safeParse(i)),Ny=i=>Nt(av.safeParse(i)),Ly=i=>Nt(av.safeParse(i)),zy=(i,u)=>{const o=sa({id:Xr.single}).merge(v.z.object({removed:v.z.string().optional().transform(h=>h==="true")})).safeParse({...u,id:i});return Nt(o)},Py=i=>Nt(sa({id:Xr.single,reportId:Xr.single}).safeParse(i)),Dy=i=>{const u=sa({id:Xr.single,reportIds:Xr.array}).safeParse(i);return Nt(u)},Fy=i=>{const u=sa({reportIds:Xr.array}).safeParse(i);return Nt(u)},Uy=v.z.object({id:v.z.union([v.z.string(),v.z.number()]),email:v.z.string().email(),lastname:v.z.string().nullable().optional(),username:v.z.string().nullable().optional(),firstname:v.z.string().nullable().optional()}),sv=v.z.object({id:v.z.union([v.z.string(),v.z.number()]),content:v.z.string(),author:Uy}),My=i=>Nt(sv.safeParse(i)),Wy=i=>Nt(sv.pick({content:!0,id:!0}).safeParse(i)),By=i=>Nt(bm.safeParse(i)),lv=i=>v.z.object({relation:Df(i),content:v.z.string().min(1),author:Ry.optional(),threadOf:v.z.union([v.z.string(),v.z.number()]).optional(),approvalStatus:v.z.nativeEnum(Io).optional(),locale:v.z.string().optional()}),jy=(i,u,o)=>Nt(lv(i).safeParse({...o,relation:u})),$y=(i,u)=>Nt(lv(i).pick({content:!0,relation:!0,author:!0}).merge(sa({commentId:Xr.single})).safeParse(u)),ky=i=>v.z.object({relation:Df(i)}),Vy=v.z.object({pagination:v.z.object({pageSize:Jr.default(10),page:Jr.default(1),withCount:Oy.optional().default(!1)}).optional()}),Tm=i=>v.z.object({sort:uv.optional().nullable().default("createdAt:desc"),fields:v.z.string().array().optional(),omit:v.z.string().array().optional(),filters:Cy({id:!0,content:!0,authorId:!0,authorName:!0,authorEmail:!0,createdAt:!0,updatedAt:!0,removed:!0,blocked:!0,blockedThread:!0}).optional(),isAdmin:v.z.boolean().optional().default(!1),populate:v.z.record(v.z.union([v.z.boolean(),v.z.object({populate:v.z.boolean()})])).optional(),limit:Jr.optional(),skip:Jr.optional(),locale:v.z.string().optional()}).merge(ky(i)).merge(Vy),Gy=(i,u,o)=>Nt(Tm(i).safeParse({...o,relation:u})),qy=(i,u,o)=>{const h=Tm(i).pick({sort:!0,fields:!0,omit:!0,filters:!0,isAdmin:!0,populate:!0,limit:!0,skip:!0,relation:!0,locale:!0}).merge(v.z.object({startingFromId:v.z.number().optional(),dropBlockedThreads:v.z.boolean().optional().default(!1)}));return Nt(h.safeParse({...o,relation:u}))},Hy=(i,u)=>{const o=Tm([]).pick({sort:!0,fields:!0,omit:!0,isAdmin:!0,populate:!0,limit:!0,skip:!0,pagination:!0,filters:!0,locale:!0}).merge(v.z.object({type:v.z.union([v.z.literal(ol.GENERIC),v.z.literal("generic")]).optional(),authorId:v.z.union([v.z.string(),v.z.number()])}));return Nt(o.safeParse({...u,...i}))},Yy=i=>v.z.object({relation:Df(i[lr.ENABLED_COLLECTIONS]),commentId:Jr,content:v.z.string().min(1),reason:v.z.nativeEnum(i.reportReasons)}),Qy=(i,u)=>Nt(Yy(i).safeParse(u)),Jy=i=>v.z.object({relation:Df(i),commentId:v.z.union([v.z.string(),v.z.number()]),authorId:v.z.union([v.z.string(),v.z.number()])}),Xy=(i,u)=>Nt(Jy(i).safeParse(u)),Zy=({strapi:i})=>({getService(u){return ft(i,u)},async findAll(u){const o=Ny(u.query);if(de(o))return this.getService("admin").findAll(Y(o));throw ce(u,Y(o))},async findReports(u){const o=Ly(u.query);if(de(o))return this.getService("admin").findReports(Y(o));throw ce(u,Y(o))},async findOne(u){const o=zy(u.params.id,u.query);if(de(o))return this.getService("admin").findOneAndThread(Y(o));throw ce(u,Y(o))},async blockComment(u){const o=Qr(u.params);if(de(o))return this.getService("admin").changeBlockedComment(Y(o).id,!0);throw ce(u,Y(o))},async unblockComment(u){const o=Qr(u.params);if(de(o))return this.getService("admin").changeBlockedComment(Y(o).id,!1);throw ce(u,Y(o))},async deleteComment(u){const o=Qr(u.params);if(de(o))return this.getService("admin").deleteComment(Y(o).id);throw ce(u,Y(o))},async blockCommentThread(u){const o=Qr(u.params);if(de(o))return this.getService("admin").blockCommentThread(Y(o).id,!0);throw ce(u,Y(o))},async unblockCommentThread(u){const o=Qr(u.params);if(de(o))return this.getService("admin").blockCommentThread(Y(o).id,!1);throw ce(u,Y(o))},async resolveAbuseReport(u){const o=Py(u.params);if(de(o))return this.getService("admin").resolveAbuseReport(Y(o));throw ce(u,Y(o))},async resolveCommentMultipleAbuseReports(u){const o=Dy({...u.request.body,id:u.params.id});if(de(o))return this.getService("admin").resolveCommentMultipleAbuseReports(Y(o));throw ce(u,Y(o))},async resolveAllAbuseReportsForComment(u){const o=Qr(u.params);if(de(o))return this.getService("admin").resolveAllAbuseReportsForComment(Y(o).id);throw ce(u,Y(o))},async resolveAllAbuseReportsForThread(u){const o=Qr(u.params);if(de(o))return this.getService("admin").resolveAllAbuseReportsForThread(Y(o).id);throw ce(u,Y(o))},async resolveMultipleAbuseReports(u){const o=Fy(u.request.body);if(de(o))return this.getService("admin").resolveMultipleAbuseReports(Y(o));throw ce(u,Y(o))},async postComment(u){const o=My({id:u.params.id,content:u.request.body.content,author:u.request.body.author});if(de(o))return this.getService("admin").postComment(Y(o));throw ce(u,Y(o))},async updateComment(u){const o=Wy({id:u.params.id,content:u.request.body.content});if(de(o))return this.getService("admin").updateComment(Y(o));throw ce(u,Y(o))},async approveComment(u){const o=Qr(u.params);if(de(o))return this.getService("admin").approveComment(Y(o).id);throw ce(u,Y(o))},async rejectComment(u){const o=Qr(u.params);if(de(o))return this.getService("admin").rejectComment(Y(o).id);throw ce(u,Y(o))}}),Cr=async(i,u,o)=>Ff(i).getLocalConfig(u,o),cv=v.z.object({id:v.z.number(),documentId:v.z.string().nullable(),content:v.z.string(),blocked:v.z.boolean().nullable(),blockedThread:v.z.boolean().nullable(),blockReason:v.z.string().nullable(),isAdminComment:v.z.boolean().nullable(),removed:v.z.boolean().nullable(),approvalStatus:v.z.string().nullable(),related:v.z.string(),createdAt:v.z.string(),updatedAt:v.z.string().nullable(),publishedAt:v.z.string().nullable(),authorId:v.z.string().nullable(),authorName:v.z.string().nullable(),authorEmail:v.z.string().email().nullable(),authorAvatar:v.z.string().nullable(),authorUser:v.z.union([v.z.string(),v.z.object({id:v.z.number(),email:v.z.string().email()})]).optional().nullable(),locale:v.z.string().nullable()}),fv=v.z.object({page:v.z.number(),pageSize:v.z.number(),pageCount:v.z.number(),total:v.z.number()}),Pi=(i,u)=>o=>i?u.parseAsync(o):Promise.resolve(o),hv=(i,u)=>o=>i?u.parseAsync(o):Promise.resolve(o),Ky=v.z.object({id:v.z.number(),documentId:v.z.string().nullable(),content:v.z.string(),reason:v.z.string(),resolved:v.z.boolean(),createdAt:v.z.string(),updatedAt:v.z.string(),publishedAt:v.z.string().nullable(),locale:v.z.string().nullable()}),Wm=cv.merge(v.z.object({gotThread:v.z.boolean().nullable().optional(),threadFirstItemId:v.z.number().nullable().optional(),reports:v.z.array(Ky).default([]),author:v.z.any()})),ul=Wm.extend({threadOf:v.z.lazy(()=>v.z.union([v.z.number(),Wm])).nullable().optional()}),e_=v.z.object({id:v.z.number(),uid:v.z.string(),documentId:v.z.string(),requireCommentsApproval:v.z.boolean().nullable().optional(),locale:v.z.string().nullable().optional()});ul.omit({related:!0}).extend({related:e_.nullable().optional()});const t_=v.z.array(ul),n_=v.z.object({pagination:fv,results:v.z.array(ul)}),ia={findMany:t_,findWithCount:n_,findOne:ul,create:ul},r_=v.z.object({id:v.z.number(),documentId:v.z.string(),content:v.z.string(),blocked:v.z.boolean(),blockedThread:v.z.boolean(),blockReason:v.z.string().nullable(),authorId:v.z.string(),authorName:v.z.string(),authorEmail:v.z.string(),authorAvatar:v.z.string().nullable(),isAdminComment:v.z.boolean().nullable(),removed:v.z.boolean().nullable(),approvalStatus:v.z.string().nullable(),related:v.z.string(),createdAt:v.z.string(),updatedAt:v.z.string(),publishedAt:v.z.string(),locale:v.z.string().nullable()}),dv=v.z.object({id:v.z.number(),documentId:v.z.string().nullable(),content:v.z.string(),reason:v.z.string(),resolved:v.z.boolean(),createdAt:v.z.string(),updatedAt:v.z.string(),publishedAt:v.z.string().nullable(),locale:v.z.string().nullable(),related:r_.nullable().optional()}),i_=v.z.object({results:v.z.array(dv),pagination:fv}),o_=v.z.object({id:v.z.number(),documentId:v.z.string().nullable(),content:v.z.string(),reason:v.z.string(),resolved:v.z.boolean(),createdAt:v.z.string(),updatedAt:v.z.string(),publishedAt:v.z.string().nullable(),locale:v.z.string().nullable()}),u_=v.z.array(v.z.object({id:v.z.number(),documentId:v.z.string().nullable(),content:v.z.string(),reason:v.z.string(),resolved:v.z.boolean(),createdAt:v.z.string(),updatedAt:v.z.string(),publishedAt:v.z.string().nullable(),locale:v.z.string().nullable(),related:cv.nullable()})),Of={findMany:u_,findPage:i_,update:o_,create:dv},a_=i=>{const u=sr(i,"comment-report"),o=i.query(u);return{async findPage(h){const m=await Cr(i,"isValidationEnabled",!1);return o.findPage(h).then(Pi(m,Of.findPage))},async findMany(h){const m=await Cr(i,"isValidationEnabled",!1);return o.findMany(h).then(hv(m,Of.findMany))},async update(h){const m=await Cr(i,"isValidationEnabled",!1);return o.update(h).then(Pi(m,Of.update))},async updateMany(h){return o.updateMany(h)},async create(h){const m=await Cr(i,"isValidationEnabled",!1);return o.create(h).then(Pi(m,Of.create))}}},zi=Ce.once(a_),s_=i=>{const u=sr(i,"comment");return{async findMany(o){const h=await Cr(i,"isValidationEnabled",!1);return i.query(u).findMany(o).then(hv(h,ia.findMany))},async findWithCount(o){const h=await Cr(i,"isValidationEnabled",!1);return i.query(u).findPage(o).then(Pi(h,ia.findWithCount))},async findOne(o){const h=await Cr(i,"isValidationEnabled",!1);return i.query(u).findOne(o).then(m=>m?Pi(h,ia.findOne)(m):null)},async update(o){const h=await Cr(i,"isValidationEnabled",!1);return i.query(u).update(o).then(Pi(h,ia.findOne))},async delete(o){const h=await Cr(i,"isValidationEnabled",!1);return i.query(u).delete(o).then(m=>m?Pi(h,ia.findOne)(m):null)},async deleteMany(o){return i.query(u).deleteMany(o)},updateMany(o){return i.query(u).updateMany(o)},async create(o){const h=await Cr(i,"isValidationEnabled",!1);return i.query(u).create(o).then(Pi(h,ia.create))}}},it=Ce.once(s_),l_=i=>({getLocalConfig(u,o){return i.config.get([Ev,u].filter(Boolean).join("."),o)},async getStore(){return await i.store({type:"plugin",name:"comments"})},async getConfig(){return await(await this.getStore()).get({key:"config"})},async get(u){const o=await this.getConfig(),h={regex:Object.keys(gm).reduce((I,F)=>({...I,[F]:gm[F].toString()}),{})},m=!!i.plugin("graphql");if(o)return il({...o,...h,isGQLPluginEnabled:u?m:void 0});const A=this.getLocalConfig("entryLabel"),E=this.getLocalConfig("approvalFlow"),T=this.getLocalConfig("reportReasons"),R=this.getLocalConfig("blockedAuthorProps"),z={entryLabel:A,approvalFlow:E,blockedAuthorProps:R,reportReasons:T,...h};if(u){const I=this.getLocalConfig("enabledCollections"),F=this.getLocalConfig("moderatorRoles");return il({...z,enabledCollections:I,moderatorRoles:F,isGQLPluginEnabled:m})}return il(z)},async update(u){return await(await this.getStore()).set({key:"config",value:{...u,reportReasons:{BAD_LANGUAGE:Xt.BAD_LANGUAGE,DISCRIMINATION:Xt.DISCRIMINATION,OTHER:Xt.OTHER}}}),this.get()},async restore(){return await(await this.getStore()).delete({key:"config"}),this.get()}}),Ff=Ce.once(l_),c_=({strapi:i})=>({getService(u){return ft(i,u)},getStoreRepository(){return Ff(i)},async post(u){const o=await this.getStoreRepository().get(!0);if(de(o)){const h=Y(o),m=jy(h.enabledCollections,u.params.relation,u.request.body);if(de(m))return this.getService("client").create(m.right,u.state.user);throw ce(u,Y(m))}throw ce(u,Y(o))},async findAllFlat(u){const o=await this.getStoreRepository().get(!0);if(de(o)){const h=Y(o),m=Gy(h.enabledCollections,u.params.relation,u.query);if(de(m))return this.getService("common").findAllFlat(ua(m.right));throw ce(u,Y(m))}throw ce(u,Y(o))},async findAllInHierarchy(u){const o=await this.getStoreRepository().get(!0);if(de(o)){const h=Y(o),m=qy(h.enabledCollections,u.params.relation,u.query);if(de(m))return this.getService("common").findAllInHierarchy(ua(m.right));throw ce(u,Y(m))}throw ce(u,Y(o))},async findAllPerAuthor(u){const o=Hy(u.params,u.query);if(de(o))return this.getService("common").findAllPerAuthor(ua(o.right),u.params.type?![ol.GENERIC.toLowerCase(),ol.GENERIC].includes(u.params.type):!1);throw ce(u,Y(o))},async put(u){const{user:o}=u.state,h=await this.getStoreRepository().get(!0);if(de(h)){const m=Y(h),A=$y(m.enabledCollections,{...u.params,content:u.request.body.content,author:u.request.body.author});if(de(A))return await this.getService("client").update(A.right,o);throw ce(u,Y(A))}throw ce(u,Y(h))},async reportAbuse(u){const{state:o}=u,{user:h}=o,m=await this.getStoreRepository().get(!0);if(de(m)){const A=Y(m),E=Qy(A,{...u.request.body,...u.params});if(de(E))return await this.getService("client").reportAbuse(E.right,h);throw ce(u,Y(E))}throw ce(u,Y(m))},async removeComment(u){const{state:o}=u,{user:h}=o,m=await this.getStoreRepository().get(!0);if(de(m)){const A=Y(m),E=Xy(A.enabledCollections,{...u.query,...u.params});if(de(E))return await this.getService("client").markAsRemoved(E.right,h);throw ce(u,Y(E))}throw ce(u,Y(m))}}),f_=({strapi:i})=>{const u=ft(i,"settings");return{async get(o){try{return await u.getConfig()}catch(h){throw ce(o,h)}},async getForSettingsPage(o){try{return await u.getConfig(!0)}catch(h){throw ce(o,h)}},async update(o){const h=By(o.request.body);if(de(h))return await u.update(Y(h));throw ce(o,Y(h))},async restore(o){try{return await u.restore()}catch(h){throw ce(o,h)}},async restart(o){try{return u.restart(),o.send({message:"Restarted",status:200})}catch(h){throw ce(o,h)}}}},h_={admin:Zy,client:c_,settings:f_},d_=[{method:"GET",path:"/moderate/all",handler:"admin.findAll",config:{policies:[]}},{method:"GET",path:"/moderate/reports",handler:"admin.findReports",config:{policies:[]}},{method:"GET",path:"/moderate/single/:id",handler:"admin.findOne",config:{policies:[]}},{method:"PUT",path:"/moderate/single/:id/approve",handler:"admin.approveComment",config:{policies:[]}},{method:"PUT",path:"/moderate/single/:id/reject",handler:"admin.rejectComment",config:{policies:[]}},{method:"PUT",path:"/moderate/single/:id/block",handler:"admin.blockComment",config:{policies:[]}},{method:"PUT",path:"/moderate/single/:id/unblock",handler:"admin.unblockComment",config:{policies:[]}},{method:"DELETE",path:"/moderate/single/:id/delete",handler:"admin.deleteComment",config:{policies:[]}},{method:"PUT",path:"/moderate/single/:id/report/:reportId/resolve",handler:"admin.resolveAbuseReport",config:{policies:[]}},{method:"PUT",path:"/moderate/single/:id/report/resolve",handler:"admin.resolveCommentMultipleAbuseReports",config:{policies:[]}},{method:"PUT",path:"/moderate/all/:id/report/resolve",handler:"admin.resolveAllAbuseReportsForComment",config:{policies:[]}},{method:"PUT",path:"/moderate/all/:id/report/resolve-thread",handler:"admin.resolveAllAbuseReportsForThread",config:{policies:[]}},{method:"PUT",path:"/moderate/multiple/report/resolve",handler:"admin.resolveMultipleAbuseReports",config:{policies:[]}},{method:"PUT",path:"/moderate/single/:id/update",handler:"admin.updateComment",config:{policies:[]}},{method:"PUT",path:"/moderate/thread/:id/block",handler:"admin.blockCommentThread",config:{policies:[]}},{method:"PUT",path:"/moderate/thread/:id/unblock",handler:"admin.unblockCommentThread",config:{policies:[]}},{method:"POST",path:"/moderate/thread/:id/postComment",handler:"admin.postComment",config:{policies:[]}}],p_=[{method:"PUT",path:"/settings/config",handler:"settings.update",config:{policies:[]}},{method:"DELETE",path:"/settings/config",handler:"settings.restore",config:{policies:[]}},{method:"POST",path:"/settings/restart",handler:"settings.restart",config:{policies:[]}},{method:"GET",path:"/settings/config",handler:"settings.getForSettingsPage",config:{policies:[]}},{method:"GET",path:"/moderate/config",handler:"settings.get",config:{policies:[]}}],g_=[...d_,...p_],m_=[{method:"GET",path:"/:relation",handler:"client.findAllInHierarchy",config:{policies:[],description:"Find all comments related to configured Collection / Single Type and return them in a nested structure",tag:{plugin:"comments",name:"Comments",actionType:"find"}}},{method:"POST",path:"/:relation",handler:"client.post",config:{policies:[],description:"Post a comment against configured Collection / Single Type",tag:{plugin:"comments",name:"Comments",actionType:"create"}}},{method:"GET",path:"/:relation/flat",handler:"client.findAllFlat",config:{policies:[],description:"Find all comments related to configured Collection / Single Type and return them in a flat structure for further processing",tag:{plugin:"comments",name:"Comments",actionType:"find"}}},{method:"PUT",path:"/:relation/comment/:commentId",handler:"client.put",config:{policies:[],description:"Update comment related to configured Collection / Single Type if user is the author",tag:{plugin:"comments",name:"Comments",actionType:"update"}}},{method:"POST",path:"/:relation/comment/:commentId/report-abuse",handler:"client.reportAbuse",config:{policies:[],description:"Report an abuse against comment for configured Collection / Single Type",tag:{plugin:"comments",name:"Comments",actionType:"create"}}},{method:"DELETE",path:"/:relation/comment/:commentId",handler:"client.removeComment",config:{policies:[],description:"Remove comment related to configured Collection / Single Type if user is the author",tag:{plugin:"comments",name:"Comments",actionType:"delete"}}},{method:"GET",path:"/author/:authorId",handler:"client.findAllPerAuthor",config:{policies:[],description:"Find all comments created by Strapi user",tag:{plugin:"comments",name:"Comments",actionType:"find"}}},{method:"GET",path:"/author/:authorId/:type",handler:"client.findAllPerAuthor",config:{policies:[],description:"Find all comments created by specified type of user",tag:{plugin:"comments",name:"Comments",actionType:"find"}}}],v_={"content-api":{type:"content-api",routes:m_},admin:{type:"admin",routes:g_}};class ln extends Error{constructor(u,o,h=void 0){super(),this.name="Strapi:Plugin:Comments",this.status=u||500,this.message=o||"Internal error",this.payload=h,Object.setPrototypeOf(this,ln.prototype)}toString(u=this){return`${u.name} - ${u.message}`}toJSON(){return this.payload?{...this.payload,name:this.name,message:this.message}:this}}const pv=(i,u=null,o="threadOf",h=!1,m=!1)=>i.filter(A=>{const E=Ce.get(A,o);if(E===null&&u===null)return!0;let T=E;return T&&typeof u=="string"&&(T=T.toString()),T&&T==u||Ce.isObject(E)&&E.id===u}).map(A=>({...A,[o]:void 0,related:void 0,blockedThread:m||A.blockedThread,children:A.blockedThread&&h?[]:pv(i,A.id,o,h,A.blockedThread)})),Bm=i=>i.split($v.relatedUid).filter(u=>u&&u.length>0),gv=i=>i&&{...i,reports:(i.reports||[]).filter(u=>!u.resolved)},jm=(i,u,o=[])=>{const{authorUser:h,authorId:m,authorName:A,authorEmail:E,authorAvatar:T,...R}=i;let z={};if(h&&typeof h!="string"){const I=h;z=o.reduce((F,U)=>({...F,[U]:I[U]}),{id:I.id,name:I.username,email:I.email,avatar:I.avatar})}else m&&(z={id:m,name:A,email:E,avatar:T});return z=Ce.isEmpty(z)?z:Object.fromEntries(Object.entries(z).filter(([I])=>!u.includes(I))),{...R,author:Ce.isEmpty(z)?i.author||{}:z}},Tf=i=>{throw i?new ln(401,"Not authenticated"):new ln(403,"Not authorized")},y_=i=>{const{lastname:u,username:o,firstname:h}=i;return u&&h?`${h} ${u}`:o||h||""},__=Ce.once(i=>({findAll:{getDefaultWhere(){return{$or:[{removed:{$eq:!1}},{removed:{$eq:null}}]}},createParams(u,o,h,m){const[A,E]=mm(u),T={orderBy:u?{[A]:E}:void 0,where:this.getDefaultWhere(),page:o,pageSize:h};return m&&Ce.set(T,"where.content.$contains",m),T},getPopulate(){return{authorUser:rl(i),threadOf:{populate:{authorUser:rl(i)}},reports:{where:{resolved:!1}}}}},findReports:{getDefaultWhere(){return{resolved:{$notNull:!0}}},createParams(u,o,h,m){const[A,E]=mm(u),T={orderBy:u?{[A]:E}:void 0,where:this.getDefaultWhere(),page:o,pageSize:h};return m&&Ce.set(T,"where.content.$contains",m),T}},findOneAndThread:{getDefaultWhere(u){return u?{$or:[{removed:!1},{removed:{$notNull:!1}}]}:{}},getPopulate(){const u=rl(i),o={reports:{where:{resolved:!1}}},h={populate:{threadOf:{populate:{...o}},...o}};return{populate:{...h.populate,authorUser:u,threadOf:{populate:{...h.populate.threadOf.populate,authorUser:u}}}}}}})),b_=({strapi:i})=>{const u=__(i);return{getCommonService(){return ft(i,"common")},async findAll({_q:o,orderBy:h,page:m,pageSize:A}){const E=u.findAll.createParams(h,m,A,o),T=u.findAll.getPopulate(),R=it(i),{pagination:z,results:I}=await R.findWithCount({...E,count:!0,populate:T}),F=await this.getCommonService().findRelatedEntitiesFor(I);return{pagination:z,result:I.map(U=>this.getCommonService().sanitizeCommentEntity(U,[],[])).map(U=>this.getCommonService().mergeRelatedEntityTo(U,F))}},async findReports({_q:o,orderBy:h,page:m,pageSize:A}){const E=u.findReports.createParams(h,m,A,o),{pagination:T,results:R}=await zi(i).findPage({...E,populate:["related"]}),z=R.map(j=>typeof j.related=="object"?j.related.id:null).filter(Boolean),I=rl(i),F=await it(i).findMany({where:{threadOf:z},populate:["threadOf"],limit:Number.MAX_SAFE_INTEGER}),U=Array.from(new Set(F.map(({threadOf:j})=>typeof j=="object"?j.id:null).filter(Boolean)));return{result:R.map(j=>{const Z=U.includes(j.related.id),ee=this.getCommonService(),Q={...j,related:ee.sanitizeCommentEntity({...j.related,gotThread:Z},[])},me=typeof I!="boolean"?I?.populate:{};return gv(ee.sanitizeCommentEntity(Q,[],[],me))}),pagination:T}},async findOneAndThread({id:o,removed:h,...m}){const A=rl(i),E=u.findOneAndThread.getDefaultWhere(h),T=u.findOneAndThread.getPopulate(),R=await it(i).findOne({...T,where:{id:o}});if(!R)throw new bn(404,"Not found");const{relatedId:z,uid:I}=this.getCommonService().parseRelationString(R.related),F=await i.documents(I).findOne({documentId:z}).then(ee=>{if(!ee)throw new bn(404,"Relation not found");return{...ee,uid:I}}),U=R.threadOf&&typeof R.threadOf=="object"?R.threadOf.id:null,ie=await this.getCommonService().findAllInHierarchy({filters:{...E,...m,threadOf:U,related:R.related},...T,startingFromId:U,isAdmin:!0,limit:Number.MAX_SAFE_INTEGER},!1),j=typeof A!="boolean"?A?.populate:{},Z=this.getCommonService().sanitizeCommentEntity({...R,threadOf:R.threadOf||null},[],[],j);return{entity:F,selected:Z,level:ie}},async changeBlockedComment(o,h){const m=await this.getCommonService().findOne({id:o});return this.getCommonService().updateComment({id:o},{blocked:Ce.isNil(h)?!m.blocked:h})},async deleteComment(o){return it(i).update({where:{id:o},data:{removed:!0}})},async blockCommentThread(o,h){const m=await this.getCommonService().findOne({id:o}),A=h||!m.blocked,E=await this.getCommonService().updateComment({id:o},{blocked:A,blockedThread:A});return await this.blockNestedThreads(o,A),this.getCommonService().sanitizeCommentEntity(E,[])},async approveComment(o){const h=await it(i).update({where:{id:o},data:{approvalStatus:Io.APPROVED}});if(!h)throw new bn(404,"Not found");return this.getCommonService().sanitizeCommentEntity(h,[])},async rejectComment(o){const h=await it(i).update({where:{id:o},data:{approvalStatus:Io.REJECTED}});if(!h)throw new bn(404,"Not found");return this.getCommonService().sanitizeCommentEntity(h,[])},async blockNestedThreads(o,h){return this.getCommonService().modifiedNestedNestedComments(o,"blockedThread",h)},async resolveAbuseReport({id:o,reportId:h}){return zi(i).update({where:{id:h,related:o},data:{resolved:!0}})},async resolveCommentMultipleAbuseReports({id:o,reportIds:h}){if((await zi(i).findMany({where:{id:h,related:o},populate:["related"]})).length===h.length)return zi(i).updateMany({where:{id:h},data:{resolved:!0}});throw new bn(400,"At least one of selected reports got invalid comment entity relation. Try again.")},async resolveAllAbuseReportsForComment(o){if(!o)throw new bn(400,"There is something wrong with comment Id. Try again.");return zi(i).updateMany({where:{related:o,resolved:!1},data:{resolved:!0}})},async resolveAllAbuseReportsForThread(o){if(!o)throw new bn(400,"There is something wrong with comment Id. Try again.");const h=await it(i).findMany({where:{threadOf:o},select:["id"]});return zi(i).updateMany({where:{related:h.map(({id:m})=>m).concat([o]),resolved:!1},data:{resolved:!0}})},async resolveMultipleAbuseReports({reportIds:o}){return zi(i).updateMany({where:{id:{$in:o}},data:{resolved:!0}})},async postComment({id:o,author:h,content:m}){const A=await it(i).findOne({where:{id:o}});if(!A)throw new bn(404,"Not found");return it(i).create({data:{content:m,threadOf:o,authorId:h.id,authorName:y_(h),authorEmail:h.email,related:A.related,isAdminComment:!0}})},async updateComment({id:o,content:h}){const m=await it(i).update({where:{id:o},data:{content:h}});if(!m)throw new bn(404,"Not found");return this.getCommonService().sanitizeCommentEntity(m,[])}}},w_=async(i,u)=>{try{return il(await i())}catch{return iv(u)}},A_=({strapi:i})=>{const u=(o,h)=>{if(h)return{authorUser:h.id};if(o)return{authorId:o.id,authorName:o.name,authorEmail:o.email,authorAvatar:o.avatar}};return{getCommonService(){return ft(i,"common")},async create({relation:o,content:h,threadOf:m,author:A,approvalStatus:E,locale:T},R){const{uid:z,relatedId:I}=this.getCommonService().parseRelationString(o),F=await i.documents(z).findOne({documentId:I,locale:T});if(!F)throw new ln(400,'Relation for field "related" does not exist. Check your payload please.');const ie=(await this.getCommonService().getConfig(oa.APPROVAL_FLOW,[])).includes(z)||F.requireCommentsApproval,j=await this.getCommonService().getConfig(oa.AUTHOR_BLOCKED_PROPS,[]),Z=await w_(async()=>m?await this.getCommonService().findOne({id:m,related:o,locale:T||null}):null,new ln(400,"Thread does not exist"));if(my(Z))throw Y(Z);const ee=Y(Z);if(!A&&!this.getCommonService().isValidUserContext(R))throw Tf(R);const Q=await this.getCommonService().checkBadWords(h),me=u(A,R),ve=!Ce.isEmpty(me)&&!(me.authorId||me.authorUser);if(Ce.isEmpty(me)||ve)throw new ln(400,`Not able to recognise author of a comment. Make sure you've provided "author" property in a payload or authenticated your request properly.`);if(ie&&E&&E!==Io.PENDING)throw new ln(400,"Invalid approval status");const Ve={...await it(i).create({data:{...me,threadOf:m,locale:T,content:Q,related:o,approvalStatus:ie?Io.PENDING:null},populate:{authorUser:!0}}),threadOf:ee},Ye=this.getCommonService().sanitizeCommentEntity(Ve,j);try{await this.sendResponseNotification(Ye)}catch(Me){console.error(Me)}return Ye},async update({commentId:o,content:h,author:m,relation:A},E){if(!m&&!this.getCommonService().isValidUserContext(E))throw Tf(E);const T=E?.id||m?.id;if(await this.getCommonService().checkBadWords(h)){const R=await this.getCommonService().getConfig(oa.AUTHOR_BLOCKED_PROPS,[]),z=await this.getCommonService().findOne({id:o,related:A});if(z&&z.author?.id?.toString()===T?.toString()){const I=await it(i).update({where:{id:o},data:{content:h},populate:{threadOf:!0,authorUser:!0}});return this.getCommonService().sanitizeCommentEntity(I,R)}}},async reportAbuse({commentId:o,relation:h,...m},A){if(!this.getCommonService().isValidUserContext(A))throw Tf(A);try{const E=await this.getCommonService().findOne({id:o,related:h});if(E.isAdminComment)throw new ln(403,"You're not allowed to take an action on that entity. This in a admin comment.");if(E){const T=await zi(i).create({data:{...m,resolved:!1,related:o}});if(T){const R={...T,related:E};try{return await this.sendAbuseReportEmail(T.reason,T.content),R}catch{return R}}else throw new ln(500,"Report cannot be created")}throw new ln(403,"You're not allowed to take an action on that entity. Make sure that comment exist or you've authenticated your request properly.")}catch(E){throw E}},async markAsRemoved({commentId:o,relation:h,authorId:m},A){if(!m&&!this.getCommonService().isValidUserContext(A))throw Tf(A);const E=A?.id||m;if(!E)throw new ln(403,`You're not allowed to take an action on that entity. Make sure that you've provided proper "authorId" or authenticated your request properly.`);try{const T=A?.id?{authorUser:E}:{authorId:E};if(await this.getCommonService().findOne({id:o,related:h,...T})){const z=await it(i).update({where:{id:o,related:h},data:{removed:!0},populate:{threadOf:!0,authorUser:!0}});await this.markAsRemovedNested(o,!0);const I=await this.getCommonService().getConfig(oa.AUTHOR_BLOCKED_PROPS,[]);return this.getCommonService().sanitizeCommentEntity(z,I)}else throw new ln(404,"Entity does not exist or you're not allowed to take an action on it")}catch{throw new ln(404,"Entity does not exist or you're not allowed to take an action on it")}},async sendAbuseReportEmail(o,h){const m="strapi-super-admin",A=await this.getCommonService().getConfig(oa.MODERATOR_ROLES,[m]);if(A.length>0){const E=await i.query("admin::user").findMany({where:{roles:{code:A}}}).then(T=>T.map(R=>R.email));if(E.length>0){const T=await i.query("admin::user").findOne({where:{roles:{code:m}}});i.plugin("email")&&await i.plugin("email").service("email").send({to:E,from:T.email,subject:"New abuse report on comment",text:`
|
|
76
|
+
`);return iv(new bn(400,u))}return il(i.data)},Df=i=>v.z.string().regex(gm.relatedUid,{message:'Field "relation" got incorrect format, use format like "api::<collection name>.<content type name>:<document id>"'}).refine(u=>i.some(o=>u.startsWith(o)),"Invalid relation or not enabled collections"),Ry=v.z.object({id:v.z.union([v.z.number(),v.z.string()]),name:v.z.string().min(1).max(100).optional(),email:v.z.string().email(),avatar:v.z.string().url().optional()});v.z.union([v.z.string(),v.z.number(),v.z.boolean()]);const av=xy.merge(v.z.object({_q:v.z.string().optional()})),Qr=i=>Nt(sa({id:Xr.single}).safeParse(i)),Ny=i=>Nt(av.safeParse(i)),Ly=i=>Nt(av.safeParse(i)),zy=(i,u)=>{const o=sa({id:Xr.single}).merge(v.z.object({removed:v.z.string().optional().transform(h=>h==="true")})).safeParse({...u,id:i});return Nt(o)},Py=i=>Nt(sa({id:Xr.single,reportId:Xr.single}).safeParse(i)),Dy=i=>{const u=sa({id:Xr.single,reportIds:Xr.array}).safeParse(i);return Nt(u)},Fy=i=>{const u=sa({reportIds:Xr.array}).safeParse(i);return Nt(u)},Uy=v.z.object({id:v.z.union([v.z.string(),v.z.number()]),email:v.z.string().email(),lastname:v.z.string().nullable().optional(),username:v.z.string().nullable().optional(),firstname:v.z.string().nullable().optional()}),sv=v.z.object({id:v.z.union([v.z.string(),v.z.number()]),content:v.z.string(),author:Uy}),My=i=>Nt(sv.safeParse(i)),Wy=i=>Nt(sv.pick({content:!0,id:!0}).safeParse(i)),By=i=>Nt(bm.safeParse(i)),lv=i=>v.z.object({relation:Df(i),content:v.z.string().min(1),author:Ry.optional(),threadOf:v.z.union([v.z.string(),v.z.number()]).optional(),approvalStatus:v.z.nativeEnum(Io).optional(),locale:v.z.string().optional()}),jy=(i,u,o)=>Nt(lv(i).safeParse({...o,relation:u})),$y=(i,u)=>Nt(lv(i).pick({content:!0,relation:!0,author:!0}).merge(sa({commentId:Xr.single})).safeParse(u)),ky=i=>v.z.object({relation:Df(i)}),Vy=v.z.object({pagination:v.z.object({pageSize:Jr.default(10),page:Jr.default(1),withCount:Oy.optional().default(!1)}).optional()}),Tm=i=>v.z.object({sort:uv.optional().nullable().default("createdAt:desc"),fields:v.z.string().array().optional(),omit:v.z.string().array().optional(),filters:Cy({id:!0,content:!0,authorId:!0,authorName:!0,authorEmail:!0,createdAt:!0,updatedAt:!0,removed:!0,blocked:!0,blockedThread:!0,approvalStatus:!0}).optional(),isAdmin:v.z.boolean().optional().default(!1),populate:v.z.record(v.z.union([v.z.boolean(),v.z.object({populate:v.z.boolean()})])).optional(),limit:Jr.optional(),skip:Jr.optional(),locale:v.z.string().optional()}).merge(ky(i)).merge(Vy),Gy=(i,u,o)=>Nt(Tm(i).safeParse({...o,relation:u})),qy=(i,u,o)=>{const h=Tm(i).pick({sort:!0,fields:!0,omit:!0,filters:!0,isAdmin:!0,populate:!0,limit:!0,skip:!0,relation:!0,locale:!0}).merge(v.z.object({startingFromId:v.z.number().optional(),dropBlockedThreads:v.z.boolean().optional().default(!1)}));return Nt(h.safeParse({...o,relation:u}))},Hy=(i,u)=>{const o=Tm([]).pick({sort:!0,fields:!0,omit:!0,isAdmin:!0,populate:!0,limit:!0,skip:!0,pagination:!0,filters:!0,locale:!0}).merge(v.z.object({type:v.z.union([v.z.literal(ol.GENERIC),v.z.literal("generic")]).optional(),authorId:v.z.union([v.z.string(),v.z.number()])}));return Nt(o.safeParse({...u,...i}))},Yy=i=>v.z.object({relation:Df(i[lr.ENABLED_COLLECTIONS]),commentId:Jr,content:v.z.string().min(1),reason:v.z.nativeEnum(i.reportReasons)}),Qy=(i,u)=>Nt(Yy(i).safeParse(u)),Jy=i=>v.z.object({relation:Df(i),commentId:v.z.union([v.z.string(),v.z.number()]),authorId:v.z.union([v.z.string(),v.z.number()])}),Xy=(i,u)=>Nt(Jy(i).safeParse(u)),Zy=({strapi:i})=>({getService(u){return ft(i,u)},async findAll(u){const o=Ny(u.query);if(de(o))return this.getService("admin").findAll(Y(o));throw ce(u,Y(o))},async findReports(u){const o=Ly(u.query);if(de(o))return this.getService("admin").findReports(Y(o));throw ce(u,Y(o))},async findOne(u){const o=zy(u.params.id,u.query);if(de(o))return this.getService("admin").findOneAndThread(Y(o));throw ce(u,Y(o))},async blockComment(u){const o=Qr(u.params);if(de(o))return this.getService("admin").changeBlockedComment(Y(o).id,!0);throw ce(u,Y(o))},async unblockComment(u){const o=Qr(u.params);if(de(o))return this.getService("admin").changeBlockedComment(Y(o).id,!1);throw ce(u,Y(o))},async deleteComment(u){const o=Qr(u.params);if(de(o))return this.getService("admin").deleteComment(Y(o).id);throw ce(u,Y(o))},async blockCommentThread(u){const o=Qr(u.params);if(de(o))return this.getService("admin").blockCommentThread(Y(o).id,!0);throw ce(u,Y(o))},async unblockCommentThread(u){const o=Qr(u.params);if(de(o))return this.getService("admin").blockCommentThread(Y(o).id,!1);throw ce(u,Y(o))},async resolveAbuseReport(u){const o=Py(u.params);if(de(o))return this.getService("admin").resolveAbuseReport(Y(o));throw ce(u,Y(o))},async resolveCommentMultipleAbuseReports(u){const o=Dy({...u.request.body,id:u.params.id});if(de(o))return this.getService("admin").resolveCommentMultipleAbuseReports(Y(o));throw ce(u,Y(o))},async resolveAllAbuseReportsForComment(u){const o=Qr(u.params);if(de(o))return this.getService("admin").resolveAllAbuseReportsForComment(Y(o).id);throw ce(u,Y(o))},async resolveAllAbuseReportsForThread(u){const o=Qr(u.params);if(de(o))return this.getService("admin").resolveAllAbuseReportsForThread(Y(o).id);throw ce(u,Y(o))},async resolveMultipleAbuseReports(u){const o=Fy(u.request.body);if(de(o))return this.getService("admin").resolveMultipleAbuseReports(Y(o));throw ce(u,Y(o))},async postComment(u){const o=My({id:u.params.id,content:u.request.body.content,author:u.request.body.author});if(de(o))return this.getService("admin").postComment(Y(o));throw ce(u,Y(o))},async updateComment(u){const o=Wy({id:u.params.id,content:u.request.body.content});if(de(o))return this.getService("admin").updateComment(Y(o));throw ce(u,Y(o))},async approveComment(u){const o=Qr(u.params);if(de(o))return this.getService("admin").approveComment(Y(o).id);throw ce(u,Y(o))},async rejectComment(u){const o=Qr(u.params);if(de(o))return this.getService("admin").rejectComment(Y(o).id);throw ce(u,Y(o))}}),Cr=async(i,u,o)=>Ff(i).getLocalConfig(u,o),cv=v.z.object({id:v.z.number(),documentId:v.z.string().nullable(),content:v.z.string(),blocked:v.z.boolean().nullable(),blockedThread:v.z.boolean().nullable(),blockReason:v.z.string().nullable(),isAdminComment:v.z.boolean().nullable(),removed:v.z.boolean().nullable(),approvalStatus:v.z.string().nullable(),related:v.z.string(),createdAt:v.z.string(),updatedAt:v.z.string().nullable(),publishedAt:v.z.string().nullable(),authorId:v.z.string().nullable(),authorName:v.z.string().nullable(),authorEmail:v.z.string().email().nullable(),authorAvatar:v.z.string().nullable(),authorUser:v.z.union([v.z.string(),v.z.object({id:v.z.number(),email:v.z.string().email()})]).optional().nullable(),locale:v.z.string().nullable()}),fv=v.z.object({page:v.z.number(),pageSize:v.z.number(),pageCount:v.z.number(),total:v.z.number()}),Pi=(i,u)=>o=>i?u.parseAsync(o):Promise.resolve(o),hv=(i,u)=>o=>i?u.parseAsync(o):Promise.resolve(o),Ky=v.z.object({id:v.z.number(),documentId:v.z.string().nullable(),content:v.z.string(),reason:v.z.string(),resolved:v.z.boolean(),createdAt:v.z.string(),updatedAt:v.z.string(),publishedAt:v.z.string().nullable(),locale:v.z.string().nullable()}),Wm=cv.merge(v.z.object({gotThread:v.z.boolean().nullable().optional(),threadFirstItemId:v.z.number().nullable().optional(),reports:v.z.array(Ky).default([]),author:v.z.any()})),ul=Wm.extend({threadOf:v.z.lazy(()=>v.z.union([v.z.number(),Wm])).nullable().optional()}),e_=v.z.object({id:v.z.number(),uid:v.z.string(),documentId:v.z.string(),requireCommentsApproval:v.z.boolean().nullable().optional(),locale:v.z.string().nullable().optional()});ul.omit({related:!0}).extend({related:e_.nullable().optional()});const t_=v.z.array(ul),n_=v.z.object({pagination:fv,results:v.z.array(ul)}),ia={findMany:t_,findWithCount:n_,findOne:ul,create:ul},r_=v.z.object({id:v.z.number(),documentId:v.z.string(),content:v.z.string(),blocked:v.z.boolean(),blockedThread:v.z.boolean(),blockReason:v.z.string().nullable(),authorId:v.z.string(),authorName:v.z.string(),authorEmail:v.z.string(),authorAvatar:v.z.string().nullable(),isAdminComment:v.z.boolean().nullable(),removed:v.z.boolean().nullable(),approvalStatus:v.z.string().nullable(),related:v.z.string(),createdAt:v.z.string(),updatedAt:v.z.string(),publishedAt:v.z.string(),locale:v.z.string().nullable()}),dv=v.z.object({id:v.z.number(),documentId:v.z.string().nullable(),content:v.z.string(),reason:v.z.string(),resolved:v.z.boolean(),createdAt:v.z.string(),updatedAt:v.z.string(),publishedAt:v.z.string().nullable(),locale:v.z.string().nullable(),related:r_.nullable().optional()}),i_=v.z.object({results:v.z.array(dv),pagination:fv}),o_=v.z.object({id:v.z.number(),documentId:v.z.string().nullable(),content:v.z.string(),reason:v.z.string(),resolved:v.z.boolean(),createdAt:v.z.string(),updatedAt:v.z.string(),publishedAt:v.z.string().nullable(),locale:v.z.string().nullable()}),u_=v.z.array(v.z.object({id:v.z.number(),documentId:v.z.string().nullable(),content:v.z.string(),reason:v.z.string(),resolved:v.z.boolean(),createdAt:v.z.string(),updatedAt:v.z.string(),publishedAt:v.z.string().nullable(),locale:v.z.string().nullable(),related:cv.nullable()})),Of={findMany:u_,findPage:i_,update:o_,create:dv},a_=i=>{const u=sr(i,"comment-report"),o=i.query(u);return{async findPage(h){const m=await Cr(i,"isValidationEnabled",!1);return o.findPage(h).then(Pi(m,Of.findPage))},async findMany(h){const m=await Cr(i,"isValidationEnabled",!1);return o.findMany(h).then(hv(m,Of.findMany))},async update(h){const m=await Cr(i,"isValidationEnabled",!1);return o.update(h).then(Pi(m,Of.update))},async updateMany(h){return o.updateMany(h)},async create(h){const m=await Cr(i,"isValidationEnabled",!1);return o.create(h).then(Pi(m,Of.create))}}},zi=Ce.once(a_),s_=i=>{const u=sr(i,"comment");return{async findMany(o){const h=await Cr(i,"isValidationEnabled",!1);return i.query(u).findMany(o).then(hv(h,ia.findMany))},async findWithCount(o){const h=await Cr(i,"isValidationEnabled",!1);return i.query(u).findPage(o).then(Pi(h,ia.findWithCount))},async findOne(o){const h=await Cr(i,"isValidationEnabled",!1);return i.query(u).findOne(o).then(m=>m?Pi(h,ia.findOne)(m):null)},async update(o){const h=await Cr(i,"isValidationEnabled",!1);return i.query(u).update(o).then(Pi(h,ia.findOne))},async delete(o){const h=await Cr(i,"isValidationEnabled",!1);return i.query(u).delete(o).then(m=>m?Pi(h,ia.findOne)(m):null)},async deleteMany(o){return i.query(u).deleteMany(o)},updateMany(o){return i.query(u).updateMany(o)},async create(o){const h=await Cr(i,"isValidationEnabled",!1);return i.query(u).create(o).then(Pi(h,ia.create))}}},it=Ce.once(s_),l_=i=>({getLocalConfig(u,o){return i.config.get([Ev,u].filter(Boolean).join("."),o)},async getStore(){return await i.store({type:"plugin",name:"comments"})},async getConfig(){return await(await this.getStore()).get({key:"config"})},async get(u){const o=await this.getConfig(),h={regex:Object.keys(gm).reduce((I,F)=>({...I,[F]:gm[F].toString()}),{})},m=!!i.plugin("graphql");if(o)return il({...o,...h,isGQLPluginEnabled:u?m:void 0});const A=this.getLocalConfig("entryLabel"),E=this.getLocalConfig("approvalFlow"),T=this.getLocalConfig("reportReasons"),R=this.getLocalConfig("blockedAuthorProps"),z={entryLabel:A,approvalFlow:E,blockedAuthorProps:R,reportReasons:T,...h};if(u){const I=this.getLocalConfig("enabledCollections"),F=this.getLocalConfig("moderatorRoles");return il({...z,enabledCollections:I,moderatorRoles:F,isGQLPluginEnabled:m})}return il(z)},async update(u){return await(await this.getStore()).set({key:"config",value:{...u,reportReasons:{BAD_LANGUAGE:Xt.BAD_LANGUAGE,DISCRIMINATION:Xt.DISCRIMINATION,OTHER:Xt.OTHER}}}),this.get()},async restore(){return await(await this.getStore()).delete({key:"config"}),this.get()}}),Ff=Ce.once(l_),c_=({strapi:i})=>({getService(u){return ft(i,u)},getStoreRepository(){return Ff(i)},async post(u){const o=await this.getStoreRepository().get(!0);if(de(o)){const h=Y(o),m=jy(h.enabledCollections,u.params.relation,u.request.body);if(de(m))return this.getService("client").create(m.right,u.state.user);throw ce(u,Y(m))}throw ce(u,Y(o))},async findAllFlat(u){const o=await this.getStoreRepository().get(!0);if(de(o)){const h=Y(o),m=Gy(h.enabledCollections,u.params.relation,u.query);if(de(m))return this.getService("common").findAllFlat(ua(m.right));throw ce(u,Y(m))}throw ce(u,Y(o))},async findAllInHierarchy(u){const o=await this.getStoreRepository().get(!0);if(de(o)){const h=Y(o),m=qy(h.enabledCollections,u.params.relation,u.query);if(de(m))return this.getService("common").findAllInHierarchy(ua(m.right));throw ce(u,Y(m))}throw ce(u,Y(o))},async findAllPerAuthor(u){const o=Hy(u.params,u.query);if(de(o))return this.getService("common").findAllPerAuthor(ua(o.right),u.params.type?![ol.GENERIC.toLowerCase(),ol.GENERIC].includes(u.params.type):!1);throw ce(u,Y(o))},async put(u){const{user:o}=u.state,h=await this.getStoreRepository().get(!0);if(de(h)){const m=Y(h),A=$y(m.enabledCollections,{...u.params,content:u.request.body.content,author:u.request.body.author});if(de(A))return await this.getService("client").update(A.right,o);throw ce(u,Y(A))}throw ce(u,Y(h))},async reportAbuse(u){const{state:o}=u,{user:h}=o,m=await this.getStoreRepository().get(!0);if(de(m)){const A=Y(m),E=Qy(A,{...u.request.body,...u.params});if(de(E))return await this.getService("client").reportAbuse(E.right,h);throw ce(u,Y(E))}throw ce(u,Y(m))},async removeComment(u){const{state:o}=u,{user:h}=o,m=await this.getStoreRepository().get(!0);if(de(m)){const A=Y(m),E=Xy(A.enabledCollections,{...u.query,...u.params});if(de(E))return await this.getService("client").markAsRemoved(E.right,h);throw ce(u,Y(E))}throw ce(u,Y(m))}}),f_=({strapi:i})=>{const u=ft(i,"settings");return{async get(o){try{return await u.getConfig()}catch(h){throw ce(o,h)}},async getForSettingsPage(o){try{return await u.getConfig(!0)}catch(h){throw ce(o,h)}},async update(o){const h=By(o.request.body);if(de(h))return await u.update(Y(h));throw ce(o,Y(h))},async restore(o){try{return await u.restore()}catch(h){throw ce(o,h)}},async restart(o){try{return u.restart(),o.send({message:"Restarted",status:200})}catch(h){throw ce(o,h)}}}},h_={admin:Zy,client:c_,settings:f_},d_=[{method:"GET",path:"/moderate/all",handler:"admin.findAll",config:{policies:[]}},{method:"GET",path:"/moderate/reports",handler:"admin.findReports",config:{policies:[]}},{method:"GET",path:"/moderate/single/:id",handler:"admin.findOne",config:{policies:[]}},{method:"PUT",path:"/moderate/single/:id/approve",handler:"admin.approveComment",config:{policies:[]}},{method:"PUT",path:"/moderate/single/:id/reject",handler:"admin.rejectComment",config:{policies:[]}},{method:"PUT",path:"/moderate/single/:id/block",handler:"admin.blockComment",config:{policies:[]}},{method:"PUT",path:"/moderate/single/:id/unblock",handler:"admin.unblockComment",config:{policies:[]}},{method:"DELETE",path:"/moderate/single/:id/delete",handler:"admin.deleteComment",config:{policies:[]}},{method:"PUT",path:"/moderate/single/:id/report/:reportId/resolve",handler:"admin.resolveAbuseReport",config:{policies:[]}},{method:"PUT",path:"/moderate/single/:id/report/resolve",handler:"admin.resolveCommentMultipleAbuseReports",config:{policies:[]}},{method:"PUT",path:"/moderate/all/:id/report/resolve",handler:"admin.resolveAllAbuseReportsForComment",config:{policies:[]}},{method:"PUT",path:"/moderate/all/:id/report/resolve-thread",handler:"admin.resolveAllAbuseReportsForThread",config:{policies:[]}},{method:"PUT",path:"/moderate/multiple/report/resolve",handler:"admin.resolveMultipleAbuseReports",config:{policies:[]}},{method:"PUT",path:"/moderate/single/:id/update",handler:"admin.updateComment",config:{policies:[]}},{method:"PUT",path:"/moderate/thread/:id/block",handler:"admin.blockCommentThread",config:{policies:[]}},{method:"PUT",path:"/moderate/thread/:id/unblock",handler:"admin.unblockCommentThread",config:{policies:[]}},{method:"POST",path:"/moderate/thread/:id/postComment",handler:"admin.postComment",config:{policies:[]}}],p_=[{method:"PUT",path:"/settings/config",handler:"settings.update",config:{policies:[]}},{method:"DELETE",path:"/settings/config",handler:"settings.restore",config:{policies:[]}},{method:"POST",path:"/settings/restart",handler:"settings.restart",config:{policies:[]}},{method:"GET",path:"/settings/config",handler:"settings.getForSettingsPage",config:{policies:[]}},{method:"GET",path:"/moderate/config",handler:"settings.get",config:{policies:[]}}],g_=[...d_,...p_],m_=[{method:"GET",path:"/:relation",handler:"client.findAllInHierarchy",config:{policies:[],description:"Find all comments related to configured Collection / Single Type and return them in a nested structure",tag:{plugin:"comments",name:"Comments",actionType:"find"}}},{method:"POST",path:"/:relation",handler:"client.post",config:{policies:[],description:"Post a comment against configured Collection / Single Type",tag:{plugin:"comments",name:"Comments",actionType:"create"}}},{method:"GET",path:"/:relation/flat",handler:"client.findAllFlat",config:{policies:[],description:"Find all comments related to configured Collection / Single Type and return them in a flat structure for further processing",tag:{plugin:"comments",name:"Comments",actionType:"find"}}},{method:"PUT",path:"/:relation/comment/:commentId",handler:"client.put",config:{policies:[],description:"Update comment related to configured Collection / Single Type if user is the author",tag:{plugin:"comments",name:"Comments",actionType:"update"}}},{method:"POST",path:"/:relation/comment/:commentId/report-abuse",handler:"client.reportAbuse",config:{policies:[],description:"Report an abuse against comment for configured Collection / Single Type",tag:{plugin:"comments",name:"Comments",actionType:"create"}}},{method:"DELETE",path:"/:relation/comment/:commentId",handler:"client.removeComment",config:{policies:[],description:"Remove comment related to configured Collection / Single Type if user is the author",tag:{plugin:"comments",name:"Comments",actionType:"delete"}}},{method:"GET",path:"/author/:authorId",handler:"client.findAllPerAuthor",config:{policies:[],description:"Find all comments created by Strapi user",tag:{plugin:"comments",name:"Comments",actionType:"find"}}},{method:"GET",path:"/author/:authorId/:type",handler:"client.findAllPerAuthor",config:{policies:[],description:"Find all comments created by specified type of user",tag:{plugin:"comments",name:"Comments",actionType:"find"}}}],v_={"content-api":{type:"content-api",routes:m_},admin:{type:"admin",routes:g_}};class ln extends Error{constructor(u,o,h=void 0){super(),this.name="Strapi:Plugin:Comments",this.status=u||500,this.message=o||"Internal error",this.payload=h,Object.setPrototypeOf(this,ln.prototype)}toString(u=this){return`${u.name} - ${u.message}`}toJSON(){return this.payload?{...this.payload,name:this.name,message:this.message}:this}}const pv=(i,u=null,o="threadOf",h=!1,m=!1)=>i.filter(A=>{const E=Ce.get(A,o);if(E===null&&u===null)return!0;let T=E;return T&&typeof u=="string"&&(T=T.toString()),T&&T==u||Ce.isObject(E)&&E.id===u}).map(A=>({...A,[o]:void 0,related:void 0,blockedThread:m||A.blockedThread,children:A.blockedThread&&h?[]:pv(i,A.id,o,h,A.blockedThread)})),Bm=i=>i.split($v.relatedUid).filter(u=>u&&u.length>0),gv=i=>i&&{...i,reports:(i.reports||[]).filter(u=>!u.resolved)},jm=(i,u,o=[])=>{const{authorUser:h,authorId:m,authorName:A,authorEmail:E,authorAvatar:T,...R}=i;let z={};if(h&&typeof h!="string"){const I=h;z=o.reduce((F,U)=>({...F,[U]:I[U]}),{id:I.id,name:I.username,email:I.email,avatar:I.avatar})}else m&&(z={id:m,name:A,email:E,avatar:T});return z=Ce.isEmpty(z)?z:Object.fromEntries(Object.entries(z).filter(([I])=>!u.includes(I))),{...R,author:Ce.isEmpty(z)?i.author||{}:z}},Tf=i=>{throw i?new ln(401,"Not authenticated"):new ln(403,"Not authorized")},y_=i=>{const{lastname:u,username:o,firstname:h}=i;return u&&h?`${h} ${u}`:o||h||""},__=Ce.once(i=>({findAll:{getDefaultWhere(){return{$or:[{removed:{$eq:!1}},{removed:{$eq:null}}]}},createParams(u,o,h,m){const[A,E]=mm(u),T={orderBy:u?{[A]:E}:void 0,where:this.getDefaultWhere(),page:o,pageSize:h};return m&&Ce.set(T,"where.content.$contains",m),T},getPopulate(){return{authorUser:rl(i),threadOf:{populate:{authorUser:rl(i)}},reports:{where:{resolved:!1}}}}},findReports:{getDefaultWhere(){return{resolved:{$notNull:!0}}},createParams(u,o,h,m){const[A,E]=mm(u),T={orderBy:u?{[A]:E}:void 0,where:this.getDefaultWhere(),page:o,pageSize:h};return m&&Ce.set(T,"where.content.$contains",m),T}},findOneAndThread:{getDefaultWhere(u){return u?{$or:[{removed:!1},{removed:{$notNull:!1}}]}:{}},getPopulate(){const u=rl(i),o={reports:{where:{resolved:!1}}},h={populate:{threadOf:{populate:{...o}},...o}};return{populate:{...h.populate,authorUser:u,threadOf:{populate:{...h.populate.threadOf.populate,authorUser:u}}}}}}})),b_=({strapi:i})=>{const u=__(i);return{getCommonService(){return ft(i,"common")},async findAll({_q:o,orderBy:h,page:m,pageSize:A}){const E=u.findAll.createParams(h,m,A,o),T=u.findAll.getPopulate(),R=it(i),{pagination:z,results:I}=await R.findWithCount({...E,count:!0,populate:T}),F=await this.getCommonService().findRelatedEntitiesFor(I);return{pagination:z,result:I.map(U=>this.getCommonService().sanitizeCommentEntity(U,[],[])).map(U=>this.getCommonService().mergeRelatedEntityTo(U,F))}},async findReports({_q:o,orderBy:h,page:m,pageSize:A}){const E=u.findReports.createParams(h,m,A,o),{pagination:T,results:R}=await zi(i).findPage({...E,populate:["related"]}),z=R.map(j=>typeof j.related=="object"?j.related.id:null).filter(Boolean),I=rl(i),F=await it(i).findMany({where:{threadOf:z},populate:["threadOf"],limit:Number.MAX_SAFE_INTEGER}),U=Array.from(new Set(F.map(({threadOf:j})=>typeof j=="object"?j.id:null).filter(Boolean)));return{result:R.map(j=>{const Z=U.includes(j.related.id),ee=this.getCommonService(),Q={...j,related:ee.sanitizeCommentEntity({...j.related,gotThread:Z},[])},me=typeof I!="boolean"?I?.populate:{};return gv(ee.sanitizeCommentEntity(Q,[],[],me))}),pagination:T}},async findOneAndThread({id:o,removed:h,...m}){const A=rl(i),E=u.findOneAndThread.getDefaultWhere(h),T=u.findOneAndThread.getPopulate(),R=await it(i).findOne({...T,where:{id:o}});if(!R)throw new bn(404,"Not found");const{relatedId:z,uid:I}=this.getCommonService().parseRelationString(R.related),F=await i.documents(I).findOne({documentId:z}).then(ee=>{if(!ee)throw new bn(404,"Relation not found");return{...ee,uid:I}}),U=R.threadOf&&typeof R.threadOf=="object"?R.threadOf.id:null,ie=await this.getCommonService().findAllInHierarchy({filters:{...E,...m,threadOf:U,related:R.related},...T,startingFromId:U,isAdmin:!0,limit:Number.MAX_SAFE_INTEGER},!1),j=typeof A!="boolean"?A?.populate:{},Z=this.getCommonService().sanitizeCommentEntity({...R,threadOf:R.threadOf||null},[],[],j);return{entity:F,selected:Z,level:ie}},async changeBlockedComment(o,h){const m=await this.getCommonService().findOne({id:o});return this.getCommonService().updateComment({id:o},{blocked:Ce.isNil(h)?!m.blocked:h})},async deleteComment(o){return it(i).update({where:{id:o},data:{removed:!0}})},async blockCommentThread(o,h){const m=await this.getCommonService().findOne({id:o}),A=h||!m.blocked,E=await this.getCommonService().updateComment({id:o},{blocked:A,blockedThread:A});return await this.blockNestedThreads(o,A),this.getCommonService().sanitizeCommentEntity(E,[])},async approveComment(o){const h=await it(i).update({where:{id:o},data:{approvalStatus:Io.APPROVED}});if(!h)throw new bn(404,"Not found");return this.getCommonService().sanitizeCommentEntity(h,[])},async rejectComment(o){const h=await it(i).update({where:{id:o},data:{approvalStatus:Io.REJECTED}});if(!h)throw new bn(404,"Not found");return this.getCommonService().sanitizeCommentEntity(h,[])},async blockNestedThreads(o,h){return this.getCommonService().modifiedNestedNestedComments(o,"blockedThread",h)},async resolveAbuseReport({id:o,reportId:h}){return zi(i).update({where:{id:h,related:o},data:{resolved:!0}})},async resolveCommentMultipleAbuseReports({id:o,reportIds:h}){if((await zi(i).findMany({where:{id:h,related:o},populate:["related"]})).length===h.length)return zi(i).updateMany({where:{id:h},data:{resolved:!0}});throw new bn(400,"At least one of selected reports got invalid comment entity relation. Try again.")},async resolveAllAbuseReportsForComment(o){if(!o)throw new bn(400,"There is something wrong with comment Id. Try again.");return zi(i).updateMany({where:{related:o,resolved:!1},data:{resolved:!0}})},async resolveAllAbuseReportsForThread(o){if(!o)throw new bn(400,"There is something wrong with comment Id. Try again.");const h=await it(i).findMany({where:{threadOf:o},select:["id"]});return zi(i).updateMany({where:{related:h.map(({id:m})=>m).concat([o]),resolved:!1},data:{resolved:!0}})},async resolveMultipleAbuseReports({reportIds:o}){return zi(i).updateMany({where:{id:{$in:o}},data:{resolved:!0}})},async postComment({id:o,author:h,content:m}){const A=await it(i).findOne({where:{id:o}});if(!A)throw new bn(404,"Not found");return it(i).create({data:{content:m,threadOf:o,authorId:h.id,authorName:y_(h),authorEmail:h.email,related:A.related,isAdminComment:!0}})},async updateComment({id:o,content:h}){const m=await it(i).update({where:{id:o},data:{content:h}});if(!m)throw new bn(404,"Not found");return this.getCommonService().sanitizeCommentEntity(m,[])}}},w_=async(i,u)=>{try{return il(await i())}catch{return iv(u)}},A_=({strapi:i})=>{const u=(o,h)=>{if(h)return{authorUser:h.id};if(o)return{authorId:o.id,authorName:o.name,authorEmail:o.email,authorAvatar:o.avatar}};return{getCommonService(){return ft(i,"common")},async create({relation:o,content:h,threadOf:m,author:A,approvalStatus:E,locale:T},R){const{uid:z,relatedId:I}=this.getCommonService().parseRelationString(o),F=await i.documents(z).findOne({documentId:I,locale:T});if(!F)throw new ln(400,'Relation for field "related" does not exist. Check your payload please.');const ie=(await this.getCommonService().getConfig(oa.APPROVAL_FLOW,[])).includes(z)||F.requireCommentsApproval,j=await this.getCommonService().getConfig(oa.AUTHOR_BLOCKED_PROPS,[]),Z=await w_(async()=>m?await this.getCommonService().findOne({id:m,related:o,locale:T||null}):null,new ln(400,"Thread does not exist"));if(my(Z))throw Y(Z);const ee=Y(Z);if(!A&&!this.getCommonService().isValidUserContext(R))throw Tf(R);const Q=await this.getCommonService().checkBadWords(h),me=u(A,R),ve=!Ce.isEmpty(me)&&!(me.authorId||me.authorUser);if(Ce.isEmpty(me)||ve)throw new ln(400,`Not able to recognise author of a comment. Make sure you've provided "author" property in a payload or authenticated your request properly.`);if(ie&&E&&E!==Io.PENDING)throw new ln(400,"Invalid approval status");const Ve={...await it(i).create({data:{...me,threadOf:m,locale:T,content:Q,related:o,approvalStatus:ie?Io.PENDING:null},populate:{authorUser:!0}}),threadOf:ee},Ye=this.getCommonService().sanitizeCommentEntity(Ve,j);try{await this.sendResponseNotification(Ye)}catch(Me){console.error(Me)}return Ye},async update({commentId:o,content:h,author:m,relation:A},E){if(!m&&!this.getCommonService().isValidUserContext(E))throw Tf(E);const T=E?.id||m?.id;if(await this.getCommonService().checkBadWords(h)){const R=await this.getCommonService().getConfig(oa.AUTHOR_BLOCKED_PROPS,[]),z=await this.getCommonService().findOne({id:o,related:A});if(z&&z.author?.id?.toString()===T?.toString()){const I=await it(i).update({where:{id:o},data:{content:h},populate:{threadOf:!0,authorUser:!0}});return this.getCommonService().sanitizeCommentEntity(I,R)}}},async reportAbuse({commentId:o,relation:h,...m},A){if(!this.getCommonService().isValidUserContext(A))throw Tf(A);try{const E=await this.getCommonService().findOne({id:o,related:h});if(E.isAdminComment)throw new ln(403,"You're not allowed to take an action on that entity. This in a admin comment.");if(E){const T=await zi(i).create({data:{...m,resolved:!1,related:o}});if(T){const R={...T,related:E};try{return await this.sendAbuseReportEmail(T.reason,T.content),R}catch{return R}}else throw new ln(500,"Report cannot be created")}throw new ln(403,"You're not allowed to take an action on that entity. Make sure that comment exist or you've authenticated your request properly.")}catch(E){throw E}},async markAsRemoved({commentId:o,relation:h,authorId:m},A){if(!m&&!this.getCommonService().isValidUserContext(A))throw Tf(A);const E=A?.id||m;if(!E)throw new ln(403,`You're not allowed to take an action on that entity. Make sure that you've provided proper "authorId" or authenticated your request properly.`);try{const T=A?.id?{authorUser:E}:{authorId:E};if(await this.getCommonService().findOne({id:o,related:h,...T})){const z=await it(i).update({where:{id:o,related:h},data:{removed:!0},populate:{threadOf:!0,authorUser:!0}});await this.markAsRemovedNested(o,!0);const I=await this.getCommonService().getConfig(oa.AUTHOR_BLOCKED_PROPS,[]);return this.getCommonService().sanitizeCommentEntity(z,I)}else throw new ln(404,"Entity does not exist or you're not allowed to take an action on it")}catch{throw new ln(404,"Entity does not exist or you're not allowed to take an action on it")}},async sendAbuseReportEmail(o,h){const m="strapi-super-admin",A=await this.getCommonService().getConfig(oa.MODERATOR_ROLES,[m]);if(A.length>0){const E=await i.query("admin::user").findMany({where:{roles:{code:A}}}).then(T=>T.map(R=>R.email));if(E.length>0){const T=await i.query("admin::user").findOne({where:{roles:{code:m}}});i.plugin("email")&&await i.plugin("email").service("email").send({to:E,from:T.email,subject:"New abuse report on comment",text:`
|
|
77
77
|
There was a new abuse report on your app.
|
|
78
78
|
Reason: ${o}
|
|
79
79
|
Message: ${h}
|
|
@@ -87,7 +87,7 @@ spurious results.`)}}return!1},p0=5;function g0(i,u){const[o,h]=u?[i,u]:[void 0,
|
|
|
87
87
|
------
|
|
88
88
|
|
|
89
89
|
Visit ${T} and continue the discussion.
|
|
90
|
-
`})}catch(R){throw i.log.error(R),R}}}}}},S_=10,E_=["id"],O_=({strapi:i})=>({async getConfig(u,o,h=!1){const m=Ff(i),A=await m.getConfig();return u&&!h?Ce.get(A,u,o):h?m.getLocalConfig(u,o):A},parseRelationString(u){const[o,h]=Bm(u);return{uid:o,relatedId:h}},isValidUserContext(u){return u?u.id!=null:!0},sanitizeCommentEntity(u,o,h=[],m={}){const A=Array.isArray(m)?m:Object.keys(m||{});return Ce.omit({...jm({...u,threadOf:Ce.isObject(u.threadOf)?jm(u.threadOf,o,A):u.threadOf},o,A)},h)},async findAllFlat({fields:u,limit:o,skip:h,sort:m,populate:A,omit:E=[],isAdmin:T=!1,pagination:R,filters:z={},locale:I},F){const U=E.filter(Qe=>!E_.includes(Qe)),ie=["id","related"].filter(Qe=>!U.includes(Qe)),j={authorUser:!0,...Ce.isObject(A)?A:{}},Z=T?[]:await this.getConfig(lr.AUTHOR_BLOCKED_PROPS,[]),[ee,Q]=mm(m),me={
|
|
90
|
+
`})}catch(R){throw i.log.error(R),R}}}}}},S_=10,E_=["id"],O_=({strapi:i})=>({async getConfig(u,o,h=!1){const m=Ff(i),A=await m.getConfig();return u&&!h?Ce.get(A,u,o):h?m.getLocalConfig(u,o):A},parseRelationString(u){const[o,h]=Bm(u);return{uid:o,relatedId:h}},isValidUserContext(u){return u?u.id!=null:!0},sanitizeCommentEntity(u,o,h=[],m={}){const A=Array.isArray(m)?m:Object.keys(m||{});return Ce.omit({...jm({...u,threadOf:Ce.isObject(u.threadOf)?jm(u.threadOf,o,A):u.threadOf},o,A)},h)},async findAllFlat({fields:u,limit:o,skip:h,sort:m,populate:A,omit:E=[],isAdmin:T=!1,pagination:R,filters:z={},locale:I},F){const U=E.filter(Qe=>!E_.includes(Qe)),ie=["id","related"].filter(Qe=>!U.includes(Qe)),j={authorUser:!0,...Ce.isObject(A)?A:{}},Z=T?[]:await this.getConfig(lr.AUTHOR_BLOCKED_PROPS,[]),[ee,Q]=mm(m),me={orderBy:{[ee]:Q},select:Array.isArray(u)?Ce.uniq([...u,ie].flat()):u},ve={where:{...z,...I?{locale:I}:{}},populate:j,...me,pageSize:R?.pageSize||o||S_,page:R?.page||(h?Math.floor(h/o):1)||1},{results:ze,pagination:Ve}=await it(i).findWithCount(ve),Ye=await Promise.all(ze.map(async Qe=>{const{results:wn,pagination:{total:An}}=await it(i).findWithCount({where:{threadOf:Qe.id}});return{id:Qe.id,itemsInTread:An,firstThreadItemId:Ce.first(wn)?.id}})),Me=U.includes("related")?[]:F!==null?[F]:await this.findRelatedEntitiesFor([...ze]),cn=Me.filter(Qe=>Qe).length>0,jn=ze.map(Qe=>{const wn=Ye.find(Ze=>Ze.id===Qe.id),An="threadOf"in z?Ce.isString(z.threadOf)?Ce.parseInt(z.threadOf):z.threadOf:null;let Zr={};Ce.isObject(j?.authorUser)&&(Zr="populate"in j.authorUser?j.authorUser.populate:j.authorUser);const fr=typeof An=="number"?An:null;return this.sanitizeCommentEntity({...Qe,threadOf:fr||Qe.threadOf,gotThread:(wn?.itemsInTread||0)>0,threadFirstItemId:wn?.firstThreadItemId},Z,U,Zr)});return{data:cn?jn.map(Qe=>this.mergeRelatedEntityTo(Qe,Me)):jn,pagination:Ve}},async findAllInHierarchy({filters:u,populate:o,sort:h,fields:m,startingFromId:A,dropBlockedThreads:E,isAdmin:T=!1,omit:R=[],locale:z,limit:I},F){const U=await this.findAllFlat({filters:u,populate:o,sort:h,fields:m,isAdmin:T,omit:R,locale:z,limit:I},F);return pv(U?.data,A,"threadOf",E,!1)},async findOne(u){const o=await it(i).findOne({where:u,populate:{reports:!0,authorUser:!0}});if(!o)throw new bn(400,"Comment does not exist. Check your payload please.");const h=await this.getConfig(lr.AUTHOR_BLOCKED_PROPS,[]),m=this.sanitizeCommentEntity(o,h);return gv(m)},async findMany(u){return it(i).findMany(u)},async updateComment(u,o){return it(i).update({where:u,data:o})},async findAllPerAuthor({filters:u={},populate:o={},pagination:h,sort:m,fields:A,isAdmin:E=!1,authorId:T},R=!1){{if(Ce.isNil(T))return{data:[]};const z=R?{authorUser:{id:T}}:{authorId:T},I=await this.findAllFlat({filters:{...Ce.omit(u,["related"]),...z},pagination:h,populate:o,sort:m,fields:A,isAdmin:E});return{...I,data:I.data.map(({author:F,...U})=>U)}}},async findRelatedEntitiesFor(u){const o=u.reduce((h,m)=>{const[A,E]=Bm(m.related);return{...h,[A]:{...h[A]||{},documentIds:[...h[A]?.documentIds||[],E],locale:[...h[A]?.locale||[],m.locale]}}},{});return Promise.all(Object.entries(o).map(async([h,{documentIds:m,locale:A}])=>Promise.all(m.map((E,T)=>i.documents(h).findOne({documentId:E.toString(),locale:Ce.isNil(A[T])?void 0:A[T],status:"published"}))).then(E=>E.filter(T=>T).map(T=>({...T,uid:h}))))).then(h=>h.flat(2))},mergeRelatedEntityTo(u,o=[]){return{...u,related:o.find(h=>h.locale&&u.locale?u.related===`${h.uid}:${h.documentId}`&&u.locale===h.locale:u.related===`${h.uid}:${h.documentId}`)}},async modifiedNestedNestedComments(u,o,h,m=10){if(m===0)return!0;try{const A=await this.findMany({where:{threadOf:u}}),E=await it(i).updateMany({where:{id:A.map(T=>T.id)},data:{[o]:h}});return A.length===E.count&&E.count>0?(await Promise.all(A.map(R=>this.modifiedNestedNestedComments(R.id,o,h,m-1)))).length===E.count:!0}catch{return!1}},async checkBadWords(u){if(await this.getConfig(lr.BAD_WORDS,!0)&&u&&Cm.isProfane({testString:u}))throw new bn(400,"Bad language used! Please polite your comment...",{content:{original:u,filtered:u&&Cm.replaceProfanities({testString:u})}});return u},async perRemove(u,o){const h=await i.plugin("i18n")?.service("locales").getDefaultLocale()||null;return it(i).deleteMany({where:{related:u,$or:[{locale:o},h===o?{locale:{$eq:null}}:null].filter(Boolean)}})},registerLifecycleHook(){},async runLifecycleHook(){}});var xf={exports:{}};/**
|
|
91
91
|
* @license
|
|
92
92
|
* Lodash <https://lodash.com/>
|
|
93
93
|
* Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
|