@skybloxsystems/ticket-bot
Version:
9 lines (8 loc) • 16.2 kB
JavaScript
var fe=Object.create;var j=Object.defineProperty;var be=Object.getOwnPropertyDescriptor;var ye=Object.getOwnPropertyNames;var ve=Object.getPrototypeOf,Ee=Object.prototype.hasOwnProperty;var Le=(i,e,t)=>e in i?j(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var se=i=>j(i,"__esModule",{value:!0});var ke=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports),xe=(i,e)=>{se(i);for(var t in e)j(i,t,{get:e[t],enumerable:!0})},De=(i,e,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of ye(e))!Ee.call(i,s)&&s!=="default"&&j(i,s,{get:()=>e[s],enumerable:!(t=be(e,s))||t.enumerable});return i},R=i=>De(se(j(i!=null?fe(ve(i)):{},"default",i&&i.__esModule&&"default"in i?{get:()=>i.default,enumerable:!0}:{value:i,enumerable:!0})),i);var l=(i,e,t)=>(Le(i,typeof e!="symbol"?e+"":e,t),t),ie=(i,e,t)=>{if(!e.has(i))throw TypeError("Cannot "+t)};var u=(i,e,t)=>(ie(i,e,"read from private field"),t?t.call(i):e.get(i)),D=(i,e,t)=>{if(e.has(i))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(i):e.set(i,t)},b=(i,e,t,s)=>(ie(i,e,"write to private field"),s?s.call(i,t):e.set(i,t),t);var re=ke((Se,qe)=>{qe.exports={name:"@discordjs/rest",version:"0.1.1-canary.0",description:"The REST API for discord.js",scripts:{test:'echo "Error: run tests from root" && exit 1',build:"tsup && tsc --emitDeclarationOnly"},main:"./dist/index.js",module:"./dist/index.mjs",typings:"./dist/index.d.ts",exports:{import:"./dist/index.mjs",require:"./dist/index.js"},directories:{lib:"src",test:"__tests__"},files:["dist"],contributors:["Crawl <icrawltogo@gmail.com>","Amish Shah <amishshah.2k@gmail.com>","SpaceEEC <spaceeec@yahoo.com>","Vlad Frangu <kingdgrizzle@gmail.com>","Antonio Roman <kyradiscord@gmail.com>"],license:"Apache-2.0",keywords:["discord","api","rest","discordapp","discordjs"],repository:{type:"git",url:"git+https://github.com/discordjs/discord.js-modules.git"},bugs:{url:"https://github.com/discordjs/discord.js-modules/issues"},homepage:"https://github.com/discordjs/discord.js-modules/tree/main/packages/rest",dependencies:{"@discordjs/collection":"^0.3.2","@sapphire/async-queue":"^1.1.9","@sapphire/snowflake":"^3.0.0","discord-api-types":"^0.25.2","form-data":"^4.0.0","node-fetch":"^2.6.5",tslib:"^2.3.1"},devDependencies:{"@types/node-fetch":"^2.5.10"},engines:{node:">=16.0.0"},publishConfig:{access:"public"}}});xe(exports,{ALLOWED_EXTENSIONS:()=>X,ALLOWED_SIZES:()=>N,ALLOWED_STICKER_EXTENSIONS:()=>G,CDN:()=>B,DefaultRestOptions:()=>q,DefaultUserAgent:()=>H,DiscordAPIError:()=>w,HTTPError:()=>K,REST:()=>pe,RESTEvents:()=>m,RateLimitError:()=>I,RequestManager:()=>_,RequestMethod:()=>p});var ne=R(require("discord-api-types/v9")),oe=re(),H=`DiscordBot (${oe.homepage}, ${oe.version})`,q={agent:{},api:"https://discord.com/api",cdn:"https://cdn.discordapp.com",headers:{},invalidRequestWarningInterval:0,globalRequestsPerSecond:50,offset:50,rejectOnRateLimit:null,retries:3,timeout:15e3,userAgentAppendix:`Node.js ${process.version}`,version:ne.APIVersion},m;(function(r){r.Debug="restDebug",r.InvalidRequestWarning="invalidRequestWarning",r.RateLimited="rateLimited",r.Request="request",r.Response="response"})(m||(m={}));var X=["webp","png","jpg","jpeg","gif"],G=["png","json"],N=[16,32,64,128,256,512,1024,2048,4096];var B=class{constructor(e=q.cdn){this.base=e}appAsset(e,t,s){return this.makeURL(`/app-assets/${e}/${t}`,s)}appIcon(e,t,s){return this.makeURL(`/app-icons/${e}/${t}`,s)}avatar(e,t,s){return this.dynamicMakeURL(`/avatars/${e}/${t}`,t,s)}banner(e,t,s){return this.dynamicMakeURL(`/banners/${e}/${t}`,t,s)}channelIcon(e,t,s){return this.makeURL(`/channel-icons/${e}/${t}`,s)}defaultAvatar(e){return this.makeURL(`/embed/avatars/${e}`)}discoverySplash(e,t,s){return this.makeURL(`/discovery-splashes/${e}/${t}`,s)}emoji(e,t){return this.makeURL(`/emojis/${e}`,{extension:t})}guildMemberAvatar(e,t,s,n){return this.dynamicMakeURL(`/guilds/${e}/users/${t}/avatars/${s}`,s,n)}icon(e,t,s){return this.dynamicMakeURL(`/icons/${e}/${t}`,t,s)}roleIcon(e,t,s){return this.makeURL(`/role-icons/${e}/${t}`,s)}splash(e,t,s){return this.makeURL(`/splashes/${e}/${t}`,s)}sticker(e,t){return this.makeURL(`/stickers/${e}`,{allowedExtensions:G,extension:t})}stickerPackBanner(e,t){return this.makeURL(`/app-assets/710982414301790216/store/${e}`,t)}teamIcon(e,t,s){return this.makeURL(`/team-icons/${e}/${t}`,s)}dynamicMakeURL(e,t,{dynamic:s=!1,...n}={}){return this.makeURL(e,s&&t.startsWith("a_")?{...n,extension:"gif"}:n)}makeURL(e,{allowedExtensions:t=X,extension:s="png",size:n}={}){if(s=String(s).toLowerCase(),!t.includes(s))throw new RangeError(`Invalid extension provided: ${s}
Must be one of: ${t.join(", ")}`);if(n&&!N.includes(n))throw new RangeError(`Invalid size provided: ${n}
Must be one of: ${N.join(", ")}`);let r=new URL(`${this.base}${e}.${s}`);return n&&r.searchParams.set("size",String(n)),r.toString()}};function we(i){return Reflect.has(i,"_errors")}function $e(i){return typeof Reflect.get(i,"message")=="string"}var w=class extends Error{constructor(e,t,s,n,r,a){super(w.getMessage(e));this.rawError=e;this.code=t;this.status=s;this.method=n;this.url=r;l(this,"requestBody");this.requestBody={attachments:a.attachments,json:a.body}}get name(){return`${w.name}[${this.code}]`}static getMessage(e){let t="";return e.errors&&(t=[...this.flattenDiscordError(e.errors)].join(`
`)),e.message&&t?`${e.message}
${t}`:e.message||t||"Unknown Error"}static*flattenDiscordError(e,t=""){if($e(e))return yield`${t.length?`${t}[${e.code}]`:`${e.code}`}: ${e.message}`.trim();for(let[s,n]of Object.entries(e)){let r=s.startsWith("_")?t:t?Number.isNaN(Number(s))?`${t}.${s}`:`${t}[${s}]`:s;if(typeof n=="string")yield n;else if(we(n))for(let a of n._errors)yield*this.flattenDiscordError(a,r);else yield*this.flattenDiscordError(n,r)}}};var K=class extends Error{constructor(e,t,s,n,r,a){super(e);this.name=t;this.status=s;this.method=n;this.url=r;l(this,"requestBody");this.requestBody={attachments:a.attachments,json:a.body}}};var I=class extends Error{constructor({timeToReset:e,limit:t,method:s,hash:n,url:r,route:a,majorParameter:g,global:x}){super();l(this,"timeToReset");l(this,"limit");l(this,"method");l(this,"hash");l(this,"url");l(this,"route");l(this,"majorParameter");l(this,"global");this.timeToReset=e,this.limit=t,this.method=s,this.hash=n,this.url=r,this.route=a,this.majorParameter=g,this.global=x}get name(){return`${I.name}[${this.route}]`}};var V=R(require("@discordjs/collection")),le=R(require("form-data")),ue=R(require("@sapphire/snowflake")),me=R(require("events")),ce=R(require("https"));var W=R(require("timers/promises")),J=R(require("@sapphire/async-queue")),ae=R(require("node-fetch"));function F(i){return i.headers.get("Content-Type")?.startsWith("application/json")?i.json():i.buffer()}function z(i,e,t){if(i==="/channels/:id"){if(typeof e!="object"||e===null||t!==p.Patch)return!1;let s=e;return["name","topic"].some(n=>Reflect.has(s,n))}return!1}var M=0,C=null,T;(function(t){t[t.Standard=0]="Standard",t[t.Sublimit=1]="Sublimit"})(T||(T={}));var k,d,v,S,Z=class{constructor(e,t,s){this.manager=e;this.hash=t;this.majorParameter=s;l(this,"id");l(this,"reset",-1);l(this,"remaining",1);l(this,"limit",1/0);D(this,k,new J.AsyncQueue);D(this,d,null);D(this,v,null);D(this,S,!1);this.id=`${t}:${s}`}get inactive(){return u(this,k).remaining===0&&(u(this,d)===null||u(this,d).remaining===0)&&!this.limited}get globalLimited(){return this.manager.globalRemaining<=0&&Date.now()<this.manager.globalReset}get localLimited(){return this.remaining<=0&&Date.now()<this.reset}get limited(){return this.globalLimited||this.localLimited}get timeToReset(){return this.reset+this.manager.options.offset-Date.now()}debug(e){this.manager.emit(m.Debug,`[REST ${this.id}] ${e}`)}async globalDelayFor(e){await(0,W.setTimeout)(e,void 0,{ref:!1}),this.manager.globalDelay=null}async onRateLimit(e){let{options:t}=this.manager;if(!t.rejectOnRateLimit)return;if(typeof t.rejectOnRateLimit=="function"?await t.rejectOnRateLimit(e):t.rejectOnRateLimit.some(n=>e.route.startsWith(n.toLowerCase())))throw new I(e)}async queueRequest(e,t,s,n){let r=u(this,k),a=0;if(u(this,d)&&z(e.bucketRoute,n.body,s.method)&&(r=u(this,d),a=1),await r.wait(),a===0)if(u(this,d)&&z(e.bucketRoute,n.body,s.method)){r=u(this,d);let g=r.wait();u(this,k).shift(),await g}else u(this,v)&&await u(this,v).promise;try{return await this.runRequest(e,t,s,n)}finally{r.shift(),u(this,S)&&(b(this,S,!1),u(this,d)?.shift()),u(this,d)?.remaining===0&&(u(this,v)?.resolve(),b(this,d,null))}}async runRequest(e,t,s,n,r=0){for(;this.limited;){let c=this.globalLimited,L,h,$;c?(L=this.manager.options.globalRequestsPerSecond,h=this.manager.globalReset+this.manager.options.offset-Date.now(),this.manager.globalDelay||(this.manager.globalDelay=this.globalDelayFor(h)),$=this.manager.globalDelay):(L=this.limit,h=this.timeToReset,$=(0,W.setTimeout)(h,void 0,{ref:!1}));let A={timeToReset:h,limit:L,method:s.method??"get",hash:this.hash,url:t,route:e.bucketRoute,majorParameter:this.majorParameter,global:c};this.manager.emit(m.RateLimited,A),await this.onRateLimit(A),c?this.debug(`Global rate limit hit, blocking all requests for ${h}ms`):this.debug(`Waiting ${h}ms for rate limit to pass`),await $}(!this.manager.globalReset||this.manager.globalReset<Date.now())&&(this.manager.globalReset=Date.now()+1e3,this.manager.globalRemaining=this.manager.options.globalRequestsPerSecond),this.manager.globalRemaining--;let a=s.method??"get";this.manager.listenerCount(m.Request)&&this.manager.emit(m.Request,{method:a,path:e.original,route:e.bucketRoute,options:s,data:n,retries:r});let g=new AbortController,x=setTimeout(()=>g.abort(),this.manager.options.timeout).unref(),o;try{o=await(0,ae.default)(t,{...s,signal:g.signal})}catch(c){if(c instanceof Error&&c.name==="AbortError"&&r!==this.manager.options.retries)return this.runRequest(e,t,s,n,++r);throw c}finally{clearTimeout(x)}this.manager.listenerCount(m.Response)&&this.manager.emit(m.Response,{method:a,path:e.original,route:e.bucketRoute,options:s,data:n,retries:r},o.clone());let f=0,E=o.headers.get("X-RateLimit-Limit"),Y=o.headers.get("X-RateLimit-Remaining"),ee=o.headers.get("X-RateLimit-Reset-After"),U=o.headers.get("X-RateLimit-Bucket"),te=o.headers.get("Retry-After");this.limit=E?Number(E):1/0,this.remaining=Y?Number(Y):1,this.reset=ee?Number(ee)*1e3+Date.now()+this.manager.options.offset:Date.now(),te&&(f=Number(te)*1e3+this.manager.options.offset),U&&U!==this.hash&&(this.debug(["Received bucket hash update",` Old Hash : ${this.hash}`,` New Hash : ${U}`].join(`
`)),this.manager.hashes.set(`${a}:${e.bucketRoute}`,U));let P=null;if(f>0&&(o.headers.get("X-RateLimit-Global")?(this.manager.globalRemaining=0,this.manager.globalReset=Date.now()+f):this.localLimited||(P=f)),(o.status===401||o.status===403||o.status===429)&&((!C||C<Date.now())&&(C=Date.now()+1e3*60*10,M=0),M++,this.manager.options.invalidRequestWarningInterval>0&&M%this.manager.options.invalidRequestWarningInterval==0&&this.manager.emit(m.InvalidRequestWarning,{count:M,remainingTime:C-Date.now()})),o.ok)return F(o);if(o.status===429){let c=this.globalLimited,L,h;if(c?(L=this.manager.options.globalRequestsPerSecond,h=this.manager.globalReset+this.manager.options.offset-Date.now()):(L=this.limit,h=this.timeToReset),await this.onRateLimit({timeToReset:h,limit:L,method:a,hash:this.hash,url:t,route:e.bucketRoute,majorParameter:this.majorParameter,global:c}),this.debug(["Encountered unexpected 429 rate limit",` Global : ${c.toString()}`,` Method : ${a}`,` URL : ${t}`,` Bucket : ${e.bucketRoute}`,` Major parameter: ${e.majorParameter}`,` Hash : ${this.hash}`,` Limit : ${L}`,` Retry After : ${f}ms`,` Sublimit : ${P?`${P}ms`:"None"}`].join(`
`)),P){let $=!u(this,d);$&&(b(this,d,new J.AsyncQueue),u(this,d).wait(),u(this,k).shift()),u(this,v)?.resolve(),b(this,v,null),await(0,W.setTimeout)(P,void 0,{ref:!1});let A,he=new Promise(Re=>A=Re);b(this,v,{promise:he,resolve:A}),$&&(await u(this,k).wait(),b(this,S,!0))}return this.runRequest(e,t,s,n,r)}else if(o.status>=500&&o.status<600){if(r!==this.manager.options.retries)return this.runRequest(e,t,s,n,++r);throw new K(o.statusText,o.constructor.name,o.status,a,t,n)}else{if(o.status>=400&&o.status<500){o.status===401&&this.manager.setToken(null);let c=await F(o);throw new w(c,c.code,o.status,a,t,n)}return null}}};k=new WeakMap,d=new WeakMap,v=new WeakMap,S=new WeakMap;var de=null,p;(function(r){r.Delete="delete",r.Get="get",r.Patch="patch",r.Post="post",r.Put="put"})(p||(p={}));var O,Q=class extends me.EventEmitter{constructor(e){super();l(this,"globalRemaining");l(this,"globalDelay",null);l(this,"globalReset",-1);l(this,"hashes",new V.default);l(this,"handlers",new V.default);D(this,O,null);l(this,"options");this.options={...q,...e},this.options.offset=Math.max(0,this.options.offset),this.globalRemaining=this.options.globalRequestsPerSecond}setToken(e){return b(this,O,e),this}async queueRequest(e){let t=Q.generateRouteData(e.fullRoute,e.method),s=this.hashes.get(`${e.method}:${t.bucketRoute}`)??`Global(${e.method}:${t.bucketRoute})`,n=this.handlers.get(`${s}:${t.majorParameter}`)??this.createHandler(s,t.majorParameter),{url:r,fetchOptions:a}=this.resolveRequest(e);return n.queueRequest(t,r,a,{body:e.body,attachments:e.attachments})}createHandler(e,t){let s=new Z(this,e,t);return this.handlers.set(s.id,s),s}resolveRequest(e){let{options:t}=this;de??=new ce.Agent({...t.agent,keepAlive:!0});let s="";e.query&&(s=`?${e.query.toString()}`);let n={...this.options.headers,"User-Agent":`${H} ${t.userAgentAppendix}`.trim()};if(e.auth!==!1){if(!u(this,O))throw new Error("Expected token to be set for this request, but none was present");n.Authorization=`${e.authPrefix??"Bot"} ${u(this,O)}`}e.reason?.length&&(n["X-Audit-Log-Reason"]=encodeURIComponent(e.reason));let r=`${t.api}${e.versioned===!1?"":`/v${t.version}`}${e.fullRoute}${s}`,a,g={};if(e.attachments?.length){let o=new le.default;for(let[f,E]of e.attachments.entries())o.append(E.key??`files[${f}]`,E.rawBuffer,E.fileName);if(e.body!=null)if(e.appendToFormData)for(let[f,E]of Object.entries(e.body))o.append(f,E);else o.append("payload_json",JSON.stringify(e.body));a=o,g=o.getHeaders()}else e.body!=null&&(a=JSON.stringify(e.body),g={"Content-Type":"application/json"});let x={agent:de,body:a,headers:{...e.headers??{},...g,...n},method:e.method};return{url:r,fetchOptions:x}}static generateRouteData(e,t){let n=/^\/(?:channels|guilds|webhooks)\/(\d{16,19})/.exec(e)?.[1]??"global",r=e.replace(/\d{16,19}/g,":id").replace(/\/reactions\/(.*)/,"/reactions/:reaction"),a="";if(t===p.Delete&&r==="/channels/:id/messages/:id"){let g=/\d{16,19}$/.exec(e)[0],x=ue.DiscordSnowflake.deconstruct(g);Date.now()-Number(x.timestamp)>1e3*60*60*24*14&&(a+="/Delete Old Message")}return{majorParameter:n,bucketRoute:r+a,original:e}}},_=Q;O=new WeakMap;var ge=R(require("events"));var pe=class extends ge.EventEmitter{constructor(e={}){super();l(this,"cdn");l(this,"requestManager");this.cdn=new B(e.cdn??q.cdn),this.requestManager=new _(e).on(m.Debug,this.emit.bind(this,m.Debug)).on(m.RateLimited,this.emit.bind(this,m.RateLimited)).on(m.InvalidRequestWarning,this.emit.bind(this,m.InvalidRequestWarning)),this.on("newListener",(t,s)=>{(t===m.Request||t===m.Response)&&this.requestManager.on(t,s)}),this.on("removeListener",(t,s)=>{(t===m.Request||t===m.Response)&&this.requestManager.off(t,s)})}setToken(e){return this.requestManager.setToken(e),this}get(e,t={}){return this.request({...t,fullRoute:e,method:p.Get})}delete(e,t={}){return this.request({...t,fullRoute:e,method:p.Delete})}post(e,t={}){return this.request({...t,fullRoute:e,method:p.Post})}put(e,t={}){return this.request({...t,fullRoute:e,method:p.Put})}patch(e,t={}){return this.request({...t,fullRoute:e,method:p.Patch})}request(e){return this.requestManager.queueRequest(e)}};0&&(module.exports={ALLOWED_EXTENSIONS,ALLOWED_SIZES,ALLOWED_STICKER_EXTENSIONS,CDN,DefaultRestOptions,DefaultUserAgent,DiscordAPIError,HTTPError,REST,RESTEvents,RateLimitError,RequestManager,RequestMethod});
//# sourceMappingURL=index.js.map