Skip to content

Commit 77b463b

Browse files
committed
add some missing types for validation
1 parent 18d1df9 commit 77b463b

7 files changed

+40
-7
lines changed

declarations.d.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ declare module "@webassemblyjs/ast" {
3737
ModuleExport?: (p: NodePath<ModuleExport>) => void;
3838
Start?: (p: NodePath<Start>) => void;
3939
}
40-
);
40+
): void;
4141
export class NodePath<T> {
4242
node: T;
4343
}
@@ -48,13 +48,15 @@ declare module "@webassemblyjs/ast" {
4848
export class Start extends Node {
4949
index: Identifier;
5050
}
51+
export class ModuleImportDescription {
52+
type: string;
53+
valtype?: string;
54+
id?: Identifier;
55+
signature?: Signature;
56+
}
5157
export class ModuleImport extends Node {
5258
module: string;
53-
descr: {
54-
type: string;
55-
valtype: string;
56-
id: string;
57-
};
59+
descr: ModuleImportDescription;
5860
name: string;
5961
}
6062
export class ModuleExport extends Node {

lib/ContextModule.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ const Module = require("./Module");
1010
const AsyncDependenciesBlock = require("./AsyncDependenciesBlock");
1111
const Template = require("./Template");
1212

13+
/** @typedef {import("./dependencies/ContextElementDependency")} ContextElementDependency */
14+
1315
class ContextModule extends Module {
1416
// type ContextMode = "sync" | "eager" | "weak" | "async-weak" | "lazy" | "lazy-once"
1517
// type ContextOptions = { resource: string, recursive: boolean, regExp: RegExp, addon?: string, mode?: ContextMode, chunkName?: string, include?: RegExp, exclude?: RegExp, groupOptions?: Object }
@@ -45,6 +47,9 @@ class ContextModule extends Module {
4547
throw new Error("options.mode is a required option");
4648

4749
this._identifier = this._createIdentifier();
50+
51+
/** @type {ContextElementDependency[]} */
52+
this.dependencies;
4853
}
4954

5055
updateCacheModule(module) {

lib/DelegatedModule.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ class DelegatedModule extends Module {
5656
}
5757

5858
source(depTemplates, runtime) {
59-
const dep = this.dependencies[0];
59+
const dep = /** @type {DelegatedSourceDependency} */ (this.dependencies[0]);
6060
const sourceModule = dep.module;
6161
let str;
6262

lib/DependenciesBlock.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,16 @@
77
const DependenciesBlockVariable = require("./DependenciesBlockVariable");
88

99
/** @typedef {import("./ChunkGroup")} ChunkGroup */
10+
/** @typedef {import("./Dependency")} Dependency */
11+
/** @typedef {import("./AsyncDependenciesBlock")} AsyncDependenciesBlock */
1012

1113
class DependenciesBlock {
1214
constructor() {
15+
/** @type {Dependency[]} */
1316
this.dependencies = [];
17+
/** @type {AsyncDependenciesBlock[]} */
1418
this.blocks = [];
19+
/** @type {TODO[]} */
1520
this.variables = [];
1621
// TODO remove this line, it's wrong
1722
/** @type {ChunkGroup=} */

lib/Dependency.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,17 @@
77
const compareLocations = require("./compareLocations");
88
const DependencyReference = require("./dependencies/DependencyReference");
99

10+
/** @typedef {import("./Module")} Module */
11+
1012
class Dependency {
1113
constructor() {
14+
/** @type {Module} */
1215
this.module = null;
16+
/** @type {boolean} */
1317
this.weak = false;
18+
/** @type {boolean} */
1419
this.optional = false;
20+
/** @type {TODO} */
1521
this.loc = undefined;
1622
}
1723

lib/Module.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,10 @@ class Module extends DependenciesBlock {
255255
}
256256
}
257257

258+
/**
259+
* @param {string=} exportName the name of the export
260+
* @returns {boolean|string} false if the export isn't used, true if no exportName is provided and the module is used, or the name to access it if the export is used
261+
*/
258262
isUsed(exportName) {
259263
if (!exportName) return this.used !== false;
260264
if (this.used === null || this.usedExports === null) return exportName;

lib/dependencies/WebAssemblyImportDependency.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,22 @@ const DependencyReference = require("./DependencyReference");
88
const ModuleDependency = require("./ModuleDependency");
99
const UnsupportedWebAssemblyFeatureError = require("../wasm/UnsupportedWebAssemblyFeatureError");
1010

11+
/** @typedef {import("@webassemblyjs/ast").ModuleImportDescription} ModuleImportDescription */
12+
1113
class WebAssemblyImportDependency extends ModuleDependency {
14+
/**
15+
* @param {string} request the request
16+
* @param {string} name the imported name
17+
* @param {ModuleImportDescription} description the WASM ast node
18+
* @param {boolean} onlyDirectImport if only direct imports are allowed
19+
*/
1220
constructor(request, name, description, onlyDirectImport) {
1321
super(request);
22+
/** @type {string} */
1423
this.name = name;
24+
/** @type {ModuleImportDescription} */
1525
this.description = description;
26+
/** @type {boolean} */
1627
this.onlyDirectImport = onlyDirectImport;
1728
}
1829

0 commit comments

Comments
 (0)