Skip to content

Commit 103d9b7

Browse files
jsleuthpat841
authored andcommitted
fix(webpack): pull-request comment updates
1 parent 1263657 commit 103d9b7

File tree

3 files changed

+44
-53
lines changed

3 files changed

+44
-53
lines changed

src/AureliaDependenciesPlugin.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ class AureliaDependency extends IncludeDependency {
1515
class Template {
1616
apply(dep: AureliaDependency, source: Webpack.Source) {
1717
// Get the module id, fallback to using the module request
18-
let moduleId: string = dep.request;
19-
if (dep.module && typeof dep.module[preserveModuleName] === 'string') {
18+
let moduleId = dep.request;
19+
if (dep.module && typeof dep.module[preserveModuleName] === "string") {
2020
moduleId = dep.module[preserveModuleName];
2121
}
2222

src/PreserveModuleNamePlugin.ts

Lines changed: 36 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
* - The path to the module itself: /home/usr/pkg/node_modules
1818
* - The module name: mod
1919
* - The relative path: dir/file.js
20-
* - Map the parsed path data to _nodeModuleResourcesMap by the parsed module name and its resource location
20+
* - Map the parsed path data to nodeModuleResourcesMap by the parsed module name and its resource location
2121
* - Example Map:
2222
* {
2323
* 'aurelia-templating-router': {
@@ -52,7 +52,7 @@
5252
* - If there are multiple entry points:
5353
* - Pick the most shallow resource
5454
* - If they are both as shallow as possible choose index over module name match
55-
* - Map the normalized module id to _nodeModuleResourceIdMap by the resource file
55+
* - Map the normalized module id to nodeModuleResourceIdMap by the resource file
5656
* - Example Map:
5757
* {
5858
* '/home/usr/pkg/node_modules/aurelia-templating-router/dist/native-modules/router-view.js': 'aurelia-templating-router/router-view.js',
@@ -92,8 +92,8 @@ import path = require("path");
9292
export const preserveModuleName = Symbol();
9393

9494
// node_module maps
95-
const _nodeModuleResourcesMap: NodeModule.ResourcesMap = {};
96-
const _nodeModuleResourceIdMap: NodeModule.ResourceIdMap = {};
95+
const nodeModuleResourcesMap: NodeModule.ResourcesMap = {};
96+
const nodeModuleResourceIdMap: NodeModule.ResourceIdMap = {};
9797

9898
const TAP_NAME = "Aurelia:PreserveModuleName";
9999

@@ -147,6 +147,7 @@ export class PreserveModuleNamePlugin {
147147
if (/^async[?!]/.test(realModule.rawRequest))
148148
id = "async!" + id;
149149

150+
id = id.replace(/\\/g, "/");
150151
if (module.buildMeta) // meta can be null if the module contains errors
151152
module.buildMeta["aurelia-id"] = id;
152153
if (!this.isDll) {
@@ -169,20 +170,13 @@ function getPreservedModules(modules: Webpack.Module[]) {
169170

170171
// Preserve the module if its dependencies are also preserved
171172
const reasons = (m.reasons && Array.isArray(m.reasons)) ? m.reasons : [];
172-
return reasons.some((reason) => Boolean(reason.dependency && reason.dependency[preserveModuleName]));
173+
return reasons.some(reason => (reason.dependency && reason.dependency[preserveModuleName]));
173174
})
174175
);
175176
}
176177

177-
/**
178-
* Check if a module exists in node_modules/
179-
*
180-
* @param {Webpack.Module} module The module to check
181-
*
182-
* @return {Boolean} True if it exists in node_modules/, false otherwise
183-
*/
184-
function isNodeModule(module: Webpack.Module): boolean {
185-
return !(!module || !module.resource || !(/\bnode_modules\b/i.test(module.resource)));
178+
function isNodeModule(module: Webpack.Module) {
179+
return (module.resource && /\bnode_modules\b/i.test(module.resource));
186180
}
187181

188182
/**
@@ -234,10 +228,10 @@ function mapNodeModule(module: Webpack.Module) {
234228
}
235229

236230
// Map it
237-
if (!_nodeModuleResourcesMap[moduleData.name]) {
238-
_nodeModuleResourcesMap[moduleData.name] = {};
231+
if (!nodeModuleResourcesMap[moduleData.name]) {
232+
nodeModuleResourcesMap[moduleData.name] = {};
239233
}
240-
_nodeModuleResourcesMap[moduleData.name][module.resource] = moduleData;
234+
nodeModuleResourcesMap[moduleData.name][module.resource] = moduleData;
241235
}
242236

243237
/**
@@ -266,13 +260,13 @@ function mapNodeModule(module: Webpack.Module) {
266260
* @return {undefined}
267261
*/
268262
function parseNodeModules() {
269-
if (!_nodeModuleResourcesMap || !Object.keys(_nodeModuleResourcesMap).length) {
263+
if (!nodeModuleResourcesMap || !Object.keys(nodeModuleResourcesMap).length) {
270264
return;
271265
}
272266

273267
// Parse each module
274-
for (const moduleKey in _nodeModuleResourcesMap) {
275-
const moduleResources: NodeModule.ModuleResource = _nodeModuleResourcesMap[moduleKey];
268+
for (const moduleKey in nodeModuleResourcesMap) {
269+
const moduleResources: NodeModule.ModuleResource = nodeModuleResourcesMap[moduleKey];
276270

277271
// Keep track of the common resource path and possible module entry points
278272
let commonPathParts: string[] = [];
@@ -281,15 +275,15 @@ function parseNodeModules() {
281275
// Parse each resource in the module
282276
for (const resource in moduleResources) {
283277
const data: NodeModule.Data = moduleResources[resource];
284-
const pathParts: string[] = data.relative.split('/');
278+
const pathParts = data.relative.split("/");
285279
const resourceFile: string | null = pathParts.splice(-1)[0];
286280
if (!resourceFile) {
287281
continue;
288282
}
289283

290284
// Entry?
291-
const resourceName: string = resourceFile.replace(/\..*/, '');
292-
if (resourceName === moduleKey || resourceName === 'index') {
285+
const resourceName = resourceFile.replace(/\..*/, "");
286+
if (resourceName === moduleKey || resourceName === "index") {
293287
possibleEntryPoints.push(resource);
294288
}
295289

@@ -314,12 +308,12 @@ function parseNodeModules() {
314308
}
315309

316310
// Convert common path to string
317-
let commonPath: string = commonPathParts.join('/');
318-
commonPath = (commonPath.startsWith('/')) ? commonPath : `/${commonPath}`;
311+
let commonPath = commonPathParts.join("/");
312+
commonPath = (commonPath.startsWith("/")) ? commonPath : `/${commonPath}`;
319313

320314
// If there is more than one possible entry point, use the most shallow resource
321315
let moduleEntry: string | null = null;
322-
possibleEntryPoints.forEach((resource: string) => {
316+
possibleEntryPoints.forEach((resource) => {
323317
const data: NodeModule.Data = moduleResources[resource];
324318

325319
// No entry yet?
@@ -328,7 +322,7 @@ function parseNodeModules() {
328322
}
329323

330324
// Shallow?
331-
else if (moduleEntry.split('/').length > data.relative.split('/').length) {
325+
else if (moduleEntry.split("/").length > data.relative.split("/").length) {
332326
moduleEntry = data.relative;
333327
}
334328

@@ -340,25 +334,25 @@ function parseNodeModules() {
340334
});
341335

342336
// If an entry point still hasnt been found and there is only one resource, use that
343-
const resourceKeys: string[] = Object.keys(moduleResources);
337+
const resourceKeys = Object.keys(moduleResources);
344338
if (!moduleEntry && resourceKeys.length === 1) {
345339
moduleEntry = moduleResources[resourceKeys[0]].relative;
346340
}
347341

348342
// Map the resources to the module id
349-
resourceKeys.forEach((resource: string) => {
343+
resourceKeys.forEach((resource) => {
350344
const data: NodeModule.Data = moduleResources[resource];
351345

352346
// Entry?
353347
if (moduleEntry === data.relative) {
354-
_nodeModuleResourceIdMap[resource] = moduleKey;
348+
nodeModuleResourceIdMap[resource] = moduleKey;
355349
return;
356350
}
357351

358352
// Build the id from the resources common path
359-
let key: string = data.relative.replace(new RegExp(`^${escapeString(commonPath)}`), '');
360-
key = (key.startsWith('/')) ? key : `/${key}`;
361-
_nodeModuleResourceIdMap[resource] = `${moduleKey}${key}`;
353+
let key = data.relative.replace(new RegExp(`^${escapeString(commonPath)}`), "");
354+
key = (key.startsWith("/")) ? key : `/${key}`;
355+
nodeModuleResourceIdMap[resource] = `${moduleKey}${key}`;
362356
});
363357
}
364358
}
@@ -373,14 +367,14 @@ function parseNodeModules() {
373367
* @return {string|null} The relative path if available, null otherwise
374368
*/
375369
function getRelativeModule(module: Webpack.Module, paths: string[]): string | null {
376-
if (!module || !module.resource || !paths || !paths.length) {
370+
if (!module.resource || !paths || !paths.length) {
377371
return null;
378372
}
379373

380374
// Try to find the module in the resolver paths
381375
for (let i = 0, len = paths.length; i < len; i++) {
382-
const relative: string = path.relative(paths[i], module.resource);
383-
if (!relative.startsWith('..')) {
376+
const relative = path.relative(paths[i], module.resource);
377+
if (!relative.startsWith("..")) {
384378
return relative;
385379
}
386380
}
@@ -398,19 +392,19 @@ function getRelativeModule(module: Webpack.Module, paths: string[]): string | nu
398392
* @return {string|null} The alias path if available, null otherwise
399393
*/
400394
function getAliasModule(module: Webpack.Module, aliases: { [key: string]: string } | null): string | null {
401-
if (!module || !module.resource || !aliases || !Object.keys(aliases).length) {
395+
if (!module.resource || !aliases || !Object.keys(aliases).length) {
402396
return null;
403397
}
404398

405399
// Look for the module in each alias
406400
for (let alias in aliases) {
407-
const relative: string = path.relative(path.resolve(aliases[alias]), module.resource);
408-
if (relative.startsWith('..')) {
401+
const relative = path.relative(path.resolve(aliases[alias]), module.resource);
402+
if (relative.startsWith("..")) {
409403
continue;
410404
}
411405

412406
// Absolute alias?
413-
alias = alias.replace(/\$$/, '');
407+
alias = alias.replace(/\$$/, "");
414408
return (relative && relative.length) ? `${alias}/${relative}` : alias;
415409
}
416410

@@ -428,10 +422,6 @@ function getAliasModule(module: Webpack.Module, aliases: { [key: string]: string
428422
* @return {string|null} The module id if available, null otherwise
429423
*/
430424
function getModuleId(module: Webpack.Module, paths: string[], aliases: { [key: string]: string } | null): string | null {
431-
if (!module) {
432-
return null;
433-
}
434-
435425
// Handling module ids can be a bit tricky
436426
// Modules can be included in any of the following ways:
437427
// import { Module } from 'module'
@@ -456,7 +446,7 @@ function getModuleId(module: Webpack.Module, paths: string[], aliases: { [key: s
456446
// In order to have the aurelia-loader work correctly, we need to coerce everything to absolute ids
457447
// Is it a node_module?
458448
if (isNodeModule(module)) {
459-
return _nodeModuleResourceIdMap[module.resource];
449+
return nodeModuleResourceIdMap[module.resource];
460450
}
461451

462452
// Get the module relative to the webpack resolver paths
@@ -474,9 +464,5 @@ function getModuleId(module: Webpack.Module, paths: string[], aliases: { [key: s
474464
* @return {string|null} The escaped string
475465
*/
476466
function escapeString(str: string): string | null {
477-
if (typeof str !== 'string') {
478-
return null;
479-
}
480-
481-
return str.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
467+
return str.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&");
482468
}

src/webpack.d.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,15 @@ declare namespace Webpack {
5757
range: [number, number];
5858
// Those types are not correct, but that's enough to compile this project
5959
property: IdentifierExpression;
60-
object: { name: string; type: string; } & MemberExpression;
60+
object: { name: string; type: string; } & (MemberExpression | Identifier);
6161
type: "MemberExpression";
6262
}
6363

64+
export class Identifier {
65+
name: string;
66+
type: "Identifier";
67+
}
68+
6469
export class IdentifierExpression {
6570
range: [number, number];
6671
name: string;

0 commit comments

Comments
 (0)