@modern-js/devtools-kit 0.0.0-nightly-20240113170616 → 0.0.0-nightly-20240115170642

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/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": "0.0.0-nightly-20240113170616",
24
+ "version": "0.0.0-nightly-20240115170642",
22
25
  "jsnext:source": "./src/index.ts",
23
26
  "types": "./dist/index.d.ts",
24
27
  "main": "./dist/index.js",
@@ -45,24 +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": "0.0.0-nightly-20240113170616",
51
- "@modern-js/utils": "0.0.0-nightly-20240113170616"
55
+ "@modern-js/utils": "0.0.0-nightly-20240115170642",
56
+ "@modern-js/types": "0.0.0-nightly-20240115170642"
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": "0.0.0-nightly-20240113170616",
61
- "@modern-js/core": "0.0.0-nightly-20240113170616",
62
- "@modern-js/uni-builder": "0.0.0-nightly-20240113170616",
63
- "@modern-js/module-tools": "0.0.0-nightly-20240113170616",
64
- "@modern-js/types": "0.0.0-nightly-20240113170616",
65
- "@scripts/build": "0.0.0-nightly-20240113170616"
71
+ "@modern-js/app-tools": "0.0.0-nightly-20240115170642",
72
+ "@modern-js/core": "0.0.0-nightly-20240115170642",
73
+ "@modern-js/types": "0.0.0-nightly-20240115170642",
74
+ "@modern-js/module-tools": "0.0.0-nightly-20240115170642",
75
+ "@scripts/build": "0.0.0-nightly-20240115170642",
76
+ "@modern-js/uni-builder": "0.0.0-nightly-20240115170642",
77
+ "@scripts/jest-config": "0.0.0-nightly-20240115170642"
66
78
  },
67
79
  "peerDependencies": {
68
80
  "react": "~18.2.0"
@@ -77,6 +89,6 @@
77
89
  "new": "modern-lib new",
78
90
  "dev": "modern-lib build --watch",
79
91
  "build": "modern-lib build",
80
- "test": "jest --passWithNoTests"
92
+ "test": "jest"
81
93
  }
82
94
  }