@powerhousedao/switchboard 2.3.0 → 2.4.1-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/src/index.js +11 -21
- package/dist/src/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/dist/src/utils/package-manager.d.ts +0 -33
- package/dist/src/utils/package-manager.d.ts.map +0 -1
- package/dist/src/utils/package-manager.js +0 -145
- package/dist/src/utils/package-manager.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@powerhousedao/switchboard",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.4.1-dev.0",
|
|
5
5
|
"main": "dist/src/index.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"switchboard": "dist/src/index.js"
|
|
@@ -22,9 +22,9 @@
|
|
|
22
22
|
"graphql": "^16.10.0",
|
|
23
23
|
"redis": "^4.7.0",
|
|
24
24
|
"@powerhousedao/config": "1.27.0-dev.9",
|
|
25
|
-
"@powerhousedao/reactor-api": "1.29.23-dev.2",
|
|
26
25
|
"document-model": "2.28.1-dev.9",
|
|
27
26
|
"@powerhousedao/scalars": "1.33.1-dev.7",
|
|
27
|
+
"@powerhousedao/reactor-api": "1.29.23-dev.4",
|
|
28
28
|
"document-drive": "1.29.11-dev.5"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
export declare const installPackages: (packages: string[]) => Promise<void>;
|
|
2
|
-
export declare const readManifest: () => string;
|
|
3
|
-
import { type Subgraph } from "@powerhousedao/reactor-api";
|
|
4
|
-
import { type DocumentModelModule } from "document-model";
|
|
5
|
-
interface IPackagesManager {
|
|
6
|
-
onDocumentModelsChange(handler: (documentModels: DocumentModelModule[]) => void): void;
|
|
7
|
-
}
|
|
8
|
-
type IPackagesManagerOptions = {
|
|
9
|
-
packages: string[];
|
|
10
|
-
};
|
|
11
|
-
export declare function loadDependency(packageName: string, subPath: string): Promise<unknown>;
|
|
12
|
-
export declare class PackagesManager implements IPackagesManager {
|
|
13
|
-
protected options: IPackagesManagerOptions;
|
|
14
|
-
protected onError?: ((e: unknown) => void) | undefined;
|
|
15
|
-
private docModelsMap;
|
|
16
|
-
private subgraphsMap;
|
|
17
|
-
private configWatcher;
|
|
18
|
-
private eventEmitter;
|
|
19
|
-
constructor(options: IPackagesManagerOptions, onError?: ((e: unknown) => void) | undefined);
|
|
20
|
-
init(): Promise<{
|
|
21
|
-
documentModels: DocumentModelModule[];
|
|
22
|
-
subgraphs: (typeof Subgraph)[];
|
|
23
|
-
}>;
|
|
24
|
-
private loadPackages;
|
|
25
|
-
private loadFromConfigFile;
|
|
26
|
-
private initConfigFile;
|
|
27
|
-
private updatePackagesMap;
|
|
28
|
-
private updateSubgraphsMap;
|
|
29
|
-
onDocumentModelsChange(handler: (documentModels: DocumentModelModule[]) => void): void;
|
|
30
|
-
onSubgraphsChange(handler: (subgraphs: (typeof Subgraph)[]) => void): void;
|
|
31
|
-
}
|
|
32
|
-
export {};
|
|
33
|
-
//# sourceMappingURL=package-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../../../src/utils/package-manager.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,eAAe,GAAU,UAAU,MAAM,EAAE,kBAIvD,CAAC;AAEF,eAAO,MAAM,YAAY,cAGxB,CAAC;AAGF,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAI1D,UAAU,gBAAgB;IACxB,sBAAsB,CACpB,OAAO,EAAE,CAAC,cAAc,EAAE,mBAAmB,EAAE,KAAK,IAAI,GACvD,IAAI,CAAC;CACT;AAED,KAAK,uBAAuB,GAAG;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAEtD,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,oBAGxE;AA2ED,qBAAa,eAAgB,YAAW,gBAAgB;IAUpD,SAAS,CAAC,OAAO,EAAE,uBAAuB;IAC1C,SAAS,CAAC,OAAO,CAAC,GAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI;IAV1C,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,YAAY,CAA0C;IAC9D,OAAO,CAAC,aAAa,CAA0B;IAC/C,OAAO,CAAC,YAAY,CAGf;gBAGO,OAAO,EAAE,uBAAuB,EAChC,OAAO,CAAC,GAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,aAAA;IAK7B,IAAI;;;;YAIH,YAAY;IAe1B,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,kBAAkB;IAa1B,sBAAsB,CACpB,OAAO,EAAE,CAAC,cAAc,EAAE,mBAAmB,EAAE,KAAK,IAAI,GACvD,IAAI;IAGP,iBAAiB,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,QAAQ,CAAC,EAAE,KAAK,IAAI,GAAG,IAAI;CAG3E"}
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
import { execSync } from "node:child_process";
|
|
2
|
-
export const installPackages = async (packages) => {
|
|
3
|
-
for (const packageName of packages) {
|
|
4
|
-
execSync(`ph install ${packageName}`);
|
|
5
|
-
}
|
|
6
|
-
};
|
|
7
|
-
export const readManifest = () => {
|
|
8
|
-
const manifest = execSync(`ph manifest`).toString();
|
|
9
|
-
return manifest;
|
|
10
|
-
};
|
|
11
|
-
import { getConfig } from "@powerhousedao/config/utils";
|
|
12
|
-
import EventEmitter from "node:events";
|
|
13
|
-
import { watchFile } from "node:fs";
|
|
14
|
-
export async function loadDependency(packageName, subPath) {
|
|
15
|
-
const module = (await import(`${packageName}/${subPath}`));
|
|
16
|
-
return module;
|
|
17
|
-
}
|
|
18
|
-
async function loadPackagesDocumentModels(packages) {
|
|
19
|
-
const loadedPackages = new Map();
|
|
20
|
-
for (const pkg of packages) {
|
|
21
|
-
try {
|
|
22
|
-
console.log("> Loading package:", pkg);
|
|
23
|
-
const pkgModule = (await loadDependency(pkg, "document-models"));
|
|
24
|
-
if (pkgModule) {
|
|
25
|
-
console.log(` ➜ Loaded Document Models from: ${pkg}`);
|
|
26
|
-
loadedPackages.set(pkg, Object.values(pkgModule));
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
console.warn(` ➜ No Document Models found: ${pkg}`);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
catch (e) {
|
|
33
|
-
console.error("Error loading Document Models from", pkg, e);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
return loadedPackages;
|
|
37
|
-
}
|
|
38
|
-
async function loadPackagesSubgraphs(packages) {
|
|
39
|
-
const loadedPackages = new Map();
|
|
40
|
-
for (const pkg of packages) {
|
|
41
|
-
const pkgModule = (await loadDependency(pkg, "subgraphs"));
|
|
42
|
-
if (pkgModule) {
|
|
43
|
-
console.log(` ➜ Loaded Subgraphs from: ${pkg}`);
|
|
44
|
-
loadedPackages.set(pkg, pkgModule);
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
console.warn(` ➜ No Subgraphs found: ${pkg}`);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return loadedPackages;
|
|
51
|
-
}
|
|
52
|
-
function getUniqueDocumentModels(...documentModels) {
|
|
53
|
-
const uniqueModels = new Map();
|
|
54
|
-
for (const models of documentModels) {
|
|
55
|
-
for (const model of models) {
|
|
56
|
-
uniqueModels.set(model.documentModel.id, model);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
return Array.from(uniqueModels.values());
|
|
60
|
-
}
|
|
61
|
-
function getUniqueSubgraphs(subgraphs) {
|
|
62
|
-
const uniqueSubgraphs = new Map();
|
|
63
|
-
for (const subgraphss of subgraphs) {
|
|
64
|
-
const keys = Object.keys(subgraphss);
|
|
65
|
-
for (const key of keys) {
|
|
66
|
-
uniqueSubgraphs.set(key, subgraphss[key][key]);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
return Array.from(uniqueSubgraphs.values());
|
|
70
|
-
}
|
|
71
|
-
export class PackagesManager {
|
|
72
|
-
options;
|
|
73
|
-
onError;
|
|
74
|
-
docModelsMap = new Map();
|
|
75
|
-
subgraphsMap = new Map();
|
|
76
|
-
configWatcher;
|
|
77
|
-
eventEmitter = new EventEmitter();
|
|
78
|
-
constructor(options, onError) {
|
|
79
|
-
this.options = options;
|
|
80
|
-
this.onError = onError;
|
|
81
|
-
this.eventEmitter.setMaxListeners(0);
|
|
82
|
-
}
|
|
83
|
-
async init() {
|
|
84
|
-
return await this.loadPackages(this.options.packages);
|
|
85
|
-
}
|
|
86
|
-
async loadPackages(packages) {
|
|
87
|
-
// install packages
|
|
88
|
-
const packagesMap = await loadPackagesDocumentModels(packages);
|
|
89
|
-
const subgraphsMap = await loadPackagesSubgraphs(packages);
|
|
90
|
-
this.updatePackagesMap(packagesMap);
|
|
91
|
-
this.updateSubgraphsMap(subgraphsMap);
|
|
92
|
-
return {
|
|
93
|
-
documentModels: getUniqueDocumentModels(...Array.from(packagesMap.values())),
|
|
94
|
-
subgraphs: getUniqueSubgraphs(Array.from(subgraphsMap.values())),
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
loadFromConfigFile(configFile) {
|
|
98
|
-
const config = getConfig(configFile);
|
|
99
|
-
const packages = config.packages;
|
|
100
|
-
return this.loadPackages(packages?.map((pkg) => pkg.packageName) ?? []).catch(this.onError);
|
|
101
|
-
}
|
|
102
|
-
initConfigFile(configFile) {
|
|
103
|
-
const result = this.loadFromConfigFile(configFile);
|
|
104
|
-
if (!this.configWatcher) {
|
|
105
|
-
this.configWatcher = watchFile(configFile, { interval: 100 }, (curr, prev) => {
|
|
106
|
-
if (curr.mtime === prev.mtime) {
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
void this.loadFromConfigFile(configFile).catch(this.onError);
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
return result;
|
|
113
|
-
}
|
|
114
|
-
updatePackagesMap(packagesMap) {
|
|
115
|
-
const oldPackages = Array.from(this.docModelsMap.keys());
|
|
116
|
-
const newPackages = Array.from(packagesMap.keys());
|
|
117
|
-
oldPackages
|
|
118
|
-
.filter((pkg) => !newPackages.includes(pkg))
|
|
119
|
-
.forEach((pkg) => {
|
|
120
|
-
console.log("> Removed package:", pkg);
|
|
121
|
-
});
|
|
122
|
-
this.docModelsMap = packagesMap;
|
|
123
|
-
const documentModels = getUniqueDocumentModels(...Array.from(packagesMap.values()));
|
|
124
|
-
this.eventEmitter.emit("documentModelsChange", documentModels);
|
|
125
|
-
}
|
|
126
|
-
updateSubgraphsMap(subgraphsMap) {
|
|
127
|
-
const oldPackages = Array.from(this.subgraphsMap.keys());
|
|
128
|
-
const newPackages = Array.from(subgraphsMap.keys());
|
|
129
|
-
oldPackages
|
|
130
|
-
.filter((pkg) => !newPackages.includes(pkg))
|
|
131
|
-
.forEach((pkg) => {
|
|
132
|
-
console.log("> Removed Subgraphs from:", pkg);
|
|
133
|
-
});
|
|
134
|
-
this.subgraphsMap = subgraphsMap;
|
|
135
|
-
const subgraphs = getUniqueSubgraphs(Array.from(subgraphsMap.values()));
|
|
136
|
-
this.eventEmitter.emit("subgraphsChange", subgraphs);
|
|
137
|
-
}
|
|
138
|
-
onDocumentModelsChange(handler) {
|
|
139
|
-
this.eventEmitter.on("documentModelsChange", handler);
|
|
140
|
-
}
|
|
141
|
-
onSubgraphsChange(handler) {
|
|
142
|
-
this.eventEmitter.on("subgraphsChange", handler);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
//# sourceMappingURL=package-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../../../src/utils/package-manager.ts"],"names":[],"mappings":"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"}
|