@@ -6014,67 +6014,19 @@ declare namespace ts {
60146014 isSourceFileFromExternalLibrary(file: SourceFile): boolean;
60156015 isSourceFileDefaultLibrary(file: SourceFile): boolean;
60166016 /**
6017- * Calculates the final resolution mode for a given module reference node. This function only returns a result when module resolution
6018- * settings allow differing resolution between ESM imports and CJS requires, or when a mode is explicitly provided via import attributes,
6019- * which cause an `import` or `require` condition to be used during resolution regardless of module resolution settings. In absence of
6020- * overriding attributes, and in modes that support differing resolution, the result indicates the syntax the usage would emit to JavaScript.
6021- * Some examples:
6022- *
6023- * ```ts
6024- * // tsc foo.mts --module nodenext
6025- * import {} from "mod";
6026- * // Result: ESNext - the import emits as ESM due to `impliedNodeFormat` set by .mts file extension
6027- *
6028- * // tsc foo.cts --module nodenext
6029- * import {} from "mod";
6030- * // Result: CommonJS - the import emits as CJS due to `impliedNodeFormat` set by .cts file extension
6031- *
6032- * // tsc foo.ts --module preserve --moduleResolution bundler
6033- * import {} from "mod";
6034- * // Result: ESNext - the import emits as ESM due to `--module preserve` and `--moduleResolution bundler`
6035- * // supports conditional imports/exports
6036- *
6037- * // tsc foo.ts --module preserve --moduleResolution node10
6038- * import {} from "mod";
6039- * // Result: undefined - the import emits as ESM due to `--module preserve`, but `--moduleResolution node10`
6040- * // does not support conditional imports/exports
6041- *
6042- * // tsc foo.ts --module commonjs --moduleResolution node10
6043- * import type {} from "mod" with { "resolution-mode": "import" };
6044- * // Result: ESNext - conditional imports/exports always supported with "resolution-mode" attribute
6045- * ```
6017+ * Calculates the final resolution mode for a given module reference node. This is the resolution mode explicitly provided via import
6018+ * attributes, if present, or the syntax the usage would have if emitted to JavaScript. In `--module node16` or `nodenext`, this may
6019+ * depend on the file's `impliedNodeFormat`. In `--module preserve`, it depends only on the input syntax of the reference. In other
6020+ * `module` modes, when overriding import attributes are not provided, this function returns `undefined`, as the result would have no
6021+ * impact on module resolution, emit, or type checking.
60466022 */
60476023 getModeForUsageLocation(file: SourceFile, usage: StringLiteralLike): ResolutionMode;
60486024 /**
6049- * Calculates the final resolution mode for an import at some index within a file's `imports` list. This function only returns a result
6050- * when module resolution settings allow differing resolution between ESM imports and CJS requires, or when a mode is explicitly provided
6051- * via import attributes, which cause an `import` or `require` condition to be used during resolution regardless of module resolution
6052- * settings. In absence of overriding attributes, and in modes that support differing resolution, the result indicates the syntax the
6053- * usage would emit to JavaScript. Some examples:
6054- *
6055- * ```ts
6056- * // tsc foo.mts --module nodenext
6057- * import {} from "mod";
6058- * // Result: ESNext - the import emits as ESM due to `impliedNodeFormat` set by .mts file extension
6059- *
6060- * // tsc foo.cts --module nodenext
6061- * import {} from "mod";
6062- * // Result: CommonJS - the import emits as CJS due to `impliedNodeFormat` set by .cts file extension
6063- *
6064- * // tsc foo.ts --module preserve --moduleResolution bundler
6065- * import {} from "mod";
6066- * // Result: ESNext - the import emits as ESM due to `--module preserve` and `--moduleResolution bundler`
6067- * // supports conditional imports/exports
6068- *
6069- * // tsc foo.ts --module preserve --moduleResolution node10
6070- * import {} from "mod";
6071- * // Result: undefined - the import emits as ESM due to `--module preserve`, but `--moduleResolution node10`
6072- * // does not support conditional imports/exports
6073- *
6074- * // tsc foo.ts --module commonjs --moduleResolution node10
6075- * import type {} from "mod" with { "resolution-mode": "import" };
6076- * // Result: ESNext - conditional imports/exports always supported with "resolution-mode" attribute
6077- * ```
6025+ * Calculates the final resolution mode for an import at some index within a file's `imports` list. This is the resolution mode
6026+ * explicitly provided via import attributes, if present, or the syntax the usage would have if emitted to JavaScript. In
6027+ * `--module node16` or `nodenext`, this may depend on the file's `impliedNodeFormat`. In `--module preserve`, it depends only on the
6028+ * input syntax of the reference. In other `module` modes, when overriding import attributes are not provided, this function returns
6029+ * `undefined`, as the result would have no impact on module resolution, emit, or type checking.
60786030 */
60796031 getModeForResolutionAtIndex(file: SourceFile, index: number): ResolutionMode;
60806032 getProjectReferences(): readonly ProjectReference[] | undefined;
@@ -9427,43 +9379,24 @@ declare namespace ts {
94279379 function getModeForResolutionAtIndex(file: SourceFile, index: number, compilerOptions: CompilerOptions): ResolutionMode;
94289380 /**
94299381 * Use `program.getModeForUsageLocation`, which retrieves the correct `compilerOptions`, instead of this function whenever possible.
9430- * Calculates the final resolution mode for a given module reference node. This function only returns a result when module resolution
9431- * settings allow differing resolution between ESM imports and CJS requires, or when a mode is explicitly provided via import attributes,
9432- * which cause an `import` or `require` condition to be used during resolution regardless of module resolution settings. In absence of
9433- * overriding attributes, and in modes that support differing resolution, the result indicates the syntax the usage would emit to JavaScript.
9434- * Some examples:
9435- *
9436- * ```ts
9437- * // tsc foo.mts --module nodenext
9438- * import {} from "mod";
9439- * // Result: ESNext - the import emits as ESM due to `impliedNodeFormat` set by .mts file extension
9440- *
9441- * // tsc foo.cts --module nodenext
9442- * import {} from "mod";
9443- * // Result: CommonJS - the import emits as CJS due to `impliedNodeFormat` set by .cts file extension
9444- *
9445- * // tsc foo.ts --module preserve --moduleResolution bundler
9446- * import {} from "mod";
9447- * // Result: ESNext - the import emits as ESM due to `--module preserve` and `--moduleResolution bundler`
9448- * // supports conditional imports/exports
9449- *
9450- * // tsc foo.ts --module preserve --moduleResolution node10
9451- * import {} from "mod";
9452- * // Result: undefined - the import emits as ESM due to `--module preserve`, but `--moduleResolution node10`
9453- * // does not support conditional imports/exports
9454- *
9455- * // tsc foo.ts --module commonjs --moduleResolution node10
9456- * import type {} from "mod" with { "resolution-mode": "import" };
9457- * // Result: ESNext - conditional imports/exports always supported with "resolution-mode" attribute
9458- * ```
9459- *
9382+ * Calculates the final resolution mode for a given module reference node. This is the resolution mode explicitly provided via import
9383+ * attributes, if present, or the syntax the usage would have if emitted to JavaScript. In `--module node16` or `nodenext`, this may
9384+ * depend on the file's `impliedNodeFormat`. In `--module preserve`, it depends only on the input syntax of the reference. In other
9385+ * `module` modes, when overriding import attributes are not provided, this function returns `undefined`, as the result would have no
9386+ * impact on module resolution, emit, or type checking.
94609387 * @param file The file the import or import-like reference is contained within
94619388 * @param usage The module reference string
94629389 * @param compilerOptions The compiler options for the program that owns the file. If the file belongs to a referenced project, the compiler options
94639390 * should be the options of the referenced project, not the referencing project.
94649391 * @returns The final resolution mode of the import
94659392 */
9466- function getModeForUsageLocation(file: SourceFile, usage: StringLiteralLike, compilerOptions: CompilerOptions): ResolutionMode;
9393+ function getModeForUsageLocation(
9394+ file: {
9395+ impliedNodeFormat?: ResolutionMode;
9396+ },
9397+ usage: StringLiteralLike,
9398+ compilerOptions: CompilerOptions,
9399+ ): ModuleKind.CommonJS | ModuleKind.ESNext | undefined;
94679400 function getConfigFileParsingDiagnostics(configFileParseResult: ParsedCommandLine): readonly Diagnostic[];
94689401 /**
94699402 * A function for determining if a given file is esm or cjs format, assuming modern node module resolution rules, as configured by the
0 commit comments