@powerhousedao/ph-cli 0.38.1-dev.0 → 0.39.1-dev.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 (36) hide show
  1. package/dist/package.json +2 -1
  2. package/dist/src/commands/connect.d.ts +5 -3
  3. package/dist/src/commands/connect.d.ts.map +1 -1
  4. package/dist/src/commands/connect.js +8 -20
  5. package/dist/src/commands/dev.d.ts +2 -10
  6. package/dist/src/commands/dev.d.ts.map +1 -1
  7. package/dist/src/commands/dev.js +6 -74
  8. package/dist/src/commands/generate.d.ts +2 -15
  9. package/dist/src/commands/generate.d.ts.map +1 -1
  10. package/dist/src/commands/generate.js +6 -50
  11. package/dist/src/commands/index.d.ts +2 -11
  12. package/dist/src/commands/index.d.ts.map +1 -1
  13. package/dist/src/commands/index.js +2 -11
  14. package/dist/src/commands/inspect.d.ts +2 -3
  15. package/dist/src/commands/inspect.d.ts.map +1 -1
  16. package/dist/src/commands/inspect.js +6 -46
  17. package/dist/src/commands/switchboard.d.ts +2 -27
  18. package/dist/src/commands/switchboard.d.ts.map +1 -1
  19. package/dist/src/commands/switchboard.js +5 -49
  20. package/dist/src/services/connect.d.ts +4 -0
  21. package/dist/src/services/connect.d.ts.map +1 -0
  22. package/dist/src/services/connect.js +17 -0
  23. package/dist/src/services/dev.d.ts +10 -0
  24. package/dist/src/services/dev.d.ts.map +1 -0
  25. package/dist/src/services/dev.js +76 -0
  26. package/dist/src/services/generate.d.ts +17 -0
  27. package/dist/src/services/generate.d.ts.map +1 -0
  28. package/dist/src/services/generate.js +52 -0
  29. package/dist/src/services/inspect.d.ts +5 -0
  30. package/dist/src/services/inspect.d.ts.map +1 -0
  31. package/dist/src/services/inspect.js +47 -0
  32. package/dist/src/services/switchboard.d.ts +29 -0
  33. package/dist/src/services/switchboard.d.ts.map +1 -0
  34. package/dist/src/services/switchboard.js +63 -0
  35. package/dist/tsconfig.tsbuildinfo +1 -1
  36. package/package.json +8 -7
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@powerhousedao/ph-cli",
3
- "version": "0.38.1-dev.0",
3
+ "version": "0.39.1-dev.0",
4
4
  "description": "",
5
5
  "license": "AGPL-3.0-only",
6
6
  "type": "module",
@@ -36,6 +36,7 @@
36
36
  "colorette": "^2.0.20",
37
37
  "commander": "^12.1.0",
38
38
  "document-model": "workspace:*",
39
+ "document-drive": "workspace:*",
39
40
  "pm2": "^5.4.3"
40
41
  }
41
42
  }
@@ -1,6 +1,8 @@
1
- import { type ConnectStudioOptions } from "@powerhousedao/builder-tools/connect-studio";
2
1
  import { type Command } from "commander";
3
- export type ConnectOptions = ConnectStudioOptions;
4
- export declare function startConnect(connectOptions: ConnectOptions): Promise<void | undefined>;
2
+ import { type ConnectOptions } from "../services/connect.js";
3
+ import { type CommandActionType } from "../types.js";
4
+ export declare const connect: CommandActionType<[
5
+ ConnectOptions
6
+ ], Promise<void>>;
5
7
  export declare function connectCommand(program: Command): void;
6
8
  //# sourceMappingURL=connect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../../src/commands/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,6CAA6C,CAAC;AAErD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,MAAM,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAElD,wBAAsB,YAAY,CAAC,cAAc,EAAE,cAAc,6BAIhE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,QAmC9C"}
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../../src/commands/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAQrD,eAAO,MAAM,OAAO,EAAE,iBAAiB,CACrC;IAAC,cAAc;CAAC,EAChB,OAAO,CAAC,IAAI,CAAC,CAGd,CAAC;AAEF,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,QAuB9C"}
@@ -1,12 +1,11 @@
1
- import { startConnectStudio, } from "@powerhousedao/builder-tools/connect-studio";
2
- import { getConfig } from "@powerhousedao/config/powerhouse";
3
- import packageJson from "../../package.json" with { type: "json" };
4
- const version = packageJson.version;
5
- export async function startConnect(connectOptions) {
6
- const { documentModelsDir, editorsDir } = getConfig();
7
- const options = { documentModelsDir, editorsDir, ...connectOptions };
8
- return await startConnectStudio(options);
1
+ async function startConnect(options) {
2
+ const Connect = await import("../services/connect.js");
3
+ const { startConnect } = Connect;
4
+ return startConnect(options);
9
5
  }
6
+ export const connect = async (options) => {
7
+ return startConnect(options);
8
+ };
10
9
  export function connectCommand(program) {
11
10
  program
12
11
  .command("connect")
@@ -19,18 +18,7 @@ export function connectCommand(program) {
19
18
  .option("-le, --local-editors <localEditors>", "Link local document editors path")
20
19
  .option("-ld, --local-documents <localDocuments>", "Link local documents path")
21
20
  .action(async (...args) => {
22
- const connectOptions = args.at(0) || {};
23
- const { documentModelsDir, editorsDir, packages, studio, logLevel } = getConfig();
24
- await startConnectStudio({
25
- port: studio?.port?.toString() || undefined,
26
- packages,
27
- phCliVersion: typeof version === "string" ? version : undefined,
28
- localDocuments: documentModelsDir || undefined,
29
- localEditors: editorsDir || undefined,
30
- open: studio?.openBrowser,
31
- logLevel: logLevel,
32
- ...connectOptions,
33
- });
21
+ await connect(...args);
34
22
  });
35
23
  }
36
24
  if (process.argv.at(2) === "spawn") {
@@ -1,14 +1,6 @@
1
1
  import { type Command } from "commander";
2
+ import { type DevOptions } from "../services/dev.js";
2
3
  import { type CommandActionType } from "../types.js";
3
- export declare const dev: CommandActionType<[
4
- {
5
- generate?: boolean;
6
- watch?: boolean;
7
- switchboardPort?: number;
8
- configFile?: string;
9
- httpsKeyFile?: string;
10
- httpsCertFile?: string;
11
- }
12
- ]>;
4
+ export declare const dev: CommandActionType<[DevOptions]>;
13
5
  export declare function devCommand(program: Command): void;
14
6
  //# sourceMappingURL=dev.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../src/commands/dev.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAoFrD,eAAO,MAAM,GAAG,EAAE,iBAAiB,CACjC;IACE;QACE,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB;CACF,CAoBF,CAAC;AAEF,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,QAiB1C"}
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../src/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AASrD,eAAO,MAAM,GAAG,EAAE,iBAAiB,CAAC,CAAC,UAAU,CAAC,CAE/C,CAAC;AAEF,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,QAiB1C"}
@@ -1,78 +1,10 @@
1
- import { blue, green, red } from "colorette";
2
- import { fork } from "node:child_process";
3
- import path, { dirname } from "node:path";
4
- import { fileURLToPath } from "node:url";
5
- import { getConfig } from "../utils.js";
6
- import { DefaultSwitchboardOptions, } from "./switchboard.js";
7
- const __dirname = import.meta.dirname || dirname(fileURLToPath(import.meta.url));
8
- function spawnLocalSwitchboard(options) {
9
- const child = fork(path.join(__dirname, "switchboard.js"), ["spawn", JSON.stringify(options)], { silent: true });
10
- return new Promise((resolve) => {
11
- child.on("message", (message) => {
12
- // eslint-disable-next-line @typescript-eslint/no-base-to-string
13
- const text = message.toString();
14
- if (text.startsWith("driveUrl:")) {
15
- const driveUrl = text.substring("driveUrl:".length);
16
- resolve({ driveUrl });
17
- }
18
- });
19
- child.stdout.on("data", (data) => {
20
- const message = data.toString();
21
- const lines = message.split("\n").filter((line) => line.trim().length);
22
- for (const line of lines) {
23
- process.stdout.write(blue(`[Switchboard]: ${line}\n`));
24
- }
25
- });
26
- child.stderr.on("error", (data) => {
27
- process.stderr.write(red(`[Switchboard]: ${data.toString()}`));
28
- });
29
- child.on("error", (err) => {
30
- process.stderr.write(red(`[Switchboard]: ${err}`));
31
- });
32
- child.on("exit", (code) => {
33
- console.log(`Switchboard process exited with code ${code}`);
34
- });
35
- });
1
+ async function startDev(options) {
2
+ const Dev = await import("../services/dev.js");
3
+ const { startDev } = Dev;
4
+ return startDev(options);
36
5
  }
37
- async function spawnConnect(options, localReactorUrl) {
38
- const child = fork(path.join(__dirname, "connect.js"), ["spawn", JSON.stringify(options ?? {})], {
39
- silent: true,
40
- env: {
41
- ...process.env,
42
- // TODO add studio variables?
43
- LOCAL_DOCUMENT_MODELS: options?.localDocuments,
44
- LOCAL_DOCUMENT_EDITORS: options?.localEditors,
45
- PH_CONNECT_DEFAULT_DRIVES_URL: localReactorUrl,
46
- },
47
- });
48
- return new Promise((resolve) => {
49
- child.stdout.on("data", (data) => {
50
- resolve();
51
- process.stdout.write(green(`[Connect]: ${data.toString()}`));
52
- });
53
- child.stderr.on("data", (data) => {
54
- process.stderr.write(red(`[Connect]: ${data.toString()}`));
55
- });
56
- child.on("close", (code) => {
57
- console.log(`Connect process exited with code ${code}`);
58
- });
59
- });
60
- }
61
- export const dev = async ({ generate, watch, switchboardPort = DefaultSwitchboardOptions.port, configFile, }) => {
62
- try {
63
- const baseConfig = getConfig(configFile);
64
- const https = baseConfig.reactor?.https;
65
- const { driveUrl } = await spawnLocalSwitchboard({
66
- generate,
67
- port: switchboardPort,
68
- watch,
69
- https,
70
- });
71
- await spawnConnect({ configFile }, driveUrl);
72
- }
73
- catch (error) {
74
- console.error(error);
75
- }
6
+ export const dev = async (options) => {
7
+ return startDev(options);
76
8
  };
77
9
  export function devCommand(program) {
78
10
  program
@@ -1,22 +1,9 @@
1
1
  import { type Command } from "commander";
2
+ import { type GenerateOptions } from "../services/generate.js";
2
3
  import { type CommandActionType } from "../types.js";
3
4
  export declare const generate: CommandActionType<[
4
5
  string | undefined,
5
- {
6
- interactive?: boolean;
7
- editors?: string;
8
- processors?: string;
9
- documentModels?: string;
10
- skipFormat?: boolean;
11
- watch?: boolean;
12
- editor?: string;
13
- processor?: string;
14
- documentTypes?: string;
15
- processorType?: "analytics" | "operational";
16
- subgraph?: string;
17
- importScript?: string;
18
- file?: string;
19
- }
6
+ GenerateOptions
20
7
  ]>;
21
8
  export declare function generateCommand(program: Command): void;
22
9
  //# sourceMappingURL=generate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/commands/generate.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,eAAO,MAAM,QAAQ,EAAE,iBAAiB,CACtC;IACE,MAAM,GAAG,SAAS;IAClB;QACE,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,aAAa,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC;QAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf;CACF,CA0DF,CAAC;AAEF,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,QAmB/C"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAWrD,eAAO,MAAM,QAAQ,EAAE,iBAAiB,CACtC;IAAC,MAAM,GAAG,SAAS;IAAE,eAAe;CAAC,CAGtC,CAAC;AAEF,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,QAmB/C"}
@@ -1,54 +1,10 @@
1
- import { generate as generateCode, generateEditor, generateFromFile, generateImportScript, generateProcessor, generateSubgraph, } from "@powerhousedao/codegen";
2
- import { getConfig } from "@powerhousedao/config/powerhouse";
1
+ async function startGenerate(filePath, options) {
2
+ const Generate = await import("../services/generate.js");
3
+ const { startGenerate } = Generate;
4
+ return startGenerate(filePath, options);
5
+ }
3
6
  export const generate = async (filePath, options) => {
4
- const baseConfig = getConfig();
5
- const config = {
6
- ...baseConfig,
7
- ...{
8
- ...(options.editors && { editorsDir: options.editors }),
9
- ...(options.processors && { processorsDir: options.processors }),
10
- ...(options.documentModels && {
11
- documentModelsDir: options.documentModels,
12
- }),
13
- ...(options.skipFormat && { skipFormat: options.skipFormat }),
14
- ...(options.interactive && { interactive: options.interactive }),
15
- ...(options.watch && { watch: options.watch }),
16
- },
17
- };
18
- const command = {
19
- editor: !!options.editor,
20
- editorName: options.editor,
21
- documentTypes: options.documentTypes,
22
- processor: !!options.processor,
23
- processorName: options.processor,
24
- processorType: options.processorType,
25
- subgraph: !!options.subgraph,
26
- subgraphName: options.subgraph,
27
- importScript: !!options.importScript,
28
- importScriptName: options.importScript,
29
- };
30
- if (command.editor) {
31
- if (!command.editorName) {
32
- throw new Error("Editor name is required (--editor or -e)");
33
- }
34
- await generateEditor(command.editorName, command.documentTypes?.split(/[|,;]/g) ?? [], config);
35
- }
36
- else if (command.processor && options.processor) {
37
- const processorType = options.processorType === "operational" ? "operational" : "analytics";
38
- await generateProcessor(options.processor, processorType, options.documentTypes?.split(",") ?? [], config);
39
- }
40
- else if (command.subgraph && command.subgraphName) {
41
- await generateSubgraph(command.subgraphName, options.file || null, config);
42
- }
43
- else if (command.importScript && command.importScriptName) {
44
- await generateImportScript(command.importScriptName, config);
45
- }
46
- else if (filePath) {
47
- await generateFromFile(filePath, config);
48
- }
49
- else {
50
- await generateCode(config);
51
- }
7
+ return startGenerate(filePath, options);
52
8
  };
53
9
  export function generateCommand(program) {
54
10
  program
@@ -1,14 +1,5 @@
1
1
  import { type Command } from "commander";
2
- import { devCommand } from "./dev.js";
3
- export declare const commands: (typeof devCommand)[];
2
+ import { connectCommand } from "./connect.js";
3
+ export declare const commands: (typeof connectCommand)[];
4
4
  export default function registerCommands(program: Command): void;
5
- export * from "./connect.js";
6
- export * from "./dev.js";
7
- export * from "./generate.js";
8
- export * from "./help.js";
9
- export * from "./install.js";
10
- export * from "./list.js";
11
- export * from "./service.js";
12
- export * from "./switchboard.js";
13
- export * from "./uninstall.js";
14
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAWtC,eAAO,MAAM,QAAQ,uBAYpB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,OAAO,EAAE,OAAO,QAExD;AAED,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAY9C,eAAO,MAAM,QAAQ,2BAYpB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,OAAO,EAAE,OAAO,QAExD"}
@@ -1,5 +1,5 @@
1
1
  import { connectCommand } from "./connect.js";
2
- import { devCommand } from "./dev.js";
2
+ // import { devCommand } from "./dev.js";
3
3
  import { generateCommand } from "./generate.js";
4
4
  import { helpCommand } from "./help.js";
5
5
  import { inspectCommand } from "./inspect.js";
@@ -10,7 +10,7 @@ import { reactorCommand } from "./switchboard.js";
10
10
  import { uninstallCommand } from "./uninstall.js";
11
11
  import { versionCommand } from "./version.js";
12
12
  export const commands = [
13
- devCommand,
13
+ // devCommand,
14
14
  connectCommand,
15
15
  generateCommand,
16
16
  reactorCommand,
@@ -25,12 +25,3 @@ export const commands = [
25
25
  export default function registerCommands(program) {
26
26
  commands.forEach((command) => command(program));
27
27
  }
28
- export * from "./connect.js";
29
- export * from "./dev.js";
30
- export * from "./generate.js";
31
- export * from "./help.js";
32
- export * from "./install.js";
33
- export * from "./list.js";
34
- export * from "./service.js";
35
- export * from "./switchboard.js";
36
- export * from "./uninstall.js";
@@ -1,10 +1,9 @@
1
1
  import { type Command } from "commander";
2
+ import { type InspectOptions } from "../services/inspect.js";
2
3
  import { type CommandActionType } from "../types.js";
3
4
  export declare const inspect: CommandActionType<[
4
5
  string,
5
- {
6
- debug?: boolean;
7
- }
6
+ InspectOptions
8
7
  ]>;
9
8
  export declare function inspectCommand(program: Command): void;
10
9
  //# sourceMappingURL=inspect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../../src/commands/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,eAAO,MAAM,OAAO,EAAE,iBAAiB,CACrC;IACE,MAAM;IACN;QACE,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB;CACF,CAyDF,CAAC;AAEF,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,QAQ9C"}
1
+ {"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../../src/commands/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAQrD,eAAO,MAAM,OAAO,EAAE,iBAAiB,CACrC;IAAC,MAAM;IAAE,cAAc;CAAC,CAGzB,CAAC;AAEF,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,QAQ9C"}
@@ -1,50 +1,10 @@
1
- // import { Manifest } from "document-model";
2
- import path from "node:path";
3
- import { getProjectInfo } from "../utils.js";
1
+ async function startInspect(packageName, options) {
2
+ const Inspect = await import("../services/inspect.js");
3
+ const { startInspect } = Inspect;
4
+ return startInspect(packageName, options);
5
+ }
4
6
  export const inspect = async (packageName, options) => {
5
- if (options.debug) {
6
- console.log(">>> command arguments", { options });
7
- }
8
- const projectInfo = getProjectInfo(options.debug);
9
- if (options.debug) {
10
- console.log("\n>>> projectInfo", projectInfo);
11
- }
12
- try {
13
- const manifest = (await import(path.join(packageName, "manifest")));
14
- console.log(manifest.name);
15
- if (manifest.documentModels) {
16
- console.log("\nDocument Models:");
17
- manifest.documentModels.forEach((model) => {
18
- console.log(`- ${model.name} (${model.id})`);
19
- });
20
- }
21
- if (manifest.editors) {
22
- console.log("\nEditors:");
23
- manifest.editors.forEach((editor) => {
24
- console.log(`- ${editor.name} (${editor.id})`);
25
- });
26
- }
27
- if (manifest.processors) {
28
- console.log("\nProcessors:");
29
- manifest.processors.forEach((processor) => {
30
- console.log(`- ${processor.name} (${processor.id})`);
31
- });
32
- }
33
- if (manifest.subgraphs) {
34
- console.log("\nSubgraphs:");
35
- manifest.subgraphs.forEach((subgraph) => {
36
- console.log(`- ${subgraph.name} (${subgraph.id})`);
37
- });
38
- }
39
- }
40
- catch (e) {
41
- if (options.debug) {
42
- console.error(e);
43
- }
44
- else {
45
- console.log("No manifest found in the package");
46
- }
47
- }
7
+ return startInspect(packageName, options);
48
8
  };
49
9
  export function inspectCommand(program) {
50
10
  program
@@ -1,32 +1,7 @@
1
- import { type LocalReactor, type StartServerOptions } from "@powerhousedao/reactor-local";
1
+ import { type LocalReactor } from "@powerhousedao/reactor-local";
2
2
  import { type Command } from "commander";
3
+ import { type SwitchboardOptions } from "../services/switchboard.js";
3
4
  import { type CommandActionType } from "../types.js";
4
- export type SwitchboardOptions = StartServerOptions & {
5
- configFile?: string;
6
- generate?: boolean;
7
- watch?: boolean;
8
- dbPath?: string;
9
- };
10
- export declare const DefaultSwitchboardOptions: {
11
- dev: boolean;
12
- port: number;
13
- storagePath: string;
14
- dbPath: string;
15
- drive: {
16
- global: {
17
- id: string;
18
- name: string;
19
- icon: string;
20
- slug: string;
21
- };
22
- local: {
23
- availableOffline: true;
24
- listeners: never[];
25
- sharingType: string;
26
- triggers: never[];
27
- };
28
- };
29
- };
30
5
  export declare const switchboard: CommandActionType<[
31
6
  SwitchboardOptions
32
7
  ], Promise<LocalReactor>>;
@@ -1 +1 @@
1
- {"version":3,"file":"switchboard.d.ts","sourceRoot":"","sources":["../../../src/commands/switchboard.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,YAAY,EAEjB,KAAK,kBAAkB,EACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,MAAM,kBAAkB,GAAG,kBAAkB,GAAG;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;CAGrC,CAAC;AA0DF,eAAO,MAAM,WAAW,EAAE,iBAAiB,CACzC;IAAC,kBAAkB;CAAC,EACpB,OAAO,CAAC,YAAY,CAAC,CAGtB,CAAC;AAEF,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,QA0B9C"}
1
+ {"version":3,"file":"switchboard.d.ts","sourceRoot":"","sources":["../../../src/commands/switchboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAQrD,eAAO,MAAM,WAAW,EAAE,iBAAiB,CACzC;IAAC,kBAAkB;CAAC,EACpB,OAAO,CAAC,YAAY,CAAC,CAGtB,CAAC;AAEF,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,QA0B9C"}
@@ -1,53 +1,9 @@
1
- import { generateFromFile } from "@powerhousedao/codegen";
2
- import { getConfig, } from "@powerhousedao/config/powerhouse";
3
- import { DefaultStartServerOptions, startServer, } from "@powerhousedao/reactor-local";
4
- export const DefaultSwitchboardOptions = {
5
- ...DefaultStartServerOptions,
6
- dev: true,
7
- };
8
- async function startLocalSwitchboard(switchboardOptions) {
9
- const baseConfig = getConfig(switchboardOptions.configFile);
10
- const options = {
11
- ...DefaultSwitchboardOptions,
12
- ...switchboardOptions,
13
- };
14
- const { https } = baseConfig.reactor ?? { https: false };
15
- const reactor = await startServer({
16
- ...options,
17
- https,
18
- logLevel: baseConfig.logLevel,
19
- });
20
- if (options.generate) {
21
- await addGenerateTransmitter(reactor, baseConfig);
22
- }
23
- return reactor;
24
- }
25
- async function addGenerateTransmitter(reactor, config) {
26
- return reactor.addListener("powerhouse", {
27
- onStrands: async function (strands) {
28
- const documentPaths = new Set();
29
- for (const strand of strands) {
30
- documentPaths.add(reactor.getDocumentPath(strand.driveId, strand.documentId));
31
- }
32
- for (const path of documentPaths) {
33
- await generateFromFile(path, config);
34
- }
35
- return Promise.resolve();
36
- },
37
- onDisconnect: () => Promise.resolve(),
38
- }, {
39
- filter: {
40
- documentType: ["powerhouse/document-model"],
41
- scope: ["global"],
42
- branch: ["*"],
43
- documentId: ["*"],
44
- },
45
- block: false,
46
- listenerId: "reactor-local-document-model-generator",
47
- label: "reactor-local-document-model-generator",
48
- });
1
+ async function startLocalSwitchboard(options) {
2
+ const Switchboard = await import("../services/switchboard.js");
3
+ const { startLocalSwitchboard } = Switchboard;
4
+ return startLocalSwitchboard(options);
49
5
  }
50
- export const switchboard = (options) => {
6
+ export const switchboard = async (options) => {
51
7
  return startLocalSwitchboard(options);
52
8
  };
53
9
  export function reactorCommand(program) {
@@ -0,0 +1,4 @@
1
+ import { type ConnectStudioOptions } from "@powerhousedao/builder-tools/connect-studio";
2
+ export type ConnectOptions = ConnectStudioOptions;
3
+ export declare function startConnect(connectOptions: ConnectOptions): Promise<void | undefined>;
4
+ //# sourceMappingURL=connect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../../src/services/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,6CAA6C,CAAC;AAKrD,MAAM,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAElD,wBAAsB,YAAY,CAAC,cAAc,EAAE,cAAc,6BAYhE"}
@@ -0,0 +1,17 @@
1
+ import { startConnectStudio, } from "@powerhousedao/builder-tools/connect-studio";
2
+ import { getConfig } from "@powerhousedao/config/powerhouse";
3
+ import packageJson from "../../package.json" with { type: "json" };
4
+ const version = packageJson.version;
5
+ export async function startConnect(connectOptions) {
6
+ const { documentModelsDir, editorsDir, packages, studio, logLevel } = getConfig(connectOptions.configFile);
7
+ return await startConnectStudio({
8
+ port: studio?.port?.toString() || undefined,
9
+ packages,
10
+ phCliVersion: typeof version === "string" ? version : undefined,
11
+ localDocuments: documentModelsDir || undefined,
12
+ localEditors: editorsDir || undefined,
13
+ open: studio?.openBrowser,
14
+ logLevel: logLevel,
15
+ ...connectOptions,
16
+ });
17
+ }
@@ -0,0 +1,10 @@
1
+ export type DevOptions = {
2
+ generate?: boolean;
3
+ watch?: boolean;
4
+ switchboardPort?: number;
5
+ configFile?: string;
6
+ httpsKeyFile?: string;
7
+ httpsCertFile?: string;
8
+ };
9
+ export declare function startDev({ generate, watch, switchboardPort, configFile, }: DevOptions): Promise<void>;
10
+ //# sourceMappingURL=dev.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../src/services/dev.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AA4EF,wBAAsB,QAAQ,CAAC,EAC7B,QAAQ,EACR,KAAK,EACL,eAAgD,EAChD,UAAU,GACX,EAAE,UAAU,iBAcZ"}
@@ -0,0 +1,76 @@
1
+ import { blue, green, red } from "colorette";
2
+ import { fork } from "node:child_process";
3
+ import path, { dirname } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ import { DefaultSwitchboardOptions } from "./switchboard.js";
6
+ import { getConfig } from "../utils.js";
7
+ const __dirname = import.meta.dirname || dirname(fileURLToPath(import.meta.url));
8
+ function spawnLocalSwitchboard(options) {
9
+ const child = fork(path.join(dirname(__dirname), "commands", "switchboard.js"), ["spawn", JSON.stringify(options)], { silent: true });
10
+ return new Promise((resolve) => {
11
+ child.on("message", (message) => {
12
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
13
+ const text = message.toString();
14
+ if (text.startsWith("driveUrl:")) {
15
+ const driveUrl = text.substring("driveUrl:".length);
16
+ resolve({ driveUrl });
17
+ }
18
+ });
19
+ child.stdout.on("data", (data) => {
20
+ const message = data.toString();
21
+ const lines = message.split("\n").filter((line) => line.trim().length);
22
+ for (const line of lines) {
23
+ process.stdout.write(blue(`[Switchboard]: ${line}\n`));
24
+ }
25
+ });
26
+ child.stderr.on("error", (data) => {
27
+ process.stderr.write(red(`[Switchboard]: ${data.toString()}`));
28
+ });
29
+ child.on("error", (err) => {
30
+ process.stderr.write(red(`[Switchboard]: ${err}`));
31
+ });
32
+ child.on("exit", (code) => {
33
+ console.log(`Switchboard process exited with code ${code}`);
34
+ });
35
+ });
36
+ }
37
+ async function spawnConnect(options, localReactorUrl) {
38
+ const child = fork(path.join(dirname(__dirname), "commands", "connect.js"), ["spawn", JSON.stringify(options ?? {})], {
39
+ silent: true,
40
+ env: {
41
+ ...process.env,
42
+ // TODO add studio variables?
43
+ LOCAL_DOCUMENT_MODELS: options?.localDocuments,
44
+ LOCAL_DOCUMENT_EDITORS: options?.localEditors,
45
+ PH_CONNECT_DEFAULT_DRIVES_URL: localReactorUrl,
46
+ },
47
+ });
48
+ return new Promise((resolve) => {
49
+ child.stdout.on("data", (data) => {
50
+ resolve();
51
+ process.stdout.write(green(`[Connect]: ${data.toString()}`));
52
+ });
53
+ child.stderr.on("data", (data) => {
54
+ process.stderr.write(red(`[Connect]: ${data.toString()}`));
55
+ });
56
+ child.on("close", (code) => {
57
+ console.log(`Connect process exited with code ${code}`);
58
+ });
59
+ });
60
+ }
61
+ export async function startDev({ generate, watch, switchboardPort = DefaultSwitchboardOptions.port, configFile, }) {
62
+ try {
63
+ const baseConfig = getConfig(configFile);
64
+ const https = baseConfig.reactor?.https;
65
+ const { driveUrl } = await spawnLocalSwitchboard({
66
+ generate,
67
+ port: switchboardPort,
68
+ watch,
69
+ https,
70
+ });
71
+ await spawnConnect({ configFile }, driveUrl);
72
+ }
73
+ catch (error) {
74
+ console.error(error);
75
+ }
76
+ }
@@ -0,0 +1,17 @@
1
+ export type GenerateOptions = {
2
+ interactive?: boolean;
3
+ editors?: string;
4
+ processors?: string;
5
+ documentModels?: string;
6
+ skipFormat?: boolean;
7
+ watch?: boolean;
8
+ editor?: string;
9
+ processor?: string;
10
+ documentTypes?: string;
11
+ processorType?: "analytics" | "operational";
12
+ subgraph?: string;
13
+ importScript?: string;
14
+ file?: string;
15
+ };
16
+ export declare function startGenerate(filePath: string | undefined, options: GenerateOptions): Promise<void>;
17
+ //# sourceMappingURL=generate.d.ts.map