@lukaskj/xmonkey 2.2.1 → 2.2.3
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/LICENSE +21 -0
- package/README.md +113 -1
- package/dist/build.js +6 -3
- package/dist/esbuild/plugins/xmonkey-strip-metadata-plugin.js +4 -4
- package/dist/styles/_xmonkey-wrapper.scss +1 -0
- package/package.json +2 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Lukas K Jacomin
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,115 @@
|
|
|
1
1
|
# XMonkey TypeScript Lib
|
|
2
2
|
|
|
3
|
-
Tool for creating userscripts with typescript.
|
|
3
|
+
Tool for creating [userscripts](https://en.wikipedia.org/wiki/Userscript) with typescript.
|
|
4
|
+
|
|
5
|
+
With XMonkey there are two ways of creating userscripts:
|
|
6
|
+
|
|
7
|
+
- [Console Scripts](#console-scripts)
|
|
8
|
+
- [UI Scripts](#ui-scripts)
|
|
9
|
+
|
|
10
|
+
Project with both examples [here](./examples/)
|
|
11
|
+
|
|
12
|
+
## Install
|
|
13
|
+
```bash
|
|
14
|
+
npm i -D @lukaskj/xmonkey
|
|
15
|
+
# or
|
|
16
|
+
pnpm i -D @lukaskj/xmonkey
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Console Scripts
|
|
20
|
+
|
|
21
|
+
A "Console Script" is a simple script that will run in the background.<br>
|
|
22
|
+
See a console script example [here](./examples/src/youtube-adblocker.ts).
|
|
23
|
+
|
|
24
|
+
### Creating an Console Script
|
|
25
|
+
|
|
26
|
+
- Create an class as entrypoint for your script. Only entry class must be the `default export`.
|
|
27
|
+
- The class must be decorated with the `@ConsoleScript()` decorator and be populated with the userscript metadata. See [userscript metadata guide](https://sourceforge.net/p/greasemonkey/wiki/Metadata_Block/).
|
|
28
|
+
- Also, the class must implement the `ConsoleScript` interface.
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
// ConsoleScript decorator
|
|
32
|
+
@ConsoleScript({
|
|
33
|
+
"@name": "Youtube Adblocker",
|
|
34
|
+
"@namespace": "scripts",
|
|
35
|
+
"@version": "1.0",
|
|
36
|
+
"@description": "Youtube Custom Adblocker",
|
|
37
|
+
"@author": "Lukas",
|
|
38
|
+
"@match": "https://www.youtube.com/*",
|
|
39
|
+
})
|
|
40
|
+
export default class implements IConsoleScript {
|
|
41
|
+
// Implements IConsoleScript interface
|
|
42
|
+
async execute() {}
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Ui Scripts
|
|
49
|
+
|
|
50
|
+
"Ui Script" is an userscript with an prebuilt UI.
|
|
51
|
+
<br>
|
|
52
|
+
It is created using [preact](https://preactjs.com/) and have scss support out of the box.
|
|
53
|
+
<br>
|
|
54
|
+
See the example code [here](./examples/src/whatsapp-theme/whatsapp-theme.tsx).
|
|
55
|
+
|
|
56
|
+
### Creating an Ui Script
|
|
57
|
+
|
|
58
|
+
- Install preact
|
|
59
|
+
`pnpm add preact@^10.19.7`
|
|
60
|
+
|
|
61
|
+
- Add the following to `tsconfig.json`:
|
|
62
|
+
|
|
63
|
+
```json
|
|
64
|
+
{
|
|
65
|
+
"compilerOptions": {
|
|
66
|
+
...
|
|
67
|
+
"jsx": "react-jsx", // this
|
|
68
|
+
"jsxImportSource": "preact", // this
|
|
69
|
+
...
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
- Create an class as entrypoint for your script. Only entry class must be the `default export`.
|
|
75
|
+
- The class must be decorated with the `@UiScript()` decorator and be populated with the userscript metadata. See [userscript metadata guide](https://sourceforge.net/p/greasemonkey/wiki/Metadata_Block/).
|
|
76
|
+
- Also, the class must implement the `UiScript` interface.
|
|
77
|
+
|
|
78
|
+
```typescript
|
|
79
|
+
// UiScript decorator
|
|
80
|
+
@UiScript({
|
|
81
|
+
"@name": "WhatsApp Example",
|
|
82
|
+
"@namespace": "example",
|
|
83
|
+
"@match": "https://web.whatsapp.com/",
|
|
84
|
+
"@version": "1.0",
|
|
85
|
+
"@author": "-",
|
|
86
|
+
"@description": "-",
|
|
87
|
+
"@grant": ["GM.addStyle"],
|
|
88
|
+
})
|
|
89
|
+
export default class WhatsAppExample implements IUiScript {
|
|
90
|
+
// Implements IUiScript interface
|
|
91
|
+
title: string = "Example";
|
|
92
|
+
|
|
93
|
+
async render() {}
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
[whatsapp-example.webm](https://github.com/lukaskj/xmonkey/assets/1936255/c6ea50d7-e3a8-4770-8af8-068aa6481a11)
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
## Building
|
|
101
|
+
|
|
102
|
+
To build the class to an working userscript, run the `xmonkey` binary with the script as argument.
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
xmonkey src/example-console-script.ts
|
|
106
|
+
|
|
107
|
+
# for Ui Scripts
|
|
108
|
+
xmonkey src/example-console-script.tsx
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
### Known bugs
|
|
114
|
+
|
|
115
|
+
- The UiScript render function has a but that it cannot have any hook or it won't work. The workaround is to return a single component in the UiScript that this component can use any preact hook as usual. See example [here](./examples/src/whatsapp-theme/whatsapp-theme.tsx).
|
package/dist/build.js
CHANGED
|
@@ -27,6 +27,7 @@ var import_esbuild_sass_plugin = require("esbuild-sass-plugin");
|
|
|
27
27
|
|
|
28
28
|
// src/esbuild/plugins/xmonkey-strip-metadata-plugin.ts
|
|
29
29
|
var import_promises = require("fs/promises");
|
|
30
|
+
var import_json5 = __toESM(require("json5"));
|
|
30
31
|
function xMonkeyStripMetadataPlugin() {
|
|
31
32
|
return {
|
|
32
33
|
name: "xmonkey-strip-metadata-plugin",
|
|
@@ -84,9 +85,11 @@ function getScriptMetadataString(scriptMetadataFunctionCallString) {
|
|
|
84
85
|
if (startJsonMetadataIndex < 0 || endJsonMetadataIndex < 0) {
|
|
85
86
|
return "";
|
|
86
87
|
}
|
|
87
|
-
const
|
|
88
|
-
scriptMetadataFunctionCallString.substring(startJsonMetadataIndex, endJsonMetadataIndex + 1)
|
|
88
|
+
const aaaa = import_json5.default.parse(
|
|
89
|
+
scriptMetadataFunctionCallString.substring(startJsonMetadataIndex, endJsonMetadataIndex + 1)
|
|
89
90
|
);
|
|
91
|
+
console.log("AAAAAAAA", aaaa);
|
|
92
|
+
const metadataObject = aaaa;
|
|
90
93
|
const tag = "// ==UserScript==";
|
|
91
94
|
const tagEnd = "// ==/UserScript==";
|
|
92
95
|
const headersArr = [];
|
|
@@ -199,4 +202,4 @@ if (!entryFile) {
|
|
|
199
202
|
process.exit(1);
|
|
200
203
|
}
|
|
201
204
|
buildXmonkeyScript(entryFile);
|
|
202
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2VzYnVpbGQvYnVpbGQudHMiLCAiLi4vc3JjL2VzYnVpbGQvcGx1Z2lucy94bW9ua2V5LXN0cmlwLW1ldGFkYXRhLXBsdWdpbi50cyIsICIuLi9zcmMvZXNidWlsZC9wbHVnaW5zL3htb25rZXktc3R5bGVzLXBsdWdpbi50cyIsICIuLi9zcmMvZXNidWlsZC9wbHVnaW5zL3htb25rZXktb3V0cHV0LXN0YXRzLXBsdWdpbi50cyIsICIuLi9zcmMvYnVpbGQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCAqIGFzIGVzYnVpbGQgZnJvbSBcImVzYnVpbGRcIjtcbmltcG9ydCB7IHNhc3NQbHVnaW4gfSBmcm9tIFwiZXNidWlsZC1zYXNzLXBsdWdpblwiO1xuaW1wb3J0IHsgeE1vbmtleVN0cmlwTWV0YWRhdGFQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3htb25rZXktc3RyaXAtbWV0YWRhdGEtcGx1Z2luLmpzXCI7XG5pbXBvcnQgeyB4TW9ua2V5U3R5bGVzUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy94bW9ua2V5LXN0eWxlcy1wbHVnaW4uanNcIjtcbmltcG9ydCB7IHhNb25rZXlPdXRwdXRTdGF0c1BsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMveG1vbmtleS1vdXRwdXQtc3RhdHMtcGx1Z2luLmpzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZFhtb25rZXlTY3JpcHQoc2NyaXB0QmFzZVBhdGg6IHN0cmluZykge1xuICAvLyBsZXQgZW50cnlGaWxlID0gcHJvY2Vzcy5hcmd2WzJdO1xuICBjb25zdCBlbnRyeUZpbGUgPSBzY3JpcHRCYXNlUGF0aDtcbiAgY29uc29sZS5pbmZvKGBCdWlsZGluZyBmaWxlOiAnJHtlbnRyeUZpbGV9J2ApO1xuXG4gIGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgIGVudHJ5UG9pbnRzOiBbZW50cnlGaWxlXSxcbiAgICBvdXRmaWxlOiBcImRpc3QvaW5kZXguanNcIixcbiAgICBidW5kbGU6IHRydWUsXG4gICAgdHJlZVNoYWtpbmc6IHRydWUsXG4gICAgbWluaWZ5OiBwcm9jZXNzLmVudi5ERUJVRyA/IGZhbHNlIDogdHJ1ZSxcbiAgICBwbGF0Zm9ybTogXCJicm93c2VyXCIsXG4gICAgZm9ybWF0OiBcImlpZmVcIixcbiAgICAvLyB0YXJnZXQ6IFwiZXNuZXh0XCIsXG4gICAgc291cmNlbWFwOiBmYWxzZSxcbiAgICBrZWVwTmFtZXM6IHRydWUsXG4gICAgbG9nTGV2ZWw6IFwiaW5mb1wiLFxuICAgIG1ldGFmaWxlOiB0cnVlLFxuICAgIHBsdWdpbnM6IFtcbiAgICAgIHhNb25rZXlTdHJpcE1ldGFkYXRhUGx1Z2luKCksXG4gICAgICAvLyB4TW9ua2V5RGV2UGx1Z2luKCksXG4gICAgICBzYXNzUGx1Z2luKHsgc3R5bGU6IFwiY29tcHJlc3NlZFwiIH0pLFxuICAgICAgeE1vbmtleVN0eWxlc1BsdWdpbigpLFxuICAgICAgeE1vbmtleU91dHB1dFN0YXRzUGx1Z2luKCksXG4gICAgXSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcImVzYnVpbGRcIjtcbmltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tIFwiZnMvcHJvbWlzZXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHhNb25rZXlTdHJpcE1ldGFkYXRhUGx1Z2luKCk6IFBsdWdpbiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogXCJ4bW9ua2V5LXN0cmlwLW1ldGFkYXRhLXBsdWdpblwiLFxuICAgIHNldHVwKGJ1aWxkKSB7XG4gICAgICBsZXQgZm91bmRNZXRhZGF0YSA9IGZhbHNlO1xuICAgICAgbGV0IG1ldGFkYXRhQ29udGVudCA9IFwiXCI7XG5cbiAgICAgIGJ1aWxkLm9uTG9hZCh7IGZpbHRlcjogLy4odHN8dHN4KS8sIG5hbWVzcGFjZTogXCJmaWxlXCIgfSwgYXN5bmMgKGFyZ3MpID0+IHtcbiAgICAgICAgaWYgKGZvdW5kTWV0YWRhdGEpIHJldHVybjtcbiAgICAgICAgY29uc3Qgc291cmNlID0gYXdhaXQgcmVhZEZpbGUoYXJncy5wYXRoLCBcInV0ZjhcIik7XG4gICAgICAgIGNvbnN0IHNjcmlwdE1ldGFkYXRhSW5kZXggPSBzb3VyY2UubWF0Y2goL0AoQ29uc29sZVNjcmlwdHxVaVNjcmlwdClcXCgvKT8uaW5kZXg7XG5cbiAgICAgICAgaWYgKCFzY3JpcHRNZXRhZGF0YUluZGV4IHx8IHNjcmlwdE1ldGFkYXRhSW5kZXggPCAwKSByZXR1cm47XG4gICAgICAgIGZvdW5kTWV0YWRhdGEgPSB0cnVlO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1lc2NhcGVcbiAgICAgICAgY29uc3QgcmVnZXggPSAvXFxAKENvbnNvbGVTY3JpcHR8VWlTY3JpcHQpXFwoW15cXCldKlxcKShcXC5bXlxcKV0qXFwpKT8vZ2k7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhRGVjb3JhdG9yTWF0Y2hlciA9IHNvdXJjZS5tYXRjaChyZWdleCk7XG4gICAgICAgIGlmIChtZXRhZGF0YURlY29yYXRvck1hdGNoZXIpIHtcbiAgICAgICAgICBtZXRhZGF0YUNvbnRlbnQgPSBtZXRhZGF0YURlY29yYXRvck1hdGNoZXIuYXQoMCkgYXMgc3RyaW5nO1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwibWV0YWRhdGFDb250ZW50XCIsIG1ldGFkYXRhQ29udGVudCk7XG4gICAgICAgICAgY29uc3Qgc3RhcnRKc29uTWV0YWRhdGFJbmRleCA9IG1ldGFkYXRhQ29udGVudC5pbmRleE9mKFwie1wiKTtcbiAgICAgICAgICBjb25zdCBlbmRKc29uTWV0YWRhdGFJbmRleCA9IG1ldGFkYXRhQ29udGVudC5sYXN0SW5kZXhPZihcIn1cIik7XG4gICAgICAgICAgY29uc3QgbWV0YWRhdGFKc29uU3RyaW5nID0gbWV0YWRhdGFDb250ZW50LnN1YnN0cmluZyhzdGFydEpzb25NZXRhZGF0YUluZGV4LCBlbmRKc29uTWV0YWRhdGFJbmRleCArIDEpO1xuICAgICAgICAgIGNvbnN0IGNvbnRlbnRzID0gc291cmNlLnJlcGxhY2UobWV0YWRhdGFKc29uU3RyaW5nLCBcIlwiKTsgLy8gcmVtb3ZlIHRoZSBqc29uIG1ldGFkYXRhIGZyb20gc291cmNlXG4gICAgICAgICAgLy8gY29uc3QgY29udGVudHMgPSBzb3VyY2UucmVwbGFjZShyZWdleCwgXCJcIik7IC8vIHJlbW92ZSBAQ29uc29sZVNjcmlwdCh7Li4uLn0pIGZyb20gc291cmNlXG5cbiAgICAgICAgICAvLyBjb25zdCBjb250ZW50cyA9IHNvdXJjZS5yZXBsYWNlKHJlZ2V4LCBcIlwiKTtcbiAgICAgICAgICBjb25zdCBleHRlbnNpb24gPSBhcmdzLnBhdGguc3BsaXQoXCIuXCIpLnBvcCgpO1xuXG4gICAgICAgICAgY29uc3QgbG9hZGVyID0gZXh0ZW5zaW9uID09PSBcInRzeFwiID8gXCJ0c3hcIiA6IFwidHNcIjtcblxuICAgICAgICAgIHJldHVybiB7IGNvbnRlbnRzLCBsb2FkZXIgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH0pO1xuXG4gICAgICBidWlsZC5vbkVuZChhc3luYyAocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmICghYnVpbGQuaW5pdGlhbE9wdGlvbnM/Lm91dGZpbGUgfHwgIWJ1aWxkLmluaXRpYWxPcHRpb25zPy5idW5kbGUpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiV3JvbmcgYnVpbGQgY29uZmlndXJhdGlvbi4gT3B0aW9ucyAnYnVuZGxlJyBtdXN0IGJlIGVuYWJsZWQgYW5kICdvdXRmaWxlJyBtdXN0IGJlIHNldC5cIik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFmb3VuZE1ldGFkYXRhKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIlNjcmlwdE1ldGFkYXRhIGRlY29yYXRvciBub3QgZm91bmQuXCIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXN1bHQuZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBidWlsZGluZy4gU2NyaXB0IE1ldGFkYXRhIGNhbm5vdCBiZSBhZGRlZCB0byBmaW5hbCBzY3JpcHQuXCIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVDb250ZW50cyA9IGF3YWl0IHJlYWRGaWxlKGJ1aWxkLmluaXRpYWxPcHRpb25zLm91dGZpbGUpO1xuICAgICAgICBjb25zdCBzY3JpcHRNZXRhZGF0YVN0cmluZyA9IGdldFNjcmlwdE1ldGFkYXRhU3RyaW5nKG1ldGFkYXRhQ29udGVudCk7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZShidWlsZC5pbml0aWFsT3B0aW9ucy5vdXRmaWxlLCBgJHtzY3JpcHRNZXRhZGF0YVN0cmluZ31cXG5cXG4ke2ZpbGVDb250ZW50cy50b1N0cmluZygpfWApO1xuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0U2NyaXB0TWV0YWRhdGFTdHJpbmcoc2NyaXB0TWV0YWRhdGFGdW5jdGlvbkNhbGxTdHJpbmc6IHN0cmluZykge1xuICBzY3JpcHRNZXRhZGF0YUZ1bmN0aW9uQ2FsbFN0cmluZyA9IHNjcmlwdE1ldGFkYXRhRnVuY3Rpb25DYWxsU3RyaW5nLnRyaW0oKTtcbiAgY29uc3Qgc3RhcnRKc29uTWV0YWRhdGFJbmRleCA9IHNjcmlwdE1ldGFkYXRhRnVuY3Rpb25DYWxsU3RyaW5nLmluZGV4T2YoXCJ7XCIpO1xuICBjb25zdCBlbmRKc29uTWV0YWRhdGFJbmRleCA9IHNjcmlwdE1ldGFkYXRhRnVuY3Rpb25DYWxsU3RyaW5nLmxhc3RJbmRleE9mKFwifVwiKTtcbiAgaWYgKHN0YXJ0SnNvbk1ldGFkYXRhSW5kZXggPCAwIHx8IGVuZEpzb25NZXRhZGF0YUluZGV4IDwgMCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgY29uc3QgbWV0YWRhdGFPYmplY3QgPSBKU09OLnBhcnNlKFxuICAgIHNjcmlwdE1ldGFkYXRhRnVuY3Rpb25DYWxsU3RyaW5nXG4gICAgICAuc3Vic3RyaW5nKHN0YXJ0SnNvbk1ldGFkYXRhSW5kZXgsIGVuZEpzb25NZXRhZGF0YUluZGV4ICsgMSlcbiAgICAgIC5yZXBsYWNlQWxsKFwiXFxuXCIsIFwiXCIpXG4gICAgICAucmVwbGFjZUFsbChcIix9XCIsIFwifVwiKSxcbiAgKTtcblxuICBjb25zdCB0YWcgPSBcIi8vID09VXNlclNjcmlwdD09XCI7XG4gIGNvbnN0IHRhZ0VuZCA9IFwiLy8gPT0vVXNlclNjcmlwdD09XCI7XG4gIGNvbnN0IGhlYWRlcnNBcnIgPSBbXTtcblxuICBjb25zdCBzcGFjZXMgPSAxMztcbiAgZm9yIChjb25zdCBrZXkgaW4gbWV0YWRhdGFPYmplY3QpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShtZXRhZGF0YU9iamVjdFtrZXldKSkge1xuICAgICAgbWV0YWRhdGFPYmplY3Rba2V5XS5mb3JFYWNoKChpdGVtOiB1bmtub3duKSA9PiB7XG4gICAgICAgIGhlYWRlcnNBcnIucHVzaChgJHtrZXkucGFkRW5kKHNwYWNlcywgXCIgXCIpfSR7aXRlbX1gKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBoZWFkZXJzQXJyLnB1c2goYCR7a2V5LnBhZEVuZChzcGFjZXMsIFwiIFwiKX0ke21ldGFkYXRhT2JqZWN0W2tleV19YCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGVhZGVycyA9IGhlYWRlcnNBcnIubWFwKChoKSA9PiBgLy8gJHtofWApLmpvaW4oXCJcXG5cIik7XG4gIHJldHVybiBgJHt0YWd9XFxuJHtoZWFkZXJzfVxcbiR7dGFnRW5kfWA7XG59XG4iLCAiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcImVzYnVpbGRcIjtcbmltcG9ydCB7IGFwcGVuZEZpbGUsIHJlYWRGaWxlIH0gZnJvbSBcImZzL3Byb21pc2VzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB4TW9ua2V5U3R5bGVzUGx1Z2luKCk6IFBsdWdpbiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogXCJ4bW9ua2V5LXN0eWxlcy1wbHVnaW5cIixcbiAgICBzZXR1cChidWlsZCkge1xuICAgICAgYnVpbGQub25FbmQoYXN5bmMgKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAoIWJ1aWxkLmluaXRpYWxPcHRpb25zPy5vdXRmaWxlIHx8ICFidWlsZC5pbml0aWFsT3B0aW9ucz8uYnVuZGxlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIldyb25nIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIE9wdGlvbnMgJ2J1bmRsZScgbXVzdCBiZSBlbmFibGVkIGFuZCAnb3V0ZmlsZScgbXVzdCBiZSBzZXQuXCIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcmVzdWx0Lm1ldGFmaWxlKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFwiRVNCdWlsZCBtZXRhZmlsZSBub3QgZW5hYmxlZC4gU3R5bGUgYnVuZGxlIHNraXBwZWQuXCIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvdXRwdXRzID0gcmVzdWx0Lm1ldGFmaWxlLm91dHB1dHM7XG4gICAgICAgIGxldCBjc3NGaWxlUGF0aCA9IFwiXCI7XG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBpbiBvdXRwdXRzKSB7XG4gICAgICAgICAgY29uc3QgZXh0ID0gZmlsZS5zcGxpdChcIi5cIikucG9wKCk7XG4gICAgICAgICAgaWYgKGV4dCA9PT0gXCJjc3NcIikge1xuICAgICAgICAgICAgY3NzRmlsZVBhdGggPSBmaWxlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjc3NGaWxlUGF0aC5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCJbLV0gU3R5bGVTaGVldCBvdXRwdXQgc2tpcHBlZC5cIik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QganNPdXRGaWxlID0gYnVpbGQuaW5pdGlhbE9wdGlvbnMub3V0ZmlsZTtcblxuICAgICAgICBjb25zdCBjc3NDb250ZW50cyA9IChhd2FpdCByZWFkRmlsZShjc3NGaWxlUGF0aCkpLnRvU3RyaW5nKCk7XG4gICAgICAgIGFwcGVuZEZpbGUoanNPdXRGaWxlLCBgXFxuR00uYWRkU3R5bGUoXCJcXFxcXFxuJHtjc3NDb250ZW50cy50cmltKCl9XFxcXFxcblwiKTtgKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gIH07XG59XG4iLCAiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcImVzYnVpbGRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHhNb25rZXlPdXRwdXRTdGF0c1BsdWdpbigpOiBQbHVnaW4ge1xuICByZXR1cm4ge1xuICAgIG5hbWU6IFwieG1vbmtleS1vdXRwdXQtc3RhdHMtcGx1Z2luXCIsXG4gICAgc2V0dXAoYnVpbGQpIHtcbiAgICAgIGJ1aWxkLm9uRW5kKGFzeW5jIChyZXN1bHQpID0+IHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgY29uc3Qgb3V0cHV0cyA9IHJlc3VsdC5tZXRhZmlsZT8ub3V0cHV0cyBhcyBhbnk7XG4gICAgICAgIGNvbnN0IG91dHB1dFRvdGFsID0gT2JqZWN0LmtleXMob3V0cHV0cykucmVkdWNlKChwcmV2LCBjdXIpID0+IHByZXYgKyBvdXRwdXRzW2N1cl0uYnl0ZXMsIDApO1xuICAgICAgICBjb25zdCBidW5kbGVUb3RhbCA9IGh1bWFuRmlsZVNpemUob3V0cHV0VG90YWwpO1xuICAgICAgICBjb25zb2xlLmxvZyhcIlsqXSBCdW5kbGUgdG90YWw6XCIsIGJ1bmRsZVRvdGFsKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGh1bWFuRmlsZVNpemUoc2l6ZTogbnVtYmVyKSB7XG4gIGNvbnN0IGkgPSBzaXplID09IDAgPyAwIDogTWF0aC5mbG9vcihNYXRoLmxvZyhzaXplKSAvIE1hdGgubG9nKDEwMjQpKTtcbiAgcmV0dXJuIChzaXplIC8gTWF0aC5wb3coMTAyNCwgaSkpLnRvRml4ZWQoMSkgKyBcIlwiICsgW1wiYlwiLCBcImtCXCIsIFwiTUJcIiwgXCJHQlwiLCBcIlRCXCJdW2ldO1xufVxuIiwgImltcG9ydCB7IGJ1aWxkWG1vbmtleVNjcmlwdCB9IGZyb20gXCIuL2VzYnVpbGQvYnVpbGQuanNcIjtcblxuY29uc3QgZW50cnlGaWxlID0gcHJvY2Vzcy5hcmd2WzJdO1xuXG5pZiAoIWVudHJ5RmlsZSkge1xuICBjb25zb2xlLmVycm9yKGBObyBlbnRyeWZpbGUgc3BlY2lmaWVkLiBUcnkgYWRkaW5nIHRoZSBzY3JpcHQgdG8gYnVpbGQgaW4gdGhlIGFyZ3VtZW50LmApO1xuICBjb25zb2xlLmVycm9yKGBFeGFtcGxlOiBucG0gcnVuIGJ1aWxkIHNyYy9leGFtcGxlLXNjcmlwdC50c2ApO1xuICBwcm9jZXNzLmV4aXQoMSk7XG59XG5cbmJ1aWxkWG1vbmtleVNjcmlwdChlbnRyeUZpbGUpO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsY0FBeUI7QUFDekIsaUNBQTJCOzs7QUNBM0Isc0JBQW9DO0FBRTdCLFNBQVMsNkJBQXFDO0FBQ25ELFNBQU87QUFBQSxJQUNMLE1BQU07QUFBQSxJQUNOLE1BQU1BLFFBQU87QUFDWCxVQUFJLGdCQUFnQjtBQUNwQixVQUFJLGtCQUFrQjtBQUV0QixNQUFBQSxPQUFNLE9BQU8sRUFBRSxRQUFRLGFBQWEsV0FBVyxPQUFPLEdBQUcsT0FBTyxTQUFTO0FBQ3ZFLFlBQUk7QUFBZTtBQUNuQixjQUFNLFNBQVMsVUFBTSwwQkFBUyxLQUFLLE1BQU0sTUFBTTtBQUMvQyxjQUFNLHNCQUFzQixPQUFPLE1BQU0sNkJBQTZCLEdBQUc7QUFFekUsWUFBSSxDQUFDLHVCQUF1QixzQkFBc0I7QUFBRztBQUNyRCx3QkFBZ0I7QUFFaEIsY0FBTSxR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LE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLE1BQU0sTUFBTSxNQUFNLElBQUksRUFBRSxDQUFDO0FBQ3JGOzs7QUhkQSxlQUFzQixtQkFBbUIsZ0JBQXdCO0FBRS9ELFFBQU1DLGFBQVk7QUFDbEIsVUFBUSxLQUFLLG1CQUFtQkEsVUFBUyxHQUFHO0FBRTVDLFFBQWMsY0FBTTtBQUFBLElBQ2xCLGFBQWEsQ0FBQ0EsVUFBUztBQUFBLElBQ3ZCLFNBQVM7QUFBQSxJQUNULFFBQVE7QUFBQSxJQUNSLGFBQWE7QUFBQSxJQUNiLFFBQVEsUUFBUSxJQUFJLFFBQVEsUUFBUTtBQUFBLElBQ3BDLFVBQVU7QUFBQSxJQUNWLFFBQVE7QUFBQTtBQUFBLElBRVIsV0FBVztBQUFBLElBQ1gsV0FBVztBQUFBLElBQ1gsVUFBVTtBQUFBLElBQ1YsVUFBVTtBQUFBLElBQ1YsU0FBUztBQUFBLE1BQ1AsMkJBQTJCO0FBQUE7QUFBQSxVQUUzQix1Q0FBVyxFQUFFLE9BQU8sYUFBYSxDQUFDO0FBQUEsTUFDbEMsb0JBQW9CO0FBQUEsTUFDcEIseUJBQXlCO0FBQUEsSUFDM0I7QUFBQSxFQUNGLENBQUM7QUFDSDs7O0FJOUJBLElBQU0sWUFBWSxRQUFRLEtBQUssQ0FBQztBQUVoQyxJQUFJLENBQUMsV0FBVztBQUNkLFVBQVEsTUFBTSx5RUFBeUU7QUFDdkYsVUFBUSxNQUFNLDhDQUE4QztBQUM1RCxVQUFRLEtBQUssQ0FBQztBQUNoQjtBQUVBLG1CQUFtQixTQUFTOyIsCiAgIm5hbWVzIjogWyJidWlsZCIsICJpbXBvcnRfcHJvbWlzZXMiLCAiYnVpbGQiLCAiYnVpbGQiLCAiZW50cnlGaWxlIl0KfQo=
|
|
205
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2VzYnVpbGQvYnVpbGQudHMiLCAiLi4vc3JjL2VzYnVpbGQvcGx1Z2lucy94bW9ua2V5LXN0cmlwLW1ldGFkYXRhLXBsdWdpbi50cyIsICIuLi9zcmMvZXNidWlsZC9wbHVnaW5zL3htb25rZXktc3R5bGVzLXBsdWdpbi50cyIsICIuLi9zcmMvZXNidWlsZC9wbHVnaW5zL3htb25rZXktb3V0cHV0LXN0YXRzLXBsdWdpbi50cyIsICIuLi9zcmMvYnVpbGQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCAqIGFzIGVzYnVpbGQgZnJvbSBcImVzYnVpbGRcIjtcbmltcG9ydCB7IHNhc3NQbHVnaW4gfSBmcm9tIFwiZXNidWlsZC1zYXNzLXBsdWdpblwiO1xuaW1wb3J0IHsgeE1vbmtleVN0cmlwTWV0YWRhdGFQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3htb25rZXktc3RyaXAtbWV0YWRhdGEtcGx1Z2luLmpzXCI7XG5pbXBvcnQgeyB4TW9ua2V5U3R5bGVzUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy94bW9ua2V5LXN0eWxlcy1wbHVnaW4uanNcIjtcbmltcG9ydCB7IHhNb25rZXlPdXRwdXRTdGF0c1BsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMveG1vbmtleS1vdXRwdXQtc3RhdHMtcGx1Z2luLmpzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZFhtb25rZXlTY3JpcHQoc2NyaXB0QmFzZVBhdGg6IHN0cmluZykge1xuICAvLyBsZXQgZW50cnlGaWxlID0gcHJvY2Vzcy5hcmd2WzJdO1xuICBjb25zdCBlbnRyeUZpbGUgPSBzY3JpcHRCYXNlUGF0aDtcbiAgY29uc29sZS5pbmZvKGBCdWlsZGluZyBmaWxlOiAnJHtlbnRyeUZpbGV9J2ApO1xuXG4gIGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgIGVudHJ5UG9pbnRzOiBbZW50cnlGaWxlXSxcbiAgICBvdXRmaWxlOiBcImRpc3QvaW5kZXguanNcIixcbiAgICBidW5kbGU6IHRydWUsXG4gICAgdHJlZVNoYWtpbmc6IHRydWUsXG4gICAgbWluaWZ5OiBwcm9jZXNzLmVudi5ERUJVRyA/IGZhbHNlIDogdHJ1ZSxcbiAgICBwbGF0Zm9ybTogXCJicm93c2VyXCIsXG4gICAgZm9ybWF0OiBcImlpZmVcIixcbiAgICAvLyB0YXJnZXQ6IFwiZXNuZXh0XCIsXG4gICAgc291cmNlbWFwOiBmYWxzZSxcbiAgICBrZWVwTmFtZXM6IHRydWUsXG4gICAgbG9nTGV2ZWw6IFwiaW5mb1wiLFxuICAgIG1ldGFmaWxlOiB0cnVlLFxuICAgIHBsdWdpbnM6IFtcbiAgICAgIHhNb25rZXlTdHJpcE1ldGFkYXRhUGx1Z2luKCksXG4gICAgICAvLyB4TW9ua2V5RGV2UGx1Z2luKCksXG4gICAgICBzYXNzUGx1Z2luKHsgc3R5bGU6IFwiY29tcHJlc3NlZFwiIH0pLFxuICAgICAgeE1vbmtleVN0eWxlc1BsdWdpbigpLFxuICAgICAgeE1vbmtleU91dHB1dFN0YXRzUGx1Z2luKCksXG4gICAgXSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcImVzYnVpbGRcIjtcbmltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tIFwiZnMvcHJvbWlzZXNcIjtcbmltcG9ydCBKU09ONSBmcm9tIFwianNvbjVcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHhNb25rZXlTdHJpcE1ldGFkYXRhUGx1Z2luKCk6IFBsdWdpbiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogXCJ4bW9ua2V5LXN0cmlwLW1ldGFkYXRhLXBsdWdpblwiLFxuICAgIHNldHVwKGJ1aWxkKSB7XG4gICAgICBsZXQgZm91bmRNZXRhZGF0YSA9IGZhbHNlO1xuICAgICAgbGV0IG1ldGFkYXRhQ29udGVudCA9IFwiXCI7XG5cbiAgICAgIGJ1aWxkLm9uTG9hZCh7IGZpbHRlcjogLy4odHN8dHN4KS8sIG5hbWVzcGFjZTogXCJmaWxlXCIgfSwgYXN5bmMgKGFyZ3MpID0+IHtcbiAgICAgICAgaWYgKGZvdW5kTWV0YWRhdGEpIHJldHVybjtcbiAgICAgICAgY29uc3Qgc291cmNlID0gYXdhaXQgcmVhZEZpbGUoYXJncy5wYXRoLCBcInV0ZjhcIik7XG4gICAgICAgIGNvbnN0IHNjcmlwdE1ldGFkYXRhSW5kZXggPSBzb3VyY2UubWF0Y2goL0AoQ29uc29sZVNjcmlwdHxVaVNjcmlwdClcXCgvKT8uaW5kZXg7XG5cbiAgICAgICAgaWYgKCFzY3JpcHRNZXRhZGF0YUluZGV4IHx8IHNjcmlwdE1ldGFkYXRhSW5kZXggPCAwKSByZXR1cm47XG4gICAgICAgIGZvdW5kTWV0YWRhdGEgPSB0cnVlO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1lc2NhcGVcbiAgICAgICAgY29uc3QgcmVnZXggPSAvXFxAKENvbnNvbGVTY3JpcHR8VWlTY3JpcHQpXFwoW15cXCldKlxcKShcXC5bXlxcKV0qXFwpKT8vZ2k7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhRGVjb3JhdG9yTWF0Y2hlciA9IHNvdXJjZS5tYXRjaChyZWdleCk7XG4gICAgICAgIGlmIChtZXRhZGF0YURlY29yYXRvck1hdGNoZXIpIHtcbiAgICAgICAgICBtZXRhZGF0YUNvbnRlbnQgPSBtZXRhZGF0YURlY29yYXRvck1hdGNoZXIuYXQoMCkgYXMgc3RyaW5nO1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwibWV0YWRhdGFDb250ZW50XCIsIG1ldGFkYXRhQ29udGVudCk7XG4gICAgICAgICAgY29uc3Qgc3RhcnRKc29uTWV0YWRhdGFJbmRleCA9IG1ldGFkYXRhQ29udGVudC5pbmRleE9mKFwie1wiKTtcbiAgICAgICAgICBjb25zdCBlbmRKc29uTWV0YWRhdGFJbmRleCA9IG1ldGFkYXRhQ29udGVudC5sYXN0SW5kZXhPZihcIn1cIik7XG4gICAgICAgICAgY29uc3QgbWV0YWRhdGFKc29uU3RyaW5nID0gbWV0YWRhdGFDb250ZW50LnN1YnN0cmluZyhzdGFydEpzb25NZXRhZGF0YUluZGV4LCBlbmRKc29uTWV0YWRhdGFJbmRleCArIDEpO1xuICAgICAgICAgIGNvbnN0IGNvbnRlbnRzID0gc291cmNlLnJlcGxhY2UobWV0YWRhdGFKc29uU3RyaW5nLCBcIlwiKTsgLy8gcmVtb3ZlIHRoZSBqc29uIG1ldGFkYXRhIGZyb20gc291cmNlXG4gICAgICAgICAgLy8gY29uc3QgY29udGVudHMgPSBzb3VyY2UucmVwbGFjZShyZWdleCwgXCJcIik7IC8vIHJlbW92ZSBAQ29uc29sZVNjcmlwdCh7Li4uLn0pIGZyb20gc291cmNlXG5cbiAgICAgICAgICAvLyBjb25zdCBjb250ZW50cyA9IHNvdXJjZS5yZXBsYWNlKHJlZ2V4LCBcIlwiKTtcbiAgICAgICAgICBjb25zdCBleHRlbnNpb24gPSBhcmdzLnBhdGguc3BsaXQoXCIuXCIpLnBvcCgpO1xuXG4gICAgICAgICAgY29uc3QgbG9hZGVyID0gZXh0ZW5zaW9uID09PSBcInRzeFwiID8gXCJ0c3hcIiA6IFwidHNcIjtcblxuICAgICAgICAgIHJldHVybiB7IGNvbnRlbnRzLCBsb2FkZXIgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH0pO1xuXG4gICAgICBidWlsZC5vbkVuZChhc3luYyAocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmICghYnVpbGQuaW5pdGlhbE9wdGlvbnM/Lm91dGZpbGUgfHwgIWJ1aWxkLmluaXRpYWxPcHRpb25zPy5idW5kbGUpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiV3JvbmcgYnVpbGQgY29uZmlndXJhdGlvbi4gT3B0aW9ucyAnYnVuZGxlJyBtdXN0IGJlIGVuYWJsZWQgYW5kICdvdXRmaWxlJyBtdXN0IGJlIHNldC5cIik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFmb3VuZE1ldGFkYXRhKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIlNjcmlwdE1ldGFkYXRhIGRlY29yYXRvciBub3QgZm91bmQuXCIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXN1bHQuZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBidWlsZGluZy4gU2NyaXB0IE1ldGFkYXRhIGNhbm5vdCBiZSBhZGRlZCB0byBmaW5hbCBzY3JpcHQuXCIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVDb250ZW50cyA9IGF3YWl0IHJlYWRGaWxlKGJ1aWxkLmluaXRpYWxPcHRpb25zLm91dGZpbGUpO1xuICAgICAgICBjb25zdCBzY3JpcHRNZXRhZGF0YVN0cmluZyA9IGdldFNjcmlwdE1ldGFkYXRhU3RyaW5nKG1ldGFkYXRhQ29udGVudCk7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZShidWlsZC5pbml0aWFsT3B0aW9ucy5vdXRmaWxlLCBgJHtzY3JpcHRNZXRhZGF0YVN0cmluZ31cXG5cXG4ke2ZpbGVDb250ZW50cy50b1N0cmluZygpfWApO1xuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0U2NyaXB0TWV0YWRhdGFTdHJpbmcoc2NyaXB0TWV0YWRhdGFGdW5jdGlvbkNhbGxTdHJpbmc6IHN0cmluZykge1xuICBzY3JpcHRNZXRhZGF0YUZ1bmN0aW9uQ2FsbFN0cmluZyA9IHNjcmlwdE1ldGFkYXRhRnVuY3Rpb25DYWxsU3RyaW5nLnRyaW0oKTtcbiAgY29uc3Qgc3RhcnRKc29uTWV0YWRhdGFJbmRleCA9IHNjcmlwdE1ldGFkYXRhRnVuY3Rpb25DYWxsU3RyaW5nLmluZGV4T2YoXCJ7XCIpO1xuICBjb25zdCBlbmRKc29uTWV0YWRhdGFJbmRleCA9IHNjcmlwdE1ldGFkYXRhRnVuY3Rpb25DYWxsU3RyaW5nLmxhc3RJbmRleE9mKFwifVwiKTtcbiAgaWYgKHN0YXJ0SnNvbk1ldGFkYXRhSW5kZXggPCAwIHx8IGVuZEpzb25NZXRhZGF0YUluZGV4IDwgMCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgY29uc3QgYWFhYSA9IEpTT041LnBhcnNlKFxuICAgIHNjcmlwdE1ldGFkYXRhRnVuY3Rpb25DYWxsU3RyaW5nLnN1YnN0cmluZyhzdGFydEpzb25NZXRhZGF0YUluZGV4LCBlbmRKc29uTWV0YWRhdGFJbmRleCArIDEpLFxuICApO1xuXG4gIGNvbnNvbGUubG9nKFwiQUFBQUFBQUFcIiwgYWFhYSk7XG5cbiAgLy8gY29uc3QganNvbk1ldGFkYXRhU3RyaW5nID0gc2NyaXB0TWV0YWRhdGFGdW5jdGlvbkNhbGxTdHJpbmdcbiAgLy8gICAuc3Vic3RyaW5nKHN0YXJ0SnNvbk1ldGFkYXRhSW5kZXgsIGVuZEpzb25NZXRhZGF0YUluZGV4ICsgMSlcbiAgLy8gICAucmVwbGFjZUFsbChcIlxcblwiLCBcIlwiKVxuICAvLyAgIC5yZXBsYWNlQWxsKC8sXFxzezEsfVxcXS9nLCBcIl1cIilcbiAgLy8gICAucmVwbGFjZUFsbCgvLFxcc3sxLH1cXH0vZywgXCJ9XCIpO1xuXG4gIGNvbnN0IG1ldGFkYXRhT2JqZWN0ID0gYWFhYTtcblxuICBjb25zdCB0YWcgPSBcIi8vID09VXNlclNjcmlwdD09XCI7XG4gIGNvbnN0IHRhZ0VuZCA9IFwiLy8gPT0vVXNlclNjcmlwdD09XCI7XG4gIGNvbnN0IGhlYWRlcnNBcnIgPSBbXTtcblxuICBjb25zdCBzcGFjZXMgPSAxMztcbiAgZm9yIChjb25zdCBrZXkgaW4gbWV0YWRhdGFPYmplY3QpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShtZXRhZGF0YU9iamVjdFtrZXldKSkge1xuICAgICAgbWV0YWRhdGFPYmplY3Rba2V5XS5mb3JFYWNoKChpdGVtOiB1bmtub3duKSA9PiB7XG4gICAgICAgIGhlYWRlcnNBcnIucHVzaChgJHtrZXkucGFkRW5kKHNwYWNlcywgXCIgXCIpfSR7aXRlbX1gKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBoZWFkZXJzQXJyLnB1c2goYCR7a2V5LnBhZEVuZChzcGFjZXMsIFwiIFwiKX0ke21ldGFkYXRhT2JqZWN0W2tleV19YCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGVhZGVycyA9IGhlYWRlcnNBcnIubWFwKChoKSA9PiBgLy8gJHtofWApLmpvaW4oXCJcXG5cIik7XG4gIHJldHVybiBgJHt0YWd9XFxuJHtoZWFkZXJzfVxcbiR7dGFnRW5kfWA7XG59XG4iLCAiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcImVzYnVpbGRcIjtcbmltcG9ydCB7IGFwcGVuZEZpbGUsIHJlYWRGaWxlIH0gZnJvbSBcImZzL3Byb21pc2VzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB4TW9ua2V5U3R5bGVzUGx1Z2luKCk6IFBsdWdpbiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogXCJ4bW9ua2V5LXN0eWxlcy1wbHVnaW5cIixcbiAgICBzZXR1cChidWlsZCkge1xuICAgICAgYnVpbGQub25FbmQoYXN5bmMgKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAoIWJ1aWxkLmluaXRpYWxPcHRpb25zPy5vdXRmaWxlIHx8ICFidWlsZC5pbml0aWFsT3B0aW9ucz8uYnVuZGxlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIldyb25nIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIE9wdGlvbnMgJ2J1bmRsZScgbXVzdCBiZSBlbmFibGVkIGFuZCAnb3V0ZmlsZScgbXVzdCBiZSBzZXQuXCIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcmVzdWx0Lm1ldGFmaWxlKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFwiRVNCdWlsZCBtZXRhZmlsZSBub3QgZW5hYmxlZC4gU3R5bGUgYnVuZGxlIHNraXBwZWQuXCIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvdXRwdXRzID0gcmVzdWx0Lm1ldGFmaWxlLm91dHB1dHM7XG4gICAgICAgIGxldCBjc3NGaWxlUGF0aCA9IFwiXCI7XG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBpbiBvdXRwdXRzKSB7XG4gICAgICAgICAgY29uc3QgZXh0ID0gZmlsZS5zcGxpdChcIi5cIikucG9wKCk7XG4gICAgICAgICAgaWYgKGV4dCA9PT0gXCJjc3NcIikge1xuICAgICAgICAgICAgY3NzRmlsZVBhdGggPSBmaWxlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjc3NGaWxlUGF0aC5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCJbLV0gU3R5bGVTaGVldCBvdXRwdXQgc2tpcHBlZC5cIik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QganNPdXRGaWxlID0gYnVpbGQuaW5pdGlhbE9wdGlvbnMub3V0ZmlsZTtcblxuICAgICAgICBjb25zdCBjc3NDb250ZW50cyA9IChhd2FpdCByZWFkRmlsZShjc3NGaWxlUGF0aCkpLnRvU3RyaW5nKCk7XG4gICAgICAgIGFwcGVuZEZpbGUoanNPdXRGaWxlLCBgXFxuR00uYWRkU3R5bGUoXCJcXFxcXFxuJHtjc3NDb250ZW50cy50cmltKCl9XFxcXFxcblwiKTtgKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gIH07XG59XG4iLCAiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcImVzYnVpbGRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHhNb25rZXlPdXRwdXRTdGF0c1BsdWdpbigpOiBQbHVnaW4ge1xuICByZXR1cm4ge1xuICAgIG5hbWU6IFwieG1vbmtleS1vdXRwdXQtc3RhdHMtcGx1Z2luXCIsXG4gICAgc2V0dXAoYnVpbGQpIHtcbiAgICAgIGJ1aWxkLm9uRW5kKGFzeW5jIChyZXN1bHQpID0+IHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgY29uc3Qgb3V0cHV0cyA9IHJlc3VsdC5tZXRhZmlsZT8ub3V0cHV0cyBhcyBhbnk7XG4gICAgICAgIGNvbnN0IG91dHB1dFRvdGFsID0gT2JqZWN0LmtleXMob3V0cHV0cykucmVkdWNlKChwcmV2LCBjdXIpID0+IHByZXYgKyBvdXRwdXRzW2N1cl0uYnl0ZXMsIDApO1xuICAgICAgICBjb25zdCBidW5kbGVUb3RhbCA9IGh1bWFuRmlsZVNpemUob3V0cHV0VG90YWwpO1xuICAgICAgICBjb25zb2xlLmxvZyhcIlsqXSBCdW5kbGUgdG90YWw6XCIsIGJ1bmRsZVRvdGFsKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGh1bWFuRmlsZVNpemUoc2l6ZTogbnVtYmVyKSB7XG4gIGNvbnN0IGkgPSBzaXplID09IDAgPyAwIDogTWF0aC5mbG9vcihNYXRoLmxvZyhzaXplKSAvIE1hdGgubG9nKDEwMjQpKTtcbiAgcmV0dXJuIChzaXplIC8gTWF0aC5wb3coMTAyNCwgaSkpLnRvRml4ZWQoMSkgKyBcIlwiICsgW1wiYlwiLCBcImtCXCIsIFwiTUJcIiwgXCJHQlwiLCBcIlRCXCJdW2ldO1xufVxuIiwgImltcG9ydCB7IGJ1aWxkWG1vbmtleVNjcmlwdCB9IGZyb20gXCIuL2VzYnVpbGQvYnVpbGQuanNcIjtcblxuY29uc3QgZW50cnlGaWxlID0gcHJvY2Vzcy5hcmd2WzJdO1xuXG5pZiAoIWVudHJ5RmlsZSkge1xuICBjb25zb2xlLmVycm9yKGBObyBlbnRyeWZpbGUgc3BlY2lmaWVkLiBUcnkgYWRkaW5nIHRoZSBzY3JpcHQgdG8gYnVpbGQgaW4gdGhlIGFyZ3VtZW50LmApO1xuICBjb25zb2xlLmVycm9yKGBFeGFtcGxlOiBucG0gcnVuIGJ1aWxkIHNyYy9leGFtcGxlLXNjcmlwdC50c2ApO1xuICBwcm9jZXNzLmV4aXQoMSk7XG59XG5cbmJ1aWxkWG1vbmtleVNjcmlwdChlbnRyeUZpbGUpO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsY0FBeUI7QUFDekIsaUNBQTJCOzs7QUNBM0Isc0JBQW9DO0FBQ3BDLG1CQUFrQjtBQUVYLFNBQVMsNkJBQXFDO0FBQ25ELFNBQU87QUFB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
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { readFile, writeFile } from "fs/promises";
|
|
2
|
+
import JSON5 from "json5";
|
|
2
3
|
export function xMonkeyStripMetadataPlugin() {
|
|
3
4
|
return {
|
|
4
5
|
name: "xmonkey-strip-metadata-plugin",
|
|
@@ -54,10 +55,9 @@ function getScriptMetadataString(scriptMetadataFunctionCallString) {
|
|
|
54
55
|
if (startJsonMetadataIndex < 0 || endJsonMetadataIndex < 0) {
|
|
55
56
|
return "";
|
|
56
57
|
}
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
.replaceAll(",}", "}"));
|
|
58
|
+
const aaaa = JSON5.parse(scriptMetadataFunctionCallString.substring(startJsonMetadataIndex, endJsonMetadataIndex + 1));
|
|
59
|
+
console.log("AAAAAAAA", aaaa);
|
|
60
|
+
const metadataObject = aaaa;
|
|
61
61
|
const tag = "// ==UserScript==";
|
|
62
62
|
const tagEnd = "// ==/UserScript==";
|
|
63
63
|
const headersArr = [];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lukaskj/xmonkey",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.3",
|
|
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"
|