onboardconnect-agent 0.1.1
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/crypto.d.ts +3 -0
- package/dist/crypto.d.ts.map +1 -0
- package/dist/crypto.js +12 -0
- package/dist/crypto.js.map +1 -0
- package/dist/heartbeat.d.ts +17 -0
- package/dist/heartbeat.d.ts.map +1 -0
- package/dist/heartbeat.js +86 -0
- package/dist/heartbeat.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +81 -0
- package/dist/index.js.map +1 -0
- package/dist/ldap.d.ts +31 -0
- package/dist/ldap.d.ts.map +1 -0
- package/dist/ldap.js +420 -0
- package/dist/ldap.js.map +1 -0
- package/dist/logger.d.ts +9 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +47 -0
- package/dist/logger.js.map +1 -0
- package/dist/relay.d.ts +38 -0
- package/dist/relay.d.ts.map +1 -0
- package/dist/relay.js +347 -0
- package/dist/relay.js.map +1 -0
- package/dist/request-log.d.ts +24 -0
- package/dist/request-log.d.ts.map +1 -0
- package/dist/request-log.js +52 -0
- package/dist/request-log.js.map +1 -0
- package/dist/server.d.ts +30 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +509 -0
- package/dist/server.js.map +1 -0
- package/dist/setup.d.ts +3 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +342 -0
- package/dist/setup.js.map +1 -0
- package/dist/store.d.ts +53 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +170 -0
- package/dist/store.js.map +1 -0
- package/dist/uninstall.d.ts +2 -0
- package/dist/uninstall.d.ts.map +1 -0
- package/dist/uninstall.js +127 -0
- package/dist/uninstall.js.map +1 -0
- package/dist/updater.d.ts +4 -0
- package/dist/updater.d.ts.map +1 -0
- package/dist/updater.js +30 -0
- package/dist/updater.js.map +1 -0
- package/package.json +62 -0
- package/scripts/install.ps1 +133 -0
- package/scripts/install.sh +132 -0
- package/scripts/postinstall.js +21 -0
- package/scripts/postinstall.ts +24 -0
- package/scripts/uninstall.ps1 +93 -0
- package/scripts/uninstall.sh +85 -0
- package/ui/assets/index-Bf505_Hi.css +1 -0
- package/ui/assets/index-zxbHz6zx.js +71 -0
- package/ui/index.html +23 -0
package/dist/setup.js
ADDED
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import ora from "ora";
|
|
3
|
+
import inquirer from "inquirer";
|
|
4
|
+
import { OcStore } from "./store.js";
|
|
5
|
+
async function ocSetup() {
|
|
6
|
+
console.log(chalk.bold.blue("\n OnboardConnect On-Prem Agent — Setup Wizard\n"));
|
|
7
|
+
console.log(chalk.gray(" This wizard will configure your on-premises agent.\n"));
|
|
8
|
+
// Step 1: Prerequisites
|
|
9
|
+
const spinner = ora("Checking prerequisites...").start();
|
|
10
|
+
const nodeVersion = process.version;
|
|
11
|
+
const major = parseInt(nodeVersion.slice(1).split(".")[0] ?? "0", 10);
|
|
12
|
+
if (major < 18) {
|
|
13
|
+
spinner.fail(`Node.js >= 18 required. Found: ${nodeVersion}`);
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
spinner.succeed(`Node.js ${nodeVersion} ✓`);
|
|
17
|
+
// Check cloudflared
|
|
18
|
+
const cloudflaredCheck = ora("Checking for cloudflared...").start();
|
|
19
|
+
try {
|
|
20
|
+
const { execSync } = await import("child_process");
|
|
21
|
+
execSync("cloudflared --version", { stdio: "pipe" });
|
|
22
|
+
cloudflaredCheck.succeed("cloudflared found ✓");
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
cloudflaredCheck.warn("cloudflared not found");
|
|
26
|
+
console.log(chalk.yellow("\n Please install cloudflared first:\n" +
|
|
27
|
+
" https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/\n"));
|
|
28
|
+
const { proceed } = await inquirer.prompt([{
|
|
29
|
+
type: "confirm",
|
|
30
|
+
name: "proceed",
|
|
31
|
+
message: "Continue anyway?",
|
|
32
|
+
default: false,
|
|
33
|
+
}]);
|
|
34
|
+
if (!proceed)
|
|
35
|
+
process.exit(0);
|
|
36
|
+
}
|
|
37
|
+
// Step 2: Setup token
|
|
38
|
+
console.log(chalk.bold("\n Step 1: Setup Token\n"));
|
|
39
|
+
const { setupToken } = await inquirer.prompt([{
|
|
40
|
+
type: "password",
|
|
41
|
+
name: "setupToken",
|
|
42
|
+
message: "Enter the one-time setup token from your Tenant Portal:",
|
|
43
|
+
validate: (v) => v.length > 0 || "Token is required",
|
|
44
|
+
}]);
|
|
45
|
+
const tokenSpinner = ora("Exchanging setup token...").start();
|
|
46
|
+
let credentials;
|
|
47
|
+
try {
|
|
48
|
+
const response = await fetch(`${process.env["OC_API_BASE"] ?? "https://api.onboardconnectapp.com"}/api/tenant/agent/exchange-token`, {
|
|
49
|
+
method: "POST",
|
|
50
|
+
headers: { "Content-Type": "application/json" },
|
|
51
|
+
body: JSON.stringify({ setupToken }),
|
|
52
|
+
});
|
|
53
|
+
if (!response.ok)
|
|
54
|
+
throw new Error(`Token exchange failed: ${response.status}`);
|
|
55
|
+
credentials = await response.json();
|
|
56
|
+
tokenSpinner.succeed("Token exchanged successfully ✓");
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
tokenSpinner.fail(`Token exchange failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
// Step 3: Agent name
|
|
63
|
+
console.log(chalk.bold("\n Step 2: Agent Name\n"));
|
|
64
|
+
const { agentName } = await inquirer.prompt([{
|
|
65
|
+
type: "input",
|
|
66
|
+
name: "agentName",
|
|
67
|
+
message: "Name this agent (e.g. Main Campus DC):",
|
|
68
|
+
validate: (v) => v.length > 0 || "Name is required",
|
|
69
|
+
}]);
|
|
70
|
+
// Step 4: LDAP configuration
|
|
71
|
+
console.log(chalk.bold("\n Step 3: LDAP Configuration\n"));
|
|
72
|
+
const { authMode } = await inquirer.prompt([{
|
|
73
|
+
type: "list",
|
|
74
|
+
name: "authMode",
|
|
75
|
+
message: "LDAP authentication mode:",
|
|
76
|
+
choices: [
|
|
77
|
+
{ name: "Explicit credentials (bind DN + password)", value: "explicit" },
|
|
78
|
+
{ name: "Windows Service Account (service runs as domain account — no password stored)", value: "service_account" },
|
|
79
|
+
],
|
|
80
|
+
default: "explicit",
|
|
81
|
+
}]);
|
|
82
|
+
const ldapBase = await inquirer.prompt([
|
|
83
|
+
{ type: "input", name: "host", message: "LDAP server hostname or IP:", validate: (v) => v.length > 0 || "Required" },
|
|
84
|
+
{ type: "number", name: "port", message: "LDAP port:", default: authMode === "service_account" ? 389 : 636 },
|
|
85
|
+
{ type: "input", name: "baseDn", message: "Base DN (e.g. DC=university,DC=edu):", validate: (v) => v.length > 0 || "Required" },
|
|
86
|
+
{ type: "input", name: "defaultOu", message: "Default OU for new accounts (e.g. OU=Students,DC=university,DC=edu):", validate: (v) => v.length > 0 || "Required" },
|
|
87
|
+
]);
|
|
88
|
+
let bindDn = "";
|
|
89
|
+
let bindPassword = "";
|
|
90
|
+
if (authMode === "explicit") {
|
|
91
|
+
const creds = await inquirer.prompt([
|
|
92
|
+
{ type: "input", name: "bindDn", message: "Bind DN (e.g. CN=oc-service,OU=ServiceAccounts,DC=university,DC=edu):", validate: (v) => v.length > 0 || "Required" },
|
|
93
|
+
{ type: "password", name: "bindPassword", message: "Bind password:", validate: (v) => v.length > 0 || "Required" },
|
|
94
|
+
]);
|
|
95
|
+
bindDn = creds.bindDn;
|
|
96
|
+
bindPassword = creds.bindPassword;
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
console.log(chalk.gray("\n Service Account mode: the Windows service will authenticate to LDAP using\n" +
|
|
100
|
+
" the domain account it runs as. Configure the service account in Windows\n" +
|
|
101
|
+
" Services after setup completes (Services → OnboardConnect Agent → Log On).\n"));
|
|
102
|
+
}
|
|
103
|
+
const ldapAnswers = { ...ldapBase, bindDn, bindPassword, authMode, disabledOu: "" };
|
|
104
|
+
const ldapSpinner = ora("Testing LDAP connection...").start();
|
|
105
|
+
try {
|
|
106
|
+
const { Client } = await import("ldapts");
|
|
107
|
+
const proto = ldapAnswers.port === 636 ? "ldaps" : "ldap";
|
|
108
|
+
const client = new Client({ url: `${proto}://${ldapAnswers.host}:${ldapAnswers.port}` });
|
|
109
|
+
if (authMode === "explicit") {
|
|
110
|
+
await client.bind(ldapAnswers.bindDn, ldapAnswers.bindPassword);
|
|
111
|
+
}
|
|
112
|
+
await client.unbind();
|
|
113
|
+
ldapSpinner.succeed("LDAP connection successful ✓");
|
|
114
|
+
}
|
|
115
|
+
catch (err) {
|
|
116
|
+
ldapSpinner.fail(`LDAP connection failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
117
|
+
const { cont } = await inquirer.prompt([{
|
|
118
|
+
type: "confirm", name: "cont", message: "Continue setup anyway?", default: false,
|
|
119
|
+
}]);
|
|
120
|
+
if (!cont)
|
|
121
|
+
process.exit(1);
|
|
122
|
+
}
|
|
123
|
+
// Step 5: Required file paths
|
|
124
|
+
console.log(chalk.bold("\n Step 4: File Paths\n"));
|
|
125
|
+
console.log(chalk.gray(" These directories are used by workflow steps that read from or write to\n" +
|
|
126
|
+
" files on this machine. Use absolute paths the service account can access.\n"));
|
|
127
|
+
const pathAnswers = await inquirer.prompt([
|
|
128
|
+
{
|
|
129
|
+
type: "input",
|
|
130
|
+
name: "fileReadPath",
|
|
131
|
+
message: "File read directory (agent reads input files from here):",
|
|
132
|
+
validate: (v) => v.trim().length > 0 || "Required — e.g. C:\\OC\\Imports",
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
type: "input",
|
|
136
|
+
name: "fileWritePath",
|
|
137
|
+
message: "File write directory (agent writes output files here):",
|
|
138
|
+
validate: (v) => v.trim().length > 0 || "Required — e.g. C:\\OC\\Exports",
|
|
139
|
+
},
|
|
140
|
+
]);
|
|
141
|
+
// Step 6: Additional path aliases (optional)
|
|
142
|
+
console.log(chalk.bold("\n Step 5: Additional Path Aliases (optional)\n"));
|
|
143
|
+
console.log(chalk.gray(" Aliases let workflow steps reference files by a short token\n" +
|
|
144
|
+
" (e.g. {slate_export}) instead of a full absolute path.\n" +
|
|
145
|
+
" The read/write directories above are registered automatically.\n" +
|
|
146
|
+
" Press Enter with a blank alias to skip.\n"));
|
|
147
|
+
const paths = {
|
|
148
|
+
read: pathAnswers.fileReadPath.trim(),
|
|
149
|
+
write: pathAnswers.fileWritePath.trim(),
|
|
150
|
+
};
|
|
151
|
+
let addMore = true;
|
|
152
|
+
while (addMore) {
|
|
153
|
+
const { alias } = await inquirer.prompt([{
|
|
154
|
+
type: "input",
|
|
155
|
+
name: "alias",
|
|
156
|
+
message: "Alias name (e.g. slate_export), or leave blank to finish:",
|
|
157
|
+
}]);
|
|
158
|
+
if (!alias.trim()) {
|
|
159
|
+
addMore = false;
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
const { filePath } = await inquirer.prompt([{
|
|
163
|
+
type: "input",
|
|
164
|
+
name: "filePath",
|
|
165
|
+
message: `Absolute path for {${alias}}:`,
|
|
166
|
+
validate: (v) => v.length > 0 || "Path is required",
|
|
167
|
+
}]);
|
|
168
|
+
paths[alias.trim()] = filePath.trim();
|
|
169
|
+
const { more } = await inquirer.prompt([{
|
|
170
|
+
type: "confirm",
|
|
171
|
+
name: "more",
|
|
172
|
+
message: "Add another path alias?",
|
|
173
|
+
default: false,
|
|
174
|
+
}]);
|
|
175
|
+
addMore = more;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
// Step 7: Service install
|
|
179
|
+
console.log(chalk.bold("\n Step 6: Service Install\n"));
|
|
180
|
+
const { installService } = await inquirer.prompt([{
|
|
181
|
+
type: "confirm",
|
|
182
|
+
name: "installService",
|
|
183
|
+
message: "Install agent as a system service (auto-start on boot)?",
|
|
184
|
+
default: true,
|
|
185
|
+
}]);
|
|
186
|
+
let serviceAccountUser = "";
|
|
187
|
+
let serviceAccountPassword = "";
|
|
188
|
+
if (installService && authMode === "service_account" && process.platform === "win32") {
|
|
189
|
+
console.log(chalk.gray("\n Enter the domain account the service will run as for LDAP access.\n"));
|
|
190
|
+
const svcAcct = await inquirer.prompt([
|
|
191
|
+
{ type: "input", name: "user", message: "Service account (DOMAIN\\username):", validate: (v) => v.includes("\\") || "Use DOMAIN\\username format" },
|
|
192
|
+
{ type: "password", name: "password", message: "Service account password:", validate: (v) => v.length > 0 || "Required" },
|
|
193
|
+
]);
|
|
194
|
+
serviceAccountUser = svcAcct.user;
|
|
195
|
+
serviceAccountPassword = svcAcct.password;
|
|
196
|
+
}
|
|
197
|
+
// Save all credentials and paths
|
|
198
|
+
const store = new OcStore();
|
|
199
|
+
await store.saveCredentials({ ...credentials });
|
|
200
|
+
await store.saveLdapCredentials({
|
|
201
|
+
host: ldapAnswers.host,
|
|
202
|
+
port: ldapAnswers.port,
|
|
203
|
+
baseDn: ldapAnswers.baseDn,
|
|
204
|
+
bindDn: ldapAnswers.bindDn,
|
|
205
|
+
bindPassword: ldapAnswers.bindPassword,
|
|
206
|
+
authMode: ldapAnswers.authMode,
|
|
207
|
+
defaultOu: ldapAnswers.defaultOu,
|
|
208
|
+
disabledOu: null,
|
|
209
|
+
});
|
|
210
|
+
await store.savePaths(paths);
|
|
211
|
+
if (installService) {
|
|
212
|
+
await installSystemService(agentName, serviceAccountUser, serviceAccountPassword);
|
|
213
|
+
await ocOpenAgentUi();
|
|
214
|
+
}
|
|
215
|
+
console.log(chalk.bold.green("\n ✓ Setup complete!\n"));
|
|
216
|
+
console.log(chalk.gray(` Agent ID: ${credentials.agentId}`));
|
|
217
|
+
console.log(chalk.gray(` Tenant ID: ${credentials.tenantId}`));
|
|
218
|
+
console.log(chalk.gray(` Read path: ${pathAnswers.fileReadPath}`));
|
|
219
|
+
console.log(chalk.gray(` Write path: ${pathAnswers.fileWritePath}`));
|
|
220
|
+
console.log(chalk.gray(` Config file: ${store.configPath}`));
|
|
221
|
+
if (Object.keys(paths).length > 2) {
|
|
222
|
+
console.log(chalk.gray(` Path aliases:`));
|
|
223
|
+
for (const [k, v] of Object.entries(paths)) {
|
|
224
|
+
if (k !== "read" && k !== "write")
|
|
225
|
+
console.log(chalk.gray(` {${k}} → ${v}`));
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
if (authMode === "service_account" && installService) {
|
|
229
|
+
console.log(chalk.yellow("\n Remember: set the service Log On account in Windows Services → OnboardConnect Agent → Properties → Log On.\n"));
|
|
230
|
+
}
|
|
231
|
+
console.log(chalk.gray(`\n View agent status: https://portal.onboardconnectapp.com/agents\n`));
|
|
232
|
+
if (!installService) {
|
|
233
|
+
console.log(chalk.yellow(" To start the agent manually: npx onboardconnect-agent start\n"));
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
async function ocOpenAgentUi() {
|
|
237
|
+
const UI_URL = "http://localhost:7432";
|
|
238
|
+
const spinner = ora("Waiting for agent UI to start...").start();
|
|
239
|
+
const deadline = Date.now() + 30_000;
|
|
240
|
+
let ready = false;
|
|
241
|
+
while (Date.now() < deadline) {
|
|
242
|
+
try {
|
|
243
|
+
const res = await fetch(UI_URL, { signal: AbortSignal.timeout(1000) });
|
|
244
|
+
if (res.ok || res.status < 500) {
|
|
245
|
+
ready = true;
|
|
246
|
+
break;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
catch { /* not ready yet */ }
|
|
250
|
+
await new Promise((r) => setTimeout(r, 1500));
|
|
251
|
+
}
|
|
252
|
+
if (!ready) {
|
|
253
|
+
spinner.warn(`Agent UI not responding. Open ${UI_URL} in your browser manually.`);
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
spinner.succeed(`Agent UI ready at ${UI_URL}`);
|
|
257
|
+
try {
|
|
258
|
+
const { exec } = await import("child_process");
|
|
259
|
+
const openCmd = process.platform === "win32" ? `cmd /c start "" "${UI_URL}"` :
|
|
260
|
+
process.platform === "darwin" ? `open ${UI_URL}` :
|
|
261
|
+
`xdg-open ${UI_URL}`;
|
|
262
|
+
exec(openCmd);
|
|
263
|
+
}
|
|
264
|
+
catch {
|
|
265
|
+
console.log(chalk.gray(` Open your browser and navigate to: ${UI_URL}`));
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
async function installSystemService(agentName, serviceAccountUser = "", serviceAccountPassword = "") {
|
|
269
|
+
const spinner = ora("Installing OnboardConnect Agent as a Windows service...").start();
|
|
270
|
+
try {
|
|
271
|
+
if (process.platform === "win32") {
|
|
272
|
+
const { spawnSync } = await import("child_process");
|
|
273
|
+
// Require Administrator — sc.exe will silently fail without it
|
|
274
|
+
const adminCheck = spawnSync("net", ["session"], { stdio: "pipe" });
|
|
275
|
+
if (adminCheck.status !== 0) {
|
|
276
|
+
spinner.fail("Administrator privileges required. Re-run from an elevated PowerShell prompt (Run as Administrator).");
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
const nodePath = process.execPath;
|
|
280
|
+
const scriptPath = process.argv[1];
|
|
281
|
+
if (!scriptPath) {
|
|
282
|
+
spinner.fail("Could not determine agent script path (process.argv[1] is empty).");
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
const svcName = "OnboardConnectAgent";
|
|
286
|
+
// binPath= value: node.exe + script, both quoted so spaces are handled
|
|
287
|
+
const binPath = `"${nodePath}" "${scriptPath}"`;
|
|
288
|
+
const logOnAcct = serviceAccountUser || "LocalSystem";
|
|
289
|
+
// Remove any previous install
|
|
290
|
+
spawnSync("sc", ["stop", svcName], { stdio: "pipe" });
|
|
291
|
+
await new Promise((r) => setTimeout(r, 1500));
|
|
292
|
+
spawnSync("sc", ["delete", svcName], { stdio: "pipe" });
|
|
293
|
+
await new Promise((r) => setTimeout(r, 1000));
|
|
294
|
+
// Create and configure the service
|
|
295
|
+
const createArgs = [
|
|
296
|
+
"create", svcName,
|
|
297
|
+
"binPath=", binPath,
|
|
298
|
+
"start=", "auto",
|
|
299
|
+
"DisplayName=", "OnboardConnect Agent",
|
|
300
|
+
"obj=", logOnAcct,
|
|
301
|
+
...(serviceAccountUser ? ["password=", serviceAccountPassword] : []),
|
|
302
|
+
];
|
|
303
|
+
const createResult = spawnSync("sc", createArgs, { stdio: "pipe" });
|
|
304
|
+
if (createResult.status !== 0) {
|
|
305
|
+
throw new Error(createResult.stderr?.toString().trim() || createResult.stdout?.toString().trim() || "sc create failed");
|
|
306
|
+
}
|
|
307
|
+
const descSafe = agentName.replace(/"/g, "");
|
|
308
|
+
spawnSync("sc", ["description", svcName, descSafe], { stdio: "pipe" });
|
|
309
|
+
const startResult = spawnSync("sc", ["start", svcName], { stdio: "pipe" });
|
|
310
|
+
if (startResult.status !== 0) {
|
|
311
|
+
throw new Error(startResult.stderr?.toString().trim() || startResult.stdout?.toString().trim() || "sc start failed");
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
else {
|
|
315
|
+
const { writeFileSync, chmodSync } = await import("fs");
|
|
316
|
+
const unit = `[Unit]
|
|
317
|
+
Description=OnboardConnect On-Prem Agent
|
|
318
|
+
After=network.target
|
|
319
|
+
|
|
320
|
+
[Service]
|
|
321
|
+
Type=simple
|
|
322
|
+
ExecStart=${process.execPath} ${process.argv[1]}
|
|
323
|
+
Restart=always
|
|
324
|
+
RestartSec=5
|
|
325
|
+
Environment=NODE_ENV=production
|
|
326
|
+
|
|
327
|
+
[Install]
|
|
328
|
+
WantedBy=multi-user.target
|
|
329
|
+
`;
|
|
330
|
+
writeFileSync("/etc/systemd/system/oc-agent.service", unit);
|
|
331
|
+
chmodSync("/etc/systemd/system/oc-agent.service", 0o644);
|
|
332
|
+
const { execSync } = await import("child_process");
|
|
333
|
+
execSync("systemctl enable oc-agent && systemctl start oc-agent");
|
|
334
|
+
}
|
|
335
|
+
spinner.succeed("Service installed and started ✓");
|
|
336
|
+
}
|
|
337
|
+
catch (err) {
|
|
338
|
+
spinner.fail(`Service install failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
export default ocSetup;
|
|
342
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
|
package/dist/store.d.ts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export interface OcAgentCredentials {
|
|
2
|
+
agentId: string;
|
|
3
|
+
tenantId: string;
|
|
4
|
+
agentToken: string;
|
|
5
|
+
relayUrl: string;
|
|
6
|
+
encryptionKey: string;
|
|
7
|
+
}
|
|
8
|
+
export interface OcLdapCredentials {
|
|
9
|
+
host: string;
|
|
10
|
+
port: number;
|
|
11
|
+
baseDn: string;
|
|
12
|
+
bindDn: string;
|
|
13
|
+
bindPassword: string;
|
|
14
|
+
defaultOu: string;
|
|
15
|
+
disabledOu: string | null;
|
|
16
|
+
authMode?: "explicit" | "service_account";
|
|
17
|
+
}
|
|
18
|
+
export interface OcSftpCredentials {
|
|
19
|
+
host: string;
|
|
20
|
+
port: number;
|
|
21
|
+
username: string;
|
|
22
|
+
authMethod: "certificate" | "private_key";
|
|
23
|
+
privateKey: string;
|
|
24
|
+
certificate: string | null;
|
|
25
|
+
inboundPath: string;
|
|
26
|
+
outboundPath: string;
|
|
27
|
+
}
|
|
28
|
+
export declare class OcStore {
|
|
29
|
+
loadCredentials(): Promise<OcAgentCredentials | null>;
|
|
30
|
+
saveCredentials(creds: OcAgentCredentials): Promise<void>;
|
|
31
|
+
loadLdapCredentials(): Promise<OcLdapCredentials | null>;
|
|
32
|
+
saveLdapCredentials(creds: OcLdapCredentials): Promise<void>;
|
|
33
|
+
loadSftpCredentials(): Promise<OcSftpCredentials | null>;
|
|
34
|
+
saveSftpCredentials(creds: OcSftpCredentials): Promise<void>;
|
|
35
|
+
loadPaths(): Promise<Record<string, string>>;
|
|
36
|
+
savePaths(paths: Record<string, string>): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Resolves a file path that may contain a local alias in the form `{alias}` or `{alias}/relative/part`.
|
|
39
|
+
* Aliases are defined during setup and stored in oc-agent.json under `paths`.
|
|
40
|
+
* Plain absolute paths are returned as-is.
|
|
41
|
+
*/
|
|
42
|
+
resolvePath(filePath: string): Promise<string>;
|
|
43
|
+
loadUiToken(): Promise<string | null>;
|
|
44
|
+
saveUiToken(token: string): Promise<void>;
|
|
45
|
+
loadAllowedCommandTypes(): Promise<string[] | null>;
|
|
46
|
+
saveAllowedCommandTypes(types: string[] | null): Promise<void>;
|
|
47
|
+
clearAll(): Promise<void>;
|
|
48
|
+
/** Path to the config file — displayed during setup so the user knows where to find it. */
|
|
49
|
+
get configPath(): string;
|
|
50
|
+
/** Path to the key file — displayed during setup so the user knows where to find it. */
|
|
51
|
+
get keyPath(): string;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,UAAU,GAAG,iBAAiB,CAAC;CAC3C;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,aAAa,GAAG,aAAa,CAAC;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AA8FD,qBAAa,OAAO;IACZ,eAAe,IAAI,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAMrD,eAAe,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOzD,mBAAmB,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAMxD,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAO5D,mBAAmB,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAMxD,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAO5D,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAI5C,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7D;;;;OAIG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW9C,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIrC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzC,uBAAuB,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;IAInD,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9D,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,2FAA2F;IAC3F,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,wFAAwF;IACxF,IAAI,OAAO,IAAI,MAAM,CAEpB;CACF"}
|
package/dist/store.js
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { createCipheriv, createDecipheriv, randomBytes } from "crypto";
|
|
2
|
+
import { readFileSync, writeFileSync, mkdirSync, existsSync, chmodSync } from "fs";
|
|
3
|
+
import { execSync } from "child_process";
|
|
4
|
+
import { join } from "path";
|
|
5
|
+
const OC_CONFIG_DIR = process.platform === "win32"
|
|
6
|
+
? join(process.env["PROGRAMDATA"] ?? "C:\\ProgramData", "OnboardConnect")
|
|
7
|
+
: "/etc/onboardconnect";
|
|
8
|
+
const OC_KEY_FILE = join(OC_CONFIG_DIR, ".keyfile");
|
|
9
|
+
const OC_CONFIG_FILE = join(OC_CONFIG_DIR, "oc-agent.json");
|
|
10
|
+
function ocEnsureConfigDir() {
|
|
11
|
+
if (!existsSync(OC_CONFIG_DIR)) {
|
|
12
|
+
mkdirSync(OC_CONFIG_DIR, { recursive: true });
|
|
13
|
+
if (process.platform !== "win32")
|
|
14
|
+
chmodSync(OC_CONFIG_DIR, 0o700);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function ocLoadKey() {
|
|
18
|
+
if (!existsSync(OC_KEY_FILE))
|
|
19
|
+
throw new Error("Agent not configured — run setup first.");
|
|
20
|
+
return Buffer.from(readFileSync(OC_KEY_FILE, "utf8").trim(), "base64");
|
|
21
|
+
}
|
|
22
|
+
function ocEnsureKey() {
|
|
23
|
+
if (!existsSync(OC_KEY_FILE)) {
|
|
24
|
+
ocEnsureConfigDir();
|
|
25
|
+
const key = randomBytes(32);
|
|
26
|
+
writeFileSync(OC_KEY_FILE, key.toString("base64"), { encoding: "utf8", mode: 0o600 });
|
|
27
|
+
if (process.platform === "win32") {
|
|
28
|
+
// Restrict to SYSTEM + Administrators only — readable by service running as LocalSystem
|
|
29
|
+
try {
|
|
30
|
+
execSync(`icacls "${OC_KEY_FILE}" /inheritance:r /grant:r "NT AUTHORITY\\SYSTEM:(R)" /grant:r "BUILTIN\\Administrators:(R)"`, { stdio: "pipe" });
|
|
31
|
+
}
|
|
32
|
+
catch { /* best-effort; requires elevated prompt */ }
|
|
33
|
+
}
|
|
34
|
+
return key;
|
|
35
|
+
}
|
|
36
|
+
return ocLoadKey();
|
|
37
|
+
}
|
|
38
|
+
function ocLoadConfig() {
|
|
39
|
+
if (!existsSync(OC_CONFIG_FILE))
|
|
40
|
+
return { paths: {} };
|
|
41
|
+
try {
|
|
42
|
+
return JSON.parse(readFileSync(OC_CONFIG_FILE, "utf8"));
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return { paths: {} };
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function ocSaveConfig(config) {
|
|
49
|
+
ocEnsureConfigDir();
|
|
50
|
+
writeFileSync(OC_CONFIG_FILE, JSON.stringify(config, null, 2), {
|
|
51
|
+
encoding: "utf8",
|
|
52
|
+
mode: 0o600,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
function ocEncrypt(data, key) {
|
|
56
|
+
const iv = randomBytes(16);
|
|
57
|
+
const cipher = createCipheriv("aes-256-gcm", key, iv);
|
|
58
|
+
const pt = Buffer.from(JSON.stringify(data), "utf8");
|
|
59
|
+
const ct = Buffer.concat([cipher.update(pt), cipher.final()]);
|
|
60
|
+
return {
|
|
61
|
+
iv: iv.toString("base64"),
|
|
62
|
+
ct: ct.toString("base64"),
|
|
63
|
+
tag: cipher.getAuthTag().toString("base64"),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function ocDecrypt(blob, key) {
|
|
67
|
+
const decipher = createDecipheriv("aes-256-gcm", key, Buffer.from(blob.iv, "base64"));
|
|
68
|
+
decipher.setAuthTag(Buffer.from(blob.tag, "base64"));
|
|
69
|
+
const pt = Buffer.concat([
|
|
70
|
+
decipher.update(Buffer.from(blob.ct, "base64")),
|
|
71
|
+
decipher.final(),
|
|
72
|
+
]);
|
|
73
|
+
return JSON.parse(pt.toString("utf8"));
|
|
74
|
+
}
|
|
75
|
+
export class OcStore {
|
|
76
|
+
async loadCredentials() {
|
|
77
|
+
const config = ocLoadConfig();
|
|
78
|
+
if (!config.credentials)
|
|
79
|
+
return null;
|
|
80
|
+
return ocDecrypt(config.credentials, ocLoadKey());
|
|
81
|
+
}
|
|
82
|
+
async saveCredentials(creds) {
|
|
83
|
+
const key = ocEnsureKey();
|
|
84
|
+
const config = ocLoadConfig();
|
|
85
|
+
config.credentials = ocEncrypt(creds, key);
|
|
86
|
+
ocSaveConfig(config);
|
|
87
|
+
}
|
|
88
|
+
async loadLdapCredentials() {
|
|
89
|
+
const config = ocLoadConfig();
|
|
90
|
+
if (!config.ldap)
|
|
91
|
+
return null;
|
|
92
|
+
return ocDecrypt(config.ldap, ocLoadKey());
|
|
93
|
+
}
|
|
94
|
+
async saveLdapCredentials(creds) {
|
|
95
|
+
const key = ocEnsureKey();
|
|
96
|
+
const config = ocLoadConfig();
|
|
97
|
+
config.ldap = ocEncrypt(creds, key);
|
|
98
|
+
ocSaveConfig(config);
|
|
99
|
+
}
|
|
100
|
+
async loadSftpCredentials() {
|
|
101
|
+
const config = ocLoadConfig();
|
|
102
|
+
if (!config.sftp)
|
|
103
|
+
return null;
|
|
104
|
+
return ocDecrypt(config.sftp, ocLoadKey());
|
|
105
|
+
}
|
|
106
|
+
async saveSftpCredentials(creds) {
|
|
107
|
+
const key = ocEnsureKey();
|
|
108
|
+
const config = ocLoadConfig();
|
|
109
|
+
config.sftp = ocEncrypt(creds, key);
|
|
110
|
+
ocSaveConfig(config);
|
|
111
|
+
}
|
|
112
|
+
async loadPaths() {
|
|
113
|
+
return ocLoadConfig().paths ?? {};
|
|
114
|
+
}
|
|
115
|
+
async savePaths(paths) {
|
|
116
|
+
const config = ocLoadConfig();
|
|
117
|
+
config.paths = paths;
|
|
118
|
+
ocSaveConfig(config);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Resolves a file path that may contain a local alias in the form `{alias}` or `{alias}/relative/part`.
|
|
122
|
+
* Aliases are defined during setup and stored in oc-agent.json under `paths`.
|
|
123
|
+
* Plain absolute paths are returned as-is.
|
|
124
|
+
*/
|
|
125
|
+
async resolvePath(filePath) {
|
|
126
|
+
const m = filePath.match(/^\{(\w+)\}([\\/].*)?$/);
|
|
127
|
+
if (!m)
|
|
128
|
+
return filePath;
|
|
129
|
+
const alias = m[1];
|
|
130
|
+
const suffix = m[2] ?? "";
|
|
131
|
+
const paths = await this.loadPaths();
|
|
132
|
+
const base = paths[alias];
|
|
133
|
+
if (!base)
|
|
134
|
+
throw new Error(`Path alias not configured on this agent: {${alias}}`);
|
|
135
|
+
return suffix ? join(base, suffix) : base;
|
|
136
|
+
}
|
|
137
|
+
async loadUiToken() {
|
|
138
|
+
return ocLoadConfig().uiToken ?? null;
|
|
139
|
+
}
|
|
140
|
+
async saveUiToken(token) {
|
|
141
|
+
const config = ocLoadConfig();
|
|
142
|
+
config.uiToken = token;
|
|
143
|
+
ocSaveConfig(config);
|
|
144
|
+
}
|
|
145
|
+
async loadAllowedCommandTypes() {
|
|
146
|
+
return ocLoadConfig().allowedCommandTypes ?? null;
|
|
147
|
+
}
|
|
148
|
+
async saveAllowedCommandTypes(types) {
|
|
149
|
+
const config = ocLoadConfig();
|
|
150
|
+
if (types === null) {
|
|
151
|
+
delete config.allowedCommandTypes;
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
config.allowedCommandTypes = types;
|
|
155
|
+
}
|
|
156
|
+
ocSaveConfig(config);
|
|
157
|
+
}
|
|
158
|
+
async clearAll() {
|
|
159
|
+
ocSaveConfig({ paths: {} });
|
|
160
|
+
}
|
|
161
|
+
/** Path to the config file — displayed during setup so the user knows where to find it. */
|
|
162
|
+
get configPath() {
|
|
163
|
+
return OC_CONFIG_FILE;
|
|
164
|
+
}
|
|
165
|
+
/** Path to the key file — displayed during setup so the user knows where to find it. */
|
|
166
|
+
get keyPath() {
|
|
167
|
+
return OC_KEY_FILE;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACnF,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,aAAa,GACjB,OAAO,CAAC,QAAQ,KAAK,OAAO;IAC1B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,iBAAiB,EAAE,gBAAgB,CAAC;IACzE,CAAC,CAAC,qBAAqB,CAAC;AAE5B,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AACpD,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;AAkD5D,SAAS,iBAAiB;IACxB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;YAAE,SAAS,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED,SAAS,SAAS;IAChB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IACzF,OAAO,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,WAAW;IAClB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,iBAAiB,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;QAC5B,aAAa,CAAC,WAAW,EAAE,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACtF,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,wFAAwF;YACxF,IAAI,CAAC;gBACH,QAAQ,CACN,WAAW,WAAW,6FAA6F,EACnH,EAAE,KAAK,EAAE,MAAM,EAAE,CAClB,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC,CAAC,2CAA2C,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,SAAS,EAAE,CAAC;AACrB,CAAC;AAED,SAAS,YAAY;IACnB,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAsB,CAAC;IAC/E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,MAAyB;IAC7C,iBAAiB,EAAE,CAAC;IACpB,aAAa,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;QAC7D,QAAQ,EAAE,MAAM;QAChB,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,IAAa,EAAE,GAAW;IAC3C,MAAM,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,cAAc,CAAC,aAAa,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IACrD,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9D,OAAO;QACL,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACzB,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACzB,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAI,IAAe,EAAE,GAAW;IAChD,MAAM,QAAQ,GAAG,gBAAgB,CAC/B,aAAa,EACb,GAAG,EACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAC/B,CAAC;IACF,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;IACrD,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;QACvB,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC/C,QAAQ,CAAC,KAAK,EAAE;KACjB,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAM,CAAC;AAC9C,CAAC;AAED,MAAM,OAAO,OAAO;IAClB,KAAK,CAAC,eAAe;QACnB,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC;QACrC,OAAO,SAAS,CAAqB,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,KAAyB;QAC7C,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC3C,YAAY,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QAC9B,OAAO,SAAS,CAAoB,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,KAAwB;QAChD,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACpC,YAAY,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QAC9B,OAAO,SAAS,CAAoB,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,KAAwB;QAChD,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACpC,YAAY,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,YAAY,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAA6B;QAC3C,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,YAAY,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CAAC,QAAgB;QAChC,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAClD,IAAI,CAAC,CAAC;YAAE,OAAO,QAAQ,CAAC;QACxB,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QACpB,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,KAAK,GAAG,CAAC,CAAC;QAClF,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,YAAY,EAAE,CAAC,OAAO,IAAI,IAAI,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAa;QAC7B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,YAAY,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,uBAAuB;QAC3B,OAAO,YAAY,EAAE,CAAC,mBAAmB,IAAI,IAAI,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,KAAsB;QAClD,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC,mBAAmB,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACrC,CAAC;QACD,YAAY,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,2FAA2F;IAC3F,IAAI,UAAU;QACZ,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,wFAAwF;IACxF,IAAI,OAAO;QACT,OAAO,WAAW,CAAC;IACrB,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../src/uninstall.ts"],"names":[],"mappings":"AA8FA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAyCjD"}
|