@lwc/lwc-dev-server 10.6.0 → 10.7.1
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/bin.js +1 -2
- package/dist/bin.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/server/bundler/lexBundler.d.ts +4 -4
- package/dist/server/bundler/lexBundler.js +14 -16
- package/dist/server/bundler/lexBundler.js.map +1 -1
- package/dist/server/bundler/lexBundler.spec.js +90 -48
- package/dist/server/bundler/lexBundler.spec.js.map +1 -1
- package/dist/server/connection/client.d.ts +5 -7
- package/dist/server/connection/client.js +24 -41
- package/dist/server/connection/client.js.map +1 -1
- package/dist/server/connection/client.spec.js +96 -59
- package/dist/server/connection/client.spec.js.map +1 -1
- package/dist/server/connection/connection.d.ts +4 -4
- package/dist/server/connection/connection.js +9 -3
- package/dist/server/connection/connection.js.map +1 -1
- package/dist/server/connection/connection.spec.js +7 -9
- package/dist/server/connection/connection.spec.js.map +1 -1
- package/dist/server/connection/web-socket-server.d.ts +2 -1
- package/dist/server/connection/web-socket-server.js +5 -6
- package/dist/server/connection/web-socket-server.js.map +1 -1
- package/dist/server/connection/web-socket-server.spec.js +2 -6
- package/dist/server/connection/web-socket-server.spec.js.map +1 -1
- package/dist/server/index.d.ts +5 -4
- package/dist/server/index.js +13 -13
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.spec.js +45 -32
- package/dist/server/index.spec.js.map +1 -1
- package/dist/server/moduleGraph/index.d.ts +18 -42
- package/dist/server/moduleGraph/index.js +72 -119
- package/dist/server/moduleGraph/index.js.map +1 -1
- package/dist/server/moduleGraph/index.spec.js +106 -52
- package/dist/server/moduleGraph/index.spec.js.map +1 -1
- package/dist/server/moduleGraph/module.d.ts +78 -0
- package/dist/server/moduleGraph/module.js +126 -0
- package/dist/server/moduleGraph/module.js.map +1 -0
- package/dist/server/moduleGraph/module.spec.d.ts +1 -0
- package/dist/server/moduleGraph/module.spec.js +70 -0
- package/dist/server/moduleGraph/module.spec.js.map +1 -0
- package/dist/server/moduleGraph/workspaceScanner/__tests__/fileReader.spec.js +3 -3
- package/dist/server/moduleGraph/workspaceScanner/__tests__/fileReader.spec.js.map +1 -1
- package/dist/server/moduleGraph/workspaceScanner/__tests__/internal.spec.js +8 -9
- package/dist/server/moduleGraph/workspaceScanner/__tests__/internal.spec.js.map +1 -1
- package/dist/server/moduleGraph/workspaceScanner/__tests__/mrt.spec.js +1 -6
- package/dist/server/moduleGraph/workspaceScanner/__tests__/mrt.spec.js.map +1 -1
- package/dist/server/moduleGraph/workspaceScanner/__tests__/sfcli.spec.js +1 -6
- package/dist/server/moduleGraph/workspaceScanner/__tests__/sfcli.spec.js.map +1 -1
- package/dist/server/moduleGraph/workspaceScanner/fileReader.d.ts +8 -2
- package/dist/server/moduleGraph/workspaceScanner/fileReader.js +16 -17
- package/dist/server/moduleGraph/workspaceScanner/fileReader.js.map +1 -1
- package/dist/server/moduleGraph/workspaceScanner/index.d.ts +2 -1
- package/dist/server/moduleGraph/workspaceScanner/index.js.map +1 -1
- package/dist/server/moduleGraph/workspaceScanner/salesforceCli.js +2 -14
- package/dist/server/moduleGraph/workspaceScanner/salesforceCli.js.map +1 -1
- package/dist/server/moduleGraph/workspaceScanner/scanner.d.ts +8 -34
- package/dist/server/moduleGraph/workspaceScanner/scanner.js +9 -18
- package/dist/server/moduleGraph/workspaceScanner/scanner.js.map +1 -1
- package/dist/server/util/module-util.d.ts +10 -0
- package/dist/server/util/module-util.js +10 -0
- package/dist/server/util/module-util.js.map +1 -0
- package/dist/server/watcher/index.js +1 -2
- package/dist/server/watcher/index.js.map +1 -1
- package/dist/server/watcher/index.spec.js +1 -1
- package/dist/server/watcher/index.spec.js.map +1 -1
- package/dist/types/devServer.d.ts +2 -4
- package/dist/types/serverConfig.d.ts +0 -12
- package/dist/types/serverConfig.js +0 -12
- package/dist/types/serverConfig.js.map +1 -1
- package/package.json +5 -5
- package/dist/server/consoleLogger.d.ts +0 -6
- package/dist/server/consoleLogger.js +0 -33
- package/dist/server/consoleLogger.js.map +0 -1
|
@@ -1,88 +1,125 @@
|
|
|
1
|
-
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
2
|
-
import { LogLevel, Workspace } from '../../types/serverConfig';
|
|
3
1
|
import { compile } from '../bundler/lexBundler.js';
|
|
4
|
-
import {
|
|
5
|
-
|
|
2
|
+
import { Module } from '../moduleGraph/module.js';
|
|
3
|
+
import { Client } from './client.js';
|
|
4
|
+
// Mock dependencies
|
|
5
|
+
vi.mock('../bundler/lexBundler.js', () => ({
|
|
6
|
+
compile: vi.fn(),
|
|
7
|
+
}));
|
|
6
8
|
describe('Client', () => {
|
|
9
|
+
let clientId;
|
|
10
|
+
let url;
|
|
11
|
+
let connection;
|
|
12
|
+
let ctx;
|
|
7
13
|
let client;
|
|
8
|
-
let mockConnection;
|
|
9
|
-
let mockCtx;
|
|
10
|
-
let mockConfig;
|
|
11
|
-
const mockClientId = 'client-id';
|
|
12
|
-
const mockUrl = 'http://localhost';
|
|
13
|
-
const mockModuleGraph = {
|
|
14
|
-
getFileByModulePath: vi.fn(),
|
|
15
|
-
registerActivePaths: vi.fn(),
|
|
16
|
-
getModuleBoundary: vi.fn(),
|
|
17
|
-
getStaleModules: vi.fn().mockReturnValue(['stale-module']),
|
|
18
|
-
};
|
|
19
|
-
const mockLogger = {
|
|
20
|
-
log: vi.fn(),
|
|
21
|
-
};
|
|
22
14
|
beforeEach(() => {
|
|
23
|
-
|
|
24
|
-
|
|
15
|
+
clientId = 'test-client-id';
|
|
16
|
+
url = 'http://localhost';
|
|
17
|
+
connection = {
|
|
25
18
|
receive: vi.fn(),
|
|
19
|
+
send: vi.fn(),
|
|
26
20
|
onClose: vi.fn(),
|
|
27
21
|
close: vi.fn(),
|
|
28
22
|
};
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
23
|
+
ctx = {
|
|
24
|
+
logger: {
|
|
25
|
+
debug: vi.fn(),
|
|
26
|
+
},
|
|
27
|
+
moduleGraph: {
|
|
28
|
+
getModulePart: vi.fn(),
|
|
29
|
+
getStaleModules: vi.fn(),
|
|
30
|
+
},
|
|
31
|
+
config: {
|
|
32
|
+
lifecycle: {
|
|
33
|
+
emitTelemetry: vi.fn(),
|
|
34
|
+
},
|
|
35
|
+
},
|
|
35
36
|
};
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
client
|
|
37
|
+
client = new Client(clientId, url, connection, ctx);
|
|
38
|
+
});
|
|
39
|
+
it('should initialize with correct properties', () => {
|
|
40
|
+
expect(client.clientId).toBe(clientId);
|
|
41
|
+
expect(client.url).toBe(url);
|
|
42
|
+
expect(client.connection).toBe(connection);
|
|
43
|
+
expect(client.ctx).toBe(ctx);
|
|
44
|
+
expect(connection.receive).toHaveBeenCalledWith(expect.any(Function));
|
|
43
45
|
});
|
|
44
|
-
it('should
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
expect(
|
|
48
|
-
expect(client.ctx).toBe(mockCtx);
|
|
49
|
-
expect(mockConnection.receive).toHaveBeenCalled();
|
|
46
|
+
it('should handle onClose callback', () => {
|
|
47
|
+
const callback = vi.fn();
|
|
48
|
+
client.onClose(callback);
|
|
49
|
+
expect(connection.onClose).toHaveBeenCalledWith(callback);
|
|
50
50
|
});
|
|
51
|
-
it('should send data
|
|
51
|
+
it('should send data', () => {
|
|
52
52
|
const data = { type: 'update', data: [] };
|
|
53
53
|
client.send(data);
|
|
54
|
-
expect(
|
|
54
|
+
expect(connection.send).toHaveBeenCalledWith(data);
|
|
55
55
|
});
|
|
56
|
-
it('should
|
|
57
|
-
|
|
58
|
-
client.
|
|
59
|
-
|
|
60
|
-
|
|
56
|
+
it('should handle fetch message callbacks', async () => {
|
|
57
|
+
vi.mocked(ctx.moduleGraph.getStaleModules).mockReturnValue(new Set());
|
|
58
|
+
await client.messageCallback({
|
|
59
|
+
type: 'register',
|
|
60
|
+
data: {
|
|
61
|
+
modules: [{ compileOptions: {}, hash: 'hash1', modulePath: 'ns/name/cmp.js' }],
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
const data = {
|
|
65
|
+
type: 'fetch',
|
|
66
|
+
data: { modulePath: 'ns/name/cmp.js' },
|
|
67
|
+
};
|
|
68
|
+
const modulePart = { module: new Module('', 'ns', 'name', {}), part: 'cmp.js' };
|
|
69
|
+
vi.mocked(ctx.moduleGraph.getModulePart).mockReturnValue(modulePart);
|
|
70
|
+
vi.mocked(compile).mockResolvedValue({ code: 'compiled code', warnings: [] });
|
|
71
|
+
await client.messageCallback(data);
|
|
72
|
+
expect(ctx.logger.debug).toHaveBeenCalledWith(`[LWC Dev Server] Compiling ns/name/cmp.js`);
|
|
73
|
+
expect(compile).toHaveBeenCalledWith(ctx, modulePart, {});
|
|
74
|
+
expect(ctx.logger.debug).toHaveBeenCalledWith(`[LWC Dev Server] Sending an updated ns/name/cmp.js`);
|
|
75
|
+
expect(connection.send).toHaveBeenCalledWith({
|
|
76
|
+
type: 'module-update',
|
|
77
|
+
data: [{ modulePath: 'ns/name/cmp.js', src: 'compiled code' }],
|
|
78
|
+
});
|
|
79
|
+
expect(ctx.config.lifecycle.emitTelemetry).toHaveBeenCalledWith({
|
|
80
|
+
eventName: 'compile-success',
|
|
81
|
+
module: 'ns/name/cmp.js',
|
|
82
|
+
});
|
|
61
83
|
});
|
|
62
|
-
it('should handle fetch message
|
|
63
|
-
const data = {
|
|
64
|
-
|
|
65
|
-
|
|
84
|
+
it('should handle fetch message callback with error', async () => {
|
|
85
|
+
const data = {
|
|
86
|
+
type: 'fetch',
|
|
87
|
+
data: { modulePath: 'src/ns/name/cmp.js' },
|
|
88
|
+
};
|
|
89
|
+
vi.mocked(ctx.moduleGraph.getModulePart).mockReturnValue(undefined);
|
|
66
90
|
await client.messageCallback(data);
|
|
67
|
-
expect(
|
|
68
|
-
|
|
91
|
+
expect(connection.send).toHaveBeenCalledWith({
|
|
92
|
+
type: 'error',
|
|
93
|
+
data: {
|
|
94
|
+
message: `Fetch of src/ns/name/cmp.js failed as it does not exist in dev server workspace`,
|
|
95
|
+
},
|
|
96
|
+
});
|
|
69
97
|
});
|
|
70
|
-
it('should handle register message
|
|
98
|
+
it('should handle register message callback', async () => {
|
|
71
99
|
const data = {
|
|
72
100
|
type: 'register',
|
|
73
|
-
data: {
|
|
101
|
+
data: {
|
|
102
|
+
modules: [{ modulePath: 'ns/name/cmp.js', hash: 'hash1', compileOptions: {} }],
|
|
103
|
+
},
|
|
74
104
|
};
|
|
75
|
-
|
|
105
|
+
const staleModules = new Set(['ns/name/cmp.js']);
|
|
106
|
+
vi.mocked(ctx.moduleGraph.getStaleModules).mockReturnValue(staleModules);
|
|
76
107
|
await client.messageCallback(data);
|
|
77
|
-
expect(
|
|
78
|
-
|
|
108
|
+
expect(ctx.moduleGraph.getStaleModules).toHaveBeenCalledWith([
|
|
109
|
+
{
|
|
110
|
+
hash: 'hash1',
|
|
111
|
+
id: 'ns/name',
|
|
112
|
+
part: 'cmp.js',
|
|
113
|
+
},
|
|
114
|
+
]);
|
|
115
|
+
expect(connection.send).toHaveBeenCalledWith({
|
|
79
116
|
type: 'update',
|
|
80
|
-
data:
|
|
117
|
+
data: Array.from(staleModules).map((modulePath) => ({ modulePath })),
|
|
81
118
|
});
|
|
82
119
|
});
|
|
83
120
|
it('should close the connection', () => {
|
|
84
121
|
client.close();
|
|
85
|
-
expect(
|
|
122
|
+
expect(connection.close).toHaveBeenCalled();
|
|
86
123
|
});
|
|
87
124
|
});
|
|
88
125
|
//# sourceMappingURL=client.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.spec.js","sourceRoot":"","sources":["../../../src/server/connection/client.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.spec.js","sourceRoot":"","sources":["../../../src/server/connection/client.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as Websocket from 'ws';
|
|
2
|
-
import { type
|
|
3
|
-
import
|
|
2
|
+
import { type HMR_Data_Inbound, type HMR_Data_Outbound } from '@lwc/lwc-dev-server-types';
|
|
3
|
+
import { Logger } from '@salesforce/core';
|
|
4
4
|
/**
|
|
5
5
|
* This class represents a WebSocket connection.
|
|
6
6
|
* It provides methods to marshal and unmarshal data between hmr-client and dev server.
|
|
@@ -11,6 +11,6 @@ export declare class Connection {
|
|
|
11
11
|
constructor(socket: Websocket.WebSocket, logger: Logger);
|
|
12
12
|
close(): void;
|
|
13
13
|
onClose(callback: () => void): void;
|
|
14
|
-
send(data:
|
|
15
|
-
receive(callback: (data:
|
|
14
|
+
send(data: HMR_Data_Outbound): void;
|
|
15
|
+
receive(callback: (data: HMR_Data_Inbound) => void): void;
|
|
16
16
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: MIT
|
|
5
5
|
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
7
|
+
import { isHmrDataInbound, } from '@lwc/lwc-dev-server-types';
|
|
8
8
|
import { UNRECOGNIZED_MESSAGE_TYPE } from '../../labels.js';
|
|
9
9
|
/**
|
|
10
10
|
* This class represents a WebSocket connection.
|
|
@@ -27,10 +27,16 @@ export class Connection {
|
|
|
27
27
|
receive(callback) {
|
|
28
28
|
this.socket.addEventListener('message', ({ data }) => {
|
|
29
29
|
if (typeof data === 'string') {
|
|
30
|
-
|
|
30
|
+
const parsed = JSON.parse(data);
|
|
31
|
+
if (isHmrDataInbound(parsed)) {
|
|
32
|
+
callback(parsed);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
this.logger.error(`[LWC Dev Server] Blocking unexpected type of data received from hmr-client '${data}'`);
|
|
36
|
+
}
|
|
31
37
|
}
|
|
32
38
|
else {
|
|
33
|
-
this.logger.
|
|
39
|
+
this.logger.error(UNRECOGNIZED_MESSAGE_TYPE);
|
|
34
40
|
}
|
|
35
41
|
});
|
|
36
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../src/server/connection/connection.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../src/server/connection/connection.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACH,gBAAgB,GAGnB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAE5D;;;GAGG;AACH,MAAM,OAAO,UAAU;IAGnB,YAAY,MAA2B,EAAE,MAAc;QACnD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,KAAK;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,OAAO,CAAC,QAAoB;QACxB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,IAAuB;QACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,CAAC,QAA0C;QAC9C,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,EAA0B,EAAE,EAAE;YACzE,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;gBAC3C,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3B,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACrB,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,+EAA+E,IAAI,GAAG,CACzF,CAAC;gBACN,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YACjD,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
2
|
-
import { LogLevel } from '../../types/index.js';
|
|
3
2
|
import { UNRECOGNIZED_MESSAGE_TYPE } from '../../labels.js';
|
|
4
3
|
import { Connection } from './connection.js';
|
|
5
4
|
describe('Connection', () => {
|
|
6
5
|
let mockSocket;
|
|
7
|
-
let mockLogger;
|
|
8
6
|
let connection;
|
|
7
|
+
const mockLogger = {
|
|
8
|
+
error: vi.fn(),
|
|
9
|
+
};
|
|
9
10
|
beforeEach(() => {
|
|
10
11
|
mockSocket = {
|
|
11
12
|
close: vi.fn(),
|
|
@@ -13,9 +14,6 @@ describe('Connection', () => {
|
|
|
13
14
|
send: vi.fn(),
|
|
14
15
|
addEventListener: vi.fn(),
|
|
15
16
|
};
|
|
16
|
-
mockLogger = {
|
|
17
|
-
log: vi.fn(),
|
|
18
|
-
};
|
|
19
17
|
connection = new Connection(mockSocket, mockLogger);
|
|
20
18
|
});
|
|
21
19
|
afterEach(() => {
|
|
@@ -31,20 +29,20 @@ describe('Connection', () => {
|
|
|
31
29
|
expect(mockSocket.on).toHaveBeenCalledWith('close', closeCallback);
|
|
32
30
|
});
|
|
33
31
|
it('should send data over the WebSocket connection', () => {
|
|
34
|
-
const mockData = { type: '
|
|
32
|
+
const mockData = { type: 'update', data: [{ modulePath: '' }] };
|
|
35
33
|
connection.send(mockData);
|
|
36
34
|
expect(mockSocket.send).toHaveBeenCalledWith(JSON.stringify(mockData));
|
|
37
35
|
});
|
|
38
36
|
it('should receive data from the WebSocket connection', () => {
|
|
39
37
|
const mockMessageEvent = {
|
|
40
|
-
data: JSON.stringify({ type: '
|
|
38
|
+
data: JSON.stringify({ type: 'register', data: {} }),
|
|
41
39
|
};
|
|
42
40
|
const receiveCallback = vi.fn();
|
|
43
41
|
connection.receive(receiveCallback);
|
|
44
42
|
const addEventListenerCall = vi.mocked(mockSocket).addEventListener.mock.calls[0];
|
|
45
43
|
const eventListener = addEventListenerCall[1];
|
|
46
44
|
eventListener(mockMessageEvent);
|
|
47
|
-
expect(receiveCallback).toHaveBeenCalledWith({ type: '
|
|
45
|
+
expect(receiveCallback).toHaveBeenCalledWith({ type: 'register', data: {} });
|
|
48
46
|
});
|
|
49
47
|
it('should log an error for unrecognized message types', () => {
|
|
50
48
|
const mockMessageEvent = {
|
|
@@ -54,7 +52,7 @@ describe('Connection', () => {
|
|
|
54
52
|
const addEventListenerCall = vi.mocked(mockSocket).addEventListener.mock.calls[0];
|
|
55
53
|
const eventListener = addEventListenerCall[1];
|
|
56
54
|
eventListener(mockMessageEvent);
|
|
57
|
-
expect(mockLogger.
|
|
55
|
+
expect(mockLogger.error).toHaveBeenCalledWith(UNRECOGNIZED_MESSAGE_TYPE);
|
|
58
56
|
});
|
|
59
57
|
});
|
|
60
58
|
//# sourceMappingURL=connection.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.spec.js","sourceRoot":"","sources":["../../../src/server/connection/connection.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"connection.spec.js","sourceRoot":"","sources":["../../../src/server/connection/connection.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI7C,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IACxB,IAAI,UAA+B,CAAC;IACpC,IAAI,UAAsB,CAAC;IAE3B,MAAM,UAAU,GAAG;QACf,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;KACI,CAAC;IAEvB,UAAU,CAAC,GAAG,EAAE;QACZ,UAAU,GAAG;YACT,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;YACd,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;YACX,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;YACb,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE;SACM,CAAC;QAEpC,UAAU,GAAG,IAAI,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,EAAE,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC7C,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAC9C,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAClC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACtD,MAAM,QAAQ,GAAsB,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QACnF,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QACzD,MAAM,gBAAgB,GAAG;YACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;SAC7B,CAAC;QAE5B,MAAM,eAAe,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAEpC,MAAM,oBAAoB,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClF,MAAM,aAAa,GAAG,oBAAoB,CAAC,CAAC,CAA4C,CAAC;QACzF,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAEhC,MAAM,CAAC,eAAe,CAAC,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC1D,MAAM,gBAAgB,GAAG;YACrB,IAAI,EAAE,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,wDAAwD;SAC3D,CAAC;QAE5B,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAE5B,MAAM,oBAAoB,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClF,MAAM,aAAa,GAAG,oBAAoB,CAAC,CAAC,CAA4C,CAAC;QACzF,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAEhC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { Logger
|
|
1
|
+
import { Logger } from '@salesforce/core';
|
|
2
|
+
import { ServerConfig } from '../../types/index.js';
|
|
2
3
|
import { Connection } from './connection.js';
|
|
3
4
|
/**
|
|
4
5
|
* Wrapper over WebSocketServer that does authentication and produces `Connection`s
|
|
@@ -8,7 +8,6 @@ import * as http from 'http';
|
|
|
8
8
|
import * as https from 'https';
|
|
9
9
|
import { URL } from 'node:url';
|
|
10
10
|
import { WebSocketServer } from 'ws';
|
|
11
|
-
import { LogLevel } from '../../types/index.js';
|
|
12
11
|
import { templateString } from '../../utils/utils.js';
|
|
13
12
|
import { WSS_STARTUP_FAILURE } from '../../labels.js';
|
|
14
13
|
import { decrypt } from '../util/aes.js';
|
|
@@ -76,14 +75,14 @@ export class AuthenticatedWebSocketServer {
|
|
|
76
75
|
// Handle upgrade of connections after verifying the validity
|
|
77
76
|
httpServer.on('upgrade', upgradeHandler);
|
|
78
77
|
httpServer.listen(port, () => {
|
|
79
|
-
logger.
|
|
78
|
+
logger.info(`[LWC Dev Server] LWC Dev Server started at port:${port}`);
|
|
80
79
|
});
|
|
81
80
|
if (httpsConfig) {
|
|
82
81
|
const httpsServer = https.createServer(httpsConfig);
|
|
83
82
|
httpsServer.on('request', requestHandler);
|
|
84
83
|
httpsServer.on('upgrade', upgradeHandler);
|
|
85
84
|
httpsServer.listen(httpsConfig.port, () => {
|
|
86
|
-
logger.
|
|
85
|
+
logger.info(`[LWC Dev Server] LWC HTTPS Dev Server started at port:${httpsConfig.port}`);
|
|
87
86
|
});
|
|
88
87
|
this.wss.on('close', () => {
|
|
89
88
|
httpsServer.close();
|
|
@@ -96,7 +95,7 @@ export class AuthenticatedWebSocketServer {
|
|
|
96
95
|
}
|
|
97
96
|
catch (e) {
|
|
98
97
|
const errorMsg = templateString(WSS_STARTUP_FAILURE, [e]);
|
|
99
|
-
logger.
|
|
98
|
+
logger.error(errorMsg);
|
|
100
99
|
throw e;
|
|
101
100
|
}
|
|
102
101
|
}
|
|
@@ -110,7 +109,7 @@ export class AuthenticatedWebSocketServer {
|
|
|
110
109
|
if (this.identityToken) {
|
|
111
110
|
const sessionTokenCipher = searchParams.get('sessionTokenCipher');
|
|
112
111
|
if (!sessionTokenCipher) {
|
|
113
|
-
this.logger.
|
|
112
|
+
this.logger.error('sessionTokenCipher not present. Terminating.');
|
|
114
113
|
ws.close();
|
|
115
114
|
return;
|
|
116
115
|
}
|
|
@@ -122,7 +121,7 @@ export class AuthenticatedWebSocketServer {
|
|
|
122
121
|
}
|
|
123
122
|
const referer = searchParams.get('referer');
|
|
124
123
|
if (!referer) {
|
|
125
|
-
this.logger.
|
|
124
|
+
this.logger.error('Referer param not present. Terminating.');
|
|
126
125
|
ws.close();
|
|
127
126
|
return;
|
|
128
127
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-socket-server.js","sourceRoot":"","sources":["../../../src/server/connection/web-socket-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"web-socket-server.js","sourceRoot":"","sources":["../../../src/server/connection/web-socket-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as http from 'http';
|
|
2
2
|
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
3
3
|
import { WebSocketServer } from 'ws';
|
|
4
|
-
import {
|
|
4
|
+
import { Workspace } from '../../types';
|
|
5
5
|
import * as aes from '../util/aes';
|
|
6
6
|
import { AuthenticatedWebSocketServer } from './web-socket-server.js';
|
|
7
7
|
import { Connection } from './connection';
|
|
@@ -12,19 +12,15 @@ vi.mock('https');
|
|
|
12
12
|
vi.mock('../util/aes');
|
|
13
13
|
vi.mock('./connection');
|
|
14
14
|
describe('AuthenticatedWebSocketServer', () => {
|
|
15
|
-
|
|
15
|
+
const logger = { error: vi.fn() };
|
|
16
16
|
let serverConfig;
|
|
17
17
|
let wsServerMock;
|
|
18
18
|
let httpServerMock;
|
|
19
19
|
beforeEach(() => {
|
|
20
|
-
logger = {
|
|
21
|
-
log: vi.fn(),
|
|
22
|
-
};
|
|
23
20
|
serverConfig = {
|
|
24
21
|
port: 3000,
|
|
25
22
|
identityToken: 'mock-identity-token',
|
|
26
23
|
rootDir: '',
|
|
27
|
-
logLevel: LogLevel.debug,
|
|
28
24
|
paths: [],
|
|
29
25
|
workspace: Workspace.Internal,
|
|
30
26
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-socket-server.spec.js","sourceRoot":"","sources":["../../../src/server/connection/web-socket-server.spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"web-socket-server.spec.js","sourceRoot":"","sources":["../../../src/server/connection/web-socket-server.spec.ts"],"names":[],"mappings":"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"}
|
package/dist/server/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { HMR_Data_Outbound } from '@lwc/lwc-dev-server-types';
|
|
2
|
+
import { Logger } from '@salesforce/core';
|
|
3
|
+
import { DevServerContext, type ServerConfig } from '../types/index.js';
|
|
2
4
|
import { AuthenticatedWebSocketServer } from './connection/web-socket-server.js';
|
|
3
5
|
import { Client } from './connection/client.js';
|
|
4
6
|
/**
|
|
@@ -14,13 +16,12 @@ export declare class LWCServer {
|
|
|
14
16
|
clients: Set<Client>;
|
|
15
17
|
wss: AuthenticatedWebSocketServer;
|
|
16
18
|
context: DevServerContext;
|
|
17
|
-
identityToken?: string;
|
|
18
19
|
constructor(config: ServerConfig, wss: AuthenticatedWebSocketServer, logger: Logger);
|
|
19
20
|
stopServer(): void;
|
|
20
|
-
|
|
21
|
+
broadcast: (data: HMR_Data_Outbound) => void;
|
|
21
22
|
}
|
|
22
23
|
/**
|
|
23
24
|
* Initialize an LWC Dev Server with the specified server configuration.
|
|
24
25
|
* @returns Returns an initialized LWC dev server.
|
|
25
26
|
*/
|
|
26
|
-
export declare function startLwcDevServer(config: ServerConfig): Promise<LWCServer>;
|
|
27
|
+
export declare function startLwcDevServer(config: ServerConfig, logger?: Logger): Promise<LWCServer>;
|
package/dist/server/index.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Logger } from '@salesforce/core';
|
|
2
2
|
import { AuthenticatedWebSocketServer } from './connection/web-socket-server.js';
|
|
3
3
|
import { ModuleGraph } from './moduleGraph/index.js';
|
|
4
|
-
import ConsoleLogger from './consoleLogger.js';
|
|
5
4
|
import { Client } from './connection/client.js';
|
|
6
5
|
/**
|
|
7
6
|
* This class represents the central place where the LWC dev server coordination occurs.
|
|
@@ -15,16 +14,16 @@ import { Client } from './connection/client.js';
|
|
|
15
14
|
export class LWCServer {
|
|
16
15
|
constructor(config, wss, logger) {
|
|
17
16
|
this.clients = new Set();
|
|
18
|
-
this.
|
|
17
|
+
this.broadcast = (data) => {
|
|
19
18
|
for (const client of this.clients) {
|
|
20
|
-
client.send(
|
|
19
|
+
client.send(data);
|
|
21
20
|
}
|
|
22
21
|
};
|
|
23
22
|
// Dev Server to manage critical assets, allows them to be closed and avoid memory leaks
|
|
24
23
|
this.wss = wss;
|
|
25
24
|
this.wss.onNewConnection((connection, url) => {
|
|
26
25
|
if (config.maxClientCount && this.clients.size >= config.maxClientCount) {
|
|
27
|
-
logger.
|
|
26
|
+
logger.error(`[LWC Dev Server] Max connection limit(${this.context.config.maxClientCount}) reached, ignoring new requests until existing connections are closed`);
|
|
28
27
|
connection.close();
|
|
29
28
|
return;
|
|
30
29
|
}
|
|
@@ -32,10 +31,10 @@ export class LWCServer {
|
|
|
32
31
|
const client = new Client(clientId, url, connection, this.context);
|
|
33
32
|
this.clients.add(client);
|
|
34
33
|
client.onClose(() => {
|
|
35
|
-
logger.
|
|
34
|
+
logger.info(`[LWC Dev Server] Closing client. Client ID: ${client.clientId}`);
|
|
36
35
|
return this.clients.delete(client);
|
|
37
36
|
});
|
|
38
|
-
logger.
|
|
37
|
+
logger.info(`[LWC Dev Server] New connection for url: ${url} registered. Client ID: ${clientId}`);
|
|
39
38
|
this.context.config.lifecycle?.emitTelemetry({
|
|
40
39
|
eventName: 'connection-success',
|
|
41
40
|
clientId: clientId,
|
|
@@ -45,23 +44,24 @@ export class LWCServer {
|
|
|
45
44
|
});
|
|
46
45
|
const moduleGraph = new ModuleGraph(config, logger);
|
|
47
46
|
moduleGraph.on('close', () => this.stopServer());
|
|
48
|
-
moduleGraph.on('update', this.
|
|
47
|
+
moduleGraph.on('update', (modulePath) => this.broadcast({ type: 'update', data: [{ modulePath }] }));
|
|
49
48
|
this.context = { config, logger, moduleGraph };
|
|
50
|
-
this.identityToken = config.identityToken;
|
|
51
49
|
}
|
|
52
50
|
stopServer() {
|
|
53
|
-
this.context.logger.
|
|
51
|
+
this.context.logger.info('[LWC Dev Server] Stopping the dev server');
|
|
54
52
|
this.context.moduleGraph.close();
|
|
55
53
|
this.wss.close();
|
|
56
|
-
this.context.logger.
|
|
54
|
+
this.context.logger.info('[LWC Dev Server] Succesfully stopped dev server');
|
|
57
55
|
}
|
|
58
56
|
}
|
|
59
57
|
/**
|
|
60
58
|
* Initialize an LWC Dev Server with the specified server configuration.
|
|
61
59
|
* @returns Returns an initialized LWC dev server.
|
|
62
60
|
*/
|
|
63
|
-
export async function startLwcDevServer(config) {
|
|
64
|
-
|
|
61
|
+
export async function startLwcDevServer(config, logger) {
|
|
62
|
+
if (!logger) {
|
|
63
|
+
logger = await Logger.root();
|
|
64
|
+
}
|
|
65
65
|
const wss = new AuthenticatedWebSocketServer(config, logger);
|
|
66
66
|
return new LWCServer(config, wss, logger);
|
|
67
67
|
}
|
package/dist/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD;;;;;;;;GAQG;AACH,MAAM,OAAO,SAAS;IAKlB,YAAY,MAAoB,EAAE,GAAiC,EAAE,MAAc;QAJnF,YAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAiD5B,cAAS,GAAG,CAAC,IAAuB,EAAE,EAAE;YACpC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;QACL,CAAC,CAAC;QAhDE,wFAAwF;QACxF,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QAEf,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE;YACzC,IAAI,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;gBACtE,MAAM,CAAC,KAAK,CACR,yCAAyC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,wEAAwE,CACtJ,CAAC;gBACF,UAAU,CAAC,KAAK,EAAE,CAAC;gBACnB,OAAO;YACX,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACnE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACzB,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;gBAChB,MAAM,CAAC,IAAI,CAAC,+CAA+C,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC9E,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CACP,4CAA4C,GAAG,2BAA2B,QAAQ,EAAE,CACvF,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC;gBACzC,SAAS,EAAE,oBAAoB;gBAC/B,QAAQ,EAAE,QAAQ;gBAClB,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,IAAI,SAAS;gBACvD,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;aACjC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACpD,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACjD,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,EAAE,CACpC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC7D,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACnD,CAAC;IAED,UAAU;QACN,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACrE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QACjB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IAChF,CAAC;CAOJ;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAoB,EAAE,MAAe;IACzE,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7D,OAAO,IAAI,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC"}
|