@lukaskj/xmonkey 2.2.2 → 2.2.4

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 (42) hide show
  1. package/package.json +2 -1
  2. package/dist/build.d.ts +0 -1
  3. package/dist/build.js +0 -201
  4. package/dist/console-script/console-script.decorator.d.ts +0 -3
  5. package/dist/console-script/console-script.decorator.js +0 -9
  6. package/dist/console-script/console-script.interface.d.ts +0 -6
  7. package/dist/console-script/console-script.interface.js +0 -3
  8. package/dist/console-script/index.d.ts +0 -2
  9. package/dist/console-script/index.js +0 -2
  10. package/dist/esbuild/build.d.ts +0 -1
  11. package/dist/esbuild/build.js +0 -28
  12. package/dist/esbuild/plugins/xmonkey-output-stats-plugin.d.ts +0 -2
  13. package/dist/esbuild/plugins/xmonkey-output-stats-plugin.js +0 -17
  14. package/dist/esbuild/plugins/xmonkey-strip-metadata-plugin.d.ts +0 -2
  15. package/dist/esbuild/plugins/xmonkey-strip-metadata-plugin.js +0 -79
  16. package/dist/esbuild/plugins/xmonkey-styles-plugin.d.ts +0 -2
  17. package/dist/esbuild/plugins/xmonkey-styles-plugin.js +0 -34
  18. package/dist/hooks/index.d.ts +0 -2
  19. package/dist/hooks/index.js +0 -29
  20. package/dist/index.d.ts +0 -0
  21. package/dist/index.js +0 -0
  22. package/dist/styles/_base.scss +0 -3
  23. package/dist/styles/_colors.scss +0 -13
  24. package/dist/styles/_utils.scss +0 -82
  25. package/dist/styles/_variables.scss +0 -10
  26. package/dist/styles/_xmonkey-wrapper.scss +0 -89
  27. package/dist/types.d.ts +0 -31
  28. package/dist/types.js +0 -1
  29. package/dist/ui-script/index.d.ts +0 -2
  30. package/dist/ui-script/index.js +0 -2
  31. package/dist/ui-script/ui-script.decorator.d.ts +0 -3
  32. package/dist/ui-script/ui-script.decorator.js +0 -19
  33. package/dist/ui-script/ui-script.interface.d.ts +0 -5
  34. package/dist/ui-script/ui-script.interface.js +0 -1
  35. package/dist/utils/get-storage-key-id-from-string.d.ts +0 -1
  36. package/dist/utils/get-storage-key-id-from-string.js +0 -3
  37. package/dist/utils/is-null-or-undefined.d.ts +0 -2
  38. package/dist/utils/is-null-or-undefined.js +0 -4
  39. package/dist/utils/sleep.d.ts +0 -1
  40. package/dist/utils/sleep.js +0 -3
  41. package/dist/x-monkey-window-component.d.ts +0 -7
  42. package/dist/x-monkey-window-component.js +0 -16
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lukaskj/xmonkey",
3
- "version": "2.2.2",
3
+ "version": "2.2.4",
4
4
  "author": "lukaskj",
5
5
  "license": "ISC",
6
6
  "scripts": {
@@ -29,6 +29,7 @@
29
29
  "dependencies": {
30
30
  "esbuild": "^0.20.1",
31
31
  "esbuild-sass-plugin": "^3.1.0",
32
+ "json5": "^2.2.3",
32
33
  "postcss": "^8.4.35",
33
34
  "postcss-modules": "^6.0.0",
34
35
  "preact": "^10.19.6"
package/dist/build.d.ts DELETED
@@ -1 +0,0 @@
1
- export {};
package/dist/build.js DELETED
@@ -1,201 +0,0 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __copyProps = (to, from, except, desc) => {
8
- if (from && typeof from === "object" || typeof from === "function") {
9
- for (let key of __getOwnPropNames(from))
10
- if (!__hasOwnProp.call(to, key) && key !== except)
11
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
12
- }
13
- return to;
14
- };
15
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
16
- // If the importer is in node compatibility mode or this is not an ESM
17
- // file that has been converted to a CommonJS file using a Babel-
18
- // compatible transform (i.e. "__esModule" has not been set), then set
19
- // "default" to the CommonJS "module.exports" for node compatibility.
20
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
21
- mod
22
- ));
23
-
24
- // src/esbuild/build.ts
25
- var esbuild = __toESM(require("esbuild"));
26
- var import_esbuild_sass_plugin = require("esbuild-sass-plugin");
27
-
28
- // src/esbuild/plugins/xmonkey-strip-metadata-plugin.ts
29
- var import_promises = require("fs/promises");
30
- function xMonkeyStripMetadataPlugin() {
31
- return {
32
- name: "xmonkey-strip-metadata-plugin",
33
- setup(build2) {
34
- let foundMetadata = false;
35
- let metadataContent = "";
36
- build2.onLoad({ filter: /.(ts|tsx)/, namespace: "file" }, async (args) => {
37
- if (foundMetadata)
38
- return;
39
- const source = await (0, import_promises.readFile)(args.path, "utf8");
40
- const scriptMetadataIndex = source.match(/@(ConsoleScript|UiScript)\(/)?.index;
41
- if (!scriptMetadataIndex || scriptMetadataIndex < 0)
42
- return;
43
- foundMetadata = true;
44
- const regex = /\@(ConsoleScript|UiScript)\([^\)]*\)(\.[^\)]*\))?/gi;
45
- const metadataDecoratorMatcher = source.match(regex);
46
- if (metadataDecoratorMatcher) {
47
- metadataContent = metadataDecoratorMatcher.at(0);
48
- const startJsonMetadataIndex = metadataContent.indexOf("{");
49
- const endJsonMetadataIndex = metadataContent.lastIndexOf("}");
50
- const metadataJsonString = metadataContent.substring(startJsonMetadataIndex, endJsonMetadataIndex + 1);
51
- const contents = source.replace(metadataJsonString, "");
52
- const extension = args.path.split(".").pop();
53
- const loader = extension === "tsx" ? "tsx" : "ts";
54
- return { contents, loader };
55
- }
56
- return;
57
- });
58
- build2.onEnd(async (result) => {
59
- if (!build2.initialOptions?.outfile || !build2.initialOptions?.bundle) {
60
- console.error("Wrong build configuration. Options 'bundle' must be enabled and 'outfile' must be set.");
61
- return;
62
- }
63
- if (!foundMetadata) {
64
- console.error("ScriptMetadata decorator not found.");
65
- return;
66
- }
67
- if (result.errors.length) {
68
- console.error("Error building. Script Metadata cannot be added to final script.");
69
- return;
70
- }
71
- const fileContents = await (0, import_promises.readFile)(build2.initialOptions.outfile);
72
- const scriptMetadataString = getScriptMetadataString(metadataContent);
73
- await (0, import_promises.writeFile)(build2.initialOptions.outfile, `${scriptMetadataString}
74
-
75
- ${fileContents.toString()}`);
76
- });
77
- }
78
- };
79
- }
80
- function getScriptMetadataString(scriptMetadataFunctionCallString) {
81
- scriptMetadataFunctionCallString = scriptMetadataFunctionCallString.trim();
82
- const startJsonMetadataIndex = scriptMetadataFunctionCallString.indexOf("{");
83
- const endJsonMetadataIndex = scriptMetadataFunctionCallString.lastIndexOf("}");
84
- if (startJsonMetadataIndex < 0 || endJsonMetadataIndex < 0) {
85
- return "";
86
- }
87
- const jsonMetadataString = scriptMetadataFunctionCallString.substring(startJsonMetadataIndex, endJsonMetadataIndex + 1).replaceAll("\n", "").replaceAll(/,\s{1,}\]/g, "]").replaceAll(/,\s{1,}\}/g, "}");
88
- const metadataObject = JSON.parse(jsonMetadataString);
89
- const tag = "// ==UserScript==";
90
- const tagEnd = "// ==/UserScript==";
91
- const headersArr = [];
92
- const spaces = 13;
93
- for (const key in metadataObject) {
94
- if (Array.isArray(metadataObject[key])) {
95
- metadataObject[key].forEach((item) => {
96
- headersArr.push(`${key.padEnd(spaces, " ")}${item}`);
97
- });
98
- } else {
99
- headersArr.push(`${key.padEnd(spaces, " ")}${metadataObject[key]}`);
100
- }
101
- }
102
- const headers = headersArr.map((h) => `// ${h}`).join("\n");
103
- return `${tag}
104
- ${headers}
105
- ${tagEnd}`;
106
- }
107
-
108
- // src/esbuild/plugins/xmonkey-styles-plugin.ts
109
- var import_promises2 = require("fs/promises");
110
- function xMonkeyStylesPlugin() {
111
- return {
112
- name: "xmonkey-styles-plugin",
113
- setup(build2) {
114
- build2.onEnd(async (result) => {
115
- if (!build2.initialOptions?.outfile || !build2.initialOptions?.bundle) {
116
- console.error("Wrong build configuration. Options 'bundle' must be enabled and 'outfile' must be set.");
117
- return;
118
- }
119
- if (!result.metafile) {
120
- console.warn("ESBuild metafile not enabled. Style bundle skipped.");
121
- return;
122
- }
123
- const outputs = result.metafile.outputs;
124
- let cssFilePath = "";
125
- for (const file in outputs) {
126
- const ext = file.split(".").pop();
127
- if (ext === "css") {
128
- cssFilePath = file;
129
- break;
130
- }
131
- }
132
- if (!cssFilePath.length) {
133
- console.warn("[-] StyleSheet output skipped.");
134
- return;
135
- }
136
- const jsOutFile = build2.initialOptions.outfile;
137
- const cssContents = (await (0, import_promises2.readFile)(cssFilePath)).toString();
138
- (0, import_promises2.appendFile)(jsOutFile, `
139
- GM.addStyle("\\
140
- ${cssContents.trim()}\\
141
- ");`);
142
- });
143
- }
144
- };
145
- }
146
-
147
- // src/esbuild/plugins/xmonkey-output-stats-plugin.ts
148
- function xMonkeyOutputStatsPlugin() {
149
- return {
150
- name: "xmonkey-output-stats-plugin",
151
- setup(build2) {
152
- build2.onEnd(async (result) => {
153
- const outputs = result.metafile?.outputs;
154
- const outputTotal = Object.keys(outputs).reduce((prev, cur) => prev + outputs[cur].bytes, 0);
155
- const bundleTotal = humanFileSize(outputTotal);
156
- console.log("[*] Bundle total:", bundleTotal);
157
- });
158
- }
159
- };
160
- }
161
- function humanFileSize(size) {
162
- const i = size == 0 ? 0 : Math.floor(Math.log(size) / Math.log(1024));
163
- return (size / Math.pow(1024, i)).toFixed(1) + "" + ["b", "kB", "MB", "GB", "TB"][i];
164
- }
165
-
166
- // src/esbuild/build.ts
167
- async function buildXmonkeyScript(scriptBasePath) {
168
- const entryFile2 = scriptBasePath;
169
- console.info(`Building file: '${entryFile2}'`);
170
- await esbuild.build({
171
- entryPoints: [entryFile2],
172
- outfile: "dist/index.js",
173
- bundle: true,
174
- treeShaking: true,
175
- minify: process.env.DEBUG ? false : true,
176
- platform: "browser",
177
- format: "iife",
178
- // target: "esnext",
179
- sourcemap: false,
180
- keepNames: true,
181
- logLevel: "info",
182
- metafile: true,
183
- plugins: [
184
- xMonkeyStripMetadataPlugin(),
185
- // xMonkeyDevPlugin(),
186
- (0, import_esbuild_sass_plugin.sassPlugin)({ style: "compressed" }),
187
- xMonkeyStylesPlugin(),
188
- xMonkeyOutputStatsPlugin()
189
- ]
190
- });
191
- }
192
-
193
- // src/build.ts
194
- var entryFile = process.argv[2];
195
- if (!entryFile) {
196
- console.error(`No entryfile specified. Try adding the script to build in the argument.`);
197
- console.error(`Example: npm run build src/example-script.ts`);
198
- process.exit(1);
199
- }
200
- buildXmonkeyScript(entryFile);
201
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2VzYnVpbGQvYnVpbGQudHMiLCAiLi4vc3JjL2VzYnVpbGQvcGx1Z2lucy94bW9ua2V5LXN0cmlwLW1ldGFkYXRhLXBsdWdpbi50cyIsICIuLi9zcmMvZXNidWlsZC9wbHVnaW5zL3htb25rZXktc3R5bGVzLXBsdWdpbi50cyIsICIuLi9zcmMvZXNidWlsZC9wbHVnaW5zL3htb25rZXktb3V0cHV0LXN0YXRzLXBsdWdpbi50cyIsICIuLi9zcmMvYnVpbGQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCAqIGFzIGVzYnVpbGQgZnJvbSBcImVzYnVpbGRcIjtcbmltcG9ydCB7IHNhc3NQbHVnaW4gfSBmcm9tIFwiZXNidWlsZC1zYXNzLXBsdWdpblwiO1xuaW1wb3J0IHsgeE1vbmtleVN0cmlwTWV0YWRhdGFQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3htb25rZXktc3RyaXAtbWV0YWRhdGEtcGx1Z2luLmpzXCI7XG5pbXBvcnQgeyB4TW9ua2V5U3R5bGVzUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy94bW9ua2V5LXN0eWxlcy1wbHVnaW4uanNcIjtcbmltcG9ydCB7IHhNb25rZXlPdXRwdXRTdGF0c1BsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMveG1vbmtleS1vdXRwdXQtc3RhdHMtcGx1Z2luLmpzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZFhtb25rZXlTY3JpcHQoc2NyaXB0QmFzZVBhdGg6IHN0cmluZykge1xuICAvLyBsZXQgZW50cnlGaWxlID0gcHJvY2Vzcy5hcmd2WzJdO1xuICBjb25zdCBlbnRyeUZpbGUgPSBzY3JpcHRCYXNlUGF0aDtcbiAgY29uc29sZS5pbmZvKGBCdWlsZGluZyBmaWxlOiAnJHtlbnRyeUZpbGV9J2ApO1xuXG4gIGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgIGVudHJ5UG9pbnRzOiBbZW50cnlGaWxlXSxcbiAgICBvdXRmaWxlOiBcImRpc3QvaW5kZXguanNcIixcbiAgICBidW5kbGU6IHRydWUsXG4gICAgdHJlZVNoYWtpbmc6IHRydWUsXG4gICAgbWluaWZ5OiBwcm9jZXNzLmVudi5ERUJVRyA/IGZhbHNlIDogdHJ1ZSxcbiAgICBwbGF0Zm9ybTogXCJicm93c2VyXCIsXG4gICAgZm9ybWF0OiBcImlpZmVcIixcbiAgICAvLyB0YXJnZXQ6IFwiZXNuZXh0XCIsXG4gICAgc291cmNlbWFwOiBmYWxzZSxcbiAgICBrZWVwTmFtZXM6IHRydWUsXG4gICAgbG9nTGV2ZWw6IFwiaW5mb1wiLFxuICAgIG1ldGFmaWxlOiB0cnVlLFxuICAgIHBsdWdpbnM6IFtcbiAgICAgIHhNb25rZXlTdHJpcE1ldGFkYXRhUGx1Z2luKCksXG4gICAgICAvLyB4TW9ua2V5RGV2UGx1Z2luKCksXG4gICAgICBzYXNzUGx1Z2luKHsgc3R5bGU6IFwiY29tcHJlc3NlZFwiIH0pLFxuICAgICAgeE1vbmtleVN0eWxlc1BsdWdpbigpLFxuICAgICAgeE1vbmtleU91dHB1dFN0YXRzUGx1Z2luKCksXG4gICAgXSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcImVzYnVpbGRcIjtcbmltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tIFwiZnMvcHJvbWlzZXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHhNb25rZXlTdHJpcE1ldGFkYXRhUGx1Z2luKCk6IFBsdWdpbiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogXCJ4bW9ua2V5LXN0cmlwLW1ldGFkYXRhLXBsdWdpblwiLFxuICAgIHNldHVwKGJ1aWxkKSB7XG4gICAgICBsZXQgZm91bmRNZXRhZGF0YSA9IGZhbHNlO1xuICAgICAgbGV0IG1ldGFkYXRhQ29udGVudCA9IFwiXCI7XG5cbiAgICAgIGJ1aWxkLm9uTG9hZCh7IGZpbHRlcjogLy4odHN8dHN4KS8sIG5hbWVzcGFjZTogXCJmaWxlXCIgfSwgYXN5bmMgKGFyZ3MpID0+IHtcbiAgICAgICAgaWYgKGZvdW5kTWV0YWRhdGEpIHJldHVybjtcbiAgICAgICAgY29uc3Qgc291cmNlID0gYXdhaXQgcmVhZEZpbGUoYXJncy5wYXRoLCBcInV0ZjhcIik7XG4gICAgICAgIGNvbnN0IHNjcmlwdE1ldGFkYXRhSW5kZXggPSBzb3VyY2UubWF0Y2goL0AoQ29uc29sZVNjcmlwdHxVaVNjcmlwdClcXCgvKT8uaW5kZXg7XG5cbiAgICAgICAgaWYgKCFzY3JpcHRNZXRhZGF0YUluZGV4IHx8IHNjcmlwdE1ldGFkYXRhSW5kZXggPCAwKSByZXR1cm47XG4gICAgICAgIGZvdW5kTWV0YWRhdGEgPSB0cnVlO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1lc2NhcGVcbiAgICAgICAgY29uc3QgcmVnZXggPSAvXFxAKENvbnNvbGVTY3JpcHR8VWlTY3JpcHQpXFwoW15cXCldKlxcKShcXC5bXlxcKV0qXFwpKT8vZ2k7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhRGVjb3JhdG9yTWF0Y2hlciA9IHNvdXJjZS5tYXRjaChyZWdleCk7XG4gICAgICAgIGlmIChtZXRhZGF0YURlY29yYXRvck1hdGNoZXIpIHtcbiAgICAgICAgICBtZXRhZGF0YUNvbnRlbnQgPSBtZXRhZGF0YURlY29yYXRvck1hdGNoZXIuYXQoMCkgYXMgc3RyaW5nO1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwibWV0YWRhdGFDb250ZW50XCIsIG1ldGFkYXRhQ29udGVudCk7XG4gICAgICAgICAgY29uc3Qgc3RhcnRKc29uTWV0YWRhdGFJbmRleCA9IG1ldGFkYXRhQ29udGVudC5pbmRleE9mKFwie1wiKTtcbiAgICAgICAgICBjb25zdCBlbmRKc29uTWV0YWRhdGFJbmRleCA9IG1ldGFkYXRhQ29udGVudC5sYXN0SW5kZXhPZihcIn1cIik7XG4gICAgICAgICAgY29uc3QgbWV0YWRhdGFKc29uU3RyaW5nID0gbWV0YWRhdGFDb250ZW50LnN1YnN0cmluZyhzdGFydEpzb25NZXRhZGF0YUluZGV4LCBlbmRKc29uTWV0YWRhdGFJbmRleCArIDEpO1xuICAgICAgICAgIGNvbnN0IGNvbnRlbnRzID0gc291cmNlLnJlcGxhY2UobWV0YWRhdGFKc29uU3RyaW5nLCBcIlwiKTsgLy8gcmVtb3ZlIHRoZSBqc29uIG1ldGFkYXRhIGZyb20gc291cmNlXG4gICAgICAgICAgLy8gY29uc3QgY29udGVudHMgPSBzb3VyY2UucmVwbGFjZShyZWdleCwgXCJcIik7IC8vIHJlbW92ZSBAQ29uc29sZVNjcmlwdCh7Li4uLn0pIGZyb20gc291cmNlXG5cbiAgICAgICAgICAvLyBjb25zdCBjb250ZW50cyA9IHNvdXJjZS5yZXBsYWNlKHJlZ2V4LCBcIlwiKTtcbiAgICAgICAgICBjb25zdCBleHRlbnNpb24gPSBhcmdzLnBhdGguc3BsaXQoXCIuXCIpLnBvcCgpO1xuXG4gICAgICAgICAgY29uc3QgbG9hZGVyID0gZXh0ZW5zaW9uID09PSBcInRzeFwiID8gXCJ0c3hcIiA6IFwidHNcIjtcblxuICAgICAgICAgIHJldHVybiB7IGNvbnRlbnRzLCBsb2FkZXIgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH0pO1xuXG4gICAgICBidWlsZC5vbkVuZChhc3luYyAocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmICghYnVpbGQuaW5pdGlhbE9wdGlvbnM/Lm91dGZpbGUgfHwgIWJ1aWxkLmluaXRpYWxPcHRpb25zPy5idW5kbGUpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiV3JvbmcgYnVpbGQgY29uZmlndXJhdGlvbi4gT3B0aW9ucyAnYnVuZGxlJyBtdXN0IGJlIGVuYWJsZWQgYW5kICdvdXRmaWxlJyBtdXN0IGJlIHNldC5cIik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFmb3VuZE1ldGFkYXRhKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIlNjcmlwdE1ldGFkYXRhIGRlY29yYXRvciBub3QgZm91bmQuXCIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXN1bHQuZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBidWlsZGluZy4gU2NyaXB0IE1ldGFkYXRhIGNhbm5vdCBiZSBhZGRlZCB0byBmaW5hbCBzY3JpcHQuXCIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVDb250ZW50cyA9IGF3YWl0IHJlYWRGaWxlKGJ1aWxkLmluaXRpYWxPcHRpb25zLm91dGZpbGUpO1xuICAgICAgICBjb25zdCBzY3JpcHRNZXRhZGF0YVN0cmluZyA9IGdldFNjcmlwdE1ldGFkYXRhU3RyaW5nKG1ldGFkYXRhQ29udGVudCk7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZShidWlsZC5pbml0aWFsT3B0aW9ucy5vdXRmaWxlLCBgJHtzY3JpcHRNZXRhZGF0YVN0cmluZ31cXG5cXG4ke2ZpbGVDb250ZW50cy50b1N0cmluZygpfWApO1xuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0U2NyaXB0TWV0YWRhdGFTdHJpbmcoc2NyaXB0TWV0YWRhdGFGdW5jdGlvbkNhbGxTdHJpbmc6IHN0cmluZykge1xuICBzY3JpcHRNZXRhZGF0YUZ1bmN0aW9uQ2FsbFN0cmluZyA9IHNjcmlwdE1ldGFkYXRhRnVuY3Rpb25DYWxsU3RyaW5nLnRyaW0oKTtcbiAgY29uc3Qgc3RhcnRKc29uTWV0YWRhdGFJbmRleCA9IHNjcmlwdE1ldGFkYXRhRnVuY3Rpb25DYWxsU3RyaW5nLmluZGV4T2YoXCJ7XCIpO1xuICBjb25zdCBlbmRKc29uTWV0YWRhdGFJbmRleCA9IHNjcmlwdE1ldGFkYXRhRnVuY3Rpb25DYWxsU3RyaW5nLmxhc3RJbmRleE9mKFwifVwiKTtcbiAgaWYgKHN0YXJ0SnNvbk1ldGFkYXRhSW5kZXggPCAwIHx8IGVuZEpzb25NZXRhZGF0YUluZGV4IDwgMCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgY29uc3QganNvbk1ldGFkYXRhU3RyaW5nID0gc2NyaXB0TWV0YWRhdGFGdW5jdGlvbkNhbGxTdHJpbmdcbiAgICAuc3Vic3RyaW5nKHN0YXJ0SnNvbk1ldGFkYXRhSW5kZXgsIGVuZEpzb25NZXRhZGF0YUluZGV4ICsgMSlcbiAgICAucmVwbGFjZUFsbChcIlxcblwiLCBcIlwiKVxuICAgIC5yZXBsYWNlQWxsKC8sXFxzezEsfVxcXS9nLCBcIl1cIilcbiAgICAucmVwbGFjZUFsbCgvLFxcc3sxLH1cXH0vZywgXCJ9XCIpO1xuXG4gIGNvbnN0IG1ldGFkYXRhT2JqZWN0ID0gSlNPTi5wYXJzZShqc29uTWV0YWRhdGFTdHJpbmcpO1xuXG4gIGNvbnN0IHRhZyA9IFwiLy8gPT1Vc2VyU2NyaXB0PT1cIjtcbiAgY29uc3QgdGFnRW5kID0gXCIvLyA9PS9Vc2VyU2NyaXB0PT1cIjtcbiAgY29uc3QgaGVhZGVyc0FyciA9IFtdO1xuXG4gIGNvbnN0IHNwYWNlcyA9IDEzO1xuICBmb3IgKGNvbnN0IGtleSBpbiBtZXRhZGF0YU9iamVjdCkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KG1ldGFkYXRhT2JqZWN0W2tleV0pKSB7XG4gICAgICBtZXRhZGF0YU9iamVjdFtrZXldLmZvckVhY2goKGl0ZW06IHVua25vd24pID0+IHtcbiAgICAgICAgaGVhZGVyc0Fyci5wdXNoKGAke2tleS5wYWRFbmQoc3BhY2VzLCBcIiBcIil9JHtpdGVtfWApO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhlYWRlcnNBcnIucHVzaChgJHtrZXkucGFkRW5kKHNwYWNlcywgXCIgXCIpfSR7bWV0YWRhdGFPYmplY3Rba2V5XX1gKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBoZWFkZXJzID0gaGVhZGVyc0Fyci5tYXAoKGgpID0+IGAvLyAke2h9YCkuam9pbihcIlxcblwiKTtcbiAgcmV0dXJuIGAke3RhZ31cXG4ke2hlYWRlcnN9XFxuJHt0YWdFbmR9YDtcbn1cbiIsICJpbXBvcnQgeyBQbHVnaW4gfSBmcm9tIFwiZXNidWlsZFwiO1xuaW1wb3J0IHsgYXBwZW5kRmlsZSwgcmVhZEZpbGUgfSBmcm9tIFwiZnMvcHJvbWlzZXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHhNb25rZXlTdHlsZXNQbHVnaW4oKTogUGx1Z2luIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBcInhtb25rZXktc3R5bGVzLXBsdWdpblwiLFxuICAgIHNldHVwKGJ1aWxkKSB7XG4gICAgICBidWlsZC5vbkVuZChhc3luYyAocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmICghYnVpbGQuaW5pdGlhbE9wdGlvbnM/Lm91dGZpbGUgfHwgIWJ1aWxkLmluaXRpYWxPcHRpb25zPy5idW5kbGUpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiV3JvbmcgYnVpbGQgY29uZmlndXJhdGlvbi4gT3B0aW9ucyAnYnVuZGxlJyBtdXN0IGJlIGVuYWJsZWQgYW5kICdvdXRmaWxlJyBtdXN0IGJlIHNldC5cIik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFyZXN1bHQubWV0YWZpbGUpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCJFU0J1aWxkIG1ldGFmaWxlIG5vdCBlbmFibGVkLiBTdHlsZSBidW5kbGUgc2tpcHBlZC5cIik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG91dHB1dHMgPSByZXN1bHQubWV0YWZpbGUub3V0cHV0cztcbiAgICAgICAgbGV0IGNzc0ZpbGVQYXRoID0gXCJcIjtcbiAgICAgICAgZm9yIChjb25zdCBmaWxlIGluIG91dHB1dHMpIHtcbiAgICAgICAgICBjb25zdCBleHQgPSBmaWxlLnNwbGl0KFwiLlwiKS5wb3AoKTtcbiAgICAgICAgICBpZiAoZXh0ID09PSBcImNzc1wiKSB7XG4gICAgICAgICAgICBjc3NGaWxlUGF0aCA9IGZpbGU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWNzc0ZpbGVQYXRoLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcIlstXSBTdHlsZVNoZWV0IG91dHB1dCBza2lwcGVkLlwiKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBqc091dEZpbGUgPSBidWlsZC5pbml0aWFsT3B0aW9ucy5vdXRmaWxlO1xuXG4gICAgICAgIGNvbnN0IGNzc0NvbnRlbnRzID0gKGF3YWl0IHJlYWRGaWxlKGNzc0ZpbGVQYXRoKSkudG9TdHJpbmcoKTtcbiAgICAgICAgYXBwZW5kRmlsZShqc091dEZpbGUsIGBcXG5HTS5hZGRTdHlsZShcIlxcXFxcXG4ke2Nzc0NvbnRlbnRzLnRyaW0oKX1cXFxcXFxuXCIpO2ApO1xuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyBQbHVnaW4gfSBmcm9tIFwiZXNidWlsZFwiO1xuXG5leHBvcnQgZnVuY3Rpb24geE1vbmtleU91dHB1dFN0YXRzUGx1Z2luKCk6IFBsdWdpbiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogXCJ4bW9ua2V5LW91dHB1dC1zdGF0cy1wbHVnaW5cIixcbiAgICBzZXR1cChidWlsZCkge1xuICAgICAgYnVpbGQub25FbmQoYXN5bmMgKHJlc3VsdCkgPT4ge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICBjb25zdCBvdXRwdXRzID0gcmVzdWx0Lm1ldGFmaWxlPy5vdXRwdXRzIGFzIGFueTtcbiAgICAgICAgY29uc3Qgb3V0cHV0VG90YWwgPSBPYmplY3Qua2V5cyhvdXRwdXRzKS5yZWR1Y2UoKHByZXYsIGN1cikgPT4gcHJldiArIG91dHB1dHNbY3VyXS5ieXRlcywgMCk7XG4gICAgICAgIGNvbnN0IGJ1bmRsZVRvdGFsID0gaHVtYW5GaWxlU2l6ZShvdXRwdXRUb3RhbCk7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiWypdIEJ1bmRsZSB0b3RhbDpcIiwgYnVuZGxlVG90YWwpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gaHVtYW5GaWxlU2l6ZShzaXplOiBudW1iZXIpIHtcbiAgY29uc3QgaSA9IHNpemUgPT0gMCA/IDAgOiBNYXRoLmZsb29yKE1hdGgubG9nKHNpemUpIC8gTWF0aC5sb2coMTAyNCkpO1xuICByZXR1cm4gKHNpemUgLyBNYXRoLnBvdygxMDI0LCBpKSkudG9GaXhlZCgxKSArIFwiXCIgKyBbXCJiXCIsIFwia0JcIiwgXCJNQlwiLCBcIkdCXCIsIFwiVEJcIl1baV07XG59XG4iLCAiaW1wb3J0IHsgYnVpbGRYbW9ua2V5U2NyaXB0IH0gZnJvbSBcIi4vZXNidWlsZC9idWlsZC5qc1wiO1xuXG5jb25zdCBlbnRyeUZpbGUgPSBwcm9jZXNzLmFyZ3ZbMl07XG5cbmlmICghZW50cnlGaWxlKSB7XG4gIGNvbnNvbGUuZXJyb3IoYE5vIGVudHJ5ZmlsZSBzcGVjaWZpZWQuIFRyeSBhZGRpbmcgdGhlIHNjcmlwdCB0byBidWlsZCBpbiB0aGUgYXJndW1lbnQuYCk7XG4gIGNvbnNvbGUuZXJyb3IoYEV4YW1wbGU6IG5wbSBydW4gYnVpbGQgc3JjL2V4YW1wbGUtc2NyaXB0LnRzYCk7XG4gIHByb2Nlc3MuZXhpdCgxKTtcbn1cblxuYnVpbGRYbW9ua2V5U2NyaXB0KGVudHJ5RmlsZSk7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxjQUF5QjtBQUN6QixpQ0FBMkI7OztBQ0EzQixzQkFBb0M7QUFFN0IsU0FBUyw2QkFBcUM7QUFDbkQsU0FBTztBQUFBLElBQ0wsTUFBTTtBQUFBLElBQ04sTUFBTUEsUUFBTztBQUNYLFVBQUksZ0JBQWdCO0FBQ3BCLFVBQUksa0JBQWtCO0FBRXRCLE1BQUFBLE9BQU0sT0FBTyxFQUFFLFFBQVEsYUFBYSxXQUFXLE9BQU8sR0FBRyxPQUFPLFNBQVM7QUFDdkUsWUFBSTtBQUFlO0FBQ25CLGNBQU0sU0FBUyxVQUFNLDBCQUFTLEtBQUssTUFBTSxNQUFNO0FBQy9DLGNBQU0sc0JBQXNC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QWMsTUFBYztBQUNuQyxRQUFNLElBQUksUUFBUSxJQUFJLElBQUksS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQztBQUNwRSxVQUFRLE9BQU8sS0FBSyxJQUFJLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLE1BQU0sTUFBTSxNQUFNLElBQUksRUFBRSxDQUFDO0FBQ3JGOzs7QUhkQSxlQUFzQixtQkFBbUIsZ0JBQXdCO0FBRS9ELFFBQU1DLGFBQVk7QUFDbEIsVUFBUSxLQUFLLG1CQUFtQkEsVUFBUyxHQUFHO0FBRTVDLFFBQWMsY0FBTTtBQUFBLElBQ2xCLGFBQWEsQ0FBQ0EsVUFBUztBQUFBLElBQ3ZCLFNBQVM7QUFBQSxJQUNULFFBQVE7QUFBQSxJQUNSLGFBQWE7QUFBQSxJQUNiLFFBQVEsUUFBUSxJQUFJLFFBQVEsUUFBUTtBQUFBLElBQ3BDLFVBQVU7QUFBQSxJQUNWLFFBQVE7QUFBQTtBQUFBLElBRVIsV0FBVztBQUFBLElBQ1gsV0FBVztBQUFBLElBQ1gsVUFBVTtBQUFBLElBQ1YsVUFBVTtBQUFBLElBQ1YsU0FBUztBQUFBLE1BQ1AsMkJBQTJCO0FBQUE7QUFBQSxVQUUzQix1Q0FBVyxFQUFFLE9BQU8sYUFBYSxDQUFDO0FBQUEsTUFDbEMsb0JBQW9CO0FBQUEsTUFDcEIseUJBQXlCO0FBQUEsSUFDM0I7QUFBQSxFQUNGLENBQUM7QUFDSDs7O0FJOUJBLElBQU0sWUFBWSxRQUFRLEtBQUssQ0FBQztBQUVoQyxJQUFJLENBQUMsV0FBVztBQUNkLFVBQVEsTUFBTSx5RUFBeUU7QUFDdkYsVUFBUSxNQUFNLDhDQUE4QztBQUM1RCxVQUFRLEtBQUssQ0FBQztBQUNoQjtBQUVBLG1CQUFtQixTQUFTOyIsCiAgIm5hbWVzIjogWyJidWlsZCIsICJpbXBvcnRfcHJvbWlzZXMiLCAiYnVpbGQiLCAiYnVpbGQiLCAiZW50cnlGaWxlIl0KfQo=
@@ -1,3 +0,0 @@
1
- import { IConsoleScript } from "./console-script.interface.js";
2
- import { ClassConstructor, ScriptInfo } from "../types.js";
3
- export declare function ConsoleScript<T extends IConsoleScript>(_metadata: ScriptInfo): (target: ClassConstructor<T>) => void;
@@ -1,9 +0,0 @@
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
- }
@@ -1,6 +0,0 @@
1
- declare class CScript {
2
- }
3
- export interface IConsoleScript extends CScript {
4
- execute: () => Promise<void>;
5
- }
6
- export {};
@@ -1,3 +0,0 @@
1
- class CScript {
2
- }
3
- export {};
@@ -1,2 +0,0 @@
1
- export * from "./console-script.decorator.js";
2
- export * from "./console-script.interface.js";
@@ -1,2 +0,0 @@
1
- export * from "./console-script.decorator.js";
2
- export * from "./console-script.interface.js";
@@ -1 +0,0 @@
1
- export declare function buildXmonkeyScript(scriptBasePath: string): Promise<void>;
@@ -1,28 +0,0 @@
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: 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
- }
@@ -1,2 +0,0 @@
1
- import { Plugin } from "esbuild";
2
- export declare function xMonkeyOutputStatsPlugin(): Plugin;
@@ -1,17 +0,0 @@
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
- }
@@ -1,2 +0,0 @@
1
- import { Plugin } from "esbuild";
2
- export declare function xMonkeyStripMetadataPlugin(): Plugin;
@@ -1,79 +0,0 @@
1
- import { readFile, writeFile } from "fs/promises";
2
- export function xMonkeyStripMetadataPlugin() {
3
- return {
4
- name: "xmonkey-strip-metadata-plugin",
5
- setup(build) {
6
- let foundMetadata = false;
7
- let metadataContent = "";
8
- build.onLoad({ filter: /.(ts|tsx)/, namespace: "file" }, async (args) => {
9
- if (foundMetadata)
10
- return;
11
- const source = await readFile(args.path, "utf8");
12
- const scriptMetadataIndex = source.match(/@(ConsoleScript|UiScript)\(/)?.index;
13
- if (!scriptMetadataIndex || scriptMetadataIndex < 0)
14
- return;
15
- foundMetadata = true;
16
- const regex = /\@(ConsoleScript|UiScript)\([^\)]*\)(\.[^\)]*\))?/gi;
17
- const metadataDecoratorMatcher = source.match(regex);
18
- if (metadataDecoratorMatcher) {
19
- metadataContent = metadataDecoratorMatcher.at(0);
20
- const startJsonMetadataIndex = metadataContent.indexOf("{");
21
- const endJsonMetadataIndex = metadataContent.lastIndexOf("}");
22
- const metadataJsonString = metadataContent.substring(startJsonMetadataIndex, endJsonMetadataIndex + 1);
23
- const contents = source.replace(metadataJsonString, "");
24
- const extension = args.path.split(".").pop();
25
- const loader = extension === "tsx" ? "tsx" : "ts";
26
- return { contents, loader };
27
- }
28
- return;
29
- });
30
- build.onEnd(async (result) => {
31
- if (!build.initialOptions?.outfile || !build.initialOptions?.bundle) {
32
- console.error("Wrong build configuration. Options 'bundle' must be enabled and 'outfile' must be set.");
33
- return;
34
- }
35
- if (!foundMetadata) {
36
- console.error("ScriptMetadata decorator not found.");
37
- return;
38
- }
39
- if (result.errors.length) {
40
- console.error("Error building. Script Metadata cannot be added to final script.");
41
- return;
42
- }
43
- const fileContents = await readFile(build.initialOptions.outfile);
44
- const scriptMetadataString = getScriptMetadataString(metadataContent);
45
- await writeFile(build.initialOptions.outfile, `${scriptMetadataString}\n\n${fileContents.toString()}`);
46
- });
47
- },
48
- };
49
- }
50
- function getScriptMetadataString(scriptMetadataFunctionCallString) {
51
- scriptMetadataFunctionCallString = scriptMetadataFunctionCallString.trim();
52
- const startJsonMetadataIndex = scriptMetadataFunctionCallString.indexOf("{");
53
- const endJsonMetadataIndex = scriptMetadataFunctionCallString.lastIndexOf("}");
54
- if (startJsonMetadataIndex < 0 || endJsonMetadataIndex < 0) {
55
- return "";
56
- }
57
- const jsonMetadataString = scriptMetadataFunctionCallString
58
- .substring(startJsonMetadataIndex, endJsonMetadataIndex + 1)
59
- .replaceAll("\n", "")
60
- .replaceAll(/,\s{1,}\]/g, "]")
61
- .replaceAll(/,\s{1,}\}/g, "}");
62
- const metadataObject = JSON.parse(jsonMetadataString);
63
- const tag = "// ==UserScript==";
64
- const tagEnd = "// ==/UserScript==";
65
- const headersArr = [];
66
- const spaces = 13;
67
- for (const key in metadataObject) {
68
- if (Array.isArray(metadataObject[key])) {
69
- metadataObject[key].forEach((item) => {
70
- headersArr.push(`${key.padEnd(spaces, " ")}${item}`);
71
- });
72
- }
73
- else {
74
- headersArr.push(`${key.padEnd(spaces, " ")}${metadataObject[key]}`);
75
- }
76
- }
77
- const headers = headersArr.map((h) => `// ${h}`).join("\n");
78
- return `${tag}\n${headers}\n${tagEnd}`;
79
- }
@@ -1,2 +0,0 @@
1
- import { Plugin } from "esbuild";
2
- export declare function xMonkeyStylesPlugin(): Plugin;
@@ -1,34 +0,0 @@
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
- appendFile(jsOutFile, `\nGM.addStyle("\\\n${cssContents.trim()}\\\n");`);
31
- });
32
- },
33
- };
34
- }
@@ -1,2 +0,0 @@
1
- export declare function useLocalStorage(key: string, defaultValue: unknown): any[];
2
- export declare function useSessionStorage(key: string, defaultValue: unknown): any[];
@@ -1,29 +0,0 @@
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
- }
package/dist/index.d.ts DELETED
File without changes
package/dist/index.js DELETED
File without changes
@@ -1,3 +0,0 @@
1
- @use "variables";
2
- @use "utils";
3
- @use "xmonkey-wrapper";
@@ -1,13 +0,0 @@
1
- $gray: #6c757d;
2
- $black: #2f2f2f;
3
- $white: #f0f0f0;
4
-
5
- $primary: #007bff;
6
- $secondary: darken($primary, 10%);
7
- $warning: #ffc107;
8
- $error: #dc3545;
9
- $success: #28a745;
10
- $info: #17a2b8;
11
-
12
-
13
- $bg: #404040;
@@ -1,82 +0,0 @@
1
- /* https://gist.github.com/jonsuh/b2347347480105874cda110b2afc53f4 */
2
- /* Flexbox
3
- // ================================================== */
4
-
5
- @use "variables" as vars;
6
- ##{vars.$xmonkey-wrapper} {
7
- .d-f { display: flex !important; flex-direction: column; }
8
- .d-if { display: inline-flex !important; flex-direction: column; }
9
-
10
- /* Flex direction */
11
- .fd-r { flex-direction: row; } /* Default */
12
- .fd-rr { flex-direction: row-reverse; }
13
- .fd-c { flex-direction: column; }
14
- .fd-cr { flex-direction: column-reverse; }
15
-
16
-
17
- /* Flex wrap */
18
- .fw-n { flex-wrap: nowrap; } /* Default */
19
- .fw-w { flex-wrap: wrap; }
20
- .fw-wr { flex-wrap: wrap-reverse; }
21
-
22
-
23
- /* Justify content */
24
- .jc-fe { justify-content: flex-end; }
25
- .jc-fs { justify-content: flex-start; } /* Default */
26
- .jc-c { justify-content: center; }
27
- .jc-sa { justify-content: space-around; }
28
- .jc-sb { justify-content: space-between; }
29
-
30
-
31
- /* Align items */
32
- .ai-fs { align-items: flex-start; }
33
- .ai-c { align-items: center; }
34
- .ai-fe { align-items: flex-end; }
35
- .ai-s { align-items: stretch; } /* Default */
36
- .ai-b { align-items: baseline; }
37
-
38
-
39
- /* Flex grow */
40
- .fg-0 { flex-grow: 0; } /* Default */
41
- .fg-1 { flex-grow: 1; }
42
-
43
-
44
- /* Flex shrink */
45
- .fs-0 { flex-shrink: 0; }
46
- .fs-1 { flex-shrink: 1; } /* Default */
47
-
48
-
49
- /* Flex basis */
50
- .fb-a { flex-basis: auto; } /* Default */
51
- .fb-0 { flex-basis: 0; }
52
-
53
-
54
- /* Align self */
55
- .as-a { align-self: auto; } /* Default */
56
- .as-fs { align-self: flex-start; }
57
- .as-c { align-self: center; }
58
- .as-fe { align-self: flex-end; }
59
- .as-s { align-self: stretch; }
60
- .as-b { align-self: baseline }
61
-
62
-
63
- .noselect {
64
- -webkit-touch-callout: none; /* iOS Safari */
65
- -webkit-user-select: none; /* Safari */
66
- -khtml-user-select: none; /* Konqueror HTML */
67
- -moz-user-select: none; /* Old versions of Firefox */
68
- -ms-user-select: none; /* Internet Explorer/Edge */
69
- user-select: none; /* Non-prefixed version, currently
70
- supported by Chrome, Edge, Opera and Firefox */
71
- }
72
-
73
- .hidden {display: none !important;}
74
-
75
-
76
-
77
- .w-10 { width: 10% }
78
- .w-25 { width: 25% }
79
- .w-50 { width: 50% }
80
- .w-75 { width: 75% }
81
- .w-100 { width: 100% }
82
- }
@@ -1,10 +0,0 @@
1
- $xmonkey-wrapper: "__xmwr";
2
- $xmonkey-container: "xmwr_c";
3
- $xmonkey-header: "xmwr-h";
4
- $xmonkey-body: "xmwr-b";
5
-
6
-
7
- $font-family: Verdana;
8
- $font: $font-family;
9
-
10
- $border-radius: 7px;
@@ -1,89 +0,0 @@
1
- @use "variables" as vars;
2
- @use "colors";
3
-
4
- ##{vars.$xmonkey-wrapper} {
5
- min-width: 200px;
6
- width: 200px;
7
- position: absolute;
8
- top: 10px;
9
- left: 10px;
10
- background-color: rgba(colors.$bg, 0.99);
11
- border-radius: vars.$border-radius;
12
- z-index: 999999;
13
- overflow: hidden;
14
-
15
- font-family: vars.$font-family;
16
- font-size: 12px;
17
- * {
18
- box-sizing: initial !important;
19
- font-size: 12px;
20
- font-family: vars.$font-family;
21
- color: colors.$white;
22
- button {
23
- color: colors.$black;
24
- }
25
- }
26
- pre {
27
- overflow: auto;
28
- }
29
-
30
- input,
31
- select,
32
- option,
33
- textarea {
34
- color: colors.$bg;
35
- background-color: colors.$white !important;
36
- }
37
-
38
- input[type="checkbox"] {
39
- margin-left: 2px;
40
- margin-right: 2px;
41
- }
42
-
43
- transition:
44
- height 100ms ease-in-out,
45
- width 100ms ease-in-out,
46
- min-width 100ms ease-in-out,
47
- min-height 100ms ease-in-out,
48
- max-height 100ms ease-in-out,
49
- max-width 100ms ease-in-out;
50
-
51
- &:has(.minim) {
52
- min-height: 15px !important;
53
- min-width: 15px !important;
54
- width: 15px !important;
55
- height: 15px !important;
56
- overflow: hidden !important;
57
- }
58
-
59
- .#{vars.$xmonkey-container} {
60
- max-height: 1000px;
61
- &:has(.#{vars.$xmonkey-header}) {
62
- margin-top: 0;
63
- }
64
- }
65
-
66
- .#{vars.$xmonkey-body} {
67
- padding: 3px;
68
- }
69
-
70
- .#{vars.$xmonkey-header} {
71
- height: 15px;
72
- line-height: 15px !important;
73
- background-color: colors.$primary;
74
- width: 100%;
75
- // border-top-left-radius: vars.$border-radius;
76
- // border-top-right-radius: vars.$border-radius;
77
- .xmwr-x {
78
- font-family: monospace !important;
79
- cursor: pointer;
80
- position: absolute;
81
- right: 0px;
82
- top: 0px;
83
- font-weight: bold;
84
- background-color: colors.$black;
85
- padding: 0 5px;
86
- height: 15px;
87
- }
88
- }
89
- }
package/dist/types.d.ts DELETED
@@ -1,31 +0,0 @@
1
- export type ScriptInfo = {
2
- "@name": string;
3
- "@namespace": string;
4
- "@match": string | string[];
5
- "@version": string;
6
- "@author": string;
7
- "@description": string;
8
- "@grant"?: string[];
9
- [k: string]: unknown;
10
- };
11
- export type NonFunctionPropertyNames<T> = {
12
- [K in keyof T]: T[K] extends Function ? never : K;
13
- }[keyof T];
14
- export type NonFunctionProperties<T> = Pick<T, NonFunctionPropertyNames<T>>;
15
- export type FunctionPropertyNames<T> = {
16
- [K in keyof T]: T[K] extends Function ? K : never;
17
- }[keyof T];
18
- export type ClassConstructor<T> = {
19
- new (..._: any[]): T;
20
- };
21
- export type Self<T> = ClassConstructor<T>;
22
- export type AnyObject = {
23
- [key: string]: any;
24
- };
25
- export type AnyType = string | number | boolean | AnyObject;
26
- export type WithRequired<T, K extends keyof T> = T & {
27
- [P in K]-?: T[P];
28
- };
29
- export type Complete<T> = {
30
- [P in keyof Required<T>]: Pick<T, P> extends Required<Pick<T, P>> ? T[P] : T[P] | undefined;
31
- };
package/dist/types.js DELETED
@@ -1 +0,0 @@
1
- export {};
@@ -1,2 +0,0 @@
1
- export * from "./ui-script.decorator.js";
2
- export * from "./ui-script.interface.js";
@@ -1,2 +0,0 @@
1
- export * from "./ui-script.decorator.js";
2
- export * from "./ui-script.interface.js";
@@ -1,3 +0,0 @@
1
- import { IUiScript } from "./ui-script.interface.js";
2
- import { ClassConstructor, ScriptInfo } from "../types.js";
3
- export declare function UiScript<T extends IUiScript>(_metadata: ScriptInfo): (_target: ClassConstructor<T>) => void;
@@ -1,19 +0,0 @@
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
- render(h(XMonkeyWindowComponent, { title: scriptObject.title ?? "" }, scriptObject.render()), rootComponent);
8
- };
9
- }
10
- function xMonkeyWrapperElement() {
11
- const ID = "__xmwr";
12
- let div = document.getElementById(ID);
13
- if (div)
14
- return div;
15
- div = document.createElement("div");
16
- div.id = ID;
17
- document.body.appendChild(div);
18
- return div;
19
- }
@@ -1,5 +0,0 @@
1
- import { ComponentChild } from "preact";
2
- export interface IUiScript {
3
- title: string;
4
- render: () => Promise<ComponentChild> | ComponentChild;
5
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export declare function getStorageKeyIdFromString(data: string): string;
@@ -1,3 +0,0 @@
1
- export function getStorageKeyIdFromString(data) {
2
- return "xmonkey-" + data.replace(/[^a-zA-Z0-9.-]/g, "").toLowerCase();
3
- }
@@ -1,2 +0,0 @@
1
- export declare const isNullOrUndefined: (value: any) => value is null | undefined;
2
- export declare function isNullOrEmptyOrUndefined(value?: any | null): value is null | undefined;
@@ -1,4 +0,0 @@
1
- export const isNullOrUndefined = (value) => value === null || value === undefined;
2
- export function isNullOrEmptyOrUndefined(value) {
3
- return isNullOrUndefined(value) || value === "" || value.toString().trim() === "";
4
- }
@@ -1 +0,0 @@
1
- export declare function sleep(ms: number): Promise<void>;
@@ -1,3 +0,0 @@
1
- export function sleep(ms) {
2
- return new Promise((resolve) => setTimeout(resolve, ms));
3
- }
@@ -1,7 +0,0 @@
1
- import { ComponentChildren } from "preact";
2
- type VProps = {
3
- title: string;
4
- children?: ComponentChildren;
5
- };
6
- export declare function XMonkeyWindowComponent(props: VProps): import("preact").JSX.Element;
7
- export {};
@@ -1,16 +0,0 @@
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
- }