@lwc/lwc-dev-server 10.2.1 → 10.3.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/README.md +0 -6
- package/dist/bin.js +31 -0
- package/dist/bin.js.map +1 -0
- package/dist/server/bundler/lexBundler.spec.d.ts +1 -0
- package/dist/server/bundler/lexBundler.spec.js +71 -0
- package/dist/server/bundler/lexBundler.spec.js.map +1 -0
- package/dist/server/connection/client.d.ts +2 -19
- package/dist/server/connection/client.js +3 -40
- package/dist/server/connection/client.js.map +1 -1
- package/dist/server/connection/client.spec.d.ts +1 -0
- package/dist/server/connection/client.spec.js +107 -0
- package/dist/server/connection/client.spec.js.map +1 -0
- package/dist/server/connection/connection.d.ts +1 -1
- package/dist/server/connection/connection.js +4 -12
- package/dist/server/connection/connection.js.map +1 -1
- package/dist/server/connection/connection.spec.d.ts +1 -0
- package/dist/server/connection/connection.spec.js +60 -0
- package/dist/server/connection/connection.spec.js.map +1 -0
- package/dist/server/connection/web-socket-server.d.ts +10 -8
- package/dist/server/connection/web-socket-server.js +80 -51
- package/dist/server/connection/web-socket-server.js.map +1 -1
- package/dist/server/connection/web-socket-server.spec.d.ts +1 -0
- package/dist/server/connection/web-socket-server.spec.js +174 -0
- package/dist/server/connection/web-socket-server.spec.js.map +1 -0
- package/dist/server/index.d.ts +6 -18
- package/dist/server/index.js +33 -111
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.spec.d.ts +1 -0
- package/dist/server/index.spec.js +98 -0
- package/dist/server/index.spec.js.map +1 -0
- package/dist/server/moduleGraph/index.js +19 -20
- package/dist/server/moduleGraph/index.js.map +1 -1
- package/dist/server/moduleGraph/index.spec.d.ts +1 -0
- package/dist/server/moduleGraph/index.spec.js +70 -0
- package/dist/server/moduleGraph/index.spec.js.map +1 -0
- package/dist/server/moduleGraph/workspaceScanner/__tests__/sfcli.spec.d.ts +1 -0
- package/dist/server/moduleGraph/workspaceScanner/__tests__/sfcli.spec.js +22 -0
- package/dist/server/moduleGraph/workspaceScanner/__tests__/sfcli.spec.js.map +1 -0
- package/dist/server/util/fileUtil.d.ts +0 -1
- package/dist/server/util/fileUtil.js +2 -10
- package/dist/server/util/fileUtil.js.map +1 -1
- package/dist/server/watcher/index.spec.d.ts +1 -0
- package/dist/server/watcher/index.spec.js +33 -0
- package/dist/server/watcher/index.spec.js.map +1 -0
- package/dist/types/devServer.d.ts +1 -2
- package/dist/types/devServer.js +1 -7
- package/dist/types/devServer.js.map +1 -1
- package/dist/utils/utils.test.d.ts +1 -0
- package/dist/utils/utils.test.js +49 -0
- package/dist/utils/utils.test.js.map +1 -0
- package/package.json +3 -7
- package/bin/dev-server.js +0 -2
- package/dist/cli/cli.js +0 -4
- package/dist/cli/cli.js.map +0 -1
- package/dist/cli/commands/devServer.d.ts +0 -2
- package/dist/cli/commands/devServer.js +0 -188
- package/dist/cli/commands/devServer.js.map +0 -1
- package/dist/cli/commands/index.d.ts +0 -2
- package/dist/cli/commands/index.js +0 -21
- package/dist/cli/commands/index.js.map +0 -1
- /package/dist/{cli/cli.d.ts → bin.d.ts} +0 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
2
|
+
import { FSWatcher } from 'chokidar';
|
|
3
|
+
import { LogLevel } from '../types/index.js';
|
|
4
|
+
import { LWCServer } from './index.js';
|
|
5
|
+
import { startWatch } from './watcher/index.js';
|
|
6
|
+
import { AuthenticatedWebSocketServer } from './connection/web-socket-server.js';
|
|
7
|
+
import { ModuleGraph } from './moduleGraph/index.js';
|
|
8
|
+
import ConsoleLogger from './consoleLogger.js';
|
|
9
|
+
import { Client } from './connection/client.js';
|
|
10
|
+
import { Connection } from './connection/connection.js';
|
|
11
|
+
vi.mock('chokidar', () => ({ FSWatcher: vi.fn(() => ({ on: vi.fn(), close: vi.fn() })) }));
|
|
12
|
+
vi.mock('./watcher/index.js', () => ({ startWatch: vi.fn(() => new FSWatcher()) }));
|
|
13
|
+
vi.mock('./connection/web-socket-server.js', () => ({
|
|
14
|
+
AuthenticatedWebSocketServer: vi.fn(() => ({
|
|
15
|
+
onNewConnection: vi.fn(),
|
|
16
|
+
close: vi.fn(),
|
|
17
|
+
})),
|
|
18
|
+
}));
|
|
19
|
+
vi.mock('./moduleGraph/index.js', () => ({ ModuleGraph: vi.fn() }));
|
|
20
|
+
vi.mock('./consoleLogger.js');
|
|
21
|
+
vi.mock('./connection/client.js', () => ({
|
|
22
|
+
Client: vi.fn(() => ({ onClose: vi.fn(), send: vi.fn() })),
|
|
23
|
+
}));
|
|
24
|
+
vi.mock('./connection/connection.js');
|
|
25
|
+
describe('LWCServer', () => {
|
|
26
|
+
let config;
|
|
27
|
+
let logger;
|
|
28
|
+
let wss;
|
|
29
|
+
let lwcServer;
|
|
30
|
+
beforeEach(() => {
|
|
31
|
+
config = {
|
|
32
|
+
paths: ['/some/path'],
|
|
33
|
+
logLevel: LogLevel.info,
|
|
34
|
+
identityToken: 'test-token',
|
|
35
|
+
maxClientCount: 2,
|
|
36
|
+
};
|
|
37
|
+
logger = new ConsoleLogger(config.logLevel);
|
|
38
|
+
wss = new AuthenticatedWebSocketServer(config, logger);
|
|
39
|
+
lwcServer = new LWCServer(config, wss, logger);
|
|
40
|
+
});
|
|
41
|
+
afterEach(() => {
|
|
42
|
+
vi.clearAllMocks();
|
|
43
|
+
});
|
|
44
|
+
it('should initialize the server with correct components', () => {
|
|
45
|
+
expect(startWatch).toHaveBeenCalledWith(config.paths);
|
|
46
|
+
expect(ModuleGraph).toHaveBeenCalledWith(config, logger, lwcServer.watcher, {
|
|
47
|
+
moduleUpdateHandler: lwcServer.moduleUpdateHandler,
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
it('should handle new connections and enforce max client limit', () => {
|
|
51
|
+
const mockUrl = 'ws://localhost';
|
|
52
|
+
const onNewConnection = vi.mocked(wss.onNewConnection).mock.calls[0][0];
|
|
53
|
+
// @ts-expect-error
|
|
54
|
+
const connection = new Connection();
|
|
55
|
+
onNewConnection(connection, mockUrl);
|
|
56
|
+
expect(Client).toHaveBeenCalledTimes(1);
|
|
57
|
+
expect(lwcServer.clients.size).toBe(1);
|
|
58
|
+
onNewConnection(connection, mockUrl);
|
|
59
|
+
onNewConnection(connection, mockUrl); // This should exceed max client count
|
|
60
|
+
expect(Client).toHaveBeenCalledTimes(2); // Only two clients allowed
|
|
61
|
+
expect(connection.close).toHaveBeenCalledTimes(1); // Third connection should be closed
|
|
62
|
+
expect(lwcServer.clients.size).toBe(2);
|
|
63
|
+
});
|
|
64
|
+
it('should handle file watcher errors and stop the server', () => {
|
|
65
|
+
const mockErrorEvent = { message: 'File watcher error' };
|
|
66
|
+
const onError = vi
|
|
67
|
+
.mocked(lwcServer.watcher)
|
|
68
|
+
.on.mock.calls.find(([eventName]) => eventName === 'error')[1];
|
|
69
|
+
onError(mockErrorEvent);
|
|
70
|
+
expect(logger.log).toHaveBeenCalledWith(LogLevel.error, '[LWC Dev Server] Encountered error while watching files');
|
|
71
|
+
expect(logger.log).toHaveBeenCalledWith(LogLevel.debug, `[LWC Dev Server] File watcher error: ${mockErrorEvent.message}`);
|
|
72
|
+
expect(wss.close).toHaveBeenCalled();
|
|
73
|
+
});
|
|
74
|
+
it('should stop the server and release resources', () => {
|
|
75
|
+
lwcServer.stopServer();
|
|
76
|
+
expect(logger.log).toHaveBeenCalledWith(LogLevel.info, '[LWC Dev Server] Stopping the dev server');
|
|
77
|
+
expect(lwcServer.watcher.close).toHaveBeenCalled();
|
|
78
|
+
expect(lwcServer.wss.close).toHaveBeenCalled();
|
|
79
|
+
expect(logger.log).toHaveBeenCalledWith(LogLevel.info, '[LWC Dev Server] Succesfully stopped dev server');
|
|
80
|
+
});
|
|
81
|
+
it('should send update messages to all connected clients', () => {
|
|
82
|
+
const mockClient1 = new Client('client1', 'ws://localhost', {}, lwcServer.context);
|
|
83
|
+
const mockClient2 = new Client('client2', 'ws://localhost', {}, lwcServer.context);
|
|
84
|
+
lwcServer.clients.add(mockClient1);
|
|
85
|
+
lwcServer.clients.add(mockClient2);
|
|
86
|
+
const modulePath = '/some/module/path';
|
|
87
|
+
lwcServer.moduleUpdateHandler(modulePath);
|
|
88
|
+
expect(mockClient1.send).toHaveBeenCalledWith({
|
|
89
|
+
type: 'update',
|
|
90
|
+
data: [{ modulePath }],
|
|
91
|
+
});
|
|
92
|
+
expect(mockClient2.send).toHaveBeenCalledWith({
|
|
93
|
+
type: 'update',
|
|
94
|
+
data: [{ modulePath }],
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
//# sourceMappingURL=index.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../src/server/index.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { LogLevel } from '../../types/index.js';
|
|
4
|
-
import { getModuleHash
|
|
4
|
+
import { getModuleHash } from '../util/fileUtil.js';
|
|
5
5
|
import { getWorkspaceScanner } from './workspaceScanner/index.js';
|
|
6
6
|
export class ModuleGraph {
|
|
7
7
|
constructor(config, logger, watcher, moduleChangeCallbacks) {
|
|
@@ -30,7 +30,7 @@ export class ModuleGraph {
|
|
|
30
30
|
this.logger.log(LogLevel.debug, `[Module Graph] Found ${this.moduleMap.size} LWC components in the current workspace.`);
|
|
31
31
|
}
|
|
32
32
|
else {
|
|
33
|
-
this.logger.log(LogLevel.debug, `[Module Graph] Found no LWC components in the current workspace
|
|
33
|
+
this.logger.log(LogLevel.debug, `[Module Graph] Found no LWC components in the current workspace.`);
|
|
34
34
|
}
|
|
35
35
|
this.moduleMap.forEach(({ moduleParts }) => {
|
|
36
36
|
Object.assign(this.modulePathToModuleInfo, moduleParts);
|
|
@@ -84,22 +84,21 @@ export class ModuleGraph {
|
|
|
84
84
|
}
|
|
85
85
|
fileChangeHandler(filePath) {
|
|
86
86
|
const changedFile = path.resolve(filePath);
|
|
87
|
-
if (fs.lstatSync(changedFile).isFile())
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
}
|
|
87
|
+
if (!fs.lstatSync(changedFile).isFile())
|
|
88
|
+
return;
|
|
89
|
+
const modulePath = this.getModulePathByFile(changedFile);
|
|
90
|
+
if (!modulePath)
|
|
91
|
+
return;
|
|
92
|
+
const moduleInfo = this.modulePathToModuleInfo[modulePath];
|
|
93
|
+
const newModuleHash = getModuleHash(changedFile);
|
|
94
|
+
if (moduleInfo.moduleSourceHash === newModuleHash)
|
|
95
|
+
return;
|
|
96
|
+
this.logger.log(LogLevel.info, `[LWC Dev Server] File '${modulePath}' modified - updating.`);
|
|
97
|
+
moduleInfo.moduleSourceHash = newModuleHash;
|
|
98
|
+
// Find the nearest boundary for the file that changed
|
|
99
|
+
const moduleBoundary = this.getModuleBoundary(modulePath);
|
|
100
|
+
// Notify the clients that a module has been updated
|
|
101
|
+
this.moduleChangeCallbacks.moduleUpdateHandler(moduleBoundary);
|
|
103
102
|
}
|
|
104
103
|
/**
|
|
105
104
|
* Identify which modulePath that represents the boundary of the changed module.
|
|
@@ -152,7 +151,7 @@ export class ModuleGraph {
|
|
|
152
151
|
const moduleFilePath = this.getFileByModulePath(modulePath);
|
|
153
152
|
const fileEntry = path.relative(moduleDir, modulePath);
|
|
154
153
|
// It can be assumed that the module file exists and the source can be read
|
|
155
|
-
const src =
|
|
154
|
+
const src = fs.readFileSync(moduleFilePath, 'utf-8');
|
|
156
155
|
return { [fileEntry]: src };
|
|
157
156
|
}
|
|
158
157
|
else if (['.js', '.ts'].includes(ext)) {
|
|
@@ -160,7 +159,7 @@ export class ModuleGraph {
|
|
|
160
159
|
const moduleMapEntry = this.moduleMap.get(ownerModuleId);
|
|
161
160
|
return Object.keys(moduleMapEntry.moduleParts).reduce((acc, key) => {
|
|
162
161
|
const part = path.relative(moduleDir, key);
|
|
163
|
-
const partSrc =
|
|
162
|
+
const partSrc = fs.readFileSync(moduleMapEntry.moduleParts[key].moduleFilePath, 'utf-8');
|
|
164
163
|
acc[part] = partSrc;
|
|
165
164
|
return acc;
|
|
166
165
|
}, {});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/moduleGraph/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,OAAO,EAAE,QAAQ,EAA6B,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/moduleGraph/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
3
|
+
import { watch } from 'chokidar';
|
|
4
|
+
import { LogLevel, Workspace } from '../../types/index.js';
|
|
5
|
+
import { getModuleHash } from '../util/fileUtil.js';
|
|
6
|
+
import { ModuleGraph } from './index.js';
|
|
7
|
+
const modulesPath = path.resolve(__dirname, 'workspaceScanner/__tests__/data/mrt/some-path');
|
|
8
|
+
vi.spyOn(path, 'resolve');
|
|
9
|
+
vi.mock('path', async (importOriginal) => {
|
|
10
|
+
return {
|
|
11
|
+
...(await importOriginal()),
|
|
12
|
+
resolve: vi.fn(),
|
|
13
|
+
};
|
|
14
|
+
});
|
|
15
|
+
vi.mock('chokidar', () => ({
|
|
16
|
+
watch: vi.fn().mockReturnValue({
|
|
17
|
+
on: vi.fn(),
|
|
18
|
+
close: vi.fn(),
|
|
19
|
+
}),
|
|
20
|
+
}));
|
|
21
|
+
vi.mock('../util/fileUtil.js', async (importOriginal) => {
|
|
22
|
+
return {
|
|
23
|
+
...(await importOriginal()),
|
|
24
|
+
getModuleHash: vi.fn(),
|
|
25
|
+
};
|
|
26
|
+
});
|
|
27
|
+
describe('ModuleGraph', () => {
|
|
28
|
+
let moduleGraph;
|
|
29
|
+
const mockLogger = {
|
|
30
|
+
log: vi.fn(),
|
|
31
|
+
};
|
|
32
|
+
//@ts-expect-error mocked
|
|
33
|
+
const mockWatcher = watch();
|
|
34
|
+
const mockCallbacks = {
|
|
35
|
+
moduleUpdateHandler: vi.fn(),
|
|
36
|
+
};
|
|
37
|
+
beforeEach(() => {
|
|
38
|
+
moduleGraph = new ModuleGraph({
|
|
39
|
+
logLevel: LogLevel.debug,
|
|
40
|
+
paths: [modulesPath],
|
|
41
|
+
port: 50182,
|
|
42
|
+
rootDir: __dirname,
|
|
43
|
+
workspace: Workspace.Mrt,
|
|
44
|
+
}, mockLogger, mockWatcher, mockCallbacks);
|
|
45
|
+
});
|
|
46
|
+
afterEach(() => {
|
|
47
|
+
vi.clearAllMocks();
|
|
48
|
+
});
|
|
49
|
+
it('should return the correct module path by file path', () => {
|
|
50
|
+
const result = moduleGraph.getModulePathByFile(path.resolve(modulesPath, 'ns/comp/comp.html'));
|
|
51
|
+
expect(result).toBe('ns/comp/comp.html');
|
|
52
|
+
});
|
|
53
|
+
it('should handle file changes correctly', () => {
|
|
54
|
+
const mockFilePath = path.resolve(modulesPath, 'ns/comp/comp.js');
|
|
55
|
+
vi.mocked(getModuleHash).mockReturnValueOnce('changed hash');
|
|
56
|
+
vi.mocked(mockWatcher).on.mock.calls[0][1](mockFilePath);
|
|
57
|
+
expect(mockCallbacks.moduleUpdateHandler).toHaveBeenCalled();
|
|
58
|
+
});
|
|
59
|
+
it('should throw an error for unrecognized file types in getModuleBoundary', () => {
|
|
60
|
+
expect(() => {
|
|
61
|
+
moduleGraph.getModuleBoundary('/path/to/file.txt');
|
|
62
|
+
}).toThrowError('[LWC Dev Server] Unrecognized file type or file not part of LWC module: /path/to/file.txt');
|
|
63
|
+
});
|
|
64
|
+
it('should return the correct module boundary for .js files', () => {
|
|
65
|
+
const modulePath = 'ns/comp/x.js';
|
|
66
|
+
const result = moduleGraph.getModuleBoundary(modulePath);
|
|
67
|
+
expect(result).toBe('ns/comp/comp.js');
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
//# sourceMappingURL=index.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../../src/server/moduleGraph/index.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { Workspace } from '../../../../types/serverConfig';
|
|
3
|
+
import SalesforceCliWorkspaceScanner from '../salesforceCli';
|
|
4
|
+
class MockLogger {
|
|
5
|
+
log(_level, _message) {
|
|
6
|
+
// do nothing;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
describe('SF Cli Workspace Scanner', () => {
|
|
10
|
+
let workspaceScanner;
|
|
11
|
+
beforeAll(() => {
|
|
12
|
+
workspaceScanner = new SalesforceCliWorkspaceScanner(Workspace.SfCli, [path.resolve(__dirname, 'data/sfdx/force-app/main/default')], new MockLogger());
|
|
13
|
+
});
|
|
14
|
+
it('should return correct namespace', () => {
|
|
15
|
+
const dirs = workspaceScanner.findModuleDirs();
|
|
16
|
+
expect(dirs.length).toBe(1);
|
|
17
|
+
dirs.forEach((dir) => {
|
|
18
|
+
expect(workspaceScanner.getNamespace(dir)).toEqual('c');
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
//# sourceMappingURL=sfcli.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sfcli.spec.js","sourceRoot":"","sources":["../../../../../src/server/moduleGraph/workspaceScanner/__tests__/sfcli.spec.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAY,SAAS,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,6BAA6B,MAAM,kBAAkB,CAAC;AAG7D,MAAM,UAAU;IACZ,GAAG,CAAC,MAAgB,EAAE,QAAgB;QAClC,cAAc;IAClB,CAAC;CACJ;AAED,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACtC,IAAI,gBAA+C,CAAC;IACpD,SAAS,CAAC,GAAG,EAAE;QACX,gBAAgB,GAAG,IAAI,6BAA6B,CAChD,SAAS,CAAC,KAAK,EACf,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,kCAAkC,CAAC,CAAC,EAC7D,IAAI,UAAU,EAAE,CACnB,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACvC,MAAM,IAAI,GAAG,gBAAgB,CAAC,cAAc,EAAE,CAAC;QAE/C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACjB,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -8,4 +8,3 @@ export declare function getChildDirPaths(entryDir: string): string[];
|
|
|
8
8
|
* TODO: move this to a util that @lwc/dev-server-plugin-lex can reuse
|
|
9
9
|
*/
|
|
10
10
|
export declare function getModuleHash(moduleFilePath: string): string;
|
|
11
|
-
export declare function readModule(moduleFilePath: string): undefined | string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { readdirSync,
|
|
1
|
+
import { readdirSync, readFileSync } from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { createHash } from 'node:crypto';
|
|
4
4
|
/**
|
|
@@ -24,15 +24,7 @@ export function getChildDirPaths(entryDir) {
|
|
|
24
24
|
* TODO: move this to a util that @lwc/dev-server-plugin-lex can reuse
|
|
25
25
|
*/
|
|
26
26
|
export function getModuleHash(moduleFilePath) {
|
|
27
|
-
const content =
|
|
28
|
-
if (!content)
|
|
29
|
-
return '';
|
|
27
|
+
const content = readFileSync(moduleFilePath, 'utf-8');
|
|
30
28
|
return createHash('md5').update(content, 'utf8').digest('hex');
|
|
31
29
|
}
|
|
32
|
-
export function readModule(moduleFilePath) {
|
|
33
|
-
if (!existsSync(moduleFilePath)) {
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
return readFileSync(moduleFilePath, 'utf8');
|
|
37
|
-
}
|
|
38
30
|
//# sourceMappingURL=fileUtil.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileUtil.js","sourceRoot":"","sources":["../../../src/server/util/fileUtil.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"fileUtil.js","sourceRoot":"","sources":["../../../src/server/util/fileUtil.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC7C,IAAI,CAAC;QACD,OAAO,WAAW,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;aAChD,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;aACxC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACtB,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;YAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,EAAE,CAAC;QAC3C,CAAC;QACD,MAAM,KAAK,CAAC;IAChB,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,cAAsB;IAChD,MAAM,OAAO,GAAG,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IACtD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
2
|
+
import { watch } from 'chokidar';
|
|
3
|
+
import { startWatch, stopWatch } from './index.js'; // Adjust the path accordingly
|
|
4
|
+
vi.mock('chokidar', () => ({
|
|
5
|
+
watch: vi.fn().mockReturnValue({
|
|
6
|
+
close: vi.fn(),
|
|
7
|
+
}),
|
|
8
|
+
}));
|
|
9
|
+
describe('File Watcher Module', () => {
|
|
10
|
+
let mockWatcher;
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
//@ts-expect-error mocked
|
|
13
|
+
mockWatcher = watch();
|
|
14
|
+
});
|
|
15
|
+
afterEach(() => {
|
|
16
|
+
vi.clearAllMocks();
|
|
17
|
+
});
|
|
18
|
+
it('should start watching directories with correct glob patterns', () => {
|
|
19
|
+
const dirPaths = ['/path/to/dir1', '/path/to/dir2/'];
|
|
20
|
+
const result = startWatch(dirPaths);
|
|
21
|
+
expect(watch).toHaveBeenCalledWith(['/path/to/dir1/**/*.{html,css,js,ts}', '/path/to/dir2/**/*.{html,css,js,ts}'], {});
|
|
22
|
+
expect(result).toBe(mockWatcher);
|
|
23
|
+
});
|
|
24
|
+
it('should stop watching when stopWatch is called', () => {
|
|
25
|
+
startWatch(['/path/to/dir']);
|
|
26
|
+
stopWatch();
|
|
27
|
+
expect(mockWatcher.close).toHaveBeenCalled();
|
|
28
|
+
});
|
|
29
|
+
it('should not throw if stopWatch is called before startWatch', () => {
|
|
30
|
+
expect(() => stopWatch()).not.toThrow();
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=index.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../../src/server/watcher/index.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,KAAK,EAAa,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC,CAAC,8BAA8B;AAElF,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;IACvB,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC;QAC3B,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;KACjB,CAAC;CACL,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACjC,IAAI,WAAsB,CAAC;IAE3B,UAAU,CAAC,GAAG,EAAE;QACZ,yBAAyB;QACzB,WAAW,GAAG,KAAK,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,EAAE,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACpE,MAAM,QAAQ,GAAG,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;QAErD,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QAEpC,MAAM,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAC9B,CAAC,qCAAqC,EAAE,qCAAqC,CAAC,EAC9E,EAAE,CACL,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACrD,UAAU,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;QAC7B,SAAS,EAAE,CAAC;QAEZ,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACjE,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -3,9 +3,8 @@ import { LogLevel, ServerConfig } from './serverConfig.js';
|
|
|
3
3
|
export interface Logger {
|
|
4
4
|
log(level: LogLevel, message: string): void;
|
|
5
5
|
}
|
|
6
|
-
export
|
|
6
|
+
export interface DevServerContext {
|
|
7
7
|
config: ServerConfig;
|
|
8
8
|
logger: Logger;
|
|
9
9
|
moduleGraph: ModuleGraph;
|
|
10
|
-
constructor(config: ServerConfig, logger: Logger, moduleGraph: ModuleGraph);
|
|
11
10
|
}
|
package/dist/types/devServer.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devServer.js","sourceRoot":"","sources":["../../src/types/devServer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"devServer.js","sourceRoot":"","sources":["../../src/types/devServer.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { templateString } from './utils';
|
|
2
|
+
describe('templateString', () => {
|
|
3
|
+
it('should replace placeholders with corresponding arguments', () => {
|
|
4
|
+
const template = 'Hello, {0}!';
|
|
5
|
+
const args = ['world'];
|
|
6
|
+
expect(templateString(template, args)).toBe('Hello, world!');
|
|
7
|
+
});
|
|
8
|
+
it('should replace multiple placeholders with corresponding arguments', () => {
|
|
9
|
+
const template = 'Hello, {0} {1}!';
|
|
10
|
+
const args = ['John', 'Doe'];
|
|
11
|
+
expect(templateString(template, args)).toBe('Hello, John Doe!');
|
|
12
|
+
});
|
|
13
|
+
it('should handle placeholders in any order', () => {
|
|
14
|
+
const template = '{1}, {0}';
|
|
15
|
+
const args = ['first', 'second'];
|
|
16
|
+
expect(templateString(template, args)).toBe('second, first');
|
|
17
|
+
});
|
|
18
|
+
it('should handle placeholders appearing more than once', () => {
|
|
19
|
+
const template = '{0} and {0} again';
|
|
20
|
+
const args = ['repeat'];
|
|
21
|
+
expect(templateString(template, args)).toBe('repeat and repeat again');
|
|
22
|
+
});
|
|
23
|
+
it('should return the original string if no placeholders are present', () => {
|
|
24
|
+
const template = 'Hello, world!';
|
|
25
|
+
const args = [];
|
|
26
|
+
expect(templateString(template, args)).toBe('Hello, world!');
|
|
27
|
+
});
|
|
28
|
+
it('should handle missing arguments by replacing with undefined', () => {
|
|
29
|
+
const template = 'Hello, {0} {1}!';
|
|
30
|
+
const args = ['John'];
|
|
31
|
+
expect(templateString(template, args)).toBe('Hello, John undefined!');
|
|
32
|
+
});
|
|
33
|
+
it('should handle non-numeric placeholders as literals', () => {
|
|
34
|
+
const template = 'This is not a placeholder: {foo}';
|
|
35
|
+
const args = [];
|
|
36
|
+
expect(templateString(template, args)).toBe('This is not a placeholder: {foo}');
|
|
37
|
+
});
|
|
38
|
+
it('should ignore extra arguments that do not have placeholders', () => {
|
|
39
|
+
const template = 'Hello, {0}!';
|
|
40
|
+
const args = ['world', 'extra'];
|
|
41
|
+
expect(templateString(template, args)).toBe('Hello, world!');
|
|
42
|
+
});
|
|
43
|
+
it('should handle a large number of placeholders', () => {
|
|
44
|
+
const template = '{0} {1} {2} {3} {4}';
|
|
45
|
+
const args = ['a', 'b', 'c', 'd', 'e'];
|
|
46
|
+
expect(templateString(template, args)).toBe('a b c d e');
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
//# sourceMappingURL=utils.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../src/utils/utils.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lwc/lwc-dev-server",
|
|
3
3
|
"description": "A development server to get quick feedback on your LWC component development.",
|
|
4
|
-
"version": "10.
|
|
4
|
+
"version": "10.3.1",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"lwc dev server"
|
|
7
7
|
],
|
|
8
|
-
"bin": {
|
|
9
|
-
"lwc-dev-server": "./bin/dev-server.js"
|
|
10
|
-
},
|
|
11
8
|
"type": "module",
|
|
12
9
|
"main": "dist/index.js",
|
|
13
10
|
"typings": "dist/index.d.ts",
|
|
14
11
|
"files": [
|
|
15
12
|
"dist",
|
|
16
|
-
"bin",
|
|
17
13
|
"LICENSE.txt"
|
|
18
14
|
],
|
|
19
15
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
@@ -23,7 +19,7 @@
|
|
|
23
19
|
"start": "node ./bin/dev-server.js start"
|
|
24
20
|
},
|
|
25
21
|
"dependencies": {
|
|
26
|
-
"@lwc/sfdc-lwc-compiler": "10.
|
|
22
|
+
"@lwc/sfdc-lwc-compiler": "10.3.1",
|
|
27
23
|
"chalk": "~5.3.0",
|
|
28
24
|
"chokidar": "~3.6.0",
|
|
29
25
|
"commander": "~10.0.0",
|
|
@@ -31,7 +27,7 @@
|
|
|
31
27
|
"ws": "^8.18.0"
|
|
32
28
|
},
|
|
33
29
|
"devDependencies": {
|
|
34
|
-
"@lwc/lwc-dev-server-types": "10.
|
|
30
|
+
"@lwc/lwc-dev-server-types": "10.3.1",
|
|
35
31
|
"@salesforce/core": "~8.3.0",
|
|
36
32
|
"@types/ws": "^8.5.10"
|
|
37
33
|
},
|
package/bin/dev-server.js
DELETED
package/dist/cli/cli.js
DELETED
package/dist/cli/cli.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;AACxB,GAAG,CAAC,KAAK,EAAE,CAAC"}
|