@rsdoctor/sdk 1.5.11 → 2.0.0-alpha.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.
@@ -1,11 +1,11 @@
1
1
  import { Manifest, SDK } from '@rsdoctor/types';
2
2
  import { RawSourceMap, SourceMapConsumer } from 'source-map';
3
3
  import { RsdoctorServer } from '../server/index.js';
4
- import { RsdoctorWebpackSDKOptions } from './types.js';
4
+ import { RsdoctorRspackSDKOptions } from './types.js';
5
5
  import { SDKCore } from './core.js';
6
6
  export * from '../utils/openBrowser.js';
7
7
  export * from '../utils/base.js';
8
- export declare class RsdoctorSDK<T extends RsdoctorWebpackSDKOptions = RsdoctorWebpackSDKOptions> extends SDKCore<T> implements SDK.RsdoctorBuilderSDKInstance {
8
+ export declare class RsdoctorSDK<T extends RsdoctorRspackSDKOptions = RsdoctorRspackSDKOptions> extends SDKCore<T> implements SDK.RsdoctorBuilderSDKInstance {
9
9
  server: RsdoctorServer;
10
10
  extraConfig: SDK.SDKOptionsType | undefined;
11
11
  type: SDK.ToDataType;
@@ -22,7 +22,7 @@ export interface RsdoctorBuilderSDK extends RsdoctorSDKOptions {
22
22
  port?: number;
23
23
  config?: SDK.SDKOptionsType;
24
24
  }
25
- export interface RsdoctorWebpackSDKOptions extends RsdoctorBuilderSDK {
25
+ export interface RsdoctorRspackSDKOptions extends RsdoctorBuilderSDK {
26
26
  }
27
27
  export interface RsdoctorEMOSDKOptions extends RsdoctorSDKOptions {
28
28
  }
@@ -22,7 +22,7 @@ export interface RsdoctorBuilderSDK extends RsdoctorSDKOptions {
22
22
  port?: number;
23
23
  config?: SDK.SDKOptionsType;
24
24
  }
25
- export interface RsdoctorWebpackSDKOptions extends RsdoctorBuilderSDK {
25
+ export interface RsdoctorRspackSDKOptions extends RsdoctorBuilderSDK {
26
26
  }
27
27
  export interface RsdoctorEMOSDKOptions extends RsdoctorSDKOptions {
28
28
  }
@@ -1,4 +1,5 @@
1
1
  export * from './alerts';
2
+ export * from './bundle-diff';
2
3
  export { DataAPI } from './data';
3
4
  export * from './fs';
4
5
  export * from './loader';
@@ -1,4 +1,5 @@
1
1
  export * from './alerts.js';
2
+ export * from './bundle-diff.js';
2
3
  export { DataAPI } from './data.js';
3
4
  export * from './fs.js';
4
5
  export * from './loader.js';
@@ -10,6 +10,6 @@ export declare class SocketAPILoader implements Manifest.ManifestDataLoader {
10
10
  loadManifest(): Promise<Manifest.RsdoctorManifestWithShardingFiles>;
11
11
  loadData<T extends Manifest.RsdoctorManifestMappingKeys>(key: T): Promise<Manifest.InferManifestDataValue<T>>;
12
12
  loadData(key: string): Promise<void>;
13
- get loadAPIData(): <T extends SDK.ServerAPI.API, B extends SDK.ServerAPI.InferRequestBodyType<T> = import("node_modules/@rsdoctor/types/dist/common").Get<SDK.ServerAPI.RequestBodyTypes, T, void>, R extends SDK.ServerAPI.InferResponseType<T> = import("node_modules/@rsdoctor/types/dist/common").Get<SDK.ServerAPI.ResponseTypes, T, void>>(...args: B extends void ? [api: T] : [api: T, body: B]) => Promise<SDK.ServerAPI.InferResponseType<T>>;
13
+ get loadAPIData(): <T extends SDK.ServerAPI.API | SDK.ServerAPI.APIExtends>(api: T, body: SDK.ServerAPI.InferRequestBodyType<T>) => Promise<SDK.ServerAPI.InferResponseType<T>>;
14
14
  }
15
15
  export {};
@@ -10,6 +10,6 @@ export declare class SocketAPILoader implements Manifest.ManifestDataLoader {
10
10
  loadManifest(): Promise<Manifest.RsdoctorManifestWithShardingFiles>;
11
11
  loadData<T extends Manifest.RsdoctorManifestMappingKeys>(key: T): Promise<Manifest.InferManifestDataValue<T>>;
12
12
  loadData(key: string): Promise<void>;
13
- get loadAPIData(): <T extends SDK.ServerAPI.API, B extends SDK.ServerAPI.InferRequestBodyType<T> = import("node_modules/@rsdoctor/types/dist/common").Get<SDK.ServerAPI.RequestBodyTypes, T, void>, R extends SDK.ServerAPI.InferResponseType<T> = import("node_modules/@rsdoctor/types/dist/common").Get<SDK.ServerAPI.ResponseTypes, T, void>>(...args: B extends void ? [api: T] : [api: T, body: B]) => Promise<SDK.ServerAPI.InferResponseType<T>>;
13
+ get loadAPIData(): <T extends SDK.ServerAPI.API | SDK.ServerAPI.APIExtends>(api: T, body: SDK.ServerAPI.InferRequestBodyType<T>) => Promise<SDK.ServerAPI.InferResponseType<T>>;
14
14
  }
15
15
  export {};
@@ -1,26 +1,47 @@
1
1
  import { Common, SDK } from '@rsdoctor/types';
2
2
  import type { Server } from 'http';
3
- import { Server as SocketServer, ServerOptions as SocketServerOptions, Socket as SocketType } from 'socket.io';
3
+ import WebSocket, { WebSocketServer } from 'ws';
4
4
  import { SocketAPILoader } from './api';
5
5
  interface SocketOptions {
6
6
  sdk: SDK.RsdoctorBuilderSDKInstance;
7
7
  server: Server;
8
8
  port: number;
9
- socketOptions?: SocketServerOptions;
10
9
  }
10
+ type Subscription = {
11
+ api: SDK.ServerAPI.API;
12
+ body: Common.PlainObject | null;
13
+ };
14
+ type SubscriptionRecord = Subscription & {
15
+ count: number;
16
+ };
17
+ type ClientMessage = {
18
+ type?: string;
19
+ id?: string;
20
+ api?: SDK.ServerAPI.API;
21
+ body?: Common.PlainObject | null;
22
+ };
11
23
  export declare class Socket {
12
24
  protected options: SocketOptions;
13
- protected io: SocketServer;
25
+ protected server?: WebSocketServer;
26
+ protected clients: Set<WebSocket>;
14
27
  protected loader: SocketAPILoader;
15
- protected map: Map<SDK.ServerAPI.API, (Common.PlainObject | null)[]>;
28
+ protected map: Map<string, SubscriptionRecord>;
29
+ protected clientSubscriptions: Map<WebSocket, Set<string>>;
16
30
  constructor(options: SocketOptions);
17
31
  bootstrap(): void;
18
- protected setupSocket(socket: SocketType): void;
19
- protected saveRequestToMap<T extends SDK.ServerAPI.API>(api: T, body?: SDK.ServerAPI.InferRequestBodyType<T, null> | null): void;
32
+ attachClient(client: WebSocket): void;
33
+ handleClientMessage(raw: string, client?: WebSocket): Promise<void>;
34
+ protected handleAPIRequestMessage(message: ClientMessage, client?: WebSocket): Promise<void>;
35
+ getSubscriptions(): Subscription[];
36
+ protected saveRequestToMap<T extends SDK.ServerAPI.API>(api: T, body?: SDK.ServerAPI.InferRequestBodyType<T, null> | null, client?: WebSocket): void;
37
+ protected removeRequestFromMap<T extends SDK.ServerAPI.API>(api: T, body?: SDK.ServerAPI.InferRequestBodyType<T, null> | null, client?: WebSocket): void;
38
+ protected removeClientSubscriptions(client: WebSocket): void;
39
+ protected removeSubscriptionKey(key: string): void;
40
+ protected getSubscriptionKey(api: SDK.ServerAPI.API, body: Common.PlainObject | null): string;
20
41
  protected getAPIResponse<T extends SDK.ServerAPI.API>(api: T, body: SDK.ServerAPI.InferRequestBodyType<T>): Promise<SDK.ServerAPI.SocketResponseType<SDK.ServerAPI.API>>;
21
42
  protected timer: NodeJS.Immediate | undefined;
22
43
  broadcast(): Promise<void>;
23
- sendAPIData<T extends SDK.ServerAPI.API | SDK.ServerAPI.APIExtends>(api: T, msg: SDK.ServerAPI.SocketResponseType<T>): void;
44
+ sendAPIData<T extends SDK.ServerAPI.API | SDK.ServerAPI.APIExtends>(api: T, payload: SDK.ServerAPI.SocketResponseType<T>): void;
24
45
  dispose(): void;
25
46
  }
26
47
  export {};
@@ -1,26 +1,47 @@
1
1
  import { Common, SDK } from '@rsdoctor/types';
2
2
  import type { Server } from 'http';
3
- import { Server as SocketServer, ServerOptions as SocketServerOptions, Socket as SocketType } from 'socket.io';
3
+ import WebSocket, { WebSocketServer } from 'ws';
4
4
  import { SocketAPILoader } from './api.js';
5
5
  interface SocketOptions {
6
6
  sdk: SDK.RsdoctorBuilderSDKInstance;
7
7
  server: Server;
8
8
  port: number;
9
- socketOptions?: SocketServerOptions;
10
9
  }
10
+ type Subscription = {
11
+ api: SDK.ServerAPI.API;
12
+ body: Common.PlainObject | null;
13
+ };
14
+ type SubscriptionRecord = Subscription & {
15
+ count: number;
16
+ };
17
+ type ClientMessage = {
18
+ type?: string;
19
+ id?: string;
20
+ api?: SDK.ServerAPI.API;
21
+ body?: Common.PlainObject | null;
22
+ };
11
23
  export declare class Socket {
12
24
  protected options: SocketOptions;
13
- protected io: SocketServer;
25
+ protected server?: WebSocketServer;
26
+ protected clients: Set<WebSocket>;
14
27
  protected loader: SocketAPILoader;
15
- protected map: Map<SDK.ServerAPI.API, (Common.PlainObject | null)[]>;
28
+ protected map: Map<string, SubscriptionRecord>;
29
+ protected clientSubscriptions: Map<WebSocket, Set<string>>;
16
30
  constructor(options: SocketOptions);
17
31
  bootstrap(): void;
18
- protected setupSocket(socket: SocketType): void;
19
- protected saveRequestToMap<T extends SDK.ServerAPI.API>(api: T, body?: SDK.ServerAPI.InferRequestBodyType<T, null> | null): void;
32
+ attachClient(client: WebSocket): void;
33
+ handleClientMessage(raw: string, client?: WebSocket): Promise<void>;
34
+ protected handleAPIRequestMessage(message: ClientMessage, client?: WebSocket): Promise<void>;
35
+ getSubscriptions(): Subscription[];
36
+ protected saveRequestToMap<T extends SDK.ServerAPI.API>(api: T, body?: SDK.ServerAPI.InferRequestBodyType<T, null> | null, client?: WebSocket): void;
37
+ protected removeRequestFromMap<T extends SDK.ServerAPI.API>(api: T, body?: SDK.ServerAPI.InferRequestBodyType<T, null> | null, client?: WebSocket): void;
38
+ protected removeClientSubscriptions(client: WebSocket): void;
39
+ protected removeSubscriptionKey(key: string): void;
40
+ protected getSubscriptionKey(api: SDK.ServerAPI.API, body: Common.PlainObject | null): string;
20
41
  protected getAPIResponse<T extends SDK.ServerAPI.API>(api: T, body: SDK.ServerAPI.InferRequestBodyType<T>): Promise<SDK.ServerAPI.SocketResponseType<SDK.ServerAPI.API>>;
21
42
  protected timer: NodeJS.Immediate | undefined;
22
43
  broadcast(): Promise<void>;
23
- sendAPIData<T extends SDK.ServerAPI.API | SDK.ServerAPI.APIExtends>(api: T, msg: SDK.ServerAPI.SocketResponseType<T>): void;
44
+ sendAPIData<T extends SDK.ServerAPI.API | SDK.ServerAPI.APIExtends>(api: T, payload: SDK.ServerAPI.SocketResponseType<T>): void;
24
45
  dispose(): void;
25
46
  }
26
47
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsdoctor/sdk",
3
- "version": "1.5.11",
3
+ "version": "2.0.0-alpha.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/web-infra-dev/rsdoctor",
@@ -30,19 +30,20 @@
30
30
  "dependencies": {
31
31
  "launch-editor": "^2.13.2",
32
32
  "safer-buffer": "2.1.2",
33
- "socket.io": "4.8.1",
34
33
  "tapable": "2.3.3",
35
- "@rsdoctor/client": "1.5.11",
36
- "@rsdoctor/graph": "1.5.11",
37
- "@rsdoctor/types": "1.5.11",
38
- "@rsdoctor/utils": "1.5.11"
34
+ "ws": "8.20.1",
35
+ "@rsdoctor/graph": "2.0.0-alpha.0",
36
+ "@rsdoctor/types": "2.0.0-alpha.0",
37
+ "@rsdoctor/utils": "2.0.0-alpha.0",
38
+ "@rsdoctor/client": "2.0.0-alpha.0"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@types/body-parser": "1.19.6",
42
42
  "@types/connect": "3.4.38",
43
43
  "@types/cors": "2.8.19",
44
44
  "@types/fs-extra": "^11.0.4",
45
- "@types/node": "^22.8.1",
45
+ "@types/node": "^24.12.3",
46
+ "@types/ws": "^8.18.1",
46
47
  "body-parser": "2.2.2",
47
48
  "cors": "2.8.6",
48
49
  "dayjs": "1.11.20",
@@ -52,7 +53,7 @@
52
53
  "source-map": "^0.7.6",
53
54
  "prebundle": "1.6.4",
54
55
  "tslib": "2.8.1",
55
- "typescript": "^5.9.2"
56
+ "typescript": "^6.0.3"
56
57
  },
57
58
  "publishConfig": {
58
59
  "access": "public",