@lwc/lwc-dev-server 8.1.1 → 9.0.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.
- package/dist/cli/commands/devServer.js +2 -12
- package/dist/cli/commands/devServer.js.map +1 -1
- package/dist/server/bundler/lexBundler.js +1 -19
- package/dist/server/bundler/lexBundler.js.map +1 -1
- package/dist/server/connection/client.d.ts +2 -3
- package/dist/server/connection/client.js +16 -25
- package/dist/server/connection/client.js.map +1 -1
- package/dist/server/index.js +3 -3
- package/dist/server/index.js.map +1 -1
- package/dist/server/moduleGraph/index.d.ts +26 -3
- package/dist/server/moduleGraph/index.js +86 -10
- package/dist/server/moduleGraph/index.js.map +1 -1
- package/dist/server/moduleGraph/workspaceScanner/fileReader.d.ts +3 -1
- package/dist/server/moduleGraph/workspaceScanner/fileReader.js +4 -1
- package/dist/server/moduleGraph/workspaceScanner/fileReader.js.map +1 -1
- package/dist/server/moduleGraph/workspaceScanner/scanner.d.ts +3 -2
- package/dist/server/moduleGraph/workspaceScanner/scanner.js +7 -6
- package/dist/server/moduleGraph/workspaceScanner/scanner.js.map +1 -1
- package/dist/types/serverConfig.d.ts +0 -7
- package/dist/types/serverConfig.js.map +1 -1
- package/package.json +3 -3
|
@@ -5,11 +5,6 @@ import { Workspace, LogLevel, MAX_CLIENT_COUNT } from '../../types/index.js';
|
|
|
5
5
|
import { startLwcDevServer } from '../../server/index.js';
|
|
6
6
|
import ConsoleLogger from '../../server/consoleLogger.js';
|
|
7
7
|
const consoleLogger = new ConsoleLogger(LogLevel.info);
|
|
8
|
-
function getTargetOption() {
|
|
9
|
-
return new Option('-t, --target <target>', '[string] configured target for deployment')
|
|
10
|
-
.choices(['lex', 'mrt', 'mobile'])
|
|
11
|
-
.default('lex');
|
|
12
|
-
}
|
|
13
8
|
function getPortOption() {
|
|
14
9
|
return new Option('-p, --port <number>', `[number] set port`)
|
|
15
10
|
.env('PORT')
|
|
@@ -90,7 +85,7 @@ function resolveModuleRootDir(rootDir, entryDir) {
|
|
|
90
85
|
return path.resolve(rootDir, entryDir);
|
|
91
86
|
}
|
|
92
87
|
}
|
|
93
|
-
function normalizeConfig({ config, port,
|
|
88
|
+
function normalizeConfig({ config, port, logLevel, workspace, maxClientCount = MAX_CLIENT_COUNT, }) {
|
|
94
89
|
let rootDir = process.cwd();
|
|
95
90
|
const configFile = config
|
|
96
91
|
? path.resolve(rootDir, config)
|
|
@@ -116,11 +111,8 @@ function normalizeConfig({ config, port, target, logLevel, workspace, maxClientC
|
|
|
116
111
|
const normalizedConfig = {
|
|
117
112
|
rootDir,
|
|
118
113
|
port,
|
|
119
|
-
protocol: 'wss',
|
|
120
|
-
host: 'localhost',
|
|
121
114
|
// Component paths to watch
|
|
122
115
|
paths: modulePaths,
|
|
123
|
-
targets: [target],
|
|
124
116
|
workspace,
|
|
125
117
|
logLevel,
|
|
126
118
|
maxClientCount,
|
|
@@ -164,14 +156,12 @@ export function createDevServer() {
|
|
|
164
156
|
.aliases(['preview'])
|
|
165
157
|
.description('Start Dev Server')
|
|
166
158
|
.addOption(getPortOption())
|
|
167
|
-
.addOption(getTargetOption())
|
|
168
159
|
.addOption(getWorkspaceOption())
|
|
169
160
|
.action(async (_options, cmd) => {
|
|
170
|
-
const { config, port,
|
|
161
|
+
const { config, port, logLevel, workspace } = cmd.optsWithGlobals();
|
|
171
162
|
const serverConfig = normalizeConfig({
|
|
172
163
|
config,
|
|
173
164
|
port,
|
|
174
|
-
target,
|
|
175
165
|
logLevel: LogLevel[logLevel],
|
|
176
166
|
workspace,
|
|
177
167
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devServer.js","sourceRoot":"","sources":["../../../src/cli/commands/devServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,aAAa,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"devServer.js","sourceRoot":"","sources":["../../../src/cli/commands/devServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +1,5 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
1
|
import { compile as platformCompile } from '@lwc/sfdc-lwc-compiler';
|
|
3
2
|
import { Workspace, LogLevel } from '../../types/index.js';
|
|
4
|
-
import { readModule } from '../util/fileUtil.js';
|
|
5
|
-
/**
|
|
6
|
-
* Fetch files and source related to the modulePath that is being hot loaded.
|
|
7
|
-
* @param {DevServerContext} ctx DevServer object for stateful information
|
|
8
|
-
* @param {string} name Name of the component being compiled
|
|
9
|
-
* @param {string} namespace The namespace of the component
|
|
10
|
-
* @param {string} modulePath The formatted path for the file being compiled.
|
|
11
|
-
* @returns
|
|
12
|
-
*/
|
|
13
|
-
function getBundleFiles(ctx, name, namespace, modulePath) {
|
|
14
|
-
const moduleDir = `${namespace}/${name}`;
|
|
15
|
-
const moduleFilePath = ctx.moduleGraph.getFileByModulePath(modulePath);
|
|
16
|
-
const fileEntry = path.relative(moduleDir, modulePath);
|
|
17
|
-
// It can be assumed that the module file exists and the source can be read
|
|
18
|
-
const src = readModule(moduleFilePath);
|
|
19
|
-
return { [fileEntry]: src };
|
|
20
|
-
}
|
|
21
3
|
function transformOptionsToPlatformCompileConfig(ctx, transformOptions, modulePath) {
|
|
22
4
|
const { enableDynamicComponents, enableLightningWebSecurityTransforms, experimentalComplexExpressions, apiVersion, name, namespace, experimentalDynamicComponent, outputConfig, } = transformOptions;
|
|
23
5
|
const options = {
|
|
@@ -44,7 +26,7 @@ function transformOptionsToPlatformCompileConfig(ctx, transformOptions, modulePa
|
|
|
44
26
|
type: getBundleType(),
|
|
45
27
|
name: name,
|
|
46
28
|
namespace: namespace ?? 'c',
|
|
47
|
-
files:
|
|
29
|
+
files: ctx.moduleGraph.getModuleFiles(name, namespace ?? '', modulePath),
|
|
48
30
|
options,
|
|
49
31
|
};
|
|
50
32
|
const compilerConfigs = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lexBundler.js","sourceRoot":"","sources":["../../../src/server/bundler/lexBundler.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"lexBundler.js","sourceRoot":"","sources":["../../../src/server/bundler/lexBundler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAyB,QAAQ,EAAU,MAAM,sBAAsB,CAAC;AAU1F,SAAS,uCAAuC,CAC5C,GAAqB,EACrB,gBAAkC,EAClC,UAAkB;IAElB,MAAM,EACF,uBAAuB,EACvB,oCAAoC,EACpC,8BAA8B,EAC9B,UAAU,EACV,IAAI,EACJ,SAAS,EACT,4BAA4B,EAC5B,YAAY,GACf,GAAG,gBAAgB,CAAC;IACrB,MAAM,OAAO,GAAkB;QAC3B,mBAAmB;QACnB,sBAAsB,EAAE,uBAAuB;QAC/C,oCAAoC,EAAE,oCAAoC;QAC1E,yBAAyB,EAAE,8BAA8B;QACzD,UAAU,EAAE,UAAU;QACtB,mBAAmB;QACnB,qBAAqB,EAAE,IAAI;QAC3B,aAAa,EAAE,SAAS;QACxB,iBAAiB,EAAE,IAAI;QACvB,wBAAwB,EAAE,IAAI;QAC9B,kCAAkC;QAClC,SAAS,EAAE,IAAI;KAClB,CAAC;IAEF,MAAM,aAAa,GAAG,GAAe,EAAE;QACnC,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,GAAG,EAAE,CAAC;YACxF,OAAO,UAAU,CAAC;QACtB,CAAC;QACD,OAAO,UAAU,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,MAAM,GAAiB;QACzB,IAAI,EAAE,aAAa,EAAE;QACrB,IAAI,EAAE,IAAK;QACX,SAAS,EAAE,SAAS,IAAI,GAAG;QAC3B,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,cAAc,CAAC,IAAK,EAAE,SAAS,IAAI,EAAE,EAAE,UAAU,CAAC;QACzE,OAAO;KACV,CAAC;IACF,MAAM,eAAe,GAAqB;QACtC;YACI,YAAY,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,YAAY,EAAE,SAAS,EAAE;YACpF,4BAA4B,EAAE,4BAA4B;SAC7D;KACJ,CAAC;IACF,OAAO;QACH,MAAM;QACN,eAAe;KAClB,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CACzB,GAAqB,EACrB,UAAkB,EAClB,OAAyB,EACzB,MAAc;IAEd,MAAM,aAAa,GAAG,uCAAuC,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACxF,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,aAAa,CAAC,CAAC;IAEpD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,CAAC,GAAG,CACN,QAAQ,CAAC,KAAK,EACd,qBAAqB,UAAU,sBAAsB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAC5F,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;IAC1E,CAAC;IAED,OAAO;QACH,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;QAC9B,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;KAC7E,CAAC;AACN,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as Websocket from 'ws';
|
|
2
2
|
import { DevServerContext } from '../../types/devServer.js';
|
|
3
3
|
import { Connection } from './connection.js';
|
|
4
|
-
import type {
|
|
4
|
+
import type { HMR_Data, HMR_Data_Update } from '@lwc/lwc-dev-server-types';
|
|
5
5
|
import type { TransformOptions } from '@lwc/compiler';
|
|
6
6
|
/**
|
|
7
7
|
* Class representing a client that has connected to the dev server.
|
|
@@ -12,11 +12,10 @@ import type { TransformOptions } from '@lwc/compiler';
|
|
|
12
12
|
export declare class Client {
|
|
13
13
|
clientId: string;
|
|
14
14
|
url: string;
|
|
15
|
-
target: ClientTarget;
|
|
16
15
|
activePaths: Map<string, TransformOptions>;
|
|
17
16
|
connection: Connection;
|
|
18
17
|
ctx: DevServerContext;
|
|
19
|
-
constructor(clientId: string, url: string,
|
|
18
|
+
constructor(clientId: string, url: string, connection: Connection, ctx: DevServerContext);
|
|
20
19
|
addActivePaths(paths: {
|
|
21
20
|
modulePath: string;
|
|
22
21
|
compileOptions: TransformOptions;
|
|
@@ -16,11 +16,10 @@ const SUPPORTED_FETCH_EXTENSIONS = new Set(['.html', '.css', '.js']);
|
|
|
16
16
|
* by this class.
|
|
17
17
|
*/
|
|
18
18
|
export class Client {
|
|
19
|
-
constructor(clientId, url,
|
|
19
|
+
constructor(clientId, url, connection, ctx) {
|
|
20
20
|
this.activePaths = new Map();
|
|
21
21
|
this.clientId = clientId;
|
|
22
22
|
this.url = url;
|
|
23
|
-
this.target = target;
|
|
24
23
|
this.connection = connection;
|
|
25
24
|
this.connection.receive(this.messageCallback.bind(this));
|
|
26
25
|
this.ctx = ctx;
|
|
@@ -66,30 +65,22 @@ export class Client {
|
|
|
66
65
|
};
|
|
67
66
|
this.connection.send(error);
|
|
68
67
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
logger.log(LogLevel.debug, `Found no compile option for module path: ${modulePath}, check the __lwc_hmr_hot.register() call.`);
|
|
74
|
-
break;
|
|
75
|
-
}
|
|
76
|
-
logger.log(LogLevel.debug, `[LWC Dev Server] Compiling ${modulePath}`);
|
|
77
|
-
const result = await compile(this.ctx, modulePath, compileOptions, logger);
|
|
78
|
-
if (!result.code) {
|
|
79
|
-
logger.log(LogLevel.error, `Compiling ${moduleFilePath} failed and there are compiler warnings: ${JSON.stringify(result.warnings)}`);
|
|
80
|
-
break;
|
|
81
|
-
}
|
|
82
|
-
logger.log(LogLevel.debug, `[LWC Dev Server] Sending an updated ${modulePath}`);
|
|
83
|
-
this.connection.send({
|
|
84
|
-
type: 'module-update',
|
|
85
|
-
data: [{ modulePath, src: result.code }],
|
|
86
|
-
});
|
|
87
|
-
break;
|
|
88
|
-
}
|
|
89
|
-
default:
|
|
90
|
-
logger.log(LogLevel.verbose, `Client target ${this.target} not supported currently.`);
|
|
91
|
-
break;
|
|
68
|
+
const compileOptions = this.getCompileOptions(modulePath);
|
|
69
|
+
if (!compileOptions) {
|
|
70
|
+
logger.log(LogLevel.debug, `Found no compile option for module path: ${modulePath}, check the __lwc_hmr_hot.register() call.`);
|
|
71
|
+
break;
|
|
92
72
|
}
|
|
73
|
+
logger.log(LogLevel.debug, `[LWC Dev Server] Compiling ${modulePath}`);
|
|
74
|
+
const result = await compile(this.ctx, modulePath, compileOptions, logger);
|
|
75
|
+
if (!result.code) {
|
|
76
|
+
logger.log(LogLevel.error, `Compiling ${moduleFilePath} failed and there are compiler warnings: ${JSON.stringify(result.warnings)}`);
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
logger.log(LogLevel.debug, `[LWC Dev Server] Sending an updated ${modulePath}`);
|
|
80
|
+
this.connection.send({
|
|
81
|
+
type: 'module-update',
|
|
82
|
+
data: [{ modulePath, src: result.code }],
|
|
83
|
+
});
|
|
93
84
|
break;
|
|
94
85
|
}
|
|
95
86
|
case 'register': {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/server/connection/client.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/server/connection/client.ts"],"names":[],"mappings":"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"}
|
package/dist/server/index.js
CHANGED
|
@@ -85,16 +85,16 @@ export class LWCServer {
|
|
|
85
85
|
}
|
|
86
86
|
switch (data.type) {
|
|
87
87
|
case 'init': {
|
|
88
|
-
const { data: { clientId, url,
|
|
88
|
+
const { data: { clientId, url, auth }, } = data;
|
|
89
89
|
if (this.clientPool.size() === this.context.config.maxClientCount) {
|
|
90
90
|
logger.log(LogLevel.error, `[LWC Dev Server] Max connection limit(${this.context.config.maxClientCount}) reached, ignoring new requests until existing connections are closed`);
|
|
91
91
|
socket.close();
|
|
92
92
|
return;
|
|
93
93
|
}
|
|
94
94
|
const connection = new Connection(socket, logger);
|
|
95
|
-
const client = new Client(clientId, url,
|
|
95
|
+
const client = new Client(clientId, url, connection, this.context);
|
|
96
96
|
this.clientPool.addClient(socket, client);
|
|
97
|
-
logger.log(LogLevel.info, `[LWC Dev Server] New connection for url: ${url}
|
|
97
|
+
logger.log(LogLevel.info, `[LWC Dev Server] New connection for url: ${url} registered. Client ID: ${clientId}`);
|
|
98
98
|
// TODO: The server should decode the auth challenge with its session key and return the challenge phrase
|
|
99
99
|
if (this.identityToken) {
|
|
100
100
|
if (!auth) {
|
package/dist/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { FSWatcher } from 'chokidar';
|
|
|
2
2
|
import { ServerConfig, type Logger } from '../../types/index.js';
|
|
3
3
|
import type { HMR_Data_Register } from '@lwc/lwc-dev-server-types';
|
|
4
4
|
import type { ModuleInfo, ModuleMapEntry, WorkspaceScanner } from './workspaceScanner/scanner';
|
|
5
|
+
import type { BundleFiles } from '@lwc/sfdc-lwc-compiler/dist/compile.js';
|
|
5
6
|
export type Module = any;
|
|
6
7
|
export interface ModuleChangeCallbacks {
|
|
7
8
|
moduleUpdateHandler: (modulePath: string) => void;
|
|
@@ -13,12 +14,12 @@ export declare class ModuleGraph {
|
|
|
13
14
|
/**
|
|
14
15
|
* All LWC modules and their parts with absolute file paths, for the current workspace.
|
|
15
16
|
*/
|
|
16
|
-
moduleMap: ModuleMapEntry
|
|
17
|
+
moduleMap: Map<string, ModuleMapEntry>;
|
|
17
18
|
/**
|
|
18
19
|
* All modules paths that are being used by the various client connections
|
|
19
20
|
*/
|
|
20
21
|
activeModulePaths: string[];
|
|
21
|
-
|
|
22
|
+
fileToModulePathMap: {
|
|
22
23
|
[key: string]: string;
|
|
23
24
|
};
|
|
24
25
|
modulePathToModuleInfo: {
|
|
@@ -27,7 +28,7 @@ export declare class ModuleGraph {
|
|
|
27
28
|
moduleChangeCallbacks: ModuleChangeCallbacks;
|
|
28
29
|
constructor(config: ServerConfig, logger: Logger, watcher: FSWatcher, moduleChangeCallbacks: ModuleChangeCallbacks);
|
|
29
30
|
init(): void;
|
|
30
|
-
|
|
31
|
+
getModulePathByFile(path: string): string | undefined;
|
|
31
32
|
getFileByModulePath(modulePath: string): string | undefined;
|
|
32
33
|
/**
|
|
33
34
|
* Register the active paths that the client is interested in
|
|
@@ -36,4 +37,26 @@ export declare class ModuleGraph {
|
|
|
36
37
|
*/
|
|
37
38
|
registerActivePaths(moduleRegistration: HMR_Data_Register): string[];
|
|
38
39
|
fileChangeHandler(filePath: string): void;
|
|
40
|
+
/**
|
|
41
|
+
* Identify which modulePath that represents the boundary of the changed module.
|
|
42
|
+
* In the case of .html files, the module boundary is the template file itself. swapTemplate()
|
|
43
|
+
* is called and module swap is done.
|
|
44
|
+
* In the case of .css files, the module boundary is the css file itself, swapStyle() is called
|
|
45
|
+
* and module swap is done.
|
|
46
|
+
* In the case of .js files, the module boundary is the main entry file of the module, all the files
|
|
47
|
+
* reachable from the entry module are bundled and swapComponent invoked.
|
|
48
|
+
* Since JS hot swap is currently supporting components, this focused update of the main entry file
|
|
49
|
+
* is acceptable.
|
|
50
|
+
* @param modulePath The module that changed
|
|
51
|
+
* @return The modulePath of the boundary that needs to be updated.
|
|
52
|
+
*/
|
|
53
|
+
getModuleBoundary(modulePath: string): string;
|
|
54
|
+
/**
|
|
55
|
+
* Fetch files and source related to the modulePath that is being hot loaded.
|
|
56
|
+
* @param {string} name Name of the component being compiled
|
|
57
|
+
* @param {string} namespace The namespace of the component
|
|
58
|
+
* @param {string} modulePath The formatted path for the file being compiled.
|
|
59
|
+
* @returns
|
|
60
|
+
*/
|
|
61
|
+
getModuleFiles(name: string, namespace: string, modulePath: string): BundleFiles;
|
|
39
62
|
}
|
|
@@ -1,32 +1,33 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { LogLevel } from '../../types/index.js';
|
|
4
|
-
import { getModuleHash } from '../util/fileUtil.js';
|
|
4
|
+
import { getModuleHash, readModule } from '../util/fileUtil.js';
|
|
5
5
|
import { getWorkspaceScanner } from './workspaceScanner/index.js';
|
|
6
6
|
export class ModuleGraph {
|
|
7
7
|
constructor(config, logger, watcher, moduleChangeCallbacks) {
|
|
8
8
|
/**
|
|
9
9
|
* All LWC modules and their parts with absolute file paths, for the current workspace.
|
|
10
10
|
*/
|
|
11
|
-
this.moduleMap =
|
|
11
|
+
this.moduleMap = new Map();
|
|
12
12
|
/**
|
|
13
13
|
* All modules paths that are being used by the various client connections
|
|
14
14
|
*/
|
|
15
15
|
this.activeModulePaths = [];
|
|
16
16
|
// Mapping from <absolute file path> => "<namespace>/<componentname>/component.js"
|
|
17
|
-
this.
|
|
17
|
+
this.fileToModulePathMap = Object.create(null);
|
|
18
18
|
// Mapping from "<namespace>/<componentname>/component.js" => { moduleFilePath, moduleSourceHash }
|
|
19
19
|
this.modulePathToModuleInfo = Object.create(null);
|
|
20
20
|
this.watcher = watcher;
|
|
21
21
|
this.logger = logger;
|
|
22
22
|
this.moduleChangeCallbacks = moduleChangeCallbacks;
|
|
23
23
|
this.workspaceScanner = getWorkspaceScanner(config.workspace, config.paths, logger);
|
|
24
|
+
// init() may be called multiple times in the future(when a directory is deleted or addeds)
|
|
24
25
|
this.init();
|
|
25
26
|
}
|
|
26
27
|
init() {
|
|
27
28
|
this.moduleMap = this.workspaceScanner.getModulesMap();
|
|
28
|
-
if (this.moduleMap.
|
|
29
|
-
this.logger.log(LogLevel.debug, `[Module Graph] Found ${this.moduleMap.
|
|
29
|
+
if (this.moduleMap.size) {
|
|
30
|
+
this.logger.log(LogLevel.debug, `[Module Graph] Found ${this.moduleMap.size} LWC components in the current workspace.`);
|
|
30
31
|
}
|
|
31
32
|
else {
|
|
32
33
|
this.logger.log(LogLevel.debug, `[Module Graph] Found no LWC components in the current workspace, check your settings in lwc.config.json.`);
|
|
@@ -34,14 +35,17 @@ export class ModuleGraph {
|
|
|
34
35
|
this.moduleMap.forEach(({ moduleParts }) => {
|
|
35
36
|
Object.assign(this.modulePathToModuleInfo, moduleParts);
|
|
36
37
|
for (const [modulePath, moduleInfo] of Object.entries(moduleParts)) {
|
|
37
|
-
this.
|
|
38
|
+
this.fileToModulePathMap[moduleInfo.moduleFilePath] = modulePath;
|
|
38
39
|
}
|
|
39
40
|
});
|
|
40
41
|
this.watcher.on('change', this.fileChangeHandler.bind(this));
|
|
41
42
|
}
|
|
42
|
-
|
|
43
|
-
|
|
43
|
+
// Given absolute file path, get the modulePath
|
|
44
|
+
// Mapping from <absolute file path> => "<namespace>/<componentname>/component.js"
|
|
45
|
+
getModulePathByFile(path) {
|
|
46
|
+
return this.fileToModulePathMap[path];
|
|
44
47
|
}
|
|
48
|
+
// Given the modulePath, get the absolute file path for that module
|
|
45
49
|
getFileByModulePath(modulePath) {
|
|
46
50
|
return this.modulePathToModuleInfo[modulePath]?.moduleFilePath;
|
|
47
51
|
}
|
|
@@ -73,12 +77,15 @@ export class ModuleGraph {
|
|
|
73
77
|
this.logger.log(LogLevel.debug, `[Module Graph] Following modules are unknown to dev server: \n\t ${unTrackedModules.join(',\n\t')}`);
|
|
74
78
|
staleModules.length &&
|
|
75
79
|
this.logger.log(LogLevel.debug, `[Module Graph] Following modules have a newer version: \n\t ${staleModules.join(',\n\t')}`);
|
|
80
|
+
// TODO: Before returning staleModules, the list can be trimmed based on module boundary
|
|
81
|
+
// For example ['c/mycomponent/mycomponent.js', 'c/mycomponent/mycomponent.html', 'c/mycomponent/mycomponent.css] -> ['c/mycomponent/mycomponent.js']
|
|
82
|
+
// because 'c/mycomponent/mycomponent.js' module update will contain full bundle
|
|
76
83
|
return staleModules;
|
|
77
84
|
}
|
|
78
85
|
fileChangeHandler(filePath) {
|
|
79
86
|
const changedFile = path.resolve(filePath);
|
|
80
87
|
if (fs.lstatSync(changedFile).isFile()) {
|
|
81
|
-
const modulePath = this.
|
|
88
|
+
const modulePath = this.getModulePathByFile(changedFile);
|
|
82
89
|
if (modulePath) {
|
|
83
90
|
const moduleInfo = this.modulePathToModuleInfo[modulePath];
|
|
84
91
|
const newModuleHash = getModuleHash(changedFile);
|
|
@@ -87,9 +94,78 @@ export class ModuleGraph {
|
|
|
87
94
|
}
|
|
88
95
|
this.logger.log(LogLevel.info, `[LWC Dev Server] File '${modulePath}' modified - updating.`);
|
|
89
96
|
moduleInfo.moduleSourceHash = newModuleHash;
|
|
90
|
-
|
|
97
|
+
// Find the nearest boundary for the file that changed
|
|
98
|
+
const moduleBoundary = this.getModuleBoundary(modulePath);
|
|
99
|
+
// Notify the clients that a module has been updated
|
|
100
|
+
this.moduleChangeCallbacks.moduleUpdateHandler(moduleBoundary);
|
|
91
101
|
}
|
|
92
102
|
}
|
|
93
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Identify which modulePath that represents the boundary of the changed module.
|
|
106
|
+
* In the case of .html files, the module boundary is the template file itself. swapTemplate()
|
|
107
|
+
* is called and module swap is done.
|
|
108
|
+
* In the case of .css files, the module boundary is the css file itself, swapStyle() is called
|
|
109
|
+
* and module swap is done.
|
|
110
|
+
* In the case of .js files, the module boundary is the main entry file of the module, all the files
|
|
111
|
+
* reachable from the entry module are bundled and swapComponent invoked.
|
|
112
|
+
* Since JS hot swap is currently supporting components, this focused update of the main entry file
|
|
113
|
+
* is acceptable.
|
|
114
|
+
* @param modulePath The module that changed
|
|
115
|
+
* @return The modulePath of the boundary that needs to be updated.
|
|
116
|
+
*/
|
|
117
|
+
getModuleBoundary(modulePath) {
|
|
118
|
+
const { ext } = path.parse(modulePath);
|
|
119
|
+
if (['.html', '.css'].includes(ext)) {
|
|
120
|
+
return modulePath;
|
|
121
|
+
}
|
|
122
|
+
else if (['.js', '.ts'].includes(ext)) {
|
|
123
|
+
const ownerModuleId = this.modulePathToModuleInfo[modulePath].ownerModuleId;
|
|
124
|
+
const moduleMapEntry = this.moduleMap.get(ownerModuleId);
|
|
125
|
+
if (moduleMapEntry) {
|
|
126
|
+
const [namespace, name] = ownerModuleId.split('/');
|
|
127
|
+
const { moduleParts } = moduleMapEntry;
|
|
128
|
+
const entryFile = [
|
|
129
|
+
`${namespace}/${name}/${name}.js`,
|
|
130
|
+
`${namespace}/${name}/${name}.ts`,
|
|
131
|
+
`${namespace}/${name}/${name}.css`,
|
|
132
|
+
].find((entry) => Object.hasOwnProperty.call(moduleParts, entry));
|
|
133
|
+
if (entryFile) {
|
|
134
|
+
return entryFile;
|
|
135
|
+
}
|
|
136
|
+
throw new Error(`[LWC Dev Server] Unable to determine entry file for path: ${modulePath}`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
throw new Error(`[LWC Dev Server] Unrecognized file type or file not part of LWC module: ${modulePath}`);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Fetch files and source related to the modulePath that is being hot loaded.
|
|
143
|
+
* @param {string} name Name of the component being compiled
|
|
144
|
+
* @param {string} namespace The namespace of the component
|
|
145
|
+
* @param {string} modulePath The formatted path for the file being compiled.
|
|
146
|
+
* @returns
|
|
147
|
+
*/
|
|
148
|
+
getModuleFiles(name, namespace, modulePath) {
|
|
149
|
+
const { ext } = path.parse(modulePath);
|
|
150
|
+
const moduleDir = `${namespace}/${name}`;
|
|
151
|
+
if (['.html', '.css'].includes(ext)) {
|
|
152
|
+
const moduleFilePath = this.getFileByModulePath(modulePath);
|
|
153
|
+
const fileEntry = path.relative(moduleDir, modulePath);
|
|
154
|
+
// It can be assumed that the module file exists and the source can be read
|
|
155
|
+
const src = readModule(moduleFilePath);
|
|
156
|
+
return { [fileEntry]: src };
|
|
157
|
+
}
|
|
158
|
+
else if (['.js', '.ts'].includes(ext)) {
|
|
159
|
+
const ownerModuleId = this.modulePathToModuleInfo[modulePath].ownerModuleId;
|
|
160
|
+
const moduleMapEntry = this.moduleMap.get(ownerModuleId);
|
|
161
|
+
return Object.keys(moduleMapEntry.moduleParts).reduce((acc, key) => {
|
|
162
|
+
const part = path.relative(moduleDir, key);
|
|
163
|
+
const partSrc = readModule(moduleMapEntry.moduleParts[key].moduleFilePath);
|
|
164
|
+
acc[part] = partSrc;
|
|
165
|
+
return acc;
|
|
166
|
+
}, {});
|
|
167
|
+
}
|
|
168
|
+
throw new Error(`[LWC Dev Server] Unable to determine source for '${modulePath}'`);
|
|
169
|
+
}
|
|
94
170
|
}
|
|
95
171
|
//# sourceMappingURL=index.js.map
|
|
@@ -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,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/moduleGraph/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,11 @@ import type { ModuleInfo } from './scanner';
|
|
|
2
2
|
/**
|
|
3
3
|
* Get all parts of an LWC component.
|
|
4
4
|
* @param componentDir A directory representing an LWC Component.
|
|
5
|
+
* @param namespace String representing the namespace of the component
|
|
6
|
+
* @param ownerModuleId Owner module in format like <namespace>/<component-name>.
|
|
5
7
|
* @returns A map representing all valid parts of the LWC with the short path as the key and full
|
|
6
8
|
* canonical path as value.
|
|
7
9
|
*/
|
|
8
|
-
export declare function getComponentParts(componentDir: string, namespace: string): {
|
|
10
|
+
export declare function getComponentParts(componentDir: string, namespace: string, ownerModuleId: string): {
|
|
9
11
|
[key: string]: ModuleInfo;
|
|
10
12
|
} | undefined;
|
|
@@ -59,10 +59,12 @@ function isValidEntryPoint(entryPoint, componentName) {
|
|
|
59
59
|
/**
|
|
60
60
|
* Get all parts of an LWC component.
|
|
61
61
|
* @param componentDir A directory representing an LWC Component.
|
|
62
|
+
* @param namespace String representing the namespace of the component
|
|
63
|
+
* @param ownerModuleId Owner module in format like <namespace>/<component-name>.
|
|
62
64
|
* @returns A map representing all valid parts of the LWC with the short path as the key and full
|
|
63
65
|
* canonical path as value.
|
|
64
66
|
*/
|
|
65
|
-
export function getComponentParts(componentDir, namespace) {
|
|
67
|
+
export function getComponentParts(componentDir, namespace, ownerModuleId) {
|
|
66
68
|
if (!existsSync(componentDir)) {
|
|
67
69
|
throw new Error('The LWC component directory does not exist.');
|
|
68
70
|
}
|
|
@@ -81,6 +83,7 @@ export function getComponentParts(componentDir, namespace) {
|
|
|
81
83
|
{
|
|
82
84
|
moduleFilePath: file,
|
|
83
85
|
moduleSourceHash: getModuleHash(file),
|
|
86
|
+
ownerModuleId, // A back reference to the owner
|
|
84
87
|
},
|
|
85
88
|
];
|
|
86
89
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileReader.js","sourceRoot":"","sources":["../../../../src/server/moduleGraph/workspaceScanner/fileReader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGvD;;;;;GAKG;AACH,SAAS,cAAc,CAAC,IAAY,EAAE,aAAqB;IACvD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/D,IAAI,GAAG,KAAK,UAAU,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,UAAU,CAAC,IAAI,QAAQ,KAAK,aAAa;QACzF,OAAO,IAAI,CAAC;IAChB,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,MAAM,IAAI,QAAQ,KAAK,aAAa;QAAE,OAAO,IAAI,CAAC;IACvF,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,IAAY;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,UAAU,CAAC;AACzD,CAAC;AAED;;;;;GAKG;AACH,SAAS,QAAQ,CAAC,GAAW,EAAE,IAAY;IACvC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,OAAO,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,UAAkB,EAAE,aAAqB;IAChE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,GAAG,KAAK,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,GAAG,KAAK,CAAC,CAAC;IACjE,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,GAAG,MAAM,CAAC,CAAC;IAC7E,OAAO,UAAU,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,sBAAsB,CAAC,CAAC;AACpG,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"fileReader.js","sourceRoot":"","sources":["../../../../src/server/moduleGraph/workspaceScanner/fileReader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGvD;;;;;GAKG;AACH,SAAS,cAAc,CAAC,IAAY,EAAE,aAAqB;IACvD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/D,IAAI,GAAG,KAAK,UAAU,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,UAAU,CAAC,IAAI,QAAQ,KAAK,aAAa;QACzF,OAAO,IAAI,CAAC;IAChB,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,MAAM,IAAI,QAAQ,KAAK,aAAa;QAAE,OAAO,IAAI,CAAC;IACvF,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,IAAY;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,UAAU,CAAC;AACzD,CAAC;AAED;;;;;GAKG;AACH,SAAS,QAAQ,CAAC,GAAW,EAAE,IAAY;IACvC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,OAAO,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,UAAkB,EAAE,aAAqB;IAChE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,GAAG,KAAK,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,GAAG,KAAK,CAAC,CAAC;IACjE,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,GAAG,MAAM,CAAC,CAAC;IAC7E,OAAO,UAAU,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,sBAAsB,CAAC,CAAC;AACpG,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC7B,YAAoB,EACpB,SAAiB,EACjB,aAAqB;IAErB,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC;QACzC,+BAA+B;QAC/B,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC,WAAW;IACrB,oEAAoE;IACpE,+EAA+E;IAC/E,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,OAAO;YACH,GAAG,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE;YAC3D;gBACI,cAAc,EAAE,IAAI;gBACpB,gBAAgB,EAAE,aAAa,CAAC,IAAI,CAAC;gBACrC,aAAa,EAAE,gCAAgC;aAClD;SACJ,CAAC;IACN,CAAC,CAAC,CACL,CAAC;AACN,CAAC"}
|
|
@@ -2,6 +2,7 @@ import type { Logger, Workspace } from '../../../types/index';
|
|
|
2
2
|
export interface ModuleInfo {
|
|
3
3
|
moduleFilePath: string;
|
|
4
4
|
moduleSourceHash: string;
|
|
5
|
+
ownerModuleId: string;
|
|
5
6
|
}
|
|
6
7
|
/**
|
|
7
8
|
* Represents a Module entry per LWC component
|
|
@@ -44,7 +45,7 @@ export interface WorkspaceScanner {
|
|
|
44
45
|
/**
|
|
45
46
|
* Get information about LWC modules contained in the workspace.
|
|
46
47
|
*/
|
|
47
|
-
getModulesMap(): ModuleMapEntry
|
|
48
|
+
getModulesMap(): Map<string, ModuleMapEntry>;
|
|
48
49
|
}
|
|
49
50
|
export declare abstract class BaseWorkspaceScanner implements WorkspaceScanner {
|
|
50
51
|
workspace: Workspace;
|
|
@@ -54,7 +55,7 @@ export declare abstract class BaseWorkspaceScanner implements WorkspaceScanner {
|
|
|
54
55
|
/**
|
|
55
56
|
* Get information about LWC modules contained in the workspace.
|
|
56
57
|
*/
|
|
57
|
-
getModulesMap(): ModuleMapEntry
|
|
58
|
+
getModulesMap(): Map<string, ModuleMapEntry>;
|
|
58
59
|
abstract getNamespace(moduleDir: string): string;
|
|
59
60
|
abstract findModuleDirs(): string[];
|
|
60
61
|
scanAModule(moduleDir: string): ModuleMapEntry | undefined;
|
|
@@ -10,11 +10,11 @@ export class BaseWorkspaceScanner {
|
|
|
10
10
|
* Get information about LWC modules contained in the workspace.
|
|
11
11
|
*/
|
|
12
12
|
getModulesMap() {
|
|
13
|
-
const modulesMap =
|
|
13
|
+
const modulesMap = new Map();
|
|
14
14
|
this.findModuleDirs().forEach((dir) => {
|
|
15
|
-
const
|
|
16
|
-
if (
|
|
17
|
-
modulesMap.
|
|
15
|
+
const moduleMapEntry = this.scanAModule(dir);
|
|
16
|
+
if (moduleMapEntry) {
|
|
17
|
+
modulesMap.set(moduleMapEntry.ownerModuleId, moduleMapEntry);
|
|
18
18
|
}
|
|
19
19
|
});
|
|
20
20
|
return modulesMap;
|
|
@@ -22,12 +22,13 @@ export class BaseWorkspaceScanner {
|
|
|
22
22
|
scanAModule(moduleDir) {
|
|
23
23
|
const { base } = path.parse(moduleDir);
|
|
24
24
|
const namespace = this.getNamespace(moduleDir);
|
|
25
|
-
const
|
|
25
|
+
const ownerModuleId = `${namespace}/${base}`;
|
|
26
|
+
const moduleParts = getComponentParts(moduleDir, namespace, ownerModuleId);
|
|
26
27
|
if (!moduleParts) {
|
|
27
28
|
return;
|
|
28
29
|
}
|
|
29
30
|
const moduleMap = {
|
|
30
|
-
ownerModuleId
|
|
31
|
+
ownerModuleId,
|
|
31
32
|
moduleParts,
|
|
32
33
|
};
|
|
33
34
|
return moduleMap;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../../../src/server/moduleGraph/workspaceScanner/scanner.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../../../src/server/moduleGraph/workspaceScanner/scanner.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAsDpD,MAAM,OAAgB,oBAAoB;IAItC,YAAY,SAAoB,EAAE,YAAsB,EAAE,MAAc;QACpE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,aAAa;QACT,MAAM,UAAU,GAAG,IAAI,GAAG,EAA0B,CAAC;QACrD,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAClC,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAC7C,IAAI,cAAc,EAAE,CAAC;gBACjB,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;YACjE,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO,UAAU,CAAC;IACtB,CAAC;IAKD,WAAW,CAAC,SAAiB;QACzB,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,aAAa,GAAG,GAAG,SAAS,IAAI,IAAI,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAG,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QAC3E,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,OAAO;QACX,CAAC;QAED,MAAM,SAAS,GAAmB;YAC9B,aAAa;YACb,WAAW;SACd,CAAC;QACF,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import type { ClientTarget } from '@lwc/lwc-dev-server-types';
|
|
3
2
|
export declare const MAX_CLIENT_COUNT = 5;
|
|
4
3
|
/**
|
|
5
4
|
* Define the type of workspace.
|
|
@@ -48,17 +47,11 @@ export interface ServerConfig {
|
|
|
48
47
|
rootDir: string;
|
|
49
48
|
/** Port at which the web socket will communicating from. */
|
|
50
49
|
port: number;
|
|
51
|
-
/** Websocket protocol to use */
|
|
52
|
-
protocol: string;
|
|
53
|
-
/** Host where the dev server is running. Will be used to send information to the client. */
|
|
54
|
-
host: string;
|
|
55
50
|
/**
|
|
56
51
|
* Component paths to watch
|
|
57
52
|
* For SF CLI: force-app/main/default
|
|
58
53
|
*/
|
|
59
54
|
paths: string[];
|
|
60
|
-
/** Container targets to bundle modules for. */
|
|
61
|
-
targets: ClientTarget[];
|
|
62
55
|
workspace: Workspace;
|
|
63
56
|
logLevel: LogLevel;
|
|
64
57
|
https?: HttpsConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverConfig.js","sourceRoot":"","sources":["../../src/types/serverConfig.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"serverConfig.js","sourceRoot":"","sources":["../../src/types/serverConfig.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAElC;;;;GAIG;AACH,MAAM,CAAN,IAAY,SAIX;AAJD,WAAY,SAAS;IACjB,kCAAqB,CAAA;IACrB,oCAAuB,CAAA;IACvB,wBAAW,CAAA;AACf,CAAC,EAJW,SAAS,KAAT,SAAS,QAIpB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,QAOX;AAPD,WAAY,QAAQ;IAChB,2CAAU,CAAA;IACV,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;IACT,6CAAW,CAAA;AACf,CAAC,EAPW,QAAQ,KAAR,QAAQ,QAOnB"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
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": "
|
|
4
|
+
"version": "9.0.0",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"lwc dev server"
|
|
7
7
|
],
|
|
@@ -23,14 +23,14 @@
|
|
|
23
23
|
"start": "node ./bin/dev-server.js start"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@lwc/sfdc-lwc-compiler": "
|
|
26
|
+
"@lwc/sfdc-lwc-compiler": "9.0.0",
|
|
27
27
|
"chalk": "~5.3.0",
|
|
28
28
|
"chokidar": "~3.6.0",
|
|
29
29
|
"commander": "~10.0.0",
|
|
30
30
|
"ws": "~8.16.0"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
|
-
"@lwc/lwc-dev-server-types": "
|
|
33
|
+
"@lwc/lwc-dev-server-types": "9.0.0",
|
|
34
34
|
"@types/ws": "^8.5.10"
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|