@lukaskj/xmonkey 2.2.10 → 2.2.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/{src/build.js → build.js} +1 -1
- package/dist/esm/console-script/console-script.decorator.js +10 -0
- package/dist/esm/console-script/console-script.interface.js +4 -0
- package/dist/esm/{src/console-script → console-script}/index.js +1 -1
- package/dist/esm/esbuild/build.js +29 -0
- package/dist/esm/esbuild/plugins/xmonkey-output-stats-plugin.js +18 -0
- package/dist/esm/esbuild/plugins/xmonkey-strip-metadata-plugin.js +77 -0
- package/dist/esm/esbuild/plugins/xmonkey-styles-plugin.js +36 -0
- package/dist/esm/hooks/index.js +30 -0
- package/dist/esm/{src/index.js → index.js} +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/{src/types.js → types.js} +1 -1
- package/dist/esm/{src/ui-script → ui-script}/index.js +1 -1
- package/dist/esm/ui-script/ui-script.decorator.js +25 -0
- package/dist/esm/{src/ui-script → ui-script}/ui-script.interface.js +1 -1
- package/dist/esm/utils/get-storage-key-id-from-string.js +4 -0
- package/dist/esm/utils/is-null-or-undefined.js +5 -0
- package/dist/esm/utils/sleep.js +4 -0
- package/dist/esm/x-monkey-window-component.js +17 -0
- package/package.json +1 -1
- package/dist/esm/examples/whatsapp-theme/index.d.ts +0 -7
- package/dist/esm/examples/whatsapp-theme/index.js +0 -58
- package/dist/esm/examples/youtube-adblocker.d.ts +0 -4
- package/dist/esm/examples/youtube-adblocker.js +0 -52
- package/dist/esm/src/console-script/console-script.decorator.js +0 -10
- package/dist/esm/src/console-script/console-script.interface.js +0 -4
- package/dist/esm/src/esbuild/build.js +0 -29
- package/dist/esm/src/esbuild/plugins/xmonkey-output-stats-plugin.js +0 -18
- package/dist/esm/src/esbuild/plugins/xmonkey-strip-metadata-plugin.js +0 -77
- package/dist/esm/src/esbuild/plugins/xmonkey-styles-plugin.js +0 -36
- package/dist/esm/src/hooks/index.js +0 -30
- package/dist/esm/src/ui-script/ui-script.decorator.js +0 -25
- package/dist/esm/src/utils/get-storage-key-id-from-string.js +0 -4
- package/dist/esm/src/utils/is-null-or-undefined.js +0 -5
- package/dist/esm/src/utils/sleep.js +0 -4
- package/dist/esm/src/x-monkey-window-component.js +0 -17
- /package/dist/esm/{src/build.d.ts → build.d.ts} +0 -0
- /package/dist/esm/{src/console-script → console-script}/console-script.decorator.d.ts +0 -0
- /package/dist/esm/{src/console-script → console-script}/console-script.interface.d.ts +0 -0
- /package/dist/esm/{src/console-script → console-script}/index.d.ts +0 -0
- /package/dist/esm/{src/esbuild → esbuild}/build.d.ts +0 -0
- /package/dist/esm/{src/esbuild → esbuild}/plugins/xmonkey-output-stats-plugin.d.ts +0 -0
- /package/dist/esm/{src/esbuild → esbuild}/plugins/xmonkey-strip-metadata-plugin.d.ts +0 -0
- /package/dist/esm/{src/esbuild → esbuild}/plugins/xmonkey-styles-plugin.d.ts +0 -0
- /package/dist/esm/{src/hooks → hooks}/index.d.ts +0 -0
- /package/dist/esm/{src/index.d.ts → index.d.ts} +0 -0
- /package/dist/esm/{src/types.d.ts → types.d.ts} +0 -0
- /package/dist/esm/{src/ui-script → ui-script}/index.d.ts +0 -0
- /package/dist/esm/{src/ui-script → ui-script}/ui-script.decorator.d.ts +0 -0
- /package/dist/esm/{src/ui-script → ui-script}/ui-script.interface.d.ts +0 -0
- /package/dist/esm/{src/utils → utils}/get-storage-key-id-from-string.d.ts +0 -0
- /package/dist/esm/{src/utils → utils}/is-null-or-undefined.d.ts +0 -0
- /package/dist/esm/{src/utils → utils}/sleep.d.ts +0 -0
- /package/dist/esm/{src/x-monkey-window-component.d.ts → x-monkey-window-component.d.ts} +0 -0
|
@@ -7,4 +7,4 @@ if (!entryFile) {
|
|
|
7
7
|
process.exit(1);
|
|
8
8
|
}
|
|
9
9
|
buildXmonkeyScript(entryFile);
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXhELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFbEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyx5RUFBeUUsQ0FBQyxDQUFDO0lBQ3pGLE9BQU8sQ0FBQyxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztJQUM1RCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUM7QUFFRCxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyJ9
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc29sZS1zY3JpcHQuZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnNvbGUtc2NyaXB0L2NvbnNvbGUtc2NyaXB0LmRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLFVBQVUsYUFBYSxDQUEyQixTQUFxQjtJQUMzRSxPQUFPLFVBQVUsTUFBMkI7UUFDMUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBRWxDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN6QixDQUFDLENBQUM7QUFDSixDQUFDIn0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
class CScript {
|
|
2
|
+
}
|
|
3
|
+
export {};
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc29sZS1zY3JpcHQuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnNvbGUtc2NyaXB0L2NvbnNvbGUtc2NyaXB0LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU87Q0FBRyJ9
|
|
@@ -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,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uc29sZS1zY3JpcHQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLCtCQUErQixDQUFDIn0=
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZXNidWlsZC9idWlsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUNuQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDeEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFcEYsTUFBTSxDQUFDLEtBQUssVUFBVSxrQkFBa0IsQ0FBQyxjQUFzQjtJQUM3RCxNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUM7SUFDakMsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUU5QyxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDbEIsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDO1FBQ3hCLE9BQU8sRUFBRSxlQUFlO1FBQ3hCLE1BQU0sRUFBRSxJQUFJO1FBQ1osV0FBVyxFQUFFLElBQUk7UUFDakIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7UUFDeEMsUUFBUSxFQUFFLFNBQVM7UUFDbkIsTUFBTSxFQUFFLE1BQU07UUFDZCxTQUFTLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSztRQUMvQyxTQUFTLEVBQUUsSUFBSTtRQUNmLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLFFBQVEsRUFBRSxJQUFJO1FBQ2QsT0FBTyxFQUFFO1lBQ1AsMEJBQTBCLEVBQUU7WUFDNUIsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxDQUFDO1lBQ25DLG1CQUFtQixFQUFFO1lBQ3JCLHdCQUF3QixFQUFFO1NBQzNCO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyJ9
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieG1vbmtleS1vdXRwdXQtc3RhdHMtcGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VzYnVpbGQvcGx1Z2lucy94bW9ua2V5LW91dHB1dC1zdGF0cy1wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLHdCQUF3QjtJQUN0QyxPQUFPO1FBQ0wsSUFBSSxFQUFFLDZCQUE2QjtRQUNuQyxLQUFLLENBQUMsS0FBSztZQUNULEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUUzQixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLE9BQWMsQ0FBQztnQkFDaEQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDN0YsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUMvQyxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ2hELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsSUFBWTtJQUNqQyxNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdEUsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkYsQ0FBQyJ9
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieG1vbmtleS1zdHJpcC1tZXRhZGF0YS1wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZXNidWlsZC9wbHVnaW5zL3htb25rZXktc3RyaXAtbWV0YWRhdGEtcGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixNQUFNLFVBQVUsMEJBQTBCO0lBQ3hDLE9BQU87UUFDTCxJQUFJLEVBQUUsK0JBQStCO1FBQ3JDLEtBQUssQ0FBQyxLQUFLO1lBQ1QsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQzFCLElBQUksZUFBZSxHQUFHLEVBQUUsQ0FBQztZQUV6QixLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO2dCQUN0RSxJQUFJLGFBQWE7b0JBQUUsT0FBTztnQkFDMUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDakQsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLDZCQUE2QixDQUFDLEVBQUUsS0FBSyxDQUFDO2dCQUUvRSxJQUFJLENBQUMsbUJBQW1CLElBQUksbUJBQW1CLEdBQUcsQ0FBQztvQkFBRSxPQUFPO2dCQUM1RCxhQUFhLEdBQUcsSUFBSSxDQUFDO2dCQUVyQixNQUFNLEtBQUssR0FBRyxxREFBcUQsQ0FBQztnQkFDcEUsTUFBTSx3QkFBd0IsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNyRCxJQUFJLHdCQUF3QixFQUFFLENBQUM7b0JBQzdCLGVBQWUsR0FBRyx3QkFBd0IsQ0FBQyxF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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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieG1vbmtleS1zdHlsZXMtcGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VzYnVpbGQvcGx1Z2lucy94bW9ua2V5LXN0eWxlcy1wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbkQsTUFBTSxVQUFVLG1CQUFtQjtJQUNqQyxPQUFPO1FBQ0wsSUFBSSxFQUFFLHVCQUF1QjtRQUM3QixLQUFLLENBQUMsS0FBSztZQUNULEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDO29CQUNwRSxPQUFPLENBQUMsS0FBSyxDQUFDLHdGQUF3RixDQUFDLENBQUM7b0JBQ3hHLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNyQixPQUFPLENBQUMsSUFBSSxDQUFDLHFEQUFxRCxDQUFDLENBQUM7b0JBQ3BFLE9BQU87Z0JBQ1QsQ0FBQztnQkFDRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFDeEMsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO2dCQUNyQixLQUFLLE1BQU0sSUFBSSxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUMzQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUNsQyxJQUFJLEdBQUcsS0FBSyxLQUFLLEVBQUUsQ0FBQzt3QkFDbEIsV0FBVyxHQUFHLElBQUksQ0FBQzt3QkFDbkIsTUFBTTtvQkFDUixDQUFDO2dCQUNILENBQUM7Z0JBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDeEIsT0FBTyxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO29CQUMvQyxPQUFPO2dCQUNULENBQUM7Z0JBRUQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUM7Z0JBRS9DLE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBTSxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDN0QsTUFBTSwyQkFBMkIsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN0RixVQUFVLENBQUMsU0FBUyxFQUFFLHNCQUFzQiwyQkFBMkIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDM0YsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMifQ==
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWhFLE1BQU0sVUFBVSxlQUFlLENBQUMsR0FBVyxFQUFFLFlBQXFCO0lBQ2hFLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsR0FBVyxFQUFFLFlBQXFCO0lBQ2xFLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQzlELENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxHQUFXLEVBQUUsWUFBcUIsRUFBRSxhQUFzQjtJQUM1RSxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDdEMsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QyxJQUFJLFNBQVMsSUFBSSxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BELElBQUksT0FBTyxZQUFZLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDdkMsT0FBTyxZQUFZLEVBQUUsQ0FBQztRQUN4QixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sWUFBWSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDYixJQUFJLEtBQUssS0FBSyxTQUFTO1lBQUUsT0FBTyxhQUFhLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlELGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFFaEMsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtRQUM5QixRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRVAsT0FBTyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbkMsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
|