Skip to content

Commit 6533c9a

Browse files
committed
emit types import
1 parent 05f26bb commit 6533c9a

File tree

21 files changed

+177
-30
lines changed

21 files changed

+177
-30
lines changed

jscomp/gentype/EmitType.ml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,17 @@ let generatedFilesExtension ~(config : Config.t) =
2020
Filename.remove_extension s
2121
| None -> ".gen"
2222

23-
let outputFileSuffix ~(config : Config.t) =
23+
let outputFileSuffix ~(config : Config.t) ?(moduleExtension = ".tsx") () =
2424
match config.generatedFileExtension with
2525
| Some s when Filename.extension s <> "" (* double extension *) -> s
26-
| _ -> generatedFilesExtension ~config ^ ".tsx"
26+
| _ -> generatedFilesExtension ~config ^ moduleExtension
27+
28+
let generatedModuleExtension ~(config : Config.t) =
29+
match config.moduleResolution with
30+
| Node -> generatedFilesExtension ~config
31+
| Node16 -> outputFileSuffix ~config ~moduleExtension:".js" ()
32+
| Bundler -> outputFileSuffix ~config ()
2733

28-
let generatedModuleExtension ~config = generatedFilesExtension ~config
2934
let shimExtension = ".shim.ts"
3035

3136
let interfaceName ~(config : Config.t) name =

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.outputFileSuffix ~config
32+
(cmt |> handleNamespace) ^ EmitType.outputFileSuffix ~config ()
3333

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

jscomp/gentype_tests/typescript-react-example/package-lock.json

Lines changed: 26 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jscomp/gentype_tests/typescript-res-bundler/bsconfig.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"gentypeconfig": {
33
"language": "typescript",
44
"module": "es6",
5-
"moduleResolution": "node16",
5+
"moduleResolution": "bundler",
66
"importPath": "relative",
77
"debug": {
88
"all": false

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

Lines changed: 14 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jscomp/gentype_tests/typescript-res-bundler/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "typescript-res-node16",
2+
"name": "typescript-res-bundler",
33
"version": "0.1.0",
44
"private": true,
55
"dependencies": {

jscomp/gentype_tests/typescript-res-bundler/src/Bar.bs.js

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/* TypeScript file generated from Bar.res by genType. */
2+
/* eslint-disable import/first */
3+
4+
5+
// @ts-ignore: Implicit any on import
6+
import * as BarBS__Es6Import from './Bar.bs';
7+
const BarBS: any = BarBS__Es6Import;
8+
9+
import type {t as Foo_t} from './Foo.gen.tsx';
10+
11+
export const makeFoo: (_1:{ readonly bar: number }) => Foo_t = BarBS.makeFoo;
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
@genType
22
let makeFoo = (~bar) => {
3-
let foo = Foo.make
4-
{...foo, bar}
3+
open Foo
4+
{...make(), bar}
55
}

jscomp/gentype_tests/typescript-res-bundler/src/Foo.bs.js

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/* TypeScript file generated from Foo.res by genType. */
2+
/* eslint-disable import/first */
3+
4+
5+
// @ts-ignore: Implicit any on import
6+
import * as FooBS__Es6Import from './Foo.bs';
7+
const FooBS: any = FooBS__Es6Import;
8+
9+
// tslint:disable-next-line:interface-over-type-literal
10+
export type t = { readonly foo: number; readonly bar: number };
11+
12+
export const make: () => t = FooBS.make;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
type t = {foo: int, bar: int}
33

44
@genType
5-
let make = () => {foo: 0, bar: int}
5+
let make = () => {foo: 0, bar: 0}

jscomp/gentype_tests/typescript-res-bundler/tsconfig.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
"target": "esnext",
44
"module": "esnext",
55
"moduleResolution": "bundler",
6+
"allowImportingTsExtensions": true,
67
"rootDir": "src",
8+
"jsx": "react",
79
"noEmit": true
810
},
911
"include": [

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

Lines changed: 11 additions & 2 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.bs.js

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/* TypeScript file generated from Bar.res by genType. */
2+
/* eslint-disable import/first */
3+
4+
5+
// @ts-ignore: Implicit any on import
6+
import * as BarBS__Es6Import from './Bar.bs';
7+
const BarBS: any = BarBS__Es6Import;
8+
9+
import type {t as Foo_t} from './Foo.gen.js';
10+
11+
export const makeFoo: (_1:{ readonly bar: number }) => Foo_t = BarBS.makeFoo;
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
@genType
22
let makeFoo = (~bar) => {
3-
let foo = Foo.make
4-
{...foo, bar}
3+
open Foo
4+
{...make(), bar}
55
}

jscomp/gentype_tests/typescript-res-node16/src/Foo.bs.js

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/* TypeScript file generated from Foo.res by genType. */
2+
/* eslint-disable import/first */
3+
4+
5+
// @ts-ignore: Implicit any on import
6+
import * as FooBS__Es6Import from './Foo.bs';
7+
const FooBS: any = FooBS__Es6Import;
8+
9+
// tslint:disable-next-line:interface-over-type-literal
10+
export type t = { readonly foo: number; readonly bar: number };
11+
12+
export const make: () => t = FooBS.make;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
type t = {foo: int, bar: int}
33

44
@genType
5-
let make = () => {foo: 0, bar: int}
5+
let make = () => {foo: 0, bar: 0}

jscomp/gentype_tests/typescript-res-node16/tsconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"module": "esnext",
55
"moduleResolution": "node16",
66
"rootDir": "src",
7+
"jsx": "react",
78
"noEmit": true
89
},
910
"include": [

0 commit comments

Comments
 (0)