@powerhousedao/switchboard 6.0.0-dev.153 → 6.0.0-dev.154

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 (76) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/index.d.mts +1 -0
  3. package/dist/index.mjs +128 -0
  4. package/dist/index.mjs.map +1 -0
  5. package/dist/install-packages.d.mts +1 -0
  6. package/dist/install-packages.mjs +31 -0
  7. package/dist/install-packages.mjs.map +1 -0
  8. package/dist/migrate.d.mts +1 -0
  9. package/dist/migrate.mjs +55 -0
  10. package/dist/migrate.mjs.map +1 -0
  11. package/dist/server-DaWxxH2k.mjs +249 -0
  12. package/dist/server-DaWxxH2k.mjs.map +1 -0
  13. package/dist/server.d.mts +76 -0
  14. package/dist/server.d.mts.map +1 -0
  15. package/dist/server.mjs +4 -0
  16. package/dist/utils-DFl0ezBT.mjs +44 -0
  17. package/dist/utils-DFl0ezBT.mjs.map +1 -0
  18. package/dist/utils.d.mts +9 -0
  19. package/dist/utils.d.mts.map +1 -0
  20. package/dist/utils.mjs +2 -0
  21. package/package.json +26 -25
  22. package/tsconfig.json +2 -6
  23. package/tsdown.config.ts +16 -0
  24. package/dist/src/config.d.ts +0 -12
  25. package/dist/src/config.d.ts.map +0 -1
  26. package/dist/src/config.js +0 -33
  27. package/dist/src/config.js.map +0 -1
  28. package/dist/src/feature-flags.d.ts +0 -2
  29. package/dist/src/feature-flags.d.ts.map +0 -1
  30. package/dist/src/feature-flags.js +0 -9
  31. package/dist/src/feature-flags.js.map +0 -1
  32. package/dist/src/index.d.ts +0 -3
  33. package/dist/src/index.d.ts.map +0 -1
  34. package/dist/src/index.js +0 -49
  35. package/dist/src/index.js.map +0 -1
  36. package/dist/src/install-packages.d.ts +0 -2
  37. package/dist/src/install-packages.d.ts.map +0 -1
  38. package/dist/src/install-packages.js +0 -36
  39. package/dist/src/install-packages.js.map +0 -1
  40. package/dist/src/metrics.d.ts +0 -7
  41. package/dist/src/metrics.d.ts.map +0 -1
  42. package/dist/src/metrics.js +0 -34
  43. package/dist/src/metrics.js.map +0 -1
  44. package/dist/src/migrate.d.ts +0 -3
  45. package/dist/src/migrate.d.ts.map +0 -1
  46. package/dist/src/migrate.js +0 -65
  47. package/dist/src/migrate.js.map +0 -1
  48. package/dist/src/profiler.d.ts +0 -9
  49. package/dist/src/profiler.d.ts.map +0 -1
  50. package/dist/src/profiler.js +0 -43
  51. package/dist/src/profiler.js.map +0 -1
  52. package/dist/src/renown.d.ts +0 -24
  53. package/dist/src/renown.d.ts.map +0 -1
  54. package/dist/src/renown.js +0 -45
  55. package/dist/src/renown.js.map +0 -1
  56. package/dist/src/server.d.ts +0 -5
  57. package/dist/src/server.d.ts.map +0 -1
  58. package/dist/src/server.js +0 -293
  59. package/dist/src/server.js.map +0 -1
  60. package/dist/src/types.d.ts +0 -73
  61. package/dist/src/types.d.ts.map +0 -1
  62. package/dist/src/types.js +0 -2
  63. package/dist/src/types.js.map +0 -1
  64. package/dist/src/utils.d.ts +0 -5
  65. package/dist/src/utils.d.ts.map +0 -1
  66. package/dist/src/utils.js +0 -63
  67. package/dist/src/utils.js.map +0 -1
  68. package/dist/test/metrics.test.d.ts +0 -2
  69. package/dist/test/metrics.test.d.ts.map +0 -1
  70. package/dist/test/metrics.test.js +0 -121
  71. package/dist/test/metrics.test.js.map +0 -1
  72. package/dist/tsconfig.tsbuildinfo +0 -1
  73. package/dist/vitest.config.d.ts +0 -3
  74. package/dist/vitest.config.d.ts.map +0 -1
  75. package/dist/vitest.config.js +0 -11
  76. package/dist/vitest.config.js.map +0 -1
@@ -0,0 +1,76 @@
1
+ import { ILogger } from "document-model";
2
+ import { MeterProvider } from "@opentelemetry/api";
3
+ import { IReactorClient } from "@powerhousedao/reactor";
4
+ import { DriveInput } from "@powerhousedao/shared/document-drive";
5
+ import { IRenown } from "@renown/sdk";
6
+
7
+ //#region src/types.d.ts
8
+ type StorageOptions = {
9
+ type: "filesystem" | "memory" | "postgres" | "browser";
10
+ filesystemPath?: string;
11
+ postgresUrl?: string;
12
+ };
13
+ type IdentityOptions = {
14
+ /** Path to the keypair file. Defaults to ~/.ph/keypair.json */keypairPath?: string;
15
+ /**
16
+ * If true, won't start without an existing keypair.
17
+ * Use this to ensure the switchboard only runs with an authenticated identity.
18
+ */
19
+ requireExisting?: boolean; /** Base url of the Renown instance to use */
20
+ baseUrl?: string; /** If true, unsigned actions will be rejected */
21
+ requireSignatures?: boolean;
22
+ };
23
+ type StartServerOptions = {
24
+ configFile?: string;
25
+ port?: number;
26
+ dev?: boolean;
27
+ dbPath?: string;
28
+ drive?: DriveInput;
29
+ packages?: string[];
30
+ remoteDrives?: string[];
31
+ https?: {
32
+ keyPath: string;
33
+ certPath: string;
34
+ } | boolean | undefined;
35
+ auth?: {
36
+ enabled: boolean;
37
+ guests: string[];
38
+ users: string[];
39
+ admins: string[];
40
+ };
41
+ /**
42
+ * Identity options for Renown.
43
+ * When configured, the switchboard will load the keypair from `ph login`
44
+ * and can authenticate with remote services on behalf of the user.
45
+ */
46
+ identity?: IdentityOptions;
47
+ mcp?: boolean;
48
+ processorConfig?: Map<string, unknown>;
49
+ disableLocalPackages?: boolean;
50
+ enableDocumentModelSubgraphs?: boolean;
51
+ /**
52
+ * When true, enables dynamic loading of document models from the registry
53
+ * when an unknown document type is encountered during sync.
54
+ * Disabled by default — enable with DYNAMIC_MODEL_LOADING=true env var.
55
+ */
56
+ dynamicModelLoading?: boolean;
57
+ logger?: ILogger;
58
+ /**
59
+ * OpenTelemetry MeterProvider to register as the global provider before
60
+ * ReactorInstrumentation starts. Must be provided here rather than set
61
+ * externally to guarantee the registration happens before
62
+ * instrumentation.start() reads the global provider via metrics.getMeter().
63
+ */
64
+ meterProvider?: MeterProvider;
65
+ };
66
+ type SwitchboardReactor = {
67
+ defaultDriveUrl: string | undefined;
68
+ reactor: IReactorClient; /** The Renown instance if identity was initialized */
69
+ renown: IRenown | null;
70
+ };
71
+ //#endregion
72
+ //#region src/server.d.mts
73
+ declare const startSwitchboard: (options?: StartServerOptions) => Promise<SwitchboardReactor>;
74
+ //#endregion
75
+ export { IdentityOptions, StartServerOptions, StorageOptions, SwitchboardReactor, startSwitchboard };
76
+ //# sourceMappingURL=server.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.mts","names":[],"sources":["../src/types.ts","../src/server.mts"],"mappings":";;;;;;;KAMY,cAAA;EACV,IAAA;EACA,cAAA;EACA,WAAA;AAAA;AAAA,KAGU,eAAA;EALV,+DAOA,WAAA;EALA;;;AAGF;EAOE,eAAA;EAGA,OAAA,WARA;EAWA,iBAAA;AAAA;AAAA,KAGU,kBAAA;EACV,UAAA;EACA,IAAA;EACA,GAAA;EACA,MAAA;EACA,KAAA,GAAQ,UAAA;EACR,QAAA;EACA,YAAA;EACA,KAAA;IAEM,OAAA;IACA,QAAA;EAAA;EAIN,IAAA;IACE,OAAA;IACA,MAAA;IACA,KAAA;IACA,MAAA;EAAA;EAdM;;;;;EAqBR,QAAA,GAAW,eAAA;EACX,GAAA;EACA,eAAA,GAAkB,GAAA;EAClB,oBAAA;EACA,4BAAA;EAXE;;;;;EAiBF,mBAAA;EACA,MAAA,GAAS,OAAA;EAPT;;;;;;EAcA,aAAA,GAAgB,aAAA;AAAA;AAAA,KAGN,kBAAA;EACV,eAAA;EACA,OAAA,EAAS,cAAA,EAEM;EAAf,MAAA,EAAQ,OAAA;AAAA;;;cC4QG,gBAAA,GACX,OAAA,GAAS,kBAAA,KACR,OAAA,CAAQ,kBAAA"}
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ import { t as startSwitchboard } from "./server-DaWxxH2k.mjs";
3
+ import "./utils-DFl0ezBT.mjs";
4
+ export { startSwitchboard };
@@ -0,0 +1,44 @@
1
+ import { driveCreateDocument, driveCreateState } from "@powerhousedao/shared/document-drive";
2
+ import "@powerhousedao/shared/document-model";
3
+ //#region src/utils.mts
4
+ async function addDefaultDrive(client, drive, serverPort) {
5
+ let driveId = drive.id;
6
+ if (!driveId || driveId.length === 0) driveId = drive.slug;
7
+ if (!driveId || driveId.length === 0) throw new Error("Invalid Drive Id");
8
+ let existingDrive;
9
+ try {
10
+ existingDrive = await client.get(driveId);
11
+ } catch {}
12
+ if (existingDrive) return `http://localhost:${serverPort}/d/${driveId}`;
13
+ const { global } = driveCreateState();
14
+ const document = driveCreateDocument({
15
+ global: {
16
+ ...global,
17
+ name: drive.global.name,
18
+ icon: drive.global.icon ?? global.icon
19
+ },
20
+ local: {
21
+ availableOffline: drive.local?.availableOffline ?? false,
22
+ sharingType: drive.local?.sharingType ?? "public",
23
+ listeners: drive.local?.listeners ?? [],
24
+ triggers: drive.local?.triggers ?? []
25
+ }
26
+ });
27
+ if (drive.id && drive.id.length > 0) document.header.id = drive.id;
28
+ if (drive.slug && drive.slug.length > 0) document.header.slug = drive.slug;
29
+ if (drive.global.name) document.header.name = drive.global.name;
30
+ if (drive.preferredEditor) document.header.meta = { preferredEditor: drive.preferredEditor };
31
+ try {
32
+ await client.create(document);
33
+ } catch (e) {
34
+ if (!(e instanceof Error ? e.message : String(e)).includes("already exists")) throw e;
35
+ }
36
+ return `http://localhost:${serverPort}/d/${driveId}`;
37
+ }
38
+ function isPostgresUrl(url) {
39
+ return url.startsWith("postgresql") || url.startsWith("postgres");
40
+ }
41
+ //#endregion
42
+ export { isPostgresUrl as n, addDefaultDrive as t };
43
+
44
+ //# sourceMappingURL=utils-DFl0ezBT.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-DFl0ezBT.mjs","names":[],"sources":["../src/utils.mts"],"sourcesContent":["import type { IReactorClient } from \"@powerhousedao/reactor\";\nimport type { DocumentDriveDocument } from \"@powerhousedao/shared/document-drive\";\nimport {\n driveCreateDocument,\n driveCreateState,\n} from \"@powerhousedao/shared/document-drive\";\nimport type { DriveInput } from \"@powerhousedao/shared/document-drive\";\nimport { generateId } from \"@powerhousedao/shared/document-model\";\n\nexport async function addDefaultDrive(\n client: IReactorClient,\n drive: DriveInput,\n serverPort: number,\n) {\n let driveId = drive.id;\n if (!driveId || driveId.length === 0) {\n driveId = drive.slug;\n }\n\n if (!driveId || driveId.length === 0) {\n throw new Error(\"Invalid Drive Id\");\n }\n\n // check if the drive already exists\n let existingDrive;\n try {\n existingDrive = await client.get(driveId);\n } catch {\n //\n }\n\n // already exists, return the existing drive url\n if (existingDrive) {\n return `http://localhost:${serverPort}/d/${driveId}`;\n }\n\n const { global } = driveCreateState();\n const document = driveCreateDocument({\n global: {\n ...global,\n name: drive.global.name,\n icon: drive.global.icon ?? global.icon,\n },\n local: {\n availableOffline: drive.local?.availableOffline ?? false,\n sharingType: drive.local?.sharingType ?? \"public\",\n listeners: drive.local?.listeners ?? [],\n triggers: drive.local?.triggers ?? [],\n },\n });\n\n if (drive.id && drive.id.length > 0) {\n document.header.id = drive.id;\n }\n if (drive.slug && drive.slug.length > 0) {\n document.header.slug = drive.slug;\n }\n if (drive.global.name) {\n document.header.name = drive.global.name;\n }\n if (drive.preferredEditor) {\n document.header.meta = { preferredEditor: drive.preferredEditor };\n }\n\n try {\n await client.create(document);\n } catch (e) {\n const errorMessage = e instanceof Error ? e.message : String(e);\n if (!errorMessage.includes(\"already exists\")) {\n throw e;\n }\n }\n\n return `http://localhost:${serverPort}/d/${driveId}`;\n}\n\nexport function isPostgresUrl(url: string) {\n return url.startsWith(\"postgresql\") || url.startsWith(\"postgres\");\n}\n"],"mappings":";;;AASA,eAAsB,gBACpB,QACA,OACA,YACA;CACA,IAAI,UAAU,MAAM;AACpB,KAAI,CAAC,WAAW,QAAQ,WAAW,EACjC,WAAU,MAAM;AAGlB,KAAI,CAAC,WAAW,QAAQ,WAAW,EACjC,OAAM,IAAI,MAAM,mBAAmB;CAIrC,IAAI;AACJ,KAAI;AACF,kBAAgB,MAAM,OAAO,IAAI,QAAQ;SACnC;AAKR,KAAI,cACF,QAAO,oBAAoB,WAAW,KAAK;CAG7C,MAAM,EAAE,WAAW,kBAAkB;CACrC,MAAM,WAAW,oBAAoB;EACnC,QAAQ;GACN,GAAG;GACH,MAAM,MAAM,OAAO;GACnB,MAAM,MAAM,OAAO,QAAQ,OAAO;GACnC;EACD,OAAO;GACL,kBAAkB,MAAM,OAAO,oBAAoB;GACnD,aAAa,MAAM,OAAO,eAAe;GACzC,WAAW,MAAM,OAAO,aAAa,EAAE;GACvC,UAAU,MAAM,OAAO,YAAY,EAAE;GACtC;EACF,CAAC;AAEF,KAAI,MAAM,MAAM,MAAM,GAAG,SAAS,EAChC,UAAS,OAAO,KAAK,MAAM;AAE7B,KAAI,MAAM,QAAQ,MAAM,KAAK,SAAS,EACpC,UAAS,OAAO,OAAO,MAAM;AAE/B,KAAI,MAAM,OAAO,KACf,UAAS,OAAO,OAAO,MAAM,OAAO;AAEtC,KAAI,MAAM,gBACR,UAAS,OAAO,OAAO,EAAE,iBAAiB,MAAM,iBAAiB;AAGnE,KAAI;AACF,QAAM,OAAO,OAAO,SAAS;UACtB,GAAG;AAEV,MAAI,EADiB,aAAa,QAAQ,EAAE,UAAU,OAAO,EAAE,EAC7C,SAAS,iBAAiB,CAC1C,OAAM;;AAIV,QAAO,oBAAoB,WAAW,KAAK;;AAG7C,SAAgB,cAAc,KAAa;AACzC,QAAO,IAAI,WAAW,aAAa,IAAI,IAAI,WAAW,WAAW"}
@@ -0,0 +1,9 @@
1
+ import { IReactorClient } from "@powerhousedao/reactor";
2
+ import { DriveInput } from "@powerhousedao/shared/document-drive";
3
+
4
+ //#region src/utils.d.mts
5
+ declare function addDefaultDrive(client: IReactorClient, drive: DriveInput, serverPort: number): Promise<string>;
6
+ declare function isPostgresUrl(url: string): boolean;
7
+ //#endregion
8
+ export { addDefaultDrive, isPostgresUrl };
9
+ //# sourceMappingURL=utils.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.mts","names":[],"sources":["../src/utils.mts"],"mappings":";;;;iBASsB,eAAA,CACpB,MAAA,EAAQ,cAAA,EACR,KAAA,EAAO,UAAA,EACP,UAAA,WAAkB,OAAA;AAAA,iBAgEJ,aAAA,CAAc,GAAA"}
package/dist/utils.mjs ADDED
@@ -0,0 +1,2 @@
1
+ import { n as isPostgresUrl, t as addDefaultDrive } from "./utils-DFl0ezBT.mjs";
2
+ export { addDefaultDrive, isPostgresUrl };
package/package.json CHANGED
@@ -1,27 +1,27 @@
1
1
  {
2
2
  "name": "@powerhousedao/switchboard",
3
3
  "type": "module",
4
- "version": "6.0.0-dev.153",
5
- "main": "dist/src/index.js",
4
+ "version": "6.0.0-dev.154",
5
+ "main": "dist/index.mjs",
6
6
  "exports": {
7
7
  ".": {
8
- "import": "./dist/src/index.js",
9
- "types": "./dist/src/index.d.ts"
8
+ "types": "./dist/index.d.mts",
9
+ "import": "./dist/index.mjs"
10
10
  },
11
11
  "./server": {
12
- "import": "./dist/src/server.js",
13
- "types": "./dist/src/server.d.ts"
12
+ "types": "./dist/server.d.mts",
13
+ "import": "./dist/server.mjs"
14
14
  },
15
15
  "./utils": {
16
- "import": "./dist/src/utils.js",
17
- "types": "./dist/src/utils.d.ts"
16
+ "types": "./dist/utils.d.mts",
17
+ "import": "./dist/utils.mjs"
18
18
  }
19
19
  },
20
20
  "engines": {
21
21
  "node": ">=24.0.0"
22
22
  },
23
23
  "bin": {
24
- "switchboard": "dist/src/index.js"
24
+ "switchboard": "dist/index.mjs"
25
25
  },
26
26
  "repository": {
27
27
  "type": "git",
@@ -47,19 +47,20 @@
47
47
  "kysely-pglite-dialect": "1.2.0",
48
48
  "pg": "8.18.0",
49
49
  "react": "19.2.4",
50
- "@powerhousedao/opentelemetry-instrumentation-reactor": "6.0.0-dev.153",
51
- "@powerhousedao/shared": "6.0.0-dev.153",
52
- "@powerhousedao/config": "6.0.0-dev.153",
53
- "@powerhousedao/vetra": "6.0.0-dev.153",
54
- "@powerhousedao/reactor": "6.0.0-dev.153",
55
- "@powerhousedao/reactor-api": "6.0.0-dev.153",
56
- "@renown/sdk": "6.0.0-dev.153",
57
- "document-model": "6.0.0-dev.153"
50
+ "@powerhousedao/config": "6.0.0-dev.154",
51
+ "@powerhousedao/opentelemetry-instrumentation-reactor": "6.0.0-dev.154",
52
+ "@powerhousedao/reactor": "6.0.0-dev.154",
53
+ "@powerhousedao/vetra": "6.0.0-dev.154",
54
+ "@powerhousedao/shared": "6.0.0-dev.154",
55
+ "@powerhousedao/reactor-api": "6.0.0-dev.154",
56
+ "@renown/sdk": "6.0.0-dev.154",
57
+ "document-model": "6.0.0-dev.154"
58
58
  },
59
59
  "devDependencies": {
60
60
  "@types/express": "^4.17.25",
61
61
  "@types/node": "25.2.3",
62
62
  "@types/pg": "8.16.0",
63
+ "tsdown": "0.21.0",
63
64
  "concurrently": "9.2.1",
64
65
  "nodemon": "3.1.11",
65
66
  "vitest": "4.1.1"
@@ -68,13 +69,13 @@
68
69
  "tsc": "tsc",
69
70
  "test": "vitest run",
70
71
  "lint": "eslint",
71
- "build:misc": "pnpm run install-packages",
72
- "start": "node dist/src/index.js",
73
- "start:profile": "mkdir -p .prof && node --cpu-prof --cpu-prof-dir=.prof dist/src/index.js",
74
- "start:profile:bun": "mkdir -p .prof && bun --cpu-prof --cpu-prof-dir=.prof dist/src/index.js",
75
- "dev": "concurrently -P 'pnpm -w run tsc --watch' 'nodemon --trace-warnings --watch \"../..\" -e ts,tsx,js,json dist/src/index.js -- {@}' --",
76
- "install-packages": "node dist/src/install-packages.js",
77
- "migrate": "node dist/src/migrate.js",
78
- "migrate:status": "node dist/src/migrate.js status"
72
+ "build": "tsdown && pnpm run install-packages",
73
+ "start": "node dist/index.mjs",
74
+ "start:profile": "mkdir -p .prof && node --cpu-prof --cpu-prof-dir=.prof dist/index.mjs",
75
+ "start:profile:bun": "mkdir -p .prof && bun --cpu-prof --cpu-prof-dir=.prof dist/index.mjs",
76
+ "dev": "concurrently -P 'pnpm -w run tsc --watch' 'nodemon --trace-warnings --watch \"../..\" -e ts,tsx,js,json dist/index.mjs -- {@}' --",
77
+ "install-packages": "node dist/install-packages.mjs",
78
+ "migrate": "node dist/migrate.mjs",
79
+ "migrate:status": "node dist/migrate.mjs status"
79
80
  }
80
81
  }
package/tsconfig.json CHANGED
@@ -2,13 +2,9 @@
2
2
  "extends": "../../tsconfig.options.json",
3
3
  "compilerOptions": {
4
4
  "outDir": "./dist",
5
- "lib": [
6
- "ESNext"
7
- ]
5
+ "lib": ["ESNext"]
8
6
  },
9
- "include": [
10
- "**/*"
11
- ],
7
+ "include": ["**/*"],
12
8
  "references": [
13
9
  {
14
10
  "path": "../../packages/config"
@@ -0,0 +1,16 @@
1
+ import { defineConfig } from "tsdown";
2
+
3
+ export default defineConfig({
4
+ entry: [
5
+ "src/index.mts",
6
+ "src/server.mts",
7
+ "src/utils.mts",
8
+ "src/install-packages.mts",
9
+ "src/migrate.mts",
10
+ ],
11
+ platform: "node",
12
+ outDir: "dist",
13
+ clean: true,
14
+ dts: true,
15
+ sourcemap: true,
16
+ });
@@ -1,12 +0,0 @@
1
- import type { DriveInput } from "@powerhousedao/shared/document-drive";
2
- interface Config {
3
- database: {
4
- url: string;
5
- };
6
- port: number;
7
- mcp: boolean;
8
- drive: DriveInput;
9
- }
10
- export declare const config: Config;
11
- export {};
12
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAGvE,UAAU,MAAM;IACd,QAAQ,EAAE;QACR,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,UAAU,CAAC;CACnB;AACD,eAAO,MAAM,MAAM,EAAE,MA4BpB,CAAC"}
@@ -1,33 +0,0 @@
1
- import dotenv from "dotenv";
2
- dotenv.config();
3
- import { getConfig } from "@powerhousedao/config/node";
4
- const phConfig = getConfig();
5
- const { switchboard } = phConfig;
6
- export const config = {
7
- database: {
8
- // url: process.env.PH_SWITCHBOARD_DATABASE_URL ?? switchboard?.database?.url ?? "dev.db",
9
- url: process.env.PH_SWITCHBOARD_DATABASE_URL ??
10
- switchboard?.database?.url ??
11
- "dev.db",
12
- },
13
- port: process.env.PH_SWITCHBOARD_PORT &&
14
- !isNaN(Number(process.env.PH_SWITCHBOARD_PORT))
15
- ? Number(process.env.PH_SWITCHBOARD_PORT)
16
- : (switchboard?.port ?? 4001),
17
- mcp: true,
18
- drive: {
19
- id: "powerhouse",
20
- slug: "powerhouse",
21
- global: {
22
- name: "Powerhouse",
23
- icon: "https://ipfs.io/ipfs/QmcaTDBYn8X2psGaXe7iQ6qd8q6oqHLgxvMX9yXf7f9uP7",
24
- },
25
- local: {
26
- availableOffline: true,
27
- listeners: [],
28
- sharingType: "public",
29
- triggers: [],
30
- },
31
- },
32
- };
33
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,MAAM,QAAQ,GAAG,SAAS,EAAE,CAAC;AAC7B,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC;AASjC,MAAM,CAAC,MAAM,MAAM,GAAW;IAC5B,QAAQ,EAAE;QACR,0FAA0F;QAC1F,GAAG,EACD,OAAO,CAAC,GAAG,CAAC,2BAA2B;YACvC,WAAW,EAAE,QAAQ,EAAE,GAAG;YAC1B,QAAQ;KACX;IACD,IAAI,EACF,OAAO,CAAC,GAAG,CAAC,mBAAmB;QAC/B,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAC7C,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QACzC,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,IAAI,IAAI,CAAC;IACjC,GAAG,EAAE,IAAI;IACT,KAAK,EAAE;QACL,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE;YACN,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,qEAAqE;SAC5E;QACD,KAAK,EAAE;YACL,gBAAgB,EAAE,IAAI;YACtB,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,QAAQ;YACrB,QAAQ,EAAE,EAAE;SACb;KACF;CACF,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function initFeatureFlags(): Promise<import("@openfeature/server-sdk").Client>;
2
- //# sourceMappingURL=feature-flags.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"feature-flags.d.ts","sourceRoot":"","sources":["../../src/feature-flags.ts"],"names":[],"mappings":"AAGA,wBAAsB,gBAAgB,sDAOrC"}
@@ -1,9 +0,0 @@
1
- import { EnvVarProvider } from "@openfeature/env-var-provider";
2
- import { OpenFeature } from "@openfeature/server-sdk";
3
- export async function initFeatureFlags() {
4
- // for now, we're only using env vars for feature flags
5
- const provider = new EnvVarProvider();
6
- await OpenFeature.setProviderAndWait(provider);
7
- return OpenFeature.getClient();
8
- }
9
- //# sourceMappingURL=feature-flags.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"feature-flags.js","sourceRoot":"","sources":["../../src/feature-flags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,uDAAuD;IACvD,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC;IAEtC,MAAM,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAE/C,OAAO,WAAW,CAAC,SAAS,EAAE,CAAC;AACjC,CAAC"}
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":""}
package/dist/src/index.js DELETED
@@ -1,49 +0,0 @@
1
- #!/usr/bin/env node
2
- import * as Sentry from "@sentry/node";
3
- import { childLogger } from "document-model";
4
- import { config } from "./config.js";
5
- import { createMeterProviderFromEnv } from "./metrics.js";
6
- import { initProfilerFromEnv } from "./profiler.js";
7
- import { startSwitchboard } from "./server.js";
8
- const logger = childLogger(["switchboard"]);
9
- function ensureNodeVersion(minVersion = "24") {
10
- const version = process.versions.node;
11
- if (!version) {
12
- return;
13
- }
14
- if (version < minVersion) {
15
- console.error(`Node version ${minVersion} or higher is required. Current version: ${version}`);
16
- process.exit(1);
17
- }
18
- }
19
- // Ensure minimum Node.js version
20
- ensureNodeVersion("24");
21
- const meterProvider = createMeterProviderFromEnv({
22
- OTEL_EXPORTER_OTLP_ENDPOINT: process.env.OTEL_EXPORTER_OTLP_ENDPOINT,
23
- OTEL_METRIC_EXPORT_INTERVAL: process.env.OTEL_METRIC_EXPORT_INTERVAL,
24
- OTEL_SERVICE_NAME: process.env.OTEL_SERVICE_NAME,
25
- });
26
- async function shutdown() {
27
- console.log("\nShutting down...");
28
- // Flush final metrics before exit. Races against a 5s deadline so an
29
- // unresponsive OTLP endpoint cannot exhaust terminationGracePeriodSeconds.
30
- await Promise.race([
31
- meterProvider?.shutdown().catch(() => undefined),
32
- new Promise((resolve) => setTimeout(resolve, 5_000)),
33
- ]);
34
- process.exit(0);
35
- }
36
- // SIGINT: Ctrl-C in development; SIGTERM: graceful shutdown in Docker/Kubernetes
37
- process.on("SIGINT", shutdown);
38
- process.on("SIGTERM", shutdown);
39
- if (process.env.PYROSCOPE_SERVER_ADDRESS) {
40
- try {
41
- await initProfilerFromEnv(process.env);
42
- }
43
- catch (e) {
44
- Sentry.captureException(e);
45
- logger.error("Error starting profiler: @error", e);
46
- }
47
- }
48
- startSwitchboard({ ...config, meterProvider }).catch(console.error);
49
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AAE5C,SAAS,iBAAiB,CAAC,UAAU,GAAG,IAAI;IAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IACtC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,CACX,gBAAgB,UAAU,4CAA4C,OAAO,EAAE,CAChF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AACD,iCAAiC;AACjC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAExB,MAAM,aAAa,GAAG,0BAA0B,CAAC;IAC/C,2BAA2B,EAAE,OAAO,CAAC,GAAG,CAAC,2BAA2B;IACpE,2BAA2B,EAAE,OAAO,CAAC,GAAG,CAAC,2BAA2B;IACpE,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;CACjD,CAAC,CAAC;AAEH,KAAK,UAAU,QAAQ;IACrB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,qEAAqE;IACrE,2EAA2E;IAC3E,MAAM,OAAO,CAAC,IAAI,CAAC;QACjB,aAAa,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;QAChD,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KAC3D,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,iFAAiF;AACjF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAEhC,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,gBAAgB,CAAC,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=install-packages.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install-packages.d.ts","sourceRoot":"","sources":["../../src/install-packages.ts"],"names":[],"mappings":""}
@@ -1,36 +0,0 @@
1
- import { execSync } from "child_process";
2
- import fs from "fs";
3
- import path from "path";
4
- // Get the list of packages to install from the environment variable
5
- const pkgs = process.env.PH_PACKAGES?.split(",") || [];
6
- // Skip if no packages to install
7
- if (pkgs.length === 0 || (pkgs.length === 1 && pkgs[0] === "")) {
8
- process.exit(0);
9
- }
10
- try {
11
- // Read the package.json file to check existing dependencies
12
- const packageJsonPath = path.join(process.cwd(), "package.json");
13
- const packageJsonContent = fs.readFileSync(packageJsonPath, "utf-8");
14
- const packageJson = JSON.parse(packageJsonContent);
15
- // Get all installed dependencies
16
- const installedDependencies = {
17
- ...(packageJson.dependencies || {}),
18
- ...(packageJson.devDependencies || {}),
19
- };
20
- for (const pkg of pkgs) {
21
- if (pkg === "")
22
- continue;
23
- // Check if the package is already installed
24
- if (installedDependencies[pkg]) {
25
- console.log(`> Package ${pkg} is already installed, skipping`);
26
- continue;
27
- }
28
- console.log(`> Installing ${pkg}`);
29
- execSync(`pnpm add ${pkg}@latest`, { stdio: "inherit" });
30
- }
31
- }
32
- catch (error) {
33
- console.error("Error in package installation:", error);
34
- process.exit(1);
35
- }
36
- //# sourceMappingURL=install-packages.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install-packages.js","sourceRoot":"","sources":["../../src/install-packages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAQxB,oEAAoE;AACpE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AAEvD,iCAAiC;AACjC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;IAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,CAAC;IACH,4DAA4D;IAC5D,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;IACjE,MAAM,kBAAkB,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAgB,CAAC;IAElE,iCAAiC;IACjC,MAAM,qBAAqB,GAA2B;QACpD,GAAG,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,CAAC;QACnC,GAAG,CAAC,WAAW,CAAC,eAAe,IAAI,EAAE,CAAC;KACvC,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,EAAE;YAAE,SAAS;QAEzB,4CAA4C;QAC5C,IAAI,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,iCAAiC,CAAC,CAAC;YAC/D,SAAS;QACX,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC;QACnC,QAAQ,CAAC,YAAY,GAAG,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;IACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
@@ -1,7 +0,0 @@
1
- import { MeterProvider } from "@opentelemetry/sdk-metrics";
2
- export declare function createMeterProviderFromEnv(env: {
3
- OTEL_EXPORTER_OTLP_ENDPOINT?: string;
4
- OTEL_METRIC_EXPORT_INTERVAL?: string;
5
- OTEL_SERVICE_NAME?: string;
6
- }): MeterProvider | undefined;
7
- //# sourceMappingURL=metrics.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/metrics.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,aAAa,EAEd,MAAM,4BAA4B,CAAC;AAKpC,wBAAgB,0BAA0B,CAAC,GAAG,EAAE;IAC9C,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,GAAG,aAAa,GAAG,SAAS,CA8B5B"}
@@ -1,34 +0,0 @@
1
- import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http";
2
- import { Resource } from "@opentelemetry/resources";
3
- import { MeterProvider, PeriodicExportingMetricReader, } from "@opentelemetry/sdk-metrics";
4
- import { childLogger } from "document-model";
5
- const logger = childLogger(["switchboard", "metrics"]);
6
- export function createMeterProviderFromEnv(env) {
7
- const endpoint = env.OTEL_EXPORTER_OTLP_ENDPOINT;
8
- if (!endpoint)
9
- return undefined;
10
- const parsed = parseInt(env.OTEL_METRIC_EXPORT_INTERVAL ?? "", 10);
11
- const exportIntervalMillis = Number.isFinite(parsed) && parsed > 0 ? parsed : 5_000;
12
- const base = endpoint.replace(/\/$/, "");
13
- const exporterUrl = base.endsWith("/v1/metrics")
14
- ? base
15
- : `${base}/v1/metrics`;
16
- logger.info(`Initializing OpenTelemetry metrics exporter at: ${endpoint}`);
17
- const meterProvider = new MeterProvider({
18
- resource: new Resource({
19
- "service.name": env.OTEL_SERVICE_NAME ?? "switchboard",
20
- }),
21
- readers: [
22
- new PeriodicExportingMetricReader({
23
- exporter: new OTLPMetricExporter({
24
- url: exporterUrl,
25
- }),
26
- exportIntervalMillis,
27
- exportTimeoutMillis: Math.max(exportIntervalMillis - 250, 1),
28
- }),
29
- ],
30
- });
31
- logger.info(`Metrics export enabled (interval: ${exportIntervalMillis}ms)`);
32
- return meterProvider;
33
- }
34
- //# sourceMappingURL=metrics.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EACL,aAAa,EACb,6BAA6B,GAC9B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;AAEvD,MAAM,UAAU,0BAA0B,CAAC,GAI1C;IACC,MAAM,QAAQ,GAAG,GAAG,CAAC,2BAA2B,CAAC;IACjD,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEhC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,2BAA2B,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACnE,MAAM,oBAAoB,GACxB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAEzD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC9C,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,GAAG,IAAI,aAAa,CAAC;IAEzB,MAAM,CAAC,IAAI,CAAC,mDAAmD,QAAQ,EAAE,CAAC,CAAC;IAC3E,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC;QACtC,QAAQ,EAAE,IAAI,QAAQ,CAAC;YACrB,cAAc,EAAE,GAAG,CAAC,iBAAiB,IAAI,aAAa;SACvD,CAAC;QACF,OAAO,EAAE;YACP,IAAI,6BAA6B,CAAC;gBAChC,QAAQ,EAAE,IAAI,kBAAkB,CAAC;oBAC/B,GAAG,EAAE,WAAW;iBACjB,CAAC;gBACF,oBAAoB;gBACpB,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB,GAAG,GAAG,EAAE,CAAC,CAAC;aAC7D,CAAC;SACH;KACF,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,qCAAqC,oBAAoB,KAAK,CAAC,CAAC;IAC5E,OAAO,aAAa,CAAC;AACvB,CAAC"}
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=migrate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/migrate.ts"],"names":[],"mappings":""}
@@ -1,65 +0,0 @@
1
- #!/usr/bin/env node
2
- import { Kysely, PostgresDialect } from "kysely";
3
- import { Pool } from "pg";
4
- import { runMigrations, getMigrationStatus, REACTOR_SCHEMA, } from "@powerhousedao/reactor";
5
- import { getConfig } from "@powerhousedao/config/node";
6
- function isPostgresUrl(url) {
7
- return url.startsWith("postgresql://") || url.startsWith("postgres://");
8
- }
9
- async function main() {
10
- const command = process.argv[2];
11
- const config = getConfig();
12
- const dbPath = process.env.PH_REACTOR_DATABASE_URL ??
13
- process.env.DATABASE_URL ??
14
- config.switchboard?.database?.url;
15
- if (!dbPath || !isPostgresUrl(dbPath)) {
16
- console.log("No PostgreSQL URL configured. Skipping migrations.");
17
- console.log("(PGlite migrations are handled automatically on startup)");
18
- return;
19
- }
20
- console.log(`Database: ${dbPath}`);
21
- const pool = new Pool({ connectionString: dbPath });
22
- const db = new Kysely({
23
- dialect: new PostgresDialect({ pool }),
24
- });
25
- try {
26
- if (command === "status") {
27
- console.log("\nChecking migration status...");
28
- const migrations = await getMigrationStatus(db, REACTOR_SCHEMA);
29
- console.log("\nMigration Status:");
30
- console.log("=================");
31
- for (const migration of migrations) {
32
- const status = migration.executedAt
33
- ? `[OK] Executed at ${migration.executedAt.toISOString()}`
34
- : "[--] Pending";
35
- console.log(`${status} - ${migration.name}`);
36
- }
37
- }
38
- else {
39
- console.log("\nRunning migrations...");
40
- const result = await runMigrations(db, REACTOR_SCHEMA);
41
- if (!result.success) {
42
- console.error("Migration failed:", result.error?.message);
43
- process.exit(1);
44
- }
45
- if (result.migrationsExecuted.length === 0) {
46
- console.log("No migrations to run - database is up to date");
47
- }
48
- else {
49
- console.log(`Successfully executed ${result.migrationsExecuted.length} migration(s):`);
50
- for (const name of result.migrationsExecuted) {
51
- console.log(` - ${name}`);
52
- }
53
- }
54
- }
55
- }
56
- catch (error) {
57
- console.error("Error:", error instanceof Error ? error.message : String(error));
58
- process.exit(1);
59
- }
60
- finally {
61
- await db.destroy();
62
- }
63
- }
64
- void main();
65
- //# sourceMappingURL=migrate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/migrate.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import type { PyroscopeConfig } from "@pyroscope/nodejs";
2
- export declare function initProfilerFromEnv(env: typeof process.env): Promise<void>;
3
- interface ProfilerFlags {
4
- wallEnabled?: boolean;
5
- heapEnabled?: boolean;
6
- }
7
- export declare function initProfiler(options?: PyroscopeConfig, flags?: ProfilerFlags): Promise<void>;
8
- export {};
9
- //# sourceMappingURL=profiler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profiler.d.ts","sourceRoot":"","sources":["../../src/profiler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,OAAO,OAAO,CAAC,GAAG,iBAgChE;AAED,UAAU,aAAa;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAsB,YAAY,CAChC,OAAO,CAAC,EAAE,eAAe,EACzB,KAAK,GAAE,aAAyD,iBAqBjE"}