@serverbench/js 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,348 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
8
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
+ var __spreadValues = (a2, b2) => {
10
+ for (var prop in b2 || (b2 = {}))
11
+ if (__hasOwnProp.call(b2, prop))
12
+ __defNormalProp(a2, prop, b2[prop]);
13
+ if (__getOwnPropSymbols)
14
+ for (var prop of __getOwnPropSymbols(b2)) {
15
+ if (__propIsEnum.call(b2, prop))
16
+ __defNormalProp(a2, prop, b2[prop]);
17
+ }
18
+ return a2;
19
+ };
20
+ var __export = (target, all) => {
21
+ for (var name in all)
22
+ __defProp(target, name, { get: all[name], enumerable: true });
23
+ };
24
+ var __copyProps = (to, from, except, desc) => {
25
+ if (from && typeof from === "object" || typeof from === "function") {
26
+ for (let key of __getOwnPropNames(from))
27
+ if (!__hasOwnProp.call(to, key) && key !== except)
28
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
29
+ }
30
+ return to;
31
+ };
32
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
33
+ var __async = (__this, __arguments, generator) => {
34
+ return new Promise((resolve, reject) => {
35
+ var fulfilled = (value) => {
36
+ try {
37
+ step(generator.next(value));
38
+ } catch (e) {
39
+ reject(e);
40
+ }
41
+ };
42
+ var rejected = (value) => {
43
+ try {
44
+ step(generator.throw(value));
45
+ } catch (e) {
46
+ reject(e);
47
+ }
48
+ };
49
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
50
+ step((generator = generator.apply(__this, __arguments)).next());
51
+ });
52
+ };
53
+
54
+ // src/Serverbench.ts
55
+ var Serverbench_exports = {};
56
+ __export(Serverbench_exports, {
57
+ default: () => Serverbench
58
+ });
59
+ module.exports = __toCommonJS(Serverbench_exports);
60
+
61
+ // node_modules/.pnpm/@open-iframe-resizer+core@1.2.1/node_modules/@open-iframe-resizer/core/dist/index.js
62
+ var g = () => typeof window < "u";
63
+ var L = () => window.self !== window.top;
64
+ var m = (e) => e instanceof HTMLIFrameElement;
65
+ var w = (e, t) => {
66
+ e.document.readyState === "complete" ? t() : e.addEventListener("load", t);
67
+ };
68
+ var y = (e, t) => {
69
+ t(), e.addEventListener("load", t);
70
+ };
71
+ var p = (e, t) => {
72
+ var i, o;
73
+ const n = ((i = e.contentWindow) == null ? void 0 : i.document.readyState) === "complete";
74
+ return e.src !== "about:blank" && ((o = e.contentWindow) == null ? void 0 : o.location.href) !== "about:blank" && n ? t() : e.addEventListener("load", t);
75
+ };
76
+ var v = () => ({ offsetSize: 0, checkOrigin: true, enableLegacyLibSupport: false });
77
+ var b = (e) => {
78
+ try {
79
+ return new URL(e.src).origin === window.location.origin;
80
+ } catch (e2) {
81
+ return false;
82
+ }
83
+ };
84
+ var I = (e) => {
85
+ try {
86
+ const t = new URL(e.src).origin;
87
+ if (t !== "about:blank")
88
+ return t;
89
+ } catch (e2) {
90
+ }
91
+ return null;
92
+ };
93
+ var R = (e) => (Object.keys(e).forEach((t) => e[t] === void 0 && delete e[t]), e);
94
+ var h = (e) => {
95
+ const { height: t } = e.documentElement.getBoundingClientRect();
96
+ return Math.ceil(t);
97
+ };
98
+ function z(e) {
99
+ y(
100
+ e,
101
+ () => {
102
+ var t;
103
+ return (t = e.contentWindow) == null ? void 0 : t.postMessage("[iFrameSizer]ID:0:false:false:32:true:true::auto:::0:false:child:auto:true:::true:::false", "*");
104
+ }
105
+ );
106
+ }
107
+ function O(e) {
108
+ if (typeof e.data == "string" && e.data.startsWith("[iFrameSizer]")) {
109
+ const [t, n] = e.data.split(":"), r = +n;
110
+ return r > 0 ? r : null;
111
+ }
112
+ return null;
113
+ }
114
+ var a = g() ? M() : null;
115
+ var l = [];
116
+ var D = (e, t) => {
117
+ if (!g())
118
+ return [];
119
+ const n = __spreadValues(__spreadValues({}, v()), R(e != null ? e : {})), r = S(t), i = E(n, r);
120
+ return r.map((o) => {
121
+ const s = { iframe: o, settings: n, interactionState: { isHovered: false } }, d = C(s, i);
122
+ return l.push(s), {
123
+ unsubscribe: () => {
124
+ d(), l = l.filter((u) => u.iframe !== o);
125
+ }
126
+ };
127
+ });
128
+ };
129
+ function S(e) {
130
+ return typeof e == "string" ? Array.from(document.querySelectorAll(e)).filter(m) : e ? m(e) ? [e] : [] : Array.from(document.getElementsByTagName("iframe"));
131
+ }
132
+ function E(e, t) {
133
+ if (Array.isArray(e.checkOrigin))
134
+ return e.checkOrigin;
135
+ if (!e.checkOrigin)
136
+ return [];
137
+ const n = [];
138
+ for (const r of t) {
139
+ const i = I(r);
140
+ i && n.push(i);
141
+ }
142
+ return n;
143
+ }
144
+ function C(e, t) {
145
+ const n = b(e.iframe) ? B(e) : k(e, t), r = H(e);
146
+ return () => {
147
+ n(), r();
148
+ };
149
+ }
150
+ function k(e, t) {
151
+ const { iframe: n, settings: r } = e, i = (o) => {
152
+ var u;
153
+ const s = !r.checkOrigin || t.includes(o.origin);
154
+ if (!(!(n.contentWindow === o.source) || !s)) {
155
+ if (((u = o.data) == null ? void 0 : u.type) === "iframe-resized") {
156
+ const { height: c } = o.data;
157
+ c && f({ newHeight: c, registeredElement: e });
158
+ return;
159
+ }
160
+ if (r.enableLegacyLibSupport) {
161
+ const c = O(o);
162
+ c !== null && f({ newHeight: c, registeredElement: e });
163
+ return;
164
+ }
165
+ }
166
+ };
167
+ return window.addEventListener("message", i), r.enableLegacyLibSupport && z(n), () => window.removeEventListener("message", i);
168
+ }
169
+ function B({ iframe: e }) {
170
+ const t = () => {
171
+ var r;
172
+ const n = (r = e.contentDocument) == null ? void 0 : r.body;
173
+ n && (a == null || a.observe(n));
174
+ };
175
+ return p(e, t), () => {
176
+ var n;
177
+ (n = e.contentDocument) != null && n.body && (a == null || a.unobserve(e.contentDocument.body)), e.removeEventListener("load", t);
178
+ };
179
+ }
180
+ function H({ iframe: e, interactionState: t }) {
181
+ const n = () => {
182
+ t.isHovered = true;
183
+ }, r = () => {
184
+ t.isHovered = false;
185
+ };
186
+ return e.addEventListener("mouseenter", n), e.addEventListener("mouseleave", r), () => {
187
+ e.removeEventListener("mouseenter", n), e.removeEventListener("mouseleave", r);
188
+ };
189
+ }
190
+ function M() {
191
+ const e = ({ target: t }) => {
192
+ const n = l.find((o) => {
193
+ var s;
194
+ return ((s = o.iframe.contentDocument) == null ? void 0 : s.body) === t;
195
+ });
196
+ if (!n)
197
+ return;
198
+ const { iframe: r } = n;
199
+ if (!r.contentDocument)
200
+ return;
201
+ const i = h(r.contentDocument);
202
+ i && f({ newHeight: i, registeredElement: n });
203
+ };
204
+ return new ResizeObserver((t) => t.forEach(e));
205
+ }
206
+ function f({ registeredElement: e, newHeight: t }) {
207
+ const { iframe: n, settings: r, interactionState: i } = e, o = n.getBoundingClientRect(), s = t + r.offsetSize;
208
+ if (n.style.height = `${s}px`, !r.onIframeResize)
209
+ return;
210
+ const d = {
211
+ iframe: n,
212
+ settings: __spreadValues({}, r),
213
+ interactionState: __spreadValues({}, i),
214
+ previousRenderState: { rect: o },
215
+ nextRenderState: { rect: n.getBoundingClientRect() }
216
+ };
217
+ r.onIframeResize(d);
218
+ }
219
+ W();
220
+ function W() {
221
+ !g() || !L() || w(window, () => {
222
+ const e = () => {
223
+ const n = {
224
+ type: "iframe-resized",
225
+ width: document.documentElement.scrollWidth,
226
+ height: h(document)
227
+ };
228
+ window.parent.postMessage(n, "*");
229
+ };
230
+ new ResizeObserver(e).observe(document.body);
231
+ });
232
+ }
233
+
234
+ // src/element/Element.ts
235
+ var Element = class {
236
+ constructor(client, path, args = {}, dark = false, background = false) {
237
+ this.client = client;
238
+ this.dark = dark;
239
+ this.background = background;
240
+ this.path = path;
241
+ this.args = args;
242
+ }
243
+ setDark(dark) {
244
+ this.dark = dark;
245
+ return this;
246
+ }
247
+ setBackground(background) {
248
+ this.background = background;
249
+ return this;
250
+ }
251
+ mount(element) {
252
+ return __async(this, null, function* () {
253
+ const queryParams = new URLSearchParams();
254
+ queryParams.set("clientId", this.client.clientId);
255
+ queryParams.set("clientSecret", this.client.clientSecret);
256
+ if (this.dark) queryParams.set("dark", "true");
257
+ if (this.background) queryParams.set("background", "true");
258
+ for (const key in this.args) {
259
+ const value = this.args[key];
260
+ if (Array.isArray(value)) {
261
+ queryParams.set(key, value.join(","));
262
+ } else {
263
+ queryParams.set(key, value);
264
+ }
265
+ }
266
+ const iframe = document.createElement("iframe");
267
+ iframe.src = `https://safe.serverbench.io${this.path}?${queryParams.toString()}`;
268
+ iframe.style.width = "100%";
269
+ const appended = element.appendChild(iframe);
270
+ D({}, appended);
271
+ return this;
272
+ });
273
+ }
274
+ };
275
+
276
+ // src/store/Store.ts
277
+ var Store = class {
278
+ constructor(client) {
279
+ this.client = client;
280
+ }
281
+ get(username, eid) {
282
+ return __async(this, null, function* () {
283
+ return yield this.client.post("community", "/store/view", {
284
+ username,
285
+ eid
286
+ });
287
+ });
288
+ }
289
+ checkout(prices, discounts, member) {
290
+ return new Element(
291
+ this.client,
292
+ "/community/checkout",
293
+ {
294
+ prices: prices.map((price) => price.id).join(","),
295
+ discounts: discounts.map((discount) => discount.id).join(","),
296
+ member: member.id
297
+ }
298
+ );
299
+ }
300
+ };
301
+
302
+ // src/Serverbench.ts
303
+ var _Serverbench = class _Serverbench {
304
+ constructor(clientId, clientSecret, test) {
305
+ this.clientId = clientId;
306
+ this.clientSecret = clientSecret;
307
+ this.test = test;
308
+ }
309
+ static get(clientId, clientSecret, test = false) {
310
+ if (!_Serverbench.instance || _Serverbench.instance.clientId !== clientId || _Serverbench.instance.clientSecret !== clientSecret || _Serverbench.instance.test !== test) {
311
+ _Serverbench.instance = new _Serverbench(clientId, clientSecret, test);
312
+ }
313
+ return _Serverbench.instance;
314
+ }
315
+ get store() {
316
+ return new Store(this);
317
+ }
318
+ fetch(realm, url, body) {
319
+ return __async(this, null, function* () {
320
+ const domain = this.test ? "https://dev.serverbench.io" : "https://api.serverbench.io";
321
+ const headers = new Headers({
322
+ authorization: `ApiKey ${this.clientSecret}`
323
+ });
324
+ if (body) {
325
+ headers.set("Content-Type", "application/json");
326
+ }
327
+ const response = yield fetch(`${domain}/${realm}/${this.clientId}${url}`, {
328
+ headers,
329
+ method: body ? "POST" : "GET",
330
+ body: body ? JSON.stringify(body) : void 0
331
+ });
332
+ return response.json();
333
+ });
334
+ }
335
+ get(realm, url) {
336
+ return __async(this, null, function* () {
337
+ return this.fetch(realm, url);
338
+ });
339
+ }
340
+ post(_0, _1) {
341
+ return __async(this, arguments, function* (realm, url, body = {}) {
342
+ return this.fetch(realm, url, body);
343
+ });
344
+ }
345
+ };
346
+ _Serverbench.instance = null;
347
+ var Serverbench = _Serverbench;
348
+ //# sourceMappingURL=Serverbench.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Serverbench.ts","../node_modules/.pnpm/@open-iframe-resizer+core@1.2.1/node_modules/@open-iframe-resizer/core/dist/index.js","../src/element/Element.ts","../src/store/Store.ts"],"sourcesContent":["import Store from \"./store/Store.js\"\r\n\r\nexport default class Serverbench {\r\n\r\n clientId: string\r\n clientSecret: string\r\n test: boolean\r\n\r\n private static instance: Serverbench | null = null\r\n\r\n private constructor(clientId: string, clientSecret: string, test: boolean) {\r\n this.clientId = clientId\r\n this.clientSecret = clientSecret\r\n this.test = test\r\n }\r\n\r\n static get(clientId: string, clientSecret: string, test: boolean = false) {\r\n if (!Serverbench.instance || Serverbench.instance.clientId !== clientId || Serverbench.instance.clientSecret !== clientSecret || Serverbench.instance.test !== test) {\r\n Serverbench.instance = new Serverbench(clientId, clientSecret, test)\r\n }\r\n return Serverbench.instance\r\n }\r\n\r\n get store() {\r\n return new Store(this)\r\n }\r\n\r\n private async fetch(realm: string, url: string, body?: any) {\r\n const domain = this.test ? 'https://dev.serverbench.io' : 'https://api.serverbench.io'\r\n const headers = new Headers({\r\n authorization: `ApiKey ${this.clientSecret}`,\r\n })\r\n if (body) {\r\n headers.set('Content-Type', 'application/json')\r\n }\r\n const response = await fetch(`${domain}/${realm}/${this.clientId}${url}`, {\r\n headers,\r\n method: body ? 'POST' : 'GET',\r\n body: body ? JSON.stringify(body) : undefined\r\n })\r\n return response.json()\r\n }\r\n\r\n async get(realm: string, url: string) {\r\n return this.fetch(realm, url)\r\n }\r\n\r\n async post(realm: string, url: string, body: any = {}) {\r\n return this.fetch(realm, url, body)\r\n }\r\n\r\n}","const g = () => typeof window < \"u\", L = () => window.self !== window.top, m = (e) => e instanceof HTMLIFrameElement, w = (e, t) => {\n e.document.readyState === \"complete\" ? t() : e.addEventListener(\"load\", t);\n}, y = (e, t) => {\n t(), e.addEventListener(\"load\", t);\n}, p = (e, t) => {\n var i, o;\n const n = ((i = e.contentWindow) == null ? void 0 : i.document.readyState) === \"complete\";\n return e.src !== \"about:blank\" && ((o = e.contentWindow) == null ? void 0 : o.location.href) !== \"about:blank\" && n ? t() : e.addEventListener(\"load\", t);\n}, v = () => ({ offsetSize: 0, checkOrigin: !0, enableLegacyLibSupport: !1 }), b = (e) => {\n try {\n return new URL(e.src).origin === window.location.origin;\n } catch {\n return !1;\n }\n}, I = (e) => {\n try {\n const t = new URL(e.src).origin;\n if (t !== \"about:blank\")\n return t;\n } catch {\n }\n return null;\n}, R = (e) => (Object.keys(e).forEach((t) => e[t] === void 0 && delete e[t]), e), h = (e) => {\n const { height: t } = e.documentElement.getBoundingClientRect();\n return Math.ceil(t);\n};\nfunction z(e) {\n y(\n e,\n () => {\n var t;\n return (t = e.contentWindow) == null ? void 0 : t.postMessage(\"[iFrameSizer]ID:0:false:false:32:true:true::auto:::0:false:child:auto:true:::true:::false\", \"*\");\n }\n );\n}\nfunction O(e) {\n if (typeof e.data == \"string\" && e.data.startsWith(\"[iFrameSizer]\")) {\n const [t, n] = e.data.split(\":\"), r = +n;\n return r > 0 ? r : null;\n }\n return null;\n}\nconst a = g() ? M() : null;\nlet l = [];\nconst D = (e, t) => {\n if (!g())\n return [];\n const n = { ...v(), ...R(e ?? {}) }, r = S(t), i = E(n, r);\n return r.map((o) => {\n const s = { iframe: o, settings: n, interactionState: { isHovered: !1 } }, d = C(s, i);\n return l.push(s), {\n unsubscribe: () => {\n d(), l = l.filter((u) => u.iframe !== o);\n }\n };\n });\n};\nfunction S(e) {\n return typeof e == \"string\" ? Array.from(document.querySelectorAll(e)).filter(m) : e ? m(e) ? [e] : [] : Array.from(document.getElementsByTagName(\"iframe\"));\n}\nfunction E(e, t) {\n if (Array.isArray(e.checkOrigin))\n return e.checkOrigin;\n if (!e.checkOrigin)\n return [];\n const n = [];\n for (const r of t) {\n const i = I(r);\n i && n.push(i);\n }\n return n;\n}\nfunction C(e, t) {\n const n = b(e.iframe) ? B(e) : k(e, t), r = H(e);\n return () => {\n n(), r();\n };\n}\nfunction k(e, t) {\n const { iframe: n, settings: r } = e, i = (o) => {\n var u;\n const s = !r.checkOrigin || t.includes(o.origin);\n if (!(!(n.contentWindow === o.source) || !s)) {\n if (((u = o.data) == null ? void 0 : u.type) === \"iframe-resized\") {\n const { height: c } = o.data;\n c && f({ newHeight: c, registeredElement: e });\n return;\n }\n if (r.enableLegacyLibSupport) {\n const c = O(o);\n c !== null && f({ newHeight: c, registeredElement: e });\n return;\n }\n }\n };\n return window.addEventListener(\"message\", i), r.enableLegacyLibSupport && z(n), () => window.removeEventListener(\"message\", i);\n}\nfunction B({ iframe: e }) {\n const t = () => {\n var r;\n const n = (r = e.contentDocument) == null ? void 0 : r.body;\n n && (a == null || a.observe(n));\n };\n return p(e, t), () => {\n var n;\n (n = e.contentDocument) != null && n.body && (a == null || a.unobserve(e.contentDocument.body)), e.removeEventListener(\"load\", t);\n };\n}\nfunction H({ iframe: e, interactionState: t }) {\n const n = () => {\n t.isHovered = !0;\n }, r = () => {\n t.isHovered = !1;\n };\n return e.addEventListener(\"mouseenter\", n), e.addEventListener(\"mouseleave\", r), () => {\n e.removeEventListener(\"mouseenter\", n), e.removeEventListener(\"mouseleave\", r);\n };\n}\nfunction M() {\n const e = ({ target: t }) => {\n const n = l.find((o) => {\n var s;\n return ((s = o.iframe.contentDocument) == null ? void 0 : s.body) === t;\n });\n if (!n)\n return;\n const { iframe: r } = n;\n if (!r.contentDocument)\n return;\n const i = h(r.contentDocument);\n i && f({ newHeight: i, registeredElement: n });\n };\n return new ResizeObserver((t) => t.forEach(e));\n}\nfunction f({ registeredElement: e, newHeight: t }) {\n const { iframe: n, settings: r, interactionState: i } = e, o = n.getBoundingClientRect(), s = t + r.offsetSize;\n if (n.style.height = `${s}px`, !r.onIframeResize)\n return;\n const d = {\n iframe: n,\n settings: { ...r },\n interactionState: { ...i },\n previousRenderState: { rect: o },\n nextRenderState: { rect: n.getBoundingClientRect() }\n };\n r.onIframeResize(d);\n}\nW();\nfunction W() {\n !g() || !L() || w(window, () => {\n const e = () => {\n const n = {\n type: \"iframe-resized\",\n width: document.documentElement.scrollWidth,\n height: h(document)\n };\n window.parent.postMessage(n, \"*\");\n };\n new ResizeObserver(e).observe(document.body);\n });\n}\nconst A = ({ previousRenderState: e, nextRenderState: t, interactionState: n }) => {\n n.isHovered && window.scrollBy(0, t.rect.bottom - e.rect.bottom);\n};\nexport {\n D as initialize,\n W as initializeChildListener,\n A as updateParentScrollOnResize\n};\n","import { initialize } from \"../../node_modules/@open-iframe-resizer/core/dist/index.js\"\r\nimport Serverbench from \"../Serverbench.js\"\r\n\r\nexport default class Element {\r\n\r\n private readonly client: Serverbench\r\n private dark: boolean\r\n private background: boolean\r\n private readonly path: string\r\n private readonly args: Record<string, string | string[]>\r\n\r\n constructor(client: Serverbench, path: string, args: Record<string, string | string[]> = {}, dark: boolean = false, background: boolean = false) {\r\n this.client = client\r\n this.dark = dark\r\n this.background = background\r\n this.path = path\r\n this.args = args\r\n }\r\n\r\n setDark(dark: boolean) {\r\n this.dark = dark\r\n return this\r\n }\r\n\r\n setBackground(background: boolean) {\r\n this.background = background\r\n return this\r\n }\r\n\r\n async mount(element: HTMLElement) {\r\n const queryParams = new URLSearchParams()\r\n queryParams.set('clientId', this.client.clientId)\r\n queryParams.set('clientSecret', this.client.clientSecret)\r\n if (this.dark) queryParams.set('dark', 'true')\r\n if (this.background) queryParams.set('background', 'true')\r\n for (const key in this.args) {\r\n const value = this.args[key]\r\n if (Array.isArray(value)) {\r\n queryParams.set(key, value.join(','))\r\n } else {\r\n queryParams.set(key, value)\r\n }\r\n }\r\n const iframe = document.createElement('iframe');\r\n iframe.src = `https://safe.serverbench.io${this.path}?${queryParams.toString()}`;\r\n iframe.style.width = '100%';\r\n const appended = element.appendChild(iframe);\r\n initialize({}, appended);\r\n return this\r\n }\r\n\r\n}","import Element from \"../element/Element.js\";\r\nimport Member from \"../Member.js\";\r\nimport type Serverbench from \"../Serverbench.js\";\r\nimport IDiscount from \"./IDiscount.js\";\r\nimport ISkuPrice from \"./ISkuPrice.js\";\r\nimport type IStore from \"./IStore.js\";\r\n\r\nexport default class Store {\r\n\r\n private client: Serverbench\r\n\r\n constructor(client: Serverbench) {\r\n this.client = client\r\n }\r\n\r\n async get(username?: string, eid?: string) {\r\n return (await this.client.post('community', '/store/view', {\r\n username,\r\n eid\r\n })) as IStore\r\n }\r\n\r\n checkout(prices: ISkuPrice[], discounts: IDiscount[], member: Member) {\r\n return new Element(\r\n this.client,\r\n '/community/checkout',\r\n {\r\n prices: prices.map(price => price.id).join(','),\r\n discounts: discounts.map(discount => discount.id).join(','),\r\n member: member.id\r\n }\r\n )\r\n }\r\n\r\n}"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAM,IAAI,MAAM,OAAO,SAAS;AAAhC,IAAqC,IAAI,MAAM,OAAO,SAAS,OAAO;AAAtE,IAA2E,IAAI,CAAC,MAAM,aAAa;AAAnG,IAAsH,IAAI,CAAC,GAAG,MAAM;AAClI,IAAE,SAAS,eAAe,aAAa,EAAE,IAAI,EAAE,iBAAiB,QAAQ,CAAC;AAC3E;AAFA,IAEG,IAAI,CAAC,GAAG,MAAM;AACf,IAAE,GAAG,EAAE,iBAAiB,QAAQ,CAAC;AACnC;AAJA,IAIG,IAAI,CAAC,GAAG,MAAM;AACf,MAAI,GAAG;AACP,QAAM,MAAM,IAAI,EAAE,kBAAkB,OAAO,SAAS,EAAE,SAAS,gBAAgB;AAC/E,SAAO,EAAE,QAAQ,mBAAmB,IAAI,EAAE,kBAAkB,OAAO,SAAS,EAAE,SAAS,UAAU,iBAAiB,IAAI,EAAE,IAAI,EAAE,iBAAiB,QAAQ,CAAC;AAC1J;AARA,IAQG,IAAI,OAAO,EAAE,YAAY,GAAG,aAAa,MAAI,wBAAwB,MAAG;AAR3E,IAQ+E,IAAI,CAAC,MAAM;AACxF,MAAI;AACF,WAAO,IAAI,IAAI,EAAE,GAAG,EAAE,WAAW,OAAO,SAAS;AAAA,EACnD,SAAQA,IAAA;AACN,WAAO;AAAA,EACT;AACF;AAdA,IAcG,IAAI,CAAC,MAAM;AACZ,MAAI;AACF,UAAM,IAAI,IAAI,IAAI,EAAE,GAAG,EAAE;AACzB,QAAI,MAAM;AACR,aAAO;AAAA,EACX,SAAQA,IAAA;AAAA,EACR;AACA,SAAO;AACT;AAtBA,IAsBG,IAAI,CAAC,OAAO,OAAO,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,UAAU,OAAO,EAAE,CAAC,CAAC,GAAG;AAtB9E,IAsBkF,IAAI,CAAC,MAAM;AAC3F,QAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB,sBAAsB;AAC9D,SAAO,KAAK,KAAK,CAAC;AACpB;AACA,SAAS,EAAE,GAAG;AACZ;AAAA,IACE;AAAA,IACA,MAAM;AACJ,UAAI;AACJ,cAAQ,IAAI,EAAE,kBAAkB,OAAO,SAAS,EAAE,YAAY,6FAA6F,GAAG;AAAA,IAChK;AAAA,EACF;AACF;AACA,SAAS,EAAE,GAAG;AACZ,MAAI,OAAO,EAAE,QAAQ,YAAY,EAAE,KAAK,WAAW,eAAe,GAAG;AACnE,UAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,MAAM,GAAG,GAAG,IAAI,CAAC;AACvC,WAAO,IAAI,IAAI,IAAI;AAAA,EACrB;AACA,SAAO;AACT;AACA,IAAM,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,IAAI,IAAI,CAAC;AACT,IAAM,IAAI,CAAC,GAAG,MAAM;AAClB,MAAI,CAAC,EAAE;AACL,WAAO,CAAC;AACV,QAAM,IAAI,kCAAK,EAAE,IAAM,EAAE,gBAAK,CAAC,CAAC,IAAK,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC;AACzD,SAAO,EAAE,IAAI,CAAC,MAAM;AAClB,UAAM,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,kBAAkB,EAAE,WAAW,MAAG,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC;AACrF,WAAO,EAAE,KAAK,CAAC,GAAG;AAAA,MAChB,aAAa,MAAM;AACjB,UAAE,GAAG,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC;AAAA,MACzC;AAAA,IACF;AAAA,EACF,CAAC;AACH;AACA,SAAS,EAAE,GAAG;AACZ,SAAO,OAAO,KAAK,WAAW,MAAM,KAAK,SAAS,iBAAiB,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,MAAM,KAAK,SAAS,qBAAqB,QAAQ,CAAC;AAC7J;AACA,SAAS,EAAE,GAAG,GAAG;AACf,MAAI,MAAM,QAAQ,EAAE,WAAW;AAC7B,WAAO,EAAE;AACX,MAAI,CAAC,EAAE;AACL,WAAO,CAAC;AACV,QAAM,IAAI,CAAC;AACX,aAAW,KAAK,GAAG;AACjB,UAAM,IAAI,EAAE,CAAC;AACb,SAAK,EAAE,KAAK,CAAC;AAAA,EACf;AACA,SAAO;AACT;AACA,SAAS,EAAE,GAAG,GAAG;AACf,QAAM,IAAI,EAAE,EAAE,MAAM,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;AAC/C,SAAO,MAAM;AACX,MAAE,GAAG,EAAE;AAAA,EACT;AACF;AACA,SAAS,EAAE,GAAG,GAAG;AACf,QAAM,EAAE,QAAQ,GAAG,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM;AAC/C,QAAI;AACJ,UAAM,IAAI,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM;AAC/C,QAAI,EAAE,EAAE,EAAE,kBAAkB,EAAE,WAAW,CAAC,IAAI;AAC5C,YAAM,IAAI,EAAE,SAAS,OAAO,SAAS,EAAE,UAAU,kBAAkB;AACjE,cAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;AACxB,aAAK,EAAE,EAAE,WAAW,GAAG,mBAAmB,EAAE,CAAC;AAC7C;AAAA,MACF;AACA,UAAI,EAAE,wBAAwB;AAC5B,cAAM,IAAI,EAAE,CAAC;AACb,cAAM,QAAQ,EAAE,EAAE,WAAW,GAAG,mBAAmB,EAAE,CAAC;AACtD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,SAAO,OAAO,iBAAiB,WAAW,CAAC,GAAG,EAAE,0BAA0B,EAAE,CAAC,GAAG,MAAM,OAAO,oBAAoB,WAAW,CAAC;AAC/H;AACA,SAAS,EAAE,EAAE,QAAQ,EAAE,GAAG;AACxB,QAAM,IAAI,MAAM;AACd,QAAI;AACJ,UAAM,KAAK,IAAI,EAAE,oBAAoB,OAAO,SAAS,EAAE;AACvD,UAAM,KAAK,QAAQ,EAAE,QAAQ,CAAC;AAAA,EAChC;AACA,SAAO,EAAE,GAAG,CAAC,GAAG,MAAM;AACpB,QAAI;AACJ,KAAC,IAAI,EAAE,oBAAoB,QAAQ,EAAE,SAAS,KAAK,QAAQ,EAAE,UAAU,EAAE,gBAAgB,IAAI,IAAI,EAAE,oBAAoB,QAAQ,CAAC;AAAA,EAClI;AACF;AACA,SAAS,EAAE,EAAE,QAAQ,GAAG,kBAAkB,EAAE,GAAG;AAC7C,QAAM,IAAI,MAAM;AACd,MAAE,YAAY;AAAA,EAChB,GAAG,IAAI,MAAM;AACX,MAAE,YAAY;AAAA,EAChB;AACA,SAAO,EAAE,iBAAiB,cAAc,CAAC,GAAG,EAAE,iBAAiB,cAAc,CAAC,GAAG,MAAM;AACrF,MAAE,oBAAoB,cAAc,CAAC,GAAG,EAAE,oBAAoB,cAAc,CAAC;AAAA,EAC/E;AACF;AACA,SAAS,IAAI;AACX,QAAM,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM;AAC3B,UAAM,IAAI,EAAE,KAAK,CAAC,MAAM;AACtB,UAAI;AACJ,eAAS,IAAI,EAAE,OAAO,oBAAoB,OAAO,SAAS,EAAE,UAAU;AAAA,IACxE,CAAC;AACD,QAAI,CAAC;AACH;AACF,UAAM,EAAE,QAAQ,EAAE,IAAI;AACtB,QAAI,CAAC,EAAE;AACL;AACF,UAAM,IAAI,EAAE,EAAE,eAAe;AAC7B,SAAK,EAAE,EAAE,WAAW,GAAG,mBAAmB,EAAE,CAAC;AAAA,EAC/C;AACA,SAAO,IAAI,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC/C;AACA,SAAS,EAAE,EAAE,mBAAmB,GAAG,WAAW,EAAE,GAAG;AACjD,QAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,kBAAkB,EAAE,IAAI,GAAG,IAAI,EAAE,sBAAsB,GAAG,IAAI,IAAI,EAAE;AACpG,MAAI,EAAE,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,EAAE;AAChC;AACF,QAAM,IAAI;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,mBAAK;AAAA,IACf,kBAAkB,mBAAK;AAAA,IACvB,qBAAqB,EAAE,MAAM,EAAE;AAAA,IAC/B,iBAAiB,EAAE,MAAM,EAAE,sBAAsB,EAAE;AAAA,EACrD;AACA,IAAE,eAAe,CAAC;AACpB;AACA,EAAE;AACF,SAAS,IAAI;AACX,GAAC,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,MAAM;AAC9B,UAAM,IAAI,MAAM;AACd,YAAM,IAAI;AAAA,QACR,MAAM;AAAA,QACN,OAAO,SAAS,gBAAgB;AAAA,QAChC,QAAQ,EAAE,QAAQ;AAAA,MACpB;AACA,aAAO,OAAO,YAAY,GAAG,GAAG;AAAA,IAClC;AACA,QAAI,eAAe,CAAC,EAAE,QAAQ,SAAS,IAAI;AAAA,EAC7C,CAAC;AACH;;;AC7JA,IAAqB,UAArB,MAA6B;AAAA,EAQzB,YAAY,QAAqB,MAAc,OAA0C,CAAC,GAAG,OAAgB,OAAO,aAAsB,OAAO;AAC7I,SAAK,SAAS;AACd,SAAK,OAAO;AACZ,SAAK,aAAa;AAClB,SAAK,OAAO;AACZ,SAAK,OAAO;AAAA,EAChB;AAAA,EAEA,QAAQ,MAAe;AACnB,SAAK,OAAO;AACZ,WAAO;AAAA,EACX;AAAA,EAEA,cAAc,YAAqB;AAC/B,SAAK,aAAa;AAClB,WAAO;AAAA,EACX;AAAA,EAEM,MAAM,SAAsB;AAAA;AAC9B,YAAM,cAAc,IAAI,gBAAgB;AACxC,kBAAY,IAAI,YAAY,KAAK,OAAO,QAAQ;AAChD,kBAAY,IAAI,gBAAgB,KAAK,OAAO,YAAY;AACxD,UAAI,KAAK,KAAM,aAAY,IAAI,QAAQ,MAAM;AAC7C,UAAI,KAAK,WAAY,aAAY,IAAI,cAAc,MAAM;AACzD,iBAAW,OAAO,KAAK,MAAM;AACzB,cAAM,QAAQ,KAAK,KAAK,GAAG;AAC3B,YAAI,MAAM,QAAQ,KAAK,GAAG;AACtB,sBAAY,IAAI,KAAK,MAAM,KAAK,GAAG,CAAC;AAAA,QACxC,OAAO;AACH,sBAAY,IAAI,KAAK,KAAK;AAAA,QAC9B;AAAA,MACJ;AACA,YAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,aAAO,MAAM,8BAA8B,KAAK,IAAI,IAAI,YAAY,SAAS,CAAC;AAC9E,aAAO,MAAM,QAAQ;AACrB,YAAM,WAAW,QAAQ,YAAY,MAAM;AAC3C,QAAW,CAAC,GAAG,QAAQ;AACvB,aAAO;AAAA,IACX;AAAA;AAEJ;;;AC5CA,IAAqB,QAArB,MAA2B;AAAA,EAIvB,YAAY,QAAqB;AAC7B,SAAK,SAAS;AAAA,EAClB;AAAA,EAEM,IAAI,UAAmB,KAAc;AAAA;AACvC,aAAQ,MAAM,KAAK,OAAO,KAAK,aAAa,eAAe;AAAA,QACvD;AAAA,QACA;AAAA,MACJ,CAAC;AAAA,IACL;AAAA;AAAA,EAEA,SAAS,QAAqB,WAAwB,QAAgB;AAClE,WAAO,IAAI;AAAA,MACP,KAAK;AAAA,MACL;AAAA,MACA;AAAA,QACI,QAAQ,OAAO,IAAI,WAAS,MAAM,EAAE,EAAE,KAAK,GAAG;AAAA,QAC9C,WAAW,UAAU,IAAI,cAAY,SAAS,EAAE,EAAE,KAAK,GAAG;AAAA,QAC1D,QAAQ,OAAO;AAAA,MACnB;AAAA,IACJ;AAAA,EACJ;AAEJ;;;AHhCA,IAAqB,eAArB,MAAqB,aAAY;AAAA,EAQrB,YAAY,UAAkB,cAAsB,MAAe;AACvE,SAAK,WAAW;AAChB,SAAK,eAAe;AACpB,SAAK,OAAO;AAAA,EAChB;AAAA,EAEA,OAAO,IAAI,UAAkB,cAAsB,OAAgB,OAAO;AACtE,QAAI,CAAC,aAAY,YAAY,aAAY,SAAS,aAAa,YAAY,aAAY,SAAS,iBAAiB,gBAAgB,aAAY,SAAS,SAAS,MAAM;AACjK,mBAAY,WAAW,IAAI,aAAY,UAAU,cAAc,IAAI;AAAA,IACvE;AACA,WAAO,aAAY;AAAA,EACvB;AAAA,EAEA,IAAI,QAAQ;AACR,WAAO,IAAI,MAAM,IAAI;AAAA,EACzB;AAAA,EAEc,MAAM,OAAe,KAAa,MAAY;AAAA;AACxD,YAAM,SAAS,KAAK,OAAO,+BAA+B;AAC1D,YAAM,UAAU,IAAI,QAAQ;AAAA,QACxB,eAAe,UAAU,KAAK,YAAY;AAAA,MAC9C,CAAC;AACD,UAAI,MAAM;AACN,gBAAQ,IAAI,gBAAgB,kBAAkB;AAAA,MAClD;AACA,YAAM,WAAW,MAAM,MAAM,GAAG,MAAM,IAAI,KAAK,IAAI,KAAK,QAAQ,GAAG,GAAG,IAAI;AAAA,QACtE;AAAA,QACA,QAAQ,OAAO,SAAS;AAAA,QACxB,MAAM,OAAO,KAAK,UAAU,IAAI,IAAI;AAAA,MACxC,CAAC;AACD,aAAO,SAAS,KAAK;AAAA,IACzB;AAAA;AAAA,EAEM,IAAI,OAAe,KAAa;AAAA;AAClC,aAAO,KAAK,MAAM,OAAO,GAAG;AAAA,IAChC;AAAA;AAAA,EAEM,KAAK,IAAe,IAA6B;AAAA,+CAA5C,OAAe,KAAa,OAAY,CAAC,GAAG;AACnD,aAAO,KAAK,MAAM,OAAO,KAAK,IAAI;AAAA,IACtC;AAAA;AAEJ;AAjDqB,aAMF,WAA+B;AANlD,IAAqB,cAArB;","names":["e"]}
@@ -0,0 +1,99 @@
1
+ declare class Element {
2
+ private readonly client;
3
+ private dark;
4
+ private background;
5
+ private readonly path;
6
+ private readonly args;
7
+ constructor(client: Serverbench, path: string, args?: Record<string, string | string[]>, dark?: boolean, background?: boolean);
8
+ setDark(dark: boolean): this;
9
+ setBackground(background: boolean): this;
10
+ mount(element: HTMLElement): Promise<this>;
11
+ }
12
+
13
+ interface Member {
14
+ name: string;
15
+ eid: string;
16
+ id: string;
17
+ }
18
+
19
+ interface ICountryCurrency {
20
+ currency: string;
21
+ digits: number;
22
+ country: string | null;
23
+ }
24
+
25
+ interface ISkuPrice {
26
+ id: string;
27
+ amount: number;
28
+ currency: ICountryCurrency;
29
+ frequency: string | null;
30
+ }
31
+
32
+ interface IDiscount {
33
+ id: string;
34
+ amount: number | null;
35
+ percentage: number | null;
36
+ absolute: number;
37
+ end: Date | null;
38
+ price: ISkuPrice;
39
+ }
40
+
41
+ interface ISkuPerkUsage {
42
+ id: string;
43
+ name: string;
44
+ amount: number | null;
45
+ }
46
+
47
+ interface ISku {
48
+ id: string;
49
+ index: number;
50
+ name: string;
51
+ type: string;
52
+ perks: ISkuPerkUsage[];
53
+ prices: ISkuPrice[];
54
+ available: boolean;
55
+ discounts: IDiscount[];
56
+ }
57
+
58
+ interface IStoreCategorySet {
59
+ id: string;
60
+ name: string;
61
+ }
62
+
63
+ interface IStoreCategory {
64
+ id: string;
65
+ name: string;
66
+ skus: ISku[];
67
+ sets: IStoreCategorySet[];
68
+ policy: string | null;
69
+ }
70
+
71
+ interface IStore {
72
+ categories: IStoreCategory[];
73
+ sets: IStoreCategorySet[];
74
+ currency: ICountryCurrency;
75
+ country: string | null;
76
+ member: Member | null;
77
+ }
78
+
79
+ declare class Store {
80
+ private client;
81
+ constructor(client: Serverbench);
82
+ get(username?: string, eid?: string): Promise<IStore>;
83
+ checkout(prices: ISkuPrice[], discounts: IDiscount[], member: Member): Element;
84
+ }
85
+
86
+ declare class Serverbench {
87
+ clientId: string;
88
+ clientSecret: string;
89
+ test: boolean;
90
+ private static instance;
91
+ private constructor();
92
+ static get(clientId: string, clientSecret: string, test?: boolean): Serverbench;
93
+ get store(): Store;
94
+ private fetch;
95
+ get(realm: string, url: string): Promise<any>;
96
+ post(realm: string, url: string, body?: any): Promise<any>;
97
+ }
98
+
99
+ export { Serverbench as default };
@@ -0,0 +1,99 @@
1
+ declare class Element {
2
+ private readonly client;
3
+ private dark;
4
+ private background;
5
+ private readonly path;
6
+ private readonly args;
7
+ constructor(client: Serverbench, path: string, args?: Record<string, string | string[]>, dark?: boolean, background?: boolean);
8
+ setDark(dark: boolean): this;
9
+ setBackground(background: boolean): this;
10
+ mount(element: HTMLElement): Promise<this>;
11
+ }
12
+
13
+ interface Member {
14
+ name: string;
15
+ eid: string;
16
+ id: string;
17
+ }
18
+
19
+ interface ICountryCurrency {
20
+ currency: string;
21
+ digits: number;
22
+ country: string | null;
23
+ }
24
+
25
+ interface ISkuPrice {
26
+ id: string;
27
+ amount: number;
28
+ currency: ICountryCurrency;
29
+ frequency: string | null;
30
+ }
31
+
32
+ interface IDiscount {
33
+ id: string;
34
+ amount: number | null;
35
+ percentage: number | null;
36
+ absolute: number;
37
+ end: Date | null;
38
+ price: ISkuPrice;
39
+ }
40
+
41
+ interface ISkuPerkUsage {
42
+ id: string;
43
+ name: string;
44
+ amount: number | null;
45
+ }
46
+
47
+ interface ISku {
48
+ id: string;
49
+ index: number;
50
+ name: string;
51
+ type: string;
52
+ perks: ISkuPerkUsage[];
53
+ prices: ISkuPrice[];
54
+ available: boolean;
55
+ discounts: IDiscount[];
56
+ }
57
+
58
+ interface IStoreCategorySet {
59
+ id: string;
60
+ name: string;
61
+ }
62
+
63
+ interface IStoreCategory {
64
+ id: string;
65
+ name: string;
66
+ skus: ISku[];
67
+ sets: IStoreCategorySet[];
68
+ policy: string | null;
69
+ }
70
+
71
+ interface IStore {
72
+ categories: IStoreCategory[];
73
+ sets: IStoreCategorySet[];
74
+ currency: ICountryCurrency;
75
+ country: string | null;
76
+ member: Member | null;
77
+ }
78
+
79
+ declare class Store {
80
+ private client;
81
+ constructor(client: Serverbench);
82
+ get(username?: string, eid?: string): Promise<IStore>;
83
+ checkout(prices: ISkuPrice[], discounts: IDiscount[], member: Member): Element;
84
+ }
85
+
86
+ declare class Serverbench {
87
+ clientId: string;
88
+ clientSecret: string;
89
+ test: boolean;
90
+ private static instance;
91
+ private constructor();
92
+ static get(clientId: string, clientSecret: string, test?: boolean): Serverbench;
93
+ get store(): Store;
94
+ private fetch;
95
+ get(realm: string, url: string): Promise<any>;
96
+ post(realm: string, url: string, body?: any): Promise<any>;
97
+ }
98
+
99
+ export { Serverbench as default };