@powerhousedao/reactor-api 6.0.0-dev.9 → 6.0.0-dev.90
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/dist/codegen.js +1 -1
- package/dist/codegen.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/src/config.d.ts +1 -2
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +1 -5
- package/dist/src/config.js.map +1 -1
- package/dist/src/graphql/auth/resolvers.d.ts +17 -0
- package/dist/src/graphql/auth/resolvers.d.ts.map +1 -1
- package/dist/src/graphql/auth/resolvers.js +54 -0
- package/dist/src/graphql/auth/resolvers.js.map +1 -1
- package/dist/src/graphql/auth/schema.graphql +27 -5
- package/dist/src/graphql/auth/subgraph.d.ts +25 -0
- package/dist/src/graphql/auth/subgraph.d.ts.map +1 -1
- package/dist/src/graphql/auth/subgraph.js +45 -1
- package/dist/src/graphql/auth/subgraph.js.map +1 -1
- package/dist/src/graphql/base-subgraph.d.ts +12 -4
- package/dist/src/graphql/base-subgraph.d.ts.map +1 -1
- package/dist/src/graphql/base-subgraph.js +94 -2
- package/dist/src/graphql/base-subgraph.js.map +1 -1
- package/dist/src/graphql/document-model-subgraph.d.ts +16 -44
- package/dist/src/graphql/document-model-subgraph.d.ts.map +1 -1
- package/dist/src/graphql/document-model-subgraph.js +285 -87
- package/dist/src/graphql/document-model-subgraph.js.map +1 -1
- package/dist/src/graphql/graphql-manager.d.ts +28 -6
- package/dist/src/graphql/graphql-manager.d.ts.map +1 -1
- package/dist/src/graphql/graphql-manager.js +266 -161
- package/dist/src/graphql/graphql-manager.js.map +1 -1
- package/dist/src/graphql/index.d.ts +2 -1
- package/dist/src/graphql/index.d.ts.map +1 -1
- package/dist/src/graphql/index.js +2 -1
- package/dist/src/graphql/index.js.map +1 -1
- package/dist/src/graphql/packages/index.d.ts +2 -0
- package/dist/src/graphql/packages/index.d.ts.map +1 -0
- package/dist/src/graphql/packages/index.js +2 -0
- package/dist/src/graphql/packages/index.js.map +1 -0
- package/dist/src/graphql/packages/resolvers.d.ts +31 -0
- package/dist/src/graphql/packages/resolvers.d.ts.map +1 -0
- package/dist/src/graphql/packages/resolvers.js +37 -0
- package/dist/src/graphql/packages/resolvers.js.map +1 -0
- package/dist/src/graphql/packages/schema.graphql +50 -0
- package/dist/src/graphql/packages/subgraph.d.ts +55 -0
- package/dist/src/graphql/packages/subgraph.d.ts.map +1 -0
- package/dist/src/graphql/packages/subgraph.js +73 -0
- package/dist/src/graphql/packages/subgraph.js.map +1 -0
- package/dist/src/graphql/reactor/adapters.d.ts +10 -2
- package/dist/src/graphql/reactor/adapters.d.ts.map +1 -1
- package/dist/src/graphql/reactor/adapters.js +35 -1
- package/dist/src/graphql/reactor/adapters.js.map +1 -1
- package/dist/src/graphql/reactor/factory.d.ts +22 -1
- package/dist/src/graphql/reactor/factory.d.ts.map +1 -1
- package/dist/src/graphql/reactor/factory.js +1 -1
- package/dist/src/graphql/reactor/factory.js.map +1 -1
- package/dist/src/graphql/reactor/gen/graphql.d.ts +339 -76
- package/dist/src/graphql/reactor/gen/graphql.d.ts.map +1 -1
- package/dist/src/graphql/reactor/gen/graphql.js +242 -10
- package/dist/src/graphql/reactor/gen/graphql.js.map +1 -1
- package/dist/src/graphql/reactor/index.d.ts +1 -1
- package/dist/src/graphql/reactor/index.d.ts.map +1 -1
- package/dist/src/graphql/reactor/index.js +1 -1
- package/dist/src/graphql/reactor/index.js.map +1 -1
- package/dist/src/graphql/reactor/operations.graphql +188 -1
- package/dist/src/graphql/reactor/requester.with-zod.d.ts.map +1 -1
- package/dist/src/graphql/reactor/requester.with-zod.js +114 -38
- package/dist/src/graphql/reactor/requester.with-zod.js.map +1 -1
- package/dist/src/graphql/reactor/resolvers.d.ts +78 -25
- package/dist/src/graphql/reactor/resolvers.d.ts.map +1 -1
- package/dist/src/graphql/reactor/resolvers.js +197 -74
- package/dist/src/graphql/reactor/resolvers.js.map +1 -1
- package/dist/src/graphql/reactor/schema.graphql +70 -30
- package/dist/src/graphql/reactor/subgraph.d.ts +2 -31
- package/dist/src/graphql/reactor/subgraph.d.ts.map +1 -1
- package/dist/src/graphql/reactor/subgraph.js +132 -209
- package/dist/src/graphql/reactor/subgraph.js.map +1 -1
- package/dist/src/graphql/reactor/validation.d.ts +266 -20
- package/dist/src/graphql/reactor/validation.d.ts.map +1 -1
- package/dist/src/graphql/reactor/validation.js +98 -4
- package/dist/src/graphql/reactor/validation.js.map +1 -1
- package/dist/src/graphql/system/index.d.ts +0 -1
- package/dist/src/graphql/system/index.d.ts.map +1 -1
- package/dist/src/graphql/system/index.js +0 -1
- package/dist/src/graphql/system/index.js.map +1 -1
- package/dist/src/graphql/types.d.ts +6 -8
- package/dist/src/graphql/types.d.ts.map +1 -1
- package/dist/src/graphql/utils.d.ts +1 -18
- package/dist/src/graphql/utils.d.ts.map +1 -1
- package/dist/src/graphql/utils.js +7 -35
- package/dist/src/graphql/utils.js.map +1 -1
- package/dist/src/migrations/002_add_document_protection.d.ts +4 -0
- package/dist/src/migrations/002_add_document_protection.d.ts.map +1 -0
- package/dist/src/migrations/002_add_document_protection.js +18 -0
- package/dist/src/migrations/002_add_document_protection.js.map +1 -0
- package/dist/src/migrations/index.d.ts.map +1 -1
- package/dist/src/migrations/index.js +2 -0
- package/dist/src/migrations/index.js.map +1 -1
- package/dist/src/packages/http-loader.d.ts +68 -0
- package/dist/src/packages/http-loader.d.ts.map +1 -0
- package/dist/src/packages/http-loader.js +176 -0
- package/dist/src/packages/http-loader.js.map +1 -0
- package/dist/src/packages/https-hooks.d.mts +23 -0
- package/dist/src/packages/https-hooks.d.mts.map +1 -0
- package/dist/src/packages/https-hooks.mjs +59 -0
- package/dist/src/packages/https-hooks.mjs.map +1 -0
- package/dist/src/packages/import-loader.d.ts +5 -3
- package/dist/src/packages/import-loader.d.ts.map +1 -1
- package/dist/src/packages/import-loader.js +19 -10
- package/dist/src/packages/import-loader.js.map +1 -1
- package/dist/src/packages/package-manager.d.ts +2 -2
- package/dist/src/packages/package-manager.d.ts.map +1 -1
- package/dist/src/packages/package-manager.js.map +1 -1
- package/dist/src/packages/types.d.ts +9 -4
- package/dist/src/packages/types.d.ts.map +1 -1
- package/dist/src/packages/util.d.ts +3 -2
- package/dist/src/packages/util.d.ts.map +1 -1
- package/dist/src/packages/util.js +1 -1
- package/dist/src/packages/util.js.map +1 -1
- package/dist/src/packages/vite-loader.d.ts +10 -8
- package/dist/src/packages/vite-loader.d.ts.map +1 -1
- package/dist/src/packages/vite-loader.js +33 -10
- package/dist/src/packages/vite-loader.js.map +1 -1
- package/dist/src/server.d.ts +14 -11
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/server.js +153 -92
- package/dist/src/server.js.map +1 -1
- package/dist/src/services/auth.service.d.ts +0 -12
- package/dist/src/services/auth.service.d.ts.map +1 -1
- package/dist/src/services/auth.service.js +13 -40
- package/dist/src/services/auth.service.js.map +1 -1
- package/dist/src/services/authorization.service.d.ts +70 -0
- package/dist/src/services/authorization.service.d.ts.map +1 -0
- package/dist/src/services/authorization.service.js +155 -0
- package/dist/src/services/authorization.service.js.map +1 -0
- package/dist/src/services/document-permission.service.d.ts +47 -7
- package/dist/src/services/document-permission.service.d.ts.map +1 -1
- package/dist/src/services/document-permission.service.js +162 -7
- package/dist/src/services/document-permission.service.js.map +1 -1
- package/dist/src/services/package-management.service.d.ts +32 -0
- package/dist/src/services/package-management.service.d.ts.map +1 -0
- package/dist/src/services/package-management.service.js +95 -0
- package/dist/src/services/package-management.service.js.map +1 -0
- package/dist/src/services/package-storage.d.ts +23 -0
- package/dist/src/services/package-storage.d.ts.map +1 -0
- package/dist/src/services/package-storage.js +19 -0
- package/dist/src/services/package-storage.js.map +1 -0
- package/dist/src/tracing.d.ts.map +1 -1
- package/dist/src/tracing.js +19 -1
- package/dist/src/tracing.js.map +1 -1
- package/dist/src/types.d.ts +5 -5
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/auth.d.ts +1 -1
- package/dist/src/utils/auth.d.ts.map +1 -1
- package/dist/src/utils/auth.js +5 -12
- package/dist/src/utils/auth.js.map +1 -1
- package/dist/src/utils/create-schema.d.ts +25 -6
- package/dist/src/utils/create-schema.d.ts.map +1 -1
- package/dist/src/utils/create-schema.js +294 -22
- package/dist/src/utils/create-schema.js.map +1 -1
- package/dist/src/utils/db.d.ts +8 -0
- package/dist/src/utils/db.d.ts.map +1 -1
- package/dist/src/utils/db.js.map +1 -1
- package/dist/src/utils/drive-url.d.ts +2 -0
- package/dist/src/utils/drive-url.d.ts.map +1 -0
- package/dist/src/utils/drive-url.js +3 -0
- package/dist/src/utils/drive-url.js.map +1 -0
- package/dist/src/utils/index.d.ts +1 -0
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/index.js +1 -0
- package/dist/src/utils/index.js.map +1 -1
- package/dist/test/authorization.service.test.d.ts +2 -0
- package/dist/test/authorization.service.test.d.ts.map +1 -0
- package/dist/test/authorization.service.test.js +252 -0
- package/dist/test/authorization.service.test.js.map +1 -0
- package/dist/test/connect-switchboard-reshuffle-convergence.test.d.ts +2 -0
- package/dist/test/connect-switchboard-reshuffle-convergence.test.d.ts.map +1 -0
- package/dist/test/connect-switchboard-reshuffle-convergence.test.js +203 -0
- package/dist/test/connect-switchboard-reshuffle-convergence.test.js.map +1 -0
- package/dist/test/connect-switchboard-sync.test.d.ts +2 -0
- package/dist/test/connect-switchboard-sync.test.d.ts.map +1 -0
- package/dist/test/connect-switchboard-sync.test.js +581 -0
- package/dist/test/connect-switchboard-sync.test.js.map +1 -0
- package/dist/test/document-drive-subgraph.test.d.ts +2 -0
- package/dist/test/document-drive-subgraph.test.d.ts.map +1 -0
- package/dist/test/document-drive-subgraph.test.js +186 -0
- package/dist/test/document-drive-subgraph.test.js.map +1 -0
- package/dist/test/document-model-subgraph-permissions.test.d.ts +2 -0
- package/dist/test/document-model-subgraph-permissions.test.d.ts.map +1 -0
- package/dist/test/document-model-subgraph-permissions.test.js +563 -0
- package/dist/test/document-model-subgraph-permissions.test.js.map +1 -0
- package/dist/test/drive-info-endpoint.test.d.ts +2 -0
- package/dist/test/drive-info-endpoint.test.d.ts.map +1 -0
- package/dist/test/drive-info-endpoint.test.js +123 -0
- package/dist/test/drive-info-endpoint.test.js.map +1 -0
- package/dist/test/index.d.ts +0 -1
- package/dist/test/index.d.ts.map +1 -1
- package/dist/test/index.js +0 -1
- package/dist/test/index.js.map +1 -1
- package/dist/test/permissions-integration.test.js +6 -20
- package/dist/test/permissions-integration.test.js.map +1 -1
- package/dist/test/push-backfill.test.d.ts +2 -0
- package/dist/test/push-backfill.test.d.ts.map +1 -0
- package/dist/test/push-backfill.test.js +298 -0
- package/dist/test/push-backfill.test.js.map +1 -0
- package/dist/test/reactor-client.test.js +172 -13
- package/dist/test/reactor-client.test.js.map +1 -1
- package/dist/test/reactor-resolvers.test.js +8 -11
- package/dist/test/reactor-resolvers.test.js.map +1 -1
- package/dist/test/reactor-subgraph-permissions.test.js +7 -36
- package/dist/test/reactor-subgraph-permissions.test.js.map +1 -1
- package/dist/test/subscriptions.test.js +2 -0
- package/dist/test/subscriptions.test.js.map +1 -1
- package/dist/test/utils/gql-resolver-bridge.d.ts +4 -1
- package/dist/test/utils/gql-resolver-bridge.d.ts.map +1 -1
- package/dist/test/utils/gql-resolver-bridge.js +36 -7
- package/dist/test/utils/gql-resolver-bridge.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +46 -55
- package/dist/src/graphql/drive-subgraph.d.ts +0 -25
- package/dist/src/graphql/drive-subgraph.d.ts.map +0 -1
- package/dist/src/graphql/drive-subgraph.js +0 -487
- package/dist/src/graphql/drive-subgraph.js.map +0 -1
- package/dist/src/graphql/system/system-subgraph.d.ts +0 -49
- package/dist/src/graphql/system/system-subgraph.d.ts.map +0 -1
- package/dist/src/graphql/system/system-subgraph.js +0 -130
- package/dist/src/graphql/system/system-subgraph.js.map +0 -1
- package/dist/src/sync/types.d.ts +0 -10
- package/dist/src/sync/types.d.ts.map +0 -1
- package/dist/src/sync/types.js +0 -2
- package/dist/src/sync/types.js.map +0 -1
- package/dist/src/sync/utils.d.ts +0 -7
- package/dist/src/sync/utils.d.ts.map +0 -1
- package/dist/src/sync/utils.js +0 -78
- package/dist/src/sync/utils.js.map +0 -1
- package/dist/test/drive-handlers.d.ts +0 -4
- package/dist/test/drive-handlers.d.ts.map +0 -1
- package/dist/test/drive-handlers.js +0 -39
- package/dist/test/drive-handlers.js.map +0 -1
- package/dist/test/drive-subgraph-permissions.test.d.ts +0 -2
- package/dist/test/drive-subgraph-permissions.test.d.ts.map +0 -1
- package/dist/test/drive-subgraph-permissions.test.js +0 -195
- package/dist/test/drive-subgraph-permissions.test.js.map +0 -1
- package/dist/test/drive.test.d.ts +0 -2
- package/dist/test/drive.test.d.ts.map +0 -1
- package/dist/test/drive.test.js +0 -142
- package/dist/test/drive.test.js.map +0 -1
- package/dist/test/pull-responder-transmitter.test.d.ts +0 -2
- package/dist/test/pull-responder-transmitter.test.d.ts.map +0 -1
- package/dist/test/pull-responder-transmitter.test.js +0 -220
- package/dist/test/pull-responder-transmitter.test.js.map +0 -1
- package/dist/test/push-transmitter.test.d.ts +0 -2
- package/dist/test/push-transmitter.test.d.ts.map +0 -1
- package/dist/test/push-transmitter.test.js +0 -179
- package/dist/test/push-transmitter.test.js.map +0 -1
- package/dist/test/system.test.d.ts +0 -2
- package/dist/test/system.test.d.ts.map +0 -1
- package/dist/test/system.test.js +0 -211
- package/dist/test/system.test.js.map +0 -1
- package/dist/test/three-reactor-gql-sync.test.d.ts +0 -2
- package/dist/test/three-reactor-gql-sync.test.d.ts.map +0 -1
- package/dist/test/three-reactor-gql-sync.test.js +0 -368
- package/dist/test/three-reactor-gql-sync.test.js.map +0 -1
- package/dist/test/two-reactor-gql-sync.test.d.ts +0 -2
- package/dist/test/two-reactor-gql-sync.test.d.ts.map +0 -1
- package/dist/test/two-reactor-gql-sync.test.js +0 -348
- package/dist/test/two-reactor-gql-sync.test.js.map +0 -1
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { getDocumentModelSchemaName } from "../utils/create-schema.js";
|
|
2
1
|
import { BaseSubgraph } from "./base-subgraph.js";
|
|
3
2
|
export function isSubgraphClass(candidate) {
|
|
4
3
|
if (typeof candidate !== "function")
|
|
@@ -39,8 +38,12 @@ export function buildGraphqlOperation(operation) {
|
|
|
39
38
|
};
|
|
40
39
|
}
|
|
41
40
|
export function buildGraphQlDocument(doc) {
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
// Return full state with all scopes (auth, document, global, local)
|
|
42
|
+
// This matches the ReactorSubgraph pattern in adapters.ts
|
|
43
|
+
const state = doc.state;
|
|
44
|
+
const initialState = doc.initialState;
|
|
45
|
+
// For stateJSON, use global state for backward compatibility
|
|
46
|
+
const globalState = "global" in doc.state ? doc.state.global : {};
|
|
44
47
|
return {
|
|
45
48
|
id: doc.header.id,
|
|
46
49
|
name: doc.header.name,
|
|
@@ -49,7 +52,7 @@ export function buildGraphQlDocument(doc) {
|
|
|
49
52
|
createdAtUtcIso: doc.header.createdAtUtcIso,
|
|
50
53
|
lastModifiedAtUtcIso: doc.header.lastModifiedAtUtcIso,
|
|
51
54
|
operations: [],
|
|
52
|
-
stateJSON:
|
|
55
|
+
stateJSON: globalState,
|
|
53
56
|
state,
|
|
54
57
|
initialState,
|
|
55
58
|
};
|
|
@@ -66,35 +69,4 @@ export function buildGraphQlDriveDocument(doc) {
|
|
|
66
69
|
initialState: doc.state.global,
|
|
67
70
|
};
|
|
68
71
|
}
|
|
69
|
-
export const IDocumentGraphql = {
|
|
70
|
-
graphql: "document(id: String!): IDocument",
|
|
71
|
-
Query: {
|
|
72
|
-
document: async (parent, args, ctx) => {
|
|
73
|
-
const doc = await ctx.driveServer.getDocument(args.id);
|
|
74
|
-
ctx.document = doc;
|
|
75
|
-
return buildGraphQlDocument(doc);
|
|
76
|
-
},
|
|
77
|
-
},
|
|
78
|
-
resolvers: {
|
|
79
|
-
IDocument: {
|
|
80
|
-
__resolveType: (obj, ctx) => {
|
|
81
|
-
if (obj.__typename) {
|
|
82
|
-
return obj.__typename;
|
|
83
|
-
}
|
|
84
|
-
const modules = ctx.driveServer.getDocumentModelModules();
|
|
85
|
-
const module = modules.find((module) => module.documentModel.global.id === obj.documentType);
|
|
86
|
-
if (!module)
|
|
87
|
-
return "GqlDocument";
|
|
88
|
-
return getDocumentModelSchemaName(module.documentModel.global);
|
|
89
|
-
},
|
|
90
|
-
operations: (obj, { skip = 0, first = 10 }, ctx) => {
|
|
91
|
-
const documentOperations = ctx.document?.operations;
|
|
92
|
-
const operations = documentOperations && "global" in documentOperations
|
|
93
|
-
? documentOperations.global
|
|
94
|
-
: [];
|
|
95
|
-
return buildGraphqlOperations(operations, skip, first);
|
|
96
|
-
},
|
|
97
|
-
},
|
|
98
|
-
},
|
|
99
|
-
};
|
|
100
72
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/graphql/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/graphql/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"002_add_document_protection.d.ts","sourceRoot":"","sources":["../../../src/migrations/002_add_document_protection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGrC,wBAAsB,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB3D;AAED,wBAAsB,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7D"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { sql } from "kysely";
|
|
2
|
+
export async function up(db) {
|
|
3
|
+
await sql `
|
|
4
|
+
CREATE TABLE IF NOT EXISTS "DocumentProtection" (
|
|
5
|
+
"documentId" VARCHAR(255) PRIMARY KEY,
|
|
6
|
+
"protected" BOOLEAN NOT NULL DEFAULT false,
|
|
7
|
+
"ownerAddress" VARCHAR(255),
|
|
8
|
+
"createdAt" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
9
|
+
"updatedAt" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
10
|
+
)
|
|
11
|
+
`.execute(db);
|
|
12
|
+
await sql `CREATE INDEX IF NOT EXISTS "documentprotection_owneraddress_index" ON "DocumentProtection" ("ownerAddress")`.execute(db);
|
|
13
|
+
await sql `CREATE INDEX IF NOT EXISTS "documentprotection_protected_index" ON "DocumentProtection" ("protected")`.execute(db);
|
|
14
|
+
}
|
|
15
|
+
export async function down(db) {
|
|
16
|
+
await sql `DROP TABLE IF EXISTS "DocumentProtection"`.execute(db);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=002_add_document_protection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"002_add_document_protection.js","sourceRoot":"","sources":["../../../src/migrations/002_add_document_protection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAE7B,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,EAAmB;IAC1C,MAAM,GAAG,CAAA;;;;;;;;GAQR,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAEd,MAAM,GAAG,CAAA,6GAA6G,CAAC,OAAO,CAC5H,EAAE,CACH,CAAC;IACF,MAAM,GAAG,CAAA,uGAAuG,CAAC,OAAO,CACtH,EAAE,CACH,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,EAAmB;IAC5C,MAAM,GAAG,CAAA,2CAA2C,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACnE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/migrations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,MAAM,EAGZ,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/migrations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,MAAM,EAGZ,MAAM,QAAQ,CAAC;AAgBhB;;GAEG;AACH,wBAAsB,aAAa,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBtE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB1E"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Migrator, } from "kysely";
|
|
2
2
|
import * as migration001 from "./001_create_document_permissions.js";
|
|
3
|
+
import * as migration002 from "./002_add_document_protection.js";
|
|
3
4
|
/**
|
|
4
5
|
* Custom migration provider that loads migrations from imported modules
|
|
5
6
|
*/
|
|
@@ -7,6 +8,7 @@ class StaticMigrationProvider {
|
|
|
7
8
|
async getMigrations() {
|
|
8
9
|
return {
|
|
9
10
|
"001_create_document_permissions": migration001,
|
|
11
|
+
"002_add_document_protection": migration002,
|
|
10
12
|
};
|
|
11
13
|
}
|
|
12
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/migrations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,GAIT,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,YAAY,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/migrations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,GAIT,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,YAAY,MAAM,sCAAsC,CAAC;AACrE,OAAO,KAAK,YAAY,MAAM,kCAAkC,CAAC;AAEjE;;GAEG;AACH,MAAM,uBAAuB;IAC3B,KAAK,CAAC,aAAa;QACjB,OAAO;YACL,iCAAiC,EAAE,YAAY;YAC/C,6BAA6B,EAAE,YAAY;SAC5C,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAAmB;IACrD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;QAC5B,EAAE;QACF,QAAQ,EAAE,IAAI,uBAAuB,EAAE;KACxC,CAAC,CAAC;IAEH,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,eAAe,EAAE,CAAC;IAE5D,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAC1B,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,gCAAgC,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC;QACzE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;QAClD,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,qBAAqB,YAAY,EAAE,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EAAmB;IACzD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;QAC5B,EAAE;QACF,QAAQ,EAAE,IAAI,uBAAuB,EAAE;KACxC,CAAC,CAAC;IAEH,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;IAExD,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAC1B,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CACT,cAAc,MAAM,CAAC,aAAa,gCAAgC,CACnE,CAAC;QACJ,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YACrC,OAAO,CAAC,KAAK,CAAC,iCAAiC,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;QACtD,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,oBAAoB,YAAY,EAAE,CAAC,CAAC;IACtD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { DocumentModelModule } from "document-model";
|
|
2
|
+
import type { IDocumentModelLoader } from "@powerhousedao/reactor";
|
|
3
|
+
export interface HttpPackageLoaderOptions {
|
|
4
|
+
registryUrl: string;
|
|
5
|
+
}
|
|
6
|
+
export interface HttpPackageLoaderLogger {
|
|
7
|
+
info: (msg: string) => void;
|
|
8
|
+
error: (msg: string, err: unknown) => void;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Loads document models from an HTTP registry.
|
|
12
|
+
* Uses Node.js module loader hooks to import directly from HTTP URLs.
|
|
13
|
+
*
|
|
14
|
+
* IMPORTANT: Requires https-hooks to be registered before use:
|
|
15
|
+
* import { register } from "node:module";
|
|
16
|
+
* register("@powerhousedao/reactor-api/https-hooks", import.meta.url);
|
|
17
|
+
*/
|
|
18
|
+
export declare class HttpPackageLoader implements IDocumentModelLoader {
|
|
19
|
+
private readonly registryUrl;
|
|
20
|
+
private readonly logger;
|
|
21
|
+
private readonly documentTypeCache;
|
|
22
|
+
private readonly packageModulesCache;
|
|
23
|
+
private onModelLoaded?;
|
|
24
|
+
constructor(options: HttpPackageLoaderOptions);
|
|
25
|
+
/**
|
|
26
|
+
* Set a callback to be notified when a model is dynamically loaded.
|
|
27
|
+
* This is used to trigger subgraph generation for dynamically loaded models.
|
|
28
|
+
*/
|
|
29
|
+
setOnModelLoaded(callback: (model: DocumentModelModule) => void): void;
|
|
30
|
+
/**
|
|
31
|
+
* Clear all caches. Useful for testing or when packages are updated.
|
|
32
|
+
*/
|
|
33
|
+
clearCache(): void;
|
|
34
|
+
/**
|
|
35
|
+
* Load document models from a package in the HTTP registry.
|
|
36
|
+
* Imports directly from HTTP URL using Node.js loader hooks.
|
|
37
|
+
*/
|
|
38
|
+
loadDocumentModels(packageName: string): Promise<DocumentModelModule[]>;
|
|
39
|
+
/**
|
|
40
|
+
* Load document models from multiple packages.
|
|
41
|
+
* Continues loading even if some packages fail.
|
|
42
|
+
*/
|
|
43
|
+
loadPackages(packageNames: string[], logger?: HttpPackageLoaderLogger): Promise<DocumentModelModule[]>;
|
|
44
|
+
/**
|
|
45
|
+
* Load a specific document model by document type.
|
|
46
|
+
* Implements IDocumentModelLoader interface.
|
|
47
|
+
*/
|
|
48
|
+
load(documentType: string): Promise<DocumentModelModule>;
|
|
49
|
+
/**
|
|
50
|
+
* Find the package that contains a specific document type.
|
|
51
|
+
* Queries the registry's /packages/by-document-type endpoint.
|
|
52
|
+
*/
|
|
53
|
+
private findPackageByDocumentType;
|
|
54
|
+
private isValidPackageName;
|
|
55
|
+
/**
|
|
56
|
+
* Get list of all loaded package names.
|
|
57
|
+
*/
|
|
58
|
+
getLoadedPackages(): string[];
|
|
59
|
+
/**
|
|
60
|
+
* Get the document model modules for a specific package from cache.
|
|
61
|
+
*/
|
|
62
|
+
getPackageModules(packageName: string): DocumentModelModule[] | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* Remove a package from all caches.
|
|
65
|
+
*/
|
|
66
|
+
removeFromCache(packageName: string): void;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=http-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-loader.d.ts","sourceRoot":"","sources":["../../../src/packages/http-loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5C;AAKD;;;;;;;GAOG;AACH,qBAAa,iBAAkB,YAAW,oBAAoB;IAC5D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+C;IAGtE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA6B;IAG/D,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAGhC;IAGJ,OAAO,CAAC,aAAa,CAAC,CAAuC;gBAEjD,OAAO,EAAE,wBAAwB;IAM7C;;;OAGG;IACH,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,GAAG,IAAI;IAItE;;OAEG;IACH,UAAU,IAAI,IAAI;IAKlB;;;OAGG;IACG,kBAAkB,CACtB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAiCjC;;;OAGG;IACG,YAAY,CAChB,YAAY,EAAE,MAAM,EAAE,EACtB,MAAM,CAAC,EAAE,uBAAuB,GAC/B,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAwBjC;;;OAGG;IACG,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAwC9D;;;OAGG;YACW,yBAAyB;IAqCvC,OAAO,CAAC,kBAAkB;IAM1B;;OAEG;IACH,iBAAiB,IAAI,MAAM,EAAE;IAI7B;;OAEG;IACH,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,mBAAmB,EAAE,GAAG,SAAS;IAIzE;;OAEG;IACH,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;CAS3C"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { childLogger } from "document-drive";
|
|
2
|
+
/**
|
|
3
|
+
* Loads document models from an HTTP registry.
|
|
4
|
+
* Uses Node.js module loader hooks to import directly from HTTP URLs.
|
|
5
|
+
*
|
|
6
|
+
* IMPORTANT: Requires https-hooks to be registered before use:
|
|
7
|
+
* import { register } from "node:module";
|
|
8
|
+
* register("@powerhousedao/reactor-api/https-hooks", import.meta.url);
|
|
9
|
+
*/
|
|
10
|
+
export class HttpPackageLoader {
|
|
11
|
+
registryUrl;
|
|
12
|
+
logger = childLogger(["reactor-api", "http-loader"]);
|
|
13
|
+
// Cache: documentType -> packageName
|
|
14
|
+
documentTypeCache = new Map();
|
|
15
|
+
// Cache: packageName -> DocumentModelModule[]
|
|
16
|
+
packageModulesCache = new Map();
|
|
17
|
+
// Callback to notify when a model is dynamically loaded
|
|
18
|
+
onModelLoaded;
|
|
19
|
+
constructor(options) {
|
|
20
|
+
this.registryUrl = options.registryUrl.endsWith("/")
|
|
21
|
+
? options.registryUrl
|
|
22
|
+
: `${options.registryUrl}/`;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Set a callback to be notified when a model is dynamically loaded.
|
|
26
|
+
* This is used to trigger subgraph generation for dynamically loaded models.
|
|
27
|
+
*/
|
|
28
|
+
setOnModelLoaded(callback) {
|
|
29
|
+
this.onModelLoaded = callback;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Clear all caches. Useful for testing or when packages are updated.
|
|
33
|
+
*/
|
|
34
|
+
clearCache() {
|
|
35
|
+
this.documentTypeCache.clear();
|
|
36
|
+
this.packageModulesCache.clear();
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Load document models from a package in the HTTP registry.
|
|
40
|
+
* Imports directly from HTTP URL using Node.js loader hooks.
|
|
41
|
+
*/
|
|
42
|
+
async loadDocumentModels(packageName) {
|
|
43
|
+
if (!this.isValidPackageName(packageName)) {
|
|
44
|
+
throw new Error(`Invalid package name: ${packageName}`);
|
|
45
|
+
}
|
|
46
|
+
const url = `${this.registryUrl}${packageName}/document-models.js`;
|
|
47
|
+
try {
|
|
48
|
+
this.logger.verbose(`Importing document-models from: ${url}`);
|
|
49
|
+
// Direct import from HTTP URL - hooks handle the fetch
|
|
50
|
+
const module = (await import(url));
|
|
51
|
+
const models = Object.values(module).filter((m) => m !== null &&
|
|
52
|
+
typeof m === "object" &&
|
|
53
|
+
"documentModel" in m &&
|
|
54
|
+
m.documentModel !== null);
|
|
55
|
+
this.logger.verbose(`Loaded ${models.length} document models from ${packageName}`);
|
|
56
|
+
return models;
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
60
|
+
throw new Error(`Failed to load document models from ${packageName}: ${message}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Load document models from multiple packages.
|
|
65
|
+
* Continues loading even if some packages fail.
|
|
66
|
+
*/
|
|
67
|
+
async loadPackages(packageNames, logger) {
|
|
68
|
+
const allModels = [];
|
|
69
|
+
for (const pkgName of packageNames) {
|
|
70
|
+
const trimmedName = pkgName.trim();
|
|
71
|
+
if (!trimmedName)
|
|
72
|
+
continue;
|
|
73
|
+
try {
|
|
74
|
+
const models = await this.loadDocumentModels(trimmedName);
|
|
75
|
+
allModels.push(...models);
|
|
76
|
+
const logMsg = `Loaded ${models.length} document models from ${trimmedName}`;
|
|
77
|
+
logger?.info(logMsg);
|
|
78
|
+
this.logger.info(logMsg);
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
const errMsg = `Failed to load package ${trimmedName}`;
|
|
82
|
+
logger?.error(errMsg, error);
|
|
83
|
+
this.logger.error(errMsg, error);
|
|
84
|
+
// Continue with other packages - don't fail startup
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return allModels;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Load a specific document model by document type.
|
|
91
|
+
* Implements IDocumentModelLoader interface.
|
|
92
|
+
*/
|
|
93
|
+
async load(documentType) {
|
|
94
|
+
// Step 1: Find which package contains this document type
|
|
95
|
+
const packageName = await this.findPackageByDocumentType(documentType);
|
|
96
|
+
// Step 2: Load all document models from that package (uses cache if available)
|
|
97
|
+
let models;
|
|
98
|
+
const cachedModels = this.packageModulesCache.get(packageName);
|
|
99
|
+
if (cachedModels) {
|
|
100
|
+
models = cachedModels;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
models = await this.loadDocumentModels(packageName);
|
|
104
|
+
this.packageModulesCache.set(packageName, models);
|
|
105
|
+
}
|
|
106
|
+
// Step 3: Find the specific model matching the document type
|
|
107
|
+
const model = models.find((m) => m.documentModel.global.id === documentType);
|
|
108
|
+
if (!model) {
|
|
109
|
+
const availableTypes = models.map((m) => m.documentModel.global.id);
|
|
110
|
+
throw new Error(`Document model ${documentType} not found in package ${packageName}. ` +
|
|
111
|
+
`Available types: ${availableTypes.join(", ")}`);
|
|
112
|
+
}
|
|
113
|
+
this.logger.info(`Loaded document model "${documentType}" from package "${packageName}"`);
|
|
114
|
+
// Notify listener about the dynamically loaded model
|
|
115
|
+
if (this.onModelLoaded) {
|
|
116
|
+
this.onModelLoaded(model);
|
|
117
|
+
}
|
|
118
|
+
return model;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Find the package that contains a specific document type.
|
|
122
|
+
* Queries the registry's /packages/by-document-type endpoint.
|
|
123
|
+
*/
|
|
124
|
+
async findPackageByDocumentType(documentType) {
|
|
125
|
+
// Check cache first
|
|
126
|
+
const cached = this.documentTypeCache.get(documentType);
|
|
127
|
+
if (cached) {
|
|
128
|
+
return cached;
|
|
129
|
+
}
|
|
130
|
+
const encodedType = encodeURIComponent(documentType);
|
|
131
|
+
const url = `${this.registryUrl}packages/by-document-type?type=${encodedType}`;
|
|
132
|
+
const response = await fetch(url);
|
|
133
|
+
if (!response.ok) {
|
|
134
|
+
throw new Error(`Registry query failed for document type ${documentType}: ${response.status} ${response.statusText}`);
|
|
135
|
+
}
|
|
136
|
+
const packageNames = (await response.json());
|
|
137
|
+
if (packageNames.length === 0) {
|
|
138
|
+
throw new Error(`No package found containing document type: ${documentType}`);
|
|
139
|
+
}
|
|
140
|
+
// Return first match (sorted alphabetically for determinism)
|
|
141
|
+
const packageName = packageNames.sort((a, b) => a.localeCompare(b))[0];
|
|
142
|
+
// Cache the result
|
|
143
|
+
this.documentTypeCache.set(documentType, packageName);
|
|
144
|
+
return packageName;
|
|
145
|
+
}
|
|
146
|
+
isValidPackageName(name) {
|
|
147
|
+
// npm package name pattern: optional scope + package name
|
|
148
|
+
const pattern = /^(@[a-z0-9][-a-z0-9._]*\/)?[a-z0-9][-a-z0-9._]*$/i;
|
|
149
|
+
return pattern.test(name) && !name.includes("..") && name.length <= 214;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Get list of all loaded package names.
|
|
153
|
+
*/
|
|
154
|
+
getLoadedPackages() {
|
|
155
|
+
return Array.from(this.packageModulesCache.keys());
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Get the document model modules for a specific package from cache.
|
|
159
|
+
*/
|
|
160
|
+
getPackageModules(packageName) {
|
|
161
|
+
return this.packageModulesCache.get(packageName);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Remove a package from all caches.
|
|
165
|
+
*/
|
|
166
|
+
removeFromCache(packageName) {
|
|
167
|
+
this.packageModulesCache.delete(packageName);
|
|
168
|
+
// Remove document type entries that point to this package
|
|
169
|
+
for (const [docType, pkg] of this.documentTypeCache) {
|
|
170
|
+
if (pkg === packageName) {
|
|
171
|
+
this.documentTypeCache.delete(docType);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=http-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-loader.js","sourceRoot":"","sources":["../../../src/packages/http-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node.js module loader hooks that enable importing from HTTP/HTTPS URLs.
|
|
3
|
+
* See: https://nodejs.org/docs/latest-v24.x/api/module.html#import-from-https
|
|
4
|
+
*/
|
|
5
|
+
type LoadContext = {
|
|
6
|
+
format?: string;
|
|
7
|
+
};
|
|
8
|
+
type LoadResult = {
|
|
9
|
+
format: string;
|
|
10
|
+
shortCircuit?: boolean;
|
|
11
|
+
source: string;
|
|
12
|
+
};
|
|
13
|
+
type NextLoad = (url: string, context: LoadContext) => Promise<LoadResult>;
|
|
14
|
+
/**
|
|
15
|
+
* Load hook: fetches module source from HTTP/HTTPS URLs.
|
|
16
|
+
*/
|
|
17
|
+
export declare function load(url: string, context: LoadContext, nextLoad: NextLoad): Promise<LoadResult>;
|
|
18
|
+
/**
|
|
19
|
+
* Path to this hooks file for use with node:module register()
|
|
20
|
+
*/
|
|
21
|
+
export declare const httpsHooksPath: string;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=https-hooks.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"https-hooks.d.mts","sourceRoot":"","sources":["../../../src/packages/https-hooks.mts"],"names":[],"mappings":"AAGA;;;GAGG;AAEH,KAAK,WAAW,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACvC,KAAK,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAC7E,KAAK,QAAQ,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3E;;GAEG;AACH,wBAAsB,IAAI,CACxB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,UAAU,CAAC,CAuBrB;AAqCD;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAwB,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { get } from "node:https";
|
|
2
|
+
import { get as httpGet } from "node:http";
|
|
3
|
+
/**
|
|
4
|
+
* Load hook: fetches module source from HTTP/HTTPS URLs.
|
|
5
|
+
*/
|
|
6
|
+
export async function load(url, context, nextLoad) {
|
|
7
|
+
// Handle HTTPS URLs
|
|
8
|
+
if (url.startsWith("https://")) {
|
|
9
|
+
const source = await fetchModule(url, get);
|
|
10
|
+
return {
|
|
11
|
+
format: "module",
|
|
12
|
+
shortCircuit: true,
|
|
13
|
+
source,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
// Handle HTTP URLs (for local development)
|
|
17
|
+
if (url.startsWith("http://")) {
|
|
18
|
+
const source = await fetchModule(url, httpGet);
|
|
19
|
+
return {
|
|
20
|
+
format: "module",
|
|
21
|
+
shortCircuit: true,
|
|
22
|
+
source,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
// Let Node.js handle all other URLs
|
|
26
|
+
return nextLoad(url, context);
|
|
27
|
+
}
|
|
28
|
+
function fetchModule(url, getter) {
|
|
29
|
+
return new Promise((resolve, reject) => {
|
|
30
|
+
getter(url, (res) => {
|
|
31
|
+
// Handle redirects
|
|
32
|
+
if (res.statusCode &&
|
|
33
|
+
res.statusCode >= 300 &&
|
|
34
|
+
res.statusCode < 400 &&
|
|
35
|
+
res.headers.location) {
|
|
36
|
+
const redirectUrl = res.headers.location;
|
|
37
|
+
const redirectGetter = redirectUrl.startsWith("https://")
|
|
38
|
+
? get
|
|
39
|
+
: httpGet;
|
|
40
|
+
fetchModule(redirectUrl, redirectGetter).then(resolve).catch(reject);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (res.statusCode && res.statusCode >= 400) {
|
|
44
|
+
reject(new Error(`Failed to fetch ${url}: ${res.statusCode}`));
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
let data = "";
|
|
48
|
+
res.setEncoding("utf8");
|
|
49
|
+
res.on("data", (chunk) => (data += chunk));
|
|
50
|
+
res.on("end", () => resolve(data));
|
|
51
|
+
res.on("error", reject);
|
|
52
|
+
}).on("error", reject);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Path to this hooks file for use with node:module register()
|
|
57
|
+
*/
|
|
58
|
+
export const httpsHooksPath = import.meta.url;
|
|
59
|
+
//# sourceMappingURL=https-hooks.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"https-hooks.mjs","sourceRoot":"","sources":["../../../src/packages/https-hooks.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,GAAG,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAW3C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,GAAW,EACX,OAAoB,EACpB,QAAkB;IAElB,oBAAoB;IACpB,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC3C,OAAO;YACL,MAAM,EAAE,QAAQ;YAChB,YAAY,EAAE,IAAI;YAClB,MAAM;SACP,CAAC;IACJ,CAAC;IAED,2CAA2C;IAC3C,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO;YACL,MAAM,EAAE,QAAQ;YAChB,YAAY,EAAE,IAAI;YAClB,MAAM;SACP,CAAC;IACJ,CAAC;IAED,oCAAoC;IACpC,OAAO,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,WAAW,CAClB,GAAW,EACX,MAAmC;IAEnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE;YAClB,mBAAmB;YACnB,IACE,GAAG,CAAC,UAAU;gBACd,GAAG,CAAC,UAAU,IAAI,GAAG;gBACrB,GAAG,CAAC,UAAU,GAAG,GAAG;gBACpB,GAAG,CAAC,OAAO,CAAC,QAAQ,EACpB,CAAC;gBACD,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;gBACzC,MAAM,cAAc,GAAG,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC;oBACvD,CAAC,CAAC,GAAG;oBACL,CAAC,CAAC,OAAO,CAAC;gBACZ,WAAW,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACrE,OAAO;YACT,CAAC;YAED,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;gBAC5C,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,GAAG,KAAK,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;gBAC/D,OAAO;YACT,CAAC;YAED,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACxB,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC;YAC3C,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACnC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAW,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import type { SubgraphClass } from "@powerhousedao/reactor-api";
|
|
2
|
-
import type {
|
|
2
|
+
import type { IProcessorHostModuleLegacy, ProcessorFactoryLegacy } from "document-drive";
|
|
3
3
|
import type { DocumentModelModule } from "document-model";
|
|
4
|
-
import type { IPackageLoader } from "../types.js";
|
|
4
|
+
import type { IPackageLoader, IPackageLoaderOptions } from "../types.js";
|
|
5
5
|
/**
|
|
6
6
|
* This class is used to load packages using the import keyword.
|
|
7
7
|
*/
|
|
8
8
|
export declare class ImportPackageLoader implements IPackageLoader {
|
|
9
9
|
private readonly logger;
|
|
10
|
+
private readonly legacyReactor;
|
|
11
|
+
constructor(options?: IPackageLoaderOptions);
|
|
10
12
|
loadDocumentModels(identifier: string): Promise<DocumentModelModule[]>;
|
|
11
13
|
loadSubgraphs(identifier: string): Promise<SubgraphClass[]>;
|
|
12
|
-
loadProcessors(identifier: string): Promise<((module:
|
|
14
|
+
loadProcessors(identifier: string): Promise<((module: IProcessorHostModuleLegacy) => ProcessorFactoryLegacy) | null>;
|
|
13
15
|
}
|
|
14
16
|
//# sourceMappingURL=import-loader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-loader.d.ts","sourceRoot":"","sources":["../../../src/packages/import-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"import-loader.d.ts","sourceRoot":"","sources":["../../../src/packages/import-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EACV,0BAA0B,EAC1B,sBAAsB,EACvB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAOzE;;GAEG;AACH,qBAAa,mBAAoB,YAAW,cAAc;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiD;IACxE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;gBAE5B,OAAO,CAAC,EAAE,qBAAqB;IAIrC,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAiBtE,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAoB3D,cAAc,CAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CACR,CAAC,CAAC,MAAM,EAAE,0BAA0B,KAAK,sBAAsB,CAAC,GAAG,IAAI,CACxE;CAiCF"}
|
|
@@ -5,6 +5,10 @@ import { loadDocumentModels as loadDocumentModelsUtil, loadProcessors as loadPro
|
|
|
5
5
|
*/
|
|
6
6
|
export class ImportPackageLoader {
|
|
7
7
|
logger = childLogger(["reactor-api", "import-loader"]);
|
|
8
|
+
legacyReactor;
|
|
9
|
+
constructor(options) {
|
|
10
|
+
this.legacyReactor = options?.legacyReactor ?? false;
|
|
11
|
+
}
|
|
8
12
|
async loadDocumentModels(identifier) {
|
|
9
13
|
this.logger.verbose("Loading document models from package:", identifier);
|
|
10
14
|
const pkgModule = await loadDocumentModelsUtil(identifier);
|
|
@@ -34,18 +38,23 @@ export class ImportPackageLoader {
|
|
|
34
38
|
async loadProcessors(identifier) {
|
|
35
39
|
this.logger.verbose("Loading processors from package:", identifier);
|
|
36
40
|
const pkgModule = await loadProcessorsUtil(identifier);
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
41
|
+
// Choose factory based on constructor option
|
|
42
|
+
const factoryName = this.legacyReactor
|
|
43
|
+
? "processorFactoryLegacy"
|
|
44
|
+
: "processorFactory";
|
|
45
|
+
const factory = pkgModule?.[factoryName];
|
|
46
|
+
if (factory && typeof factory === "function") {
|
|
47
|
+
this.logger.verbose(` ➜ Loaded Processor Factory (${factoryName}) from: ${identifier}`);
|
|
48
|
+
return factory;
|
|
45
49
|
}
|
|
46
|
-
|
|
47
|
-
|
|
50
|
+
// Fallback: if legacy requested but not found, try default (backwards compat)
|
|
51
|
+
if (this.legacyReactor &&
|
|
52
|
+
pkgModule?.processorFactory &&
|
|
53
|
+
typeof pkgModule.processorFactory === "function") {
|
|
54
|
+
this.logger.verbose(` ➜ Loaded Processor Factory (fallback to processorFactory) from: ${identifier}`);
|
|
55
|
+
return pkgModule.processorFactory;
|
|
48
56
|
}
|
|
57
|
+
this.logger.verbose(` ➜ No Processor Factory found: ${identifier}`);
|
|
49
58
|
return null;
|
|
50
59
|
}
|
|
51
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-loader.js","sourceRoot":"","sources":["../../../src/packages/import-loader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"import-loader.js","sourceRoot":"","sources":["../../../src/packages/import-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SubgraphClass } from "@powerhousedao/reactor-api";
|
|
2
|
-
import type {
|
|
2
|
+
import type { IProcessorHostModuleLegacy, ProcessorFactoryLegacy } from "document-drive";
|
|
3
3
|
import type { DocumentModelModule } from "document-model";
|
|
4
4
|
import type { IPackageLoader, IPackageManager, IPackageManagerOptions, PackageManagerResult } from "./types.js";
|
|
5
5
|
export declare function getUniqueDocumentModels(...documentModels: DocumentModelModule<any>[][]): DocumentModelModule[];
|
|
@@ -29,6 +29,6 @@ export declare class PackageManager implements IPackageManager {
|
|
|
29
29
|
private updateProcessorsMap;
|
|
30
30
|
onDocumentModelsChange(handler: (documentModels: Record<string, DocumentModelModule[]>) => void): void;
|
|
31
31
|
onSubgraphsChange(handler: (subgraphs: Map<string, SubgraphClass[]>) => void): void;
|
|
32
|
-
onProcessorsChange(handler: (processors: Map<string, ((module:
|
|
32
|
+
onProcessorsChange(handler: (processors: Map<string, ((module: IProcessorHostModuleLegacy) => ProcessorFactoryLegacy)[]>) => void): void;
|
|
33
33
|
}
|
|
34
34
|
//# sourceMappingURL=package-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../../../src/packages/package-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../../../src/packages/package-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EACV,0BAA0B,EAC1B,sBAAsB,EACvB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAK1D,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,sBAAsB,EAEtB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,uBAAuB,CACrC,GAAG,cAAc,EAAE,mBAAmB,CAAC,GAAG,CAAC,EAAE,EAAE,GAC9C,mBAAmB,EAAE,CAUvB;AAED,qBAAa,cAAe,YAAW,eAAe;IAyBlD,SAAS,CAAC,OAAO,EAAE,sBAAsB;IAxB3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmD;IAC1E,OAAO,CAAC,OAAO,CAA+B;IAE9C,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,YAAY,CAGhB;IACJ,OAAO,CAAC,aAAa,CAA0B;IAC/C,OAAO,CAAC,wBAAwB,CAAiC;IACjE,OAAO,CAAC,YAAY,CASf;gBAGH,OAAO,EAAE,cAAc,EAAE,EACf,OAAO,EAAE,sBAAsB;IAM9B,IAAI,IAAI,OAAO,CAAC,oBAAoB,CAAC;YAQpC,YAAY;YA4BZ,kBAAkB;YA4ClB,aAAa;YA+Bb,cAAc;YA4Cd,8BAA8B;IAQ5C,OAAO,CAAC,iBAAiB;IA0BzB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,6BAA6B;IAKrC,OAAO,CAAC,qBAAqB;IAgB7B,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,mBAAmB;IAkB3B,sBAAsB,CACpB,OAAO,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,KAAK,IAAI,GACvE,IAAI;IAIP,iBAAiB,CACf,OAAO,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,KAAK,IAAI,GACzD,IAAI;IAIP,kBAAkB,CAChB,OAAO,EAAE,CACP,UAAU,EAAE,GAAG,CACb,MAAM,EACN,CAAC,CAAC,MAAM,EAAE,0BAA0B,KAAK,sBAAsB,CAAC,EAAE,CACnE,KACE,IAAI,GACR,IAAI;CAGR"}
|