@rahul_ur/devlink-bridge 1.0.1 → 1.0.2
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/dist/bridge.d.ts +4 -0
- package/dist/bridge.d.ts.map +1 -1
- package/dist/bridge.js +73 -19
- package/dist/bridge.js.map +1 -1
- package/dist-cjs/bridge.js +73 -19
- package/package.json +5 -5
package/dist/bridge.d.ts
CHANGED
|
@@ -26,6 +26,10 @@ export declare class DevlinkBridge {
|
|
|
26
26
|
start(): void;
|
|
27
27
|
private connect;
|
|
28
28
|
private findOpenPort;
|
|
29
|
+
/** Probe all ports concurrently and resolve with the first one that opens. */
|
|
30
|
+
private raceFirst;
|
|
31
|
+
private readLastPort;
|
|
32
|
+
private saveLastPort;
|
|
29
33
|
private canConnect;
|
|
30
34
|
private scheduleReconnect;
|
|
31
35
|
private startHeartbeat;
|
package/dist/bridge.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,YAAY,EAGZ,QAAQ,EACT,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,YAAY,EAGZ,QAAQ,EACT,MAAM,SAAS,CAAC;AAcjB,KAAK,iBAAiB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AACjE,KAAK,iBAAiB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAChD,KAAK,aAAa,GAAG,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;AAEpD,qBAAa,aAAa;IACxB,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,YAAY,CAA6C;IACjE,OAAO,CAAC,cAAc,CAA6C;IACnE,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,aAAa,CAA+C;IACpE,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,IAAI,CAAuG;IACnH,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;gBAEd,IAAI,GAAE,aAAkB;IAcpC,qEAAqE;IAC9D,KAAK,IAAI,IAAI;YAMN,OAAO;YA2DP,YAAY;IAiC1B,8EAA8E;IAC9E,OAAO,CAAC,SAAS;IAsBjB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,aAAa;YAgDP,eAAe;IAa7B,OAAO,CAAC,OAAO;IA2Bf,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,SAAS;IASjB,2EAA2E;IACrE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAS7C;;;;OAIG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW7D,4BAA4B;IACtB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAInE;;;;OAIG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC;IAc9E,gCAAgC;IAChC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM,IAAI;YAUrD,WAAW;IAgBzB,2DAA2D;IAC3D,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,MAAM,IAAI;IAQ1D,sEAAsE;IACtE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI;IAIzC,6CAA6C;IAC7C,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,IAAI;IAMlD,gCAAgC;IAChC,SAAS,IAAI,YAAY;IAIzB,sDAAsD;IACtD,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAIjC,+CAA+C;IAC/C,aAAa,IAAI,MAAM,GAAG,IAAI;IAI9B,mCAAmC;IACnC,gBAAgB;;;;;IAIhB,sEAAsE;IACtE,OAAO,IAAI,IAAI;CAShB"}
|
package/dist/bridge.js
CHANGED
|
@@ -2,9 +2,10 @@ import { FileCache } from './cache';
|
|
|
2
2
|
const PROTOCOL_VERSION = '1.0';
|
|
3
3
|
const DEFAULT_PORTS = [7100, 7101, 7102, 7103, 7104];
|
|
4
4
|
const PORT_RANGE_DEFAULT = [7100, 7200];
|
|
5
|
+
const LAST_PORT_KEY = '__devlink_last_port__';
|
|
5
6
|
export class DevlinkBridge {
|
|
6
7
|
constructor(opts = {}) {
|
|
7
|
-
var _a, _b, _c, _d, _e, _f
|
|
8
|
+
var _a, _b, _c, _d, _e, _f;
|
|
8
9
|
this.ws = null;
|
|
9
10
|
this.status = 'disconnected';
|
|
10
11
|
this.pending = new Map();
|
|
@@ -29,10 +30,9 @@ export class DevlinkBridge {
|
|
|
29
30
|
maxReconnectAttempts: (_e = opts.maxReconnectAttempts) !== null && _e !== void 0 ? _e : Infinity,
|
|
30
31
|
reconnectBaseMs: (_f = opts.reconnectBaseMs) !== null && _f !== void 0 ? _f : 500,
|
|
31
32
|
onStatusChange: opts.onStatusChange,
|
|
32
|
-
autoConnect: (_g = opts.autoConnect) !== null && _g !== void 0 ? _g : true,
|
|
33
33
|
};
|
|
34
34
|
this.clientId = `devlink-${Math.random().toString(36).slice(2, 10)}`;
|
|
35
|
-
if (
|
|
35
|
+
if (opts.autoConnect !== false)
|
|
36
36
|
this.connect();
|
|
37
37
|
}
|
|
38
38
|
/** Manually start the connection (use when autoConnect is false). */
|
|
@@ -45,13 +45,21 @@ export class DevlinkBridge {
|
|
|
45
45
|
if (this.destroyed)
|
|
46
46
|
return;
|
|
47
47
|
this.setStatus('connecting');
|
|
48
|
-
|
|
48
|
+
// On reconnect, try the last known port directly before doing a full scan
|
|
49
|
+
let port = null;
|
|
50
|
+
if (this.activePort !== null) {
|
|
51
|
+
port = this.activePort;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
port = await this.findOpenPort();
|
|
55
|
+
}
|
|
49
56
|
if (port === null) {
|
|
50
57
|
console.warn('[devlink-bridge] No VSCode extension found on ports', this.opts.portRange);
|
|
51
58
|
this.scheduleReconnect();
|
|
52
59
|
return;
|
|
53
60
|
}
|
|
54
61
|
this.activePort = port;
|
|
62
|
+
this.saveLastPort(port);
|
|
55
63
|
const url = `ws://127.0.0.1:${port}`;
|
|
56
64
|
try {
|
|
57
65
|
this.ws = new WebSocket(url);
|
|
@@ -78,47 +86,93 @@ export class DevlinkBridge {
|
|
|
78
86
|
this.ws.onclose = () => {
|
|
79
87
|
this.stopHeartbeat();
|
|
80
88
|
this.rejectAllPending('Connection closed');
|
|
81
|
-
if (!this.destroyed)
|
|
89
|
+
if (!this.destroyed) {
|
|
90
|
+
// If reconnect fails twice on the known port, do a fresh scan
|
|
91
|
+
if (this.reconnectAttempts >= 2)
|
|
92
|
+
this.activePort = null;
|
|
82
93
|
this.scheduleReconnect();
|
|
94
|
+
}
|
|
83
95
|
};
|
|
84
96
|
this.ws.onerror = () => {
|
|
85
97
|
// onerror is always followed by onclose, so we handle there
|
|
86
98
|
};
|
|
87
99
|
}
|
|
88
100
|
async findOpenPort() {
|
|
89
|
-
//
|
|
101
|
+
// ── Fast path 1: explicit port option ────────────────────────────────────
|
|
90
102
|
if (this.opts.port) {
|
|
91
103
|
if (await this.canConnect(this.opts.port))
|
|
92
104
|
return this.opts.port;
|
|
93
105
|
}
|
|
94
|
-
//
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
if (
|
|
98
|
-
return
|
|
106
|
+
// ── Fast path 2: last known good port (cached across page reloads) ───────
|
|
107
|
+
const lastPort = this.readLastPort();
|
|
108
|
+
if (lastPort && !DEFAULT_PORTS.includes(lastPort)) {
|
|
109
|
+
if (await this.canConnect(lastPort))
|
|
110
|
+
return lastPort;
|
|
99
111
|
}
|
|
100
|
-
//
|
|
112
|
+
// ── Fast path 3: race all default ports simultaneously ───────────────────
|
|
113
|
+
// Resolves the instant the first one answers — no waiting for others
|
|
114
|
+
const defaultPort = await this.raceFirst(DEFAULT_PORTS);
|
|
115
|
+
if (defaultPort !== null)
|
|
116
|
+
return defaultPort;
|
|
117
|
+
// ── Full range scan: batches of 20 concurrently ──────────────────────────
|
|
101
118
|
const [min, max] = this.opts.portRange;
|
|
102
119
|
const rangePorts = [];
|
|
103
120
|
for (let p = min; p <= max; p++) {
|
|
104
121
|
if (!DEFAULT_PORTS.includes(p))
|
|
105
122
|
rangePorts.push(p);
|
|
106
123
|
}
|
|
107
|
-
const BATCH =
|
|
124
|
+
const BATCH = 20;
|
|
108
125
|
for (let i = 0; i < rangePorts.length; i += BATCH) {
|
|
109
126
|
const batch = rangePorts.slice(i, i + BATCH);
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
return p;
|
|
114
|
-
}
|
|
127
|
+
const found = await this.raceFirst(batch);
|
|
128
|
+
if (found !== null)
|
|
129
|
+
return found;
|
|
115
130
|
}
|
|
116
131
|
return null;
|
|
117
132
|
}
|
|
133
|
+
/** Probe all ports concurrently and resolve with the first one that opens. */
|
|
134
|
+
raceFirst(ports) {
|
|
135
|
+
return new Promise(resolve => {
|
|
136
|
+
let settled = false;
|
|
137
|
+
let remaining = ports.length;
|
|
138
|
+
const done = (port) => {
|
|
139
|
+
if (settled)
|
|
140
|
+
return;
|
|
141
|
+
if (port !== null) {
|
|
142
|
+
settled = true;
|
|
143
|
+
resolve(port);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
remaining--;
|
|
147
|
+
if (remaining === 0)
|
|
148
|
+
resolve(null);
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
for (const port of ports) {
|
|
152
|
+
this.canConnect(port).then(ok => done(ok ? port : null));
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
readLastPort() {
|
|
157
|
+
try {
|
|
158
|
+
const v = localStorage.getItem(LAST_PORT_KEY);
|
|
159
|
+
const n = v ? parseInt(v, 10) : NaN;
|
|
160
|
+
return Number.isFinite(n) ? n : null;
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
saveLastPort(port) {
|
|
167
|
+
try {
|
|
168
|
+
localStorage.setItem(LAST_PORT_KEY, String(port));
|
|
169
|
+
}
|
|
170
|
+
catch { }
|
|
171
|
+
}
|
|
118
172
|
canConnect(port) {
|
|
119
173
|
return new Promise(resolve => {
|
|
120
174
|
const ws = new WebSocket(`ws://127.0.0.1:${port}`);
|
|
121
|
-
const timer = setTimeout(() => { ws.close(); resolve(false); },
|
|
175
|
+
const timer = setTimeout(() => { ws.close(); resolve(false); }, 1000);
|
|
122
176
|
ws.onopen = () => { clearTimeout(timer); ws.close(); resolve(true); };
|
|
123
177
|
ws.onerror = () => { clearTimeout(timer); resolve(false); };
|
|
124
178
|
});
|
package/dist/bridge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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"}
|
package/dist-cjs/bridge.js
CHANGED
|
@@ -5,9 +5,10 @@ const cache_1 = require("./cache");
|
|
|
5
5
|
const PROTOCOL_VERSION = '1.0';
|
|
6
6
|
const DEFAULT_PORTS = [7100, 7101, 7102, 7103, 7104];
|
|
7
7
|
const PORT_RANGE_DEFAULT = [7100, 7200];
|
|
8
|
+
const LAST_PORT_KEY = '__devlink_last_port__';
|
|
8
9
|
class DevlinkBridge {
|
|
9
10
|
constructor(opts = {}) {
|
|
10
|
-
var _a, _b, _c, _d, _e, _f
|
|
11
|
+
var _a, _b, _c, _d, _e, _f;
|
|
11
12
|
this.ws = null;
|
|
12
13
|
this.status = 'disconnected';
|
|
13
14
|
this.pending = new Map();
|
|
@@ -32,10 +33,9 @@ class DevlinkBridge {
|
|
|
32
33
|
maxReconnectAttempts: (_e = opts.maxReconnectAttempts) !== null && _e !== void 0 ? _e : Infinity,
|
|
33
34
|
reconnectBaseMs: (_f = opts.reconnectBaseMs) !== null && _f !== void 0 ? _f : 500,
|
|
34
35
|
onStatusChange: opts.onStatusChange,
|
|
35
|
-
autoConnect: (_g = opts.autoConnect) !== null && _g !== void 0 ? _g : true,
|
|
36
36
|
};
|
|
37
37
|
this.clientId = `devlink-${Math.random().toString(36).slice(2, 10)}`;
|
|
38
|
-
if (
|
|
38
|
+
if (opts.autoConnect !== false)
|
|
39
39
|
this.connect();
|
|
40
40
|
}
|
|
41
41
|
/** Manually start the connection (use when autoConnect is false). */
|
|
@@ -48,13 +48,21 @@ class DevlinkBridge {
|
|
|
48
48
|
if (this.destroyed)
|
|
49
49
|
return;
|
|
50
50
|
this.setStatus('connecting');
|
|
51
|
-
|
|
51
|
+
// On reconnect, try the last known port directly before doing a full scan
|
|
52
|
+
let port = null;
|
|
53
|
+
if (this.activePort !== null) {
|
|
54
|
+
port = this.activePort;
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
port = await this.findOpenPort();
|
|
58
|
+
}
|
|
52
59
|
if (port === null) {
|
|
53
60
|
console.warn('[devlink-bridge] No VSCode extension found on ports', this.opts.portRange);
|
|
54
61
|
this.scheduleReconnect();
|
|
55
62
|
return;
|
|
56
63
|
}
|
|
57
64
|
this.activePort = port;
|
|
65
|
+
this.saveLastPort(port);
|
|
58
66
|
const url = `ws://127.0.0.1:${port}`;
|
|
59
67
|
try {
|
|
60
68
|
this.ws = new WebSocket(url);
|
|
@@ -81,47 +89,93 @@ class DevlinkBridge {
|
|
|
81
89
|
this.ws.onclose = () => {
|
|
82
90
|
this.stopHeartbeat();
|
|
83
91
|
this.rejectAllPending('Connection closed');
|
|
84
|
-
if (!this.destroyed)
|
|
92
|
+
if (!this.destroyed) {
|
|
93
|
+
// If reconnect fails twice on the known port, do a fresh scan
|
|
94
|
+
if (this.reconnectAttempts >= 2)
|
|
95
|
+
this.activePort = null;
|
|
85
96
|
this.scheduleReconnect();
|
|
97
|
+
}
|
|
86
98
|
};
|
|
87
99
|
this.ws.onerror = () => {
|
|
88
100
|
// onerror is always followed by onclose, so we handle there
|
|
89
101
|
};
|
|
90
102
|
}
|
|
91
103
|
async findOpenPort() {
|
|
92
|
-
//
|
|
104
|
+
// ── Fast path 1: explicit port option ────────────────────────────────────
|
|
93
105
|
if (this.opts.port) {
|
|
94
106
|
if (await this.canConnect(this.opts.port))
|
|
95
107
|
return this.opts.port;
|
|
96
108
|
}
|
|
97
|
-
//
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
if (
|
|
101
|
-
return
|
|
109
|
+
// ── Fast path 2: last known good port (cached across page reloads) ───────
|
|
110
|
+
const lastPort = this.readLastPort();
|
|
111
|
+
if (lastPort && !DEFAULT_PORTS.includes(lastPort)) {
|
|
112
|
+
if (await this.canConnect(lastPort))
|
|
113
|
+
return lastPort;
|
|
102
114
|
}
|
|
103
|
-
//
|
|
115
|
+
// ── Fast path 3: race all default ports simultaneously ───────────────────
|
|
116
|
+
// Resolves the instant the first one answers — no waiting for others
|
|
117
|
+
const defaultPort = await this.raceFirst(DEFAULT_PORTS);
|
|
118
|
+
if (defaultPort !== null)
|
|
119
|
+
return defaultPort;
|
|
120
|
+
// ── Full range scan: batches of 20 concurrently ──────────────────────────
|
|
104
121
|
const [min, max] = this.opts.portRange;
|
|
105
122
|
const rangePorts = [];
|
|
106
123
|
for (let p = min; p <= max; p++) {
|
|
107
124
|
if (!DEFAULT_PORTS.includes(p))
|
|
108
125
|
rangePorts.push(p);
|
|
109
126
|
}
|
|
110
|
-
const BATCH =
|
|
127
|
+
const BATCH = 20;
|
|
111
128
|
for (let i = 0; i < rangePorts.length; i += BATCH) {
|
|
112
129
|
const batch = rangePorts.slice(i, i + BATCH);
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
return p;
|
|
117
|
-
}
|
|
130
|
+
const found = await this.raceFirst(batch);
|
|
131
|
+
if (found !== null)
|
|
132
|
+
return found;
|
|
118
133
|
}
|
|
119
134
|
return null;
|
|
120
135
|
}
|
|
136
|
+
/** Probe all ports concurrently and resolve with the first one that opens. */
|
|
137
|
+
raceFirst(ports) {
|
|
138
|
+
return new Promise(resolve => {
|
|
139
|
+
let settled = false;
|
|
140
|
+
let remaining = ports.length;
|
|
141
|
+
const done = (port) => {
|
|
142
|
+
if (settled)
|
|
143
|
+
return;
|
|
144
|
+
if (port !== null) {
|
|
145
|
+
settled = true;
|
|
146
|
+
resolve(port);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
remaining--;
|
|
150
|
+
if (remaining === 0)
|
|
151
|
+
resolve(null);
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
for (const port of ports) {
|
|
155
|
+
this.canConnect(port).then(ok => done(ok ? port : null));
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
readLastPort() {
|
|
160
|
+
try {
|
|
161
|
+
const v = localStorage.getItem(LAST_PORT_KEY);
|
|
162
|
+
const n = v ? parseInt(v, 10) : NaN;
|
|
163
|
+
return Number.isFinite(n) ? n : null;
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
saveLastPort(port) {
|
|
170
|
+
try {
|
|
171
|
+
localStorage.setItem(LAST_PORT_KEY, String(port));
|
|
172
|
+
}
|
|
173
|
+
catch { }
|
|
174
|
+
}
|
|
121
175
|
canConnect(port) {
|
|
122
176
|
return new Promise(resolve => {
|
|
123
177
|
const ws = new WebSocket(`ws://127.0.0.1:${port}`);
|
|
124
|
-
const timer = setTimeout(() => { ws.close(); resolve(false); },
|
|
178
|
+
const timer = setTimeout(() => { ws.close(); resolve(false); }, 1000);
|
|
125
179
|
ws.onopen = () => { clearTimeout(timer); ws.close(); resolve(true); };
|
|
126
180
|
ws.onerror = () => { clearTimeout(timer); resolve(false); };
|
|
127
181
|
});
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rahul_ur/devlink-bridge",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "Browser SDK + local bridge server for devlink
|
|
3
|
+
"version": "1.0.2",
|
|
4
|
+
"description": "Browser SDK + local bridge server for devlink \u2014 connects your web app to VSCode over a local WebSocket",
|
|
5
5
|
"main": "dist-cjs/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -26,9 +26,9 @@
|
|
|
26
26
|
"README.md"
|
|
27
27
|
],
|
|
28
28
|
"scripts": {
|
|
29
|
-
"build": "tsc -p tsconfig.json && tsc -p tsconfig.cjs.json && node scripts/rename-esm.mjs",
|
|
30
|
-
"dev": "tsc --watch",
|
|
31
|
-
"test": "jest --no-coverage --passWithNoTests",
|
|
29
|
+
"build": "npx tsc -p tsconfig.json && npx tsc -p tsconfig.cjs.json && node scripts/rename-esm.mjs",
|
|
30
|
+
"dev": "npx tsc --watch",
|
|
31
|
+
"test": "npx jest --no-coverage --passWithNoTests",
|
|
32
32
|
"prepublishOnly": "npm run build && npm test && npm pack --dry-run"
|
|
33
33
|
},
|
|
34
34
|
"keywords": [
|