@powerhousedao/reactor-api 4.1.0-dev.10 → 4.1.0-dev.100
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/README.md +16 -10
- package/dist/codegen.d.ts +4 -0
- package/dist/codegen.d.ts.map +1 -0
- package/dist/codegen.js +38 -0
- package/dist/codegen.js.map +1 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/src/config.d.ts +3 -0
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +6 -0
- package/dist/src/config.js.map +1 -1
- package/dist/src/graphql/analytics-subgraph.d.ts +14 -0
- package/dist/src/graphql/analytics-subgraph.d.ts.map +1 -0
- package/dist/src/graphql/{analytics/index.js → analytics-subgraph.js} +4 -4
- package/dist/src/graphql/analytics-subgraph.js.map +1 -0
- package/dist/src/graphql/base-subgraph.d.ts +17 -0
- package/dist/src/graphql/base-subgraph.d.ts.map +1 -0
- package/dist/src/graphql/{base/index.js → base-subgraph.js} +4 -2
- package/dist/src/graphql/base-subgraph.js.map +1 -0
- package/dist/src/graphql/drive-subgraph.d.ts +13 -0
- package/dist/src/graphql/drive-subgraph.d.ts.map +1 -0
- package/dist/src/graphql/{drive/index.js → drive-subgraph.js} +41 -20
- package/dist/src/graphql/drive-subgraph.js.map +1 -0
- package/dist/src/graphql/graphql-manager.d.ts +14 -13
- package/dist/src/graphql/graphql-manager.d.ts.map +1 -1
- package/dist/src/graphql/graphql-manager.js +130 -64
- package/dist/src/graphql/graphql-manager.js.map +1 -1
- package/dist/src/graphql/index.d.ts +7 -8
- package/dist/src/graphql/index.d.ts.map +1 -1
- package/dist/src/graphql/index.js +7 -19
- package/dist/src/graphql/index.js.map +1 -1
- package/dist/src/graphql/reactor/adapters.d.ts +28 -0
- package/dist/src/graphql/reactor/adapters.d.ts.map +1 -0
- package/dist/src/graphql/reactor/adapters.js +92 -0
- package/dist/src/graphql/reactor/adapters.js.map +1 -0
- package/dist/src/graphql/reactor/factory.d.ts +84 -0
- package/dist/src/graphql/reactor/factory.d.ts.map +1 -0
- package/dist/src/graphql/reactor/factory.js +7 -0
- package/dist/src/graphql/reactor/factory.js.map +1 -0
- package/dist/src/graphql/reactor/gen/graphql.d.ts +979 -0
- package/dist/src/graphql/reactor/gen/graphql.d.ts.map +1 -0
- package/dist/src/graphql/reactor/gen/graphql.js +383 -0
- package/dist/src/graphql/reactor/gen/graphql.js.map +1 -0
- package/dist/src/graphql/reactor/index.d.ts +4 -0
- package/dist/src/graphql/reactor/index.d.ts.map +1 -0
- package/dist/src/graphql/reactor/index.js +4 -0
- package/dist/src/graphql/reactor/index.js.map +1 -0
- package/dist/src/graphql/reactor/requester.d.ts +4 -0
- package/dist/src/graphql/reactor/requester.d.ts.map +1 -0
- package/dist/src/graphql/reactor/requester.js +22 -0
- package/dist/src/graphql/reactor/requester.js.map +1 -0
- package/dist/src/graphql/reactor/requester.with-zod.d.ts +4 -0
- package/dist/src/graphql/reactor/requester.with-zod.d.ts.map +1 -0
- package/dist/src/graphql/reactor/requester.with-zod.js +53 -0
- package/dist/src/graphql/reactor/requester.with-zod.js.map +1 -0
- package/dist/src/graphql/reactor/resolvers.d.ts +60 -0
- package/dist/src/graphql/reactor/resolvers.d.ts.map +1 -0
- package/dist/src/graphql/reactor/resolvers.js +173 -0
- package/dist/src/graphql/reactor/resolvers.js.map +1 -0
- package/dist/src/graphql/reactor/subgraph.d.ts +12 -0
- package/dist/src/graphql/reactor/subgraph.d.ts.map +1 -0
- package/dist/src/graphql/reactor/subgraph.js +159 -0
- package/dist/src/graphql/reactor/subgraph.js.map +1 -0
- package/dist/src/graphql/reactor/validation.d.ts +374 -0
- package/dist/src/graphql/reactor/validation.d.ts.map +1 -0
- package/dist/src/graphql/reactor/validation.js +73 -0
- package/dist/src/graphql/reactor/validation.js.map +1 -0
- package/dist/src/graphql/system/index.d.ts +2 -30
- package/dist/src/graphql/system/index.d.ts.map +1 -1
- package/dist/src/graphql/system/index.js +2 -95
- package/dist/src/graphql/system/index.js.map +1 -1
- package/dist/src/graphql/system/system-subgraph.d.ts +33 -0
- package/dist/src/graphql/system/system-subgraph.d.ts.map +1 -0
- package/dist/src/graphql/system/system-subgraph.js +96 -0
- package/dist/src/graphql/system/system-subgraph.js.map +1 -0
- package/dist/src/graphql/system/types.d.ts +1 -2
- package/dist/src/graphql/system/types.d.ts.map +1 -1
- package/dist/src/graphql/{drive/temp-hack-rwa-type-defs.d.ts → temp-hack-rwa-type-defs.d.ts} +2 -2
- package/dist/src/graphql/temp-hack-rwa-type-defs.d.ts.map +1 -0
- package/dist/src/graphql/temp-hack-rwa-type-defs.js.map +1 -0
- package/dist/src/graphql/types.d.ts +8 -5
- package/dist/src/graphql/types.d.ts.map +1 -1
- package/dist/src/graphql/utils.d.ts +3 -0
- package/dist/src/graphql/utils.d.ts.map +1 -0
- package/dist/src/graphql/utils.js +13 -0
- package/dist/src/graphql/utils.js.map +1 -0
- package/dist/src/packages/import-loader.d.ts +4 -4
- package/dist/src/packages/import-loader.d.ts.map +1 -1
- package/dist/src/packages/import-loader.js +7 -6
- package/dist/src/packages/import-loader.js.map +1 -1
- package/dist/src/packages/import-resolver.d.ts +5 -0
- package/dist/src/packages/import-resolver.d.ts.map +1 -0
- package/dist/src/packages/import-resolver.js +127 -0
- package/dist/src/packages/import-resolver.js.map +1 -0
- package/dist/src/packages/package-manager.d.ts +5 -3
- package/dist/src/packages/package-manager.d.ts.map +1 -1
- package/dist/src/packages/package-manager.js +40 -17
- package/dist/src/packages/package-manager.js.map +1 -1
- package/dist/src/packages/types.d.ts +3 -3
- package/dist/src/packages/types.d.ts.map +1 -1
- package/dist/src/packages/util.d.ts +21 -2
- package/dist/src/packages/util.d.ts.map +1 -1
- package/dist/src/packages/util.js +54 -5
- package/dist/src/packages/util.js.map +1 -1
- package/dist/src/packages/vite-loader.d.ts +22 -0
- package/dist/src/packages/vite-loader.d.ts.map +1 -0
- package/dist/src/packages/vite-loader.js +147 -0
- package/dist/src/packages/vite-loader.js.map +1 -0
- package/dist/src/server.d.ts +13 -7
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/server.js +59 -91
- package/dist/src/server.js.map +1 -1
- package/dist/src/services/auth.service.d.ts +64 -0
- package/dist/src/services/auth.service.d.ts.map +1 -0
- package/dist/src/services/auth.service.js +154 -0
- package/dist/src/services/auth.service.js.map +1 -0
- package/dist/src/sync/types.d.ts +10 -0
- package/dist/src/sync/types.d.ts.map +1 -0
- package/dist/src/sync/types.js +2 -0
- package/dist/src/sync/types.js.map +1 -0
- package/dist/src/sync/utils.d.ts +2 -10
- package/dist/src/sync/utils.d.ts.map +1 -1
- package/dist/src/sync/utils.js +1 -1
- package/dist/src/sync/utils.js.map +1 -1
- package/dist/src/types.d.ts +5 -6
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/create-schema.d.ts +3 -3
- package/dist/src/utils/create-schema.d.ts.map +1 -1
- package/dist/src/utils/create-schema.js +29 -9
- package/dist/src/utils/create-schema.js.map +1 -1
- package/dist/src/utils/db.d.ts +1 -1
- package/dist/src/utils/db.d.ts.map +1 -1
- package/dist/src/utils/db.js +2 -1
- package/dist/src/utils/db.js.map +1 -1
- package/dist/test/benchmarks/load.bench.d.ts +2 -0
- package/dist/test/benchmarks/load.bench.d.ts.map +1 -0
- package/dist/test/benchmarks/load.bench.js +73 -0
- package/dist/test/benchmarks/load.bench.js.map +1 -0
- package/dist/test/benchmarks/sync.bench.d.ts +2 -0
- package/dist/test/benchmarks/sync.bench.d.ts.map +1 -0
- package/dist/test/benchmarks/sync.bench.js +119 -0
- package/dist/test/benchmarks/sync.bench.js.map +1 -0
- package/dist/test/drive-handlers.d.ts +4 -0
- package/dist/test/drive-handlers.d.ts.map +1 -0
- package/dist/test/drive-handlers.js +39 -0
- package/dist/test/drive-handlers.js.map +1 -0
- package/dist/test/drive.test.d.ts +2 -0
- package/dist/test/drive.test.d.ts.map +1 -0
- package/dist/test/drive.test.js +142 -0
- package/dist/test/drive.test.js.map +1 -0
- package/dist/test/index.d.ts +3 -0
- package/dist/test/index.d.ts.map +1 -0
- package/dist/test/index.js +3 -0
- package/dist/test/index.js.map +1 -0
- package/dist/test/pull-responder-transmitter.test.d.ts +2 -0
- package/dist/test/pull-responder-transmitter.test.d.ts.map +1 -0
- package/dist/test/pull-responder-transmitter.test.js +220 -0
- package/dist/test/pull-responder-transmitter.test.js.map +1 -0
- package/dist/test/push-transmitter.test.d.ts +2 -0
- package/dist/test/push-transmitter.test.d.ts.map +1 -0
- package/dist/test/push-transmitter.test.js +179 -0
- package/dist/test/push-transmitter.test.js.map +1 -0
- package/dist/test/reactor-client.test.d.ts +2 -0
- package/dist/test/reactor-client.test.d.ts.map +1 -0
- package/dist/test/reactor-client.test.js +212 -0
- package/dist/test/reactor-client.test.js.map +1 -0
- package/dist/test/reactor-resolvers.test.d.ts +2 -0
- package/dist/test/reactor-resolvers.test.d.ts.map +1 -0
- package/dist/test/reactor-resolvers.test.js +523 -0
- package/dist/test/reactor-resolvers.test.js.map +1 -0
- package/dist/test/router.test.d.ts +2 -0
- package/dist/test/router.test.d.ts.map +1 -0
- package/dist/test/router.test.js +38 -0
- package/dist/test/router.test.js.map +1 -0
- package/dist/test/system.test.d.ts +2 -0
- package/dist/test/system.test.d.ts.map +1 -0
- package/dist/test/system.test.js +211 -0
- package/dist/test/system.test.js.map +1 -0
- package/dist/test/utils.d.ts +10 -0
- package/dist/test/utils.d.ts.map +1 -0
- package/dist/test/utils.js +23 -0
- package/dist/test/utils.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/vitest.config.d.ts +3 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/dist/vitest.config.js +24 -0
- package/dist/vitest.config.js.map +1 -0
- package/package.json +42 -25
- package/dist/src/graphql/analytics/index.d.ts +0 -14
- package/dist/src/graphql/analytics/index.d.ts.map +0 -1
- package/dist/src/graphql/analytics/index.js.map +0 -1
- package/dist/src/graphql/base/index.d.ts +0 -17
- package/dist/src/graphql/base/index.d.ts.map +0 -1
- package/dist/src/graphql/base/index.js.map +0 -1
- package/dist/src/graphql/drive/index.d.ts +0 -13
- package/dist/src/graphql/drive/index.d.ts.map +0 -1
- package/dist/src/graphql/drive/index.js.map +0 -1
- package/dist/src/graphql/drive/temp-hack-rwa-type-defs.d.ts.map +0 -1
- package/dist/src/graphql/drive/temp-hack-rwa-type-defs.js.map +0 -1
- package/dist/tsconfig.lib.tsbuildinfo +0 -1
- /package/dist/src/graphql/{drive/temp-hack-rwa-type-defs.js → temp-hack-rwa-type-defs.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/packages/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/packages/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE,MAAM,WAAW,cAAc;IAC7B,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACvE,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAC5D,cAAc,CACZ,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,oBAAoB,KAAK,gBAAgB,CAAC,GAAG,IAAI,CAAC,CAAC;CACzE;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA2B,SAAQ,cAAc;IAChE,sBAAsB,CAAC,CACrB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,CAAC,cAAc,EAAE,mBAAmB,EAAE,KAAK,IAAI,EACxD,OAAO,CAAC,EAAE,oBAAoB,GAC7B,MAAM,IAAI,CAAC;IACd,iBAAiB,CAAC,CAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,IAAI,EAC7C,OAAO,CAAC,EAAE,oBAAoB,GAC7B,MAAM,IAAI,CAAC;IACd,kBAAkB,CAAC,CACjB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,CACP,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,oBAAoB,KAAK,gBAAgB,CAAC,GAAG,IAAI,KACpE,IAAI,EACT,OAAO,CAAC,EAAE,oBAAoB,GAC7B,MAAM,IAAI,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,sBAAsB,CACpB,OAAO,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,KAAK,IAAI,GACvE,IAAI,CAAC;CACT;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,cAAc,EAAE,mBAAmB,EAAE,CAAC;IACtC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IACxC,UAAU,EAAE,GAAG,CACb,MAAM,EACN,CAAC,CAAC,MAAM,EAAE,oBAAoB,KAAK,gBAAgB,CAAC,EAAE,CACvD,CAAC;CACH,CAAC"}
|
|
@@ -1,7 +1,26 @@
|
|
|
1
|
+
import type { SubgraphClass } from "@powerhousedao/reactor-api";
|
|
2
|
+
import type { IProcessorHostModule, ProcessorFactory } from "document-drive";
|
|
3
|
+
import type { DocumentModelModule } from "document-model";
|
|
4
|
+
type DocumentModelsExport = Record<string, DocumentModelModule>;
|
|
5
|
+
type SubgraphsExport = Record<string, Record<string, SubgraphClass>>;
|
|
6
|
+
type ProcessorsExport = {
|
|
7
|
+
processorFactory: (module: IProcessorHostModule) => ProcessorFactory;
|
|
8
|
+
};
|
|
1
9
|
export declare const installPackages: (packages: string[]) => Promise<void>;
|
|
2
10
|
export declare const readManifest: () => string;
|
|
3
11
|
/**
|
|
4
|
-
* Tries to import
|
|
12
|
+
* Tries to import document models from a package. This function cannot throw.
|
|
5
13
|
*/
|
|
6
|
-
export declare function
|
|
14
|
+
export declare function loadDocumentModels(packageName: string): Promise<DocumentModelsExport | null>;
|
|
15
|
+
/**
|
|
16
|
+
* Tries to import subgraphs from a package. This function cannot throw.
|
|
17
|
+
*/
|
|
18
|
+
export declare function loadSubgraphs(packageName: string): Promise<SubgraphsExport | null>;
|
|
19
|
+
/**
|
|
20
|
+
* Tries to import processors from a package. This function cannot throw.
|
|
21
|
+
*/
|
|
22
|
+
export declare function loadProcessors(packageName: string): Promise<ProcessorsExport | null>;
|
|
23
|
+
export declare function debounce<T extends (...args: any[]) => void>(func: T, delay?: number): (...args: Parameters<T>) => void;
|
|
24
|
+
export declare function isSubpath(parent: string, dir: string): boolean | "";
|
|
25
|
+
export {};
|
|
7
26
|
//# sourceMappingURL=util.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/packages/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/packages/util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAE7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAM1D,KAAK,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AAChE,KAAK,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;AACrE,KAAK,gBAAgB,GAAG;IACtB,gBAAgB,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,gBAAgB,CAAC;CACtE,CAAC;AAIF,eAAO,MAAM,eAAe,GAAU,UAAU,MAAM,EAAE,kBAIvD,CAAC;AAEF,eAAO,MAAM,YAAY,cAGxB,CAAC;AAEF;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAEtC;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAEjC;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAElC;AAmDD,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,EACzD,IAAI,EAAE,CAAC,EACP,KAAK,SAAM,GACV,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAMlC;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,gBAGpD"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { childLogger } from "document-drive";
|
|
2
2
|
import { execSync } from "node:child_process";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { resolveLinkedPackage } from "./import-resolver.js";
|
|
3
5
|
const logger = childLogger(["reactor-api", "packages/util"]);
|
|
4
6
|
export const installPackages = async (packages) => {
|
|
5
7
|
for (const packageName of packages) {
|
|
@@ -11,22 +13,69 @@ export const readManifest = () => {
|
|
|
11
13
|
return manifest;
|
|
12
14
|
};
|
|
13
15
|
/**
|
|
14
|
-
* Tries to import
|
|
16
|
+
* Tries to import document models from a package. This function cannot throw.
|
|
15
17
|
*/
|
|
16
|
-
export async function
|
|
18
|
+
export async function loadDocumentModels(packageName) {
|
|
19
|
+
return loadDependency(packageName, "document-models");
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Tries to import subgraphs from a package. This function cannot throw.
|
|
23
|
+
*/
|
|
24
|
+
export async function loadSubgraphs(packageName) {
|
|
25
|
+
return loadDependency(packageName, "subgraphs");
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Tries to import processors from a package. This function cannot throw.
|
|
29
|
+
*/
|
|
30
|
+
export async function loadProcessors(packageName) {
|
|
31
|
+
return loadDependency(packageName, "processors");
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Generic dependency loader - tries to import a dependency from a package. This function cannot throw.
|
|
35
|
+
* Returns null if the dependency cannot be loaded.
|
|
36
|
+
*/
|
|
37
|
+
async function loadDependency(packageName, subPath) {
|
|
38
|
+
const fullPath = `${packageName}/${subPath}`;
|
|
39
|
+
// Try the standard import first
|
|
17
40
|
try {
|
|
18
|
-
const fullPath = `${packageName}/${subPath}`;
|
|
19
41
|
// vite does not support this, but that's okay as we have provided the
|
|
20
42
|
// vite-loader for this purpose
|
|
21
|
-
|
|
43
|
+
const module = await import(/* @vite-ignore */ fullPath);
|
|
44
|
+
return module;
|
|
22
45
|
}
|
|
23
46
|
catch (e) {
|
|
47
|
+
// Handle module not found errors with fallback resolution
|
|
24
48
|
if (e instanceof Error &&
|
|
25
49
|
"code" in e &&
|
|
26
|
-
|
|
50
|
+
(e.code === "ERR_MODULE_NOT_FOUND" ||
|
|
51
|
+
e.code === "ERR_UNSUPPORTED_DIR_IMPORT")) {
|
|
52
|
+
const result = await resolveLinkedPackage(packageName, subPath);
|
|
53
|
+
if (result)
|
|
54
|
+
return result;
|
|
55
|
+
// Only log when ALL attempts have failed
|
|
56
|
+
logger.warn(`Unable to load dependency ${fullPath} - tried standard import, suggested paths, resolved paths, and workspace patterns`);
|
|
27
57
|
logger.debug(e);
|
|
28
58
|
}
|
|
59
|
+
else if (e instanceof Error &&
|
|
60
|
+
"code" in e &&
|
|
61
|
+
["ERR_PACKAGE_PATH_NOT_EXPORTED", "ERR_MODULE_NOT_FOUND"].includes(e.code)) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
logger.error(`Unexpected error loading ${fullPath}:`, e);
|
|
66
|
+
}
|
|
29
67
|
return null;
|
|
30
68
|
}
|
|
31
69
|
}
|
|
70
|
+
export function debounce(func, delay = 100) {
|
|
71
|
+
let timeoutId;
|
|
72
|
+
return (...args) => {
|
|
73
|
+
clearTimeout(timeoutId);
|
|
74
|
+
timeoutId = setTimeout(() => func(...args), delay);
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
export function isSubpath(parent, dir) {
|
|
78
|
+
const relative = path.relative(parent, dir);
|
|
79
|
+
return relative && !relative.startsWith("..") && !path.isAbsolute(relative);
|
|
80
|
+
}
|
|
32
81
|
//# sourceMappingURL=util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/packages/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/packages/util.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { SubgraphClass } from "@powerhousedao/reactor-api";
|
|
2
|
+
import type { IProcessorHostModule, ProcessorFactory } from "document-drive";
|
|
3
|
+
import type { DocumentModelModule } from "document-model";
|
|
4
|
+
import type { ViteDevServer } from "vite";
|
|
5
|
+
import type { ISubscribablePackageLoader, ISubscriptionOptions } from "./types.js";
|
|
6
|
+
export declare class VitePackageLoader implements ISubscribablePackageLoader {
|
|
7
|
+
private readonly logger;
|
|
8
|
+
private readonly vite;
|
|
9
|
+
static build(vite?: ViteDevServer): Promise<VitePackageLoader>;
|
|
10
|
+
constructor(vite: ViteDevServer);
|
|
11
|
+
private getDocumentModelsPath;
|
|
12
|
+
private getSubgraphsPath;
|
|
13
|
+
private getProcessorsPath;
|
|
14
|
+
loadDocumentModels(identifier: string): Promise<DocumentModelModule[]>;
|
|
15
|
+
loadSubgraphs(identifier: string): Promise<SubgraphClass[]>;
|
|
16
|
+
loadProcessors(identifier: string): Promise<((module: IProcessorHostModule) => ProcessorFactory) | null>;
|
|
17
|
+
onDocumentModelsChange(identifier: string, handler: (documentModels: DocumentModelModule[]) => void, options?: ISubscriptionOptions): () => void;
|
|
18
|
+
onSubgraphsChange(identifier: string, handler: (subgraphs: SubgraphClass[]) => void, options?: ISubscriptionOptions): () => void;
|
|
19
|
+
onProcessorsChange(identifier: string, handler: (processors: ((module: IProcessorHostModule) => ProcessorFactory) | null) => void, options?: ISubscriptionOptions): () => void;
|
|
20
|
+
}
|
|
21
|
+
export declare function startViteServer(): Promise<ViteDevServer>;
|
|
22
|
+
//# sourceMappingURL=vite-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite-loader.d.ts","sourceRoot":"","sources":["../../../src/packages/vite-loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAE7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,KAAK,EACV,0BAA0B,EAC1B,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAGpB,qBAAa,iBAAkB,YAAW,0BAA0B;IAClE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+C;IAEtE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgB;WAExB,KAAK,CAAC,IAAI,CAAC,EAAE,aAAa;gBAK3B,IAAI,EAAE,aAAa;IAI/B,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,iBAAiB;IAInB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAgCtE,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IA4B3D,cAAc,CAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,oBAAoB,KAAK,gBAAgB,CAAC,GAAG,IAAI,CAAC;IAiCvE,sBAAsB,CACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,CAAC,cAAc,EAAE,mBAAmB,EAAE,KAAK,IAAI,EACxD,OAAO,CAAC,EAAE,oBAAoB,GAC7B,MAAM,IAAI;IAiBb,iBAAiB,CACf,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,IAAI,EAC7C,OAAO,CAAC,EAAE,oBAAoB,GAC7B,MAAM,IAAI;IAeb,kBAAkB,CAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,CACP,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,oBAAoB,KAAK,gBAAgB,CAAC,GAAG,IAAI,KACpE,IAAI,EACT,OAAO,CAAC,EAAE,oBAAoB,GAC7B,MAAM,IAAI;CAcd;AAED,wBAAsB,eAAe,2BAqBpC"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { viteCommonjs } from "@originjs/vite-plugin-commonjs";
|
|
2
|
+
import { isSubgraphClass } from "@powerhousedao/reactor-api";
|
|
3
|
+
import { childLogger } from "document-drive";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { createServer } from "vite";
|
|
6
|
+
import { debounce, isSubpath } from "./util.js";
|
|
7
|
+
export class VitePackageLoader {
|
|
8
|
+
logger = childLogger(["reactor-api", "vite-loader"]);
|
|
9
|
+
vite;
|
|
10
|
+
static async build(vite) {
|
|
11
|
+
const server = vite ?? (await startViteServer());
|
|
12
|
+
return new VitePackageLoader(server);
|
|
13
|
+
}
|
|
14
|
+
constructor(vite) {
|
|
15
|
+
this.vite = vite;
|
|
16
|
+
}
|
|
17
|
+
getDocumentModelsPath(identifier) {
|
|
18
|
+
return path.join(identifier, "./document-models");
|
|
19
|
+
}
|
|
20
|
+
getSubgraphsPath(identifier) {
|
|
21
|
+
return path.join(identifier, "./subgraphs");
|
|
22
|
+
}
|
|
23
|
+
getProcessorsPath(identifier) {
|
|
24
|
+
return path.join(identifier, "./processors");
|
|
25
|
+
}
|
|
26
|
+
async loadDocumentModels(identifier) {
|
|
27
|
+
const fullPath = this.getDocumentModelsPath(identifier);
|
|
28
|
+
this.logger.verbose("Loading document models from", fullPath);
|
|
29
|
+
try {
|
|
30
|
+
const localDMs = (await this.vite.ssrLoadModule(fullPath));
|
|
31
|
+
const exports = Object.values(localDMs);
|
|
32
|
+
// duck type
|
|
33
|
+
const documentModels = [];
|
|
34
|
+
for (const dm of exports) {
|
|
35
|
+
if (dm.documentModel) {
|
|
36
|
+
documentModels.push(dm);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
this.logger.verbose(` ➜ Loaded ${documentModels.length} Document Models from: ${identifier}`);
|
|
40
|
+
return documentModels;
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
this.logger.debug(` ➜ No Document Models found for: ${identifier}`, e);
|
|
44
|
+
}
|
|
45
|
+
return [];
|
|
46
|
+
}
|
|
47
|
+
async loadSubgraphs(identifier) {
|
|
48
|
+
const fullPath = this.getSubgraphsPath(identifier);
|
|
49
|
+
this.logger.verbose("Loading subgraphs from", fullPath);
|
|
50
|
+
let localSubgraphs = {};
|
|
51
|
+
try {
|
|
52
|
+
localSubgraphs = await this.vite.ssrLoadModule(fullPath);
|
|
53
|
+
}
|
|
54
|
+
catch (e) {
|
|
55
|
+
this.logger.debug(` ➜ No Subgraphs found for: ${identifier}`, e);
|
|
56
|
+
return [];
|
|
57
|
+
}
|
|
58
|
+
const subgraphs = [];
|
|
59
|
+
for (const [name, subgraph] of Object.entries(localSubgraphs)) {
|
|
60
|
+
const SubgraphClass = subgraph[name];
|
|
61
|
+
if (isSubgraphClass(SubgraphClass)) {
|
|
62
|
+
subgraphs.push(SubgraphClass);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
this.logger.debug(` ➜ Loaded ${subgraphs.length} Subgraphs from: ${identifier}`);
|
|
66
|
+
return subgraphs;
|
|
67
|
+
}
|
|
68
|
+
async loadProcessors(identifier) {
|
|
69
|
+
const fullPath = this.getProcessorsPath(identifier);
|
|
70
|
+
this.logger.verbose("Loading processors from", fullPath);
|
|
71
|
+
try {
|
|
72
|
+
const module = await this.vite.ssrLoadModule(fullPath);
|
|
73
|
+
if (module.processorFactory &&
|
|
74
|
+
typeof module.processorFactory === "function") {
|
|
75
|
+
this.logger.verbose(` ➜ Loaded Processor factory from: ${identifier}`);
|
|
76
|
+
return module.processorFactory;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch (e) {
|
|
80
|
+
this.logger.debug(` ➜ No Processor Factory found for: ${identifier}`, e);
|
|
81
|
+
}
|
|
82
|
+
this.logger.verbose(` ➜ No Processor Factory found for: ${identifier}`);
|
|
83
|
+
// return empty processor factory
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
onDocumentModelsChange(identifier, handler, options) {
|
|
87
|
+
const documentModelsPath = this.getDocumentModelsPath(identifier);
|
|
88
|
+
const listener = debounce(async (changedPath) => {
|
|
89
|
+
if (isSubpath(documentModelsPath, changedPath)) {
|
|
90
|
+
const documentModels = await this.loadDocumentModels(identifier);
|
|
91
|
+
handler(documentModels);
|
|
92
|
+
}
|
|
93
|
+
}, options?.debounce ?? 500);
|
|
94
|
+
this.vite.watcher.on("change", listener);
|
|
95
|
+
return () => {
|
|
96
|
+
this.vite.watcher.off("change", listener);
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
onSubgraphsChange(identifier, handler, options) {
|
|
100
|
+
const subgraphsPath = this.getSubgraphsPath(identifier);
|
|
101
|
+
const listener = debounce(async (changedPath) => {
|
|
102
|
+
if (isSubpath(subgraphsPath, changedPath)) {
|
|
103
|
+
const subgraphs = await this.loadSubgraphs(identifier);
|
|
104
|
+
handler(subgraphs);
|
|
105
|
+
}
|
|
106
|
+
}, options?.debounce ?? 100);
|
|
107
|
+
this.vite.watcher.on("change", listener);
|
|
108
|
+
return () => {
|
|
109
|
+
this.vite.watcher.off("change", listener);
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
onProcessorsChange(identifier, handler, options) {
|
|
113
|
+
const processorsPath = this.getProcessorsPath(identifier);
|
|
114
|
+
const listener = debounce(async (changedPath) => {
|
|
115
|
+
if (isSubpath(processorsPath, changedPath)) {
|
|
116
|
+
const processors = await this.loadProcessors(identifier);
|
|
117
|
+
handler(processors);
|
|
118
|
+
}
|
|
119
|
+
}, options?.debounce ?? 100);
|
|
120
|
+
this.vite.watcher.on("change", listener);
|
|
121
|
+
return () => {
|
|
122
|
+
this.vite.watcher.off("change", listener);
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
export async function startViteServer() {
|
|
127
|
+
const vite = await createServer({
|
|
128
|
+
server: { middlewareMode: true, watch: { ignored: ["**/.ph/**"] } },
|
|
129
|
+
appType: "custom",
|
|
130
|
+
build: {
|
|
131
|
+
rollupOptions: {
|
|
132
|
+
input: [],
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
plugins: [
|
|
136
|
+
viteCommonjs(),
|
|
137
|
+
{
|
|
138
|
+
name: "suppress-hmr",
|
|
139
|
+
handleHotUpdate() {
|
|
140
|
+
return []; // return empty array to suppress server refresh
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
],
|
|
144
|
+
});
|
|
145
|
+
return vite;
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=vite-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite-loader.js","sourceRoot":"","sources":["../../../src/packages/vite-loader.ts"],"names":[],"mappings":"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"}
|
package/dist/src/server.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
1
|
+
import type { PGlite } from "@electric-sql/pglite";
|
|
2
|
+
import type { IReactorClient } from "@powerhousedao/reactor";
|
|
3
|
+
import type { IDocumentDriveServer } from "document-drive";
|
|
4
|
+
import type { Express } from "express";
|
|
5
|
+
import type { Pool } from "pg";
|
|
6
|
+
import type { API, IPackageLoader, Processor } from "./types.js";
|
|
7
7
|
type Options = {
|
|
8
8
|
express?: Express;
|
|
9
9
|
port?: number;
|
|
@@ -23,16 +23,22 @@ type Options = {
|
|
|
23
23
|
} | boolean | undefined;
|
|
24
24
|
packageLoader?: IPackageLoader;
|
|
25
25
|
processors?: Record<string, Processor>;
|
|
26
|
+
mcp?: boolean;
|
|
27
|
+
processorConfig?: Map<string, unknown>;
|
|
28
|
+
subgraphs?: {
|
|
29
|
+
isReactorv2Enabled?: boolean;
|
|
30
|
+
};
|
|
26
31
|
};
|
|
27
32
|
/**
|
|
28
33
|
* Starts the API server.
|
|
29
34
|
*
|
|
30
35
|
* @param reactor - The document drive server.
|
|
36
|
+
* @param client - The reactor client. For now, this sits side-by-side with the reactor. In the future, we will want to replace one with the other.
|
|
31
37
|
* @param options - Additional options for server configuration. These options intended to be serializable.
|
|
32
38
|
* @param overrides - System overrides. These overrides are intended to be object references.
|
|
33
39
|
*
|
|
34
40
|
* @returns The API server.
|
|
35
41
|
*/
|
|
36
|
-
export declare function startAPI(reactor: IDocumentDriveServer, options: Options): Promise<API>;
|
|
42
|
+
export declare function startAPI(reactor: IDocumentDriveServer, client: IReactorClient, options: Options): Promise<API>;
|
|
37
43
|
export {};
|
|
38
44
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/src/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAInD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAU7D,OAAO,KAAK,EAEV,oBAAoB,EAKrB,MAAM,gBAAgB,CAAC;AAMxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAOvC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAM/B,OAAO,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAKjE,KAAK,OAAO,GAAG;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,IAAI,GAAG,SAAS,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE;QACL,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF,KAAK,CAAC,EACF;QACE,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,GACD,OAAO,GACP,SAAS,CAAC;IACd,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,SAAS,CAAC,EAAE;QACV,kBAAkB,CAAC,EAAE,OAAO,CAAC;KAC9B,CAAC;CACH,CAAC;AA0LF;;;;;;;;;GASG;AACH,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,GAAG,CAAC,CAsLd"}
|
package/dist/src/server.js
CHANGED
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
import { config } from "#config.js";
|
|
2
|
-
import { GraphQLManager } from "#graphql/graphql-manager.js";
|
|
3
|
-
import { renderGraphqlPlayground } from "#graphql/playground.js";
|
|
4
|
-
import { ImportPackageLoader } from "#packages/import-loader.js";
|
|
5
|
-
import { getUniqueDocumentModels, PackageManager, } from "#packages/package-manager.js";
|
|
6
1
|
import { PostgresAnalyticsStore } from "@powerhousedao/analytics-engine-pg";
|
|
7
|
-
import { getConfig } from "@powerhousedao/config/
|
|
8
|
-
import {
|
|
2
|
+
import { getConfig } from "@powerhousedao/config/node";
|
|
3
|
+
import { getUniqueDocumentModels, GraphQLManager, PackageManager, renderGraphqlPlayground, } from "@powerhousedao/reactor-api";
|
|
4
|
+
import { setupMcpServer } from "@powerhousedao/reactor-mcp";
|
|
9
5
|
import devcert from "devcert";
|
|
10
|
-
import { childLogger, } from "document-drive";
|
|
11
|
-
import { ProcessorManager } from "document-drive/processors/processor-manager";
|
|
12
|
-
import { createRelationalDb } from "document-drive/processors/utils";
|
|
6
|
+
import { childLogger, createRelationalDb, ProcessorManager, } from "document-drive";
|
|
13
7
|
import express from "express";
|
|
14
8
|
import fs from "node:fs";
|
|
15
9
|
import https from "node:https";
|
|
16
10
|
import path from "node:path";
|
|
11
|
+
import { config, DefaultCoreSubgraphs } from "./config.js";
|
|
12
|
+
import { ReactorSubgraph } from "./graphql/reactor/subgraph.js";
|
|
13
|
+
import { ImportPackageLoader } from "./packages/import-loader.js";
|
|
14
|
+
import { AuthService } from "./services/auth.service.js";
|
|
17
15
|
import { getDbClient, initAnalyticsStoreSql } from "./utils/db.js";
|
|
18
16
|
const logger = childLogger(["reactor-api", "server"]);
|
|
19
17
|
const DEFAULT_PORT = 4000;
|
|
@@ -50,29 +48,23 @@ async function initializeDatabaseAndAnalytics(dbPath) {
|
|
|
50
48
|
/**
|
|
51
49
|
* Sets up the subgraph manager and registers subgraphs
|
|
52
50
|
*/
|
|
53
|
-
async function setupGraphQLManager(app, reactor, relationalDb, analyticsStore, subgraphs, auth) {
|
|
54
|
-
const graphqlManager = new GraphQLManager(config.basePath, app, reactor, relationalDb, analyticsStore);
|
|
55
|
-
await graphqlManager.init();
|
|
56
|
-
for (const [, collection] of subgraphs.entries()) {
|
|
51
|
+
async function setupGraphQLManager(app, httpServer, reactor, client, relationalDb, analyticsStore, subgraphs, auth) {
|
|
52
|
+
const graphqlManager = new GraphQLManager(config.basePath, app, httpServer, reactor, client, relationalDb, analyticsStore);
|
|
53
|
+
await graphqlManager.init(subgraphs.core);
|
|
54
|
+
for (const [, collection] of subgraphs.extended.entries()) {
|
|
57
55
|
for (const subgraph of collection) {
|
|
58
56
|
await graphqlManager.registerSubgraph(subgraph, "graphql");
|
|
59
57
|
}
|
|
60
58
|
}
|
|
61
59
|
await graphqlManager.updateRouter();
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
graphqlManager.setAdditionalContextFields({
|
|
71
|
-
isGuest: (address) => true,
|
|
72
|
-
isUser: (address) => true,
|
|
73
|
-
isAdmin: (address) => true,
|
|
74
|
-
});
|
|
75
|
-
}
|
|
60
|
+
// Create auth service for context fields
|
|
61
|
+
const authService = new AuthService({
|
|
62
|
+
enabled: auth?.enabled ?? false,
|
|
63
|
+
guests: auth?.guests ?? [],
|
|
64
|
+
users: auth?.users ?? [],
|
|
65
|
+
admins: auth?.admins ?? [],
|
|
66
|
+
});
|
|
67
|
+
graphqlManager.setAdditionalContextFields(authService.getAdditionalContextFields());
|
|
76
68
|
return graphqlManager;
|
|
77
69
|
}
|
|
78
70
|
/**
|
|
@@ -80,11 +72,7 @@ async function setupGraphQLManager(app, reactor, relationalDb, analyticsStore, s
|
|
|
80
72
|
*/
|
|
81
73
|
function setupEventListeners(pkgManager, reactor, graphqlManager, processorManager, module) {
|
|
82
74
|
pkgManager.onDocumentModelsChange(async (documentModels) => {
|
|
83
|
-
|
|
84
|
-
...reactor.getDocumentModelModules(),
|
|
85
|
-
...Object.values(documentModels).flat(),
|
|
86
|
-
]);
|
|
87
|
-
reactor.setDocumentModelModules(uniqueModels);
|
|
75
|
+
reactor.setDocumentModelModules(Object.values(documentModels).flat());
|
|
88
76
|
await graphqlManager.updateRouter();
|
|
89
77
|
});
|
|
90
78
|
pkgManager.onSubgraphsChange(async (packagedSubgraphs) => {
|
|
@@ -102,7 +90,7 @@ function setupEventListeners(pkgManager, reactor, graphqlManager, processorManag
|
|
|
102
90
|
analyticsStore: module.analyticsStore,
|
|
103
91
|
relationalDb: module.relationalDb,
|
|
104
92
|
}));
|
|
105
|
-
await processorManager.registerFactory(packageName, async (
|
|
93
|
+
await processorManager.registerFactory(packageName, async (driveHeader) => (await Promise.all(factories.map((factory) => factory(driveHeader)))).flat());
|
|
106
94
|
}
|
|
107
95
|
});
|
|
108
96
|
}
|
|
@@ -133,23 +121,27 @@ async function startServer(app, port, httpsOptions) {
|
|
|
133
121
|
}
|
|
134
122
|
}
|
|
135
123
|
server.listen(port);
|
|
124
|
+
return server;
|
|
136
125
|
}
|
|
137
126
|
else {
|
|
138
|
-
app.listen(port);
|
|
127
|
+
const server = app.listen(port);
|
|
128
|
+
return server;
|
|
139
129
|
}
|
|
140
130
|
}
|
|
141
131
|
/**
|
|
142
132
|
* Starts the API server.
|
|
143
133
|
*
|
|
144
134
|
* @param reactor - The document drive server.
|
|
135
|
+
* @param client - The reactor client. For now, this sits side-by-side with the reactor. In the future, we will want to replace one with the other.
|
|
145
136
|
* @param options - Additional options for server configuration. These options intended to be serializable.
|
|
146
137
|
* @param overrides - System overrides. These overrides are intended to be object references.
|
|
147
138
|
*
|
|
148
139
|
* @returns The API server.
|
|
149
140
|
*/
|
|
150
|
-
export async function startAPI(reactor, options) {
|
|
141
|
+
export async function startAPI(reactor, client, options) {
|
|
151
142
|
const port = options.port ?? DEFAULT_PORT;
|
|
152
143
|
const app = options.express ?? express();
|
|
144
|
+
const mcpServerEnabled = options.mcp ?? true;
|
|
153
145
|
let admins = [];
|
|
154
146
|
let users = [];
|
|
155
147
|
let guests = [];
|
|
@@ -180,53 +172,18 @@ export async function startAPI(reactor, options) {
|
|
|
180
172
|
if (ADMINS !== undefined) {
|
|
181
173
|
admins = ADMINS.split(",").map((a) => a.toLowerCase());
|
|
182
174
|
}
|
|
183
|
-
const
|
|
175
|
+
const authService = new AuthService({
|
|
176
|
+
enabled: authEnabled,
|
|
177
|
+
guests,
|
|
178
|
+
users,
|
|
179
|
+
admins,
|
|
180
|
+
});
|
|
184
181
|
// add auth middleware if auth is enabled
|
|
185
182
|
if (authEnabled) {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
app.use(
|
|
189
|
-
|
|
190
|
-
next();
|
|
191
|
-
return;
|
|
192
|
-
}
|
|
193
|
-
req.admins = admins;
|
|
194
|
-
req.users = users;
|
|
195
|
-
req.guests = guests;
|
|
196
|
-
const token = req.headers.authorization?.split(" ")[1];
|
|
197
|
-
if (!token) {
|
|
198
|
-
res.status(400).json({ error: "Missing authorization token" });
|
|
199
|
-
return;
|
|
200
|
-
}
|
|
201
|
-
const verified = await verifyAuthBearerToken(token);
|
|
202
|
-
if (!verified) {
|
|
203
|
-
res.status(401).json({ error: "Verification failed" });
|
|
204
|
-
return;
|
|
205
|
-
}
|
|
206
|
-
const { address, chainId, networkId } = verified.verifiableCredential
|
|
207
|
-
.credentialSubject;
|
|
208
|
-
// @todo: check renown eth credential
|
|
209
|
-
if (!address || !chainId || !networkId) {
|
|
210
|
-
res.status(401).json({ error: "Missing credentials" });
|
|
211
|
-
return;
|
|
212
|
-
}
|
|
213
|
-
req.user = {
|
|
214
|
-
address: address.toLowerCase(),
|
|
215
|
-
chainId,
|
|
216
|
-
networkId,
|
|
217
|
-
};
|
|
218
|
-
graphqlManager.setAdditionalContextFields({
|
|
219
|
-
user: {
|
|
220
|
-
address: address.toLowerCase(),
|
|
221
|
-
chainId,
|
|
222
|
-
networkId,
|
|
223
|
-
},
|
|
224
|
-
});
|
|
225
|
-
if (!all.includes(req.user.address)) {
|
|
226
|
-
res.status(403).json({ error: "Forbidden" });
|
|
227
|
-
return;
|
|
228
|
-
}
|
|
229
|
-
next();
|
|
183
|
+
logger.info("Setting up Auth middleware");
|
|
184
|
+
// Apply auth middleware to all routes including GraphQL
|
|
185
|
+
app.use((req, res, next) => {
|
|
186
|
+
authService.authenticate(req, res, next);
|
|
230
187
|
});
|
|
231
188
|
}
|
|
232
189
|
const defaultRouter = express.Router();
|
|
@@ -236,10 +193,8 @@ export async function startAPI(reactor, options) {
|
|
|
236
193
|
const { relationalDb, analyticsStore } = await initializeDatabaseAndAnalytics(options.dbPath);
|
|
237
194
|
const module = { relationalDb, analyticsStore };
|
|
238
195
|
// Initialize package manager
|
|
239
|
-
const
|
|
240
|
-
|
|
241
|
-
loaders.push(options.packageLoader);
|
|
242
|
-
}
|
|
196
|
+
const packageLoader = options.packageLoader ?? new ImportPackageLoader();
|
|
197
|
+
const loaders = [packageLoader];
|
|
243
198
|
const packages = new PackageManager(loaders, {
|
|
244
199
|
configFile: options.configFile,
|
|
245
200
|
packages: options.packages ?? [],
|
|
@@ -259,8 +214,10 @@ export async function startAPI(reactor, options) {
|
|
|
259
214
|
const factories = fns.map((fn) => {
|
|
260
215
|
try {
|
|
261
216
|
return fn({
|
|
217
|
+
// TODO: figure out why this type comes out as any
|
|
262
218
|
analyticsStore: module.analyticsStore,
|
|
263
219
|
relationalDb: module.relationalDb,
|
|
220
|
+
config: options.processorConfig,
|
|
264
221
|
});
|
|
265
222
|
}
|
|
266
223
|
catch (e) {
|
|
@@ -272,12 +229,12 @@ export async function startAPI(reactor, options) {
|
|
|
272
229
|
if (!validFactories.length) {
|
|
273
230
|
continue;
|
|
274
231
|
}
|
|
275
|
-
await processorManager.registerFactory(packageName, async (
|
|
232
|
+
await processorManager.registerFactory(packageName, async (driveHeader) => (await Promise.all(validFactories.map(async (factory) => {
|
|
276
233
|
try {
|
|
277
|
-
return await factory(
|
|
234
|
+
return await factory(driveHeader);
|
|
278
235
|
}
|
|
279
236
|
catch (e) {
|
|
280
|
-
logger.error(`Error creating processor for drive ${
|
|
237
|
+
logger.error(`Error creating processor for drive ${driveHeader.id}:`, e);
|
|
281
238
|
return [];
|
|
282
239
|
}
|
|
283
240
|
}))).flat());
|
|
@@ -286,8 +243,17 @@ export async function startAPI(reactor, options) {
|
|
|
286
243
|
reactor.on("driveAdded", async (drive) => {
|
|
287
244
|
await processorManager.registerDrive(drive.header.id);
|
|
288
245
|
});
|
|
246
|
+
// Start the server
|
|
247
|
+
const server = await startServer(app, port, options.https);
|
|
289
248
|
// set up subgraph manager
|
|
290
|
-
const
|
|
249
|
+
const coreSubgraphs = DefaultCoreSubgraphs.slice();
|
|
250
|
+
if (options.subgraphs?.isReactorv2Enabled) {
|
|
251
|
+
coreSubgraphs.push(ReactorSubgraph);
|
|
252
|
+
}
|
|
253
|
+
const graphqlManager = await setupGraphQLManager(app, server, reactor, client, relationalDb, analyticsStore, {
|
|
254
|
+
extended: subgraphs,
|
|
255
|
+
core: coreSubgraphs,
|
|
256
|
+
}, {
|
|
291
257
|
enabled: authEnabled,
|
|
292
258
|
guests,
|
|
293
259
|
users,
|
|
@@ -295,8 +261,10 @@ export async function startAPI(reactor, options) {
|
|
|
295
261
|
});
|
|
296
262
|
// Set up event listeners
|
|
297
263
|
setupEventListeners(packages, reactor, graphqlManager, processorManager, module);
|
|
298
|
-
|
|
299
|
-
|
|
264
|
+
if (mcpServerEnabled) {
|
|
265
|
+
await setupMcpServer(reactor, app);
|
|
266
|
+
logger.info(`MCP server available at http://localhost:${port}/mcp`);
|
|
267
|
+
}
|
|
300
268
|
return { app, graphqlManager, processorManager, packages };
|
|
301
269
|
}
|
|
302
270
|
//# sourceMappingURL=server.js.map
|