@modern-js/devtools-kit 2.45.0 → 2.46.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.
@@ -0,0 +1,37 @@
1
+ import type { ChannelOptions } from 'birpc';
2
+ export declare class WebSocketChannel implements ChannelOptions {
3
+ static link(ws: WebSocket): Promise<WebSocketChannel>;
4
+ protected ws: WebSocket;
5
+ constructor(ws: WebSocket);
6
+ get handlers(): {
7
+ on: (fn: (data: unknown, ...extras: unknown[]) => void) => void;
8
+ post: (data: string | ArrayBufferLike | Blob | ArrayBufferView, ...extras: unknown[]) => void;
9
+ deserialize: (e: MessageEvent<any>) => unknown;
10
+ serialize: (data: unknown) => string;
11
+ };
12
+ post(data: string | ArrayBufferLike | Blob | ArrayBufferView, ...extras: unknown[]): void;
13
+ on(fn: (data: unknown, ...extras: unknown[]) => void): void;
14
+ serialize(data: unknown): string;
15
+ deserialize(e: MessageEvent): unknown;
16
+ }
17
+ export declare class MessagePortTimeout extends Error {
18
+ constructor();
19
+ }
20
+ export type PostMessageListener = (ev: MessageEvent) => void;
21
+ export interface PostMessageTarget {
22
+ postMessage: (message: unknown, targetOrigin: string, transfer?: Transferable[]) => void;
23
+ addEventListener: (type: string, listener: PostMessageListener, options?: boolean | AddEventListenerOptions) => void;
24
+ removeEventListener: (type: string, listener: PostMessageListener, options?: boolean | EventListenerOptions) => void;
25
+ }
26
+ export declare class MessagePortChannel implements ChannelOptions {
27
+ static link(target: PostMessageTarget, tag?: string): Promise<MessagePortChannel>;
28
+ static wait(target: PostMessageTarget, tag?: string): Promise<MessagePortChannel>;
29
+ port: MessagePort;
30
+ constructor(port: MessagePort);
31
+ get handlers(): {
32
+ on: (fn: (data: unknown, ...extras: unknown[]) => void) => void;
33
+ post: (data: unknown, ...extras: unknown[]) => void;
34
+ };
35
+ post(data: unknown, ...extras: unknown[]): void;
36
+ on(fn: (data: unknown, ...extras: unknown[]) => void): void;
37
+ }
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var channel_exports = {};
20
+ __export(channel_exports, {
21
+ MessagePortChannel: () => MessagePortChannel,
22
+ MessagePortTimeout: () => MessagePortTimeout,
23
+ WebSocketChannel: () => WebSocketChannel
24
+ });
25
+ module.exports = __toCommonJS(channel_exports);
26
+ var import_nanoid = require("nanoid");
27
+ class WebSocketChannel {
28
+ static link(ws) {
29
+ return new Promise((resolve, reject) => {
30
+ const ret = new WebSocketChannel(ws);
31
+ if (ws.readyState === ws.OPEN) {
32
+ resolve(ret);
33
+ } else {
34
+ ws.addEventListener("open", () => resolve(ret), {
35
+ once: true
36
+ });
37
+ ws.addEventListener("error", reject, {
38
+ once: true
39
+ });
40
+ ws.addEventListener("close", reject, {
41
+ once: true
42
+ });
43
+ setTimeout(reject, 1e3);
44
+ }
45
+ });
46
+ }
47
+ get handlers() {
48
+ return {
49
+ on: this.on.bind(this),
50
+ post: this.post.bind(this),
51
+ deserialize: this.deserialize.bind(this),
52
+ serialize: this.serialize.bind(this)
53
+ };
54
+ }
55
+ post(data, ...extras) {
56
+ if (extras.length) {
57
+ throw new Error("Unexpected extra parameters.");
58
+ }
59
+ this.ws.send(data);
60
+ }
61
+ on(fn) {
62
+ this.ws.onmessage = fn;
63
+ }
64
+ serialize(data) {
65
+ return JSON.stringify(data);
66
+ }
67
+ deserialize(e) {
68
+ return JSON.parse(e.data.toString());
69
+ }
70
+ constructor(ws) {
71
+ this.ws = ws;
72
+ const binds = {
73
+ on: this.on.bind(this),
74
+ post: this.post.bind(this),
75
+ deserialize: this.deserialize.bind(this),
76
+ serialize: this.serialize.bind(this)
77
+ };
78
+ Object.assign(this, binds);
79
+ }
80
+ }
81
+ class MessagePortTimeout extends Error {
82
+ constructor() {
83
+ super("Connection to target message channel port timed out");
84
+ }
85
+ }
86
+ class MessagePortChannel {
87
+ static link(target, tag = "channel:connect") {
88
+ return new Promise((resolve, reject) => {
89
+ const id = (0, import_nanoid.nanoid)();
90
+ const { port1, port2 } = new MessageChannel();
91
+ const handleMessage = (e) => {
92
+ if (e.data.tag !== tag)
93
+ return;
94
+ if (e.data.type !== "accepted")
95
+ return;
96
+ if (e.data.id !== id)
97
+ return;
98
+ port2.removeEventListener("message", handleMessage);
99
+ resolve(new MessagePortChannel(port2));
100
+ };
101
+ port2.addEventListener("messageerror", reject, {
102
+ once: true
103
+ });
104
+ port2.addEventListener("message", handleMessage);
105
+ port2.start();
106
+ target.postMessage({
107
+ tag,
108
+ type: "request",
109
+ id
110
+ }, "*", [
111
+ port1
112
+ ]);
113
+ });
114
+ }
115
+ static wait(target, tag = "channel:connect") {
116
+ return new Promise((resolve, reject) => {
117
+ const handleMessage = async (e) => {
118
+ const { data } = e;
119
+ if (!data)
120
+ return;
121
+ if (typeof data !== "object")
122
+ return;
123
+ if (data.tag !== tag)
124
+ return;
125
+ if (data.type !== "request")
126
+ return;
127
+ target.removeEventListener("message", handleMessage);
128
+ const port = e.ports[0];
129
+ if (port) {
130
+ port.postMessage({
131
+ type: "accepted",
132
+ id: data.id,
133
+ tag
134
+ });
135
+ resolve(new MessagePortChannel(port));
136
+ } else {
137
+ reject(new Error("Missing message channel port from remote."));
138
+ }
139
+ };
140
+ target.addEventListener("message", handleMessage);
141
+ });
142
+ }
143
+ get handlers() {
144
+ return {
145
+ on: this.on.bind(this),
146
+ post: this.post.bind(this)
147
+ };
148
+ }
149
+ post(data, ...extras) {
150
+ if (extras.length) {
151
+ throw new Error("Unexpected extra parameters.");
152
+ }
153
+ this.port.postMessage(data);
154
+ }
155
+ on(fn) {
156
+ this.port.addEventListener("message", (e) => fn(e.data));
157
+ }
158
+ constructor(port) {
159
+ this.port = port;
160
+ this.port.start();
161
+ const binds = {
162
+ on: this.on.bind(this),
163
+ post: this.post.bind(this)
164
+ };
165
+ Object.assign(this, binds);
166
+ }
167
+ }
168
+ // Annotate the CommonJS export names for ESM import in node:
169
+ 0 && (module.exports = {
170
+ MessagePortChannel,
171
+ MessagePortTimeout,
172
+ WebSocketChannel
173
+ });
package/dist/index.d.ts CHANGED
@@ -3,3 +3,4 @@ export * from './client';
3
3
  export * from './mount-point';
4
4
  export * from './utils';
5
5
  export * from './constants';
6
+ export * from './channel';
package/dist/index.js CHANGED
@@ -20,11 +20,13 @@ __reExport(src_exports, require("./client"), module.exports);
20
20
  __reExport(src_exports, require("./mount-point"), module.exports);
21
21
  __reExport(src_exports, require("./utils"), module.exports);
22
22
  __reExport(src_exports, require("./constants"), module.exports);
23
+ __reExport(src_exports, require("./channel"), module.exports);
23
24
  // Annotate the CommonJS export names for ESM import in node:
24
25
  0 && (module.exports = {
25
26
  ...require("./server"),
26
27
  ...require("./client"),
27
28
  ...require("./mount-point"),
28
29
  ...require("./utils"),
29
- ...require("./constants")
30
+ ...require("./constants"),
31
+ ...require("./channel")
30
32
  });
package/dist/server.d.ts CHANGED
@@ -1,19 +1,16 @@
1
1
  import type { AppTools, IAppContext, UserConfig } from '@modern-js/app-tools';
2
- import type { BuilderContext } from '@modern-js/builder-shared';
3
- import type { BuilderConfig as WebpackBuilderConfig, NormalizedConfig as NormalizedWebpackBuilderConfig, WebpackConfig, webpack } from '@modern-js/builder-webpack-provider';
4
- import type { BuilderConfig as RspackBuilderConfig, NormalizedConfig as NormalizedRspackBuilderConfig, RspackConfig, Rspack } from '@modern-js/builder-rspack-provider';
2
+ import type { RsbuildContext, NormalizedConfig as NormalizedBuilderConfig, RsbuildConfig, webpack, Rspack, WebpackConfig, RspackConfig } from '@modern-js/uni-builder';
5
3
  import { NormalizedConfig } from '@modern-js/core';
6
4
  import { RouteLegacy, NestedRouteForCli, PageRoute } from '@modern-js/types/cli';
7
5
  import type { ClientDefinition } from './client';
8
- export type { BuilderContext };
6
+ export type BuilderContext = RsbuildContext;
9
7
  export type FrameworkConfig = UserConfig<AppTools>;
10
8
  export type TransformedFrameworkConfig = NormalizedConfig<AppTools>;
11
- export type BuilderConfig = WebpackBuilderConfig | RspackBuilderConfig;
12
- export type { WebpackConfig, RspackConfig };
9
+ export type BuilderConfig = RsbuildConfig;
10
+ export type { NormalizedBuilderConfig, WebpackConfig, RspackConfig };
13
11
  export type Aliases = NonNullable<NonNullable<WebpackConfig['resolve']>['alias']>;
14
12
  export type BundlerConfig = WebpackConfig | RspackConfig;
15
13
  export type Compiler = webpack.Compiler | Rspack.Compiler | webpack.MultiCompiler | Rspack.MultiCompiler;
16
- export type NormalizedBuilderConfig = NormalizedWebpackBuilderConfig | NormalizedRspackBuilderConfig;
17
14
  export type AppContext = Omit<IAppContext, 'builder' | 'serverInternalPlugins'>;
18
15
  export type FileSystemRoutes = RouteLegacy[] | (NestedRouteForCli | PageRoute)[];
19
16
  export interface ServerFunctions {
@@ -25,7 +22,7 @@ export interface ServerFunctions {
25
22
  getTransformedBundlerConfigs: () => Promise<BundlerConfig[]>;
26
23
  getAppContext: () => Promise<AppContext>;
27
24
  getFileSystemRoutes: (entryName: string) => Promise<FileSystemRoutes>;
28
- getBuilderContext: () => Promise<BuilderContext>;
25
+ getBuilderContext: () => Promise<RsbuildContext>;
29
26
  getDependencies: () => Promise<Record<string, string>>;
30
27
  getCompileTimeCost: () => Promise<number>;
31
28
  getClientDefinition: () => Promise<ClientDefinition>;
package/package.json CHANGED
@@ -12,13 +12,16 @@
12
12
  "dist"
13
13
  ],
14
14
  "license": "MIT",
15
+ "engines": {
16
+ "node": ">14"
17
+ },
15
18
  "keywords": [
16
19
  "react",
17
20
  "framework",
18
21
  "modern",
19
22
  "modern.js"
20
23
  ],
21
- "version": "2.45.0",
24
+ "version": "2.46.0",
22
25
  "jsnext:source": "./src/index.ts",
23
26
  "types": "./dist/index.d.ts",
24
27
  "main": "./dist/index.js",
@@ -45,26 +48,33 @@
45
48
  }
46
49
  },
47
50
  "dependencies": {
51
+ "birpc": "0.2.13",
52
+ "hookable": "^5.5.3",
48
53
  "ufo": "^1.3.0",
49
54
  "ws": "^8.13.0",
50
- "@modern-js/types": "2.45.0",
51
- "@modern-js/utils": "2.45.0"
55
+ "@modern-js/types": "2.46.0",
56
+ "@modern-js/utils": "2.46.0"
52
57
  },
53
58
  "devDependencies": {
59
+ "@babel/core": "^7.23.2",
60
+ "@babel/preset-env": "^7.22.15",
61
+ "@babel/preset-typescript": "^7.22.15",
54
62
  "@swc/helpers": "0.5.3",
63
+ "@types/jest": "^29",
55
64
  "@types/node": "^14",
56
65
  "@types/ws": "^8.5.5",
66
+ "jest": "^29",
67
+ "nanoid": "3.3.4",
57
68
  "react": "~18.2.0",
58
69
  "type-fest": "^4.1.0",
59
70
  "typescript": "^5",
60
- "@modern-js/app-tools": "2.45.0",
61
- "@modern-js/builder-rspack-provider": "2.45.0",
62
- "@modern-js/builder-shared": "2.45.0",
63
- "@modern-js/types": "2.45.0",
64
- "@modern-js/builder-webpack-provider": "2.45.0",
65
- "@scripts/build": "2.45.0",
66
- "@modern-js/core": "2.45.0",
67
- "@modern-js/module-tools": "2.45.0"
71
+ "@modern-js/app-tools": "2.46.0",
72
+ "@modern-js/core": "2.46.0",
73
+ "@modern-js/types": "2.46.0",
74
+ "@modern-js/uni-builder": "2.46.0",
75
+ "@modern-js/module-tools": "2.46.0",
76
+ "@scripts/jest-config": "2.46.0",
77
+ "@scripts/build": "2.46.0"
68
78
  },
69
79
  "peerDependencies": {
70
80
  "react": "~18.2.0"
@@ -79,6 +89,6 @@
79
89
  "new": "modern-lib new",
80
90
  "dev": "modern-lib build --watch",
81
91
  "build": "modern-lib build",
82
- "test": "jest --passWithNoTests"
92
+ "test": "jest"
83
93
  }
84
94
  }