xynginc 1.0.80 → 1.0.82
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/README.md +11 -3
- package/bin/xynginc +0 -0
- package/dist/constant.d.ts +0 -1
- package/dist/constant.js +4 -11
- package/dist/downloadBinary.d.ts +0 -1
- package/dist/downloadBinary.js +15 -52
- package/dist/ensureBinary.d.ts +0 -1
- package/dist/ensureBinary.js +14 -21
- package/dist/execAsync.d.ts +0 -1
- package/dist/execAsync.js +3 -7
- package/dist/index.d.ts +0 -1
- package/dist/index.js +19 -22
- package/dist/logger.d.ts +0 -1
- package/dist/logger.js +9 -14
- package/dist/requirements.d.ts +1 -1
- package/dist/requirements.js +40 -52
- package/dist/startPlugin.d.ts +1 -1
- package/dist/startPlugin.js +34 -34
- package/dist/types.d.ts +5 -1
- package/dist/types.js +1 -3
- package/dist/validateConfig.d.ts +0 -1
- package/dist/validateConfig.js +1 -5
- package/package.json +35 -35
- package/xypriss.plugin.xsig +11 -0
- package/dist/constant.d.ts.map +0 -1
- package/dist/constant.js.map +0 -1
- package/dist/downloadBinary.d.ts.map +0 -1
- package/dist/downloadBinary.js.map +0 -1
- package/dist/ensureBinary.d.ts.map +0 -1
- package/dist/ensureBinary.js.map +0 -1
- package/dist/execAsync.d.ts.map +0 -1
- package/dist/execAsync.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js.map +0 -1
- package/dist/requirements.d.ts.map +0 -1
- package/dist/requirements.js.map +0 -1
- package/dist/startPlugin.d.ts.map +0 -1
- package/dist/startPlugin.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/validateConfig.d.ts.map +0 -1
- package/dist/validateConfig.js.map +0 -1
package/README.md
CHANGED
|
@@ -144,6 +144,9 @@ interface XyNginCPluginOptions {
|
|
|
144
144
|
|
|
145
145
|
/** Password to execute sudo commands silently in background environments like PM2 */
|
|
146
146
|
sudoPassword?: string;
|
|
147
|
+
|
|
148
|
+
/** Automatically open Port 80 and 443 in the firewall (UFW) if they are blocked (default: false) */
|
|
149
|
+
autoFixFirewall?: boolean;
|
|
147
150
|
}
|
|
148
151
|
```
|
|
149
152
|
|
|
@@ -218,7 +221,8 @@ sudo xynginc status
|
|
|
218
221
|
"email": "admin@example.com"
|
|
219
222
|
}
|
|
220
223
|
],
|
|
221
|
-
"auto_reload": true
|
|
224
|
+
"auto_reload": true,
|
|
225
|
+
"autofix_firewall": true
|
|
222
226
|
}
|
|
223
227
|
```
|
|
224
228
|
|
|
@@ -239,8 +243,12 @@ XyNginC requires elevated privileges to perform the following actions:
|
|
|
239
243
|
- Executing `certbot` for SSL certificate generation
|
|
240
244
|
- Reloading the Nginx service
|
|
241
245
|
|
|
242
|
-
**Note**:
|
|
243
|
-
|
|
246
|
+
**Security Note**: XyNginC requires elevated privileges to manage Nginx and Firewall rules.
|
|
247
|
+
|
|
248
|
+
- **Sudoers**: We recommend configuring `sudoers` to allow specific commands for the user.
|
|
249
|
+
- **Sudo Password**: If your application runs in the background (e.g. using PM2), you can use the `sudoPassword` option or the `SUDO_PASSWORD` environment variable.
|
|
250
|
+
- **Reassurance**: The password is used **only** to execute the local `xynginc` binary and system commands like `ufw` or `service`. It is never stored, logged, or transmitted outside of your server.
|
|
251
|
+
- **Firewall**: The `autoFixFirewall` option allows XyNginC to automatically detect and open Port 80/443 if `ufw` is active. This is useful for automated SSL validation.
|
|
244
252
|
|
|
245
253
|
## Troubleshooting
|
|
246
254
|
|
package/bin/xynginc
CHANGED
|
Binary file
|
package/dist/constant.d.ts
CHANGED
package/dist/constant.js
CHANGED
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.BINARY_DIR = exports.GITHUB_REPO = exports.BINARY_NAME = void 0;
|
|
7
|
-
const path_1 = __importDefault(require("path"));
|
|
8
|
-
exports.BINARY_NAME = "xynginc";
|
|
9
|
-
exports.GITHUB_REPO = "Nehonix-Team/xynginc";
|
|
10
|
-
exports.BINARY_DIR = path_1.default.join(__dirname, "../bin");
|
|
11
|
-
//# sourceMappingURL=constant.js.map
|
|
1
|
+
import path from "path";
|
|
2
|
+
export const BINARY_NAME = "xynginc";
|
|
3
|
+
export const GITHUB_REPO = "Nehonix-Team/xynginc";
|
|
4
|
+
export const BINARY_DIR = path.join(__dirname, "../bin");
|
package/dist/downloadBinary.d.ts
CHANGED
package/dist/downloadBinary.js
CHANGED
|
@@ -1,67 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.downloadBinary = downloadBinary;
|
|
37
|
-
const logger_1 = require("./logger");
|
|
38
|
-
const https = __importStar(require("https"));
|
|
39
|
-
const fs = __importStar(require("fs"));
|
|
40
|
-
const path = __importStar(require("path"));
|
|
41
|
-
const os = __importStar(require("os"));
|
|
42
|
-
const constant_1 = require("./constant");
|
|
1
|
+
import { Logger } from "./logger";
|
|
2
|
+
import * as https from "https";
|
|
3
|
+
import * as fs from "fs";
|
|
4
|
+
import * as path from "path";
|
|
5
|
+
import * as os from "os";
|
|
6
|
+
import { BINARY_NAME, BINARY_DIR, GITHUB_REPO } from "./constant";
|
|
43
7
|
/**
|
|
44
8
|
* Downloads the xynginc binary from GitHub releases.
|
|
45
9
|
*
|
|
46
10
|
* @param version - The version to download (e.g., "latest" or "v1.4.5").
|
|
47
11
|
* @returns The path to the downloaded binary.
|
|
48
12
|
*/
|
|
49
|
-
async function downloadBinary(version) {
|
|
13
|
+
export async function downloadBinary(version) {
|
|
50
14
|
const platform = os.platform();
|
|
51
15
|
const arch = os.arch();
|
|
52
16
|
if (platform !== "linux") {
|
|
53
17
|
throw new Error(`[XyNginC] Unsupported platform: ${platform}. Only Linux is supported.`);
|
|
54
18
|
}
|
|
55
|
-
const binaryName = `${
|
|
19
|
+
const binaryName = `${BINARY_NAME}-${platform}-${arch}`;
|
|
56
20
|
const downloadUrl = version === "latest"
|
|
57
|
-
? `https://github.com/${
|
|
58
|
-
: `https://github.com/${
|
|
59
|
-
|
|
21
|
+
? `https://github.com/${GITHUB_REPO}/releases/latest/download/${binaryName}`
|
|
22
|
+
: `https://github.com/${GITHUB_REPO}/releases/download/${version}/${binaryName}`;
|
|
23
|
+
Logger.info(`[XyNginC] Downloading from: ${downloadUrl}`);
|
|
60
24
|
// Create bin directory
|
|
61
|
-
if (!fs.existsSync(
|
|
62
|
-
fs.mkdirSync(
|
|
25
|
+
if (!fs.existsSync(BINARY_DIR)) {
|
|
26
|
+
fs.mkdirSync(BINARY_DIR, { recursive: true });
|
|
63
27
|
}
|
|
64
|
-
const localPath = path.join(
|
|
28
|
+
const localPath = path.join(BINARY_DIR, BINARY_NAME);
|
|
65
29
|
return new Promise((resolve, reject) => {
|
|
66
30
|
function download(url) {
|
|
67
31
|
https
|
|
@@ -82,7 +46,7 @@ async function downloadBinary(version) {
|
|
|
82
46
|
file.on("finish", () => {
|
|
83
47
|
file.close();
|
|
84
48
|
fs.chmodSync(localPath, 0o755); // Make executable
|
|
85
|
-
|
|
49
|
+
Logger.success("[XyNginC] ✓ Binary downloaded successfully");
|
|
86
50
|
resolve(localPath);
|
|
87
51
|
});
|
|
88
52
|
})
|
|
@@ -95,4 +59,3 @@ async function downloadBinary(version) {
|
|
|
95
59
|
download(downloadUrl);
|
|
96
60
|
});
|
|
97
61
|
}
|
|
98
|
-
//# sourceMappingURL=downloadBinary.js.map
|
package/dist/ensureBinary.d.ts
CHANGED
package/dist/ensureBinary.js
CHANGED
|
@@ -1,15 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const fs_1 = __importDefault(require("fs"));
|
|
8
|
-
const path_1 = __importDefault(require("path"));
|
|
9
|
-
const logger_1 = require("./logger");
|
|
10
|
-
const execAsync_1 = require("./execAsync");
|
|
11
|
-
const constant_1 = require("./constant");
|
|
12
|
-
const downloadBinary_1 = require("./downloadBinary");
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { Logger } from "./logger";
|
|
4
|
+
import { execAsync } from "./execAsync";
|
|
5
|
+
import { BINARY_DIR, BINARY_NAME } from "./constant";
|
|
6
|
+
import { downloadBinary } from "./downloadBinary";
|
|
13
7
|
/**
|
|
14
8
|
* Ensures the xynginc binary exists.
|
|
15
9
|
* It checks the custom path, the system PATH, and the local bin directory.
|
|
@@ -20,16 +14,16 @@ const downloadBinary_1 = require("./downloadBinary");
|
|
|
20
14
|
* @param version - The version to download.
|
|
21
15
|
* @returns The absolute path to the binary.
|
|
22
16
|
*/
|
|
23
|
-
async function ensureBinary(customPath, autoDownload, version) {
|
|
17
|
+
export async function ensureBinary(customPath, autoDownload, version) {
|
|
24
18
|
// 1. Try custom path
|
|
25
|
-
if (customPath &&
|
|
19
|
+
if (customPath && fs.existsSync(customPath)) {
|
|
26
20
|
return customPath;
|
|
27
21
|
}
|
|
28
22
|
// 2. Try PATH
|
|
29
23
|
try {
|
|
30
|
-
const { stdout } = await
|
|
24
|
+
const { stdout } = await execAsync("which xynginc");
|
|
31
25
|
const globalPath = stdout.trim();
|
|
32
|
-
if (globalPath &&
|
|
26
|
+
if (globalPath && fs.existsSync(globalPath)) {
|
|
33
27
|
return globalPath;
|
|
34
28
|
}
|
|
35
29
|
}
|
|
@@ -37,15 +31,14 @@ async function ensureBinary(customPath, autoDownload, version) {
|
|
|
37
31
|
// Not in PATH
|
|
38
32
|
}
|
|
39
33
|
// 3. Try local bin directory
|
|
40
|
-
const localPath =
|
|
41
|
-
if (
|
|
34
|
+
const localPath = path.join(BINARY_DIR, BINARY_NAME);
|
|
35
|
+
if (fs.existsSync(localPath)) {
|
|
42
36
|
return localPath;
|
|
43
37
|
}
|
|
44
38
|
// 4. Auto-download if enabled
|
|
45
39
|
if (autoDownload) {
|
|
46
|
-
|
|
47
|
-
return await
|
|
40
|
+
Logger.info("[XyNginC] Binary not found, downloading...");
|
|
41
|
+
return await downloadBinary(version);
|
|
48
42
|
}
|
|
49
43
|
throw new Error("[XyNginC] Binary not found. Install xynginc or set 'autoDownload: true'");
|
|
50
44
|
}
|
|
51
|
-
//# sourceMappingURL=ensureBinary.js.map
|
package/dist/execAsync.d.ts
CHANGED
package/dist/execAsync.js
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const child_process_1 = require("child_process");
|
|
5
|
-
const util_1 = require("util");
|
|
6
|
-
exports.execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
7
|
-
//# sourceMappingURL=execAsync.js.map
|
|
1
|
+
import { exec } from "child_process";
|
|
2
|
+
import { promisify } from "util";
|
|
3
|
+
export const execAsync = promisify(exec);
|
package/dist/index.d.ts
CHANGED
|
@@ -9,4 +9,3 @@ import { XyNginCConfig, XyNginCDomainConfig, XyNginCPluginOptions } from "./type
|
|
|
9
9
|
export default function XNCP(options: XyNginCPluginOptions): import("xypriss").XyPrissPlugin;
|
|
10
10
|
export type { XyNginCConfig, XyNginCDomainConfig, XyNginCPluginOptions };
|
|
11
11
|
export declare const XyNginC: typeof XNCP;
|
|
12
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/*
|
|
3
2
|
* This code contains proprietary source code from NEHONIX
|
|
4
3
|
* Copyright © 2025 NEHONIX - www.nehonix.com
|
|
5
4
|
* Licensed under NEHONIX Open Source License (NOSL) v1.0
|
|
6
5
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const logger_1 = require("./logger");
|
|
12
|
-
const validateConfig_1 = require("./validateConfig");
|
|
13
|
-
const startPlugin_1 = require("./startPlugin");
|
|
6
|
+
import { Plugin } from "xypriss";
|
|
7
|
+
import { Logger } from "./logger";
|
|
8
|
+
import { validateConfig } from "./validateConfig";
|
|
9
|
+
import { startXNCPlugin } from "./startPlugin";
|
|
14
10
|
/**
|
|
15
11
|
* XyNginC Plugin for XyPriss.
|
|
16
12
|
* Automates Nginx and SSL management for your server.
|
|
@@ -18,21 +14,23 @@ const startPlugin_1 = require("./startPlugin");
|
|
|
18
14
|
* @param options - Plugin configuration options.
|
|
19
15
|
* @returns A XyPriss Plugin instance.
|
|
20
16
|
*/
|
|
21
|
-
function XNCP(options) {
|
|
22
|
-
const { domains, autoReload = true, binaryPath, autoDownload = true, version = "latest", installRequirements = true, sudoPassword, } = options;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
17
|
+
export default function XNCP(options) {
|
|
18
|
+
const { domains, autoReload = true, autoFixFirewall = false, binaryPath, autoDownload = true, version = "latest", installRequirements = true, sudoPassword, } = options;
|
|
19
|
+
const meta = Plugin.manifest(__sys__);
|
|
20
|
+
return Plugin.create({
|
|
21
|
+
name: meta.name,
|
|
22
|
+
version: meta.version,
|
|
23
|
+
description: meta.description,
|
|
24
|
+
onRegister: async (_server) => {
|
|
25
|
+
Logger.info("[XyNginC] Registering plugin...");
|
|
26
|
+
validateConfig({ domains, autoReload, autoFixFirewall });
|
|
30
27
|
},
|
|
31
28
|
onServerStart: async (_server) => {
|
|
32
29
|
// Validate config
|
|
33
|
-
await
|
|
30
|
+
await startXNCPlugin(_server, {
|
|
34
31
|
autoDownload,
|
|
35
32
|
autoReload,
|
|
33
|
+
autoFixFirewall,
|
|
36
34
|
binaryPath: binaryPath,
|
|
37
35
|
version,
|
|
38
36
|
domains,
|
|
@@ -41,10 +39,9 @@ function XNCP(options) {
|
|
|
41
39
|
});
|
|
42
40
|
},
|
|
43
41
|
onServerStop: async () => {
|
|
44
|
-
|
|
42
|
+
Logger.info("[XyNginC] Shutting down Nginx Controller...");
|
|
45
43
|
},
|
|
46
|
-
});
|
|
44
|
+
}, __sys__.__root__);
|
|
47
45
|
}
|
|
48
46
|
// Named exports for direct usage
|
|
49
|
-
|
|
50
|
-
//# sourceMappingURL=index.js.map
|
|
47
|
+
export const XyNginC = XNCP;
|
package/dist/logger.d.ts
CHANGED
package/dist/logger.js
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
export class Logger {
|
|
2
|
+
static reset = "\x1b[0m";
|
|
3
|
+
static colors = {
|
|
4
|
+
info: "\x1b[34m", // Blue
|
|
5
|
+
error: "\x1b[31m", // Red
|
|
6
|
+
warn: "\x1b[33m", // Yellow
|
|
7
|
+
success: "\x1b[32m", // Green
|
|
8
|
+
debug: "\x1b[36m", // Cyan
|
|
9
|
+
};
|
|
5
10
|
static info(message) {
|
|
6
11
|
console.log(`${this.colors.info}${message}${this.reset}`);
|
|
7
12
|
}
|
|
@@ -18,13 +23,3 @@ class Logger {
|
|
|
18
23
|
console.log(`${this.colors.debug}${message}${this.reset}`);
|
|
19
24
|
}
|
|
20
25
|
}
|
|
21
|
-
exports.Logger = Logger;
|
|
22
|
-
Logger.reset = "\x1b[0m";
|
|
23
|
-
Logger.colors = {
|
|
24
|
-
info: "\x1b[34m", // Blue
|
|
25
|
-
error: "\x1b[31m", // Red
|
|
26
|
-
warn: "\x1b[33m", // Yellow
|
|
27
|
-
success: "\x1b[32m", // Green
|
|
28
|
-
debug: "\x1b[36m", // Cyan
|
|
29
|
-
};
|
|
30
|
-
//# sourceMappingURL=logger.js.map
|
package/dist/requirements.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export declare function installRequirementsHandler(binaryPath: string, sudoCmd:
|
|
|
16
16
|
export declare function applyConfig(binaryPath: string, config: {
|
|
17
17
|
domains: XyNginCDomainConfig[];
|
|
18
18
|
auto_reload: boolean;
|
|
19
|
+
auto_fix_firewall: boolean;
|
|
19
20
|
}, sudoCmd: string): Promise<void>;
|
|
20
21
|
/**
|
|
21
22
|
* Adds a new domain configuration using the binary.
|
|
@@ -81,4 +82,3 @@ export declare function checkRequirements(binaryPath: string, sudoCmd: string):
|
|
|
81
82
|
* preserving ANSI color codes printed by the Go binary.
|
|
82
83
|
*/
|
|
83
84
|
export declare function execStream(command: string): Promise<void>;
|
|
84
|
-
//# sourceMappingURL=requirements.d.ts.map
|
package/dist/requirements.js
CHANGED
|
@@ -1,41 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
exports.addDomain = addDomain;
|
|
6
|
-
exports.removeDomain = removeDomain;
|
|
7
|
-
exports.listDomains = listDomains;
|
|
8
|
-
exports.reloadNginx = reloadNginx;
|
|
9
|
-
exports.testNginx = testNginx;
|
|
10
|
-
exports.getStatus = getStatus;
|
|
11
|
-
exports.checkRequirements = checkRequirements;
|
|
12
|
-
exports.execStream = execStream;
|
|
13
|
-
const logger_1 = require("./logger");
|
|
14
|
-
const child_process_1 = require("child_process");
|
|
15
|
-
const execAsync_1 = require("./execAsync");
|
|
16
|
-
const xypriss_security_1 = require("xypriss-security");
|
|
1
|
+
import { Logger } from "./logger";
|
|
2
|
+
import { spawn } from "child_process";
|
|
3
|
+
import { execAsync } from "./execAsync";
|
|
4
|
+
import { XStringify } from "xypriss-security";
|
|
17
5
|
/**
|
|
18
6
|
* Installs system requirements using the binary in interactive mode.
|
|
19
7
|
*
|
|
20
8
|
* @param binaryPath - Path to the xynginc binary.
|
|
21
9
|
* @param sudoCmd - Sudo prefix to use.
|
|
22
10
|
*/
|
|
23
|
-
async function installRequirementsHandler(binaryPath, sudoCmd) {
|
|
11
|
+
export async function installRequirementsHandler(binaryPath, sudoCmd) {
|
|
24
12
|
return new Promise((resolve, reject) => {
|
|
25
|
-
|
|
26
|
-
|
|
13
|
+
Logger.info("[XyNginC] Launching interactive installer...");
|
|
14
|
+
Logger.info("[XyNginC] Please respond to any prompts in the terminal.");
|
|
27
15
|
// Handle process environmental logic if running via non-interactive sudo -S
|
|
28
16
|
const cmd = sudoCmd.includes("-S")
|
|
29
17
|
? `${sudoCmd} ${binaryPath} install`
|
|
30
18
|
: `sudo ${binaryPath} install`;
|
|
31
19
|
// Spawn the process with inherited stdio for full interactivity
|
|
32
|
-
const installProcess =
|
|
20
|
+
const installProcess = spawn(cmd, {
|
|
33
21
|
stdio: "inherit", // This allows the subprocess to use the parent's stdin/stdout/stderr
|
|
34
22
|
shell: true,
|
|
35
23
|
});
|
|
36
24
|
installProcess.on("close", (code) => {
|
|
37
25
|
if (code === 0) {
|
|
38
|
-
|
|
26
|
+
Logger.success("[XyNginC] ✓ System requirements installed successfully");
|
|
39
27
|
resolve();
|
|
40
28
|
}
|
|
41
29
|
else {
|
|
@@ -54,10 +42,11 @@ async function installRequirementsHandler(binaryPath, sudoCmd) {
|
|
|
54
42
|
* @param config - The configuration object.
|
|
55
43
|
* @param sudoCmd - Sudo prefix to use.
|
|
56
44
|
*/
|
|
57
|
-
async function applyConfig(binaryPath, config, sudoCmd) {
|
|
58
|
-
// Map camelCase to snake_case for
|
|
45
|
+
export async function applyConfig(binaryPath, config, sudoCmd) {
|
|
46
|
+
// Map camelCase to snake_case for Go core
|
|
59
47
|
const mappedConfig = {
|
|
60
48
|
auto_reload: config.auto_reload,
|
|
49
|
+
autofix_firewall: config.auto_fix_firewall,
|
|
61
50
|
domains: config.domains.map((d) => ({
|
|
62
51
|
domain: d.domain,
|
|
63
52
|
port: d.port,
|
|
@@ -67,7 +56,7 @@ async function applyConfig(binaryPath, config, sudoCmd) {
|
|
|
67
56
|
max_body_size: d.maxBodySize,
|
|
68
57
|
})),
|
|
69
58
|
};
|
|
70
|
-
const configJson =
|
|
59
|
+
const configJson = XStringify(mappedConfig, {
|
|
71
60
|
pureRaw: true,
|
|
72
61
|
maxDepth: 100,
|
|
73
62
|
maxLength: 2000000, // 2MB limit
|
|
@@ -76,10 +65,10 @@ async function applyConfig(binaryPath, config, sudoCmd) {
|
|
|
76
65
|
});
|
|
77
66
|
try {
|
|
78
67
|
// Test nginx BEFORE applying new config
|
|
79
|
-
|
|
68
|
+
Logger.info("[XyNginC] Testing current nginx config...");
|
|
80
69
|
const testResult = await testNginx(binaryPath, sudoCmd);
|
|
81
70
|
if (!testResult) {
|
|
82
|
-
|
|
71
|
+
Logger.warn("[XyNginC] ⚠️ Current nginx config has errors. Attempting to fix...");
|
|
83
72
|
}
|
|
84
73
|
// Pass config via stdin to avoid shell escaping issues
|
|
85
74
|
// If using sudo -S, we must pass both the password and the JSON in the same pipe
|
|
@@ -99,9 +88,9 @@ async function applyConfig(binaryPath, config, sudoCmd) {
|
|
|
99
88
|
}
|
|
100
89
|
catch (error) {
|
|
101
90
|
// If it fails, show more helpful error
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
91
|
+
Logger.error(`[XyNginC] Failed to apply configuration: ${error.message}`);
|
|
92
|
+
Logger.info("[XyNginC] Try running: sudo nginx -t");
|
|
93
|
+
Logger.info("[XyNginC] Check: /etc/nginx/sites-enabled/");
|
|
105
94
|
throw new Error(`Failed to apply configuration: ${error.message}`);
|
|
106
95
|
}
|
|
107
96
|
}
|
|
@@ -116,13 +105,13 @@ async function applyConfig(binaryPath, config, sudoCmd) {
|
|
|
116
105
|
* @param maxBodySize - Optional maximum body size.
|
|
117
106
|
* @param sudoCmd - Sudo prefix to use.
|
|
118
107
|
*/
|
|
119
|
-
async function addDomain(binaryPath, domain, port, ssl, email, maxBodySize, sudoCmd = "sudo") {
|
|
108
|
+
export async function addDomain(binaryPath, domain, port, ssl, email, maxBodySize, sudoCmd = "sudo") {
|
|
120
109
|
const sslFlag = ssl ? "--ssl" : "";
|
|
121
110
|
const emailFlag = email ? `--email ${email}` : "";
|
|
122
111
|
const maxBodySizeFlag = maxBodySize ? `--max-body-size ${maxBodySize}` : "";
|
|
123
112
|
try {
|
|
124
|
-
const { stdout } = await
|
|
125
|
-
|
|
113
|
+
const { stdout } = await execAsync(`${sudoCmd} ${binaryPath} add --domain ${domain} --port ${port} ${sslFlag} ${emailFlag} ${maxBodySizeFlag}`);
|
|
114
|
+
Logger.info(stdout.trim());
|
|
126
115
|
}
|
|
127
116
|
catch (error) {
|
|
128
117
|
throw new Error(`Failed to add domain: ${error.message}`);
|
|
@@ -135,10 +124,10 @@ async function addDomain(binaryPath, domain, port, ssl, email, maxBodySize, sudo
|
|
|
135
124
|
* @param domain - The domain name to remove.
|
|
136
125
|
* @param sudoCmd - Sudo prefix to use.
|
|
137
126
|
*/
|
|
138
|
-
async function removeDomain(binaryPath, domain, sudoCmd = "sudo") {
|
|
127
|
+
export async function removeDomain(binaryPath, domain, sudoCmd = "sudo") {
|
|
139
128
|
try {
|
|
140
|
-
const { stdout } = await
|
|
141
|
-
|
|
129
|
+
const { stdout } = await execAsync(`${sudoCmd} ${binaryPath} remove ${domain}`);
|
|
130
|
+
Logger.info(stdout.trim());
|
|
142
131
|
}
|
|
143
132
|
catch (error) {
|
|
144
133
|
throw new Error(`Failed to remove domain: ${error.message}`);
|
|
@@ -151,9 +140,9 @@ async function removeDomain(binaryPath, domain, sudoCmd = "sudo") {
|
|
|
151
140
|
* @param sudoCmd - Sudo prefix to use.
|
|
152
141
|
* @returns A list of domain names.
|
|
153
142
|
*/
|
|
154
|
-
async function listDomains(binaryPath, sudoCmd = "sudo") {
|
|
143
|
+
export async function listDomains(binaryPath, sudoCmd = "sudo") {
|
|
155
144
|
try {
|
|
156
|
-
const { stdout } = await
|
|
145
|
+
const { stdout } = await execAsync(`${sudoCmd} ${binaryPath} list`);
|
|
157
146
|
// Parse output to extract domain names
|
|
158
147
|
const lines = stdout.split("\n").filter((line) => line.includes(" - "));
|
|
159
148
|
return lines.map((line) => line.trim().split(" - ")[0]);
|
|
@@ -168,10 +157,10 @@ async function listDomains(binaryPath, sudoCmd = "sudo") {
|
|
|
168
157
|
* @param binaryPath - Path to the xynginc binary.
|
|
169
158
|
* @param sudoCmd - Sudo prefix to use.
|
|
170
159
|
*/
|
|
171
|
-
async function reloadNginx(binaryPath, sudoCmd = "sudo") {
|
|
160
|
+
export async function reloadNginx(binaryPath, sudoCmd = "sudo") {
|
|
172
161
|
try {
|
|
173
|
-
const { stdout } = await
|
|
174
|
-
|
|
162
|
+
const { stdout } = await execAsync(`${sudoCmd} ${binaryPath} reload`);
|
|
163
|
+
Logger.info(stdout.trim());
|
|
175
164
|
}
|
|
176
165
|
catch (error) {
|
|
177
166
|
throw new Error(`Failed to reload Nginx: ${error.message}`);
|
|
@@ -184,9 +173,9 @@ async function reloadNginx(binaryPath, sudoCmd = "sudo") {
|
|
|
184
173
|
* @param sudoCmd - Sudo prefix to use.
|
|
185
174
|
* @returns True if the configuration is valid.
|
|
186
175
|
*/
|
|
187
|
-
async function testNginx(binaryPath, sudoCmd = "sudo") {
|
|
176
|
+
export async function testNginx(binaryPath, sudoCmd = "sudo") {
|
|
188
177
|
try {
|
|
189
|
-
await
|
|
178
|
+
await execAsync(`${sudoCmd} ${binaryPath} test`);
|
|
190
179
|
return true;
|
|
191
180
|
}
|
|
192
181
|
catch {
|
|
@@ -200,9 +189,9 @@ async function testNginx(binaryPath, sudoCmd = "sudo") {
|
|
|
200
189
|
* @param sudoCmd - Sudo prefix to use.
|
|
201
190
|
* @returns The status output.
|
|
202
191
|
*/
|
|
203
|
-
async function getStatus(binaryPath, sudoCmd = "sudo") {
|
|
192
|
+
export async function getStatus(binaryPath, sudoCmd = "sudo") {
|
|
204
193
|
try {
|
|
205
|
-
const { stdout } = await
|
|
194
|
+
const { stdout } = await execAsync(`${sudoCmd} ${binaryPath} status`);
|
|
206
195
|
return stdout;
|
|
207
196
|
}
|
|
208
197
|
catch (error) {
|
|
@@ -216,17 +205,17 @@ async function getStatus(binaryPath, sudoCmd = "sudo") {
|
|
|
216
205
|
* @param sudoCmd - Sudo prefix to use.
|
|
217
206
|
* @returns True if requirements are met, false otherwise.
|
|
218
207
|
*/
|
|
219
|
-
async function checkRequirements(binaryPath, sudoCmd) {
|
|
208
|
+
export async function checkRequirements(binaryPath, sudoCmd) {
|
|
220
209
|
try {
|
|
221
|
-
|
|
210
|
+
Logger.info("[XyNginC] Checking system requirements...");
|
|
222
211
|
const cmd = `${sudoCmd} ${binaryPath} check`;
|
|
223
|
-
|
|
212
|
+
Logger.info(`[XyNginC] Running: ${cmd}`);
|
|
224
213
|
await execStream(cmd);
|
|
225
|
-
|
|
214
|
+
Logger.info("[XyNginC] System requirements checked successfully!");
|
|
226
215
|
return true;
|
|
227
216
|
}
|
|
228
217
|
catch (error) {
|
|
229
|
-
|
|
218
|
+
Logger.warn(`[XyNginC] System requirements check failed: ${error.message}`);
|
|
230
219
|
return false;
|
|
231
220
|
}
|
|
232
221
|
}
|
|
@@ -234,9 +223,9 @@ async function checkRequirements(binaryPath, sudoCmd) {
|
|
|
234
223
|
* Executes a shell command and streams its stdout/stderr line-by-line in real-time,
|
|
235
224
|
* preserving ANSI color codes printed by the Go binary.
|
|
236
225
|
*/
|
|
237
|
-
function execStream(command) {
|
|
226
|
+
export function execStream(command) {
|
|
238
227
|
return new Promise((resolve, reject) => {
|
|
239
|
-
const child =
|
|
228
|
+
const child = spawn(command, { shell: true });
|
|
240
229
|
let stderrData = "";
|
|
241
230
|
child.stdout.on("data", (data) => {
|
|
242
231
|
// Print raw data so inner ANSI codes from Go are preserved directly in PM2
|
|
@@ -258,4 +247,3 @@ function execStream(command) {
|
|
|
258
247
|
});
|
|
259
248
|
});
|
|
260
249
|
}
|
|
261
|
-
//# sourceMappingURL=requirements.js.map
|
package/dist/startPlugin.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export declare function startXNCPlugin(server: any, options: {
|
|
|
5
5
|
version: string;
|
|
6
6
|
domains: XyNginCDomainConfig[];
|
|
7
7
|
autoReload: boolean;
|
|
8
|
+
autoFixFirewall: boolean;
|
|
8
9
|
installRequirements: boolean;
|
|
9
10
|
sudoPassword: string;
|
|
10
11
|
}): Promise<void>;
|
|
11
|
-
//# sourceMappingURL=startPlugin.d.ts.map
|
package/dist/startPlugin.js
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const ensureBinary_1 = require("./ensureBinary");
|
|
5
|
-
const logger_1 = require("./logger");
|
|
6
|
-
const requirements_1 = require("./requirements");
|
|
1
|
+
import { ensureBinary } from "./ensureBinary";
|
|
2
|
+
import { Logger } from "./logger";
|
|
3
|
+
import { addDomain, applyConfig, checkRequirements, getStatus, installRequirementsHandler, listDomains, reloadNginx, removeDomain, testNginx, } from "./requirements";
|
|
7
4
|
const getSudo = (sudoPassword) => {
|
|
8
5
|
// Attempt multiple ways to get the password, including XyPriss internal env if somehow exposed
|
|
9
6
|
const envPwd = process.env.SUDO_PASSWORD;
|
|
@@ -11,58 +8,61 @@ const getSudo = (sudoPassword) => {
|
|
|
11
8
|
const pwd = sudoPassword || envPwd;
|
|
12
9
|
if (pwd) {
|
|
13
10
|
if (sudoPassword) {
|
|
14
|
-
|
|
11
|
+
Logger.info(`[XyNginC] Using sudo password provided via plugin options(${sudoPassword.slice(0, 2)}***).`);
|
|
15
12
|
}
|
|
16
13
|
else {
|
|
17
|
-
|
|
14
|
+
Logger.info("[XyNginC] Using sudo password injected from environment variables.");
|
|
18
15
|
}
|
|
19
16
|
return `echo '${pwd}' | sudo -S`;
|
|
20
17
|
}
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
Logger.warn("[XyNginC] ⚠️ No sudo password provided. Falling back to non-interactive mode (sudo -n).");
|
|
19
|
+
Logger.warn("[XyNginC] ⚠️ If the command requires a password, it will fail immediately instead of hanging.");
|
|
23
20
|
// Return non-interactive sudo to prevent infinite blocking/hanging
|
|
24
21
|
return "sudo -n";
|
|
25
22
|
};
|
|
26
|
-
async function startXNCPlugin(server, options) {
|
|
27
|
-
const { binaryPath, autoDownload, version, domains, autoReload, installRequirements, sudoPassword, } = options;
|
|
28
|
-
|
|
23
|
+
export async function startXNCPlugin(server, options) {
|
|
24
|
+
const { binaryPath, autoDownload, version, domains, autoReload, autoFixFirewall, installRequirements, sudoPassword, } = options;
|
|
25
|
+
Logger.info("[XyNginC] Initializing Nginx Controller...");
|
|
29
26
|
try {
|
|
30
27
|
// 1. Ensure binary exists
|
|
31
|
-
const binary = await
|
|
32
|
-
|
|
28
|
+
const binary = await ensureBinary(binaryPath, autoDownload, version);
|
|
29
|
+
Logger.success(`[XyNginC] ✓ Binary located: ${binary}`);
|
|
33
30
|
// 2. Check system requirements
|
|
34
|
-
|
|
31
|
+
Logger.info("[XyNginC] Checking system requirements...");
|
|
35
32
|
// Check if requirements are satisfied
|
|
36
|
-
const requirementsOk = await
|
|
33
|
+
const requirementsOk = await checkRequirements(binary, getSudo(sudoPassword));
|
|
37
34
|
// Install requirements if enabled and needed
|
|
38
35
|
if (!requirementsOk && installRequirements) {
|
|
39
|
-
|
|
40
|
-
await
|
|
41
|
-
|
|
42
|
-
await
|
|
36
|
+
Logger.info("[XyNginC] Requirements missing, installing automatically...");
|
|
37
|
+
await installRequirementsHandler(binary, getSudo(sudoPassword));
|
|
38
|
+
Logger.info("[XyNginC] Requirements installed, re-checking...");
|
|
39
|
+
await checkRequirements(binary, getSudo(sudoPassword));
|
|
43
40
|
}
|
|
44
41
|
else if (!requirementsOk) {
|
|
45
42
|
throw new Error("[XyNginC] System requirements not satisfied. Install with 'installRequirements: true' or run: sudo xynginc install");
|
|
46
43
|
}
|
|
47
44
|
// 3. Apply configuration
|
|
48
|
-
|
|
49
|
-
await
|
|
50
|
-
|
|
45
|
+
Logger.info("[XyNginC] Applying configuration...");
|
|
46
|
+
await applyConfig(binary, {
|
|
47
|
+
domains,
|
|
48
|
+
auto_reload: autoReload,
|
|
49
|
+
auto_fix_firewall: autoFixFirewall,
|
|
50
|
+
}, getSudo(sudoPassword));
|
|
51
|
+
Logger.success("[XyNginC] Configuration applied successfully!");
|
|
51
52
|
// Expose CLI helper methods on server
|
|
52
53
|
server.xynginc = {
|
|
53
|
-
addDomain: (domain, port, ssl = false, email, maxBodySize) =>
|
|
54
|
-
removeDomain: (domain) =>
|
|
55
|
-
listDomains: () =>
|
|
56
|
-
reload: () =>
|
|
57
|
-
test: () =>
|
|
58
|
-
status: () =>
|
|
59
|
-
installRequirements: () =>
|
|
54
|
+
addDomain: (domain, port, ssl = false, email, maxBodySize) => addDomain(binary, domain, port, ssl, email, maxBodySize, getSudo(sudoPassword)),
|
|
55
|
+
removeDomain: (domain) => removeDomain(binary, domain, getSudo(sudoPassword)),
|
|
56
|
+
listDomains: () => listDomains(binary, getSudo(sudoPassword)),
|
|
57
|
+
reload: () => reloadNginx(binary, getSudo(sudoPassword)),
|
|
58
|
+
test: () => testNginx(binary, getSudo(sudoPassword)),
|
|
59
|
+
status: () => getStatus(binary, getSudo(sudoPassword)),
|
|
60
|
+
installRequirements: () => installRequirementsHandler(binary, getSudo(sudoPassword)),
|
|
60
61
|
};
|
|
61
|
-
|
|
62
|
+
Logger.info("[XyNginC] Server methods available: server.xynginc.*");
|
|
62
63
|
}
|
|
63
64
|
catch (error) {
|
|
64
|
-
|
|
65
|
+
Logger.error(`[XyNginC] ✖ Failed to initialize: ${error}`);
|
|
65
66
|
throw error;
|
|
66
67
|
}
|
|
67
68
|
}
|
|
68
|
-
//# sourceMappingURL=startPlugin.js.map
|
package/dist/types.d.ts
CHANGED
|
@@ -44,6 +44,11 @@ export interface XyNginCConfig {
|
|
|
44
44
|
* @default true
|
|
45
45
|
*/
|
|
46
46
|
autoReload?: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Whether to automatically open Port 80 and 443 in the firewall (UFW) if they are blocked.
|
|
49
|
+
* @default false
|
|
50
|
+
*/
|
|
51
|
+
autoFixFirewall?: boolean;
|
|
47
52
|
}
|
|
48
53
|
/**
|
|
49
54
|
* Options for initializing the XyNginC plugin.
|
|
@@ -75,4 +80,3 @@ export interface XyNginCPluginOptions extends XyNginCConfig {
|
|
|
75
80
|
*/
|
|
76
81
|
sudoPassword?: string;
|
|
77
82
|
}
|
|
78
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/*
|
|
3
2
|
* This code contains proprietary source code from NEHONIX
|
|
4
3
|
* Copyright © 2025 NEHONIX - www.nehonix.com
|
|
5
4
|
* Licensed under NEHONIX Open Source License (NOSL) v1.0
|
|
6
5
|
*/
|
|
7
|
-
|
|
8
|
-
//# sourceMappingURL=types.js.map
|
|
6
|
+
export {};
|
package/dist/validateConfig.d.ts
CHANGED
package/dist/validateConfig.js
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validateConfig = validateConfig;
|
|
4
1
|
/**
|
|
5
2
|
* Validates the plugin configuration.
|
|
6
3
|
*
|
|
7
4
|
* @param config - The configuration to validate.
|
|
8
5
|
* @throws Error if the configuration is invalid.
|
|
9
6
|
*/
|
|
10
|
-
function validateConfig(config) {
|
|
7
|
+
export function validateConfig(config) {
|
|
11
8
|
if (!config.domains || config.domains.length === 0) {
|
|
12
9
|
throw new Error("[XyNginC] Configuration error: 'domains' array cannot be empty");
|
|
13
10
|
}
|
|
@@ -34,4 +31,3 @@ function validateConfig(config) {
|
|
|
34
31
|
}
|
|
35
32
|
}
|
|
36
33
|
}
|
|
37
|
-
//# sourceMappingURL=validateConfig.js.map
|
package/package.json
CHANGED
|
@@ -1,21 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xynginc",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.82",
|
|
4
4
|
"description": "XyPriss Nginx Controller - Automatic Nginx & SSL management for XyPriss servers",
|
|
5
|
+
"author": "Seth Eleazar - iDevo",
|
|
6
|
+
"license": "NOSL",
|
|
5
7
|
"main": "dist/index.js",
|
|
6
8
|
"types": "dist/index.d.ts",
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"scripts",
|
|
12
|
+
"README.md",
|
|
13
|
+
"xypriss.plugin.xsig"
|
|
14
|
+
],
|
|
7
15
|
"bin": {
|
|
8
16
|
"xynginc": "./bin/xynginc"
|
|
9
17
|
},
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"prepublishOnly": "xfpm run build",
|
|
17
|
-
"postinstall": "node scripts/postinstall.js",
|
|
18
|
-
"install:manual": "sudo bash scripts/install.sh"
|
|
18
|
+
"engines": {
|
|
19
|
+
"node": ">=18.0.0"
|
|
20
|
+
},
|
|
21
|
+
"repository": {
|
|
22
|
+
"type": "git",
|
|
23
|
+
"url": "https://github.com/Nehonix-Team/xynginc.git"
|
|
19
24
|
},
|
|
20
25
|
"keywords": [
|
|
21
26
|
"xypriss",
|
|
@@ -26,33 +31,28 @@
|
|
|
26
31
|
"letsencrypt",
|
|
27
32
|
"plugin"
|
|
28
33
|
],
|
|
29
|
-
"
|
|
30
|
-
|
|
34
|
+
"scripts": {
|
|
35
|
+
"build": "tsc && xfpm run build:multi",
|
|
36
|
+
"build:all": "xfpm run build:go && xfpm run build",
|
|
37
|
+
"build:go": "cd core-go && go build -o xynginc && cp xynginc ../bin/",
|
|
38
|
+
"build:multi": "bash scripts/build.sh",
|
|
39
|
+
"dev": "tsc --watch",
|
|
40
|
+
"install:manual": "sudo bash scripts/install.sh",
|
|
41
|
+
"postinstall": "node scripts/postinstall.js",
|
|
42
|
+
"prepublishOnly": "xfpm run build && xfpm sign ./ --min-version 1.0.81 --fix"
|
|
43
|
+
},
|
|
44
|
+
"dependencies": {
|
|
45
|
+
"xypriss": "^9.9.4",
|
|
46
|
+
"xypriss-security": "^2.1.16"
|
|
47
|
+
},
|
|
31
48
|
"devDependencies": {
|
|
32
49
|
"@types/node": "^20.19.37",
|
|
33
50
|
"typescript": "^5.9.3"
|
|
34
51
|
},
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
],
|
|
41
|
-
"os": [
|
|
42
|
-
"linux"
|
|
43
|
-
],
|
|
44
|
-
"engines": {
|
|
45
|
-
"node": ">=18.0.0"
|
|
46
|
-
},
|
|
47
|
-
"repository": {
|
|
48
|
-
"type": "git",
|
|
49
|
-
"url": "https://github.com/Nehonix-Team/xynginc.git"
|
|
50
|
-
},
|
|
51
|
-
"bugs": {
|
|
52
|
-
"url": "https://github.com/Nehonix-Team/xynginc.git/issues"
|
|
53
|
-
},
|
|
54
|
-
"dependencies": {
|
|
55
|
-
"xypriss": "^9.3.71",
|
|
56
|
-
"xypriss-security": "^2.1.10"
|
|
52
|
+
"xfpm": {
|
|
53
|
+
"permissions": [
|
|
54
|
+
"XHS.HOOK.HTTP.REQUEST",
|
|
55
|
+
"XHS.HOOK.LIFECYCLE.SERVER_READY"
|
|
56
|
+
]
|
|
57
57
|
}
|
|
58
|
-
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
--- XYPRISS SIGNATURE (G3) ---
|
|
2
|
+
Manifest: xynginc@1.0.82
|
|
3
|
+
Min-Engine: 1.0.81
|
|
4
|
+
Fingerprint: sha256:5b4a4e3f77d74918ee049a1f75d696795494b509fc4747bd336f759595d70ae6
|
|
5
|
+
Identity: ed25519:a58b17a3e46302dd3ae5538bc9b8b991c57f4c5fe2e7d8ac41803de818d947f4
|
|
6
|
+
Privileges: XHS.HOOK.HTTP.REQUEST,XHS.HOOK.LIFECYCLE.SERVER_READY
|
|
7
|
+
Expires: 2027-04-28T08:28:51Z
|
|
8
|
+
Revision: sha256:none
|
|
9
|
+
--- BEGIN CRYPTOGRAPHIC PROOF ---
|
|
10
|
+
base64:+YptK2eQ2i9XI3jxC0oHQ/jjUphmWGu9oPH0Gw2BW4dl3GmwEXNMXj42EDQBjrZREGpy0D7FWtnu4Q+ApR19CA==
|
|
11
|
+
--- END XYPRISS SIGNATURE ---
|
package/dist/constant.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constant.d.ts","sourceRoot":"","sources":["../src/constant.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,YAAY,CAAC;AACrC,eAAO,MAAM,WAAW,yBAAyB,CAAC;AAClD,eAAO,MAAM,UAAU,QAAiC,CAAC"}
|
package/dist/constant.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constant.js","sourceRoot":"","sources":["../src/constant.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAEX,QAAA,WAAW,GAAG,SAAS,CAAC;AACxB,QAAA,WAAW,GAAG,sBAAsB,CAAC;AACrC,QAAA,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"downloadBinary.d.ts","sourceRoot":"","sources":["../src/downloadBinary.ts"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiErE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"downloadBinary.js","sourceRoot":"","sources":["../src/downloadBinary.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,wCAiEC;AA9ED,qCAAkC;AAClC,6CAA+B;AAC/B,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AACzB,yCAAkE;AAElE;;;;;GAKG;AACI,KAAK,UAAU,cAAc,CAAC,OAAe;IAClD,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;IAEvB,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,mCAAmC,QAAQ,4BAA4B,CACxE,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,sBAAW,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;IACxD,MAAM,WAAW,GACf,OAAO,KAAK,QAAQ;QAClB,CAAC,CAAC,sBAAsB,sBAAW,6BAA6B,UAAU,EAAE;QAC5E,CAAC,CAAC,sBAAsB,sBAAW,sBAAsB,OAAO,IAAI,UAAU,EAAE,CAAC;IAErF,eAAM,CAAC,IAAI,CAAC,+BAA+B,WAAW,EAAE,CAAC,CAAC;IAE1D,uBAAuB;IACvB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,qBAAU,CAAC,EAAE,CAAC;QAC/B,EAAE,CAAC,SAAS,CAAC,qBAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAU,EAAE,sBAAW,CAAC,CAAC;IAErD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,SAAS,QAAQ,CAAC,GAAW;YAC3B,KAAK;iBACF,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE;gBACrB,IACE,QAAQ,CAAC,UAAU;oBACnB,QAAQ,CAAC,UAAU,IAAI,GAAG;oBAC1B,QAAQ,CAAC,UAAU,GAAG,GAAG;oBACzB,QAAQ,CAAC,OAAO,CAAC,QAAQ,EACzB,CAAC;oBACD,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBACpC,OAAO;gBACT,CAAC;gBAED,IAAI,QAAQ,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;oBAChC,MAAM,CACJ,IAAI,KAAK,CACP,mCAAmC,QAAQ,CAAC,UAAU,EAAE,CACzD,CACF,CAAC;oBACF,OAAO;gBACT,CAAC;gBAED,MAAM,IAAI,GAAG,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBAC7C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpB,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;oBACrB,IAAI,CAAC,KAAK,EAAE,CAAC;oBACb,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,kBAAkB;oBAClD,eAAM,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC;oBAC7D,OAAO,CAAC,SAAS,CAAC,CAAC;gBACrB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;iBACD,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACnB,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBACvD,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;QACP,CAAC;QAED,QAAQ,CAAC,WAAW,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ensureBinary.d.ts","sourceRoot":"","sources":["../src/ensureBinary.ts"],"names":[],"mappings":"AAOA;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,YAAY,EAAE,OAAO,EACrB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAgCjB"}
|
package/dist/ensureBinary.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ensureBinary.js","sourceRoot":"","sources":["../src/ensureBinary.ts"],"names":[],"mappings":";;;;;AAiBA,oCAoCC;AArDD,4CAAmB;AACnB,gDAAuB;AACvB,qCAAiC;AACjC,2CAAwC;AACxC,yCAAqD;AACrD,qDAAkD;AAElD;;;;;;;;;GASG;AACI,KAAK,UAAU,YAAY,CAChC,UAA8B,EAC9B,YAAqB,EACrB,OAAe;IAEf,qBAAqB;IACrB,IAAI,UAAU,IAAI,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5C,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,cAAc;IACd,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,qBAAS,EAAC,eAAe,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,UAAU,IAAI,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5C,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,cAAc;IAChB,CAAC;IAED,6BAA6B;IAC7B,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,qBAAU,EAAE,sBAAW,CAAC,CAAC;IACrD,IAAI,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,8BAA8B;IAC9B,IAAI,YAAY,EAAE,CAAC;QACjB,eAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO,MAAM,IAAA,+BAAc,EAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,IAAI,KAAK,CACb,yEAAyE,CAC1E,CAAC;AACJ,CAAC"}
|
package/dist/execAsync.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"execAsync.d.ts","sourceRoot":"","sources":["../src/execAsync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAGrC,eAAO,MAAM,SAAS,2BAAkB,CAAC"}
|
package/dist/execAsync.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"execAsync.js","sourceRoot":"","sources":["../src/execAsync.ts"],"names":[],"mappings":";;;AAAA,iDAAqC;AACrC,+BAAiC;AAEpB,QAAA,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAC"}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAIjB;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,OAAO,EAAE,oBAAoB,mCAsCzD;AAGD,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,CAAC;AAGzE,eAAO,MAAM,OAAO,aAAO,CAAC"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAmBH,uBAsCC;AAvDD,qCAAiC;AACjC,qCAAkC;AAMlC,qDAAkD;AAClD,+CAA+C;AAE/C;;;;;;GAMG;AACH,SAAwB,IAAI,CAAC,OAA6B;IACxD,MAAM,EACJ,OAAO,EACP,UAAU,GAAG,IAAI,EACjB,UAAU,EACV,YAAY,GAAG,IAAI,EACnB,OAAO,GAAG,QAAQ,EAClB,mBAAmB,GAAG,IAAI,EAC1B,YAAY,GACb,GAAG,OAAO,CAAC;IAEZ,OAAO,gBAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,QAAQ;QACjB,WAAW,EAAE,6DAA6D;QAE1E,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC3B,eAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAC/C,IAAA,+BAAc,EAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QAC1C,CAAC;QAED,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC/B,kBAAkB;YAClB,MAAM,IAAA,4BAAc,EAAC,OAAO,EAAE;gBAC5B,YAAY;gBACZ,UAAU;gBACV,UAAU,EAAE,UAAU;gBACtB,OAAO;gBACP,OAAO;gBACP,mBAAmB;gBACnB,YAAY,EAAE,YAAY,IAAI,EAAE;aACjC,CAAC,CAAC;QACL,CAAC;QAED,YAAY,EAAE,KAAK,IAAI,EAAE;YACvB,eAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QAC7D,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAKD,iCAAiC;AACpB,QAAA,OAAO,GAAG,IAAI,CAAC"}
|
package/dist/logger.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAa;IACjC,OAAO,CAAC,MAAM,CAAC,MAAM,CAMnB;IAEF,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM;IAI3B,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM;IAI5B,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM;IAI3B,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM;IAI9B,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM;CAG7B"}
|
package/dist/logger.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";;;AAAA,MAAa,MAAM;IAUjB,MAAM,CAAC,IAAI,CAAC,OAAe;QACzB,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAe;QAC1B,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAe;QACzB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,OAAe;QAC5B,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAe;QAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7D,CAAC;;AA5BH,wBA6BC;AA5BgB,YAAK,GAAG,SAAS,CAAC;AAClB,aAAM,GAAG;IACtB,IAAI,EAAE,UAAU,EAAE,OAAO;IACzB,KAAK,EAAE,UAAU,EAAE,MAAM;IACzB,IAAI,EAAE,UAAU,EAAE,SAAS;IAC3B,OAAO,EAAE,UAAU,EAAE,QAAQ;IAC7B,KAAK,EAAE,UAAU,EAAE,OAAO;CAC3B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"requirements.d.ts","sourceRoot":"","sources":["../src/requirements.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAI9C;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE;IAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,EAChE,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CA0Df;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,SAAS,CAC7B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,OAAO,EACZ,KAAK,CAAC,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,GAAE,MAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CAaf;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,MAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CASf;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,MAAe,GACvB,OAAO,CAAC,MAAM,EAAE,CAAC,CASnB;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,MAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,MAAe,GACvB,OAAO,CAAC,OAAO,CAAC,CAOlB;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,MAAe,GACvB,OAAO,CAAC,MAAM,CAAC,CAOjB;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBzD"}
|
package/dist/requirements.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"requirements.js","sourceRoot":"","sources":["../src/requirements.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"startPlugin.d.ts","sourceRoot":"","sources":["../src/startPlugin.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAiC9C,wBAAsB,cAAc,CAClC,MAAM,EAAE,GAAG,EACX,OAAO,EAAE;IACP,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,UAAU,EAAE,OAAO,CAAC;IACpB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;CACtB,iBAoFF"}
|
package/dist/startPlugin.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"startPlugin.js","sourceRoot":"","sources":["../src/startPlugin.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;IAEd;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAE/B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB"}
|
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validateConfig.d.ts","sourceRoot":"","sources":["../src/validateConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAyC1D"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validateConfig.js","sourceRoot":"","sources":["../src/validateConfig.ts"],"names":[],"mappings":";;AAQA,wCAyCC;AA/CD;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,MAAqB;IAClD,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;QACJ,CAAC;QAED,IACE,CAAC,MAAM,CAAC,IAAI;YACZ,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;YAC/B,MAAM,CAAC,IAAI,GAAG,CAAC;YACf,MAAM,CAAC,IAAI,GAAG,KAAK,EACnB,CAAC;YACD,MAAM,IAAI,KAAK,CACb,qEAAqE,MAAM,CAAC,MAAM,EAAE,CACrF,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CACb,8EAA8E,MAAM,CAAC,MAAM,EAAE,CAC9F,CAAC;QACJ,CAAC;QAED,gDAAgD;QAChD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC;QAC5B,CAAC;QAED,0CAA0C;QAC1C,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACxB,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;QAC7B,CAAC;IACH,CAAC;AACH,CAAC"}
|