@lukaskj/xmonkey 2.0.2 → 2.0.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.
package/dist/build.js CHANGED
@@ -1,8 +1,182 @@
1
- import { buildXmonkeyScript } from "./esbuild/build.js";
2
- const entryFile = process.argv[2];
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 metadataObject = JSON.parse(
88
+ scriptMetadataFunctionCallString.substring(startJsonMetadataIndex, endJsonMetadataIndex + 1).replaceAll("\n", "").replaceAll(",}", "}")
89
+ );
90
+ const tag = "// ==UserScript==";
91
+ const tagEnd = "// ==/UserScript==";
92
+ const headersArr = [];
93
+ const spaces = 13;
94
+ for (const key in metadataObject) {
95
+ if (Array.isArray(metadataObject[key])) {
96
+ metadataObject[key].forEach((item) => {
97
+ headersArr.push(`${key.padEnd(spaces, " ")}${item}`);
98
+ });
99
+ } else {
100
+ headersArr.push(`${key.padEnd(spaces, " ")}${metadataObject[key]}`);
101
+ }
102
+ }
103
+ const headers = headersArr.map((h) => `// ${h}`).join("\n");
104
+ return `${tag}
105
+ ${headers}
106
+ ${tagEnd}`;
107
+ }
108
+
109
+ // src/esbuild/plugins/xmonkey-styles-plugin.ts
110
+ var import_promises2 = require("fs/promises");
111
+ function xMonkeyStylesPlugin() {
112
+ return {
113
+ name: "xmonkey-styles-plugin",
114
+ setup(build2) {
115
+ build2.onEnd(async (result) => {
116
+ if (!build2.initialOptions?.outfile || !build2.initialOptions?.bundle) {
117
+ console.error("Wrong build configuration. Options 'bundle' must be enabled and 'outfile' must be set.");
118
+ return;
119
+ }
120
+ if (!result.metafile) {
121
+ console.warn("ESBuild metafile not enabled. Style bundle skipped.");
122
+ return;
123
+ }
124
+ const outputs = result.metafile.outputs;
125
+ let cssFilePath = "";
126
+ for (const file in outputs) {
127
+ const ext = file.split(".").pop();
128
+ if (ext === "css") {
129
+ cssFilePath = file;
130
+ break;
131
+ }
132
+ }
133
+ if (!cssFilePath.length) {
134
+ console.warn("CSS output not generated. Style bundle skipped.");
135
+ return;
136
+ }
137
+ const jsOutFile = build2.initialOptions.outfile;
138
+ const cssContents = (await (0, import_promises2.readFile)(cssFilePath)).toString();
139
+ (0, import_promises2.appendFile)(jsOutFile, `
140
+ GM.addStyle("\\
141
+ ${cssContents.trim()}\\
142
+ ");`);
143
+ });
144
+ }
145
+ };
146
+ }
147
+
148
+ // src/esbuild/build.ts
149
+ async function buildXmonkeyScript(scriptBasePath) {
150
+ const entryFile2 = scriptBasePath;
151
+ console.info(`Building file: '${entryFile2}'`);
152
+ await esbuild.build({
153
+ entryPoints: [entryFile2],
154
+ outfile: "dist/index.js",
155
+ bundle: true,
156
+ treeShaking: true,
157
+ minify: process.env.DEBUG ? false : true,
158
+ platform: "browser",
159
+ format: "iife",
160
+ // target: "esnext",
161
+ sourcemap: false,
162
+ keepNames: true,
163
+ logLevel: "info",
164
+ metafile: true,
165
+ plugins: [
166
+ xMonkeyStripMetadataPlugin(),
167
+ // xMonkeyDevPlugin(),
168
+ (0, import_esbuild_sass_plugin.sassPlugin)({ style: "compressed" }),
169
+ xMonkeyStylesPlugin()
170
+ ]
171
+ });
172
+ }
173
+
174
+ // src/build.ts
175
+ var entryFile = process.argv[2];
3
176
  if (!entryFile) {
4
- console.error(`No entryfile specified. Try adding the script to build in the argument.`);
5
- console.error(`Example: npm run build src/example-script.ts`);
6
- process.exit(1);
177
+ console.error(`No entryfile specified. Try adding the script to build in the argument.`);
178
+ console.error(`Example: npm run build src/example-script.ts`);
179
+ process.exit(1);
7
180
  }
8
181
  buildXmonkeyScript(entryFile);
182
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2VzYnVpbGQvYnVpbGQudHMiLCAiLi4vc3JjL2VzYnVpbGQvcGx1Z2lucy94bW9ua2V5LXN0cmlwLW1ldGFkYXRhLXBsdWdpbi50cyIsICIuLi9zcmMvZXNidWlsZC9wbHVnaW5zL3htb25rZXktc3R5bGVzLXBsdWdpbi50cyIsICIuLi9zcmMvYnVpbGQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCAqIGFzIGVzYnVpbGQgZnJvbSBcImVzYnVpbGRcIjtcbmltcG9ydCB7IHNhc3NQbHVnaW4gfSBmcm9tIFwiZXNidWlsZC1zYXNzLXBsdWdpblwiO1xuaW1wb3J0IHsgeE1vbmtleVN0cmlwTWV0YWRhdGFQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3htb25rZXktc3RyaXAtbWV0YWRhdGEtcGx1Z2luLmpzXCI7XG5pbXBvcnQgeyB4TW9ua2V5U3R5bGVzUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy94bW9ua2V5LXN0eWxlcy1wbHVnaW4uanNcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkWG1vbmtleVNjcmlwdChzY3JpcHRCYXNlUGF0aDogc3RyaW5nKSB7XG4gIC8vIGxldCBlbnRyeUZpbGUgPSBwcm9jZXNzLmFyZ3ZbMl07XG4gIGNvbnN0IGVudHJ5RmlsZSA9IHNjcmlwdEJhc2VQYXRoO1xuICBjb25zb2xlLmluZm8oYEJ1aWxkaW5nIGZpbGU6ICcke2VudHJ5RmlsZX0nYCk7XG5cbiAgYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgZW50cnlQb2ludHM6IFtlbnRyeUZpbGVdLFxuICAgIG91dGZpbGU6IFwiZGlzdC9pbmRleC5qc1wiLFxuICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICB0cmVlU2hha2luZzogdHJ1ZSxcbiAgICBtaW5pZnk6IHByb2Nlc3MuZW52LkRFQlVHID8gZmFsc2UgOiB0cnVlLFxuICAgIHBsYXRmb3JtOiBcImJyb3dzZXJcIixcbiAgICBmb3JtYXQ6IFwiaWlmZVwiLFxuICAgIC8vIHRhcmdldDogXCJlc25leHRcIixcbiAgICBzb3VyY2VtYXA6IGZhbHNlLFxuICAgIGtlZXBOYW1lczogdHJ1ZSxcbiAgICBsb2dMZXZlbDogXCJpbmZvXCIsXG4gICAgbWV0YWZpbGU6IHRydWUsXG4gICAgcGx1Z2luczogW1xuICAgICAgeE1vbmtleVN0cmlwTWV0YWRhdGFQbHVnaW4oKSxcbiAgICAgIC8vIHhNb25rZXlEZXZQbHVnaW4oKSxcbiAgICAgIHNhc3NQbHVnaW4oeyBzdHlsZTogXCJjb21wcmVzc2VkXCIgfSksXG4gICAgICB4TW9ua2V5U3R5bGVzUGx1Z2luKCksXG4gICAgXSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcImVzYnVpbGRcIjtcbmltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tIFwiZnMvcHJvbWlzZXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHhNb25rZXlTdHJpcE1ldGFkYXRhUGx1Z2luKCk6IFBsdWdpbiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogXCJ4bW9ua2V5LXN0cmlwLW1ldGFkYXRhLXBsdWdpblwiLFxuICAgIHNldHVwKGJ1aWxkKSB7XG4gICAgICBsZXQgZm91bmRNZXRhZGF0YSA9IGZhbHNlO1xuICAgICAgbGV0IG1ldGFkYXRhQ29udGVudCA9IFwiXCI7XG5cbiAgICAgIGJ1aWxkLm9uTG9hZCh7IGZpbHRlcjogLy4odHN8dHN4KS8sIG5hbWVzcGFjZTogXCJmaWxlXCIgfSwgYXN5bmMgKGFyZ3MpID0+IHtcbiAgICAgICAgaWYgKGZvdW5kTWV0YWRhdGEpIHJldHVybjtcbiAgICAgICAgY29uc3Qgc291cmNlID0gYXdhaXQgcmVhZEZpbGUoYXJncy5wYXRoLCBcInV0ZjhcIik7XG4gICAgICAgIGNvbnN0IHNjcmlwdE1ldGFkYXRhSW5kZXggPSBzb3VyY2UubWF0Y2goL0AoQ29uc29sZVNjcmlwdHxVaVNjcmlwdClcXCgvKT8uaW5kZXg7XG5cbiAgICAgICAgaWYgKCFzY3JpcHRNZXRhZGF0YUluZGV4IHx8IHNjcmlwdE1ldGFkYXRhSW5kZXggPCAwKSByZXR1cm47XG4gICAgICAgIGZvdW5kTWV0YWRhdGEgPSB0cnVlO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1lc2NhcGVcbiAgICAgICAgY29uc3QgcmVnZXggPSAvXFxAKENvbnNvbGVTY3JpcHR8VWlTY3JpcHQpXFwoW15cXCldKlxcKShcXC5bXlxcKV0qXFwpKT8vZ2k7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhRGVjb3JhdG9yTWF0Y2hlciA9IHNvdXJjZS5tYXRjaChyZWdleCk7XG4gICAgICAgIGlmIChtZXRhZGF0YURlY29yYXRvck1hdGNoZXIpIHtcbiAgICAgICAgICBtZXRhZGF0YUNvbnRlbnQgPSBtZXRhZGF0YURlY29yYXRvck1hdGNoZXIuYXQoMCkgYXMgc3RyaW5nO1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwibWV0YWRhdGFDb250ZW50XCIsIG1ldGFkYXRhQ29udGVudCk7XG4gICAgICAgICAgY29uc3Qgc3RhcnRKc29uTWV0YWRhdGFJbmRleCA9IG1ldGFkYXRhQ29udGVudC5pbmRleE9mKFwie1wiKTtcbiAgICAgICAgICBjb25zdCBlbmRKc29uTWV0YWRhdGFJbmRleCA9IG1ldGFkYXRhQ29udGVudC5sYXN0SW5kZXhPZihcIn1cIik7XG4gICAgICAgICAgY29uc3QgbWV0YWRhdGFKc29uU3RyaW5nID0gbWV0YWRhdGFDb250ZW50LnN1YnN0cmluZyhzdGFydEpzb25NZXRhZGF0YUluZGV4LCBlbmRKc29uTWV0YWRhdGFJbmRleCArIDEpO1xuICAgICAgICAgIGNvbnN0IGNvbnRlbnRzID0gc291cmNlLnJlcGxhY2UobWV0YWRhdGFKc29uU3RyaW5nLCBcIlwiKTsgLy8gcmVtb3ZlIHRoZSBqc29uIG1ldGFkYXRhIGZyb20gc291cmNlXG4gICAgICAgICAgLy8gY29uc3QgY29udGVudHMgPSBzb3VyY2UucmVwbGFjZShyZWdleCwgXCJcIik7IC8vIHJlbW92ZSBAQ29uc29sZVNjcmlwdCh7Li4uLn0pIGZyb20gc291cmNlXG5cbiAgICAgICAgICAvLyBjb25zdCBjb250ZW50cyA9IHNvdXJjZS5yZXBsYWNlKHJlZ2V4LCBcIlwiKTtcbiAgICAgICAgICBjb25zdCBleHRlbnNpb24gPSBhcmdzLnBhdGguc3BsaXQoXCIuXCIpLnBvcCgpO1xuXG4gICAgICAgICAgY29uc3QgbG9hZGVyID0gZXh0ZW5zaW9uID09PSBcInRzeFwiID8gXCJ0c3hcIiA6IFwidHNcIjtcblxuICAgICAgICAgIHJldHVybiB7IGNvbnRlbnRzLCBsb2FkZXIgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH0pO1xuXG4gICAgICBidWlsZC5vbkVuZChhc3luYyAocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmICghYnVpbGQuaW5pdGlhbE9wdGlvbnM/Lm91dGZpbGUgfHwgIWJ1aWxkLmluaXRpYWxPcHRpb25zPy5idW5kbGUpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiV3JvbmcgYnVpbGQgY29uZmlndXJhdGlvbi4gT3B0aW9ucyAnYnVuZGxlJyBtdXN0IGJlIGVuYWJsZWQgYW5kICdvdXRmaWxlJyBtdXN0IGJlIHNldC5cIik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFmb3VuZE1ldGFkYXRhKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIlNjcmlwdE1ldGFkYXRhIGRlY29yYXRvciBub3QgZm91bmQuXCIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXN1bHQuZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBidWlsZGluZy4gU2NyaXB0IE1ldGFkYXRhIGNhbm5vdCBiZSBhZGRlZCB0byBmaW5hbCBzY3JpcHQuXCIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVDb250ZW50cyA9IGF3YWl0IHJlYWRGaWxlKGJ1aWxkLmluaXRpYWxPcHRpb25zLm91dGZpbGUpO1xuICAgICAgICBjb25zdCBzY3JpcHRNZXRhZGF0YVN0cmluZyA9IGdldFNjcmlwdE1ldGFkYXRhU3RyaW5nKG1ldGFkYXRhQ29udGVudCk7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZShidWlsZC5pbml0aWFsT3B0aW9ucy5vdXRmaWxlLCBgJHtzY3JpcHRNZXRhZGF0YVN0cmluZ31cXG5cXG4ke2ZpbGVDb250ZW50cy50b1N0cmluZygpfWApO1xuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0U2NyaXB0TWV0YWRhdGFTdHJpbmcoc2NyaXB0TWV0YWRhdGFGdW5jdGlvbkNhbGxTdHJpbmc6IHN0cmluZykge1xuICBzY3JpcHRNZXRhZGF0YUZ1bmN0aW9uQ2FsbFN0cmluZyA9IHNjcmlwdE1ldGFkYXRhRnVuY3Rpb25DYWxsU3RyaW5nLnRyaW0oKTtcbiAgY29uc3Qgc3RhcnRKc29uTWV0YWRhdGFJbmRleCA9IHNjcmlwdE1ldGFkYXRhRnVuY3Rpb25DYWxsU3RyaW5nLmluZGV4T2YoXCJ7XCIpO1xuICBjb25zdCBlbmRKc29uTWV0YWRhdGFJbmRleCA9IHNjcmlwdE1ldGFkYXRhRnVuY3Rpb25DYWxsU3RyaW5nLmxhc3RJbmRleE9mKFwifVwiKTtcbiAgaWYgKHN0YXJ0SnNvbk1ldGFkYXRhSW5kZXggPCAwIHx8IGVuZEpzb25NZXRhZGF0YUluZGV4IDwgMCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgY29uc3QgbWV0YWRhdGFPYmplY3QgPSBKU09OLnBhcnNlKFxuICAgIHNjcmlwdE1ldGFkYXRhRnVuY3Rpb25DYWxsU3RyaW5nXG4gICAgICAuc3Vic3RyaW5nKHN0YXJ0SnNvbk1ldGFkYXRhSW5kZXgsIGVuZEpzb25NZXRhZGF0YUluZGV4ICsgMSlcbiAgICAgIC5yZXBsYWNlQWxsKFwiXFxuXCIsIFwiXCIpXG4gICAgICAucmVwbGFjZUFsbChcIix9XCIsIFwifVwiKSxcbiAgKTtcblxuICBjb25zdCB0YWcgPSBcIi8vID09VXNlclNjcmlwdD09XCI7XG4gIGNvbnN0IHRhZ0VuZCA9IFwiLy8gPT0vVXNlclNjcmlwdD09XCI7XG4gIGNvbnN0IGhlYWRlcnNBcnIgPSBbXTtcblxuICBjb25zdCBzcGFjZXMgPSAxMztcbiAgZm9yIChjb25zdCBrZXkgaW4gbWV0YWRhdGFPYmplY3QpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShtZXRhZGF0YU9iamVjdFtrZXldKSkge1xuICAgICAgbWV0YWRhdGFPYmplY3Rba2V5XS5mb3JFYWNoKChpdGVtOiB1bmtub3duKSA9PiB7XG4gICAgICAgIGhlYWRlcnNBcnIucHVzaChgJHtrZXkucGFkRW5kKHNwYWNlcywgXCIgXCIpfSR7aXRlbX1gKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBoZWFkZXJzQXJyLnB1c2goYCR7a2V5LnBhZEVuZChzcGFjZXMsIFwiIFwiKX0ke21ldGFkYXRhT2JqZWN0W2tleV19YCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGVhZGVycyA9IGhlYWRlcnNBcnIubWFwKChoKSA9PiBgLy8gJHtofWApLmpvaW4oXCJcXG5cIik7XG4gIHJldHVybiBgJHt0YWd9XFxuJHtoZWFkZXJzfVxcbiR7dGFnRW5kfWA7XG59XG4iLCAiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcImVzYnVpbGRcIjtcbmltcG9ydCB7IGFwcGVuZEZpbGUsIHJlYWRGaWxlIH0gZnJvbSBcImZzL3Byb21pc2VzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB4TW9ua2V5U3R5bGVzUGx1Z2luKCk6IFBsdWdpbiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogXCJ4bW9ua2V5LXN0eWxlcy1wbHVnaW5cIixcbiAgICBzZXR1cChidWlsZCkge1xuICAgICAgYnVpbGQub25FbmQoYXN5bmMgKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAoIWJ1aWxkLmluaXRpYWxPcHRpb25zPy5vdXRmaWxlIHx8ICFidWlsZC5pbml0aWFsT3B0aW9ucz8uYnVuZGxlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIldyb25nIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIE9wdGlvbnMgJ2J1bmRsZScgbXVzdCBiZSBlbmFibGVkIGFuZCAnb3V0ZmlsZScgbXVzdCBiZSBzZXQuXCIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcmVzdWx0Lm1ldGFmaWxlKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFwiRVNCdWlsZCBtZXRhZmlsZSBub3QgZW5hYmxlZC4gU3R5bGUgYnVuZGxlIHNraXBwZWQuXCIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvdXRwdXRzID0gcmVzdWx0Lm1ldGFmaWxlLm91dHB1dHM7XG4gICAgICAgIGxldCBjc3NGaWxlUGF0aCA9IFwiXCI7XG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBpbiBvdXRwdXRzKSB7XG4gICAgICAgICAgY29uc3QgZXh0ID0gZmlsZS5zcGxpdChcIi5cIikucG9wKCk7XG4gICAgICAgICAgaWYgKGV4dCA9PT0gXCJjc3NcIikge1xuICAgICAgICAgICAgY3NzRmlsZVBhdGggPSBmaWxlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjc3NGaWxlUGF0aC5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCJDU1Mgb3V0cHV0IG5vdCBnZW5lcmF0ZWQuIFN0eWxlIGJ1bmRsZSBza2lwcGVkLlwiKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBqc091dEZpbGUgPSBidWlsZC5pbml0aWFsT3B0aW9ucy5vdXRmaWxlO1xuXG4gICAgICAgIGNvbnN0IGNzc0NvbnRlbnRzID0gKGF3YWl0IHJlYWRGaWxlKGNzc0ZpbGVQYXRoKSkudG9TdHJpbmcoKTtcbiAgICAgICAgYXBwZW5kRmlsZShqc091dEZpbGUsIGBcXG5HTS5hZGRTdHlsZShcIlxcXFxcXG4ke2Nzc0NvbnRlbnRzLnRyaW0oKX1cXFxcXFxuXCIpO2ApO1xuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyBidWlsZFhtb25rZXlTY3JpcHQgfSBmcm9tIFwiLi9lc2J1aWxkL2J1aWxkLmpzXCI7XG5cbmNvbnN0IGVudHJ5RmlsZSA9IHByb2Nlc3MuYXJndlsyXTtcblxuaWYgKCFlbnRyeUZpbGUpIHtcbiAgY29uc29sZS5lcnJvcihgTm8gZW50cnlmaWxlIHNwZWNpZmllZC4gVHJ5IGFkZGluZyB0aGUgc2NyaXB0IHRvIGJ1aWxkIGluIHRoZSBhcmd1bWVudC5gKTtcbiAgY29uc29sZS5lcnJvcihgRXhhbXBsZTogbnBtIHJ1biBidWlsZCBzcmMvZXhhbXBsZS1zY3JpcHQudHNgKTtcbiAgcHJvY2Vzcy5leGl0KDEpO1xufVxuXG5idWlsZFhtb25rZXlTY3JpcHQoZW50cnlGaWxlKTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGNBQXlCO0FBQ3pCLGlDQUEyQjs7O0FDQTNCLHNCQUFvQztBQUU3QixTQUFTLDZCQUFxQztBQUNuRCxTQUFPO0FBQUEsSUFDTCxNQUFNO0FBQUEsSUFDTixNQUFNQSxRQUFPO0FBQ1gsVUFBSSxnQkFBZ0I7QUFDcEIsVUFBSSxrQkFBa0I7QUFFdEIsTUFBQUEsT0FBTSxPQUFPLEVBQUUsUUFBUSxhQUFhLFdBQVcsT0FBTyxHQUFHLE9BQU8sU0FBUztBQUN2RSxZQUFJO0FBQWU7QUFDbkIsY0FBTSxTQUFTLFVBQU0sMEJBQVMsS0FBSyxNQUFNLE1BQU07QUFDL0MsY0FBTSxzQkFBc0IsT0FBTyxNQUFNLDZCQUE2QixHQUFHO0FBRXpFLFlBQUksQ0FBQyx1QkFBdUIsc0JBQXNCO0FBQUc7QUFDckQsd0JBQWdCO0FBRWhCLGNBQU0sUUFBUTtBQUNkLGNBQU0sMkJBQTJCLE9BQU8sTUFBTSxLQUFLO0FBQ25ELFlBQUksMEJBQTBCO0FBQzVCLDRCQUFrQix5QkFB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
@@ -1,4 +1,4 @@
1
- import { IConsoleScript } from "../interfaces/console-script.interface.js";
1
+ import { IConsoleScript } from "@lukaskj/xmonkey";
2
2
  export declare class ExampleConsoleScript implements IConsoleScript {
3
3
  execute(): Promise<void>;
4
4
  }
@@ -4,8 +4,8 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
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
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { ConsoleScript } from "../decorators/console-script.decorator.js";
8
7
  import { sleep } from "../utils/sleep.js";
8
+ import { ConsoleScript } from "@lukaskj/xmonkey";
9
9
  let ExampleConsoleScript = class ExampleConsoleScript {
10
10
  async execute() {
11
11
  for (let i = 0; i < 50; i++) {
@@ -1,5 +1,5 @@
1
- import { IUiScript } from "../interfaces/ui-script.interface.js";
2
- import "./example-scss.scss";
1
+ import { IUiScript } from "@lukaskj/xmonkey";
2
+ import "@lukaskj/xmonkey/styles/base.scss";
3
3
  export declare class ExampleUiScript implements IUiScript {
4
4
  title: string;
5
5
  render(): import("preact").JSX.Element;
@@ -5,9 +5,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "preact/jsx-runtime";
8
- import { UiScript } from "../decorators/ui-script.decorator.js";
8
+ import { UiScript } from "@lukaskj/xmonkey";
9
+ import "@lukaskj/xmonkey/styles/base.scss";
9
10
  import { useState } from "preact/hooks";
10
- import "./example-scss.scss";
11
11
  let ExampleUiScript = class ExampleUiScript {
12
12
  title = "Example UI Script";
13
13
  render() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lukaskj/xmonkey",
3
- "version": "2.0.2",
3
+ "version": "2.0.4",
4
4
  "author": "lukaskj",
5
5
  "license": "ISC",
6
6
  "scripts": {
@@ -8,9 +8,10 @@
8
8
  "prebuild": "pnpm run clean",
9
9
  "prepublish": "pnpm run build",
10
10
  "build:old": "node esbuild/build.mjs",
11
- "build": "pnpm build:esm && pnpm copy-styles",
11
+ "build": "pnpm build:esm && pnpm build:bin && pnpm copy-styles",
12
12
  "build:esm": "tsc -p tsconfig.build.json",
13
13
  "build:cjs": "tsc -p tsconfig.build.json --module CommonJS --outDir dist/cjs",
14
+ "build:bin": "esbuild src/build.ts --platform=node --format=cjs --packages=external --bundle --sourcemap=inline --outfile=dist/build.js",
14
15
  "build:prod": "pnpm run lint && pnpm run build",
15
16
  "build:dev": "DEBUG=1 node esbuild/build.mjs",
16
17
  "build:debug": "DEBUG=1 node esbuild/build.mjs",
@@ -69,7 +70,8 @@
69
70
  "*.{js,mjs,ts,tsx,jsx}": "eslint --fix"
70
71
  },
71
72
  "exports": {
72
- ".": "./dist/**/*",
73
+ ".": "./dist/index.js",
74
+ "./styles/*": "./dist/styles/*",
73
75
  "./decorators": "./dist/decorators/*",
74
76
  "./interfaces": "./dist/interfaces/*"
75
77
  },
@@ -83,6 +85,5 @@
83
85
  ],
84
86
  "bin": {
85
87
  "xmonkey": "dist/build.js"
86
- },
87
- "type": "module"
88
+ }
88
89
  }