@powerhousedao/ph-cli 6.0.0-dev.52 → 6.0.0-dev.54
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/src/commands/connect.d.ts +12 -12
- package/dist/src/commands/connect.d.ts.map +1 -1
- package/dist/src/commands/connect.js.map +1 -1
- package/dist/src/commands/legacy/connect.old.d.ts.map +1 -1
- package/dist/src/commands/legacy/connect.old.js.map +1 -1
- package/dist/src/commands/legacy/login.old.d.ts.map +1 -1
- package/dist/src/commands/legacy/login.old.js.map +1 -1
- package/dist/src/commands/legacy/switchboard.old.d.ts.map +1 -1
- package/dist/src/commands/legacy/switchboard.old.js.map +1 -1
- package/dist/src/commands/login.d.ts.map +1 -1
- package/dist/src/commands/login.js.map +1 -1
- package/dist/src/commands/ph-cli-commands.d.ts +8 -8
- package/dist/src/commands/ph-cli.d.ts +8 -8
- package/dist/src/commands/switchboard.d.ts.map +1 -1
- package/dist/src/commands/switchboard.js.map +1 -1
- package/dist/src/commands/vetra.d.ts +2 -2
- package/dist/src/services/connect-studio.d.ts +2 -1
- package/dist/src/services/connect-studio.d.ts.map +1 -1
- package/dist/src/services/connect-studio.js +2 -1
- package/dist/src/services/connect-studio.js.map +1 -1
- package/dist/src/services/legacy/vetra.old.js +1 -1
- package/dist/src/services/legacy/vetra.old.js.map +1 -1
- package/dist/src/services/switchboard.d.ts +2 -1
- package/dist/src/services/switchboard.d.ts.map +1 -1
- package/dist/src/services/switchboard.js +3 -1
- package/dist/src/services/switchboard.js.map +1 -1
- package/dist/src/services/vetra.d.ts.map +1 -1
- package/dist/src/services/vetra.js +63 -35
- package/dist/src/services/vetra.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +27 -26
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { VETRA_PROCESSOR_CONFIG_KEY } from "@powerhousedao/config";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { addDefaultDrive } from "@powerhousedao/switchboard/utils";
|
|
3
|
+
import { blue, green, red, yellow } from "colorette";
|
|
4
|
+
import { childLogger, setLogLevel, } from "document-drive";
|
|
5
|
+
import { createLogger } from "vite";
|
|
4
6
|
import { generateProjectDriveId } from "../utils.js";
|
|
5
7
|
import { configureVetraGithubUrl, sleep, } from "../utils/configure-vetra-github-url.js";
|
|
6
8
|
import { runConnectStudio } from "./connect-studio.js";
|
|
@@ -8,7 +10,27 @@ import { startSwitchboard } from "./switchboard.js";
|
|
|
8
10
|
const VETRA_DRIVE_NAME = "vetra";
|
|
9
11
|
const getDefaultVetraUrl = (port) => `http://localhost:${port}/d/${generateProjectDriveId(VETRA_DRIVE_NAME)}`;
|
|
10
12
|
const getDriveId = (driveUrl) => driveUrl?.split("/").pop() ?? generateProjectDriveId(VETRA_DRIVE_NAME);
|
|
11
|
-
|
|
13
|
+
function createViteLogger(color) {
|
|
14
|
+
const customLogger = createLogger("info");
|
|
15
|
+
const loggerInfo = customLogger.info.bind(customLogger);
|
|
16
|
+
customLogger.info = (msg, options) => {
|
|
17
|
+
loggerInfo(color(msg), options);
|
|
18
|
+
};
|
|
19
|
+
const loggerWarn = customLogger.warn.bind(customLogger);
|
|
20
|
+
customLogger.warn = (msg, options) => {
|
|
21
|
+
loggerWarn(yellow(msg), options);
|
|
22
|
+
};
|
|
23
|
+
const loggerError = customLogger.error.bind(customLogger);
|
|
24
|
+
customLogger.error = (msg, options) => {
|
|
25
|
+
loggerError(red(msg), options);
|
|
26
|
+
};
|
|
27
|
+
const loggerWarnOnce = customLogger.warnOnce.bind(customLogger);
|
|
28
|
+
customLogger.warnOnce = (msg, options) => {
|
|
29
|
+
loggerWarnOnce(yellow(msg), options);
|
|
30
|
+
};
|
|
31
|
+
return customLogger;
|
|
32
|
+
}
|
|
33
|
+
async function startVetraPreviewDrive(reactor, reactorLegacy, port, verbose) {
|
|
12
34
|
const previewDriveId = generateProjectDriveId("preview");
|
|
13
35
|
const previewDrive = {
|
|
14
36
|
id: previewDriveId,
|
|
@@ -16,6 +38,7 @@ async function startVetraPreviewDrive(reactor, port, verbose) {
|
|
|
16
38
|
global: {
|
|
17
39
|
name: "Vetra Preview",
|
|
18
40
|
icon: "https://azure-elderly-tortoise-212.mypinata.cloud/ipfs/bafkreifddkbopiyvcirf7vaqar74th424r5phlxkdxniirdyg3qgu2ajha",
|
|
41
|
+
nodes: [],
|
|
19
42
|
},
|
|
20
43
|
local: {
|
|
21
44
|
availableOffline: true,
|
|
@@ -24,21 +47,13 @@ async function startVetraPreviewDrive(reactor, port, verbose) {
|
|
|
24
47
|
triggers: [],
|
|
25
48
|
},
|
|
26
49
|
};
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
console.log(blue(`[Vetra Switchboard]: Preview drive created: ${previewDriveId}`));
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
catch {
|
|
34
|
-
// Drive might already exist, which is fine
|
|
35
|
-
if (verbose) {
|
|
36
|
-
console.log(blue(`[Vetra Switchboard]: Preview drive already exists: ${previewDriveId}`));
|
|
37
|
-
}
|
|
50
|
+
const driveUrl = await addDefaultDrive(reactorLegacy, reactor, previewDrive, port);
|
|
51
|
+
if (verbose) {
|
|
52
|
+
console.log(blue(`Vetra Switchboard: Preview drive: ${driveUrl}`));
|
|
38
53
|
}
|
|
39
|
-
return
|
|
54
|
+
return driveUrl;
|
|
40
55
|
}
|
|
41
|
-
async function startLocalVetraSwitchboard(args) {
|
|
56
|
+
async function startLocalVetraSwitchboard(args, logger) {
|
|
42
57
|
const { connectPort, switchboardPort, dev, packages, disableLocalPackages, debug, httpsKeyFile, httpsCertFile, remoteDrive, interactive, watch, verbose, } = args;
|
|
43
58
|
// Convert single remote drive to array if provided
|
|
44
59
|
const remoteDrives = remoteDrive ? [remoteDrive] : [];
|
|
@@ -71,21 +86,30 @@ async function startLocalVetraSwitchboard(args) {
|
|
|
71
86
|
migrate: undefined,
|
|
72
87
|
migrateStatus: undefined,
|
|
73
88
|
requireIdentity: undefined,
|
|
74
|
-
});
|
|
89
|
+
}, logger);
|
|
75
90
|
// Add preview drive (only in watch mode)
|
|
76
91
|
let previewDriveUrl = null;
|
|
77
92
|
if (watch) {
|
|
78
|
-
|
|
93
|
+
try {
|
|
94
|
+
previewDriveUrl = await startVetraPreviewDrive(switchboard.reactor, switchboard.legacyReactor, switchboardPort, verbose);
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
console.error(error);
|
|
98
|
+
}
|
|
79
99
|
}
|
|
80
100
|
if (verbose) {
|
|
81
|
-
console.log(blue(`
|
|
101
|
+
console.log(blue(`Vetra Switchboard: Started successfully`));
|
|
82
102
|
if (remoteDrive) {
|
|
83
|
-
console.log(blue(`
|
|
103
|
+
console.log(blue(`Vetra Switchboard: Syncing with remote drive: ${remoteDrive}`));
|
|
84
104
|
}
|
|
85
105
|
}
|
|
86
106
|
else {
|
|
87
|
-
console.log(
|
|
88
|
-
console.log(`
|
|
107
|
+
console.log();
|
|
108
|
+
console.log(blue(`Vetra Switchboard: http://localhost:${switchboardPort}/graphql`));
|
|
109
|
+
console.log(blue(` ➜ Drive URL: ${switchboard.defaultDriveUrl}`));
|
|
110
|
+
if (previewDriveUrl) {
|
|
111
|
+
console.log(blue(` ➜ Preview Drive URL: ${previewDriveUrl}`));
|
|
112
|
+
}
|
|
89
113
|
}
|
|
90
114
|
return {
|
|
91
115
|
driveUrl: switchboard.defaultDriveUrl || "",
|
|
@@ -93,24 +117,25 @@ async function startLocalVetraSwitchboard(args) {
|
|
|
93
117
|
};
|
|
94
118
|
}
|
|
95
119
|
catch (error) {
|
|
96
|
-
console.error(red(`
|
|
120
|
+
console.error(red(`Vetra Switchboard: ${error instanceof Error ? error.message : String(error)}`));
|
|
97
121
|
throw error instanceof Error ? error : new Error(String(error));
|
|
98
122
|
}
|
|
99
123
|
}
|
|
100
124
|
export async function startVetra(args) {
|
|
101
|
-
const { switchboardPort, connectPort, verbose, remoteDrive, disableConnect, debug, httpsCertFile, httpsKeyFile, disableLocalPackages, } = args;
|
|
125
|
+
const { switchboardPort, connectPort, verbose, remoteDrive, disableConnect, debug, httpsCertFile, httpsKeyFile, disableLocalPackages, host, open, cors, strictPort, printUrls, bindCLIShortcuts, watchTimeout, } = args;
|
|
126
|
+
const switchboardLogger = childLogger(["vetra", "switchboard"]);
|
|
102
127
|
try {
|
|
103
128
|
// Set default log level to info if not already specified
|
|
104
129
|
if (!process.env.LOG_LEVEL) {
|
|
105
130
|
setLogLevel("info");
|
|
106
131
|
}
|
|
107
132
|
if (verbose) {
|
|
108
|
-
|
|
133
|
+
switchboardLogger.info("Starting Vetra Switchboard...");
|
|
109
134
|
if (remoteDrive) {
|
|
110
135
|
const source = remoteDrive
|
|
111
136
|
? "command line argument"
|
|
112
137
|
: "powerhouse.config.json";
|
|
113
|
-
|
|
138
|
+
switchboardLogger.info(`Using vetraUrl from ${source}: ${remoteDrive}`);
|
|
114
139
|
}
|
|
115
140
|
}
|
|
116
141
|
const switchboardResult = await startLocalVetraSwitchboard({
|
|
@@ -120,7 +145,7 @@ export async function startVetra(args) {
|
|
|
120
145
|
httpsCertFile,
|
|
121
146
|
disableLocalPackages,
|
|
122
147
|
debug,
|
|
123
|
-
});
|
|
148
|
+
}, switchboardLogger);
|
|
124
149
|
const driveUrl = switchboardResult.driveUrl || remoteDrive || "";
|
|
125
150
|
const previewDriveUrl = switchboardResult.previewDriveUrl;
|
|
126
151
|
// Configure GitHub URL if remote drive is set
|
|
@@ -143,6 +168,9 @@ export async function startVetra(args) {
|
|
|
143
168
|
: driveUrl;
|
|
144
169
|
console.log(` ➜ Connect will use drives: ${drives}`);
|
|
145
170
|
}
|
|
171
|
+
console.log();
|
|
172
|
+
console.log(green(`Vetra Connect: http://localhost:${connectPort}`));
|
|
173
|
+
const customViteLogger = createViteLogger(green);
|
|
146
174
|
await runConnectStudio({
|
|
147
175
|
...args,
|
|
148
176
|
defaultDrivesUrl: previewDriveUrl
|
|
@@ -152,14 +180,14 @@ export async function startVetra(args) {
|
|
|
152
180
|
port: connectPort,
|
|
153
181
|
disableLocalPackages,
|
|
154
182
|
debug,
|
|
155
|
-
host:
|
|
156
|
-
open:
|
|
157
|
-
cors:
|
|
158
|
-
strictPort:
|
|
159
|
-
printUrls:
|
|
160
|
-
bindCLIShortcuts:
|
|
161
|
-
watchTimeout:
|
|
162
|
-
});
|
|
183
|
+
host: host,
|
|
184
|
+
open: open,
|
|
185
|
+
cors: cors,
|
|
186
|
+
strictPort: strictPort,
|
|
187
|
+
printUrls: printUrls,
|
|
188
|
+
bindCLIShortcuts: bindCLIShortcuts,
|
|
189
|
+
watchTimeout: watchTimeout,
|
|
190
|
+
}, customViteLogger);
|
|
163
191
|
}
|
|
164
192
|
}
|
|
165
193
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vetra.js","sourceRoot":"","sources":["../../../src/services/vetra.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"vetra.js","sourceRoot":"","sources":["../../../src/services/vetra.ts"],"names":[],"mappings":"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"}
|