@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.
Files changed (96) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +15 -0
  3. package/dist/cjs/index.js +22 -0
  4. package/dist/cjs/sdk/index.js +24 -0
  5. package/dist/cjs/sdk/multiple/controller.js +72 -0
  6. package/dist/cjs/sdk/multiple/index.js +24 -0
  7. package/dist/cjs/sdk/multiple/server.js +41 -0
  8. package/dist/cjs/sdk/multiple/slave.js +98 -0
  9. package/dist/cjs/sdk/sdk/core.js +185 -0
  10. package/dist/cjs/sdk/sdk/index.js +31 -0
  11. package/dist/cjs/sdk/sdk/types.js +16 -0
  12. package/dist/cjs/sdk/sdk/webpack.js +373 -0
  13. package/dist/cjs/sdk/server/apis/alerts.js +52 -0
  14. package/dist/cjs/sdk/server/apis/base.js +46 -0
  15. package/dist/cjs/sdk/server/apis/bundle-diff.js +79 -0
  16. package/dist/cjs/sdk/server/apis/data.js +66 -0
  17. package/dist/cjs/sdk/server/apis/fs.js +50 -0
  18. package/dist/cjs/sdk/server/apis/graph.js +117 -0
  19. package/dist/cjs/sdk/server/apis/index.js +38 -0
  20. package/dist/cjs/sdk/server/apis/loader.js +127 -0
  21. package/dist/cjs/sdk/server/apis/plugin.js +58 -0
  22. package/dist/cjs/sdk/server/apis/project.js +82 -0
  23. package/dist/cjs/sdk/server/apis/renderer.js +74 -0
  24. package/dist/cjs/sdk/server/apis/resolver.js +57 -0
  25. package/dist/cjs/sdk/server/fakeServer.js +38 -0
  26. package/dist/cjs/sdk/server/index.js +184 -0
  27. package/dist/cjs/sdk/server/router.js +116 -0
  28. package/dist/cjs/sdk/server/socket/api.js +49 -0
  29. package/dist/cjs/sdk/server/socket/index.js +104 -0
  30. package/dist/cjs/sdk/server/utils.js +38 -0
  31. package/dist/cjs/sdk/utils/constant.js +41 -0
  32. package/dist/cjs/sdk/utils/index.js +24 -0
  33. package/dist/cjs/sdk/utils/upload.js +33 -0
  34. package/dist/esm/index.js +1 -0
  35. package/dist/esm/sdk/index.js +2 -0
  36. package/dist/esm/sdk/multiple/controller.js +48 -0
  37. package/dist/esm/sdk/multiple/index.js +2 -0
  38. package/dist/esm/sdk/multiple/server.js +17 -0
  39. package/dist/esm/sdk/multiple/slave.js +64 -0
  40. package/dist/esm/sdk/sdk/core.js +151 -0
  41. package/dist/esm/sdk/sdk/index.js +5 -0
  42. package/dist/esm/sdk/sdk/types.js +0 -0
  43. package/dist/esm/sdk/sdk/webpack.js +349 -0
  44. package/dist/esm/sdk/server/apis/alerts.js +30 -0
  45. package/dist/esm/sdk/server/apis/base.js +22 -0
  46. package/dist/esm/sdk/server/apis/bundle-diff.js +57 -0
  47. package/dist/esm/sdk/server/apis/data.js +44 -0
  48. package/dist/esm/sdk/server/apis/fs.js +28 -0
  49. package/dist/esm/sdk/server/apis/graph.js +95 -0
  50. package/dist/esm/sdk/server/apis/index.js +9 -0
  51. package/dist/esm/sdk/server/apis/loader.js +105 -0
  52. package/dist/esm/sdk/server/apis/plugin.js +36 -0
  53. package/dist/esm/sdk/server/apis/project.js +50 -0
  54. package/dist/esm/sdk/server/apis/renderer.js +42 -0
  55. package/dist/esm/sdk/server/apis/resolver.js +35 -0
  56. package/dist/esm/sdk/server/fakeServer.js +14 -0
  57. package/dist/esm/sdk/server/index.js +148 -0
  58. package/dist/esm/sdk/server/router.js +92 -0
  59. package/dist/esm/sdk/server/socket/api.js +25 -0
  60. package/dist/esm/sdk/server/socket/index.js +82 -0
  61. package/dist/esm/sdk/server/utils.js +14 -0
  62. package/dist/esm/sdk/utils/constant.js +7 -0
  63. package/dist/esm/sdk/utils/index.js +2 -0
  64. package/dist/esm/sdk/utils/upload.js +9 -0
  65. package/dist/type/index.d.ts +1 -0
  66. package/dist/type/sdk/index.d.ts +2 -0
  67. package/dist/type/sdk/multiple/controller.d.ts +16 -0
  68. package/dist/type/sdk/multiple/index.d.ts +2 -0
  69. package/dist/type/sdk/multiple/server.d.ts +7 -0
  70. package/dist/type/sdk/multiple/slave.d.ts +35 -0
  71. package/dist/type/sdk/sdk/core.d.ts +35 -0
  72. package/dist/type/sdk/sdk/index.d.ts +2 -0
  73. package/dist/type/sdk/sdk/types.d.ts +28 -0
  74. package/dist/type/sdk/sdk/webpack.d.ts +47 -0
  75. package/dist/type/sdk/server/apis/alerts.d.ts +5 -0
  76. package/dist/type/sdk/server/apis/base.d.ts +11 -0
  77. package/dist/type/sdk/server/apis/bundle-diff.d.ts +6 -0
  78. package/dist/type/sdk/server/apis/data.d.ts +6 -0
  79. package/dist/type/sdk/server/apis/fs.d.ts +5 -0
  80. package/dist/type/sdk/server/apis/graph.d.ts +12 -0
  81. package/dist/type/sdk/server/apis/index.d.ts +9 -0
  82. package/dist/type/sdk/server/apis/loader.d.ts +16 -0
  83. package/dist/type/sdk/server/apis/plugin.d.ts +6 -0
  84. package/dist/type/sdk/server/apis/project.d.ts +8 -0
  85. package/dist/type/sdk/server/apis/renderer.d.ts +7 -0
  86. package/dist/type/sdk/server/apis/resolver.d.ts +6 -0
  87. package/dist/type/sdk/server/fakeServer.d.ts +7 -0
  88. package/dist/type/sdk/server/index.d.ts +27 -0
  89. package/dist/type/sdk/server/router.d.ts +25 -0
  90. package/dist/type/sdk/server/socket/api.d.ts +15 -0
  91. package/dist/type/sdk/server/socket/index.d.ts +28 -0
  92. package/dist/type/sdk/server/utils.d.ts +5 -0
  93. package/dist/type/sdk/utils/constant.d.ts +1 -0
  94. package/dist/type/sdk/utils/index.d.ts +2 -0
  95. package/dist/type/sdk/utils/upload.d.ts +2 -0
  96. 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,9 @@
1
+ export * from "./alerts";
2
+ export * from "./data";
3
+ export * from "./fs";
4
+ export * from "./loader";
5
+ export * from "./graph";
6
+ export * from "./plugin";
7
+ export * from "./project";
8
+ export * from "./renderer";
9
+ export * from "./resolver";
@@ -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
+ };