From 7cba7ab12d984adf05072b566c37d09c0399a72d Mon Sep 17 00:00:00 2001 From: Daniel Nalborczyk Date: Sun, 30 Jan 2022 00:44:43 -0500 Subject: [PATCH] use type imports --- build-plugins/add-cli-entry.ts | 2 +- build-plugins/emit-module-package-file.ts | 2 +- build-plugins/esm-dynamic-import.ts | 2 +- cli/cli.ts | 1 + cli/logging.ts | 3 +- cli/run/batchWarnings.ts | 2 +- cli/run/build.ts | 1 + cli/run/commandPlugins.ts | 6 +-- cli/run/index.ts | 4 +- cli/run/loadConfigFile.ts | 3 +- cli/run/loadConfigFromCommand.ts | 1 + cli/run/stdin.ts | 1 + src/ast/CallOptions.ts | 4 +- src/ast/Entity.ts | 4 +- src/ast/ExecutionContext.ts | 6 +-- src/ast/NodeEvents.ts | 1 + src/ast/keys.ts | 2 +- src/ast/nodes/ArrayExpression.ts | 20 ++++----- src/ast/nodes/ArrayPattern.ts | 16 +++---- src/ast/nodes/ArrowFunctionExpression.ts | 34 ++++++++++----- src/ast/nodes/AssignmentExpression.ts | 20 +++++---- src/ast/nodes/AssignmentPattern.ts | 24 +++++------ src/ast/nodes/AwaitExpression.ts | 6 +-- src/ast/nodes/BinaryExpression.ts | 20 ++++----- src/ast/nodes/BlockStatement.ts | 14 +++--- src/ast/nodes/BreakStatement.ts | 8 ++-- src/ast/nodes/CallExpression.ts | 41 ++++++++++-------- src/ast/nodes/CatchClause.ts | 10 ++--- src/ast/nodes/ChainExpression.ts | 6 +-- src/ast/nodes/ClassBody.ts | 14 +++--- src/ast/nodes/ClassDeclaration.ts | 12 +++--- src/ast/nodes/ClassExpression.ts | 4 +- src/ast/nodes/ConditionalExpression.ts | 7 ++- src/ast/nodes/ContinueStatement.ts | 8 ++-- src/ast/nodes/DoWhileStatement.ts | 11 +++-- src/ast/nodes/EmptyStatement.ts | 2 +- src/ast/nodes/ExportAllDeclaration.ts | 10 ++--- src/ast/nodes/ExportDefaultDeclaration.ts | 22 +++++----- src/ast/nodes/ExportNamedDeclaration.ts | 22 +++++----- src/ast/nodes/ExportSpecifier.ts | 4 +- src/ast/nodes/ExpressionStatement.ts | 8 ++-- src/ast/nodes/ForInStatement.ts | 21 +++++---- src/ast/nodes/ForOfStatement.ts | 21 +++++---- src/ast/nodes/ForStatement.ts | 19 +++++--- src/ast/nodes/FunctionDeclaration.ts | 8 ++-- src/ast/nodes/FunctionExpression.ts | 4 +- src/ast/nodes/Identifier.ts | 43 +++++++++++-------- src/ast/nodes/IfStatement.ts | 26 ++++++----- src/ast/nodes/ImportDeclaration.ts | 14 +++--- src/ast/nodes/ImportDefaultSpecifier.ts | 4 +- src/ast/nodes/ImportExpression.ts | 22 +++++----- src/ast/nodes/ImportNamespaceSpecifier.ts | 4 +- src/ast/nodes/ImportSpecifier.ts | 4 +- src/ast/nodes/LabeledStatement.ts | 12 +++--- src/ast/nodes/Literal.ts | 18 ++++---- src/ast/nodes/LogicalExpression.ts | 28 ++++++------ src/ast/nodes/MemberExpression.ts | 43 ++++++++++--------- src/ast/nodes/MetaProperty.ts | 18 ++++---- src/ast/nodes/MethodDefinition.ts | 8 ++-- src/ast/nodes/NewExpression.ts | 12 +++--- src/ast/nodes/ObjectExpression.ts | 28 ++++++------ src/ast/nodes/ObjectPattern.ts | 22 +++++----- src/ast/nodes/PrivateIdentifier.ts | 2 +- src/ast/nodes/Program.ts | 12 +++--- src/ast/nodes/Property.ts | 18 ++++---- src/ast/nodes/PropertyDefinition.ts | 20 ++++----- src/ast/nodes/RestElement.ts | 18 ++++---- src/ast/nodes/ReturnStatement.ts | 12 +++--- src/ast/nodes/SequenceExpression.ts | 22 +++++----- src/ast/nodes/SpreadElement.ts | 14 +++--- src/ast/nodes/StaticBlock.ts | 14 +++--- src/ast/nodes/Super.ts | 6 +-- src/ast/nodes/SwitchCase.ts | 19 +++++--- src/ast/nodes/SwitchStatement.ts | 18 ++++---- src/ast/nodes/TaggedTemplateExpression.ts | 14 +++--- src/ast/nodes/TemplateElement.ts | 4 +- src/ast/nodes/TemplateLiteral.ts | 14 +++--- src/ast/nodes/ThisExpression.ts | 14 +++--- src/ast/nodes/ThrowStatement.ts | 10 ++--- src/ast/nodes/TryStatement.ts | 12 +++--- src/ast/nodes/UnaryExpression.ts | 14 +++--- src/ast/nodes/UnknownNode.ts | 2 +- src/ast/nodes/UpdateExpression.ts | 10 ++--- src/ast/nodes/VariableDeclaration.ts | 26 +++++------ src/ast/nodes/VariableDeclarator.ts | 12 +++--- src/ast/nodes/WhileStatement.ts | 11 +++-- src/ast/nodes/YieldExpression.ts | 10 ++--- src/ast/nodes/shared/ArrayPrototype.ts | 4 +- src/ast/nodes/shared/ClassNode.ts | 24 +++++------ src/ast/nodes/shared/Expression.ts | 5 ++- src/ast/nodes/shared/FunctionNode.ts | 36 ++++++++++------ src/ast/nodes/shared/MethodBase.ts | 24 ++++++----- src/ast/nodes/shared/MethodTypes.ts | 17 +++++--- src/ast/nodes/shared/MultiExpression.ts | 12 +++--- src/ast/nodes/shared/Node.ts | 27 ++++++------ src/ast/nodes/shared/ObjectEntity.ts | 2 +- src/ast/nodes/shared/ObjectMember.ts | 12 +++--- src/ast/nodes/shared/ObjectPrototype.ts | 2 +- src/ast/nodes/shared/Pattern.ts | 4 +- src/ast/nodes/shared/knownGlobals.ts | 2 +- src/ast/scopes/BlockScope.ts | 8 ++-- src/ast/scopes/CatchScope.ts | 8 ++-- src/ast/scopes/ChildScope.ts | 12 +++--- src/ast/scopes/ClassBodyScope.ts | 6 +-- src/ast/scopes/FunctionScope.ts | 19 ++++---- src/ast/scopes/GlobalScope.ts | 2 +- src/ast/scopes/ModuleScope.ts | 10 ++--- src/ast/scopes/ParameterScope.ts | 19 ++++---- src/ast/scopes/ReturnValueScope.ts | 2 +- src/ast/scopes/Scope.ts | 10 ++--- src/ast/scopes/TrackingScope.ts | 8 ++-- src/ast/utils/PathTracker.ts | 2 +- src/ast/values.ts | 8 ++-- src/ast/variables/ArgumentsVariable.ts | 4 +- src/ast/variables/ExportDefaultVariable.ts | 8 ++-- src/ast/variables/ExportShimVariable.ts | 2 +- src/ast/variables/ExternalVariable.ts | 6 +-- src/ast/variables/GlobalVariable.ts | 2 +- src/ast/variables/LocalVariable.ts | 32 ++++++++------ src/ast/variables/NamespaceVariable.ts | 13 +++--- .../variables/SyntheticNamedExportVariable.ts | 3 +- src/ast/variables/ThisVariable.ts | 18 ++++---- src/ast/variables/UndefinedVariable.ts | 2 +- src/ast/variables/Variable.ts | 10 ++--- src/finalisers/amd.ts | 6 +-- src/finalisers/cjs.ts | 10 ++--- src/finalisers/es.ts | 10 ++--- src/finalisers/iife.ts | 6 +-- src/finalisers/index.ts | 8 ++-- src/finalisers/shared/getCompleteAmdId.ts | 8 ++-- src/finalisers/shared/getExportBlock.ts | 6 +-- src/finalisers/shared/getInteropBlock.ts | 8 ++-- src/finalisers/shared/setupNamespace.ts | 4 +- src/finalisers/shared/trimEmptyImports.ts | 4 +- src/finalisers/shared/warnOnBuiltins.ts | 4 +- src/finalisers/system.ts | 16 +++---- src/finalisers/umd.ts | 8 ++-- src/utils/hookActions.ts | 2 + src/utils/options/options.ts | 2 +- src/watch/watch.ts | 1 + 140 files changed, 853 insertions(+), 730 deletions(-) diff --git a/build-plugins/add-cli-entry.ts b/build-plugins/add-cli-entry.ts index 07b6d7599e1..eb32e55acd5 100644 --- a/build-plugins/add-cli-entry.ts +++ b/build-plugins/add-cli-entry.ts @@ -1,5 +1,5 @@ import MagicString from 'magic-string'; -import { Plugin } from 'rollup'; +import type { Plugin } from 'rollup'; export default function addCliEntry(): Plugin { return { diff --git a/build-plugins/emit-module-package-file.ts b/build-plugins/emit-module-package-file.ts index cdf5dffaff0..0ae9d3659f3 100644 --- a/build-plugins/emit-module-package-file.ts +++ b/build-plugins/emit-module-package-file.ts @@ -1,4 +1,4 @@ -import { Plugin } from 'rollup'; +import type { Plugin } from 'rollup'; export default function emitModulePackageFile(): Plugin { return { diff --git a/build-plugins/esm-dynamic-import.ts b/build-plugins/esm-dynamic-import.ts index 025d17a3757..710e1a4b2ec 100644 --- a/build-plugins/esm-dynamic-import.ts +++ b/build-plugins/esm-dynamic-import.ts @@ -1,4 +1,4 @@ -import { Plugin } from 'rollup'; +import type { Plugin } from 'rollup'; export default function addBinShebangAndEsmImport(): Plugin { let importFound = false; diff --git a/cli/cli.ts b/cli/cli.ts index 389e0136f79..abfff80e4af 100644 --- a/cli/cli.ts +++ b/cli/cli.ts @@ -1,3 +1,4 @@ +import process from 'process'; import help from 'help.md'; import { version } from 'package.json'; import argParser from 'yargs-parser'; diff --git a/cli/logging.ts b/cli/logging.ts index 848227b688e..149b7355b19 100644 --- a/cli/logging.ts +++ b/cli/logging.ts @@ -1,9 +1,10 @@ +import process from 'process'; import type { RollupError } from '../src/rollup/types'; import { bold, cyan, dim, red } from '../src/utils/colors'; import relativeId from '../src/utils/relativeId'; // log to stderr to keep `rollup main.js > bundle.js` from breaking -export const stderr = (...args: unknown[]) => process.stderr.write(`${args.join('')}\n`); +export const stderr = (...args: readonly unknown[]) => process.stderr.write(`${args.join('')}\n`); export function handleError(err: RollupError, recover = false): void { let description = err.message || err; diff --git a/cli/run/batchWarnings.ts b/cli/run/batchWarnings.ts index d311035fa37..742196da31c 100644 --- a/cli/run/batchWarnings.ts +++ b/cli/run/batchWarnings.ts @@ -1,4 +1,4 @@ -import { RollupWarning } from '../../src/rollup/types'; +import type { RollupWarning } from '../../src/rollup/types'; import { bold, gray, yellow } from '../../src/utils/colors'; import { getOrCreate } from '../../src/utils/getOrCreate'; import { printQuotedStringList } from '../../src/utils/printStringList'; diff --git a/cli/run/build.ts b/cli/run/build.ts index 6de3939f689..c3b94ea546a 100644 --- a/cli/run/build.ts +++ b/cli/run/build.ts @@ -1,3 +1,4 @@ +import process from 'process'; import ms from 'pretty-ms'; import { rollup } from '../../src/node-entry'; import type { MergedRollupOptions } from '../../src/rollup/types'; diff --git a/cli/run/commandPlugins.ts b/cli/run/commandPlugins.ts index 67fce28a866..1decc150624 100644 --- a/cli/run/commandPlugins.ts +++ b/cli/run/commandPlugins.ts @@ -1,5 +1,5 @@ -import * as path from 'path'; -import { InputOptions } from '../../src/rollup/types'; +import { resolve } from 'path'; +import type { InputOptions } from '../../src/rollup/types'; import { stdinPlugin } from './stdin'; import { waitForInputPlugin } from './waitForInput'; @@ -71,7 +71,7 @@ async function loadAndRegisterPlugin( } if (!plugin) { try { - if (pluginText[0] == '.') pluginText = path.resolve(pluginText); + if (pluginText[0] == '.') pluginText = resolve(pluginText); plugin = await requireOrImport(pluginText); } catch (err: any) { throw new Error(`Cannot load plugin "${pluginText}": ${err.message}.`); diff --git a/cli/run/index.ts b/cli/run/index.ts index 44278c1b90a..773921d2500 100644 --- a/cli/run/index.ts +++ b/cli/run/index.ts @@ -1,9 +1,9 @@ -import { MergedRollupOptions } from '../../src/rollup/types'; +import type { MergedRollupOptions } from '../../src/rollup/types'; import { isWatchEnabled } from '../../src/utils/options/mergeOptions'; import { getAliasName } from '../../src/utils/relativeId'; import { loadFsEvents } from '../../src/watch/fsevents-importer'; import { handleError } from '../logging'; -import { BatchWarnings } from './batchWarnings'; +import type { BatchWarnings } from './batchWarnings'; import build from './build'; import { getConfigPath } from './getConfigPath'; import loadAndParseConfigFile from './loadConfigFile'; diff --git a/cli/run/loadConfigFile.ts b/cli/run/loadConfigFile.ts index 83db5290228..70addb40dce 100644 --- a/cli/run/loadConfigFile.ts +++ b/cli/run/loadConfigFile.ts @@ -1,5 +1,6 @@ import { promises as fs } from 'fs'; import { extname, isAbsolute } from 'path'; +import { version } from 'process'; import { pathToFileURL } from 'url'; import * as rollup from '../../src/node-entry'; import type { MergedRollupOptions } from '../../src/rollup/types'; @@ -13,7 +14,7 @@ import batchWarnings, { type BatchWarnings } from './batchWarnings'; import { addCommandPluginsToInputOptions, addPluginsFromCommandOption } from './commandPlugins'; function supportsNativeESM(): boolean { - return Number(/^v(\d+)/.exec(process.version)![1]) >= 13; + return Number(/^v(\d+)/.exec(version)![1]) >= 13; } interface NodeModuleWithCompile extends NodeModule { diff --git a/cli/run/loadConfigFromCommand.ts b/cli/run/loadConfigFromCommand.ts index 16e69b3a1c9..87924434ee6 100644 --- a/cli/run/loadConfigFromCommand.ts +++ b/cli/run/loadConfigFromCommand.ts @@ -1,3 +1,4 @@ +import process from 'process'; import type { MergedRollupOptions } from '../../src/rollup/types'; import { mergeOptions } from '../../src/utils/options/mergeOptions'; import batchWarnings, { type BatchWarnings } from './batchWarnings'; diff --git a/cli/run/stdin.ts b/cli/run/stdin.ts index ec181af0975..e77c82d0df7 100644 --- a/cli/run/stdin.ts +++ b/cli/run/stdin.ts @@ -1,3 +1,4 @@ +import process from 'process'; import type { Plugin } from '../../src/rollup/types'; export const stdinName = '-'; diff --git a/src/ast/CallOptions.ts b/src/ast/CallOptions.ts index ced1a24c9ef..ff5b2c0601a 100644 --- a/src/ast/CallOptions.ts +++ b/src/ast/CallOptions.ts @@ -1,5 +1,5 @@ -import SpreadElement from './nodes/SpreadElement'; -import { ExpressionEntity } from './nodes/shared/Expression'; +import type SpreadElement from './nodes/SpreadElement'; +import type { ExpressionEntity } from './nodes/shared/Expression'; export const NO_ARGS = []; diff --git a/src/ast/Entity.ts b/src/ast/Entity.ts index 229f48aca35..4447be9f109 100644 --- a/src/ast/Entity.ts +++ b/src/ast/Entity.ts @@ -1,5 +1,5 @@ -import { HasEffectsContext } from './ExecutionContext'; -import { ObjectPath } from './utils/PathTracker'; +import type { HasEffectsContext } from './ExecutionContext'; +import type { ObjectPath } from './utils/PathTracker'; // eslint-disable-next-line @typescript-eslint/no-empty-interface export interface Entity {} diff --git a/src/ast/ExecutionContext.ts b/src/ast/ExecutionContext.ts index bcc451d773b..1a16d96b02a 100644 --- a/src/ast/ExecutionContext.ts +++ b/src/ast/ExecutionContext.ts @@ -1,7 +1,7 @@ -import { Entity } from './Entity'; -import { ExpressionEntity } from './nodes/shared/Expression'; +import type { Entity } from './Entity'; +import type { ExpressionEntity } from './nodes/shared/Expression'; import { DiscriminatedPathTracker, PathTracker } from './utils/PathTracker'; -import ThisVariable from './variables/ThisVariable'; +import type ThisVariable from './variables/ThisVariable'; interface ExecutionContextIgnore { breaks: boolean; diff --git a/src/ast/NodeEvents.ts b/src/ast/NodeEvents.ts index e952677032a..d0ae880f6f3 100644 --- a/src/ast/NodeEvents.ts +++ b/src/ast/NodeEvents.ts @@ -1,4 +1,5 @@ export const EVENT_ACCESSED = 0; export const EVENT_ASSIGNED = 1; export const EVENT_CALLED = 2; + export type NodeEvent = typeof EVENT_ACCESSED | typeof EVENT_ASSIGNED | typeof EVENT_CALLED; diff --git a/src/ast/keys.ts b/src/ast/keys.ts index 84cfaf0b77f..e9f9d437952 100644 --- a/src/ast/keys.ts +++ b/src/ast/keys.ts @@ -1,4 +1,4 @@ -import { GenericEsTreeNode } from './nodes/shared/Node'; +import type { GenericEsTreeNode } from './nodes/shared/Node'; export const keys: { [name: string]: string[]; diff --git a/src/ast/nodes/ArrayExpression.ts b/src/ast/nodes/ArrayExpression.ts index 5e466a10ed5..406687d99fb 100644 --- a/src/ast/nodes/ArrayExpression.ts +++ b/src/ast/nodes/ArrayExpression.ts @@ -1,18 +1,18 @@ -import { CallOptions } from '../CallOptions'; -import { DeoptimizableEntity } from '../DeoptimizableEntity'; -import { HasEffectsContext } from '../ExecutionContext'; -import { NodeEvent } from '../NodeEvents'; -import { ObjectPath, PathTracker, UnknownInteger } from '../utils/PathTracker'; +import type { CallOptions } from '../CallOptions'; +import type { DeoptimizableEntity } from '../DeoptimizableEntity'; +import type { HasEffectsContext } from '../ExecutionContext'; +import type { NodeEvent } from '../NodeEvents'; +import { type ObjectPath, type PathTracker, UnknownInteger } from '../utils/PathTracker'; import { UNDEFINED_EXPRESSION, UNKNOWN_LITERAL_NUMBER } from '../values'; -import * as NodeType from './NodeType'; +import type * as NodeType from './NodeType'; import SpreadElement from './SpreadElement'; import { ARRAY_PROTOTYPE } from './shared/ArrayPrototype'; -import { ExpressionEntity, LiteralValueOrUnknown } from './shared/Expression'; -import { ExpressionNode, NodeBase } from './shared/Node'; -import { ObjectEntity, ObjectProperty } from './shared/ObjectEntity'; +import type { ExpressionEntity, LiteralValueOrUnknown } from './shared/Expression'; +import { type ExpressionNode, NodeBase } from './shared/Node'; +import { ObjectEntity, type ObjectProperty } from './shared/ObjectEntity'; export default class ArrayExpression extends NodeBase { - declare elements: (ExpressionNode | SpreadElement | null)[]; + declare elements: readonly (ExpressionNode | SpreadElement | null)[]; declare type: NodeType.tArrayExpression; private objectEntity: ObjectEntity | null = null; diff --git a/src/ast/nodes/ArrayPattern.ts b/src/ast/nodes/ArrayPattern.ts index 19b1d623fa0..36c98606ddf 100644 --- a/src/ast/nodes/ArrayPattern.ts +++ b/src/ast/nodes/ArrayPattern.ts @@ -1,19 +1,19 @@ -import { HasEffectsContext } from '../ExecutionContext'; -import { EMPTY_PATH, ObjectPath } from '../utils/PathTracker'; -import LocalVariable from '../variables/LocalVariable'; -import Variable from '../variables/Variable'; -import * as NodeType from './NodeType'; +import type { HasEffectsContext } from '../ExecutionContext'; +import { EMPTY_PATH, type ObjectPath } from '../utils/PathTracker'; +import type LocalVariable from '../variables/LocalVariable'; +import type Variable from '../variables/Variable'; +import type * as NodeType from './NodeType'; import { UNKNOWN_EXPRESSION } from './shared/Expression'; import { NodeBase } from './shared/Node'; -import { PatternNode } from './shared/Pattern'; +import type { PatternNode } from './shared/Pattern'; export default class ArrayPattern extends NodeBase implements PatternNode { declare elements: (PatternNode | null)[]; declare type: NodeType.tArrayPattern; addExportedVariables( - variables: Variable[], - exportNamesByVariable: Map + variables: readonly Variable[], + exportNamesByVariable: ReadonlyMap ): void { for (const element of this.elements) { if (element !== null) { diff --git a/src/ast/nodes/ArrowFunctionExpression.ts b/src/ast/nodes/ArrowFunctionExpression.ts index 81facbe6b56..7a6a51522cc 100644 --- a/src/ast/nodes/ArrowFunctionExpression.ts +++ b/src/ast/nodes/ArrowFunctionExpression.ts @@ -1,22 +1,31 @@ -import { NormalizedTreeshakingOptions } from '../../rollup/types'; -import { CallOptions, NO_ARGS } from '../CallOptions'; -import { BROKEN_FLOW_NONE, HasEffectsContext, InclusionContext } from '../ExecutionContext'; +import type { NormalizedTreeshakingOptions } from '../../rollup/types'; +import { type CallOptions, NO_ARGS } from '../CallOptions'; +import { + BROKEN_FLOW_NONE, + type HasEffectsContext, + type InclusionContext +} from '../ExecutionContext'; import ReturnValueScope from '../scopes/ReturnValueScope'; -import Scope from '../scopes/Scope'; -import { ObjectPath, UNKNOWN_PATH, UnknownKey } from '../utils/PathTracker'; +import type Scope from '../scopes/Scope'; +import { type ObjectPath, UNKNOWN_PATH, UnknownKey } from '../utils/PathTracker'; import BlockStatement from './BlockStatement'; import Identifier from './Identifier'; import * as NodeType from './NodeType'; import RestElement from './RestElement'; -import SpreadElement from './SpreadElement'; -import { ExpressionEntity, UNKNOWN_EXPRESSION } from './shared/Expression'; -import { ExpressionNode, GenericEsTreeNode, IncludeChildren, NodeBase } from './shared/Node'; -import { PatternNode } from './shared/Pattern'; +import type SpreadElement from './SpreadElement'; +import { type ExpressionEntity, UNKNOWN_EXPRESSION } from './shared/Expression'; +import { + type ExpressionNode, + type GenericEsTreeNode, + type IncludeChildren, + NodeBase +} from './shared/Node'; +import type { PatternNode } from './shared/Pattern'; export default class ArrowFunctionExpression extends NodeBase { declare async: boolean; declare body: BlockStatement | ExpressionNode; - declare params: PatternNode[]; + declare params: readonly PatternNode[]; declare preventChildBlockScope: true; declare scope: ReturnValueScope; declare type: NodeType.tArrowFunctionExpression; @@ -116,7 +125,10 @@ export default class ArrowFunctionExpression extends NodeBase { context.brokenFlow = brokenFlow; } - includeCallArguments(context: InclusionContext, args: (ExpressionNode | SpreadElement)[]): void { + includeCallArguments( + context: InclusionContext, + args: readonly (ExpressionNode | SpreadElement)[] + ): void { this.scope.includeCallArguments(context, args); } diff --git a/src/ast/nodes/AssignmentExpression.ts b/src/ast/nodes/AssignmentExpression.ts index 827099493fe..b139d1ffe8f 100644 --- a/src/ast/nodes/AssignmentExpression.ts +++ b/src/ast/nodes/AssignmentExpression.ts @@ -1,25 +1,29 @@ -import MagicString from 'magic-string'; +import type MagicString from 'magic-string'; import { BLANK } from '../../utils/blank'; import { findFirstOccurrenceOutsideComment, findNonWhiteSpace, - NodeRenderOptions, + type NodeRenderOptions, removeLineBreaks, - RenderOptions + type RenderOptions } from '../../utils/renderHelpers'; import { renderSystemExportExpression, renderSystemExportFunction, renderSystemExportSequenceAfterExpression } from '../../utils/systemJsRendering'; -import { createHasEffectsContext, HasEffectsContext, InclusionContext } from '../ExecutionContext'; -import { EMPTY_PATH, ObjectPath, UNKNOWN_PATH } from '../utils/PathTracker'; -import Variable from '../variables/Variable'; +import { + createHasEffectsContext, + type HasEffectsContext, + type InclusionContext +} from '../ExecutionContext'; +import { EMPTY_PATH, type ObjectPath, UNKNOWN_PATH } from '../utils/PathTracker'; +import type Variable from '../variables/Variable'; import Identifier from './Identifier'; import * as NodeType from './NodeType'; import ObjectPattern from './ObjectPattern'; -import { ExpressionNode, IncludeChildren, NodeBase } from './shared/Node'; -import { PatternNode } from './shared/Pattern'; +import { type ExpressionNode, type IncludeChildren, NodeBase } from './shared/Node'; +import type { PatternNode } from './shared/Pattern'; export default class AssignmentExpression extends NodeBase { declare left: ExpressionNode | PatternNode; diff --git a/src/ast/nodes/AssignmentPattern.ts b/src/ast/nodes/AssignmentPattern.ts index 2db30dcecd9..21459c772a6 100644 --- a/src/ast/nodes/AssignmentPattern.ts +++ b/src/ast/nodes/AssignmentPattern.ts @@ -1,14 +1,14 @@ -import MagicString from 'magic-string'; +import type MagicString from 'magic-string'; import { BLANK } from '../../utils/blank'; -import { NodeRenderOptions, RenderOptions } from '../../utils/renderHelpers'; -import { HasEffectsContext } from '../ExecutionContext'; -import { EMPTY_PATH, ObjectPath, UNKNOWN_PATH } from '../utils/PathTracker'; -import LocalVariable from '../variables/LocalVariable'; -import Variable from '../variables/Variable'; -import * as NodeType from './NodeType'; -import { ExpressionEntity } from './shared/Expression'; -import { ExpressionNode, NodeBase } from './shared/Node'; -import { PatternNode } from './shared/Pattern'; +import type { NodeRenderOptions, RenderOptions } from '../../utils/renderHelpers'; +import type { HasEffectsContext } from '../ExecutionContext'; +import { EMPTY_PATH, type ObjectPath, UNKNOWN_PATH } from '../utils/PathTracker'; +import type LocalVariable from '../variables/LocalVariable'; +import type Variable from '../variables/Variable'; +import type * as NodeType from './NodeType'; +import type { ExpressionEntity } from './shared/Expression'; +import { type ExpressionNode, NodeBase } from './shared/Node'; +import type { PatternNode } from './shared/Pattern'; export default class AssignmentPattern extends NodeBase implements PatternNode { declare left: PatternNode; @@ -17,8 +17,8 @@ export default class AssignmentPattern extends NodeBase implements PatternNode { protected deoptimized = false; addExportedVariables( - variables: Variable[], - exportNamesByVariable: Map + variables: readonly Variable[], + exportNamesByVariable: ReadonlyMap ): void { this.left.addExportedVariables(variables, exportNamesByVariable); } diff --git a/src/ast/nodes/AwaitExpression.ts b/src/ast/nodes/AwaitExpression.ts index 9b7d8b127eb..d0f26fe8b23 100644 --- a/src/ast/nodes/AwaitExpression.ts +++ b/src/ast/nodes/AwaitExpression.ts @@ -1,9 +1,9 @@ -import { InclusionContext } from '../ExecutionContext'; +import type { InclusionContext } from '../ExecutionContext'; import { UNKNOWN_PATH } from '../utils/PathTracker'; import ArrowFunctionExpression from './ArrowFunctionExpression'; -import * as NodeType from './NodeType'; +import type * as NodeType from './NodeType'; import FunctionNode from './shared/FunctionNode'; -import { ExpressionNode, IncludeChildren, Node, NodeBase } from './shared/Node'; +import { type ExpressionNode, type IncludeChildren, type Node, NodeBase } from './shared/Node'; export default class AwaitExpression extends NodeBase { declare argument: ExpressionNode; diff --git a/src/ast/nodes/BinaryExpression.ts b/src/ast/nodes/BinaryExpression.ts index f216b78fa48..8b1bf5be0cf 100644 --- a/src/ast/nodes/BinaryExpression.ts +++ b/src/ast/nodes/BinaryExpression.ts @@ -1,19 +1,19 @@ -import MagicString from 'magic-string'; +import type MagicString from 'magic-string'; import { BLANK } from '../../utils/blank'; -import { NodeRenderOptions, RenderOptions } from '../../utils/renderHelpers'; -import { DeoptimizableEntity } from '../DeoptimizableEntity'; -import { HasEffectsContext } from '../ExecutionContext'; +import type { NodeRenderOptions, RenderOptions } from '../../utils/renderHelpers'; +import type { DeoptimizableEntity } from '../DeoptimizableEntity'; +import type { HasEffectsContext } from '../ExecutionContext'; import { EMPTY_PATH, - ObjectPath, - PathTracker, + type ObjectPath, + type PathTracker, SHARED_RECURSION_TRACKER } from '../utils/PathTracker'; import ExpressionStatement from './ExpressionStatement'; -import { LiteralValue } from './Literal'; -import * as NodeType from './NodeType'; -import { LiteralValueOrUnknown, UnknownValue } from './shared/Expression'; -import { ExpressionNode, NodeBase } from './shared/Node'; +import type { LiteralValue } from './Literal'; +import type * as NodeType from './NodeType'; +import { type LiteralValueOrUnknown, UnknownValue } from './shared/Expression'; +import { type ExpressionNode, NodeBase } from './shared/Node'; const binaryOperators: { [operator: string]: (left: LiteralValue, right: LiteralValue) => LiteralValueOrUnknown; diff --git a/src/ast/nodes/BlockStatement.ts b/src/ast/nodes/BlockStatement.ts index f993f6ce2dd..4fc8d1ed43e 100644 --- a/src/ast/nodes/BlockStatement.ts +++ b/src/ast/nodes/BlockStatement.ts @@ -1,16 +1,16 @@ -import MagicString from 'magic-string'; -import { RenderOptions, renderStatementList } from '../../utils/renderHelpers'; -import { HasEffectsContext, InclusionContext } from '../ExecutionContext'; +import type MagicString from 'magic-string'; +import { type RenderOptions, renderStatementList } from '../../utils/renderHelpers'; +import type { HasEffectsContext, InclusionContext } from '../ExecutionContext'; import BlockScope from '../scopes/BlockScope'; -import ChildScope from '../scopes/ChildScope'; -import Scope from '../scopes/Scope'; +import type ChildScope from '../scopes/ChildScope'; +import type Scope from '../scopes/Scope'; import ExpressionStatement from './ExpressionStatement'; import * as NodeType from './NodeType'; import { UNKNOWN_EXPRESSION } from './shared/Expression'; -import { IncludeChildren, Node, StatementBase, StatementNode } from './shared/Node'; +import { type IncludeChildren, type Node, StatementBase, type StatementNode } from './shared/Node'; export default class BlockStatement extends StatementBase { - declare body: StatementNode[]; + declare body: readonly StatementNode[]; declare type: NodeType.tBlockStatement; private declare deoptimizeBody: boolean; diff --git a/src/ast/nodes/BreakStatement.ts b/src/ast/nodes/BreakStatement.ts index 5da9497e242..c7d92aefa1f 100644 --- a/src/ast/nodes/BreakStatement.ts +++ b/src/ast/nodes/BreakStatement.ts @@ -1,11 +1,11 @@ import { BROKEN_FLOW_BREAK_CONTINUE, BROKEN_FLOW_ERROR_RETURN_LABEL, - HasEffectsContext, - InclusionContext + type HasEffectsContext, + type InclusionContext } from '../ExecutionContext'; -import Identifier from './Identifier'; -import * as NodeType from './NodeType'; +import type Identifier from './Identifier'; +import type * as NodeType from './NodeType'; import { StatementBase } from './shared/Node'; export default class BreakStatement extends StatementBase { diff --git a/src/ast/nodes/CallExpression.ts b/src/ast/nodes/CallExpression.ts index 88f81143d6c..593146bf9f9 100644 --- a/src/ast/nodes/CallExpression.ts +++ b/src/ast/nodes/CallExpression.ts @@ -1,34 +1,39 @@ -import MagicString from 'magic-string'; -import { NormalizedTreeshakingOptions } from '../../rollup/types'; +import type MagicString from 'magic-string'; +import type { NormalizedTreeshakingOptions } from '../../rollup/types'; import { BLANK } from '../../utils/blank'; import { findFirstOccurrenceOutsideComment, - NodeRenderOptions, - RenderOptions + type NodeRenderOptions, + type RenderOptions } from '../../utils/renderHelpers'; -import { CallOptions } from '../CallOptions'; -import { DeoptimizableEntity } from '../DeoptimizableEntity'; -import { HasEffectsContext, InclusionContext } from '../ExecutionContext'; -import { EVENT_CALLED, NodeEvent } from '../NodeEvents'; +import type { CallOptions } from '../CallOptions'; +import type { DeoptimizableEntity } from '../DeoptimizableEntity'; +import type { HasEffectsContext, InclusionContext } from '../ExecutionContext'; +import { EVENT_CALLED, type NodeEvent } from '../NodeEvents'; import { EMPTY_PATH, - ObjectPath, - PathTracker, + type ObjectPath, + type PathTracker, SHARED_RECURSION_TRACKER, UNKNOWN_PATH } from '../utils/PathTracker'; import Identifier from './Identifier'; import MemberExpression from './MemberExpression'; -import * as NodeType from './NodeType'; -import SpreadElement from './SpreadElement'; -import Super from './Super'; +import type * as NodeType from './NodeType'; +import type SpreadElement from './SpreadElement'; +import type Super from './Super'; import { - ExpressionEntity, - LiteralValueOrUnknown, + type ExpressionEntity, + type LiteralValueOrUnknown, UNKNOWN_EXPRESSION, UnknownValue } from './shared/Expression'; -import { ExpressionNode, INCLUDE_PARAMETERS, IncludeChildren, NodeBase } from './shared/Node'; +import { + type ExpressionNode, + INCLUDE_PARAMETERS, + type IncludeChildren, + NodeBase +} from './shared/Node'; export default class CallExpression extends NodeBase implements DeoptimizableEntity { declare arguments: (ExpressionNode | SpreadElement)[]; @@ -37,8 +42,8 @@ export default class CallExpression extends NodeBase implements DeoptimizableEnt declare type: NodeType.tCallExpression; protected deoptimized = false; private declare callOptions: CallOptions; - private deoptimizableDependentExpressions: DeoptimizableEntity[] = []; - private expressionsToBeDeoptimized = new Set(); + private readonly deoptimizableDependentExpressions: DeoptimizableEntity[] = []; + private readonly expressionsToBeDeoptimized = new Set(); private returnExpression: ExpressionEntity | null = null; bind(): void { diff --git a/src/ast/nodes/CatchClause.ts b/src/ast/nodes/CatchClause.ts index 40f824ea213..5a85f4ad12a 100644 --- a/src/ast/nodes/CatchClause.ts +++ b/src/ast/nodes/CatchClause.ts @@ -1,10 +1,10 @@ import CatchScope from '../scopes/CatchScope'; -import Scope from '../scopes/Scope'; -import BlockStatement from './BlockStatement'; -import * as NodeType from './NodeType'; +import type Scope from '../scopes/Scope'; +import type BlockStatement from './BlockStatement'; +import type * as NodeType from './NodeType'; import { UNKNOWN_EXPRESSION } from './shared/Expression'; -import { GenericEsTreeNode, NodeBase } from './shared/Node'; -import { PatternNode } from './shared/Pattern'; +import { type GenericEsTreeNode, NodeBase } from './shared/Node'; +import type { PatternNode } from './shared/Pattern'; export default class CatchClause extends NodeBase { declare body: BlockStatement; diff --git a/src/ast/nodes/ChainExpression.ts b/src/ast/nodes/ChainExpression.ts index 88231ebedef..b696eb4ea3c 100644 --- a/src/ast/nodes/ChainExpression.ts +++ b/src/ast/nodes/ChainExpression.ts @@ -1,6 +1,6 @@ -import CallExpression from './CallExpression'; -import MemberExpression from './MemberExpression'; -import * as NodeType from './NodeType'; +import type CallExpression from './CallExpression'; +import type MemberExpression from './MemberExpression'; +import type * as NodeType from './NodeType'; import { NodeBase } from './shared/Node'; export default class ChainExpression extends NodeBase { diff --git a/src/ast/nodes/ClassBody.ts b/src/ast/nodes/ClassBody.ts index 372fc678e7e..554518f34b1 100644 --- a/src/ast/nodes/ClassBody.ts +++ b/src/ast/nodes/ClassBody.ts @@ -1,11 +1,11 @@ -import { InclusionContext } from '../ExecutionContext'; +import type { InclusionContext } from '../ExecutionContext'; import ClassBodyScope from '../scopes/ClassBodyScope'; -import Scope from '../scopes/Scope'; -import MethodDefinition from './MethodDefinition'; -import * as NodeType from './NodeType'; -import PropertyDefinition from './PropertyDefinition'; -import ClassNode from './shared/ClassNode'; -import { GenericEsTreeNode, IncludeChildren, NodeBase } from './shared/Node'; +import type Scope from '../scopes/Scope'; +import type MethodDefinition from './MethodDefinition'; +import type * as NodeType from './NodeType'; +import type PropertyDefinition from './PropertyDefinition'; +import type ClassNode from './shared/ClassNode'; +import { type GenericEsTreeNode, type IncludeChildren, NodeBase } from './shared/Node'; export default class ClassBody extends NodeBase { declare body: (MethodDefinition | PropertyDefinition)[]; diff --git a/src/ast/nodes/ClassDeclaration.ts b/src/ast/nodes/ClassDeclaration.ts index c9137cdcec3..589f866b6f2 100644 --- a/src/ast/nodes/ClassDeclaration.ts +++ b/src/ast/nodes/ClassDeclaration.ts @@ -1,11 +1,11 @@ -import MagicString from 'magic-string'; -import { RenderOptions } from '../../utils/renderHelpers'; +import type MagicString from 'magic-string'; +import type { RenderOptions } from '../../utils/renderHelpers'; import { getSystemExportStatement } from '../../utils/systemJsRendering'; -import ChildScope from '../scopes/ChildScope'; -import Identifier, { IdentifierWithVariable } from './Identifier'; -import * as NodeType from './NodeType'; +import type ChildScope from '../scopes/ChildScope'; +import Identifier, { type IdentifierWithVariable } from './Identifier'; +import type * as NodeType from './NodeType'; import ClassNode from './shared/ClassNode'; -import { GenericEsTreeNode } from './shared/Node'; +import type { GenericEsTreeNode } from './shared/Node'; export default class ClassDeclaration extends ClassNode { declare id: IdentifierWithVariable | null; diff --git a/src/ast/nodes/ClassExpression.ts b/src/ast/nodes/ClassExpression.ts index 82fd208bd33..35b429cc0d7 100644 --- a/src/ast/nodes/ClassExpression.ts +++ b/src/ast/nodes/ClassExpression.ts @@ -1,6 +1,6 @@ -import MagicString from 'magic-string'; +import type MagicString from 'magic-string'; import { BLANK } from '../../utils/blank'; -import { NodeRenderOptions, RenderOptions } from '../../utils/renderHelpers'; +import type { NodeRenderOptions, RenderOptions } from '../../utils/renderHelpers'; import * as NodeType from './NodeType'; import ClassNode from './shared/ClassNode'; diff --git a/src/ast/nodes/ConditionalExpression.ts b/src/ast/nodes/ConditionalExpression.ts index 26a2fca6508..afdc04d8d12 100644 --- a/src/ast/nodes/ConditionalExpression.ts +++ b/src/ast/nodes/ConditionalExpression.ts @@ -19,7 +19,7 @@ import { SHARED_RECURSION_TRACKER, UNKNOWN_PATH } from '../utils/PathTracker'; -import * as NodeType from './NodeType'; +import type * as NodeType from './NodeType'; import SpreadElement from './SpreadElement'; import { ExpressionEntity, LiteralValueOrUnknown, UnknownValue } from './shared/Expression'; import { MultiExpression } from './shared/MultiExpression'; @@ -166,7 +166,10 @@ export default class ConditionalExpression extends NodeBase implements Deoptimiz } } - includeCallArguments(context: InclusionContext, args: (ExpressionNode | SpreadElement)[]): void { + includeCallArguments( + context: InclusionContext, + args: readonly (ExpressionNode | SpreadElement)[] + ): void { const usedBranch = this.getUsedBranch(); if (usedBranch === null) { this.consequent.includeCallArguments(context, args); diff --git a/src/ast/nodes/ContinueStatement.ts b/src/ast/nodes/ContinueStatement.ts index 28f87168704..e9405d1038f 100644 --- a/src/ast/nodes/ContinueStatement.ts +++ b/src/ast/nodes/ContinueStatement.ts @@ -1,11 +1,11 @@ import { BROKEN_FLOW_BREAK_CONTINUE, BROKEN_FLOW_ERROR_RETURN_LABEL, - HasEffectsContext, - InclusionContext + type HasEffectsContext, + type InclusionContext } from '../ExecutionContext'; -import Identifier from './Identifier'; -import * as NodeType from './NodeType'; +import type Identifier from './Identifier'; +import type * as NodeType from './NodeType'; import { StatementBase } from './shared/Node'; export default class ContinueStatement extends StatementBase { diff --git a/src/ast/nodes/DoWhileStatement.ts b/src/ast/nodes/DoWhileStatement.ts index ca30a4eaf60..6218fa03da2 100644 --- a/src/ast/nodes/DoWhileStatement.ts +++ b/src/ast/nodes/DoWhileStatement.ts @@ -1,6 +1,11 @@ -import { HasEffectsContext, InclusionContext } from '../ExecutionContext'; -import * as NodeType from './NodeType'; -import { ExpressionNode, IncludeChildren, StatementBase, StatementNode } from './shared/Node'; +import type { HasEffectsContext, InclusionContext } from '../ExecutionContext'; +import type * as NodeType from './NodeType'; +import { + type ExpressionNode, + type IncludeChildren, + StatementBase, + type StatementNode +} from './shared/Node'; export default class DoWhileStatement extends StatementBase { declare body: StatementNode; diff --git a/src/ast/nodes/EmptyStatement.ts b/src/ast/nodes/EmptyStatement.ts index f34e3214b66..464157b1ce0 100644 --- a/src/ast/nodes/EmptyStatement.ts +++ b/src/ast/nodes/EmptyStatement.ts @@ -1,4 +1,4 @@ -import * as NodeType from './NodeType'; +import type * as NodeType from './NodeType'; import { StatementBase } from './shared/Node'; export default class EmptyStatement extends StatementBase { diff --git a/src/ast/nodes/ExportAllDeclaration.ts b/src/ast/nodes/ExportAllDeclaration.ts index 850540c1094..e297cc518e3 100644 --- a/src/ast/nodes/ExportAllDeclaration.ts +++ b/src/ast/nodes/ExportAllDeclaration.ts @@ -1,8 +1,8 @@ -import MagicString from 'magic-string'; -import { NodeRenderOptions, RenderOptions } from '../../utils/renderHelpers'; -import Identifier from './Identifier'; -import Literal from './Literal'; -import * as NodeType from './NodeType'; +import type MagicString from 'magic-string'; +import type { NodeRenderOptions, RenderOptions } from '../../utils/renderHelpers'; +import type Identifier from './Identifier'; +import type Literal from './Literal'; +import type * as NodeType from './NodeType'; import { NodeBase } from './shared/Node'; export default class ExportAllDeclaration extends NodeBase { diff --git a/src/ast/nodes/ExportDefaultDeclaration.ts b/src/ast/nodes/ExportDefaultDeclaration.ts index 5da2e3cdc8e..be735a44db9 100644 --- a/src/ast/nodes/ExportDefaultDeclaration.ts +++ b/src/ast/nodes/ExportDefaultDeclaration.ts @@ -1,23 +1,23 @@ -import MagicString from 'magic-string'; +import type MagicString from 'magic-string'; import { findFirstOccurrenceOutsideComment, findNonWhiteSpace, - NodeRenderOptions, - RenderOptions + type NodeRenderOptions, + type RenderOptions } from '../../utils/renderHelpers'; import { getSystemExportStatement } from '../../utils/systemJsRendering'; import { treeshakeNode } from '../../utils/treeshakeNode'; import { InclusionContext } from '../ExecutionContext'; -import ModuleScope from '../scopes/ModuleScope'; -import ExportDefaultVariable from '../variables/ExportDefaultVariable'; +import type ModuleScope from '../scopes/ModuleScope'; +import type ExportDefaultVariable from '../variables/ExportDefaultVariable'; import ClassDeclaration from './ClassDeclaration'; import FunctionDeclaration from './FunctionDeclaration'; -import Identifier from './Identifier'; +import type Identifier from './Identifier'; import * as NodeType from './NodeType'; -import { ExpressionNode, IncludeChildren, NodeBase } from './shared/Node'; +import { type ExpressionNode, type IncludeChildren, NodeBase } from './shared/Node'; // The header ends at the first non-white-space after "default" -function getDeclarationStart(code: string, start: number) { +function getDeclarationStart(code: string, start: number): number { return findNonWhiteSpace(code, findFirstOccurrenceOutsideComment(code, 'default', start) + 7); } @@ -26,7 +26,7 @@ function getIdInsertPosition( declarationKeyword: string, endMarker: string, start: number -) { +): number { const declarationEnd = findFirstOccurrenceOutsideComment(code, declarationKeyword, start) + declarationKeyword.length; code = code.slice( @@ -116,7 +116,7 @@ export default class ExportDefaultDeclaration extends NodeBase { endMarker: string, needsId: boolean, options: RenderOptions - ) { + ): void { const { exportNamesByVariable, format, @@ -145,7 +145,7 @@ export default class ExportDefaultDeclaration extends NodeBase { code: MagicString, declarationStart: number, { format, exportNamesByVariable, snippets: { cnst, getPropertyAccess } }: RenderOptions - ) { + ): void { const hasTrailingSemicolon = code.original.charCodeAt(this.end - 1) === 59; /*";"*/ const systemExportNames = format === 'system' && exportNamesByVariable.get(this.variable); diff --git a/src/ast/nodes/ExportNamedDeclaration.ts b/src/ast/nodes/ExportNamedDeclaration.ts index d6c2fe89d06..0d09a25e8e2 100644 --- a/src/ast/nodes/ExportNamedDeclaration.ts +++ b/src/ast/nodes/ExportNamedDeclaration.ts @@ -1,19 +1,19 @@ -import MagicString from 'magic-string'; -import { NodeRenderOptions, RenderOptions } from '../../utils/renderHelpers'; -import { HasEffectsContext } from '../ExecutionContext'; -import ClassDeclaration from './ClassDeclaration'; -import ExportSpecifier from './ExportSpecifier'; -import FunctionDeclaration from './FunctionDeclaration'; -import Literal from './Literal'; -import * as NodeType from './NodeType'; -import VariableDeclaration from './VariableDeclaration'; -import { Node, NodeBase } from './shared/Node'; +import type MagicString from 'magic-string'; +import type { NodeRenderOptions, RenderOptions } from '../../utils/renderHelpers'; +import type { HasEffectsContext } from '../ExecutionContext'; +import type ClassDeclaration from './ClassDeclaration'; +import type ExportSpecifier from './ExportSpecifier'; +import type FunctionDeclaration from './FunctionDeclaration'; +import type Literal from './Literal'; +import type * as NodeType from './NodeType'; +import type VariableDeclaration from './VariableDeclaration'; +import { type Node, NodeBase } from './shared/Node'; export default class ExportNamedDeclaration extends NodeBase { declare declaration: FunctionDeclaration | ClassDeclaration | VariableDeclaration | null; declare needsBoundaries: true; declare source: Literal | null; - declare specifiers: ExportSpecifier[]; + declare specifiers: readonly ExportSpecifier[]; declare type: NodeType.tExportNamedDeclaration; bind(): void { diff --git a/src/ast/nodes/ExportSpecifier.ts b/src/ast/nodes/ExportSpecifier.ts index 4ee18baeb39..9999512a2de 100644 --- a/src/ast/nodes/ExportSpecifier.ts +++ b/src/ast/nodes/ExportSpecifier.ts @@ -1,5 +1,5 @@ -import Identifier from './Identifier'; -import * as NodeType from './NodeType'; +import type Identifier from './Identifier'; +import type * as NodeType from './NodeType'; import { NodeBase } from './shared/Node'; export default class ExportSpecifier extends NodeBase { diff --git a/src/ast/nodes/ExpressionStatement.ts b/src/ast/nodes/ExpressionStatement.ts index 31954b8fbc8..f5c141c84d2 100644 --- a/src/ast/nodes/ExpressionStatement.ts +++ b/src/ast/nodes/ExpressionStatement.ts @@ -1,8 +1,8 @@ -import MagicString from 'magic-string'; -import { RenderOptions } from '../../utils/renderHelpers'; -import { InclusionContext } from '../ExecutionContext'; +import type MagicString from 'magic-string'; +import type { RenderOptions } from '../../utils/renderHelpers'; +import type { InclusionContext } from '../ExecutionContext'; import * as NodeType from './NodeType'; -import { ExpressionNode, StatementBase } from './shared/Node'; +import { type ExpressionNode, StatementBase } from './shared/Node'; export default class ExpressionStatement extends StatementBase { declare directive?: string; diff --git a/src/ast/nodes/ForInStatement.ts b/src/ast/nodes/ForInStatement.ts index b010bea22d6..038404ae8d6 100644 --- a/src/ast/nodes/ForInStatement.ts +++ b/src/ast/nodes/ForInStatement.ts @@ -1,13 +1,18 @@ -import MagicString from 'magic-string'; -import { NO_SEMICOLON, RenderOptions } from '../../utils/renderHelpers'; -import { HasEffectsContext, InclusionContext } from '../ExecutionContext'; +import type MagicString from 'magic-string'; +import { NO_SEMICOLON, type RenderOptions } from '../../utils/renderHelpers'; +import type { HasEffectsContext, InclusionContext } from '../ExecutionContext'; import BlockScope from '../scopes/BlockScope'; -import Scope from '../scopes/Scope'; +import type Scope from '../scopes/Scope'; import { EMPTY_PATH } from '../utils/PathTracker'; -import * as NodeType from './NodeType'; -import VariableDeclaration from './VariableDeclaration'; -import { ExpressionNode, IncludeChildren, StatementBase, StatementNode } from './shared/Node'; -import { PatternNode } from './shared/Pattern'; +import type * as NodeType from './NodeType'; +import type VariableDeclaration from './VariableDeclaration'; +import { + type ExpressionNode, + type IncludeChildren, + StatementBase, + type StatementNode +} from './shared/Node'; +import type { PatternNode } from './shared/Pattern'; export default class ForInStatement extends StatementBase { declare body: StatementNode; diff --git a/src/ast/nodes/ForOfStatement.ts b/src/ast/nodes/ForOfStatement.ts index 4c7beed6c30..c7ba84d6dbd 100644 --- a/src/ast/nodes/ForOfStatement.ts +++ b/src/ast/nodes/ForOfStatement.ts @@ -1,13 +1,18 @@ -import MagicString from 'magic-string'; -import { NO_SEMICOLON, RenderOptions } from '../../utils/renderHelpers'; -import { InclusionContext } from '../ExecutionContext'; +import type MagicString from 'magic-string'; +import { NO_SEMICOLON, type RenderOptions } from '../../utils/renderHelpers'; +import type { InclusionContext } from '../ExecutionContext'; import BlockScope from '../scopes/BlockScope'; -import Scope from '../scopes/Scope'; +import type Scope from '../scopes/Scope'; import { EMPTY_PATH } from '../utils/PathTracker'; -import * as NodeType from './NodeType'; -import VariableDeclaration from './VariableDeclaration'; -import { ExpressionNode, IncludeChildren, StatementBase, StatementNode } from './shared/Node'; -import { PatternNode } from './shared/Pattern'; +import type * as NodeType from './NodeType'; +import type VariableDeclaration from './VariableDeclaration'; +import { + type ExpressionNode, + type IncludeChildren, + StatementBase, + type StatementNode +} from './shared/Node'; +import type { PatternNode } from './shared/Pattern'; export default class ForOfStatement extends StatementBase { declare await: boolean; diff --git a/src/ast/nodes/ForStatement.ts b/src/ast/nodes/ForStatement.ts index 9a67639e363..25916ad9cd3 100644 --- a/src/ast/nodes/ForStatement.ts +++ b/src/ast/nodes/ForStatement.ts @@ -1,11 +1,16 @@ -import MagicString from 'magic-string'; -import { NO_SEMICOLON, RenderOptions } from '../../utils/renderHelpers'; -import { HasEffectsContext, InclusionContext } from '../ExecutionContext'; +import type MagicString from 'magic-string'; +import { NO_SEMICOLON, type RenderOptions } from '../../utils/renderHelpers'; +import type { HasEffectsContext, InclusionContext } from '../ExecutionContext'; import BlockScope from '../scopes/BlockScope'; -import Scope from '../scopes/Scope'; -import * as NodeType from './NodeType'; -import VariableDeclaration from './VariableDeclaration'; -import { ExpressionNode, IncludeChildren, StatementBase, StatementNode } from './shared/Node'; +import type Scope from '../scopes/Scope'; +import type * as NodeType from './NodeType'; +import type VariableDeclaration from './VariableDeclaration'; +import { + type ExpressionNode, + type IncludeChildren, + StatementBase, + type StatementNode +} from './shared/Node'; export default class ForStatement extends StatementBase { declare body: StatementNode; diff --git a/src/ast/nodes/FunctionDeclaration.ts b/src/ast/nodes/FunctionDeclaration.ts index 479db0ef772..ddf88636455 100644 --- a/src/ast/nodes/FunctionDeclaration.ts +++ b/src/ast/nodes/FunctionDeclaration.ts @@ -1,8 +1,8 @@ -import ChildScope from '../scopes/ChildScope'; -import Identifier, { IdentifierWithVariable } from './Identifier'; -import * as NodeType from './NodeType'; +import type ChildScope from '../scopes/ChildScope'; +import Identifier, { type IdentifierWithVariable } from './Identifier'; +import type * as NodeType from './NodeType'; import FunctionNode from './shared/FunctionNode'; -import { GenericEsTreeNode } from './shared/Node'; +import type { GenericEsTreeNode } from './shared/Node'; export default class FunctionDeclaration extends FunctionNode { declare type: NodeType.tFunctionDeclaration; diff --git a/src/ast/nodes/FunctionExpression.ts b/src/ast/nodes/FunctionExpression.ts index 4783a0cddd0..23b96f50fcb 100644 --- a/src/ast/nodes/FunctionExpression.ts +++ b/src/ast/nodes/FunctionExpression.ts @@ -1,6 +1,6 @@ -import MagicString from 'magic-string'; +import type MagicString from 'magic-string'; import { BLANK } from '../../utils/blank'; -import { NodeRenderOptions, RenderOptions } from '../../utils/renderHelpers'; +import type { NodeRenderOptions, RenderOptions } from '../../utils/renderHelpers'; import * as NodeType from './NodeType'; import FunctionNode from './shared/FunctionNode'; diff --git a/src/ast/nodes/Identifier.ts b/src/ast/nodes/Identifier.ts index c51b0e4b7ee..89965f79287 100644 --- a/src/ast/nodes/Identifier.ts +++ b/src/ast/nodes/Identifier.ts @@ -1,22 +1,26 @@ -import isReference, { NodeWithFieldDefinition } from 'is-reference'; -import MagicString from 'magic-string'; -import { NormalizedTreeshakingOptions } from '../../rollup/types'; +import isReference, { type NodeWithFieldDefinition } from 'is-reference'; +import type MagicString from 'magic-string'; +import type { NormalizedTreeshakingOptions } from '../../rollup/types'; import { BLANK } from '../../utils/blank'; -import { NodeRenderOptions, RenderOptions } from '../../utils/renderHelpers'; -import { CallOptions } from '../CallOptions'; -import { DeoptimizableEntity } from '../DeoptimizableEntity'; -import { HasEffectsContext, InclusionContext } from '../ExecutionContext'; -import { NodeEvent } from '../NodeEvents'; -import FunctionScope from '../scopes/FunctionScope'; -import { EMPTY_PATH, ObjectPath, PathTracker } from '../utils/PathTracker'; +import type { NodeRenderOptions, RenderOptions } from '../../utils/renderHelpers'; +import type { CallOptions } from '../CallOptions'; +import type { DeoptimizableEntity } from '../DeoptimizableEntity'; +import type { HasEffectsContext, InclusionContext } from '../ExecutionContext'; +import type { NodeEvent } from '../NodeEvents'; +import type FunctionScope from '../scopes/FunctionScope'; +import { EMPTY_PATH, type ObjectPath, type PathTracker } from '../utils/PathTracker'; import GlobalVariable from '../variables/GlobalVariable'; import LocalVariable from '../variables/LocalVariable'; -import Variable from '../variables/Variable'; +import type Variable from '../variables/Variable'; import * as NodeType from './NodeType'; -import SpreadElement from './SpreadElement'; -import { ExpressionEntity, LiteralValueOrUnknown, UNKNOWN_EXPRESSION } from './shared/Expression'; -import { ExpressionNode, NodeBase } from './shared/Node'; -import { PatternNode } from './shared/Pattern'; +import type SpreadElement from './SpreadElement'; +import { + type ExpressionEntity, + type LiteralValueOrUnknown, + UNKNOWN_EXPRESSION +} from './shared/Expression'; +import { type ExpressionNode, NodeBase } from './shared/Node'; +import type { PatternNode } from './shared/Pattern'; export type IdentifierWithVariable = Identifier & { variable: Variable }; @@ -37,7 +41,7 @@ export default class Identifier extends NodeBase implements PatternNode { addExportedVariables( variables: Variable[], - exportNamesByVariable: Map + exportNamesByVariable: ReadonlyMap ): void { if (this.variable !== null && exportNamesByVariable.has(this.variable)) { variables.push(this.variable); @@ -171,7 +175,10 @@ export default class Identifier extends NodeBase implements PatternNode { } } - includeCallArguments(context: InclusionContext, args: (ExpressionNode | SpreadElement)[]): void { + includeCallArguments( + context: InclusionContext, + args: readonly (ExpressionNode | SpreadElement)[] + ): void { this.getVariableRespectingTDZ().includeCallArguments(context, args); } @@ -249,7 +256,7 @@ export default class Identifier extends NodeBase implements PatternNode { } } - private disallowImportReassignment() { + private disallowImportReassignment(): never { return this.context.error( { code: 'ILLEGAL_REASSIGNMENT', diff --git a/src/ast/nodes/IfStatement.ts b/src/ast/nodes/IfStatement.ts index e0c07417544..b7ee1385be3 100644 --- a/src/ast/nodes/IfStatement.ts +++ b/src/ast/nodes/IfStatement.ts @@ -1,19 +1,23 @@ -import MagicString from 'magic-string'; -import { RenderOptions } from '../../utils/renderHelpers'; -import { DeoptimizableEntity } from '../DeoptimizableEntity'; -import { BROKEN_FLOW_NONE, HasEffectsContext, InclusionContext } from '../ExecutionContext'; +import type MagicString from 'magic-string'; +import type { RenderOptions } from '../../utils/renderHelpers'; +import type { DeoptimizableEntity } from '../DeoptimizableEntity'; +import { + BROKEN_FLOW_NONE, + type HasEffectsContext, + type InclusionContext +} from '../ExecutionContext'; import TrackingScope from '../scopes/TrackingScope'; import { EMPTY_PATH, SHARED_RECURSION_TRACKER } from '../utils/PathTracker'; import BlockStatement from './BlockStatement'; -import Identifier from './Identifier'; +import type Identifier from './Identifier'; import * as NodeType from './NodeType'; -import { LiteralValueOrUnknown, UnknownValue } from './shared/Expression'; +import { type LiteralValueOrUnknown, UnknownValue } from './shared/Expression'; import { - ExpressionNode, - GenericEsTreeNode, - IncludeChildren, + type ExpressionNode, + type GenericEsTreeNode, + type IncludeChildren, StatementBase, - StatementNode + type StatementNode } from './shared/Node'; const unset = Symbol('unset'); @@ -178,7 +182,7 @@ export default class IfStatement extends StatementBase implements DeoptimizableE } private renderHoistedDeclarations( - hoistedDeclarations: Identifier[], + hoistedDeclarations: readonly Identifier[], code: MagicString, getPropertyAccess: (name: string) => string ) { diff --git a/src/ast/nodes/ImportDeclaration.ts b/src/ast/nodes/ImportDeclaration.ts index c91c72aac65..3291c84ce2e 100644 --- a/src/ast/nodes/ImportDeclaration.ts +++ b/src/ast/nodes/ImportDeclaration.ts @@ -1,10 +1,10 @@ -import MagicString from 'magic-string'; -import { NodeRenderOptions, RenderOptions } from '../../utils/renderHelpers'; -import ImportDefaultSpecifier from './ImportDefaultSpecifier'; -import ImportNamespaceSpecifier from './ImportNamespaceSpecifier'; -import ImportSpecifier from './ImportSpecifier'; -import Literal from './Literal'; -import * as NodeType from './NodeType'; +import type MagicString from 'magic-string'; +import type { NodeRenderOptions, RenderOptions } from '../../utils/renderHelpers'; +import type ImportDefaultSpecifier from './ImportDefaultSpecifier'; +import type ImportNamespaceSpecifier from './ImportNamespaceSpecifier'; +import type ImportSpecifier from './ImportSpecifier'; +import type Literal from './Literal'; +import type * as NodeType from './NodeType'; import { NodeBase } from './shared/Node'; export default class ImportDeclaration extends NodeBase { diff --git a/src/ast/nodes/ImportDefaultSpecifier.ts b/src/ast/nodes/ImportDefaultSpecifier.ts index 25e3686e6a2..87c05c9eab0 100644 --- a/src/ast/nodes/ImportDefaultSpecifier.ts +++ b/src/ast/nodes/ImportDefaultSpecifier.ts @@ -1,5 +1,5 @@ -import Identifier from './Identifier'; -import * as NodeType from './NodeType'; +import type Identifier from './Identifier'; +import type * as NodeType from './NodeType'; import { NodeBase } from './shared/Node'; export default class ImportDefaultSpecifier extends NodeBase { diff --git a/src/ast/nodes/ImportExpression.ts b/src/ast/nodes/ImportExpression.ts index 7bd0e675937..44a776a93b1 100644 --- a/src/ast/nodes/ImportExpression.ts +++ b/src/ast/nodes/ImportExpression.ts @@ -1,19 +1,19 @@ -import MagicString from 'magic-string'; +import type MagicString from 'magic-string'; import ExternalModule from '../../ExternalModule'; -import Module from '../../Module'; -import { GetInterop, NormalizedOutputOptions } from '../../rollup/types'; -import { PluginDriver } from '../../utils/PluginDriver'; -import { GenerateCodeSnippets } from '../../utils/generateCodeSnippets'; +import type Module from '../../Module'; +import type { GetInterop, NormalizedOutputOptions } from '../../rollup/types'; +import type { PluginDriver } from '../../utils/PluginDriver'; +import type { GenerateCodeSnippets } from '../../utils/generateCodeSnippets'; import { INTEROP_NAMESPACE_DEFAULT_ONLY_VARIABLE, namespaceInteropHelpersByInteropType } from '../../utils/interopHelpers'; -import { findFirstOccurrenceOutsideComment, RenderOptions } from '../../utils/renderHelpers'; -import { InclusionContext } from '../ExecutionContext'; -import ChildScope from '../scopes/ChildScope'; -import NamespaceVariable from '../variables/NamespaceVariable'; -import * as NodeType from './NodeType'; -import { ExpressionNode, IncludeChildren, NodeBase } from './shared/Node'; +import { findFirstOccurrenceOutsideComment, type RenderOptions } from '../../utils/renderHelpers'; +import type { InclusionContext } from '../ExecutionContext'; +import type ChildScope from '../scopes/ChildScope'; +import type NamespaceVariable from '../variables/NamespaceVariable'; +import type * as NodeType from './NodeType'; +import { type ExpressionNode, type IncludeChildren, NodeBase } from './shared/Node'; interface DynamicImportMechanism { left: string; diff --git a/src/ast/nodes/ImportNamespaceSpecifier.ts b/src/ast/nodes/ImportNamespaceSpecifier.ts index 9928f47114a..0ad0c019765 100644 --- a/src/ast/nodes/ImportNamespaceSpecifier.ts +++ b/src/ast/nodes/ImportNamespaceSpecifier.ts @@ -1,5 +1,5 @@ -import Identifier from './Identifier'; -import * as NodeType from './NodeType'; +import type Identifier from './Identifier'; +import type * as NodeType from './NodeType'; import { NodeBase } from './shared/Node'; export default class ImportNamespaceSpecifier extends NodeBase { diff --git a/src/ast/nodes/ImportSpecifier.ts b/src/ast/nodes/ImportSpecifier.ts index c1c8cc15786..efab57084cf 100644 --- a/src/ast/nodes/ImportSpecifier.ts +++ b/src/ast/nodes/ImportSpecifier.ts @@ -1,5 +1,5 @@ -import Identifier from './Identifier'; -import * as NodeType from './NodeType'; +import type Identifier from './Identifier'; +import type * as NodeType from './NodeType'; import { NodeBase } from './shared/Node'; export default class ImportSpecifier extends NodeBase { diff --git a/src/ast/nodes/LabeledStatement.ts b/src/ast/nodes/LabeledStatement.ts index ed535ec1a88..05dd78d9692 100644 --- a/src/ast/nodes/LabeledStatement.ts +++ b/src/ast/nodes/LabeledStatement.ts @@ -1,13 +1,13 @@ -import MagicString from 'magic-string'; +import type MagicString from 'magic-string'; import { findFirstOccurrenceOutsideComment, findNonWhiteSpace, - RenderOptions + type RenderOptions } from '../../utils/renderHelpers'; -import { HasEffectsContext, InclusionContext } from '../ExecutionContext'; -import Identifier from './Identifier'; -import * as NodeType from './NodeType'; -import { IncludeChildren, StatementBase, StatementNode } from './shared/Node'; +import type { HasEffectsContext, InclusionContext } from '../ExecutionContext'; +import type Identifier from './Identifier'; +import type * as NodeType from './NodeType'; +import { type IncludeChildren, StatementBase, type StatementNode } from './shared/Node'; export default class LabeledStatement extends StatementBase { declare body: StatementNode; diff --git a/src/ast/nodes/Literal.ts b/src/ast/nodes/Literal.ts index e6505f9a609..ca17e979675 100644 --- a/src/ast/nodes/Literal.ts +++ b/src/ast/nodes/Literal.ts @@ -1,21 +1,21 @@ -import MagicString from 'magic-string'; -import { CallOptions } from '../CallOptions'; -import { HasEffectsContext } from '../ExecutionContext'; -import { ObjectPath } from '../utils/PathTracker'; +import type MagicString from 'magic-string'; +import type { CallOptions } from '../CallOptions'; +import type { HasEffectsContext } from '../ExecutionContext'; +import type { ObjectPath } from '../utils/PathTracker'; import { getLiteralMembersForValue, getMemberReturnExpressionWhenCalled, hasMemberEffectWhenCalled, - MemberDescription + type MemberDescription } from '../values'; -import * as NodeType from './NodeType'; +import type * as NodeType from './NodeType'; import { - ExpressionEntity, - LiteralValueOrUnknown, + type ExpressionEntity, + type LiteralValueOrUnknown, UNKNOWN_EXPRESSION, UnknownValue } from './shared/Expression'; -import { GenericEsTreeNode, NodeBase } from './shared/Node'; +import { type GenericEsTreeNode, NodeBase } from './shared/Node'; export type LiteralValue = string | boolean | null | number | RegExp | undefined; diff --git a/src/ast/nodes/LogicalExpression.ts b/src/ast/nodes/LogicalExpression.ts index 363e2ba8069..571d28a75e2 100644 --- a/src/ast/nodes/LogicalExpression.ts +++ b/src/ast/nodes/LogicalExpression.ts @@ -1,28 +1,32 @@ -import MagicString from 'magic-string'; +import type MagicString from 'magic-string'; import { BLANK } from '../../utils/blank'; import { findFirstOccurrenceOutsideComment, findNonWhiteSpace, - NodeRenderOptions, + type NodeRenderOptions, removeLineBreaks, - RenderOptions + type RenderOptions } from '../../utils/renderHelpers'; import { removeAnnotations } from '../../utils/treeshakeNode'; -import { CallOptions } from '../CallOptions'; -import { DeoptimizableEntity } from '../DeoptimizableEntity'; -import { HasEffectsContext, InclusionContext } from '../ExecutionContext'; -import { NodeEvent } from '../NodeEvents'; +import type { CallOptions } from '../CallOptions'; +import type { DeoptimizableEntity } from '../DeoptimizableEntity'; +import type { HasEffectsContext, InclusionContext } from '../ExecutionContext'; +import type { NodeEvent } from '../NodeEvents'; import { EMPTY_PATH, - ObjectPath, - PathTracker, + type ObjectPath, + type PathTracker, SHARED_RECURSION_TRACKER, UNKNOWN_PATH } from '../utils/PathTracker'; -import * as NodeType from './NodeType'; -import { ExpressionEntity, LiteralValueOrUnknown, UnknownValue } from './shared/Expression'; +import type * as NodeType from './NodeType'; +import { + type ExpressionEntity, + type LiteralValueOrUnknown, + UnknownValue +} from './shared/Expression'; import { MultiExpression } from './shared/MultiExpression'; -import { ExpressionNode, IncludeChildren, NodeBase } from './shared/Node'; +import { type ExpressionNode, type IncludeChildren, NodeBase } from './shared/Node'; export type LogicalOperator = '||' | '&&' | '??'; diff --git a/src/ast/nodes/MemberExpression.ts b/src/ast/nodes/MemberExpression.ts index 949a39887da..4666bfdc9da 100644 --- a/src/ast/nodes/MemberExpression.ts +++ b/src/ast/nodes/MemberExpression.ts @@ -1,38 +1,38 @@ -import MagicString from 'magic-string'; -import { NormalizedTreeshakingOptions } from '../../rollup/types'; +import type MagicString from 'magic-string'; +import type { NormalizedTreeshakingOptions } from '../../rollup/types'; import { BLANK } from '../../utils/blank'; import relativeId from '../../utils/relativeId'; -import { NodeRenderOptions, RenderOptions } from '../../utils/renderHelpers'; -import { CallOptions } from '../CallOptions'; -import { DeoptimizableEntity } from '../DeoptimizableEntity'; -import { HasEffectsContext, InclusionContext } from '../ExecutionContext'; -import { EVENT_ACCESSED, EVENT_ASSIGNED, NodeEvent } from '../NodeEvents'; +import type { NodeRenderOptions, RenderOptions } from '../../utils/renderHelpers'; +import type { CallOptions } from '../CallOptions'; +import type { DeoptimizableEntity } from '../DeoptimizableEntity'; +import type { HasEffectsContext, InclusionContext } from '../ExecutionContext'; +import { EVENT_ACCESSED, EVENT_ASSIGNED, type NodeEvent } from '../NodeEvents'; import { EMPTY_PATH, - ObjectPath, - ObjectPathKey, - PathTracker, + type ObjectPath, + type ObjectPathKey, + type PathTracker, SHARED_RECURSION_TRACKER, UNKNOWN_PATH, UnknownKey } from '../utils/PathTracker'; import ExternalVariable from '../variables/ExternalVariable'; -import NamespaceVariable from '../variables/NamespaceVariable'; -import Variable from '../variables/Variable'; +import type NamespaceVariable from '../variables/NamespaceVariable'; +import type Variable from '../variables/Variable'; import AssignmentExpression from './AssignmentExpression'; import Identifier from './Identifier'; import Literal from './Literal'; -import * as NodeType from './NodeType'; -import PrivateIdentifier from './PrivateIdentifier'; -import SpreadElement from './SpreadElement'; -import Super from './Super'; +import type * as NodeType from './NodeType'; +import type PrivateIdentifier from './PrivateIdentifier'; +import type SpreadElement from './SpreadElement'; +import type Super from './Super'; import { - ExpressionEntity, - LiteralValueOrUnknown, + type ExpressionEntity, + type LiteralValueOrUnknown, UNKNOWN_EXPRESSION, UnknownValue } from './shared/Expression'; -import { ExpressionNode, IncludeChildren, NodeBase } from './shared/Node'; +import { type ExpressionNode, type IncludeChildren, NodeBase } from './shared/Node'; // To avoid infinite recursions const MAX_PATH_DEPTH = 7; @@ -284,7 +284,10 @@ export default class MemberExpression extends NodeBase implements DeoptimizableE this.property.include(context, includeChildrenRecursively); } - includeCallArguments(context: InclusionContext, args: (ExpressionNode | SpreadElement)[]): void { + includeCallArguments( + context: InclusionContext, + args: readonly (ExpressionNode | SpreadElement)[] + ): void { if (this.variable) { this.variable.includeCallArguments(context, args); } else { diff --git a/src/ast/nodes/MetaProperty.ts b/src/ast/nodes/MetaProperty.ts index 4d47a6a6ff1..e8868968998 100644 --- a/src/ast/nodes/MetaProperty.ts +++ b/src/ast/nodes/MetaProperty.ts @@ -1,14 +1,14 @@ -import MagicString from 'magic-string'; -import { InternalModuleFormat } from '../../rollup/types'; -import { PluginDriver } from '../../utils/PluginDriver'; +import type MagicString from 'magic-string'; +import type { InternalModuleFormat } from '../../rollup/types'; +import type { PluginDriver } from '../../utils/PluginDriver'; import { warnDeprecation } from '../../utils/error'; -import { GenerateCodeSnippets } from '../../utils/generateCodeSnippets'; +import type { GenerateCodeSnippets } from '../../utils/generateCodeSnippets'; import { dirname, normalize, relative } from '../../utils/path'; -import ChildScope from '../scopes/ChildScope'; -import { ObjectPathKey } from '../utils/PathTracker'; -import Identifier from './Identifier'; +import type ChildScope from '../scopes/ChildScope'; +import type { ObjectPathKey } from '../utils/PathTracker'; +import type Identifier from './Identifier'; import MemberExpression from './MemberExpression'; -import * as NodeType from './NodeType'; +import type * as NodeType from './NodeType'; import { NodeBase } from './shared/Node'; const ASSET_PREFIX = 'ROLLUP_ASSET_URL_'; @@ -52,7 +52,7 @@ export default class MetaProperty extends NodeBase { return false; } - hasEffectsWhenAccessedAtPath(path: ObjectPathKey[]): boolean { + hasEffectsWhenAccessedAtPath(path: readonly ObjectPathKey[]): boolean { return path.length > 1; } diff --git a/src/ast/nodes/MethodDefinition.ts b/src/ast/nodes/MethodDefinition.ts index e6b39cc9a21..c5bab7b33ec 100644 --- a/src/ast/nodes/MethodDefinition.ts +++ b/src/ast/nodes/MethodDefinition.ts @@ -1,8 +1,8 @@ -import FunctionExpression from './FunctionExpression'; -import * as NodeType from './NodeType'; -import PrivateIdentifier from './PrivateIdentifier'; +import type FunctionExpression from './FunctionExpression'; +import type * as NodeType from './NodeType'; +import type PrivateIdentifier from './PrivateIdentifier'; import MethodBase from './shared/MethodBase'; -import { ExpressionNode } from './shared/Node'; +import type { ExpressionNode } from './shared/Node'; export default class MethodDefinition extends MethodBase { declare key: ExpressionNode | PrivateIdentifier; diff --git a/src/ast/nodes/NewExpression.ts b/src/ast/nodes/NewExpression.ts index 8bf4e270371..abef82ffae0 100644 --- a/src/ast/nodes/NewExpression.ts +++ b/src/ast/nodes/NewExpression.ts @@ -1,9 +1,9 @@ -import { NormalizedTreeshakingOptions } from '../../rollup/types'; -import { CallOptions } from '../CallOptions'; -import { HasEffectsContext } from '../ExecutionContext'; -import { EMPTY_PATH, ObjectPath, UNKNOWN_PATH } from '../utils/PathTracker'; -import * as NodeType from './NodeType'; -import { ExpressionNode, NodeBase } from './shared/Node'; +import type { NormalizedTreeshakingOptions } from '../../rollup/types'; +import type { CallOptions } from '../CallOptions'; +import type { HasEffectsContext } from '../ExecutionContext'; +import { EMPTY_PATH, type ObjectPath, UNKNOWN_PATH } from '../utils/PathTracker'; +import type * as NodeType from './NodeType'; +import { type ExpressionNode, NodeBase } from './shared/Node'; export default class NewExpression extends NodeBase { declare arguments: ExpressionNode[]; diff --git a/src/ast/nodes/ObjectExpression.ts b/src/ast/nodes/ObjectExpression.ts index d2310cc0dec..61ff336a6c1 100644 --- a/src/ast/nodes/ObjectExpression.ts +++ b/src/ast/nodes/ObjectExpression.ts @@ -1,29 +1,33 @@ -import MagicString from 'magic-string'; +import type MagicString from 'magic-string'; import { BLANK } from '../../utils/blank'; -import { NodeRenderOptions, RenderOptions } from '../../utils/renderHelpers'; -import { CallOptions } from '../CallOptions'; -import { DeoptimizableEntity } from '../DeoptimizableEntity'; -import { HasEffectsContext } from '../ExecutionContext'; -import { NodeEvent } from '../NodeEvents'; +import type { NodeRenderOptions, RenderOptions } from '../../utils/renderHelpers'; +import type { CallOptions } from '../CallOptions'; +import type { DeoptimizableEntity } from '../DeoptimizableEntity'; +import type { HasEffectsContext } from '../ExecutionContext'; +import type { NodeEvent } from '../NodeEvents'; import { EMPTY_PATH, - ObjectPath, - PathTracker, + type ObjectPath, + type PathTracker, SHARED_RECURSION_TRACKER, UnknownKey } from '../utils/PathTracker'; import Identifier from './Identifier'; import Literal from './Literal'; import * as NodeType from './NodeType'; -import Property from './Property'; +import type Property from './Property'; import SpreadElement from './SpreadElement'; -import { ExpressionEntity, LiteralValueOrUnknown, UnknownValue } from './shared/Expression'; +import { + type ExpressionEntity, + type LiteralValueOrUnknown, + UnknownValue +} from './shared/Expression'; import { NodeBase } from './shared/Node'; -import { ObjectEntity, ObjectProperty } from './shared/ObjectEntity'; +import { ObjectEntity, type ObjectProperty } from './shared/ObjectEntity'; import { OBJECT_PROTOTYPE } from './shared/ObjectPrototype'; export default class ObjectExpression extends NodeBase implements DeoptimizableEntity { - declare properties: (Property | SpreadElement)[]; + declare properties: readonly (Property | SpreadElement)[]; declare type: NodeType.tObjectExpression; private objectEntity: ObjectEntity | null = null; diff --git a/src/ast/nodes/ObjectPattern.ts b/src/ast/nodes/ObjectPattern.ts index 7d6d968c4ba..af21af5ec27 100644 --- a/src/ast/nodes/ObjectPattern.ts +++ b/src/ast/nodes/ObjectPattern.ts @@ -1,21 +1,21 @@ -import { HasEffectsContext } from '../ExecutionContext'; -import { EMPTY_PATH, ObjectPath } from '../utils/PathTracker'; -import LocalVariable from '../variables/LocalVariable'; -import Variable from '../variables/Variable'; +import type { HasEffectsContext } from '../ExecutionContext'; +import { EMPTY_PATH, type ObjectPath } from '../utils/PathTracker'; +import type LocalVariable from '../variables/LocalVariable'; +import type Variable from '../variables/Variable'; import * as NodeType from './NodeType'; -import Property from './Property'; -import RestElement from './RestElement'; -import { ExpressionEntity } from './shared/Expression'; +import type Property from './Property'; +import type RestElement from './RestElement'; +import type { ExpressionEntity } from './shared/Expression'; import { NodeBase } from './shared/Node'; -import { PatternNode } from './shared/Pattern'; +import type { PatternNode } from './shared/Pattern'; export default class ObjectPattern extends NodeBase implements PatternNode { - declare properties: (Property | RestElement)[]; + declare properties: readonly (Property | RestElement)[]; declare type: NodeType.tObjectPattern; addExportedVariables( - variables: Variable[], - exportNamesByVariable: Map + variables: readonly Variable[], + exportNamesByVariable: ReadonlyMap ): void { for (const property of this.properties) { if (property.type === NodeType.Property) { diff --git a/src/ast/nodes/PrivateIdentifier.ts b/src/ast/nodes/PrivateIdentifier.ts index 355f7a4ceb7..094a62664b2 100644 --- a/src/ast/nodes/PrivateIdentifier.ts +++ b/src/ast/nodes/PrivateIdentifier.ts @@ -1,4 +1,4 @@ -import * as NodeType from './NodeType'; +import type * as NodeType from './NodeType'; import { NodeBase } from './shared/Node'; export default class PrivateIdentifier extends NodeBase { diff --git a/src/ast/nodes/Program.ts b/src/ast/nodes/Program.ts index 12e9723b0a9..28506a38996 100644 --- a/src/ast/nodes/Program.ts +++ b/src/ast/nodes/Program.ts @@ -1,11 +1,11 @@ -import MagicString from 'magic-string'; -import { RenderOptions, renderStatementList } from '../../utils/renderHelpers'; -import { HasEffectsContext, InclusionContext } from '../ExecutionContext'; -import * as NodeType from './NodeType'; -import { IncludeChildren, NodeBase, StatementNode } from './shared/Node'; +import type MagicString from 'magic-string'; +import { type RenderOptions, renderStatementList } from '../../utils/renderHelpers'; +import type { HasEffectsContext, InclusionContext } from '../ExecutionContext'; +import type * as NodeType from './NodeType'; +import { type IncludeChildren, NodeBase, type StatementNode } from './shared/Node'; export default class Program extends NodeBase { - declare body: StatementNode[]; + declare body: readonly StatementNode[]; declare sourceType: 'module'; declare type: NodeType.tProgram; diff --git a/src/ast/nodes/Property.ts b/src/ast/nodes/Property.ts index 9469900912d..c55fac6e834 100644 --- a/src/ast/nodes/Property.ts +++ b/src/ast/nodes/Property.ts @@ -1,14 +1,14 @@ -import MagicString from 'magic-string'; -import { NormalizedTreeshakingOptions } from '../../rollup/types'; -import { RenderOptions } from '../../utils/renderHelpers'; -import { HasEffectsContext } from '../ExecutionContext'; +import type MagicString from 'magic-string'; +import type { NormalizedTreeshakingOptions } from '../../rollup/types'; +import type { RenderOptions } from '../../utils/renderHelpers'; +import type { HasEffectsContext } from '../ExecutionContext'; import { UnknownKey } from '../utils/PathTracker'; -import LocalVariable from '../variables/LocalVariable'; -import * as NodeType from './NodeType'; -import { ExpressionEntity, UNKNOWN_EXPRESSION } from './shared/Expression'; +import type LocalVariable from '../variables/LocalVariable'; +import type * as NodeType from './NodeType'; +import { type ExpressionEntity, UNKNOWN_EXPRESSION } from './shared/Expression'; import MethodBase from './shared/MethodBase'; -import { ExpressionNode } from './shared/Node'; -import { PatternNode } from './shared/Pattern'; +import type { ExpressionNode } from './shared/Node'; +import type { PatternNode } from './shared/Pattern'; export default class Property extends MethodBase implements PatternNode { declare key: ExpressionNode; diff --git a/src/ast/nodes/PropertyDefinition.ts b/src/ast/nodes/PropertyDefinition.ts index cd6107288c7..36183b9872a 100644 --- a/src/ast/nodes/PropertyDefinition.ts +++ b/src/ast/nodes/PropertyDefinition.ts @@ -1,17 +1,17 @@ -import { CallOptions } from '../CallOptions'; -import { DeoptimizableEntity } from '../DeoptimizableEntity'; -import { HasEffectsContext } from '../ExecutionContext'; -import { NodeEvent } from '../NodeEvents'; -import { ObjectPath, PathTracker } from '../utils/PathTracker'; -import * as NodeType from './NodeType'; -import PrivateIdentifier from './PrivateIdentifier'; +import type { CallOptions } from '../CallOptions'; +import type { DeoptimizableEntity } from '../DeoptimizableEntity'; +import type { HasEffectsContext } from '../ExecutionContext'; +import type { NodeEvent } from '../NodeEvents'; +import type { ObjectPath, PathTracker } from '../utils/PathTracker'; +import type * as NodeType from './NodeType'; +import type PrivateIdentifier from './PrivateIdentifier'; import { - ExpressionEntity, - LiteralValueOrUnknown, + type ExpressionEntity, + type LiteralValueOrUnknown, UNKNOWN_EXPRESSION, UnknownValue } from './shared/Expression'; -import { ExpressionNode, NodeBase } from './shared/Node'; +import { type ExpressionNode, NodeBase } from './shared/Node'; export default class PropertyDefinition extends NodeBase { declare computed: boolean; diff --git a/src/ast/nodes/RestElement.ts b/src/ast/nodes/RestElement.ts index 0a4f37cb532..fd20882d8a1 100644 --- a/src/ast/nodes/RestElement.ts +++ b/src/ast/nodes/RestElement.ts @@ -1,11 +1,11 @@ -import { HasEffectsContext } from '../ExecutionContext'; -import { EMPTY_PATH, ObjectPath, UnknownKey } from '../utils/PathTracker'; -import LocalVariable from '../variables/LocalVariable'; -import Variable from '../variables/Variable'; -import * as NodeType from './NodeType'; -import { ExpressionEntity, UNKNOWN_EXPRESSION } from './shared/Expression'; +import type { HasEffectsContext } from '../ExecutionContext'; +import { EMPTY_PATH, type ObjectPath, UnknownKey } from '../utils/PathTracker'; +import type LocalVariable from '../variables/LocalVariable'; +import type Variable from '../variables/Variable'; +import type * as NodeType from './NodeType'; +import { type ExpressionEntity, UNKNOWN_EXPRESSION } from './shared/Expression'; import { NodeBase } from './shared/Node'; -import { PatternNode } from './shared/Pattern'; +import type { PatternNode } from './shared/Pattern'; export default class RestElement extends NodeBase implements PatternNode { declare argument: PatternNode; @@ -14,8 +14,8 @@ export default class RestElement extends NodeBase implements PatternNode { private declarationInit: ExpressionEntity | null = null; addExportedVariables( - variables: Variable[], - exportNamesByVariable: Map + variables: readonly Variable[], + exportNamesByVariable: ReadonlyMap ): void { this.argument.addExportedVariables(variables, exportNamesByVariable); } diff --git a/src/ast/nodes/ReturnStatement.ts b/src/ast/nodes/ReturnStatement.ts index 4900f36367a..acfdd4d066b 100644 --- a/src/ast/nodes/ReturnStatement.ts +++ b/src/ast/nodes/ReturnStatement.ts @@ -1,13 +1,13 @@ -import MagicString from 'magic-string'; -import { RenderOptions } from '../../utils/renderHelpers'; +import type MagicString from 'magic-string'; +import type { RenderOptions } from '../../utils/renderHelpers'; import { BROKEN_FLOW_ERROR_RETURN_LABEL, - HasEffectsContext, - InclusionContext + type HasEffectsContext, + type InclusionContext } from '../ExecutionContext'; -import * as NodeType from './NodeType'; +import type * as NodeType from './NodeType'; import { UNKNOWN_EXPRESSION } from './shared/Expression'; -import { ExpressionNode, IncludeChildren, StatementBase } from './shared/Node'; +import { type ExpressionNode, type IncludeChildren, StatementBase } from './shared/Node'; export default class ReturnStatement extends StatementBase { declare argument: ExpressionNode | null; diff --git a/src/ast/nodes/SequenceExpression.ts b/src/ast/nodes/SequenceExpression.ts index 84f683bba88..1eaca85ad4b 100644 --- a/src/ast/nodes/SequenceExpression.ts +++ b/src/ast/nodes/SequenceExpression.ts @@ -1,21 +1,21 @@ -import MagicString from 'magic-string'; +import type MagicString from 'magic-string'; import { BLANK } from '../../utils/blank'; import { getCommaSeparatedNodesWithBoundaries, - NodeRenderOptions, + type NodeRenderOptions, removeLineBreaks, - RenderOptions + type RenderOptions } from '../../utils/renderHelpers'; import { treeshakeNode } from '../../utils/treeshakeNode'; -import { CallOptions } from '../CallOptions'; -import { DeoptimizableEntity } from '../DeoptimizableEntity'; -import { HasEffectsContext, InclusionContext } from '../ExecutionContext'; -import { NodeEvent } from '../NodeEvents'; -import { ObjectPath, PathTracker } from '../utils/PathTracker'; +import type { CallOptions } from '../CallOptions'; +import type { DeoptimizableEntity } from '../DeoptimizableEntity'; +import type { HasEffectsContext, InclusionContext } from '../ExecutionContext'; +import type { NodeEvent } from '../NodeEvents'; +import type { ObjectPath, PathTracker } from '../utils/PathTracker'; import ExpressionStatement from './ExpressionStatement'; -import * as NodeType from './NodeType'; -import { ExpressionEntity, LiteralValueOrUnknown } from './shared/Expression'; -import { ExpressionNode, IncludeChildren, NodeBase } from './shared/Node'; +import type * as NodeType from './NodeType'; +import type { ExpressionEntity, LiteralValueOrUnknown } from './shared/Expression'; +import { type ExpressionNode, type IncludeChildren, NodeBase } from './shared/Node'; export default class SequenceExpression extends NodeBase { declare expressions: ExpressionNode[]; diff --git a/src/ast/nodes/SpreadElement.ts b/src/ast/nodes/SpreadElement.ts index 5d57efb0b88..95145d9c6fd 100644 --- a/src/ast/nodes/SpreadElement.ts +++ b/src/ast/nodes/SpreadElement.ts @@ -1,10 +1,10 @@ -import { NormalizedTreeshakingOptions } from '../../rollup/types'; -import { HasEffectsContext } from '../ExecutionContext'; -import { NodeEvent } from '../NodeEvents'; -import { ObjectPath, PathTracker, UNKNOWN_PATH, UnknownKey } from '../utils/PathTracker'; -import * as NodeType from './NodeType'; -import { ExpressionEntity } from './shared/Expression'; -import { ExpressionNode, NodeBase } from './shared/Node'; +import type { NormalizedTreeshakingOptions } from '../../rollup/types'; +import type { HasEffectsContext } from '../ExecutionContext'; +import type { NodeEvent } from '../NodeEvents'; +import { type ObjectPath, type PathTracker, UNKNOWN_PATH, UnknownKey } from '../utils/PathTracker'; +import type * as NodeType from './NodeType'; +import type { ExpressionEntity } from './shared/Expression'; +import { type ExpressionNode, NodeBase } from './shared/Node'; export default class SpreadElement extends NodeBase { declare argument: ExpressionNode; diff --git a/src/ast/nodes/StaticBlock.ts b/src/ast/nodes/StaticBlock.ts index c5893101901..501040c127e 100644 --- a/src/ast/nodes/StaticBlock.ts +++ b/src/ast/nodes/StaticBlock.ts @@ -1,13 +1,13 @@ -import MagicString from 'magic-string'; -import { RenderOptions, renderStatementList } from '../../utils/renderHelpers'; -import { HasEffectsContext, InclusionContext } from '../ExecutionContext'; +import type MagicString from 'magic-string'; +import { type RenderOptions, renderStatementList } from '../../utils/renderHelpers'; +import type { HasEffectsContext, InclusionContext } from '../ExecutionContext'; import BlockScope from '../scopes/BlockScope'; -import Scope from '../scopes/Scope'; -import * as NodeType from './NodeType'; -import { IncludeChildren, StatementBase, StatementNode } from './shared/Node'; +import type Scope from '../scopes/Scope'; +import type * as NodeType from './NodeType'; +import { type IncludeChildren, StatementBase, type StatementNode } from './shared/Node'; export default class StaticBlock extends StatementBase { - declare body: StatementNode[]; + declare body: readonly StatementNode[]; declare type: NodeType.tStaticBlock; createScope(parentScope: Scope): void { diff --git a/src/ast/nodes/Super.ts b/src/ast/nodes/Super.ts index f3d5695f679..f598cbff0b1 100644 --- a/src/ast/nodes/Super.ts +++ b/src/ast/nodes/Super.ts @@ -1,6 +1,6 @@ -import { ObjectPath } from '../utils/PathTracker'; -import ThisVariable from '../variables/ThisVariable'; -import * as NodeType from './NodeType'; +import type { ObjectPath } from '../utils/PathTracker'; +import type ThisVariable from '../variables/ThisVariable'; +import type * as NodeType from './NodeType'; import { NodeBase } from './shared/Node'; export default class Super extends NodeBase { diff --git a/src/ast/nodes/SwitchCase.ts b/src/ast/nodes/SwitchCase.ts index 15648a0c276..fad874c41d3 100644 --- a/src/ast/nodes/SwitchCase.ts +++ b/src/ast/nodes/SwitchCase.ts @@ -1,16 +1,21 @@ -import MagicString from 'magic-string'; +import type MagicString from 'magic-string'; import { findFirstOccurrenceOutsideComment, - NodeRenderOptions, - RenderOptions, + type NodeRenderOptions, + type RenderOptions, renderStatementList } from '../../utils/renderHelpers'; -import { HasEffectsContext, InclusionContext } from '../ExecutionContext'; -import * as NodeType from './NodeType'; -import { ExpressionNode, IncludeChildren, NodeBase, StatementNode } from './shared/Node'; +import type { HasEffectsContext, InclusionContext } from '../ExecutionContext'; +import type * as NodeType from './NodeType'; +import { + type ExpressionNode, + type IncludeChildren, + NodeBase, + type StatementNode +} from './shared/Node'; export default class SwitchCase extends NodeBase { - declare consequent: StatementNode[]; + declare consequent: readonly StatementNode[]; declare needsBoundaries: true; declare test: ExpressionNode | null; declare type: NodeType.tSwitchCase; diff --git a/src/ast/nodes/SwitchStatement.ts b/src/ast/nodes/SwitchStatement.ts index b338135bd45..52cf40a3ef9 100644 --- a/src/ast/nodes/SwitchStatement.ts +++ b/src/ast/nodes/SwitchStatement.ts @@ -1,19 +1,19 @@ -import MagicString from 'magic-string'; -import { RenderOptions, renderStatementList } from '../../utils/renderHelpers'; +import type MagicString from 'magic-string'; +import { type RenderOptions, renderStatementList } from '../../utils/renderHelpers'; import { BROKEN_FLOW_BREAK_CONTINUE, createHasEffectsContext, - HasEffectsContext, - InclusionContext + type HasEffectsContext, + type InclusionContext } from '../ExecutionContext'; import BlockScope from '../scopes/BlockScope'; -import Scope from '../scopes/Scope'; -import * as NodeType from './NodeType'; -import SwitchCase from './SwitchCase'; -import { ExpressionNode, IncludeChildren, StatementBase } from './shared/Node'; +import type Scope from '../scopes/Scope'; +import type * as NodeType from './NodeType'; +import type SwitchCase from './SwitchCase'; +import { type ExpressionNode, type IncludeChildren, StatementBase } from './shared/Node'; export default class SwitchStatement extends StatementBase { - declare cases: SwitchCase[]; + declare cases: readonly SwitchCase[]; declare discriminant: ExpressionNode; declare type: NodeType.tSwitchStatement; diff --git a/src/ast/nodes/TaggedTemplateExpression.ts b/src/ast/nodes/TaggedTemplateExpression.ts index 660c1bd415f..3bb300252e8 100644 --- a/src/ast/nodes/TaggedTemplateExpression.ts +++ b/src/ast/nodes/TaggedTemplateExpression.ts @@ -1,12 +1,12 @@ -import MagicString from 'magic-string'; -import { RenderOptions } from '../../utils/renderHelpers'; -import { CallOptions, NO_ARGS } from '../CallOptions'; -import { HasEffectsContext } from '../ExecutionContext'; +import type MagicString from 'magic-string'; +import { type RenderOptions } from '../../utils/renderHelpers'; +import { type CallOptions, NO_ARGS } from '../CallOptions'; +import type { HasEffectsContext } from '../ExecutionContext'; import { EMPTY_PATH } from '../utils/PathTracker'; -import Identifier from './Identifier'; +import type Identifier from './Identifier'; import * as NodeType from './NodeType'; -import TemplateLiteral from './TemplateLiteral'; -import { ExpressionNode, NodeBase } from './shared/Node'; +import type TemplateLiteral from './TemplateLiteral'; +import { type ExpressionNode, NodeBase } from './shared/Node'; export default class TaggedTemplateExpression extends NodeBase { declare quasi: TemplateLiteral; diff --git a/src/ast/nodes/TemplateElement.ts b/src/ast/nodes/TemplateElement.ts index a1708182e1c..96dcd267aa3 100644 --- a/src/ast/nodes/TemplateElement.ts +++ b/src/ast/nodes/TemplateElement.ts @@ -1,5 +1,5 @@ -import * as NodeType from './NodeType'; -import { GenericEsTreeNode, NodeBase } from './shared/Node'; +import type * as NodeType from './NodeType'; +import { type GenericEsTreeNode, NodeBase } from './shared/Node'; export default class TemplateElement extends NodeBase { declare tail: boolean; diff --git a/src/ast/nodes/TemplateLiteral.ts b/src/ast/nodes/TemplateLiteral.ts index 2c4ade38d74..5f267419109 100644 --- a/src/ast/nodes/TemplateLiteral.ts +++ b/src/ast/nodes/TemplateLiteral.ts @@ -1,10 +1,10 @@ -import MagicString from 'magic-string'; -import { RenderOptions } from '../../utils/renderHelpers'; -import { ObjectPath } from '../utils/PathTracker'; -import * as NodeType from './NodeType'; -import TemplateElement from './TemplateElement'; -import { LiteralValueOrUnknown, UnknownValue } from './shared/Expression'; -import { ExpressionNode, NodeBase } from './shared/Node'; +import type MagicString from 'magic-string'; +import type { RenderOptions } from '../../utils/renderHelpers'; +import type { ObjectPath } from '../utils/PathTracker'; +import type * as NodeType from './NodeType'; +import type TemplateElement from './TemplateElement'; +import { type LiteralValueOrUnknown, UnknownValue } from './shared/Expression'; +import { type ExpressionNode, NodeBase } from './shared/Node'; export default class TemplateLiteral extends NodeBase { declare expressions: ExpressionNode[]; diff --git a/src/ast/nodes/ThisExpression.ts b/src/ast/nodes/ThisExpression.ts index f1361ab07a8..801b11de75e 100644 --- a/src/ast/nodes/ThisExpression.ts +++ b/src/ast/nodes/ThisExpression.ts @@ -1,11 +1,11 @@ -import MagicString from 'magic-string'; -import { HasEffectsContext } from '../ExecutionContext'; -import { NodeEvent } from '../NodeEvents'; +import type MagicString from 'magic-string'; +import type { HasEffectsContext } from '../ExecutionContext'; +import type { NodeEvent } from '../NodeEvents'; import ModuleScope from '../scopes/ModuleScope'; -import { ObjectPath, PathTracker } from '../utils/PathTracker'; -import Variable from '../variables/Variable'; -import * as NodeType from './NodeType'; -import { ExpressionEntity } from './shared/Expression'; +import type { ObjectPath, PathTracker } from '../utils/PathTracker'; +import type Variable from '../variables/Variable'; +import type * as NodeType from './NodeType'; +import type { ExpressionEntity } from './shared/Expression'; import { NodeBase } from './shared/Node'; export default class ThisExpression extends NodeBase { diff --git a/src/ast/nodes/ThrowStatement.ts b/src/ast/nodes/ThrowStatement.ts index fd43434f7d4..41d346438ea 100644 --- a/src/ast/nodes/ThrowStatement.ts +++ b/src/ast/nodes/ThrowStatement.ts @@ -1,8 +1,8 @@ -import MagicString from 'magic-string'; -import { RenderOptions } from '../../utils/renderHelpers'; -import { BROKEN_FLOW_ERROR_RETURN_LABEL, InclusionContext } from '../ExecutionContext'; -import * as NodeType from './NodeType'; -import { ExpressionNode, IncludeChildren, StatementBase } from './shared/Node'; +import type MagicString from 'magic-string'; +import type { RenderOptions } from '../../utils/renderHelpers'; +import { BROKEN_FLOW_ERROR_RETURN_LABEL, type InclusionContext } from '../ExecutionContext'; +import type * as NodeType from './NodeType'; +import { type ExpressionNode, type IncludeChildren, StatementBase } from './shared/Node'; export default class ThrowStatement extends StatementBase { declare argument: ExpressionNode; diff --git a/src/ast/nodes/TryStatement.ts b/src/ast/nodes/TryStatement.ts index 6a5642dace8..c34a5741d34 100644 --- a/src/ast/nodes/TryStatement.ts +++ b/src/ast/nodes/TryStatement.ts @@ -1,9 +1,9 @@ -import { NormalizedTreeshakingOptions } from '../../rollup/types'; -import { HasEffectsContext, InclusionContext } from '../ExecutionContext'; -import BlockStatement from './BlockStatement'; -import CatchClause from './CatchClause'; -import * as NodeType from './NodeType'; -import { INCLUDE_PARAMETERS, IncludeChildren, StatementBase } from './shared/Node'; +import type { NormalizedTreeshakingOptions } from '../../rollup/types'; +import type { HasEffectsContext, InclusionContext } from '../ExecutionContext'; +import type BlockStatement from './BlockStatement'; +import type CatchClause from './CatchClause'; +import type * as NodeType from './NodeType'; +import { INCLUDE_PARAMETERS, type IncludeChildren, StatementBase } from './shared/Node'; export default class TryStatement extends StatementBase { declare block: BlockStatement; diff --git a/src/ast/nodes/UnaryExpression.ts b/src/ast/nodes/UnaryExpression.ts index 213214efbe8..abe63aa8534 100644 --- a/src/ast/nodes/UnaryExpression.ts +++ b/src/ast/nodes/UnaryExpression.ts @@ -1,11 +1,11 @@ -import { DeoptimizableEntity } from '../DeoptimizableEntity'; -import { HasEffectsContext } from '../ExecutionContext'; -import { EMPTY_PATH, ObjectPath, PathTracker } from '../utils/PathTracker'; +import type { DeoptimizableEntity } from '../DeoptimizableEntity'; +import type { HasEffectsContext } from '../ExecutionContext'; +import { EMPTY_PATH, type ObjectPath, type PathTracker } from '../utils/PathTracker'; import Identifier from './Identifier'; -import { LiteralValue } from './Literal'; -import * as NodeType from './NodeType'; -import { LiteralValueOrUnknown, UnknownValue } from './shared/Expression'; -import { ExpressionNode, NodeBase } from './shared/Node'; +import type { LiteralValue } from './Literal'; +import type * as NodeType from './NodeType'; +import { type LiteralValueOrUnknown, UnknownValue } from './shared/Expression'; +import { type ExpressionNode, NodeBase } from './shared/Node'; const unaryOperators: { [operator: string]: (value: LiteralValue) => LiteralValueOrUnknown; diff --git a/src/ast/nodes/UnknownNode.ts b/src/ast/nodes/UnknownNode.ts index 1fb5c2a716b..60ebf1360f4 100644 --- a/src/ast/nodes/UnknownNode.ts +++ b/src/ast/nodes/UnknownNode.ts @@ -1,4 +1,4 @@ -import { InclusionContext } from '../ExecutionContext'; +import type { InclusionContext } from '../ExecutionContext'; import { NodeBase } from './shared/Node'; export default class UnknownNode extends NodeBase { diff --git a/src/ast/nodes/UpdateExpression.ts b/src/ast/nodes/UpdateExpression.ts index 1b623dc3a7f..78b4ccbb7f6 100644 --- a/src/ast/nodes/UpdateExpression.ts +++ b/src/ast/nodes/UpdateExpression.ts @@ -1,15 +1,15 @@ -import MagicString from 'magic-string'; -import { RenderOptions } from '../../utils/renderHelpers'; +import type MagicString from 'magic-string'; +import type { RenderOptions } from '../../utils/renderHelpers'; import { renderSystemExportExpression, renderSystemExportSequenceAfterExpression, renderSystemExportSequenceBeforeExpression } from '../../utils/systemJsRendering'; -import { HasEffectsContext } from '../ExecutionContext'; -import { EMPTY_PATH, ObjectPath } from '../utils/PathTracker'; +import type { HasEffectsContext } from '../ExecutionContext'; +import { EMPTY_PATH, type ObjectPath } from '../utils/PathTracker'; import Identifier from './Identifier'; import * as NodeType from './NodeType'; -import { ExpressionNode, NodeBase } from './shared/Node'; +import { type ExpressionNode, NodeBase } from './shared/Node'; export default class UpdateExpression extends NodeBase { declare argument: ExpressionNode; diff --git a/src/ast/nodes/VariableDeclaration.ts b/src/ast/nodes/VariableDeclaration.ts index ae576d643a7..5c56d8b7b5e 100644 --- a/src/ast/nodes/VariableDeclaration.ts +++ b/src/ast/nodes/VariableDeclaration.ts @@ -1,28 +1,28 @@ -import MagicString from 'magic-string'; +import type MagicString from 'magic-string'; import { BLANK } from '../../utils/blank'; import { isReassignedExportsMember } from '../../utils/reassignedExportsMember'; import { findFirstOccurrenceOutsideComment, findNonWhiteSpace, getCommaSeparatedNodesWithBoundaries, - NodeRenderOptions, - RenderOptions + type NodeRenderOptions, + type RenderOptions } from '../../utils/renderHelpers'; import { getSystemExportStatement, renderSystemExportExpression } from '../../utils/systemJsRendering'; -import { InclusionContext } from '../ExecutionContext'; +import type { InclusionContext } from '../ExecutionContext'; import { EMPTY_PATH } from '../utils/PathTracker'; -import Variable from '../variables/Variable'; -import Identifier, { IdentifierWithVariable } from './Identifier'; +import type Variable from '../variables/Variable'; +import Identifier, { type IdentifierWithVariable } from './Identifier'; import * as NodeType from './NodeType'; -import VariableDeclarator from './VariableDeclarator'; -import { IncludeChildren, NodeBase } from './shared/Node'; +import type VariableDeclarator from './VariableDeclarator'; +import { type IncludeChildren, NodeBase } from './shared/Node'; function areAllDeclarationsIncludedAndNotExported( - declarations: VariableDeclarator[], - exportNamesByVariable: Map + declarations: readonly VariableDeclarator[], + exportNamesByVariable: ReadonlyMap ): boolean { for (const declarator of declarations) { if (!declarator.id.included) return false; @@ -38,7 +38,7 @@ function areAllDeclarationsIncludedAndNotExported( } export default class VariableDeclaration extends NodeBase { - declare declarations: VariableDeclarator[]; + declare declarations: readonly VariableDeclarator[]; declare kind: 'var' | 'let' | 'const'; declare type: NodeType.tVariableDeclaration; @@ -107,7 +107,7 @@ export default class VariableDeclaration extends NodeBase { lastSeparatorPos: number | null, actualContentEnd: number, renderedContentEnd: number, - systemPatternExports: Variable[], + systemPatternExports: readonly Variable[], options: RenderOptions, isNoStatement: boolean | undefined ): void { @@ -238,7 +238,7 @@ export default class VariableDeclaration extends NodeBase { } function gatherSystemExportsAndGetSingleExport( - separatedNodes: { + separatedNodes: readonly { node: VariableDeclarator; }[], options: RenderOptions, diff --git a/src/ast/nodes/VariableDeclarator.ts b/src/ast/nodes/VariableDeclarator.ts index b168938c712..a6499ef4b45 100644 --- a/src/ast/nodes/VariableDeclarator.ts +++ b/src/ast/nodes/VariableDeclarator.ts @@ -1,18 +1,18 @@ -import MagicString from 'magic-string'; +import type MagicString from 'magic-string'; import { BLANK } from '../../utils/blank'; import { isReassignedExportsMember } from '../../utils/reassignedExportsMember'; import { findFirstOccurrenceOutsideComment, findNonWhiteSpace, - RenderOptions + type RenderOptions } from '../../utils/renderHelpers'; -import { HasEffectsContext, InclusionContext } from '../ExecutionContext'; -import { ObjectPath } from '../utils/PathTracker'; +import type { HasEffectsContext, InclusionContext } from '../ExecutionContext'; +import type { ObjectPath } from '../utils/PathTracker'; import { UNDEFINED_EXPRESSION } from '../values'; import Identifier from './Identifier'; import * as NodeType from './NodeType'; -import { ExpressionNode, IncludeChildren, NodeBase } from './shared/Node'; -import { PatternNode } from './shared/Pattern'; +import { type ExpressionNode, type IncludeChildren, NodeBase } from './shared/Node'; +import type { PatternNode } from './shared/Pattern'; export default class VariableDeclarator extends NodeBase { declare id: PatternNode; diff --git a/src/ast/nodes/WhileStatement.ts b/src/ast/nodes/WhileStatement.ts index fd978451960..d3bb193d888 100644 --- a/src/ast/nodes/WhileStatement.ts +++ b/src/ast/nodes/WhileStatement.ts @@ -1,6 +1,11 @@ -import { HasEffectsContext, InclusionContext } from '../ExecutionContext'; -import * as NodeType from './NodeType'; -import { ExpressionNode, IncludeChildren, StatementBase, StatementNode } from './shared/Node'; +import type { HasEffectsContext, InclusionContext } from '../ExecutionContext'; +import type * as NodeType from './NodeType'; +import { + type ExpressionNode, + type IncludeChildren, + StatementBase, + type StatementNode +} from './shared/Node'; export default class WhileStatement extends StatementBase { declare body: StatementNode; diff --git a/src/ast/nodes/YieldExpression.ts b/src/ast/nodes/YieldExpression.ts index c5130e256b0..0d9600f1aee 100644 --- a/src/ast/nodes/YieldExpression.ts +++ b/src/ast/nodes/YieldExpression.ts @@ -1,9 +1,9 @@ -import MagicString from 'magic-string'; -import { RenderOptions } from '../../utils/renderHelpers'; -import { HasEffectsContext } from '../ExecutionContext'; +import type MagicString from 'magic-string'; +import type { RenderOptions } from '../../utils/renderHelpers'; +import type { HasEffectsContext } from '../ExecutionContext'; import { UNKNOWN_PATH } from '../utils/PathTracker'; -import * as NodeType from './NodeType'; -import { ExpressionNode, NodeBase } from './shared/Node'; +import type * as NodeType from './NodeType'; +import { type ExpressionNode, NodeBase } from './shared/Node'; export default class YieldExpression extends NodeBase { declare argument: ExpressionNode | null; diff --git a/src/ast/nodes/shared/ArrayPrototype.ts b/src/ast/nodes/shared/ArrayPrototype.ts index e5ef5d37515..fb46de23403 100644 --- a/src/ast/nodes/shared/ArrayPrototype.ts +++ b/src/ast/nodes/shared/ArrayPrototype.ts @@ -1,6 +1,6 @@ import { UnknownInteger } from '../../utils/PathTracker'; import { UNKNOWN_LITERAL_BOOLEAN, UNKNOWN_LITERAL_NUMBER } from '../../values'; -import { ExpressionEntity, UNKNOWN_EXPRESSION } from './Expression'; +import { type ExpressionEntity, UNKNOWN_EXPRESSION } from './Expression'; import { Method, METHOD_RETURNS_BOOLEAN, @@ -8,7 +8,7 @@ import { METHOD_RETURNS_STRING, METHOD_RETURNS_UNKNOWN } from './MethodTypes'; -import { ObjectEntity, ObjectProperty, PropertyMap } from './ObjectEntity'; +import { ObjectEntity, type ObjectProperty, type PropertyMap } from './ObjectEntity'; import { OBJECT_PROTOTYPE } from './ObjectPrototype'; const NEW_ARRAY_PROPERTIES: ObjectProperty[] = [ diff --git a/src/ast/nodes/shared/ClassNode.ts b/src/ast/nodes/shared/ClassNode.ts index 0052e7b2b77..f8823593b89 100644 --- a/src/ast/nodes/shared/ClassNode.ts +++ b/src/ast/nodes/shared/ClassNode.ts @@ -1,23 +1,23 @@ -import { CallOptions } from '../../CallOptions'; -import { DeoptimizableEntity } from '../../DeoptimizableEntity'; -import { HasEffectsContext, InclusionContext } from '../../ExecutionContext'; -import { NodeEvent } from '../../NodeEvents'; +import type { CallOptions } from '../../CallOptions'; +import type { DeoptimizableEntity } from '../../DeoptimizableEntity'; +import type { HasEffectsContext, InclusionContext } from '../../ExecutionContext'; +import type { NodeEvent } from '../../NodeEvents'; import ChildScope from '../../scopes/ChildScope'; -import Scope from '../../scopes/Scope'; +import type Scope from '../../scopes/Scope'; import { EMPTY_PATH, - ObjectPath, - PathTracker, + type ObjectPath, + type PathTracker, SHARED_RECURSION_TRACKER, UnknownKey } from '../../utils/PathTracker'; -import ClassBody from '../ClassBody'; +import type ClassBody from '../ClassBody'; import Identifier from '../Identifier'; -import Literal from '../Literal'; +import type Literal from '../Literal'; import MethodDefinition from '../MethodDefinition'; -import { ExpressionEntity, LiteralValueOrUnknown, UnknownValue } from './Expression'; -import { ExpressionNode, IncludeChildren, NodeBase } from './Node'; -import { ObjectEntity, ObjectProperty } from './ObjectEntity'; +import { type ExpressionEntity, type LiteralValueOrUnknown, UnknownValue } from './Expression'; +import { type ExpressionNode, type IncludeChildren, NodeBase } from './Node'; +import { ObjectEntity, type ObjectProperty } from './ObjectEntity'; import { ObjectMember } from './ObjectMember'; import { OBJECT_PROTOTYPE } from './ObjectPrototype'; diff --git a/src/ast/nodes/shared/Expression.ts b/src/ast/nodes/shared/Expression.ts index f62d50bd676..60764af727c 100644 --- a/src/ast/nodes/shared/Expression.ts +++ b/src/ast/nodes/shared/Expression.ts @@ -68,7 +68,10 @@ export class ExpressionEntity implements WritableEntity { this.included = true; } - includeCallArguments(context: InclusionContext, args: (ExpressionNode | SpreadElement)[]): void { + includeCallArguments( + context: InclusionContext, + args: readonly (ExpressionNode | SpreadElement)[] + ): void { for (const arg of args) { arg.include(context, false); } diff --git a/src/ast/nodes/shared/FunctionNode.ts b/src/ast/nodes/shared/FunctionNode.ts index 16f4192f060..1ad65e74b46 100644 --- a/src/ast/nodes/shared/FunctionNode.ts +++ b/src/ast/nodes/shared/FunctionNode.ts @@ -1,24 +1,33 @@ -import { NormalizedTreeshakingOptions } from '../../../rollup/types'; -import { CallOptions, NO_ARGS } from '../../CallOptions'; -import { BROKEN_FLOW_NONE, HasEffectsContext, InclusionContext } from '../../ExecutionContext'; -import { EVENT_CALLED, NodeEvent } from '../../NodeEvents'; +import type { NormalizedTreeshakingOptions } from '../../../rollup/types'; +import { type CallOptions, NO_ARGS } from '../../CallOptions'; +import { + BROKEN_FLOW_NONE, + type HasEffectsContext, + type InclusionContext +} from '../../ExecutionContext'; +import { EVENT_CALLED, type NodeEvent } from '../../NodeEvents'; import FunctionScope from '../../scopes/FunctionScope'; -import { ObjectPath, UNKNOWN_PATH, UnknownKey } from '../../utils/PathTracker'; +import { type ObjectPath, UNKNOWN_PATH, UnknownKey } from '../../utils/PathTracker'; import BlockStatement from '../BlockStatement'; -import Identifier, { IdentifierWithVariable } from '../Identifier'; +import Identifier, { type IdentifierWithVariable } from '../Identifier'; import RestElement from '../RestElement'; -import SpreadElement from '../SpreadElement'; -import { ExpressionEntity, UNKNOWN_EXPRESSION } from './Expression'; -import { ExpressionNode, GenericEsTreeNode, IncludeChildren, NodeBase } from './Node'; +import type SpreadElement from '../SpreadElement'; +import { type ExpressionEntity, UNKNOWN_EXPRESSION } from './Expression'; +import { + type ExpressionNode, + type GenericEsTreeNode, + type IncludeChildren, + NodeBase +} from './Node'; import { ObjectEntity } from './ObjectEntity'; import { OBJECT_PROTOTYPE } from './ObjectPrototype'; -import { PatternNode } from './Pattern'; +import type { PatternNode } from './Pattern'; export default class FunctionNode extends NodeBase { declare async: boolean; declare body: BlockStatement; declare id: IdentifierWithVariable | null; - declare params: PatternNode[]; + declare params: readonly PatternNode[]; declare preventChildBlockScope: true; declare scope: FunctionScope; private deoptimizedReturn = false; @@ -154,7 +163,10 @@ export default class FunctionNode extends NodeBase { context.brokenFlow = brokenFlow; } - includeCallArguments(context: InclusionContext, args: (ExpressionNode | SpreadElement)[]): void { + includeCallArguments( + context: InclusionContext, + args: readonly (ExpressionNode | SpreadElement)[] + ): void { this.scope.includeCallArguments(context, args); } diff --git a/src/ast/nodes/shared/MethodBase.ts b/src/ast/nodes/shared/MethodBase.ts index f810f22710c..8ad74d66d13 100644 --- a/src/ast/nodes/shared/MethodBase.ts +++ b/src/ast/nodes/shared/MethodBase.ts @@ -1,17 +1,21 @@ -import { CallOptions, NO_ARGS } from '../../CallOptions'; -import { DeoptimizableEntity } from '../../DeoptimizableEntity'; -import { HasEffectsContext } from '../../ExecutionContext'; -import { EVENT_ACCESSED, EVENT_ASSIGNED, EVENT_CALLED, NodeEvent } from '../../NodeEvents'; +import { type CallOptions, NO_ARGS } from '../../CallOptions'; +import type { DeoptimizableEntity } from '../../DeoptimizableEntity'; +import type { HasEffectsContext } from '../../ExecutionContext'; +import { EVENT_ACCESSED, EVENT_ASSIGNED, EVENT_CALLED, type NodeEvent } from '../../NodeEvents'; import { EMPTY_PATH, - ObjectPath, - PathTracker, + type ObjectPath, + type PathTracker, SHARED_RECURSION_TRACKER } from '../../utils/PathTracker'; -import PrivateIdentifier from '../PrivateIdentifier'; -import { ExpressionEntity, LiteralValueOrUnknown, UNKNOWN_EXPRESSION } from './Expression'; -import { ExpressionNode, NodeBase } from './Node'; -import { PatternNode } from './Pattern'; +import type PrivateIdentifier from '../PrivateIdentifier'; +import { + type ExpressionEntity, + type LiteralValueOrUnknown, + UNKNOWN_EXPRESSION +} from './Expression'; +import { type ExpressionNode, NodeBase } from './Node'; +import type { PatternNode } from './Pattern'; export default class MethodBase extends NodeBase implements DeoptimizableEntity { declare computed: boolean; diff --git a/src/ast/nodes/shared/MethodTypes.ts b/src/ast/nodes/shared/MethodTypes.ts index c2d7a172854..78c061d5d18 100644 --- a/src/ast/nodes/shared/MethodTypes.ts +++ b/src/ast/nodes/shared/MethodTypes.ts @@ -1,15 +1,15 @@ -import { CallOptions, NO_ARGS } from '../../CallOptions'; -import { HasEffectsContext, InclusionContext } from '../../ExecutionContext'; -import { EVENT_CALLED, NodeEvent } from '../../NodeEvents'; -import { EMPTY_PATH, ObjectPath, UNKNOWN_INTEGER_PATH } from '../../utils/PathTracker'; +import { type CallOptions, NO_ARGS } from '../../CallOptions'; +import type { HasEffectsContext, InclusionContext } from '../../ExecutionContext'; +import { EVENT_CALLED, type NodeEvent } from '../../NodeEvents'; +import { EMPTY_PATH, type ObjectPath, UNKNOWN_INTEGER_PATH } from '../../utils/PathTracker'; import { UNKNOWN_LITERAL_BOOLEAN, UNKNOWN_LITERAL_NUMBER, UNKNOWN_LITERAL_STRING } from '../../values'; -import SpreadElement from '../SpreadElement'; +import type SpreadElement from '../SpreadElement'; import { ExpressionEntity, UNKNOWN_EXPRESSION } from './Expression'; -import { ExpressionNode } from './Node'; +import type { ExpressionNode } from './Node'; type MethodDescription = { callsArgs: number[] | null; @@ -96,7 +96,10 @@ export class Method extends ExpressionEntity { return false; } - includeCallArguments(context: InclusionContext, args: (ExpressionNode | SpreadElement)[]): void { + includeCallArguments( + context: InclusionContext, + args: readonly (ExpressionNode | SpreadElement)[] + ): void { for (const arg of args) { arg.include(context, false); } diff --git a/src/ast/nodes/shared/MultiExpression.ts b/src/ast/nodes/shared/MultiExpression.ts index b7d7426b5db..40dd5df76d2 100644 --- a/src/ast/nodes/shared/MultiExpression.ts +++ b/src/ast/nodes/shared/MultiExpression.ts @@ -1,14 +1,14 @@ -import { CallOptions } from '../../CallOptions'; -import { DeoptimizableEntity } from '../../DeoptimizableEntity'; -import { HasEffectsContext, InclusionContext } from '../../ExecutionContext'; -import { ObjectPath, PathTracker } from '../../utils/PathTracker'; +import type { CallOptions } from '../../CallOptions'; +import type { DeoptimizableEntity } from '../../DeoptimizableEntity'; +import type { HasEffectsContext, InclusionContext } from '../../ExecutionContext'; +import type { ObjectPath, PathTracker } from '../../utils/PathTracker'; import { ExpressionEntity } from './Expression'; -import { IncludeChildren } from './Node'; +import type { IncludeChildren } from './Node'; export class MultiExpression extends ExpressionEntity { included = false; - constructor(private expressions: ExpressionEntity[]) { + constructor(private expressions: readonly ExpressionEntity[]) { super(); } diff --git a/src/ast/nodes/shared/Node.ts b/src/ast/nodes/shared/Node.ts index 9e20a3da242..656c4ef1c1f 100644 --- a/src/ast/nodes/shared/Node.ts +++ b/src/ast/nodes/shared/Node.ts @@ -1,18 +1,18 @@ import * as acorn from 'acorn'; -import { locate, Location } from 'locate-character'; -import MagicString from 'magic-string'; -import { AstContext } from '../../../Module'; +import { locate, type Location } from 'locate-character'; +import type MagicString from 'magic-string'; +import type { AstContext } from '../../../Module'; import { ANNOTATION_KEY, INVALID_COMMENT_KEY } from '../../../utils/pureComments'; -import { NodeRenderOptions, RenderOptions } from '../../../utils/renderHelpers'; -import { Entity } from '../../Entity'; +import type { NodeRenderOptions, RenderOptions } from '../../../utils/renderHelpers'; +import type { Entity } from '../../Entity'; import { createHasEffectsContext, - HasEffectsContext, - InclusionContext + type HasEffectsContext, + type InclusionContext } from '../../ExecutionContext'; import { getAndCreateKeys, keys } from '../../keys'; -import ChildScope from '../../scopes/ChildScope'; -import Variable from '../../variables/Variable'; +import type ChildScope from '../../scopes/ChildScope'; +import type Variable from '../../variables/Variable'; import * as NodeType from '../NodeType'; import { ExpressionEntity } from './Expression'; @@ -37,7 +37,10 @@ export interface Node extends Entity { type: string; variable?: Variable | null; - addExportedVariables(variables: Variable[], exportNamesByVariable: Map): void; + addExportedVariables( + variables: readonly Variable[], + exportNamesByVariable: ReadonlyMap + ): void; /** * Called once all nodes have been initialised and the scopes have been populated. @@ -117,8 +120,8 @@ export class NodeBase extends ExpressionEntity implements ExpressionNode { } addExportedVariables( - _variables: Variable[], - _exportNamesByVariable: Map + _variables: readonly Variable[], + _exportNamesByVariable: ReadonlyMap ): void {} /** diff --git a/src/ast/nodes/shared/ObjectEntity.ts b/src/ast/nodes/shared/ObjectEntity.ts index d5f560858e3..7d9c8d2cf99 100644 --- a/src/ast/nodes/shared/ObjectEntity.ts +++ b/src/ast/nodes/shared/ObjectEntity.ts @@ -358,7 +358,7 @@ export class ObjectEntity extends ExpressionEntity { return true; } - private buildPropertyMaps(properties: ObjectProperty[]): void { + private buildPropertyMaps(properties: readonly ObjectProperty[]): void { const { allProperties, propertiesAndGettersByKey, diff --git a/src/ast/nodes/shared/ObjectMember.ts b/src/ast/nodes/shared/ObjectMember.ts index fd20d31721e..ac6871eb369 100644 --- a/src/ast/nodes/shared/ObjectMember.ts +++ b/src/ast/nodes/shared/ObjectMember.ts @@ -1,9 +1,9 @@ -import { CallOptions } from '../../CallOptions'; -import { DeoptimizableEntity } from '../../DeoptimizableEntity'; -import { HasEffectsContext } from '../../ExecutionContext'; -import { NodeEvent } from '../../NodeEvents'; -import { ObjectPath, PathTracker } from '../../utils/PathTracker'; -import { ExpressionEntity, LiteralValueOrUnknown } from './Expression'; +import type { CallOptions } from '../../CallOptions'; +import type { DeoptimizableEntity } from '../../DeoptimizableEntity'; +import type { HasEffectsContext } from '../../ExecutionContext'; +import type { NodeEvent } from '../../NodeEvents'; +import type { ObjectPath, PathTracker } from '../../utils/PathTracker'; +import { ExpressionEntity, type LiteralValueOrUnknown } from './Expression'; export class ObjectMember extends ExpressionEntity { constructor(private readonly object: ExpressionEntity, private readonly key: string) { diff --git a/src/ast/nodes/shared/ObjectPrototype.ts b/src/ast/nodes/shared/ObjectPrototype.ts index 96aa39682a3..e4d217875dd 100644 --- a/src/ast/nodes/shared/ObjectPrototype.ts +++ b/src/ast/nodes/shared/ObjectPrototype.ts @@ -3,7 +3,7 @@ import { METHOD_RETURNS_STRING, METHOD_RETURNS_UNKNOWN } from './MethodTypes'; -import { ObjectEntity, PropertyMap } from './ObjectEntity'; +import { ObjectEntity, type PropertyMap } from './ObjectEntity'; export const OBJECT_PROTOTYPE = new ObjectEntity( { diff --git a/src/ast/nodes/shared/Pattern.ts b/src/ast/nodes/shared/Pattern.ts index a9e146a5dae..dff89442c21 100644 --- a/src/ast/nodes/shared/Pattern.ts +++ b/src/ast/nodes/shared/Pattern.ts @@ -1,6 +1,6 @@ import { WritableEntity } from '../../Entity'; -import LocalVariable from '../../variables/LocalVariable'; -import { ExpressionEntity } from './Expression'; +import type LocalVariable from '../../variables/LocalVariable'; +import type { ExpressionEntity } from './Expression'; import { Node } from './Node'; export interface PatternNode extends WritableEntity, Node { diff --git a/src/ast/nodes/shared/knownGlobals.ts b/src/ast/nodes/shared/knownGlobals.ts index 19039a2cb50..90e40947c28 100644 --- a/src/ast/nodes/shared/knownGlobals.ts +++ b/src/ast/nodes/shared/knownGlobals.ts @@ -1,6 +1,6 @@ /* eslint sort-keys: "off" */ -import { ObjectPath } from '../../utils/PathTracker'; +import type { ObjectPath } from '../../utils/PathTracker'; const ValueProperties = Symbol('Value Properties'); diff --git a/src/ast/scopes/BlockScope.ts b/src/ast/scopes/BlockScope.ts index 7029bf00764..cc67637765e 100644 --- a/src/ast/scopes/BlockScope.ts +++ b/src/ast/scopes/BlockScope.ts @@ -1,7 +1,7 @@ -import { AstContext } from '../../Module'; -import Identifier from '../nodes/Identifier'; -import { ExpressionEntity } from '../nodes/shared/Expression'; -import LocalVariable from '../variables/LocalVariable'; +import type { AstContext } from '../../Module'; +import type Identifier from '../nodes/Identifier'; +import type { ExpressionEntity } from '../nodes/shared/Expression'; +import type LocalVariable from '../variables/LocalVariable'; import ChildScope from './ChildScope'; export default class BlockScope extends ChildScope { diff --git a/src/ast/scopes/CatchScope.ts b/src/ast/scopes/CatchScope.ts index fd34d32675d..a737f0289d5 100644 --- a/src/ast/scopes/CatchScope.ts +++ b/src/ast/scopes/CatchScope.ts @@ -1,8 +1,8 @@ -import { AstContext } from '../../Module'; -import Identifier from '../nodes/Identifier'; -import { ExpressionEntity } from '../nodes/shared/Expression'; +import type { AstContext } from '../../Module'; +import type Identifier from '../nodes/Identifier'; +import type { ExpressionEntity } from '../nodes/shared/Expression'; import { UNDEFINED_EXPRESSION } from '../values'; -import LocalVariable from '../variables/LocalVariable'; +import type LocalVariable from '../variables/LocalVariable'; import ParameterScope from './ParameterScope'; export default class CatchScope extends ParameterScope { diff --git a/src/ast/scopes/ChildScope.ts b/src/ast/scopes/ChildScope.ts index cc679dce13c..2ac3e68bd87 100644 --- a/src/ast/scopes/ChildScope.ts +++ b/src/ast/scopes/ChildScope.ts @@ -1,12 +1,12 @@ -import { InternalModuleFormat } from '../../rollup/types'; +import type { InternalModuleFormat } from '../../rollup/types'; import { getSafeName } from '../../utils/safeName'; -import ImportExpression from '../nodes/ImportExpression'; -import { ExpressionEntity } from '../nodes/shared/Expression'; -import Variable from '../variables/Variable'; +import type ImportExpression from '../nodes/ImportExpression'; +import type { ExpressionEntity } from '../nodes/shared/Expression'; +import type Variable from '../variables/Variable'; import Scope from './Scope'; export default class ChildScope extends Scope { - accessedOutsideVariables = new Map(); + readonly accessedOutsideVariables = new Map(); parent: Scope; private declare accessedDynamicImports?: Set; @@ -26,7 +26,7 @@ export default class ChildScope extends Scope { } addAccessedGlobals( - globals: string[], + globals: readonly string[], accessedGlobalsByScope: Map> ): void { const accessedGlobals = accessedGlobalsByScope.get(this) || new Set(); diff --git a/src/ast/scopes/ClassBodyScope.ts b/src/ast/scopes/ClassBodyScope.ts index 0e46212bd58..029053102a3 100644 --- a/src/ast/scopes/ClassBodyScope.ts +++ b/src/ast/scopes/ClassBodyScope.ts @@ -1,9 +1,9 @@ -import { AstContext } from '../../Module'; -import { ExpressionEntity } from '../nodes/shared/Expression'; +import type { AstContext } from '../../Module'; +import type { ExpressionEntity } from '../nodes/shared/Expression'; import LocalVariable from '../variables/LocalVariable'; import ThisVariable from '../variables/ThisVariable'; import ChildScope from './ChildScope'; -import Scope from './Scope'; +import type Scope from './Scope'; export default class ClassBodyScope extends ChildScope { instanceScope: ChildScope; diff --git a/src/ast/scopes/FunctionScope.ts b/src/ast/scopes/FunctionScope.ts index 557f0699a30..79daa9ccb96 100644 --- a/src/ast/scopes/FunctionScope.ts +++ b/src/ast/scopes/FunctionScope.ts @@ -1,15 +1,15 @@ -import { AstContext } from '../../Module'; -import { InclusionContext } from '../ExecutionContext'; -import SpreadElement from '../nodes/SpreadElement'; -import { ExpressionNode } from '../nodes/shared/Node'; +import type { AstContext } from '../../Module'; +import type { InclusionContext } from '../ExecutionContext'; +import type SpreadElement from '../nodes/SpreadElement'; +import type { ExpressionNode } from '../nodes/shared/Node'; import ArgumentsVariable from '../variables/ArgumentsVariable'; import ThisVariable from '../variables/ThisVariable'; -import ChildScope from './ChildScope'; +import type ChildScope from './ChildScope'; import ReturnValueScope from './ReturnValueScope'; export default class FunctionScope extends ReturnValueScope { - argumentsVariable: ArgumentsVariable; - thisVariable: ThisVariable; + readonly argumentsVariable: ArgumentsVariable; + readonly thisVariable: ThisVariable; constructor(parent: ChildScope, context: AstContext) { super(parent, context); @@ -21,7 +21,10 @@ export default class FunctionScope extends ReturnValueScope { return this; } - includeCallArguments(context: InclusionContext, args: (ExpressionNode | SpreadElement)[]): void { + includeCallArguments( + context: InclusionContext, + args: readonly (ExpressionNode | SpreadElement)[] + ): void { super.includeCallArguments(context, args); if (this.argumentsVariable.included) { for (const arg of args) { diff --git a/src/ast/scopes/GlobalScope.ts b/src/ast/scopes/GlobalScope.ts index 9be38ec1e9a..08c94f0f879 100644 --- a/src/ast/scopes/GlobalScope.ts +++ b/src/ast/scopes/GlobalScope.ts @@ -1,6 +1,6 @@ import GlobalVariable from '../variables/GlobalVariable'; import UndefinedVariable from '../variables/UndefinedVariable'; -import Variable from '../variables/Variable'; +import type Variable from '../variables/Variable'; import Scope from './Scope'; export default class GlobalScope extends Scope { diff --git a/src/ast/scopes/ModuleScope.ts b/src/ast/scopes/ModuleScope.ts index a264626885c..d1787db60ab 100644 --- a/src/ast/scopes/ModuleScope.ts +++ b/src/ast/scopes/ModuleScope.ts @@ -1,13 +1,13 @@ -import { AstContext } from '../../Module'; -import { InternalModuleFormat } from '../../rollup/types'; -import ExportDefaultDeclaration from '../nodes/ExportDefaultDeclaration'; +import type { AstContext } from '../../Module'; +import type { InternalModuleFormat } from '../../rollup/types'; +import type ExportDefaultDeclaration from '../nodes/ExportDefaultDeclaration'; import { UNDEFINED_EXPRESSION } from '../values'; import ExportDefaultVariable from '../variables/ExportDefaultVariable'; import GlobalVariable from '../variables/GlobalVariable'; import LocalVariable from '../variables/LocalVariable'; -import Variable from '../variables/Variable'; +import type Variable from '../variables/Variable'; import ChildScope from './ChildScope'; -import GlobalScope from './GlobalScope'; +import type GlobalScope from './GlobalScope'; export default class ModuleScope extends ChildScope { context: AstContext; diff --git a/src/ast/scopes/ParameterScope.ts b/src/ast/scopes/ParameterScope.ts index 34463ac22c7..b31d50238aa 100644 --- a/src/ast/scopes/ParameterScope.ts +++ b/src/ast/scopes/ParameterScope.ts @@ -1,17 +1,17 @@ -import { AstContext } from '../../Module'; -import { InclusionContext } from '../ExecutionContext'; -import Identifier from '../nodes/Identifier'; +import type { AstContext } from '../../Module'; +import type { InclusionContext } from '../ExecutionContext'; +import type Identifier from '../nodes/Identifier'; import SpreadElement from '../nodes/SpreadElement'; import { UNKNOWN_EXPRESSION } from '../nodes/shared/Expression'; -import { ExpressionNode } from '../nodes/shared/Node'; +import type { ExpressionNode } from '../nodes/shared/Node'; import LocalVariable from '../variables/LocalVariable'; import ChildScope from './ChildScope'; -import Scope from './Scope'; +import type Scope from './Scope'; export default class ParameterScope extends ChildScope { - hoistedBodyVarScope: ChildScope; + readonly hoistedBodyVarScope: ChildScope; - protected parameters: LocalVariable[][] = []; + protected parameters: readonly LocalVariable[][] = []; private context: AstContext; private hasRest = false; @@ -47,7 +47,10 @@ export default class ParameterScope extends ChildScope { this.hasRest = hasRest; } - includeCallArguments(context: InclusionContext, args: (ExpressionNode | SpreadElement)[]): void { + includeCallArguments( + context: InclusionContext, + args: readonly (ExpressionNode | SpreadElement)[] + ): void { let calledFromTryStatement = false; let argIncluded = false; const restParam = this.hasRest && this.parameters[this.parameters.length - 1]; diff --git a/src/ast/scopes/ReturnValueScope.ts b/src/ast/scopes/ReturnValueScope.ts index c6b7ad3a1ac..dead794d212 100644 --- a/src/ast/scopes/ReturnValueScope.ts +++ b/src/ast/scopes/ReturnValueScope.ts @@ -1,4 +1,4 @@ -import { ExpressionEntity, UNKNOWN_EXPRESSION } from '../nodes/shared/Expression'; +import { type ExpressionEntity, UNKNOWN_EXPRESSION } from '../nodes/shared/Expression'; import { UNKNOWN_PATH } from '../utils/PathTracker'; import ParameterScope from './ParameterScope'; diff --git a/src/ast/scopes/Scope.ts b/src/ast/scopes/Scope.ts index c087e2e612b..cd1dfd5eaec 100644 --- a/src/ast/scopes/Scope.ts +++ b/src/ast/scopes/Scope.ts @@ -1,10 +1,10 @@ -import { AstContext } from '../../Module'; -import Identifier from '../nodes/Identifier'; -import { ExpressionEntity } from '../nodes/shared/Expression'; +import type { AstContext } from '../../Module'; +import type Identifier from '../nodes/Identifier'; +import type { ExpressionEntity } from '../nodes/shared/Expression'; import { UNDEFINED_EXPRESSION } from '../values'; import LocalVariable from '../variables/LocalVariable'; -import Variable from '../variables/Variable'; -import ChildScope from './ChildScope'; +import type Variable from '../variables/Variable'; +import type ChildScope from './ChildScope'; export default class Scope { children: ChildScope[] = []; diff --git a/src/ast/scopes/TrackingScope.ts b/src/ast/scopes/TrackingScope.ts index 3f2b156b507..f1f40b878c0 100644 --- a/src/ast/scopes/TrackingScope.ts +++ b/src/ast/scopes/TrackingScope.ts @@ -1,7 +1,7 @@ -import { AstContext } from '../../Module'; -import Identifier from '../nodes/Identifier'; -import { ExpressionEntity } from '../nodes/shared/Expression'; -import LocalVariable from '../variables/LocalVariable'; +import type { AstContext } from '../../Module'; +import type Identifier from '../nodes/Identifier'; +import type { ExpressionEntity } from '../nodes/shared/Expression'; +import type LocalVariable from '../variables/LocalVariable'; import BlockScope from './BlockScope'; export default class TrackingScope extends BlockScope { diff --git a/src/ast/utils/PathTracker.ts b/src/ast/utils/PathTracker.ts index 4b4a84440eb..1ffa0554c82 100644 --- a/src/ast/utils/PathTracker.ts +++ b/src/ast/utils/PathTracker.ts @@ -1,5 +1,5 @@ import { getOrCreate } from '../../utils/getOrCreate'; -import { Entity } from '../Entity'; +import type { Entity } from '../Entity'; export const UnknownKey = Symbol('Unknown Key'); export const UnknownInteger = Symbol('Unknown Integer'); diff --git a/src/ast/values.ts b/src/ast/values.ts index cd3e753c8b4..0c636e53a6c 100644 --- a/src/ast/values.ts +++ b/src/ast/values.ts @@ -1,8 +1,8 @@ -import { CallOptions, NO_ARGS } from './CallOptions'; -import { HasEffectsContext } from './ExecutionContext'; -import { LiteralValue } from './nodes/Literal'; +import { type CallOptions, NO_ARGS } from './CallOptions'; +import type { HasEffectsContext } from './ExecutionContext'; +import type { LiteralValue } from './nodes/Literal'; import { ExpressionEntity, UNKNOWN_EXPRESSION } from './nodes/shared/Expression'; -import { EMPTY_PATH, ObjectPath, ObjectPathKey } from './utils/PathTracker'; +import { EMPTY_PATH, type ObjectPath, type ObjectPathKey } from './utils/PathTracker'; export interface MemberDescription { callsArgs: number[] | null; diff --git a/src/ast/variables/ArgumentsVariable.ts b/src/ast/variables/ArgumentsVariable.ts index f152f2f72ff..8826e29ac19 100644 --- a/src/ast/variables/ArgumentsVariable.ts +++ b/src/ast/variables/ArgumentsVariable.ts @@ -1,6 +1,6 @@ -import { AstContext } from '../../Module'; +import type { AstContext } from '../../Module'; import { UNKNOWN_EXPRESSION } from '../nodes/shared/Expression'; -import { ObjectPath } from '../utils/PathTracker'; +import type { ObjectPath } from '../utils/PathTracker'; import LocalVariable from './LocalVariable'; export default class ArgumentsVariable extends LocalVariable { diff --git a/src/ast/variables/ExportDefaultVariable.ts b/src/ast/variables/ExportDefaultVariable.ts index 461a69947bd..a3befaee569 100644 --- a/src/ast/variables/ExportDefaultVariable.ts +++ b/src/ast/variables/ExportDefaultVariable.ts @@ -1,11 +1,11 @@ -import { AstContext } from '../../Module'; +import type { AstContext } from '../../Module'; import ClassDeclaration from '../nodes/ClassDeclaration'; -import ExportDefaultDeclaration from '../nodes/ExportDefaultDeclaration'; +import type ExportDefaultDeclaration from '../nodes/ExportDefaultDeclaration'; import FunctionDeclaration from '../nodes/FunctionDeclaration'; -import Identifier, { IdentifierWithVariable } from '../nodes/Identifier'; +import Identifier, { type IdentifierWithVariable } from '../nodes/Identifier'; import LocalVariable from './LocalVariable'; import UndefinedVariable from './UndefinedVariable'; -import Variable from './Variable'; +import type Variable from './Variable'; export default class ExportDefaultVariable extends LocalVariable { hasId = false; diff --git a/src/ast/variables/ExportShimVariable.ts b/src/ast/variables/ExportShimVariable.ts index 65dafd0b3d2..ef7ebe5efff 100644 --- a/src/ast/variables/ExportShimVariable.ts +++ b/src/ast/variables/ExportShimVariable.ts @@ -1,4 +1,4 @@ -import Module from '../../Module'; +import type Module from '../../Module'; import { MISSING_EXPORT_SHIM_VARIABLE } from '../../utils/variableNames'; import Variable from './Variable'; diff --git a/src/ast/variables/ExternalVariable.ts b/src/ast/variables/ExternalVariable.ts index c4d42593a55..18f2f999cb9 100644 --- a/src/ast/variables/ExternalVariable.ts +++ b/src/ast/variables/ExternalVariable.ts @@ -1,6 +1,6 @@ -import ExternalModule from '../../ExternalModule'; -import Identifier from '../nodes/Identifier'; -import { ObjectPath } from '../utils/PathTracker'; +import type ExternalModule from '../../ExternalModule'; +import type Identifier from '../nodes/Identifier'; +import type { ObjectPath } from '../utils/PathTracker'; import Variable from './Variable'; export default class ExternalVariable extends Variable { diff --git a/src/ast/variables/GlobalVariable.ts b/src/ast/variables/GlobalVariable.ts index d18f49e17fc..7ac5c466962 100644 --- a/src/ast/variables/GlobalVariable.ts +++ b/src/ast/variables/GlobalVariable.ts @@ -1,5 +1,5 @@ import { isGlobalMember, isPureGlobal } from '../nodes/shared/knownGlobals'; -import { ObjectPath } from '../utils/PathTracker'; +import type { ObjectPath } from '../utils/PathTracker'; import Variable from './Variable'; export default class GlobalVariable extends Variable { diff --git a/src/ast/variables/LocalVariable.ts b/src/ast/variables/LocalVariable.ts index 3e9acf7df30..83e86a6ccaf 100644 --- a/src/ast/variables/LocalVariable.ts +++ b/src/ast/variables/LocalVariable.ts @@ -1,27 +1,28 @@ -import Module, { AstContext } from '../../Module'; -import { CallOptions } from '../CallOptions'; -import { DeoptimizableEntity } from '../DeoptimizableEntity'; +import type Module from '../../Module'; +import type { AstContext } from '../../Module'; +import type { CallOptions } from '../CallOptions'; +import type { DeoptimizableEntity } from '../DeoptimizableEntity'; import { createInclusionContext, HasEffectsContext, InclusionContext } from '../ExecutionContext'; -import { NodeEvent } from '../NodeEvents'; -import ExportDefaultDeclaration from '../nodes/ExportDefaultDeclaration'; -import Identifier from '../nodes/Identifier'; +import type { NodeEvent } from '../NodeEvents'; +import type ExportDefaultDeclaration from '../nodes/ExportDefaultDeclaration'; +import type Identifier from '../nodes/Identifier'; import * as NodeType from '../nodes/NodeType'; -import SpreadElement from '../nodes/SpreadElement'; +import type SpreadElement from '../nodes/SpreadElement'; import { - ExpressionEntity, - LiteralValueOrUnknown, + type ExpressionEntity, + type LiteralValueOrUnknown, UNKNOWN_EXPRESSION, UnknownValue } from '../nodes/shared/Expression'; -import { ExpressionNode, Node } from '../nodes/shared/Node'; -import { ObjectPath, PathTracker, UNKNOWN_PATH } from '../utils/PathTracker'; +import type { ExpressionNode, Node } from '../nodes/shared/Node'; +import { type ObjectPath, type PathTracker, UNKNOWN_PATH } from '../utils/PathTracker'; import Variable from './Variable'; export default class LocalVariable extends Variable { calledFromTryStatement = false; - declarations: (Identifier | ExportDefaultDeclaration)[]; + readonly declarations: (Identifier | ExportDefaultDeclaration)[]; init: ExpressionEntity | null; - module: Module; + readonly module: Module; // Caching and deoptimization: // We track deoptimization when we do not return something unknown @@ -189,7 +190,10 @@ export default class LocalVariable extends Variable { } } - includeCallArguments(context: InclusionContext, args: (ExpressionNode | SpreadElement)[]): void { + includeCallArguments( + context: InclusionContext, + args: readonly (ExpressionNode | SpreadElement)[] + ): void { if (this.isReassigned || (this.init && context.includedCallArguments.has(this.init))) { for (const arg of args) { arg.include(context, false); diff --git a/src/ast/variables/NamespaceVariable.ts b/src/ast/variables/NamespaceVariable.ts index 0533fd8f3d7..29d4ef6f065 100644 --- a/src/ast/variables/NamespaceVariable.ts +++ b/src/ast/variables/NamespaceVariable.ts @@ -1,9 +1,10 @@ -import Module, { AstContext } from '../../Module'; +import type Module from '../../Module'; +import type { AstContext } from '../../Module'; import { MERGE_NAMESPACES_VARIABLE } from '../../utils/interopHelpers'; -import { RenderOptions } from '../../utils/renderHelpers'; +import type { RenderOptions } from '../../utils/renderHelpers'; import { getSystemExportStatement } from '../../utils/systemJsRendering'; -import Identifier from '../nodes/Identifier'; -import ChildScope from '../scopes/ChildScope'; +import type Identifier from '../nodes/Identifier'; +import type ChildScope from '../scopes/ChildScope'; import Variable from './Variable'; export default class NamespaceVariable extends Variable { @@ -12,7 +13,7 @@ export default class NamespaceVariable extends Variable { module: Module; private memberVariables: { [name: string]: Variable } | null = null; - private mergedNamespaces: Variable[] = []; + private mergedNamespaces: readonly Variable[] = []; private referencedEarly = false; private references: Identifier[] = []; @@ -110,7 +111,7 @@ export default class NamespaceVariable extends Variable { return this.referencedEarly; } - setMergedNamespaces(mergedNamespaces: Variable[]): void { + setMergedNamespaces(mergedNamespaces: readonly Variable[]): void { this.mergedNamespaces = mergedNamespaces; const moduleExecIndex = this.context.getModuleExecIndex(); for (const identifier of this.references) { diff --git a/src/ast/variables/SyntheticNamedExportVariable.ts b/src/ast/variables/SyntheticNamedExportVariable.ts index 2320bf38dd5..f7bcc50dc2c 100644 --- a/src/ast/variables/SyntheticNamedExportVariable.ts +++ b/src/ast/variables/SyntheticNamedExportVariable.ts @@ -1,4 +1,5 @@ -import Module, { AstContext } from '../../Module'; +import type Module from '../../Module'; +import type { AstContext } from '../../Module'; import ExportDefaultVariable from './ExportDefaultVariable'; import Variable from './Variable'; diff --git a/src/ast/variables/ThisVariable.ts b/src/ast/variables/ThisVariable.ts index f82576802eb..7c4cba21045 100644 --- a/src/ast/variables/ThisVariable.ts +++ b/src/ast/variables/ThisVariable.ts @@ -1,10 +1,10 @@ -import { AstContext } from '../../Module'; -import { HasEffectsContext } from '../ExecutionContext'; -import { NodeEvent } from '../NodeEvents'; -import { ExpressionEntity, UNKNOWN_EXPRESSION } from '../nodes/shared/Expression'; +import type { AstContext } from '../../Module'; +import type { HasEffectsContext } from '../ExecutionContext'; +import type { NodeEvent } from '../NodeEvents'; +import { type ExpressionEntity, UNKNOWN_EXPRESSION } from '../nodes/shared/Expression'; import { DiscriminatedPathTracker, - ObjectPath, + type ObjectPath, SHARED_RECURSION_TRACKER } from '../utils/PathTracker'; import LocalVariable from './LocalVariable'; @@ -16,10 +16,10 @@ interface ThisDeoptimizationEvent { } export default class ThisVariable extends LocalVariable { - private deoptimizedPaths: ObjectPath[] = []; - private entitiesToBeDeoptimized = new Set(); - private thisDeoptimizationList: ThisDeoptimizationEvent[] = []; - private thisDeoptimizations = new DiscriminatedPathTracker(); + private readonly deoptimizedPaths: ObjectPath[] = []; + private readonly entitiesToBeDeoptimized = new Set(); + private readonly thisDeoptimizationList: ThisDeoptimizationEvent[] = []; + private readonly thisDeoptimizations = new DiscriminatedPathTracker(); constructor(context: AstContext) { super('this', null, null, context); diff --git a/src/ast/variables/UndefinedVariable.ts b/src/ast/variables/UndefinedVariable.ts index 83a8d6220df..85d256321d4 100644 --- a/src/ast/variables/UndefinedVariable.ts +++ b/src/ast/variables/UndefinedVariable.ts @@ -1,4 +1,4 @@ -import { LiteralValueOrUnknown } from '../nodes/shared/Expression'; +import type { LiteralValueOrUnknown } from '../nodes/shared/Expression'; import Variable from './Variable'; export default class UndefinedVariable extends Variable { diff --git a/src/ast/variables/Variable.ts b/src/ast/variables/Variable.ts index 891e4ebe9a5..51575176de6 100644 --- a/src/ast/variables/Variable.ts +++ b/src/ast/variables/Variable.ts @@ -1,9 +1,9 @@ -import ExternalModule from '../../ExternalModule'; -import Module from '../../Module'; -import { HasEffectsContext } from '../ExecutionContext'; -import Identifier from '../nodes/Identifier'; +import type ExternalModule from '../../ExternalModule'; +import type Module from '../../Module'; +import type { HasEffectsContext } from '../ExecutionContext'; +import type Identifier from '../nodes/Identifier'; import { ExpressionEntity } from '../nodes/shared/Expression'; -import { ObjectPath } from '../utils/PathTracker'; +import type { ObjectPath } from '../utils/PathTracker'; export default class Variable extends ExpressionEntity { alwaysRendered = false; diff --git a/src/finalisers/amd.ts b/src/finalisers/amd.ts index d1d838d7cce..a4526c6e514 100644 --- a/src/finalisers/amd.ts +++ b/src/finalisers/amd.ts @@ -1,11 +1,11 @@ -import { Bundle, Bundle as MagicStringBundle } from 'magic-string'; -import { NormalizedOutputOptions } from '../rollup/types'; +import type { Bundle, Bundle as MagicStringBundle } from 'magic-string'; +import type { NormalizedOutputOptions } from '../rollup/types'; import getCompleteAmdId from './shared/getCompleteAmdId'; import { getExportBlock, getNamespaceMarkers } from './shared/getExportBlock'; import getInteropBlock from './shared/getInteropBlock'; import removeExtensionFromRelativeAmdId from './shared/removeExtensionFromRelativeAmdId'; import warnOnBuiltins from './shared/warnOnBuiltins'; -import { FinaliserOptions } from './index'; +import type { FinaliserOptions } from './index'; export default function amd( magicString: MagicStringBundle, diff --git a/src/finalisers/cjs.ts b/src/finalisers/cjs.ts index c5a19938578..4bca3d4bbb0 100644 --- a/src/finalisers/cjs.ts +++ b/src/finalisers/cjs.ts @@ -1,10 +1,10 @@ -import { Bundle, Bundle as MagicStringBundle } from 'magic-string'; -import { ChunkDependencies } from '../Chunk'; -import { NormalizedOutputOptions } from '../rollup/types'; -import { GenerateCodeSnippets } from '../utils/generateCodeSnippets'; +import type { Bundle, Bundle as MagicStringBundle } from 'magic-string'; +import type { ChunkDependencies } from '../Chunk'; +import type { NormalizedOutputOptions } from '../rollup/types'; +import type { GenerateCodeSnippets } from '../utils/generateCodeSnippets'; import { getExportBlock, getNamespaceMarkers } from './shared/getExportBlock'; import getInteropBlock from './shared/getInteropBlock'; -import { FinaliserOptions } from './index'; +import type { FinaliserOptions } from './index'; export default function cjs( magicString: MagicStringBundle, diff --git a/src/finalisers/es.ts b/src/finalisers/es.ts index 08baa972655..320109e13c2 100644 --- a/src/finalisers/es.ts +++ b/src/finalisers/es.ts @@ -1,9 +1,9 @@ -import { Bundle, Bundle as MagicStringBundle } from 'magic-string'; -import { ChunkDependencies, ChunkExports, ImportSpecifier, ReexportSpecifier } from '../Chunk'; -import { NormalizedOutputOptions } from '../rollup/types'; -import { GenerateCodeSnippets } from '../utils/generateCodeSnippets'; +import type { Bundle, Bundle as MagicStringBundle } from 'magic-string'; +import type { ChunkDependencies, ChunkExports, ImportSpecifier, ReexportSpecifier } from '../Chunk'; +import type { NormalizedOutputOptions } from '../rollup/types'; +import type { GenerateCodeSnippets } from '../utils/generateCodeSnippets'; import { getHelpersBlock } from '../utils/interopHelpers'; -import { FinaliserOptions } from './index'; +import type { FinaliserOptions } from './index'; export default function es( magicString: MagicStringBundle, diff --git a/src/finalisers/iife.ts b/src/finalisers/iife.ts index e051e7ce24a..456d4465f82 100644 --- a/src/finalisers/iife.ts +++ b/src/finalisers/iife.ts @@ -1,5 +1,5 @@ -import { Bundle, Bundle as MagicStringBundle } from 'magic-string'; -import { NormalizedOutputOptions } from '../rollup/types'; +import type { Bundle, Bundle as MagicStringBundle } from 'magic-string'; +import type { NormalizedOutputOptions } from '../rollup/types'; import { error } from '../utils/error'; import { isLegal } from '../utils/identifierHelpers'; import { getExportBlock, getNamespaceMarkers } from './shared/getExportBlock'; @@ -8,7 +8,7 @@ import { keypath } from './shared/sanitize'; import setupNamespace from './shared/setupNamespace'; import trimEmptyImports from './shared/trimEmptyImports'; import warnOnBuiltins from './shared/warnOnBuiltins'; -import { FinaliserOptions } from './index'; +import type { FinaliserOptions } from './index'; export default function iife( magicString: MagicStringBundle, diff --git a/src/finalisers/index.ts b/src/finalisers/index.ts index 3b0e89f865f..acbab8f085d 100644 --- a/src/finalisers/index.ts +++ b/src/finalisers/index.ts @@ -1,7 +1,7 @@ -import { Bundle as MagicStringBundle } from 'magic-string'; -import { ChunkDependencies, ChunkExports } from '../Chunk'; -import { NormalizedOutputOptions, RollupWarning } from '../rollup/types'; -import { GenerateCodeSnippets } from '../utils/generateCodeSnippets'; +import type { Bundle as MagicStringBundle } from 'magic-string'; +import type { ChunkDependencies, ChunkExports } from '../Chunk'; +import type { NormalizedOutputOptions, RollupWarning } from '../rollup/types'; +import type { GenerateCodeSnippets } from '../utils/generateCodeSnippets'; import amd from './amd'; import cjs from './cjs'; import es from './es'; diff --git a/src/finalisers/shared/getCompleteAmdId.ts b/src/finalisers/shared/getCompleteAmdId.ts index 5143afa8ce2..fec3d235300 100644 --- a/src/finalisers/shared/getCompleteAmdId.ts +++ b/src/finalisers/shared/getCompleteAmdId.ts @@ -1,13 +1,13 @@ -import { NormalizedOutputOptions } from '../../rollup/types'; +import type { NormalizedOutputOptions } from '../../rollup/types'; import removeJsExtension from './removeJsExtension'; export default function getCompleteAmdId( options: NormalizedOutputOptions['amd'], chunkId: string ): string { - if (!options.autoId) { - return options.id || ''; - } else { + if (options.autoId) { return `${options.basePath ? options.basePath + '/' : ''}${removeJsExtension(chunkId)}`; } + + return options.id || ''; } diff --git a/src/finalisers/shared/getExportBlock.ts b/src/finalisers/shared/getExportBlock.ts index a7b7b52436d..b4ef94d3ddc 100644 --- a/src/finalisers/shared/getExportBlock.ts +++ b/src/finalisers/shared/getExportBlock.ts @@ -1,6 +1,6 @@ -import { ChunkDependencies, ChunkExports } from '../../Chunk'; -import { GetInterop } from '../../rollup/types'; -import { GenerateCodeSnippets } from '../../utils/generateCodeSnippets'; +import type { ChunkDependencies, ChunkExports } from '../../Chunk'; +import type { GetInterop } from '../../rollup/types'; +import type { GenerateCodeSnippets } from '../../utils/generateCodeSnippets'; import { defaultInteropHelpersByInteropType, isDefaultAProperty, diff --git a/src/finalisers/shared/getInteropBlock.ts b/src/finalisers/shared/getInteropBlock.ts index 910fa583605..cbddb8d2aee 100644 --- a/src/finalisers/shared/getInteropBlock.ts +++ b/src/finalisers/shared/getInteropBlock.ts @@ -1,6 +1,6 @@ -import { ModuleDeclarationDependency, ReexportSpecifier } from '../../Chunk'; -import { GetInterop } from '../../rollup/types'; -import { GenerateCodeSnippets } from '../../utils/generateCodeSnippets'; +import type { ModuleDeclarationDependency, ReexportSpecifier } from '../../Chunk'; +import type { GetInterop } from '../../rollup/types'; +import type { GenerateCodeSnippets } from '../../utils/generateCodeSnippets'; import { defaultInteropHelpersByInteropType, getHelpersBlock, @@ -9,7 +9,7 @@ import { } from '../../utils/interopHelpers'; export default function getInteropBlock( - dependencies: ModuleDeclarationDependency[], + dependencies: readonly ModuleDeclarationDependency[], interop: GetInterop, externalLiveBindings: boolean, freeze: boolean, diff --git a/src/finalisers/shared/setupNamespace.ts b/src/finalisers/shared/setupNamespace.ts index 3f23dbdb7cc..10344799dda 100644 --- a/src/finalisers/shared/setupNamespace.ts +++ b/src/finalisers/shared/setupNamespace.ts @@ -1,5 +1,5 @@ -import { GlobalsOption } from '../../rollup/types'; -import { GenerateCodeSnippets } from '../../utils/generateCodeSnippets'; +import type { GlobalsOption } from '../../rollup/types'; +import type { GenerateCodeSnippets } from '../../utils/generateCodeSnippets'; export default function setupNamespace( name: string, diff --git a/src/finalisers/shared/trimEmptyImports.ts b/src/finalisers/shared/trimEmptyImports.ts index d33919dc23b..7c5051eac49 100644 --- a/src/finalisers/shared/trimEmptyImports.ts +++ b/src/finalisers/shared/trimEmptyImports.ts @@ -1,7 +1,7 @@ -import { ModuleDeclarationDependency } from '../../Chunk'; +import type { ModuleDeclarationDependency } from '../../Chunk'; export default function trimEmptyImports( - dependencies: ModuleDeclarationDependency[] + dependencies: readonly ModuleDeclarationDependency[] ): ModuleDeclarationDependency[] { let i = dependencies.length; diff --git a/src/finalisers/shared/warnOnBuiltins.ts b/src/finalisers/shared/warnOnBuiltins.ts index 6c47eddd40d..59d0f0cf961 100644 --- a/src/finalisers/shared/warnOnBuiltins.ts +++ b/src/finalisers/shared/warnOnBuiltins.ts @@ -1,5 +1,5 @@ -import { ChunkDependencies } from '../../Chunk'; -import { RollupWarning } from '../../rollup/types'; +import type { ChunkDependencies } from '../../Chunk'; +import type { RollupWarning } from '../../rollup/types'; import { printQuotedStringList } from '../../utils/printStringList'; const builtins = { diff --git a/src/finalisers/system.ts b/src/finalisers/system.ts index e4e104d0d80..703b825535c 100644 --- a/src/finalisers/system.ts +++ b/src/finalisers/system.ts @@ -1,10 +1,10 @@ -import { Bundle, Bundle as MagicStringBundle } from 'magic-string'; -import { ChunkDependencies, ChunkExports, ModuleDeclarations } from '../Chunk'; -import { NormalizedOutputOptions } from '../rollup/types'; -import { GenerateCodeSnippets } from '../utils/generateCodeSnippets'; +import type { Bundle, Bundle as MagicStringBundle } from 'magic-string'; +import type { ChunkDependencies, ChunkExports, ModuleDeclarations } from '../Chunk'; +import type { NormalizedOutputOptions } from '../rollup/types'; +import type { GenerateCodeSnippets } from '../utils/generateCodeSnippets'; import { getHelpersBlock } from '../utils/interopHelpers'; import { MISSING_EXPORT_SHIM_VARIABLE } from '../utils/variableNames'; -import { FinaliserOptions } from './index'; +import type { FinaliserOptions } from './index'; export default function system( magicString: MagicStringBundle, @@ -171,7 +171,7 @@ const getStarExcludes = ({ dependencies, exports }: ModuleDeclarations): Set | null, + starExcludes: ReadonlySet | null, t: string, { _, cnst, getObject, n }: GenerateCodeSnippets ): string => @@ -183,7 +183,7 @@ const getStarExcludesBlock = ( : ''; const getImportBindingsBlock = ( - importBindings: string[], + importBindings: readonly string[], t: string, { _, n }: GenerateCodeSnippets ): string => (importBindings.length ? `${n}${t}var ${importBindings.join(`,${_}`)};` : ''); @@ -200,7 +200,7 @@ const getHoistedExportsBlock = ( ); function getExportsBlock( - exports: { name: string; value: string }[], + exports: readonly { name: string; value: string }[], t: string, { _, n }: GenerateCodeSnippets ): string { diff --git a/src/finalisers/umd.ts b/src/finalisers/umd.ts index 3725f92dc5e..2795d4cb1e8 100644 --- a/src/finalisers/umd.ts +++ b/src/finalisers/umd.ts @@ -1,7 +1,7 @@ -import { Bundle, Bundle as MagicStringBundle } from 'magic-string'; -import { NormalizedOutputOptions } from '../rollup/types'; +import type { Bundle, Bundle as MagicStringBundle } from 'magic-string'; +import type { NormalizedOutputOptions } from '../rollup/types'; import { error } from '../utils/error'; -import { GenerateCodeSnippets } from '../utils/generateCodeSnippets'; +import type { GenerateCodeSnippets } from '../utils/generateCodeSnippets'; import getCompleteAmdId from './shared/getCompleteAmdId'; import { getExportBlock, getNamespaceMarkers } from './shared/getExportBlock'; import getInteropBlock from './shared/getInteropBlock'; @@ -10,7 +10,7 @@ import { keypath } from './shared/sanitize'; import { assignToDeepVariable } from './shared/setupNamespace'; import trimEmptyImports from './shared/trimEmptyImports'; import warnOnBuiltins from './shared/warnOnBuiltins'; -import { FinaliserOptions } from './index'; +import type { FinaliserOptions } from './index'; function globalProp(name: string, globalVar: string, getPropertyAccess: (name: string) => string) { if (!name) return 'null'; diff --git a/src/utils/hookActions.ts b/src/utils/hookActions.ts index b94be501aa9..06282ae2822 100644 --- a/src/utils/hookActions.ts +++ b/src/utils/hookActions.ts @@ -1,3 +1,5 @@ +import process from 'process'; + const unfulfilledActions = new Set<[string, string, Parameters]>(); export function addUnresolvedAction(actionTuple: [string, string, Parameters]): void { diff --git a/src/utils/options/options.ts b/src/utils/options/options.ts index 5f49c2a7f21..ac42f435dbd 100644 --- a/src/utils/options/options.ts +++ b/src/utils/options/options.ts @@ -17,7 +17,7 @@ export const defaultOnWarn: WarningHandler = warning => console.warn(warning.mes export function warnUnknownOptions( passedOptions: GenericConfigObject, - validOptions: string[], + validOptions: readonly string[], optionType: string, warn: WarningHandler, ignoredKeys = /$./ diff --git a/src/watch/watch.ts b/src/watch/watch.ts index 000183491e4..67743ea9a50 100644 --- a/src/watch/watch.ts +++ b/src/watch/watch.ts @@ -1,4 +1,5 @@ import { resolve } from 'path'; +import process from 'process'; import { createFilter } from '@rollup/pluginutils'; import { rollupInternal } from '../rollup/rollup'; import type {