@rsdoctor/sdk 0.0.2-beta.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/LICENSE +21 -0
- package/README.md +15 -0
- package/dist/cjs/index.js +22 -0
- package/dist/cjs/sdk/index.js +24 -0
- package/dist/cjs/sdk/multiple/controller.js +72 -0
- package/dist/cjs/sdk/multiple/index.js +24 -0
- package/dist/cjs/sdk/multiple/server.js +41 -0
- package/dist/cjs/sdk/multiple/slave.js +98 -0
- package/dist/cjs/sdk/sdk/core.js +185 -0
- package/dist/cjs/sdk/sdk/index.js +31 -0
- package/dist/cjs/sdk/sdk/types.js +16 -0
- package/dist/cjs/sdk/sdk/webpack.js +373 -0
- package/dist/cjs/sdk/server/apis/alerts.js +52 -0
- package/dist/cjs/sdk/server/apis/base.js +46 -0
- package/dist/cjs/sdk/server/apis/bundle-diff.js +79 -0
- package/dist/cjs/sdk/server/apis/data.js +66 -0
- package/dist/cjs/sdk/server/apis/fs.js +50 -0
- package/dist/cjs/sdk/server/apis/graph.js +117 -0
- package/dist/cjs/sdk/server/apis/index.js +38 -0
- package/dist/cjs/sdk/server/apis/loader.js +127 -0
- package/dist/cjs/sdk/server/apis/plugin.js +58 -0
- package/dist/cjs/sdk/server/apis/project.js +82 -0
- package/dist/cjs/sdk/server/apis/renderer.js +74 -0
- package/dist/cjs/sdk/server/apis/resolver.js +57 -0
- package/dist/cjs/sdk/server/fakeServer.js +38 -0
- package/dist/cjs/sdk/server/index.js +184 -0
- package/dist/cjs/sdk/server/router.js +116 -0
- package/dist/cjs/sdk/server/socket/api.js +49 -0
- package/dist/cjs/sdk/server/socket/index.js +104 -0
- package/dist/cjs/sdk/server/utils.js +38 -0
- package/dist/cjs/sdk/utils/constant.js +41 -0
- package/dist/cjs/sdk/utils/index.js +24 -0
- package/dist/cjs/sdk/utils/upload.js +33 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/sdk/index.js +2 -0
- package/dist/esm/sdk/multiple/controller.js +48 -0
- package/dist/esm/sdk/multiple/index.js +2 -0
- package/dist/esm/sdk/multiple/server.js +17 -0
- package/dist/esm/sdk/multiple/slave.js +64 -0
- package/dist/esm/sdk/sdk/core.js +151 -0
- package/dist/esm/sdk/sdk/index.js +5 -0
- package/dist/esm/sdk/sdk/types.js +0 -0
- package/dist/esm/sdk/sdk/webpack.js +349 -0
- package/dist/esm/sdk/server/apis/alerts.js +30 -0
- package/dist/esm/sdk/server/apis/base.js +22 -0
- package/dist/esm/sdk/server/apis/bundle-diff.js +57 -0
- package/dist/esm/sdk/server/apis/data.js +44 -0
- package/dist/esm/sdk/server/apis/fs.js +28 -0
- package/dist/esm/sdk/server/apis/graph.js +95 -0
- package/dist/esm/sdk/server/apis/index.js +9 -0
- package/dist/esm/sdk/server/apis/loader.js +105 -0
- package/dist/esm/sdk/server/apis/plugin.js +36 -0
- package/dist/esm/sdk/server/apis/project.js +50 -0
- package/dist/esm/sdk/server/apis/renderer.js +42 -0
- package/dist/esm/sdk/server/apis/resolver.js +35 -0
- package/dist/esm/sdk/server/fakeServer.js +14 -0
- package/dist/esm/sdk/server/index.js +148 -0
- package/dist/esm/sdk/server/router.js +92 -0
- package/dist/esm/sdk/server/socket/api.js +25 -0
- package/dist/esm/sdk/server/socket/index.js +82 -0
- package/dist/esm/sdk/server/utils.js +14 -0
- package/dist/esm/sdk/utils/constant.js +7 -0
- package/dist/esm/sdk/utils/index.js +2 -0
- package/dist/esm/sdk/utils/upload.js +9 -0
- package/dist/type/index.d.ts +1 -0
- package/dist/type/sdk/index.d.ts +2 -0
- package/dist/type/sdk/multiple/controller.d.ts +16 -0
- package/dist/type/sdk/multiple/index.d.ts +2 -0
- package/dist/type/sdk/multiple/server.d.ts +7 -0
- package/dist/type/sdk/multiple/slave.d.ts +35 -0
- package/dist/type/sdk/sdk/core.d.ts +35 -0
- package/dist/type/sdk/sdk/index.d.ts +2 -0
- package/dist/type/sdk/sdk/types.d.ts +28 -0
- package/dist/type/sdk/sdk/webpack.d.ts +47 -0
- package/dist/type/sdk/server/apis/alerts.d.ts +5 -0
- package/dist/type/sdk/server/apis/base.d.ts +11 -0
- package/dist/type/sdk/server/apis/bundle-diff.d.ts +6 -0
- package/dist/type/sdk/server/apis/data.d.ts +6 -0
- package/dist/type/sdk/server/apis/fs.d.ts +5 -0
- package/dist/type/sdk/server/apis/graph.d.ts +12 -0
- package/dist/type/sdk/server/apis/index.d.ts +9 -0
- package/dist/type/sdk/server/apis/loader.d.ts +16 -0
- package/dist/type/sdk/server/apis/plugin.d.ts +6 -0
- package/dist/type/sdk/server/apis/project.d.ts +8 -0
- package/dist/type/sdk/server/apis/renderer.d.ts +7 -0
- package/dist/type/sdk/server/apis/resolver.d.ts +6 -0
- package/dist/type/sdk/server/fakeServer.d.ts +7 -0
- package/dist/type/sdk/server/index.d.ts +27 -0
- package/dist/type/sdk/server/router.d.ts +25 -0
- package/dist/type/sdk/server/socket/api.d.ts +15 -0
- package/dist/type/sdk/server/socket/index.d.ts +28 -0
- package/dist/type/sdk/server/utils.d.ts +5 -0
- package/dist/type/sdk/utils/constant.d.ts +1 -0
- package/dist/type/sdk/utils/index.d.ts +2 -0
- package/dist/type/sdk/utils/upload.d.ts +2 -0
- package/package.json +51 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
4
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
5
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
6
|
+
if (decorator = decorators[i])
|
|
7
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
8
|
+
if (kind && result)
|
|
9
|
+
__defProp(target, key, result);
|
|
10
|
+
return result;
|
|
11
|
+
};
|
|
12
|
+
import { SDK } from "@rsdoctor/types";
|
|
13
|
+
import { BaseAPI } from "./base";
|
|
14
|
+
import { Router } from "../router";
|
|
15
|
+
class DataAPI extends BaseAPI {
|
|
16
|
+
async loadDataByKey() {
|
|
17
|
+
const { req } = this.ctx;
|
|
18
|
+
const { url } = req;
|
|
19
|
+
let { key } = req.body;
|
|
20
|
+
if (!key && url) {
|
|
21
|
+
const uri = new URL(url, "http://127.0.0.1");
|
|
22
|
+
key = uri.pathname.replace(
|
|
23
|
+
/^\//,
|
|
24
|
+
""
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
const data = await this.loadData(key);
|
|
28
|
+
return data;
|
|
29
|
+
}
|
|
30
|
+
async sendMessageToClient() {
|
|
31
|
+
const { req, server } = this.ctx;
|
|
32
|
+
const { api, data } = req.body;
|
|
33
|
+
await server.sendAPIDataToClient(api, data);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
__decorateClass([
|
|
37
|
+
Router.post(SDK.ServerAPI.API.LoadDataByKey)
|
|
38
|
+
], DataAPI.prototype, "loadDataByKey", 1);
|
|
39
|
+
__decorateClass([
|
|
40
|
+
Router.post(SDK.ServerAPI.API.SendAPIDataToClient)
|
|
41
|
+
], DataAPI.prototype, "sendMessageToClient", 1);
|
|
42
|
+
export {
|
|
43
|
+
DataAPI
|
|
44
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
4
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
5
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
6
|
+
if (decorator = decorators[i])
|
|
7
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
8
|
+
if (kind && result)
|
|
9
|
+
__defProp(target, key, result);
|
|
10
|
+
return result;
|
|
11
|
+
};
|
|
12
|
+
import { SDK } from "@rsdoctor/types";
|
|
13
|
+
import { BaseAPI } from "./base";
|
|
14
|
+
import { Router } from "../router";
|
|
15
|
+
class FileSystemAPI extends BaseAPI {
|
|
16
|
+
async applyErrorFix() {
|
|
17
|
+
const { body } = this.ctx.req;
|
|
18
|
+
const data = body;
|
|
19
|
+
await this.ctx.sdk.applyErrorFix(data.id);
|
|
20
|
+
return "success";
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
__decorateClass([
|
|
24
|
+
Router.post(SDK.ServerAPI.API.ApplyErrorFix)
|
|
25
|
+
], FileSystemAPI.prototype, "applyErrorFix", 1);
|
|
26
|
+
export {
|
|
27
|
+
FileSystemAPI
|
|
28
|
+
};
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
4
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
5
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
6
|
+
if (decorator = decorators[i])
|
|
7
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
8
|
+
if (kind && result)
|
|
9
|
+
__defProp(target, key, result);
|
|
10
|
+
return result;
|
|
11
|
+
};
|
|
12
|
+
import { SDK } from "@rsdoctor/types";
|
|
13
|
+
import { BaseAPI } from "./base";
|
|
14
|
+
import { Router } from "../router";
|
|
15
|
+
class GraphAPI extends BaseAPI {
|
|
16
|
+
async getAssetsSummary() {
|
|
17
|
+
const { req } = this.ctx;
|
|
18
|
+
const { withFileContent } = req.body;
|
|
19
|
+
return this.dataLoader.loadAPI(SDK.ServerAPI.API.GetAssetsSummary, {
|
|
20
|
+
withFileContent
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
async getModuleGraphForAsset() {
|
|
24
|
+
const { req } = this.ctx;
|
|
25
|
+
const { assetPath } = req.body;
|
|
26
|
+
return this.dataLoader.loadAPI(SDK.ServerAPI.API.GetAssetDetails, {
|
|
27
|
+
assetPath
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
async getChunksByModuleId() {
|
|
31
|
+
const { req } = this.ctx;
|
|
32
|
+
const { moduleId } = req.body;
|
|
33
|
+
return this.dataLoader.loadAPI(SDK.ServerAPI.API.GetChunksByModuleId, {
|
|
34
|
+
moduleId
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
async getModuleDetails() {
|
|
38
|
+
const { req } = this.ctx;
|
|
39
|
+
const { moduleId } = req.body;
|
|
40
|
+
return this.dataLoader.loadAPI(SDK.ServerAPI.API.GetModuleDetails, {
|
|
41
|
+
moduleId
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
async getDependencyByResolvedRequest() {
|
|
45
|
+
const { req } = this.ctx;
|
|
46
|
+
const { moduleIds = [] } = req.body;
|
|
47
|
+
return this.dataLoader.loadAPI(SDK.ServerAPI.API.GetModulesByModuleIds, {
|
|
48
|
+
moduleIds
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
async getModuleCodeByModuleId() {
|
|
52
|
+
const { req } = this.ctx;
|
|
53
|
+
const { moduleId } = req.body;
|
|
54
|
+
return this.dataLoader.loadAPI(SDK.ServerAPI.API.GetModuleCodeByModuleId, {
|
|
55
|
+
moduleId
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
async getModuleCodeByModuleIds() {
|
|
59
|
+
const { req } = this.ctx;
|
|
60
|
+
const { moduleIds } = req.body;
|
|
61
|
+
return this.dataLoader.loadAPI(SDK.ServerAPI.API.GetModuleCodeByModuleIds, {
|
|
62
|
+
moduleIds
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
async getEntryModulesSummary() {
|
|
66
|
+
return this.dataLoader.loadAPI(SDK.ServerAPI.API.GetEntryPoints);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
__decorateClass([
|
|
70
|
+
Router.post(SDK.ServerAPI.API.GetAssetsSummary)
|
|
71
|
+
], GraphAPI.prototype, "getAssetsSummary", 1);
|
|
72
|
+
__decorateClass([
|
|
73
|
+
Router.post(SDK.ServerAPI.API.GetAssetDetails)
|
|
74
|
+
], GraphAPI.prototype, "getModuleGraphForAsset", 1);
|
|
75
|
+
__decorateClass([
|
|
76
|
+
Router.post(SDK.ServerAPI.API.GetChunksByModuleId)
|
|
77
|
+
], GraphAPI.prototype, "getChunksByModuleId", 1);
|
|
78
|
+
__decorateClass([
|
|
79
|
+
Router.post(SDK.ServerAPI.API.GetModuleDetails)
|
|
80
|
+
], GraphAPI.prototype, "getModuleDetails", 1);
|
|
81
|
+
__decorateClass([
|
|
82
|
+
Router.post(SDK.ServerAPI.API.GetModulesByModuleIds)
|
|
83
|
+
], GraphAPI.prototype, "getDependencyByResolvedRequest", 1);
|
|
84
|
+
__decorateClass([
|
|
85
|
+
Router.post(SDK.ServerAPI.API.GetModuleCodeByModuleId)
|
|
86
|
+
], GraphAPI.prototype, "getModuleCodeByModuleId", 1);
|
|
87
|
+
__decorateClass([
|
|
88
|
+
Router.post(SDK.ServerAPI.API.GetModuleCodeByModuleIds)
|
|
89
|
+
], GraphAPI.prototype, "getModuleCodeByModuleIds", 1);
|
|
90
|
+
__decorateClass([
|
|
91
|
+
Router.post(SDK.ServerAPI.API.GetEntryPoints)
|
|
92
|
+
], GraphAPI.prototype, "getEntryModulesSummary", 1);
|
|
93
|
+
export {
|
|
94
|
+
GraphAPI
|
|
95
|
+
};
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
4
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
5
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
6
|
+
if (decorator = decorators[i])
|
|
7
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
8
|
+
if (kind && result)
|
|
9
|
+
__defProp(target, key, result);
|
|
10
|
+
return result;
|
|
11
|
+
};
|
|
12
|
+
import { SDK } from "@rsdoctor/types";
|
|
13
|
+
import { BaseAPI } from "./base";
|
|
14
|
+
import { Router } from "../router";
|
|
15
|
+
class LoaderAPI extends BaseAPI {
|
|
16
|
+
async reportLoader() {
|
|
17
|
+
const { req, sdk } = this.ctx;
|
|
18
|
+
const { body } = req;
|
|
19
|
+
sdk.reportLoader(body);
|
|
20
|
+
return "ok";
|
|
21
|
+
}
|
|
22
|
+
async reportSourceMap() {
|
|
23
|
+
const {
|
|
24
|
+
req: { body },
|
|
25
|
+
sdk
|
|
26
|
+
} = this.ctx;
|
|
27
|
+
sdk.reportSourceMap(body);
|
|
28
|
+
return "ok";
|
|
29
|
+
}
|
|
30
|
+
async getLoaderNames() {
|
|
31
|
+
return this.dataLoader.loadAPI(SDK.ServerAPI.API.GetLoaderNames);
|
|
32
|
+
}
|
|
33
|
+
async getLoaderChartData() {
|
|
34
|
+
return this.dataLoader.loadAPI(SDK.ServerAPI.API.GetLoaderChartData);
|
|
35
|
+
}
|
|
36
|
+
async getLoaderFileTree() {
|
|
37
|
+
return this.dataLoader.loadAPI(SDK.ServerAPI.API.GetLoaderFileTree);
|
|
38
|
+
}
|
|
39
|
+
async getLoaderFileDetails() {
|
|
40
|
+
const { req } = this.ctx;
|
|
41
|
+
const { path } = req.body;
|
|
42
|
+
return this.dataLoader.loadAPI(SDK.ServerAPI.API.GetLoaderFileDetails, {
|
|
43
|
+
path
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
async getLoaderFolderStatistics() {
|
|
47
|
+
const { req } = this.ctx;
|
|
48
|
+
const { folder } = req.body;
|
|
49
|
+
return this.dataLoader.loadAPI(
|
|
50
|
+
SDK.ServerAPI.API.GetLoaderFolderStatistics,
|
|
51
|
+
{ folder }
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
async getLoaderFileFirstInput() {
|
|
55
|
+
const { req } = this.ctx;
|
|
56
|
+
const { file } = req.body;
|
|
57
|
+
return this.dataLoader.loadAPI(SDK.ServerAPI.API.GetLoaderFileFirstInput, {
|
|
58
|
+
file
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
async getLoaderFileInputAndOutput() {
|
|
62
|
+
const { req } = this.ctx;
|
|
63
|
+
const { file, loader, loaderIndex } = req.body;
|
|
64
|
+
return this.dataLoader.loadAPI(
|
|
65
|
+
SDK.ServerAPI.API.GetLoaderFileInputAndOutput,
|
|
66
|
+
{ file, loader, loaderIndex }
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
async getTileReportHtml() {
|
|
70
|
+
return this.dataLoader.loadAPI(SDK.ServerAPI.API.GetTileReportHtml, {});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
__decorateClass([
|
|
74
|
+
Router.post(SDK.ServerAPI.API.ReportLoader)
|
|
75
|
+
], LoaderAPI.prototype, "reportLoader", 1);
|
|
76
|
+
__decorateClass([
|
|
77
|
+
Router.post(SDK.ServerAPI.API.ReportSourceMap)
|
|
78
|
+
], LoaderAPI.prototype, "reportSourceMap", 1);
|
|
79
|
+
__decorateClass([
|
|
80
|
+
Router.post(SDK.ServerAPI.API.GetLoaderNames)
|
|
81
|
+
], LoaderAPI.prototype, "getLoaderNames", 1);
|
|
82
|
+
__decorateClass([
|
|
83
|
+
Router.post(SDK.ServerAPI.API.GetLoaderChartData)
|
|
84
|
+
], LoaderAPI.prototype, "getLoaderChartData", 1);
|
|
85
|
+
__decorateClass([
|
|
86
|
+
Router.post(SDK.ServerAPI.API.GetLoaderFileTree)
|
|
87
|
+
], LoaderAPI.prototype, "getLoaderFileTree", 1);
|
|
88
|
+
__decorateClass([
|
|
89
|
+
Router.post(SDK.ServerAPI.API.GetLoaderFileDetails)
|
|
90
|
+
], LoaderAPI.prototype, "getLoaderFileDetails", 1);
|
|
91
|
+
__decorateClass([
|
|
92
|
+
Router.post(SDK.ServerAPI.API.GetLoaderFolderStatistics)
|
|
93
|
+
], LoaderAPI.prototype, "getLoaderFolderStatistics", 1);
|
|
94
|
+
__decorateClass([
|
|
95
|
+
Router.post(SDK.ServerAPI.API.GetLoaderFileFirstInput)
|
|
96
|
+
], LoaderAPI.prototype, "getLoaderFileFirstInput", 1);
|
|
97
|
+
__decorateClass([
|
|
98
|
+
Router.post(SDK.ServerAPI.API.GetLoaderFileInputAndOutput)
|
|
99
|
+
], LoaderAPI.prototype, "getLoaderFileInputAndOutput", 1);
|
|
100
|
+
__decorateClass([
|
|
101
|
+
Router.post(SDK.ServerAPI.API.GetTileReportHtml)
|
|
102
|
+
], LoaderAPI.prototype, "getTileReportHtml", 1);
|
|
103
|
+
export {
|
|
104
|
+
LoaderAPI
|
|
105
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
4
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
5
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
6
|
+
if (decorator = decorators[i])
|
|
7
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
8
|
+
if (kind && result)
|
|
9
|
+
__defProp(target, key, result);
|
|
10
|
+
return result;
|
|
11
|
+
};
|
|
12
|
+
import { SDK } from "@rsdoctor/types";
|
|
13
|
+
import { BaseAPI } from "./base";
|
|
14
|
+
import { Router } from "../router";
|
|
15
|
+
class PluginAPI extends BaseAPI {
|
|
16
|
+
async getPluginSummary() {
|
|
17
|
+
return this.dataLoader.loadAPI(SDK.ServerAPI.API.GetPluginSummary);
|
|
18
|
+
}
|
|
19
|
+
async getPluginData() {
|
|
20
|
+
const { req } = this.ctx;
|
|
21
|
+
const { hooks = [], tapNames = [] } = req.body;
|
|
22
|
+
return this.dataLoader.loadAPI(SDK.ServerAPI.API.GetPluginData, {
|
|
23
|
+
hooks,
|
|
24
|
+
tapNames
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
__decorateClass([
|
|
29
|
+
Router.post(SDK.ServerAPI.API.GetPluginSummary)
|
|
30
|
+
], PluginAPI.prototype, "getPluginSummary", 1);
|
|
31
|
+
__decorateClass([
|
|
32
|
+
Router.post(SDK.ServerAPI.API.GetPluginData)
|
|
33
|
+
], PluginAPI.prototype, "getPluginData", 1);
|
|
34
|
+
export {
|
|
35
|
+
PluginAPI
|
|
36
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
4
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
5
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
6
|
+
if (decorator = decorators[i])
|
|
7
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
8
|
+
if (kind && result)
|
|
9
|
+
__defProp(target, key, result);
|
|
10
|
+
return result;
|
|
11
|
+
};
|
|
12
|
+
import { SDK } from "@rsdoctor/types";
|
|
13
|
+
import ip from "ip";
|
|
14
|
+
import { BaseAPI } from "./base";
|
|
15
|
+
import { Router } from "../router";
|
|
16
|
+
class ProjectAPI extends BaseAPI {
|
|
17
|
+
async env() {
|
|
18
|
+
const { server } = this.ctx;
|
|
19
|
+
return {
|
|
20
|
+
ip: ip.address(),
|
|
21
|
+
port: server.port
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
async manifest() {
|
|
25
|
+
const { sdk } = this.ctx;
|
|
26
|
+
const data = sdk.getManifestData();
|
|
27
|
+
return JSON.stringify(data);
|
|
28
|
+
}
|
|
29
|
+
async getProjectInfo() {
|
|
30
|
+
return this.dataLoader.loadAPI(SDK.ServerAPI.API.GetProjectInfo);
|
|
31
|
+
}
|
|
32
|
+
async getClientRoutes() {
|
|
33
|
+
return this.dataLoader.loadAPI(SDK.ServerAPI.API.GetClientRoutes);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
__decorateClass([
|
|
37
|
+
Router.get(SDK.ServerAPI.API.Env)
|
|
38
|
+
], ProjectAPI.prototype, "env", 1);
|
|
39
|
+
__decorateClass([
|
|
40
|
+
Router.get(SDK.ServerAPI.API.Manifest)
|
|
41
|
+
], ProjectAPI.prototype, "manifest", 1);
|
|
42
|
+
__decorateClass([
|
|
43
|
+
Router.post(SDK.ServerAPI.API.GetProjectInfo)
|
|
44
|
+
], ProjectAPI.prototype, "getProjectInfo", 1);
|
|
45
|
+
__decorateClass([
|
|
46
|
+
Router.post(SDK.ServerAPI.API.GetClientRoutes)
|
|
47
|
+
], ProjectAPI.prototype, "getClientRoutes", 1);
|
|
48
|
+
export {
|
|
49
|
+
ProjectAPI
|
|
50
|
+
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
4
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
5
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
6
|
+
if (decorator = decorators[i])
|
|
7
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
8
|
+
if (kind && result)
|
|
9
|
+
__defProp(target, key, result);
|
|
10
|
+
return result;
|
|
11
|
+
};
|
|
12
|
+
import { SDK } from "@rsdoctor/types";
|
|
13
|
+
import serve from "serve-static";
|
|
14
|
+
import path from "path";
|
|
15
|
+
import { File } from "@rsdoctor/utils/build";
|
|
16
|
+
import { BaseAPI } from "./base";
|
|
17
|
+
import { Router } from "../router";
|
|
18
|
+
class RendererAPI extends BaseAPI {
|
|
19
|
+
constructor() {
|
|
20
|
+
super(...arguments);
|
|
21
|
+
this.isClientServed = false;
|
|
22
|
+
}
|
|
23
|
+
async entryHtml() {
|
|
24
|
+
const { server, res } = this.ctx;
|
|
25
|
+
const clientHtmlPath = require.resolve("@rsdoctor/client");
|
|
26
|
+
if (!this.isClientServed) {
|
|
27
|
+
this.isClientServed = true;
|
|
28
|
+
const clientDistPath = path.resolve(clientHtmlPath, "..");
|
|
29
|
+
server.app.use(serve(clientDistPath));
|
|
30
|
+
}
|
|
31
|
+
const clientHtml = await File.fse.readFile(clientHtmlPath, "utf-8");
|
|
32
|
+
res.setHeader("Content-Type", "text/html");
|
|
33
|
+
res.setHeader("Cache-Control", "no-store");
|
|
34
|
+
return clientHtml;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
__decorateClass([
|
|
38
|
+
Router.get(SDK.ServerAPI.API.EntryHtml)
|
|
39
|
+
], RendererAPI.prototype, "entryHtml", 1);
|
|
40
|
+
export {
|
|
41
|
+
RendererAPI
|
|
42
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
4
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
5
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
6
|
+
if (decorator = decorators[i])
|
|
7
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
8
|
+
if (kind && result)
|
|
9
|
+
__defProp(target, key, result);
|
|
10
|
+
return result;
|
|
11
|
+
};
|
|
12
|
+
import { SDK } from "@rsdoctor/types";
|
|
13
|
+
import { BaseAPI } from "./base";
|
|
14
|
+
import { Router } from "../router";
|
|
15
|
+
class ResolverAPI extends BaseAPI {
|
|
16
|
+
async getResolverFileTree() {
|
|
17
|
+
return this.dataLoader.loadAPI(SDK.ServerAPI.API.GetResolverFileTree);
|
|
18
|
+
}
|
|
19
|
+
async getResolverFileDetails() {
|
|
20
|
+
const { req } = this.ctx;
|
|
21
|
+
const { filepath } = req.body;
|
|
22
|
+
return this.dataLoader.loadAPI(SDK.ServerAPI.API.GetResolverFileDetails, {
|
|
23
|
+
filepath
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
__decorateClass([
|
|
28
|
+
Router.post(SDK.ServerAPI.API.GetResolverFileTree)
|
|
29
|
+
], ResolverAPI.prototype, "getResolverFileTree", 1);
|
|
30
|
+
__decorateClass([
|
|
31
|
+
Router.post(SDK.ServerAPI.API.GetResolverFileDetails)
|
|
32
|
+
], ResolverAPI.prototype, "getResolverFileDetails", 1);
|
|
33
|
+
export {
|
|
34
|
+
ResolverAPI
|
|
35
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Server } from "@rsdoctor/utils/build";
|
|
2
|
+
import { DoctorServer } from ".";
|
|
3
|
+
class DoctorFakeServer extends DoctorServer {
|
|
4
|
+
constructor(sdk, port = Server.defaultPort) {
|
|
5
|
+
super(sdk, port);
|
|
6
|
+
this.sdk = sdk;
|
|
7
|
+
this.sdk = sdk;
|
|
8
|
+
}
|
|
9
|
+
async openClientPage() {
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export {
|
|
13
|
+
DoctorFakeServer
|
|
14
|
+
};
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { SDK, Client } from "@rsdoctor/types";
|
|
2
|
+
import { Server } from "@rsdoctor/utils/build";
|
|
3
|
+
import { Bundle } from "@rsdoctor/utils/common";
|
|
4
|
+
import assert from "assert";
|
|
5
|
+
import bodyParser from "body-parser";
|
|
6
|
+
import open from "open";
|
|
7
|
+
import ip from "ip";
|
|
8
|
+
import cors from "cors";
|
|
9
|
+
import { PassThrough } from "stream";
|
|
10
|
+
import { Socket } from "./socket";
|
|
11
|
+
import { Router } from "./router";
|
|
12
|
+
import * as APIs from "./apis";
|
|
13
|
+
export * from "./utils";
|
|
14
|
+
class DoctorServer {
|
|
15
|
+
constructor(sdk, port = Server.defaultPort) {
|
|
16
|
+
this.sdk = sdk;
|
|
17
|
+
this.disposed = true;
|
|
18
|
+
this.get = (route, cb) => {
|
|
19
|
+
const { app } = this;
|
|
20
|
+
app.use(route, this.wrapNextHandleFunction("GET", cb));
|
|
21
|
+
return app;
|
|
22
|
+
};
|
|
23
|
+
this.post = (route, cb) => {
|
|
24
|
+
const { app } = this;
|
|
25
|
+
app.use(route, this.wrapNextHandleFunction("POST", cb));
|
|
26
|
+
return app;
|
|
27
|
+
};
|
|
28
|
+
this.dispose = async () => {
|
|
29
|
+
if (this.disposed)
|
|
30
|
+
return;
|
|
31
|
+
this.disposed = true;
|
|
32
|
+
if (this._server) {
|
|
33
|
+
await this._server.close();
|
|
34
|
+
}
|
|
35
|
+
if (this._socket) {
|
|
36
|
+
this._socket.dispose();
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
assert(typeof port === "number");
|
|
40
|
+
this.port = port;
|
|
41
|
+
this._router = new Router({ sdk, server: this, apis: Object.values(APIs) });
|
|
42
|
+
}
|
|
43
|
+
get app() {
|
|
44
|
+
return this._server.app;
|
|
45
|
+
}
|
|
46
|
+
get origin() {
|
|
47
|
+
const host = ip.address();
|
|
48
|
+
return `http://${host}:${this.port}`;
|
|
49
|
+
}
|
|
50
|
+
get socketUrl() {
|
|
51
|
+
return `ws://${ip.address()}:${this.port}`;
|
|
52
|
+
}
|
|
53
|
+
async bootstrap() {
|
|
54
|
+
if (!this.disposed) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const port = Server.getPortSync(this.port);
|
|
58
|
+
this.port = port;
|
|
59
|
+
this._server = await Server.createServer(port);
|
|
60
|
+
this._socket = new Socket({
|
|
61
|
+
sdk: this.sdk,
|
|
62
|
+
server: this._server.server,
|
|
63
|
+
port: this.port
|
|
64
|
+
});
|
|
65
|
+
await this._socket.bootstrap();
|
|
66
|
+
this.disposed = false;
|
|
67
|
+
this.app.use(cors());
|
|
68
|
+
this.app.use(bodyParser.json({ limit: "500mb" }));
|
|
69
|
+
await this._router.setup();
|
|
70
|
+
process.once("exit", this.dispose);
|
|
71
|
+
process.once("SIGINT", this.dispose);
|
|
72
|
+
process.once("SIGTERM", this.dispose);
|
|
73
|
+
process.once("unhandledRejection", this.dispose);
|
|
74
|
+
process.once("uncaughtException", this.dispose);
|
|
75
|
+
}
|
|
76
|
+
wrapNextHandleFunction(method, cb) {
|
|
77
|
+
return async (req, res, next) => {
|
|
78
|
+
const m = req.method?.toUpperCase();
|
|
79
|
+
if (m === method) {
|
|
80
|
+
try {
|
|
81
|
+
const body = await cb(req, res, next);
|
|
82
|
+
res.setHeader("Access-Control-Allow-Origin", "*");
|
|
83
|
+
res.setHeader("Access-Control-Allow-Credentials", "true");
|
|
84
|
+
res.statusCode = 200;
|
|
85
|
+
if (Buffer.isBuffer(body)) {
|
|
86
|
+
res.setHeader("Content-Length", body.byteLength);
|
|
87
|
+
const ps = new PassThrough();
|
|
88
|
+
ps.write(body);
|
|
89
|
+
ps.end();
|
|
90
|
+
ps.pipe(res);
|
|
91
|
+
} else if (body && typeof body === "object") {
|
|
92
|
+
res.writeHead(200, {
|
|
93
|
+
"Content-Type": "application/json;utf-8"
|
|
94
|
+
});
|
|
95
|
+
res.write(JSON.stringify(body));
|
|
96
|
+
res.end();
|
|
97
|
+
} else {
|
|
98
|
+
res.writeHead(200).end(body);
|
|
99
|
+
}
|
|
100
|
+
} catch (error) {
|
|
101
|
+
res.statusCode = 500;
|
|
102
|
+
res.end(error.message);
|
|
103
|
+
return next(error);
|
|
104
|
+
}
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
await next();
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
proxy(api, method, cb) {
|
|
111
|
+
let idx = this.app.stack.findIndex((e) => e.route === api);
|
|
112
|
+
if (idx === -1) {
|
|
113
|
+
idx = this.app.stack.length - 1;
|
|
114
|
+
}
|
|
115
|
+
this.app.stack.splice(idx, 0, {
|
|
116
|
+
route: api,
|
|
117
|
+
handle: this.wrapNextHandleFunction(method, cb)
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
getClientUrl(route = "homepage", ...args) {
|
|
121
|
+
const url = `${this.origin}${SDK.ServerAPI.API.EntryHtml}`;
|
|
122
|
+
switch (route) {
|
|
123
|
+
case Client.DoctorClientRoutes.BundleDiff: {
|
|
124
|
+
const [baseline, current] = args;
|
|
125
|
+
const qs = Bundle.getBundleDiffPageQueryString([baseline, current]);
|
|
126
|
+
return `${url}${qs}#${Client.DoctorClientRoutes.BundleDiff}`;
|
|
127
|
+
}
|
|
128
|
+
default:
|
|
129
|
+
return url;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
async openClientPage(...args) {
|
|
133
|
+
const url = this.getClientUrl(
|
|
134
|
+
...args
|
|
135
|
+
);
|
|
136
|
+
await open(url);
|
|
137
|
+
console.log(`Rsdoctor analyze run at: ${url}`);
|
|
138
|
+
}
|
|
139
|
+
sendAPIDataToClient(api, msg) {
|
|
140
|
+
this._socket?.sendAPIData(api, msg);
|
|
141
|
+
}
|
|
142
|
+
async broadcast() {
|
|
143
|
+
await this._socket?.broadcast();
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
export {
|
|
147
|
+
DoctorServer
|
|
148
|
+
};
|