@lukaskj/xmonkey 2.2.8 → 2.2.10

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.
Files changed (54) hide show
  1. package/dist/esm/examples/whatsapp-theme/index.d.ts +7 -0
  2. package/dist/esm/examples/whatsapp-theme/index.js +58 -0
  3. package/dist/esm/examples/youtube-adblocker.d.ts +4 -0
  4. package/dist/esm/examples/youtube-adblocker.js +52 -0
  5. package/dist/esm/{build.js → src/build.js} +1 -1
  6. package/dist/esm/src/console-script/console-script.decorator.js +10 -0
  7. package/dist/esm/src/console-script/console-script.interface.js +4 -0
  8. package/dist/esm/{console-script → src/console-script}/index.js +1 -1
  9. package/dist/esm/src/esbuild/build.js +29 -0
  10. package/dist/esm/src/esbuild/plugins/xmonkey-output-stats-plugin.js +18 -0
  11. package/dist/esm/src/esbuild/plugins/xmonkey-strip-metadata-plugin.js +77 -0
  12. package/dist/esm/src/esbuild/plugins/xmonkey-styles-plugin.js +36 -0
  13. package/dist/esm/src/hooks/index.js +30 -0
  14. package/dist/esm/{index.js → src/index.js} +1 -1
  15. package/dist/esm/{types.js → src/types.js} +1 -1
  16. package/dist/esm/{ui-script → src/ui-script}/index.js +1 -1
  17. package/dist/esm/src/ui-script/ui-script.decorator.js +25 -0
  18. package/dist/esm/{ui-script → src/ui-script}/ui-script.interface.js +1 -1
  19. package/dist/esm/src/utils/get-storage-key-id-from-string.js +4 -0
  20. package/dist/esm/src/utils/is-null-or-undefined.js +5 -0
  21. package/dist/esm/src/utils/sleep.js +4 -0
  22. package/dist/esm/src/x-monkey-window-component.js +17 -0
  23. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  24. package/package.json +1 -1
  25. package/dist/esm/console-script/console-script.decorator.js +0 -10
  26. package/dist/esm/console-script/console-script.interface.js +0 -4
  27. package/dist/esm/esbuild/build.js +0 -29
  28. package/dist/esm/esbuild/plugins/xmonkey-output-stats-plugin.js +0 -18
  29. package/dist/esm/esbuild/plugins/xmonkey-strip-metadata-plugin.js +0 -77
  30. package/dist/esm/esbuild/plugins/xmonkey-styles-plugin.js +0 -36
  31. package/dist/esm/hooks/index.js +0 -30
  32. package/dist/esm/ui-script/ui-script.decorator.js +0 -20
  33. package/dist/esm/utils/get-storage-key-id-from-string.js +0 -4
  34. package/dist/esm/utils/is-null-or-undefined.js +0 -5
  35. package/dist/esm/utils/sleep.js +0 -4
  36. package/dist/esm/x-monkey-window-component.js +0 -17
  37. /package/dist/esm/{build.d.ts → src/build.d.ts} +0 -0
  38. /package/dist/esm/{console-script → src/console-script}/console-script.decorator.d.ts +0 -0
  39. /package/dist/esm/{console-script → src/console-script}/console-script.interface.d.ts +0 -0
  40. /package/dist/esm/{console-script → src/console-script}/index.d.ts +0 -0
  41. /package/dist/esm/{esbuild → src/esbuild}/build.d.ts +0 -0
  42. /package/dist/esm/{esbuild → src/esbuild}/plugins/xmonkey-output-stats-plugin.d.ts +0 -0
  43. /package/dist/esm/{esbuild → src/esbuild}/plugins/xmonkey-strip-metadata-plugin.d.ts +0 -0
  44. /package/dist/esm/{esbuild → src/esbuild}/plugins/xmonkey-styles-plugin.d.ts +0 -0
  45. /package/dist/esm/{hooks → src/hooks}/index.d.ts +0 -0
  46. /package/dist/esm/{index.d.ts → src/index.d.ts} +0 -0
  47. /package/dist/esm/{types.d.ts → src/types.d.ts} +0 -0
  48. /package/dist/esm/{ui-script → src/ui-script}/index.d.ts +0 -0
  49. /package/dist/esm/{ui-script → src/ui-script}/ui-script.decorator.d.ts +0 -0
  50. /package/dist/esm/{ui-script → src/ui-script}/ui-script.interface.d.ts +0 -0
  51. /package/dist/esm/{utils → src/utils}/get-storage-key-id-from-string.d.ts +0 -0
  52. /package/dist/esm/{utils → src/utils}/is-null-or-undefined.d.ts +0 -0
  53. /package/dist/esm/{utils → src/utils}/sleep.d.ts +0 -0
  54. /package/dist/esm/{x-monkey-window-component.d.ts → src/x-monkey-window-component.d.ts} +0 -0
@@ -0,0 +1,7 @@
1
+ import "@lukaskj/xmonkey/styles";
2
+ import "./styles.scss";
3
+ import { type IUiScript } from "../../src/ui-script";
4
+ export default class WhatsAppExample implements IUiScript {
5
+ title: string;
6
+ render(): Promise<import("preact").JSX.Element>;
7
+ }
@@ -0,0 +1,58 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { jsx as _jsx, jsxs as _jsxs } from "preact/jsx-runtime";
8
+ import "@lukaskj/xmonkey/styles";
9
+ import "./styles.scss";
10
+ import { useState } from "preact/hooks";
11
+ import { UiScript } from "../../src/ui-script";
12
+ let WhatsAppExample = class WhatsAppExample {
13
+ title = "Example";
14
+ async render() {
15
+ return (_jsx("div", { id: "wp-theme-container", children: _jsx(WhatsAppExampleComponent, {}) }));
16
+ }
17
+ };
18
+ WhatsAppExample = __decorate([
19
+ UiScript({
20
+ "@name": "WhatsApp Example",
21
+ "@namespace": "example",
22
+ "@match": "https://web.whatsapp.com/",
23
+ "@version": "1.0",
24
+ "@author": "-",
25
+ "@description": "-",
26
+ "@grant": ["GM.addStyle"],
27
+ })
28
+ ], WhatsAppExample);
29
+ export default WhatsAppExample;
30
+ function WhatsAppExampleComponent() {
31
+ const [headerColor, setHeaderColor] = useState("#202c33");
32
+ const [bgColor, setBgColor] = useState("#111b21");
33
+ const [hideSearchbar, setHideSearchbar] = useState(false);
34
+ function applyHeaderColor(color) {
35
+ setHeaderColor(color);
36
+ const header = document.querySelector("header");
37
+ if (header) {
38
+ header.style.backgroundColor = color;
39
+ }
40
+ }
41
+ function applyBgColor(color) {
42
+ setBgColor(color);
43
+ const header = document.querySelectorAll("._ak72");
44
+ for (const h of header) {
45
+ h.style.backgroundColor = color;
46
+ }
47
+ }
48
+ function hideSearchBarAction() {
49
+ setHideSearchbar(!hideSearchbar);
50
+ const searchBar = document.querySelector("._ai03");
51
+ if (!searchBar)
52
+ return;
53
+ searchBar.style.height = !hideSearchbar ? "0" : "";
54
+ searchBar.style.overflow = !hideSearchbar ? "hidden" : "inherit";
55
+ }
56
+ return (_jsxs("div", { className: "d-f", children: [_jsxs("div", { className: "d-f fd-r ai-c jc-sb", children: [_jsx("span", { children: "Header color:" }), _jsx("input", { type: "color", value: headerColor, onInput: (e) => applyHeaderColor(e.currentTarget.value) })] }), _jsxs("div", { className: "d-f fd-r ai-c jc-sb", children: [_jsx("span", { children: "BG color:" }), _jsx("input", { type: "color", value: bgColor, onInput: (e) => applyBgColor(e.currentTarget.value) })] }), _jsxs("div", { className: "d-f fd-r ai-c jc-sb", children: [_jsx("span", { children: "Hide searchbar:" }), _jsx("input", { type: "checkbox", onChange: hideSearchBarAction })] })] }));
57
+ }
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9leGFtcGxlcy93aGF0c2FwcC10aGVtZS9pbmRleC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE9BQU8seUJBQXlCLENBQUM7QUFDakMsT0FBTyxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQWtCLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBV2hELElBQU0sZUFBZSxHQUFyQixNQUFNLGVBQWU7SUFDbEMsS0FBSyxHQUFXLFNBQVMsQ0FBQztJQUUxQixLQUFLLENBQUMsTUFBTTtRQUNWLE9BQU8sQ0FDTCxjQUFLLEVBQUUsRUFBQyxvQkFBb0IsWUFDMUIsS0FBQyx3QkFBd0IsS0FBRyxHQUN4QixDQUNQLENBQUM7SUFDSixDQUFDO0NBQ0YsQ0FBQTtBQVZvQixlQUFlO0lBVG5DLFFBQVEsQ0FBQztRQUNSLE9BQU8sRUFBRSxrQkFBa0I7UUFDM0IsWUFBWSxFQUFFLFNBQVM7UUFDdkIsUUFBUSxFQUFFLDJCQUEyQjtRQUNyQyxVQUFVLEVBQUUsS0FBSztRQUNqQixTQUFTLEVBQUUsR0FBRztRQUNkLGNBQWMsRUFBRSxHQUFHO1FBQ25CLFFBQVEsRUFBRSxDQUFDLGFBQWEsQ0FBQztLQUMxQixDQUFDO0dBQ21CLGVBQWUsQ0FVbkM7ZUFWb0IsZUFBZTtBQVlwQyxTQUFTLHdCQUF3QjtJQUMvQixNQUFNLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxRCxNQUFNLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsRCxNQUFNLENBQUMsYUFBYSxFQUFFLGdCQUFnQixDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRzFELFNBQVMsZ0JBQWdCLENBQUMsS0FBYTtRQUNyQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0lBRUQsU0FBUyxZQUFZLENBQUMsS0FBYTtRQUNqQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFjLFFBQVEsQ0FBQyxDQUFDO1FBQ2hFLEtBQUssTUFBTSxDQUFDLElBQUksTUFBTSxFQUFFLENBQUM7WUFDdkIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDO0lBRUQsU0FBUyxtQkFBbUI7UUFDMUIsZ0JBQWdCLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVqQyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFjLFFBQVEsQ0FBQyxDQUFDO1FBRWhFLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUV2QixTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDbkQsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ25FLENBQUM7SUFFRCxPQUFPLENBQ0wsZUFBSyxTQUFTLEVBQUMsS0FBSyxhQUNsQixlQUFLLFNBQVMsRUFBQyxxQkFBcUIsYUFDbEMsMkNBQTBCLEVBQzFCLGdCQUFPLElBQUksRUFBQyxPQUFPLEVBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUksSUFDL0YsRUFDTixlQUFLLFNBQVMsRUFBQyxxQkFBcUIsYUFDbEMsdUNBQXNCLEVBQ3RCLGdCQUFPLElBQUksRUFBQyxPQUFPLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFJLElBQ3ZGLEVBQ04sZUFBSyxTQUFTLEVBQUMscUJBQXFCLGFBQ2xDLDZDQUE0QixFQUM1QixnQkFBTyxJQUFJLEVBQUMsVUFBVSxFQUFDLFFBQVEsRUFBRSxtQkFBbUIsR0FBSSxJQUNwRCxJQUNGLENBQ1AsQ0FBQztBQUNKLENBQUMifQ==
@@ -0,0 +1,4 @@
1
+ import { type IConsoleScript } from "../src/console-script";
2
+ export default class implements IConsoleScript {
3
+ execute(): Promise<void>;
4
+ }
@@ -0,0 +1,52 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { ConsoleScript } from "../src/console-script";
8
+ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
9
+ let default_1 = class {
10
+ async execute() {
11
+ while (true) {
12
+ await Promise.all([___removeBannerAds(), ___removeTileAds()]);
13
+ await sleep(25);
14
+ }
15
+ }
16
+ };
17
+ default_1 = __decorate([
18
+ ConsoleScript({
19
+ "@name": "Youtube Adblocker",
20
+ "@namespace": "scripts",
21
+ "@version": "1.0",
22
+ "@description": "Youtube Custom Adblocker",
23
+ "@author": "Lukas",
24
+ "@match": "https://www.youtube.com/*",
25
+ })
26
+ ], default_1);
27
+ export default default_1;
28
+ function hideElement(el) {
29
+ el.style.overflow = "hidden";
30
+ el.style.height = "0px";
31
+ el.style.width = "0px";
32
+ el.style.maxHeight = "0px";
33
+ }
34
+ async function ___removeBannerAds() {
35
+ const banners = document.querySelectorAll("#masthead-ad");
36
+ for (const banner of banners) {
37
+ if (banner.style.height === "0px")
38
+ continue;
39
+ hideElement(banner);
40
+ }
41
+ }
42
+ async function ___removeTileAds() {
43
+ const tiles = document.querySelectorAll("ytd-ad-slot-renderer");
44
+ for (const tile of tiles) {
45
+ const parent = tile.closest("ytd-rich-item-renderer");
46
+ if (parent) {
47
+ hideElement(parent);
48
+ }
49
+ hideElement(tile);
50
+ }
51
+ }
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieW91dHViZS1hZGJsb2NrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9leGFtcGxlcy95b3V0dWJlLWFkYmxvY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsYUFBYSxFQUF1QixNQUFNLHVCQUF1QixDQUFDO0FBRTNFLE1BQU0sS0FBSyxHQUFHLENBQUMsRUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBVWpFLGdCQUFBO0lBQ2QsS0FBSyxDQUFDLE9BQU87UUFDWixPQUFPLElBQUksRUFBRSxDQUFDO1lBQ2IsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5RCxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQixDQUFDO0lBQ0YsQ0FBQztDQUNELENBQUE7QUFQYztJQVJkLGFBQWEsQ0FBQztRQUNkLE9BQU8sRUFBRSxtQkFBbUI7UUFDNUIsWUFBWSxFQUFFLFNBQVM7UUFDdkIsVUFBVSxFQUFFLEtBQUs7UUFDakIsY0FBYyxFQUFFLDBCQUEwQjtRQUMxQyxTQUFTLEVBQUUsT0FBTztRQUNsQixRQUFRLEVBQUUsMkJBQTJCO0tBQ3JDLENBQUM7YUFRRDs7QUFFRCxTQUFTLFdBQVcsQ0FBQyxFQUFlO0lBQ25DLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM3QixFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztBQUM1QixDQUFDO0FBRUQsS0FBSyxVQUFVLGtCQUFrQjtJQUNoQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQWMsY0FBYyxDQUFDLENBQUM7SUFDdkUsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM5QixJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLEtBQUs7WUFBRSxTQUFTO1FBRTVDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyQixDQUFDO0FBQ0YsQ0FBQztBQUVELEtBQUssVUFBVSxnQkFBZ0I7SUFDOUIsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFjLHNCQUFzQixDQUFDLENBQUM7SUFDN0UsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUMxQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFjLHdCQUF3QixDQUFDLENBQUM7UUFDbkUsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNaLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQixDQUFDO1FBQ0QsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25CLENBQUM7QUFDRixDQUFDIn0=
@@ -7,4 +7,4 @@ if (!entryFile) {
7
7
  process.exit(1);
8
8
  }
9
9
  buildXmonkeyScript(entryFile);
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXhELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFbEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyx5RUFBeUUsQ0FBQyxDQUFDO0lBQ3pGLE9BQU8sQ0FBQyxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztJQUM1RCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUM7QUFFRCxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyJ9
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXhELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFbEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyx5RUFBeUUsQ0FBQyxDQUFDO0lBQ3pGLE9BQU8sQ0FBQyxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztJQUM1RCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUM7QUFFRCxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyJ9
@@ -0,0 +1,10 @@
1
+ export function ConsoleScript(_metadata) {
2
+ return function (target) {
3
+ if (!target) {
4
+ throw new Error("Script not defined.");
5
+ }
6
+ const scriptObject = new target();
7
+ scriptObject.execute();
8
+ };
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc29sZS1zY3JpcHQuZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbnNvbGUtc2NyaXB0L2NvbnNvbGUtc2NyaXB0LmRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLFVBQVUsYUFBYSxDQUEyQixTQUFxQjtJQUMzRSxPQUFPLFVBQVUsTUFBMkI7UUFDMUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBRWxDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN6QixDQUFDLENBQUM7QUFDSixDQUFDIn0=
@@ -0,0 +1,4 @@
1
+ class CScript {
2
+ }
3
+ export {};
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc29sZS1zY3JpcHQuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbnNvbGUtc2NyaXB0L2NvbnNvbGUtc2NyaXB0LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU87Q0FBRyJ9
@@ -1,3 +1,3 @@
1
1
  export * from "./console-script.decorator.js";
2
2
  export * from "./console-script.interface.js";
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uc29sZS1zY3JpcHQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLCtCQUErQixDQUFDIn0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29uc29sZS1zY3JpcHQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLCtCQUErQixDQUFDIn0=
@@ -0,0 +1,29 @@
1
+ import * as esbuild from "esbuild";
2
+ import { sassPlugin } from "esbuild-sass-plugin";
3
+ import { xMonkeyStripMetadataPlugin } from "./plugins/xmonkey-strip-metadata-plugin.js";
4
+ import { xMonkeyStylesPlugin } from "./plugins/xmonkey-styles-plugin.js";
5
+ import { xMonkeyOutputStatsPlugin } from "./plugins/xmonkey-output-stats-plugin.js";
6
+ export async function buildXmonkeyScript(scriptBasePath) {
7
+ const entryFile = scriptBasePath;
8
+ console.info(`Building file: '${entryFile}'`);
9
+ await esbuild.build({
10
+ entryPoints: [entryFile],
11
+ outfile: "dist/index.js",
12
+ bundle: true,
13
+ treeShaking: true,
14
+ minify: process.env.DEBUG ? false : true,
15
+ platform: "browser",
16
+ format: "iife",
17
+ sourcemap: process.env.DEBUG ? "inline" : false,
18
+ keepNames: true,
19
+ logLevel: "info",
20
+ metafile: true,
21
+ plugins: [
22
+ xMonkeyStripMetadataPlugin(),
23
+ sassPlugin({ style: "compressed" }),
24
+ xMonkeyStylesPlugin(),
25
+ xMonkeyOutputStatsPlugin(),
26
+ ],
27
+ });
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZXNidWlsZC9idWlsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUNuQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDeEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFcEYsTUFBTSxDQUFDLEtBQUssVUFBVSxrQkFBa0IsQ0FBQyxjQUFzQjtJQUM3RCxNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUM7SUFDakMsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUU5QyxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDbEIsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDO1FBQ3hCLE9BQU8sRUFBRSxlQUFlO1FBQ3hCLE1BQU0sRUFBRSxJQUFJO1FBQ1osV0FBVyxFQUFFLElBQUk7UUFDakIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7UUFDeEMsUUFBUSxFQUFFLFNBQVM7UUFDbkIsTUFBTSxFQUFFLE1BQU07UUFDZCxTQUFTLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSztRQUMvQyxTQUFTLEVBQUUsSUFBSTtRQUNmLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLFFBQVEsRUFBRSxJQUFJO1FBQ2QsT0FBTyxFQUFFO1lBQ1AsMEJBQTBCLEVBQUU7WUFDNUIsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxDQUFDO1lBQ25DLG1CQUFtQixFQUFFO1lBQ3JCLHdCQUF3QixFQUFFO1NBQzNCO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyJ9
@@ -0,0 +1,18 @@
1
+ export function xMonkeyOutputStatsPlugin() {
2
+ return {
3
+ name: "xmonkey-output-stats-plugin",
4
+ setup(build) {
5
+ build.onEnd(async (result) => {
6
+ const outputs = result.metafile?.outputs;
7
+ const outputTotal = Object.keys(outputs).reduce((prev, cur) => prev + outputs[cur].bytes, 0);
8
+ const bundleTotal = humanFileSize(outputTotal);
9
+ console.log("[*] Bundle total:", bundleTotal);
10
+ });
11
+ },
12
+ };
13
+ }
14
+ function humanFileSize(size) {
15
+ const i = size == 0 ? 0 : Math.floor(Math.log(size) / Math.log(1024));
16
+ return (size / Math.pow(1024, i)).toFixed(1) + "" + ["b", "kB", "MB", "GB", "TB"][i];
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieG1vbmtleS1vdXRwdXQtc3RhdHMtcGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VzYnVpbGQvcGx1Z2lucy94bW9ua2V5LW91dHB1dC1zdGF0cy1wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLHdCQUF3QjtJQUN0QyxPQUFPO1FBQ0wsSUFBSSxFQUFFLDZCQUE2QjtRQUNuQyxLQUFLLENBQUMsS0FBSztZQUNULEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUUzQixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLE9BQWMsQ0FBQztnQkFDaEQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDN0YsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUMvQyxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ2hELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsSUFBWTtJQUNqQyxNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdEUsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkYsQ0FBQyJ9
@@ -0,0 +1,77 @@
1
+ import { readFile, writeFile } from "fs/promises";
2
+ import JSON5 from "json5";
3
+ export function xMonkeyStripMetadataPlugin() {
4
+ return {
5
+ name: "xmonkey-strip-metadata-plugin",
6
+ setup(build) {
7
+ let foundMetadata = false;
8
+ let metadataContent = "";
9
+ build.onLoad({ filter: /.(ts|tsx)/, namespace: "file" }, async (args) => {
10
+ if (foundMetadata)
11
+ return;
12
+ const source = await readFile(args.path, "utf8");
13
+ const scriptMetadataIndex = source.match(/@(ConsoleScript|UiScript)\(/)?.index;
14
+ if (!scriptMetadataIndex || scriptMetadataIndex < 0)
15
+ return;
16
+ foundMetadata = true;
17
+ const regex = /\@(ConsoleScript|UiScript)\([^\)]*\)(\.[^\)]*\))?/gi;
18
+ const metadataDecoratorMatcher = source.match(regex);
19
+ if (metadataDecoratorMatcher) {
20
+ metadataContent = metadataDecoratorMatcher.at(0);
21
+ const startJsonMetadataIndex = metadataContent.indexOf("{");
22
+ const endJsonMetadataIndex = metadataContent.lastIndexOf("}");
23
+ const metadataJsonString = metadataContent.substring(startJsonMetadataIndex, endJsonMetadataIndex + 1);
24
+ const contents = source.replace(metadataJsonString, "");
25
+ const extension = args.path.split(".").pop();
26
+ const loader = extension === "tsx" ? "tsx" : "ts";
27
+ return { contents, loader };
28
+ }
29
+ return;
30
+ });
31
+ build.onEnd(async (result) => {
32
+ if (!build.initialOptions?.outfile || !build.initialOptions?.bundle) {
33
+ console.error("Wrong build configuration. Options 'bundle' must be enabled and 'outfile' must be set.");
34
+ return;
35
+ }
36
+ if (!foundMetadata) {
37
+ console.error("ScriptMetadata decorator not found.");
38
+ return;
39
+ }
40
+ if (result.errors.length) {
41
+ console.error("Error building. Script Metadata cannot be added to final script.");
42
+ return;
43
+ }
44
+ const fileContents = await readFile(build.initialOptions.outfile);
45
+ const scriptMetadataString = getScriptMetadataString(metadataContent);
46
+ await writeFile(build.initialOptions.outfile, `${scriptMetadataString}\n\n${fileContents.toString()}`);
47
+ });
48
+ },
49
+ };
50
+ }
51
+ function getScriptMetadataString(scriptMetadataFunctionCallString) {
52
+ scriptMetadataFunctionCallString = scriptMetadataFunctionCallString.trim();
53
+ const startJsonMetadataIndex = scriptMetadataFunctionCallString.indexOf("{");
54
+ const endJsonMetadataIndex = scriptMetadataFunctionCallString.lastIndexOf("}");
55
+ if (startJsonMetadataIndex < 0 || endJsonMetadataIndex < 0) {
56
+ return "";
57
+ }
58
+ const jsonMetadataString = scriptMetadataFunctionCallString.substring(startJsonMetadataIndex, endJsonMetadataIndex + 1);
59
+ const metadataObject = JSON5.parse(jsonMetadataString);
60
+ const tag = "// ==UserScript==";
61
+ const tagEnd = "// ==/UserScript==";
62
+ const headersArr = [];
63
+ const spaces = 13;
64
+ for (const key in metadataObject) {
65
+ if (Array.isArray(metadataObject[key])) {
66
+ metadataObject[key].forEach((item) => {
67
+ headersArr.push(`${key.padEnd(spaces, " ")}${item}`);
68
+ });
69
+ }
70
+ else {
71
+ headersArr.push(`${key.padEnd(spaces, " ")}${metadataObject[key]}`);
72
+ }
73
+ }
74
+ const headers = headersArr.map((h) => `// ${h}`).join("\n");
75
+ return `${tag}\n${headers}\n${tagEnd}`;
76
+ }
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieG1vbmtleS1zdHJpcC1tZXRhZGF0YS1wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZXNidWlsZC9wbHVnaW5zL3htb25rZXktc3RyaXAtbWV0YWRhdGEtcGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixNQUFNLFVBQVUsMEJBQTBCO0lBQ3hDLE9BQU87UUFDTCxJQUFJLEVBQUUsK0JBQStCO1FBQ3JDLEtBQUssQ0FBQyxLQUFLO1lBQ1QsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQzFCLElBQUksZUFBZSxHQUFHLEVBQUUsQ0FBQztZQUV6QixLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO2dCQUN0RSxJQUFJLGFBQWE7b0JBQUUsT0FBTztnQkFDMUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDakQsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLDZCQUE2QixDQUFDLEVBQUUsS0FBSyxDQUFDO2dCQUUvRSxJQUFJLENBQUMsbUJBQW1CLElBQUksbUJBQW1CLEdBQUcsQ0FBQztvQkFBRSxPQUFPO2dCQUM1RCxhQUFhLEdBQUcsSUFBSSxDQUFDO2dCQUVyQixNQUFNLEtBQUssR0FBRyxxREFBcUQsQ0FBQztnQkFDcEUsTUFBTSx3QkFBd0IsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNyRCxJQUFJLHdCQUF3QixFQUFFLENBQUM7b0JBQzdCLGVBQWUsR0FBRyx3QkFBd0IsQ0FB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
@@ -0,0 +1,36 @@
1
+ import { appendFile, readFile } from "fs/promises";
2
+ export function xMonkeyStylesPlugin() {
3
+ return {
4
+ name: "xmonkey-styles-plugin",
5
+ setup(build) {
6
+ build.onEnd(async (result) => {
7
+ if (!build.initialOptions?.outfile || !build.initialOptions?.bundle) {
8
+ console.error("Wrong build configuration. Options 'bundle' must be enabled and 'outfile' must be set.");
9
+ return;
10
+ }
11
+ if (!result.metafile) {
12
+ console.warn("ESBuild metafile not enabled. Style bundle skipped.");
13
+ return;
14
+ }
15
+ const outputs = result.metafile.outputs;
16
+ let cssFilePath = "";
17
+ for (const file in outputs) {
18
+ const ext = file.split(".").pop();
19
+ if (ext === "css") {
20
+ cssFilePath = file;
21
+ break;
22
+ }
23
+ }
24
+ if (!cssFilePath.length) {
25
+ console.warn("[-] StyleSheet output skipped.");
26
+ return;
27
+ }
28
+ const jsOutFile = build.initialOptions.outfile;
29
+ const cssContents = (await readFile(cssFilePath)).toString();
30
+ const cssContentsWithtoutNewlines = cssContents.replace(/\n/g, "").replace(/\r/g, "");
31
+ appendFile(jsOutFile, `\nGM.addStyle("\\\n${cssContentsWithtoutNewlines.trim()}\\\n");`);
32
+ });
33
+ },
34
+ };
35
+ }
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieG1vbmtleS1zdHlsZXMtcGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VzYnVpbGQvcGx1Z2lucy94bW9ua2V5LXN0eWxlcy1wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbkQsTUFBTSxVQUFVLG1CQUFtQjtJQUNqQyxPQUFPO1FBQ0wsSUFBSSxFQUFFLHVCQUF1QjtRQUM3QixLQUFLLENBQUMsS0FBSztZQUNULEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDO29CQUNwRSxPQUFPLENBQUMsS0FBSyxDQUFDLHdGQUF3RixDQUFDLENBQUM7b0JBQ3hHLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNyQixPQUFPLENBQUMsSUFBSSxDQUFDLHFEQUFxRCxDQUFDLENBQUM7b0JBQ3BFLE9BQU87Z0JBQ1QsQ0FBQztnQkFDRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFDeEMsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO2dCQUNyQixLQUFLLE1BQU0sSUFBSSxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUMzQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUNsQyxJQUFJLEdBQUcsS0FBSyxLQUFLLEVBQUUsQ0FBQzt3QkFDbEIsV0FBVyxHQUFHLElBQUksQ0FBQzt3QkFDbkIsTUFBTTtvQkFDUixDQUFDO2dCQUNILENBQUM7Z0JBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDeEIsT0FBTyxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO29CQUMvQyxPQUFPO2dCQUNULENBQUM7Z0JBRUQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUM7Z0JBRS9DLE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBTSxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDN0QsTUFBTSwyQkFBMkIsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN0RixVQUFVLENBQUMsU0FBUyxFQUFFLHNCQUFzQiwyQkFBMkIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDM0YsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMifQ==
@@ -0,0 +1,30 @@
1
+ import { useCallback, useState, useEffect } from "preact/hooks";
2
+ export function useLocalStorage(key, defaultValue) {
3
+ return useStorage(key, defaultValue, window.localStorage);
4
+ }
5
+ export function useSessionStorage(key, defaultValue) {
6
+ return useStorage(key, defaultValue, window.sessionStorage);
7
+ }
8
+ function useStorage(key, defaultValue, storageObject) {
9
+ const [value, setValue] = useState(() => {
10
+ const jsonValue = storageObject.getItem(key);
11
+ if (jsonValue != null)
12
+ return JSON.parse(jsonValue);
13
+ if (typeof defaultValue === "function") {
14
+ return defaultValue();
15
+ }
16
+ else {
17
+ return defaultValue;
18
+ }
19
+ });
20
+ useEffect(() => {
21
+ if (value === undefined)
22
+ return storageObject.removeItem(key);
23
+ storageObject.setItem(key, JSON.stringify(value));
24
+ }, [key, value, storageObject]);
25
+ const remove = useCallback(() => {
26
+ setValue(undefined);
27
+ }, []);
28
+ return [value, setValue, remove];
29
+ }
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaG9va3MvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWhFLE1BQU0sVUFBVSxlQUFlLENBQUMsR0FBVyxFQUFFLFlBQXFCO0lBQ2hFLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsR0FBVyxFQUFFLFlBQXFCO0lBQ2xFLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQzlELENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxHQUFXLEVBQUUsWUFBcUIsRUFBRSxhQUFzQjtJQUM1RSxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDdEMsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QyxJQUFJLFNBQVMsSUFBSSxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BELElBQUksT0FBTyxZQUFZLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDdkMsT0FBTyxZQUFZLEVBQUUsQ0FBQztRQUN4QixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sWUFBWSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDYixJQUFJLEtBQUssS0FBSyxTQUFTO1lBQUUsT0FBTyxhQUFhLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlELGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFFaEMsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtRQUM5QixRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRVAsT0FBTyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbkMsQ0FBQyJ9
@@ -1 +1 @@
1
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
1
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -1,3 +1,3 @@
1
1
  export * from "./ui-script.decorator.js";
2
2
  export * from "./ui-script.interface.js";
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdWktc2NyaXB0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywwQkFBMEIsQ0FBQyJ9
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdWktc2NyaXB0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywwQkFBMEIsQ0FBQyJ9
@@ -0,0 +1,25 @@
1
+ import { h, render } from "preact";
2
+ import { XMonkeyWindowComponent } from "../x-monkey-window-component.js";
3
+ export function UiScript(_metadata) {
4
+ return function (_target) {
5
+ const scriptObject = new _target();
6
+ const rootComponent = xMonkeyWrapperElement();
7
+ const renderedScript = scriptObject.render();
8
+ if (renderedScript instanceof Promise) {
9
+ renderedScript.then((resolved) => render(h(XMonkeyWindowComponent, { title: scriptObject.title ?? "" }, resolved), rootComponent));
10
+ return;
11
+ }
12
+ render(h(XMonkeyWindowComponent, { title: scriptObject.title ?? "" }, scriptObject.render()), rootComponent);
13
+ };
14
+ }
15
+ function xMonkeyWrapperElement() {
16
+ const ID = "__xmwr";
17
+ let div = document.getElementById(ID);
18
+ if (div)
19
+ return div;
20
+ div = document.createElement("div");
21
+ div.id = ID;
22
+ document.body.appendChild(div);
23
+ return div;
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktc2NyaXB0LmRlY29yYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91aS1zY3JpcHQvdWktc2NyaXB0LmRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUduQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUV6RSxNQUFNLFVBQVUsUUFBUSxDQUFzQixTQUFxQjtJQUNqRSxPQUFPLFVBQVUsT0FBNEI7UUFDM0MsTUFBTSxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVuQyxNQUFNLGFBQWEsR0FBRyxxQkFBcUIsRUFBRSxDQUFDO1FBQzlDLE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM3QyxJQUFJLGNBQWMsWUFBWSxPQUFPLEVBQUUsQ0FBQztZQUN0QyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FDL0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsS0FBSyxJQUFJLEVBQUUsRUFBRSxFQUFFLFFBQVMsQ0FBQyxFQUFFLGFBQWMsQ0FBQyxDQUNsRyxDQUFDO1lBRUYsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixFQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxLQUFLLElBQUksRUFBRSxFQUFFLEVBQUUsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsYUFBYyxDQUFDLENBQUM7SUFDaEgsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMscUJBQXFCO0lBQzVCLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQztJQUNwQixJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RDLElBQUksR0FBRztRQUFFLE9BQU8sR0FBRyxDQUFDO0lBRXBCLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ1osUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFL0IsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIn0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktc2NyaXB0LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91aS1zY3JpcHQvdWktc2NyaXB0LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktc2NyaXB0LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91aS1zY3JpcHQvdWktc2NyaXB0LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -0,0 +1,4 @@
1
+ export function getStorageKeyIdFromString(data) {
2
+ return "xmonkey-" + data.replace(/[^a-zA-Z0-9.-]/g, "").toLowerCase();
3
+ }
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXN0b3JhZ2Uta2V5LWlkLWZyb20tc3RyaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL2dldC1zdG9yYWdlLWtleS1pZC1mcm9tLXN0cmluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUseUJBQXlCLENBQUMsSUFBWTtJQUNwRCxPQUFPLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ3hFLENBQUMifQ==
@@ -0,0 +1,5 @@
1
+ export const isNullOrUndefined = (value) => value === null || value === undefined;
2
+ export function isNullOrEmptyOrUndefined(value) {
3
+ return isNullOrUndefined(value) || value === "" || value.toString().trim() === "";
4
+ }
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtbnVsbC1vci11bmRlZmluZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvaXMtbnVsbC1vci11bmRlZmluZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFVLEVBQTZCLEVBQUUsQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLENBQUM7QUFFbEgsTUFBTSxVQUFVLHdCQUF3QixDQUFDLEtBQWtCO0lBQ3pELE9BQU8saUJBQWlCLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ3BGLENBQUMifQ==
@@ -0,0 +1,4 @@
1
+ export function sleep(ms) {
2
+ return new Promise((resolve) => setTimeout(resolve, ms));
3
+ }
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xlZXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvc2xlZXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLEtBQUssQ0FBQyxFQUFVO0lBQzlCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzRCxDQUFDIn0=
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "preact/jsx-runtime";
2
+ import { useSessionStorage } from "./hooks";
3
+ import { useMemo } from "preact/hooks";
4
+ import { getStorageKeyIdFromString } from "./utils/get-storage-key-id-from-string";
5
+ export function XMonkeyWindowComponent(props) {
6
+ const storageKey = useMemo(() => getStorageKeyIdFromString(props.title), [props.title]);
7
+ const [minimized, setMinimized] = useSessionStorage(storageKey, false);
8
+ function toggleMinimize() {
9
+ setMinimized(!minimized);
10
+ }
11
+ return (_jsxs("div", { className: `xmwr_c d-f fd-c ai-c jc-sb` + (minimized ? " minim" : ""), children: [_jsxs("div", { className: "xmwr-h w-100 m0 d-f fd-r jc-c bg-primary noselect", children: [_jsx("div", { className: "xmwr-title m0", children: props.title }), _jsx(MinimizeButton, { toggleMinimize: toggleMinimize, minimized: minimized })] }), _jsx("div", { className: "xmwr-b w-100 d-f jc-c", children: props.children })] }));
12
+ }
13
+ function MinimizeButton({ minimized, toggleMinimize }) {
14
+ const minimizeChar = minimized ? "+" : "-";
15
+ return (_jsx("div", { className: "xmwr-x m0", onClick: () => toggleMinimize(), children: minimizeChar }));
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieC1tb25rZXktd2luZG93LWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy94LW1vbmtleS13aW5kb3ctY29tcG9uZW50LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFPbkYsTUFBTSxVQUFVLHNCQUFzQixDQUFDLEtBQWE7SUFDbEQsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLE1BQU0sQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRXZFLFNBQVMsY0FBYztRQUNyQixZQUFZLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsT0FBTyxDQUNMLGVBQUssU0FBUyxFQUFFLDRCQUE0QixHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxhQUN4RSxlQUFLLFNBQVMsRUFBQyxtREFBbUQsYUFDaEUsY0FBSyxTQUFTLEVBQUMsZUFBZSxZQUFFLEtBQUssQ0FBQyxLQUFLLEdBQU8sRUFDbEQsS0FBQyxjQUFjLElBQUMsY0FBYyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsU0FBUyxHQUFJLElBQ3BFLEVBQ04sY0FBSyxTQUFTLEVBQUMsdUJBQXVCLFlBQUUsS0FBSyxDQUFDLFFBQVEsR0FBTyxJQUN6RCxDQUNQLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUE0RDtJQUM3RyxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBRTNDLE9BQU8sQ0FDTCxjQUFLLFNBQVMsRUFBQyxXQUFXLEVBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLGNBQWMsRUFBRSxZQUN2RCxZQUFZLEdBQ1QsQ0FDUCxDQUFDO0FBQ0osQ0FBQyJ9