diff --git a/src/Bundle.ts b/src/Bundle.ts index 5969c4f2891..050af731d52 100644 --- a/src/Bundle.ts +++ b/src/Bundle.ts @@ -267,7 +267,7 @@ function getIncludedModules(modulesById: ReadonlyMap(); + readonly children: ChildScope[] = []; + readonly variables = new Map(); addDeclaration( identifier: Identifier, diff --git a/src/ast/scopes/TrackingScope.ts b/src/ast/scopes/TrackingScope.ts index f1f40b878c0..f90cf4d42c8 100644 --- a/src/ast/scopes/TrackingScope.ts +++ b/src/ast/scopes/TrackingScope.ts @@ -5,7 +5,7 @@ import type LocalVariable from '../variables/LocalVariable'; import BlockScope from './BlockScope'; export default class TrackingScope extends BlockScope { - hoistedDeclarations: Identifier[] = []; + readonly hoistedDeclarations: Identifier[] = []; addDeclaration( identifier: Identifier, diff --git a/src/ast/variables/ExportShimVariable.ts b/src/ast/variables/ExportShimVariable.ts index ef7ebe5efff..f473c49c875 100644 --- a/src/ast/variables/ExportShimVariable.ts +++ b/src/ast/variables/ExportShimVariable.ts @@ -3,7 +3,7 @@ import { MISSING_EXPORT_SHIM_VARIABLE } from '../../utils/variableNames'; import Variable from './Variable'; export default class ExportShimVariable extends Variable { - module: Module; + readonly module: Module; constructor(module: Module) { super(MISSING_EXPORT_SHIM_VARIABLE); diff --git a/src/ast/variables/ExternalVariable.ts b/src/ast/variables/ExternalVariable.ts index 8119a3d29d1..ec2d465746c 100644 --- a/src/ast/variables/ExternalVariable.ts +++ b/src/ast/variables/ExternalVariable.ts @@ -6,8 +6,8 @@ import type { ObjectPath } from '../utils/PathTracker'; import Variable from './Variable'; export default class ExternalVariable extends Variable { - isNamespace: boolean; - module: ExternalModule; + readonly isNamespace: boolean; + readonly module: ExternalModule; referenced = false; constructor(module: ExternalModule, name: string) { diff --git a/src/ast/variables/NamespaceVariable.ts b/src/ast/variables/NamespaceVariable.ts index e82e3543973..a618346ff4c 100644 --- a/src/ast/variables/NamespaceVariable.ts +++ b/src/ast/variables/NamespaceVariable.ts @@ -15,9 +15,9 @@ import { SymbolToStringTag, UNKNOWN_PATH } from '../utils/PathTracker'; import Variable from './Variable'; export default class NamespaceVariable extends Variable { - context: AstContext; + readonly context: AstContext; declare isNamespace: true; - module: Module; + readonly module: Module; private memberVariables: { [name: string]: Variable } | null = null; private mergedNamespaces: readonly Variable[] = []; diff --git a/src/ast/variables/SyntheticNamedExportVariable.ts b/src/ast/variables/SyntheticNamedExportVariable.ts index f7bcc50dc2c..84384c54010 100644 --- a/src/ast/variables/SyntheticNamedExportVariable.ts +++ b/src/ast/variables/SyntheticNamedExportVariable.ts @@ -4,9 +4,9 @@ import ExportDefaultVariable from './ExportDefaultVariable'; import Variable from './Variable'; export default class SyntheticNamedExportVariable extends Variable { - context: AstContext; - module: Module; - syntheticNamespace: Variable; + readonly context: AstContext; + readonly module: Module; + readonly syntheticNamespace: Variable; private baseVariable: Variable | null = null; diff --git a/src/finalisers/cjs.ts b/src/finalisers/cjs.ts index 093cfed9ba4..28fc9382edf 100644 --- a/src/finalisers/cjs.ts +++ b/src/finalisers/cjs.ts @@ -73,7 +73,7 @@ export default function cjs( } function getImportBlock( - dependencies: ChunkDependency[], + dependencies: readonly ChunkDependency[], { _, cnst, n }: GenerateCodeSnippets, compact: boolean ): string { diff --git a/src/finalisers/es.ts b/src/finalisers/es.ts index f40cf512b7d..ac49a9113c6 100644 --- a/src/finalisers/es.ts +++ b/src/finalisers/es.ts @@ -32,7 +32,10 @@ export default function es( magicString.trim(); } -function getImportBlock(dependencies: ChunkDependency[], { _ }: GenerateCodeSnippets): string[] { +function getImportBlock( + dependencies: readonly ChunkDependency[], + { _ }: GenerateCodeSnippets +): string[] { const importBlock: string[] = []; for (const { importPath, reexports, imports, name, assertions } of dependencies) { const assertion = assertions ? `${_}assert${_}${assertions}` : ''; diff --git a/src/finalisers/shared/getCompleteAmdId.ts b/src/finalisers/shared/getCompleteAmdId.ts index fec3d235300..c6fb4d0074e 100644 --- a/src/finalisers/shared/getCompleteAmdId.ts +++ b/src/finalisers/shared/getCompleteAmdId.ts @@ -9,5 +9,5 @@ export default function getCompleteAmdId( return `${options.basePath ? options.basePath + '/' : ''}${removeJsExtension(chunkId)}`; } - return options.id || ''; + return options.id ?? ''; } diff --git a/src/finalisers/shared/getExportBlock.ts b/src/finalisers/shared/getExportBlock.ts index 2fc93be2738..9b6a363f2c8 100644 --- a/src/finalisers/shared/getExportBlock.ts +++ b/src/finalisers/shared/getExportBlock.ts @@ -10,7 +10,7 @@ import { export function getExportBlock( exports: ChunkExports, - dependencies: ChunkDependency[], + dependencies: readonly ChunkDependency[], namedExportsMode: boolean, interop: GetInterop, snippets: GenerateCodeSnippets, @@ -117,7 +117,7 @@ export function getExportBlock( function getSingleDefaultExport( exports: ChunkExports, - dependencies: ChunkDependency[], + dependencies: readonly ChunkDependency[], interop: GetInterop, externalLiveBindings: boolean, getPropertyAccess: (name: string) => string diff --git a/src/utils/FileEmitter.ts b/src/utils/FileEmitter.ts index 9faa59d5c5f..bcb7938fbcf 100644 --- a/src/utils/FileEmitter.ts +++ b/src/utils/FileEmitter.ts @@ -246,8 +246,11 @@ export class FileEmitter { bundle: OutputBundleWithPlaceholders, outputOptions: NormalizedOutputOptions ): void => { - const fileNamesBySource = new Map(); - const output = (this.output = { bundle, fileNamesBySource, outputOptions }); + const output = (this.output = { + bundle, + fileNamesBySource: new Map(), + outputOptions + }); for (const emittedFile of this.filesByReferenceId.values()) { if (emittedFile.fileName) { reserveFileNameInBundle(emittedFile.fileName, output, this.options.onwarn); @@ -265,16 +268,13 @@ export class FileEmitter { } private assignReferenceId(file: ConsumedFile, idBase: string): string { - let referenceId: string | undefined; + let referenceId = idBase; do { - referenceId = createHash() - .update(referenceId || idBase) - .digest('hex') - .slice(0, 8); + referenceId = createHash().update(referenceId).digest('hex').slice(0, 8); } while ( this.filesByReferenceId.has(referenceId) || - this.outputFileEmitters.some(({ filesByReferenceId }) => filesByReferenceId.has(referenceId!)) + this.outputFileEmitters.some(({ filesByReferenceId }) => filesByReferenceId.has(referenceId)) ); this.filesByReferenceId.set(referenceId, file); for (const { filesByReferenceId } of this.outputFileEmitters) {