@powerhousedao/ph-cli 0.29.1 → 0.31.0

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.
Files changed (53) hide show
  1. package/dist/chunk-27FF7J6K.js +45 -0
  2. package/dist/chunk-6O6TUXJK.js +90 -0
  3. package/dist/chunk-CWUXPR5K.js +109 -0
  4. package/dist/chunk-E3EWRF5U.js +97 -0
  5. package/dist/chunk-FDMMJENR.js +132 -0
  6. package/dist/chunk-KPMNRIJU.js +10 -0
  7. package/dist/chunk-OH5NZOCQ.js +85 -0
  8. package/dist/chunk-PUQARXW2.js +44 -0
  9. package/dist/chunk-X2RNXISI.js +98 -0
  10. package/dist/chunk-ZN4M6TJ2.js +119 -0
  11. package/dist/cli.js +15 -5
  12. package/dist/commands/connect.js +8 -42
  13. package/dist/commands/dev.js +8 -97
  14. package/dist/commands/generate.js +7 -69
  15. package/dist/commands/help.js +6 -9
  16. package/dist/commands/index.js +57 -28
  17. package/dist/commands/install.js +10 -193
  18. package/dist/commands/service.js +7 -117
  19. package/dist/commands/switchboard.js +10 -0
  20. package/dist/commands/uninstall.js +11 -0
  21. package/dist/index.js +84 -4
  22. package/dist/scripts/setup.sh +18 -6
  23. package/dist/types.js +0 -3
  24. package/dist/utils.js +28 -3
  25. package/package.json +12 -19
  26. package/dist/cli.d.ts +0 -2
  27. package/dist/cli.js.map +0 -1
  28. package/dist/commands/connect.d.ts +0 -8
  29. package/dist/commands/connect.js.map +0 -1
  30. package/dist/commands/dev.d.ts +0 -14
  31. package/dist/commands/dev.js.map +0 -1
  32. package/dist/commands/generate.d.ts +0 -22
  33. package/dist/commands/generate.js.map +0 -1
  34. package/dist/commands/help.d.ts +0 -5
  35. package/dist/commands/help.js.map +0 -1
  36. package/dist/commands/index.d.ts +0 -16
  37. package/dist/commands/index.js.map +0 -1
  38. package/dist/commands/init.d.ts +0 -17
  39. package/dist/commands/init.js +0 -28
  40. package/dist/commands/init.js.map +0 -1
  41. package/dist/commands/install.d.ts +0 -29
  42. package/dist/commands/install.js.map +0 -1
  43. package/dist/commands/reactor.d.ts +0 -35
  44. package/dist/commands/reactor.js +0 -69
  45. package/dist/commands/reactor.js.map +0 -1
  46. package/dist/commands/service.d.ts +0 -7
  47. package/dist/commands/service.js.map +0 -1
  48. package/dist/index.d.ts +0 -11
  49. package/dist/index.js.map +0 -1
  50. package/dist/types.d.ts +0 -3
  51. package/dist/types.js.map +0 -1
  52. package/dist/utils.d.ts +0 -1
  53. package/dist/utils.js.map +0 -1
@@ -0,0 +1,98 @@
1
+ import {
2
+ SUPPORTED_PACKAGE_MANAGERS,
3
+ getPackageManagerFromLockfile,
4
+ getProjectInfo,
5
+ packageManagers,
6
+ updateConfigFile
7
+ } from "./chunk-FDMMJENR.js";
8
+
9
+ // src/commands/uninstall.ts
10
+ import { execSync } from "node:child_process";
11
+ import fs from "node:fs";
12
+ function uninstallDependency(packageManager, dependencies, projectPath, workspace) {
13
+ if (!fs.existsSync(projectPath)) {
14
+ throw new Error(`Project path not found: ${projectPath}`);
15
+ }
16
+ const manager = packageManagers[packageManager];
17
+ let uninstallCommand2 = manager.uninstallCommand.replace(
18
+ "{{dependency}}",
19
+ dependencies.join(" ")
20
+ );
21
+ if (workspace) {
22
+ uninstallCommand2 += ` ${manager.workspaceOption}`;
23
+ }
24
+ const commandOptions = { cwd: projectPath };
25
+ execSync(uninstallCommand2, {
26
+ stdio: "inherit",
27
+ ...commandOptions
28
+ });
29
+ }
30
+ var uninstall = (dependencies, options) => {
31
+ if (options.debug) {
32
+ console.log(">>> command arguments", { dependencies, options });
33
+ }
34
+ if (!dependencies || dependencies.length === 0) {
35
+ throw new Error("\u274C Dependency name is required");
36
+ }
37
+ if (options.packageManager && !SUPPORTED_PACKAGE_MANAGERS.includes(options.packageManager)) {
38
+ throw new Error(
39
+ "\u274C Unsupported package manager. Supported package managers: npm, yarn, pnpm, bun"
40
+ );
41
+ }
42
+ const projectInfo = getProjectInfo(options.debug);
43
+ if (options.debug) {
44
+ console.log("\n>>> projectInfo", projectInfo);
45
+ }
46
+ const isGlobal = options.global || projectInfo.isGlobal;
47
+ const packageManager = options.packageManager || getPackageManagerFromLockfile(projectInfo.path);
48
+ if (options.debug) {
49
+ console.log("\n>>> uninstallDependency arguments:");
50
+ console.log(">>> packageManager", packageManager);
51
+ console.log(">>> dependencies", dependencies);
52
+ console.log(">>> isGlobal", isGlobal);
53
+ console.log(">>> projectPath", projectInfo.path);
54
+ console.log(">>> workspace", options.workspace);
55
+ }
56
+ try {
57
+ console.log("Uninstalling dependencies \u{1F4E6} ...");
58
+ uninstallDependency(
59
+ packageManager,
60
+ dependencies,
61
+ projectInfo.path,
62
+ options.workspace
63
+ );
64
+ console.log("Dependency uninstalled successfully \u{1F389}");
65
+ } catch (error) {
66
+ console.error("\u274C Failed to uninstall dependencies");
67
+ throw error;
68
+ }
69
+ if (options.debug) {
70
+ console.log("\n>>> updateConfigFile arguments:");
71
+ console.log(">>> dependencies", dependencies);
72
+ console.log(">>> projectPath", projectInfo.path);
73
+ console.log(">>> task", "uninstall");
74
+ }
75
+ try {
76
+ console.log("\u2699\uFE0F Updating powerhouse config file...");
77
+ updateConfigFile(dependencies, projectInfo.path, "uninstall");
78
+ console.log("Config file updated successfully \u{1F389}");
79
+ } catch (error) {
80
+ console.error("\u274C Failed to update config file");
81
+ throw error;
82
+ }
83
+ };
84
+ function uninstallCommand(program) {
85
+ program.command("uninstall").alias("remove").description("Uninstall a powerhouse dependency").argument("[dependencies...]", "Names of the dependencies to remove").option("-g, --global", "Remove the dependency globally").option("--debug", "Show additional logs").option(
86
+ "-w, --workspace",
87
+ "Remove the dependency in the workspace (use this option for monorepos)"
88
+ ).option(
89
+ "--package-manager <packageManager>",
90
+ "force package manager to use"
91
+ ).action(uninstall);
92
+ }
93
+
94
+ export {
95
+ uninstallDependency,
96
+ uninstall,
97
+ uninstallCommand
98
+ };
@@ -0,0 +1,119 @@
1
+ // src/commands/service.ts
2
+ import { getConfig } from "@powerhousedao/config/powerhouse";
3
+ import { Argument } from "commander";
4
+ import pm2 from "pm2";
5
+ var actions = ["start", "stop", "status", "list", "install", "save"];
6
+ var services = ["switchboard", "connect", "all"];
7
+ var switchboardPort = 8442;
8
+ var connectPort = 8443;
9
+ var manageService = async (action, service) => {
10
+ try {
11
+ const config = getConfig();
12
+ if (config.switchboard?.port) {
13
+ switchboardPort = config.switchboard.port;
14
+ }
15
+ if (config.studio?.port) {
16
+ connectPort = config.studio.port;
17
+ }
18
+ pm2.connect((err) => {
19
+ switch (action) {
20
+ case "start":
21
+ startServices(service);
22
+ break;
23
+ case "stop":
24
+ stopServices(service);
25
+ break;
26
+ case "status":
27
+ statusServices();
28
+ break;
29
+ }
30
+ });
31
+ } catch (error) {
32
+ console.error(error);
33
+ }
34
+ };
35
+ function serviceCommand(program) {
36
+ program.command("service").description("Manage services").addArgument(new Argument("action").choices(actions).default("list")).addArgument(
37
+ new Argument("service").choices(services).argOptional().default("all")
38
+ ).action(manageService);
39
+ }
40
+ function startServices(service) {
41
+ if (service === "switchboard" || service === "all") {
42
+ const switchboardOptions = {
43
+ name: "switchboard",
44
+ script: "npx ph-cli switchboard"
45
+ };
46
+ console.log("Starting Switchboard...");
47
+ pm2.start(switchboardOptions, (err) => {
48
+ if (err) {
49
+ console.log(err.name);
50
+ }
51
+ dumpServices();
52
+ });
53
+ console.log("Switchboard started");
54
+ }
55
+ if (service === "connect" || service === "all") {
56
+ const connectOptions = {
57
+ name: "connect",
58
+ script: "npx ph-cli connect",
59
+ args: ["--port", connectPort.toString()]
60
+ };
61
+ console.log("Starting connect...");
62
+ pm2.start(connectOptions, (err) => {
63
+ if (err) {
64
+ throw new Error(err.message);
65
+ }
66
+ dumpServices();
67
+ });
68
+ console.log("Connect started");
69
+ }
70
+ }
71
+ function dumpServices() {
72
+ pm2.dump((err) => {
73
+ if (err) {
74
+ throw new Error(err.message);
75
+ }
76
+ statusServices();
77
+ });
78
+ }
79
+ function stopServices(service) {
80
+ if (service === "all" || service === "connect") {
81
+ pm2.stop("connect", (err) => {
82
+ if (err) {
83
+ throw new Error(err.message);
84
+ }
85
+ dumpServices();
86
+ });
87
+ }
88
+ if (service === "all" || service === "switchboard") {
89
+ pm2.stop("switchboard", (err) => {
90
+ if (err) {
91
+ throw new Error(err.message);
92
+ }
93
+ dumpServices();
94
+ });
95
+ }
96
+ }
97
+ function statusServices() {
98
+ pm2.list((err, list) => {
99
+ const formattedList = list.map((item) => {
100
+ return {
101
+ id: item.pm_id,
102
+ name: item.name,
103
+ pid: item.pid,
104
+ uptime: item.pm2_env?.pm_uptime,
105
+ restarts: item.pm2_env?.unstable_restarts,
106
+ status: item.pm2_env?.status,
107
+ mem: item.monit?.memory,
108
+ cpu: item.monit?.cpu
109
+ };
110
+ });
111
+ console.table(formattedList);
112
+ process.exit(0);
113
+ });
114
+ }
115
+
116
+ export {
117
+ manageService,
118
+ serviceCommand
119
+ };
package/dist/cli.js CHANGED
@@ -1,10 +1,20 @@
1
1
  #!/usr/bin/env node
2
- import { Command } from 'commander';
3
- import registerCommands from './commands/index.js';
2
+ import {
3
+ registerCommands
4
+ } from "./chunk-PUQARXW2.js";
5
+ import "./chunk-E3EWRF5U.js";
6
+ import "./chunk-ZN4M6TJ2.js";
7
+ import "./chunk-X2RNXISI.js";
8
+ import "./chunk-FDMMJENR.js";
9
+ import "./chunk-27FF7J6K.js";
10
+ import "./chunk-CWUXPR5K.js";
11
+ import "./chunk-6O6TUXJK.js";
12
+ import "./chunk-OH5NZOCQ.js";
13
+ import "./chunk-KPMNRIJU.js";
4
14
 
5
- const program = new Command();
15
+ // src/cli.ts
16
+ import { Command } from "commander";
17
+ var program = new Command();
6
18
  program.name("ph-cli").description("CLI tool for Powerhouse DAO").version("1.0.0");
7
19
  registerCommands(program);
8
20
  program.parse(process.argv);
9
- //# sourceMappingURL=cli.js.map
10
- //# sourceMappingURL=cli.js.map
@@ -1,42 +1,8 @@
1
- import { startConnectStudio } from '@powerhousedao/connect';
2
- import { getConfig } from '@powerhousedao/config/powerhouse';
3
-
4
- async function startConnect(connectOptions) {
5
- const { documentModelsDir, editorsDir } = getConfig();
6
- const options = { documentModelsDir, editorsDir, ...connectOptions };
7
- return await startConnectStudio(options);
8
- }
9
- function connectCommand(program) {
10
- program.command("connect").description("Starts Connect Studio").option("-p, --port <port>", "Port to run the server on", "3000").option("-h, --host", "Expose the server to the network").option("--https", "Enable HTTPS").option("--open", "Open the browser").option(
11
- "--config-file <configFile>",
12
- "Path to the powerhouse.config.js file"
13
- ).option(
14
- "-le, --local-editors <localEditors>",
15
- "Link local document editors path"
16
- ).option(
17
- "-ld, --local-documents <localDocuments>",
18
- "Link local documents path"
19
- ).action(async (...args) => {
20
- const connectOptions = args.at(0) || {};
21
- const { documentModelsDir, editorsDir, packages, studio } = getConfig();
22
- await startConnectStudio({
23
- port: studio?.port?.toString() || void 0,
24
- packages,
25
- localDocuments: documentModelsDir || void 0,
26
- localEditors: editorsDir || void 0,
27
- open: studio?.openBrowser,
28
- ...connectOptions
29
- });
30
- });
31
- }
32
- if (process.argv.at(2) === "spawn") {
33
- const optionsArg = process.argv.at(3);
34
- const options = optionsArg ? JSON.parse(optionsArg) : {};
35
- startConnect(options).catch((e) => {
36
- throw e;
37
- });
38
- }
39
-
40
- export { connectCommand, startConnect };
41
- //# sourceMappingURL=connect.js.map
42
- //# sourceMappingURL=connect.js.map
1
+ import {
2
+ connectCommand,
3
+ startConnect
4
+ } from "../chunk-27FF7J6K.js";
5
+ export {
6
+ connectCommand,
7
+ startConnect
8
+ };
@@ -1,98 +1,9 @@
1
- import path, { dirname } from 'node:path';
2
- import { fileURLToPath } from 'node:url';
3
- import { fork } from 'node:child_process';
4
- import { blue, red, green } from 'colorette';
5
- import { DefaultReactorOptions } from './reactor.js';
6
-
7
- const __dirname = import.meta.dirname || dirname(fileURLToPath(import.meta.url));
8
- function spawnLocalReactor(options) {
9
- const child = fork(
10
- path.join(__dirname, "reactor.js"),
11
- ["spawn", JSON.stringify(options)],
12
- { silent: true }
13
- );
14
- return new Promise((resolve) => {
15
- child.on("message", (message) => {
16
- const text = message.toString();
17
- if (text.startsWith("driveUrl:")) {
18
- const driveUrl = text.substring("driveUrl:".length);
19
- resolve({ driveUrl });
20
- }
21
- });
22
- child.stdout.on("data", (data) => {
23
- const message = data.toString();
24
- const lines = message.split("\n").filter((line) => line.trim().length);
25
- for (const line of lines) {
26
- process.stdout.write(blue(`[Reactor]: ${line}
27
- `));
28
- }
29
- });
30
- child.stderr.on("error", (data) => {
31
- process.stderr.write(red(`[Reactor]: ${data.toString()}`));
32
- });
33
- child.on("error", (err) => {
34
- process.stderr.write(red(`[Reactor]: ${err}`));
35
- });
36
- child.on("exit", (code) => {
37
- console.log(`Reactor process exited with code ${code}`);
38
- });
39
- });
40
- }
41
- async function spawnConnect(options, localReactorUrl) {
42
- const child = fork(
43
- path.join(__dirname, "connect.js"),
44
- ["spawn", JSON.stringify(options)],
45
- {
46
- silent: true,
47
- env: {
48
- ...process.env,
49
- // TODO add studio variables?
50
- LOCAL_DOCUMENT_MODELS: options?.localDocuments,
51
- LOCAL_DOCUMENT_EDITORS: options?.localEditors,
52
- PH_CONNECT_DEFAULT_DRIVES_URL: localReactorUrl
53
- }
54
- }
55
- );
56
- return new Promise((resolve) => {
57
- child.stdout.on("data", (data) => {
58
- resolve();
59
- process.stdout.write(green(`[Connect]: ${data.toString()}`));
60
- });
61
- child.stderr.on("data", (data) => {
62
- process.stderr.write(red(`[Connect]: ${data.toString()}`));
63
- });
64
- child.on("close", (code) => {
65
- console.log(`Connect process exited with code ${code}`);
66
- });
67
- });
68
- }
69
- const dev = async ({
70
- generate,
71
- watch,
72
- reactorPort = DefaultReactorOptions.port,
73
- configFile
74
- }) => {
75
- try {
76
- const { driveUrl } = await spawnLocalReactor({
77
- generate,
78
- port: reactorPort,
79
- watch
80
- });
81
- await spawnConnect({ configFile }, driveUrl);
82
- } catch (error) {
83
- console.error(error);
84
- }
1
+ import {
2
+ dev,
3
+ devCommand
4
+ } from "../chunk-CWUXPR5K.js";
5
+ import "../chunk-6O6TUXJK.js";
6
+ export {
7
+ dev,
8
+ devCommand
85
9
  };
86
- function devCommand(program) {
87
- program.command("dev").description("Starts dev environment").option("--generate", "generate code when document model is updated").option("--reactor-port <port>", "port to use for the reactor").option(
88
- "--config-file <configFile>",
89
- "Path to the powerhouse.config.js file"
90
- ).option(
91
- "-w, --watch",
92
- "if the reactor should watch for local changes to document models and processors"
93
- ).action(dev);
94
- }
95
-
96
- export { dev, devCommand };
97
- //# sourceMappingURL=dev.js.map
98
- //# sourceMappingURL=dev.js.map
@@ -1,70 +1,8 @@
1
- import { promptDirectories, generateEditor, generateProcessor, generateSubgraph, generateFromFile, generate as generate$1 } from '@powerhousedao/codegen';
2
- import { getConfig } from '@powerhousedao/config/powerhouse';
3
-
4
- const generate = async (filePath, options) => {
5
- const baseConfig = getConfig();
6
- const config = {
7
- ...baseConfig,
8
- ...{
9
- ...options.editors && { editorsDir: options.editors },
10
- ...options.processors && { processorsDir: options.processors },
11
- ...options.documentModels && {
12
- documentModelsDir: options.documentModels
13
- },
14
- ...options.skipFormat && { skipFormat: options.skipFormat },
15
- ...options.interactive && { interactive: options.interactive },
16
- ...options.watch && { watch: options.watch }
17
- }
18
- };
19
- const command = {
20
- editor: !!options.editor,
21
- editorName: options.editor,
22
- documentTypes: options.documentTypes,
23
- processor: !!options.processor,
24
- processorName: options.processor,
25
- processorType: options.processorType,
26
- subgraph: !!options.subgraph,
27
- subgraphName: options.subgraph
28
- };
29
- if (config.interactive) {
30
- const result = await promptDirectories(config);
31
- Object.assign(config, result);
32
- }
33
- if (command.editor) {
34
- if (!command.editorName) {
35
- throw new Error("Editor name is required (--editor or -e)");
36
- }
37
- await generateEditor(
38
- command.editorName,
39
- command.documentTypes?.split(/[|,;]/g) ?? [],
40
- config
41
- );
42
- return;
43
- }
44
- if (command.processor && options.processor) {
45
- const processorType = options.processorType === "operational" ? "operational" : "analytics";
46
- await generateProcessor(
47
- options.processor,
48
- processorType,
49
- options.documentTypes?.split(",") ?? [],
50
- config
51
- );
52
- return;
53
- }
54
- if (command.subgraph && command.subgraphName) {
55
- await generateSubgraph(command.subgraphName, config);
56
- return;
57
- }
58
- if (filePath) {
59
- await generateFromFile(filePath, config);
60
- return;
61
- }
62
- await generate$1(config);
1
+ import {
2
+ generate,
3
+ generateCommand
4
+ } from "../chunk-OH5NZOCQ.js";
5
+ export {
6
+ generate,
7
+ generateCommand
63
8
  };
64
- function generateCommand(program) {
65
- program.command("generate").description("Generate code from the document models").argument("[document-model-file]", "Path to the document model file").option("-i, --interactive", "Run the command in interactive mode").option("--editors <type>", "Path to the editors directory").option("-e, --editor <type>", "Editor Name").option("--processors <type>", "Path to the processors directory").option("-p, --processor <type>", "Processor Name").option("--processor-type <type>", "Processor Type").option("-s, --subgraph <type>", "Subgraph Name").option("--document-models <type>", "Path to the document models directory").option("--document-types <type>", "Supported document types by the editor").option("-sf, --skip-format", "Skip formatting the generated code").option("-w, --watch", "Watch the generated code").action(generate);
66
- }
67
-
68
- export { generate, generateCommand };
69
- //# sourceMappingURL=generate.js.map
70
- //# sourceMappingURL=generate.js.map
@@ -1,9 +1,6 @@
1
- function helpCommand(program) {
2
- program.command("help").description("Display help information").action(() => {
3
- program.help();
4
- });
5
- }
6
-
7
- export { helpCommand };
8
- //# sourceMappingURL=help.js.map
9
- //# sourceMappingURL=help.js.map
1
+ import {
2
+ helpCommand
3
+ } from "../chunk-KPMNRIJU.js";
4
+ export {
5
+ helpCommand
6
+ };
@@ -1,32 +1,61 @@
1
- import { connectCommand } from './connect.js';
2
- import { devCommand } from './dev.js';
3
- export * from './dev.js';
4
- import { generateCommand } from './generate.js';
5
- export * from './generate.js';
6
- import { helpCommand } from './help.js';
7
- export * from './help.js';
8
- import { initCommand } from './init.js';
9
- export * from './init.js';
10
- import { installCommand } from './install.js';
11
- import { reactorCommand } from './reactor.js';
12
- export * from './reactor.js';
13
- import { serviceCommand } from './service.js';
14
- export * from './service.js';
15
-
16
- const commands = [
17
- initCommand,
18
- devCommand,
1
+ import {
2
+ commands,
3
+ registerCommands
4
+ } from "../chunk-PUQARXW2.js";
5
+ import {
6
+ install,
7
+ installCommand,
8
+ installDependency
9
+ } from "../chunk-E3EWRF5U.js";
10
+ import {
11
+ manageService,
12
+ serviceCommand
13
+ } from "../chunk-ZN4M6TJ2.js";
14
+ import {
15
+ uninstall,
16
+ uninstallCommand,
17
+ uninstallDependency
18
+ } from "../chunk-X2RNXISI.js";
19
+ import "../chunk-FDMMJENR.js";
20
+ import {
19
21
  connectCommand,
20
- generateCommand,
22
+ startConnect
23
+ } from "../chunk-27FF7J6K.js";
24
+ import {
25
+ dev,
26
+ devCommand
27
+ } from "../chunk-CWUXPR5K.js";
28
+ import {
29
+ DefaultSwitchboardOptions,
21
30
  reactorCommand,
31
+ switchboard
32
+ } from "../chunk-6O6TUXJK.js";
33
+ import {
34
+ generate,
35
+ generateCommand
36
+ } from "../chunk-OH5NZOCQ.js";
37
+ import {
38
+ helpCommand
39
+ } from "../chunk-KPMNRIJU.js";
40
+ export {
41
+ DefaultSwitchboardOptions,
42
+ commands,
43
+ connectCommand,
44
+ registerCommands as default,
45
+ dev,
46
+ devCommand,
47
+ generate,
48
+ generateCommand,
22
49
  helpCommand,
50
+ install,
23
51
  installCommand,
24
- serviceCommand
25
- ];
26
- function registerCommands(program) {
27
- commands.forEach((command) => command(program));
28
- }
29
-
30
- export { commands, registerCommands as default };
31
- //# sourceMappingURL=index.js.map
32
- //# sourceMappingURL=index.js.map
52
+ installDependency,
53
+ manageService,
54
+ reactorCommand,
55
+ serviceCommand,
56
+ startConnect,
57
+ switchboard,
58
+ uninstall,
59
+ uninstallCommand,
60
+ uninstallDependency
61
+ };