fix minor type issues and linting

This commit is contained in:
Tobias Koppers 2018-06-20 12:04:47 +02:00
parent 04d2af0825
commit 3e778b85c7
3 changed files with 34 additions and 20 deletions

View File

@ -24,12 +24,24 @@ const ERR_CHUNK_INITIAL =
*/ */
/** /**
* Compare two objects based on their ids for sorting * Compare two Modules based on their ids for sorting
* @param {WithId} a object that contains an ID property * @param {Module} a module
* @param {WithId} b object that contains an ID property * @param {Module} b module
* @returns {-1|0|1} sort value * @returns {-1|0|1} sort value
*/ */
const sortById = (a, b) => { const sortModuleById = (a, b) => {
if (a.id < b.id) return -1;
if (b.id < a.id) return 1;
return 0;
};
/**
* Compare two ChunkGroups based on their ids for sorting
* @param {ChunkGroup} a chunk group
* @param {ChunkGroup} b chunk group
* @returns {-1|0|1} sort value
*/
const sortChunkGroupById = (a, b) => {
if (a.id < b.id) return -1; if (a.id < b.id) return -1;
if (b.id < a.id) return 1; if (b.id < a.id) return 1;
return 0; return 0;
@ -103,7 +115,7 @@ class Chunk {
/** @private @type {SortableSet<Module>} */ /** @private @type {SortableSet<Module>} */
this._modules = new SortableSet(undefined, sortByIdentifier); this._modules = new SortableSet(undefined, sortByIdentifier);
/** @private @type {SortableSet<ChunkGroup>} */ /** @private @type {SortableSet<ChunkGroup>} */
this._groups = new SortableSet(undefined, sortById); this._groups = new SortableSet(undefined, sortChunkGroupById);
/** @type {Source[]} */ /** @type {Source[]} */
this.files = []; this.files = [];
/** @type {boolean} */ /** @type {boolean} */
@ -492,7 +504,7 @@ class Chunk {
* @returns {void} * @returns {void}
*/ */
sortModules(sortByFn) { sortModules(sortByFn) {
this._modules.sortWith(sortByFn || sortById); this._modules.sortWith(sortByFn || sortModuleById);
} }
sortItems() { sortItems() {

View File

@ -6,6 +6,9 @@
const { Tapable, SyncWaterfallHook, SyncHook } = require("tapable"); const { Tapable, SyncWaterfallHook, SyncHook } = require("tapable");
/** @typedef {import("webpack-sources").Source} Source */
/** @typedef {import("./Module")} Module */
module.exports = class ModuleTemplate extends Tapable { module.exports = class ModuleTemplate extends Tapable {
constructor(runtimeTemplate, type) { constructor(runtimeTemplate, type) {
super(); super();
@ -40,6 +43,12 @@ module.exports = class ModuleTemplate extends Tapable {
}; };
} }
/**
* @param {Module} module the module
* @param {TODO} dependencyTemplates templates for dependencies
* @param {TODO} options render options
* @returns {Source} the source
*/
render(module, dependencyTemplates, options) { render(module, dependencyTemplates, options) {
try { try {
const moduleSource = module.source( const moduleSource = module.source(

View File

@ -44,14 +44,6 @@ const stringifyIdSortPredicate = (a, b) => {
return 0; return 0;
}; };
/**
* @param {Module} module the module to compare against
* @returns {boolean} return true if module.id is equal to type "number"
*/
const moduleIdIsNumber = module => {
return typeof module.id === "number";
};
class Template { class Template {
/** /**
* *
@ -177,18 +169,20 @@ class Template {
} }
/** /**
* * @typedef {Object} WithId
* @param {Module[]} modules a collection of modules to get array bounds for * @property {string|number} id
*/
/**
* @param {WithId[]} modules a collection of modules to get array bounds for
* @returns {[number, number] | false} returns the upper and lower array bounds * @returns {[number, number] | false} returns the upper and lower array bounds
* or false if not every module has a number based id * or false if not every module has a number based id
*/ */
static getModulesArrayBounds(modules) { static getModulesArrayBounds(modules) {
// Typeguards don't work for .every() with predicate functions
// https://github.com/Microsoft/TypeScript/issues/23799
if (!modules.every(moduleIdIsNumber)) return false;
var maxId = -Infinity; var maxId = -Infinity;
var minId = Infinity; var minId = Infinity;
for (const module of modules) { for (const module of modules) {
if (typeof module.id !== "number") return false;
if (maxId < module.id) maxId = /** @type {number} */ (module.id); if (maxId < module.id) maxId = /** @type {number} */ (module.id);
if (minId > module.id) minId = /** @type {number} */ (module.id); if (minId > module.id) minId = /** @type {number} */ (module.id);
} }
@ -236,7 +230,6 @@ class Template {
source.add("[]"); source.add("[]");
return source; return source;
} }
/** @type {Module[]} */
var allModules = modules.map(module => { var allModules = modules.map(module => {
return { return {
id: module.id, id: module.id,