Skip to content

Commit b7ccba7

Browse files
Improved generated npm package.json
1 parent 0be57df commit b7ccba7

File tree

6 files changed

+22
-6
lines changed

6 files changed

+22
-6
lines changed

typescript-generator-core/src/main/java/cz/habarta/typescript/generator/Settings.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ public class Settings {
6262
public boolean generateNpmPackageJson = false;
6363
public String npmName = null;
6464
public String npmVersion = null;
65+
public Map<String, String> npmPackageDependencies = new LinkedHashMap<>();
66+
public String typescriptVersion = "2.2.2";
6567
public boolean displaySerializerWarning = true;
6668
public boolean disableJackson2ModuleDiscovery = false;
6769
public ClassLoader classLoader = null;
@@ -157,6 +159,9 @@ public void validate() {
157159
reportConfigurationChange(extensionName, "restOptionsType", features.restOptionsType);
158160
setRestOptionsType(features.restOptionsType);
159161
}
162+
if (features.npmPackageDependencies != null) {
163+
npmPackageDependencies.putAll(features.npmPackageDependencies);
164+
}
160165
if (features.overridesStringEnums) {
161166
defaultStringEnumsOverriddenByExtension = true;
162167
}

typescript-generator-core/src/main/java/cz/habarta/typescript/generator/TypeScriptGenerator.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,12 @@ private void generateNpmPackageJson(Output output) {
6565
npmPackageJson.name = settings.npmName;
6666
npmPackageJson.version = settings.npmVersion;
6767
npmPackageJson.types = outputFile.getName();
68-
npmPackageJson.main = settings.outputFileType == TypeScriptFileType.implementationFile
69-
? Utils.replaceExtension(outputFile, ".js").getName()
70-
: null;
68+
if (settings.outputFileType == TypeScriptFileType.implementationFile) {
69+
npmPackageJson.main = Utils.replaceExtension(outputFile, ".js").getName();
70+
npmPackageJson.dependencies = !settings.npmPackageDependencies.isEmpty() ? settings.npmPackageDependencies : null;
71+
npmPackageJson.devDependencies = Collections.singletonMap("typescript", settings.typescriptVersion);
72+
npmPackageJson.scripts = Collections.singletonMap("prepublish", "tsc --module umd --moduleResolution node --sourceMap " + outputFile.getName());
73+
}
7174
getNpmPackageJsonEmitter().emit(npmPackageJson, npmOutput.getWriter(), npmOutput.getName(), npmOutput.shouldCloseWriter());
7275
}
7376
}

typescript-generator-core/src/main/java/cz/habarta/typescript/generator/emitter/EmitterExtensionFeatures.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11

22
package cz.habarta.typescript.generator.emitter;
33

4+
import java.util.Map;
5+
46

57
public class EmitterExtensionFeatures {
68

@@ -9,6 +11,7 @@ public class EmitterExtensionFeatures {
911
public boolean generatesJaxrsApplicationClient = false;
1012
public String restResponseType = null;
1113
public String restOptionsType = null;
14+
public Map<String, String> npmPackageDependencies = null;
1215
public boolean overridesStringEnums = false;
1316

1417
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11

22
package cz.habarta.typescript.generator.emitter;
33

4+
import java.util.Map;
5+
46

57
public class NpmPackageJson {
68

79
public String name;
810
public String version;
911
public String types;
1012
public String main;
13+
public Map<String, String> dependencies;
14+
public Map<String, String> devDependencies;
15+
public Map<String, String> scripts;
1116

1217
}

typescript-generator-core/src/main/java/cz/habarta/typescript/generator/ext/AxiosClientExtension.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@ public EmitterExtensionFeatures getFeatures() {
1919
features.generatesRuntimeCode = true;
2020
features.generatesModuleCode = true;
2121
features.generatesJaxrsApplicationClient = true;
22-
features.restResponseType = "Axios.Promise<Axios.GenericAxiosResponse<R>>";
22+
features.restResponseType = "Promise<Axios.GenericAxiosResponse<R>>";
2323
features.restOptionsType = "<O>";
24+
features.npmPackageDependencies = Collections.singletonMap("axios", "0.16.0");
2425
return features;
2526
}
2627

typescript-generator-core/src/test/java/cz/habarta/typescript/generator/ext/AxiosClientExtensionTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ public void test() {
2424
settings.jaxrsNamespacing = JaxrsNamespacing.perResource;
2525
settings.extensions.add(new AxiosClientExtension());
2626
final String output = new TypeScriptGenerator(settings).generateTypeScript(Input.from(JaxrsApplicationTest.OrganizationApplication.class));
27-
System.out.println(output);
2827
final String errorMessage = "Unexpected output: " + output;
2928

3029
Assert.assertTrue(errorMessage, output.contains("interface Organization"));
@@ -34,7 +33,7 @@ public void test() {
3433

3534
Assert.assertTrue(errorMessage, output.contains("class OrganizationsResourceClient<O>"));
3635
Assert.assertTrue(errorMessage, output.contains("class PersonResourceClient<O>"));
37-
Assert.assertTrue(errorMessage, output.contains("type RestResponse<R> = Axios.Promise<Axios.GenericAxiosResponse<R>>"));
36+
Assert.assertTrue(errorMessage, output.contains("type RestResponse<R> = Promise<Axios.GenericAxiosResponse<R>>"));
3837

3938
Assert.assertTrue(errorMessage, output.contains("class AxiosHttpClient implements HttpClient<Axios.AxiosRequestConfig>"));
4039
Assert.assertTrue(errorMessage, output.contains("request(requestConfig: { method: string; url: string; queryParams?: any; data?: any; options?: Axios.AxiosRequestConfig; }): RestResponse<any>"));

0 commit comments

Comments
 (0)