Skip to content

Commit 6e74321

Browse files
committed
apply moduleResolution to bs imports
1 parent 2dbcf77 commit 6e74321

File tree

13 files changed

+51
-45
lines changed

13 files changed

+51
-45
lines changed

jscomp/gentype/EmitType.ml

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,29 +13,6 @@ let fileHeader ~sourceFile =
1313
~lines:["TypeScript file generated from " ^ sourceFile ^ " by genType."]
1414
^ "/* eslint-disable import/first */\n\n"
1515

16-
let generatedFilesExtension ~(config : Config.t) =
17-
match config.generatedFileExtension with
18-
| Some s ->
19-
(* from .foo.bar to .foo *)
20-
Filename.remove_extension s
21-
| None -> ".gen"
22-
23-
let inputFileSuffix ~(config : Config.t) =
24-
match config.generatedFileExtension with
25-
| Some s when Filename.extension s <> "" (* double extension *) -> s
26-
| _ -> generatedFilesExtension ~config ^ ".tsx"
27-
28-
let outputFileSuffix ~(config : Config.t) =
29-
generatedFilesExtension ~config ^ ".js"
30-
31-
let generatedModuleExtension ~(config : Config.t) =
32-
match config.moduleResolution with
33-
| Node -> generatedFilesExtension ~config
34-
| Node16 -> inputFileSuffix ~config
35-
| Bundler -> outputFileSuffix ~config
36-
37-
let shimExtension = ".shim.ts"
38-
3916
let interfaceName ~(config : Config.t) name =
4017
match config.exportInterfaces with
4118
| true -> "I" ^ name
@@ -395,6 +372,11 @@ let emitRequire ~importedValueOrComponent ~early ~emitters ~(config : Config.t)
395372
| true -> "// tslint:disable-next-line:no-var-requires\n"
396373
| false -> "// @ts-ignore: Implicit any on import\n"
397374
in
375+
let importPath =
376+
match config.moduleResolution with
377+
| Node -> importPath |> ImportPath.chopExtensionSafe (* for backward compatibility *)
378+
| _ -> importPath
379+
in
398380
match config.module_ with
399381
| ES6 when not importedValueOrComponent ->
400382
let moduleNameString = ModuleName.toString moduleName in

jscomp/gentype/GenTypeConfig.ml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ let default =
4040
projectRoot = "";
4141
shimsMap = ModuleNameMap.empty;
4242
sources = None;
43-
suffix = "";
43+
suffix = ".bs.js";
4444
}
4545

4646
let bsPlatformLib ~config =
@@ -182,9 +182,8 @@ let readConfig ~getBsConfigFile ~namespace =
182182
in
183183
let suffix =
184184
match bsconf |> getStringOption "suffix" with
185-
| Some ".bs.js" -> ".bs"
186185
| Some s -> s
187-
| _ -> ".bs"
186+
| _ -> default.suffix
188187
in
189188
let bsDependencies =
190189
match bsconf |> getOpt "bs-dependencies" with

jscomp/gentype/GenTypeMain.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ let processCmtFile cmt =
104104
let isInterface = Filename.check_suffix cmtFile ".cmti" in
105105
let resolver =
106106
ModuleResolver.createLazyResolver ~config
107-
~extensions:[".res"; EmitType.shimExtension] ~excludeFile:(fun fname ->
107+
~extensions:[".res"; ".shim.ts"] ~excludeFile:(fun fname ->
108108
fname = "React.res" || fname = "ReasonReact.res")
109109
in
110110
let inputCMT, hasGenTypeAnnotations =

jscomp/gentype/ImportPath.ml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,19 @@ let fromModule ~dir ~importExtension moduleName =
1313

1414
let fromStringUnsafe s = ("", s)
1515

16-
let chopExtensionSafe s =
17-
try s |> Filename.chop_extension with Invalid_argument _ -> s
16+
let chopExtensionSafe (dir, s) =
17+
try (dir, s |> Filename.chop_extension) with Invalid_argument _ -> (dir, s)
1818

1919
let dump (dir, s) = NodeFilename.concat dir s
2020

2121
let toCmt ~(config : Config.t) ~outputFileRelative (dir, s) =
2222
let open Filename in
2323
concat
2424
(outputFileRelative |> dirname)
25-
(((dir, s |> chopExtensionSafe) |> dump)
25+
((dir, s) |> chopExtensionSafe |> dump)
2626
^ (match config.namespace with
2727
| None -> ""
2828
| Some name -> "-" ^ name)
29-
^ ".cmt")
29+
^ ".cmt"
3030

3131
let emit (dir, s) = (dir, s) |> dump

jscomp/gentype/ImportPath.mli

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ open GenTypeCommon
33
type t
44

55
val bsCurryPath : config:Config.t -> t
6+
val chopExtensionSafe : t -> t
67
val dump : t -> string
78
val emit : t -> string
89
val fromModule : dir:string -> importExtension:string -> ModuleName.t -> t

jscomp/gentype/ModuleExtension.ml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
open GenTypeCommon
2+
3+
let shimExtension ~(config : Config.t) =
4+
match config.moduleResolution with
5+
| Node -> ".shim"
6+
| Node16 -> ".shim.js"
7+
| Bundler -> ".shim.ts"
8+
9+
let generatedFilesExtension ~(config : Config.t) =
10+
match config.generatedFileExtension with
11+
| Some s ->
12+
(* from .foo.bar to .foo *)
13+
Filename.remove_extension s
14+
| None -> ".gen"
15+
16+
let inputFileSuffix ~(config : Config.t) =
17+
match config.generatedFileExtension with
18+
| Some s when Filename.extension s <> "" (* double extension *) -> s
19+
| _ -> generatedFilesExtension ~config ^ ".tsx"
20+
21+
let outputFileSuffix ~(config : Config.t) =
22+
generatedFilesExtension ~config ^ ".js"
23+
24+
let generatedModuleExtension ~(config : Config.t) =
25+
match config.moduleResolution with
26+
| Node -> generatedFilesExtension ~config
27+
| Node16 -> inputFileSuffix ~config
28+
| Bundler -> outputFileSuffix ~config

jscomp/gentype/ModuleResolver.ml

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ let resolveGeneratedModule ~config ~outputFileRelative ~resolver moduleName =
256256
(moduleName |> ModuleName.toString);
257257
let importPath =
258258
resolveModule ~config
259-
~importExtension:(EmitType.generatedModuleExtension ~config)
259+
~importExtension:(ModuleExtension.generatedModuleExtension ~config)
260260
~outputFileRelative ~resolver ~useBsDependencies:true moduleName
261261
in
262262
if !Debug.moduleResolution then
@@ -272,12 +272,7 @@ let importPathForReasonModuleName ~(config : Config.t) ~outputFileRelative
272272
| shimModuleName ->
273273
if !Debug.moduleResolution then
274274
Log_.item "ShimModuleName: %s\n" (shimModuleName |> ModuleName.toString);
275-
let importExtension =
276-
match config.moduleResolution with
277-
| Node -> ".shim"
278-
| Node16 -> ".shim.js"
279-
| Bundler -> ".shim.ts"
280-
in
275+
let importExtension = ModuleExtension.shimExtension ~config in
281276
let importPath =
282277
resolveModule ~config ~importExtension ~outputFileRelative
283278
~resolver ~useBsDependencies:false shimModuleName

jscomp/gentype/Paths.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ let findNameSpace cmt =
2929
|> keepAfterDash
3030

3131
let getOutputFileRelative ~config cmt =
32-
(cmt |> handleNamespace) ^ EmitType.inputFileSuffix ~config
32+
(cmt |> handleNamespace) ^ ModuleExtension.inputFileSuffix ~config
3333

3434
let getOutputFile ~(config : Config.t) cmt =
3535
Filename.concat config.projectRoot (getOutputFileRelative ~config cmt)

jscomp/gentype_tests/typescript-res-bundler/src/Bar.gen.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33

44

55
// @ts-ignore: Implicit any on import
6-
import * as BarBS__Es6Import from './Bar.bs';
6+
import * as BarBS__Es6Import from './Bar.bs.js';
77
const BarBS: any = BarBS__Es6Import;
88

99
import type {Json_t as Js_Json_t} from '../src/shims/Js.shim.ts';
1010

11-
import type {t as Foo_t} from './Foo.gen.tsx';
11+
import type {t as Foo_t} from './Foo.gen.js';
1212

1313
export const makeFoo: (_1:{ readonly bar: number }) => Foo_t = BarBS.makeFoo;
1414

jscomp/gentype_tests/typescript-res-bundler/src/Foo.gen.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44

55
// @ts-ignore: Implicit any on import
6-
import * as FooBS__Es6Import from './Foo.bs';
6+
import * as FooBS__Es6Import from './Foo.bs.js';
77
const FooBS: any = FooBS__Es6Import;
88

99
// tslint:disable-next-line:interface-over-type-literal

jscomp/gentype_tests/typescript-res-node16/package-lock.json

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jscomp/gentype_tests/typescript-res-node16/src/Bar.gen.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33

44

55
// @ts-ignore: Implicit any on import
6-
import * as BarBS__Es6Import from './Bar.bs';
6+
import * as BarBS__Es6Import from './Bar.bs.js';
77
const BarBS: any = BarBS__Es6Import;
88

99
import type {Json_t as Js_Json_t} from '../src/shims/Js.shim.js';
1010

11-
import type {t as Foo_t} from './Foo.gen.js';
11+
import type {t as Foo_t} from './Foo.gen.tsx';
1212

1313
export const makeFoo: (_1:{ readonly bar: number }) => Foo_t = BarBS.makeFoo;
1414

jscomp/gentype_tests/typescript-res-node16/src/Foo.gen.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44

55
// @ts-ignore: Implicit any on import
6-
import * as FooBS__Es6Import from './Foo.bs';
6+
import * as FooBS__Es6Import from './Foo.bs.js';
77
const FooBS: any = FooBS__Es6Import;
88

99
// tslint:disable-next-line:interface-over-type-literal

0 commit comments

Comments
 (0)