@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.
- package/CHANGELOG.md +18 -0
- package/dist/index.d.mts +1 -0
- package/dist/index.mjs +128 -0
- package/dist/index.mjs.map +1 -0
- package/dist/install-packages.d.mts +1 -0
- package/dist/install-packages.mjs +31 -0
- package/dist/install-packages.mjs.map +1 -0
- package/dist/migrate.d.mts +1 -0
- package/dist/migrate.mjs +55 -0
- package/dist/migrate.mjs.map +1 -0
- package/dist/server-DaWxxH2k.mjs +249 -0
- package/dist/server-DaWxxH2k.mjs.map +1 -0
- package/dist/server.d.mts +76 -0
- package/dist/server.d.mts.map +1 -0
- package/dist/server.mjs +4 -0
- package/dist/utils-DFl0ezBT.mjs +44 -0
- package/dist/utils-DFl0ezBT.mjs.map +1 -0
- package/dist/utils.d.mts +9 -0
- package/dist/utils.d.mts.map +1 -0
- package/dist/utils.mjs +2 -0
- package/package.json +26 -25
- package/tsconfig.json +2 -6
- package/tsdown.config.ts +16 -0
- package/dist/src/config.d.ts +0 -12
- package/dist/src/config.d.ts.map +0 -1
- package/dist/src/config.js +0 -33
- package/dist/src/config.js.map +0 -1
- package/dist/src/feature-flags.d.ts +0 -2
- package/dist/src/feature-flags.d.ts.map +0 -1
- package/dist/src/feature-flags.js +0 -9
- package/dist/src/feature-flags.js.map +0 -1
- package/dist/src/index.d.ts +0 -3
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -49
- package/dist/src/index.js.map +0 -1
- package/dist/src/install-packages.d.ts +0 -2
- package/dist/src/install-packages.d.ts.map +0 -1
- package/dist/src/install-packages.js +0 -36
- package/dist/src/install-packages.js.map +0 -1
- package/dist/src/metrics.d.ts +0 -7
- package/dist/src/metrics.d.ts.map +0 -1
- package/dist/src/metrics.js +0 -34
- package/dist/src/metrics.js.map +0 -1
- package/dist/src/migrate.d.ts +0 -3
- package/dist/src/migrate.d.ts.map +0 -1
- package/dist/src/migrate.js +0 -65
- package/dist/src/migrate.js.map +0 -1
- package/dist/src/profiler.d.ts +0 -9
- package/dist/src/profiler.d.ts.map +0 -1
- package/dist/src/profiler.js +0 -43
- package/dist/src/profiler.js.map +0 -1
- package/dist/src/renown.d.ts +0 -24
- package/dist/src/renown.d.ts.map +0 -1
- package/dist/src/renown.js +0 -45
- package/dist/src/renown.js.map +0 -1
- package/dist/src/server.d.ts +0 -5
- package/dist/src/server.d.ts.map +0 -1
- package/dist/src/server.js +0 -293
- package/dist/src/server.js.map +0 -1
- package/dist/src/types.d.ts +0 -73
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js +0 -2
- package/dist/src/types.js.map +0 -1
- package/dist/src/utils.d.ts +0 -5
- package/dist/src/utils.d.ts.map +0 -1
- package/dist/src/utils.js +0 -63
- package/dist/src/utils.js.map +0 -1
- package/dist/test/metrics.test.d.ts +0 -2
- package/dist/test/metrics.test.d.ts.map +0 -1
- package/dist/test/metrics.test.js +0 -121
- package/dist/test/metrics.test.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/vitest.config.d.ts +0 -3
- package/dist/vitest.config.d.ts.map +0 -1
- package/dist/vitest.config.js +0 -11
- 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"}
|
package/dist/server.mjs
ADDED
|
@@ -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"}
|
package/dist/utils.d.mts
ADDED
|
@@ -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
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.
|
|
5
|
-
"main": "dist/
|
|
4
|
+
"version": "6.0.0-dev.154",
|
|
5
|
+
"main": "dist/index.mjs",
|
|
6
6
|
"exports": {
|
|
7
7
|
".": {
|
|
8
|
-
"
|
|
9
|
-
"
|
|
8
|
+
"types": "./dist/index.d.mts",
|
|
9
|
+
"import": "./dist/index.mjs"
|
|
10
10
|
},
|
|
11
11
|
"./server": {
|
|
12
|
-
"
|
|
13
|
-
"
|
|
12
|
+
"types": "./dist/server.d.mts",
|
|
13
|
+
"import": "./dist/server.mjs"
|
|
14
14
|
},
|
|
15
15
|
"./utils": {
|
|
16
|
-
"
|
|
17
|
-
"
|
|
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/
|
|
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/
|
|
51
|
-
"@powerhousedao/
|
|
52
|
-
"@powerhousedao/
|
|
53
|
-
"@powerhousedao/vetra": "6.0.0-dev.
|
|
54
|
-
"@powerhousedao/
|
|
55
|
-
"@powerhousedao/reactor-api": "6.0.0-dev.
|
|
56
|
-
"@renown/sdk": "6.0.0-dev.
|
|
57
|
-
"document-model": "6.0.0-dev.
|
|
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
|
|
72
|
-
"start": "node dist/
|
|
73
|
-
"start:profile": "mkdir -p .prof && node --cpu-prof --cpu-prof-dir=.prof dist/
|
|
74
|
-
"start:profile:bun": "mkdir -p .prof && bun --cpu-prof --cpu-prof-dir=.prof dist/
|
|
75
|
-
"dev": "concurrently -P 'pnpm -w run tsc --watch' 'nodemon --trace-warnings --watch \"../..\" -e ts,tsx,js,json dist/
|
|
76
|
-
"install-packages": "node dist/
|
|
77
|
-
"migrate": "node dist/
|
|
78
|
-
"migrate:status": "node dist/
|
|
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"
|
package/tsdown.config.ts
ADDED
|
@@ -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
|
+
});
|
package/dist/src/config.d.ts
DELETED
|
@@ -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
|
package/dist/src/config.d.ts.map
DELETED
|
@@ -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"}
|
package/dist/src/config.js
DELETED
|
@@ -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
|
package/dist/src/config.js.map
DELETED
|
@@ -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 +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"}
|
package/dist/src/index.d.ts
DELETED
package/dist/src/index.d.ts.map
DELETED
|
@@ -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
|
package/dist/src/index.js.map
DELETED
|
@@ -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 +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"}
|
package/dist/src/metrics.d.ts
DELETED
|
@@ -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"}
|
package/dist/src/metrics.js
DELETED
|
@@ -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
|
package/dist/src/metrics.js.map
DELETED
|
@@ -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"}
|
package/dist/src/migrate.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/migrate.ts"],"names":[],"mappings":""}
|
package/dist/src/migrate.js
DELETED
|
@@ -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
|
package/dist/src/migrate.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/migrate.ts"],"names":[],"mappings":"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"}
|
package/dist/src/profiler.d.ts
DELETED
|
@@ -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"}
|