Skip to content

Commit 1018b6a

Browse files
committed
Updates for v0.0.5
1 parent cc8ffab commit 1018b6a

9 files changed

+98
-23
lines changed

README.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
Queries a Visual Studio project file (.csproj, .vbproj, .njsproj, etc.) for TypeScript configuration information. Will also find default config in a `Microsoft.TypeScript.Default.props` file, if referenced by the project.
44

5-
Tested with new project configuration settings in TypeScript 1.5.3.
5+
Visual Studio TypeScript settings are documented on the TypeScript wiki [here](https://github.com/Microsoft/TypeScript/wiki/Setting-Compiler-Options-in-MSBuild-projects).
6+
7+
Tested with new project configuration settings in TypeScript 1.6.2.
68

79
## Install
810

csproj2ts.d.ts

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
declare module csproj2ts {
2+
const DEFAULT_TYPESCRIPT_VERSION: string;
3+
interface TypeScriptSettings extends TypeScriptConfiguration {
4+
VSProjectDetails?: VSProjectDetails;
5+
files?: string[];
6+
}
7+
interface VSProjectParams {
8+
ProjectFileName?: string;
9+
MSBuildExtensionsPath32?: string;
10+
VisualStudioVersion?: string;
11+
TypeScriptVersion?: string;
12+
ActiveConfiguration?: string;
13+
}
14+
interface VSProjectDetails extends VSProjectParams {
15+
DefaultProjectConfiguration?: string;
16+
DefaultVisualStudioVersion?: string;
17+
TypeScriptDefaultPropsFilePath?: string;
18+
TypeScriptDefaultConfiguration?: TypeScriptConfiguration;
19+
}
20+
interface TypeScriptConfiguration {
21+
AdditionalFlags?: string;
22+
Charset?: string;
23+
CodePage?: string;
24+
CompileBlocked?: boolean;
25+
CompileOnSaveEnabled?: boolean;
26+
EmitBOM?: boolean;
27+
EmitDecoratorMetadata?: boolean;
28+
ExperimentalAsyncFunctions?: boolean;
29+
ExperimentalDecorators?: boolean;
30+
GeneratesDeclarations?: boolean;
31+
InlineSourceMap?: boolean;
32+
InlineSources?: boolean;
33+
IsolatedModules?: boolean;
34+
JSXEmit?: string;
35+
MapRoot?: string;
36+
ModuleKind?: string;
37+
ModuleResolution?: string;
38+
NewLine?: string;
39+
NoEmitOnError?: boolean;
40+
NoEmitHelpers?: boolean;
41+
NoImplicitAny?: boolean;
42+
NoLib?: boolean;
43+
NoResolve?: boolean;
44+
OutFile?: string;
45+
OutDir?: string;
46+
PreserveConstEnums?: boolean;
47+
PreferredUILang?: string;
48+
RemoveComments?: boolean;
49+
RootDir?: boolean;
50+
SourceMap?: boolean;
51+
SourceRoot?: string;
52+
SuppressImplicitAnyIndexErrors?: boolean;
53+
SuppressExcessPropertyErrors?: boolean;
54+
Target?: string;
55+
}
56+
const fixVersion: (version: string) => string;
57+
var xml2jsReadXMLFile: (fileName: string) => Promise<any>;
58+
var getTypeScriptSettings: (projectInfo: VSProjectParams) => Promise<TypeScriptSettings>;
59+
var normalizePath: (path: string, settings: TypeScriptSettings) => string;
60+
var getTypeScriptDefaultsFromPropsFileOrDefaults: (settings: TypeScriptSettings) => Promise<TypeScriptConfiguration>;
61+
var programFiles: () => string;
62+
}
63+
export = csproj2ts;

csproj2ts.js

+12-9
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
var fs = require('fs');
22
var xml2js = require('xml2js');
3-
var _ = require("lodash");
4-
var path = require("path");
5-
var _PromiseLibrary = require('es6-promise');
6-
var Promise = _PromiseLibrary.Promise;
3+
var _ = require('lodash');
4+
var path = require('path');
5+
var es6_promise_1 = require('es6-promise');
76
var semver = require('semver');
87
var csproj2ts;
98
(function (csproj2ts) {
10-
csproj2ts.DEFAULT_TYPESCRIPT_VERSION = "1.5.3";
9+
csproj2ts.DEFAULT_TYPESCRIPT_VERSION = "1.6.2";
1110
var cboolean = function (value) {
1211
return (typeof value === 'string') ? (value.toLowerCase() === 'true') : value;
1312
};
@@ -60,7 +59,7 @@ var csproj2ts;
6059
return result;
6160
};
6261
csproj2ts.xml2jsReadXMLFile = function (fileName) {
63-
return new Promise(function (resolve, reject) {
62+
return new es6_promise_1.Promise(function (resolve, reject) {
6463
var parser = new xml2js.Parser();
6564
parser.addListener('end', function (parsedXMLFileResult) {
6665
resolve(parsedXMLFileResult);
@@ -79,7 +78,7 @@ var csproj2ts;
7978
if (!projectInfo.MSBuildExtensionsPath32) {
8079
projectInfo.MSBuildExtensionsPath32 = path.join(csproj2ts.programFiles(), "/MSBuild/");
8180
}
82-
return new Promise(function (resolve, reject) {
81+
return new es6_promise_1.Promise(function (resolve, reject) {
8382
csproj2ts.xml2jsReadXMLFile(projectInfo.ProjectFileName).then(function (parsedVSProject) {
8483
if (!parsedVSProject || !parsedVSProject.Project) {
8584
reject(new Error("No result from parsing the project."));
@@ -107,13 +106,16 @@ var csproj2ts;
107106
CompileOnSaveEnabled: cboolean(getTSSetting(project, "CompileOnSaveEnabled", projectActiveConfig, undefined)),
108107
EmitBOM: cboolean(getTSSetting(project, "EmitBOM", projectActiveConfig, undefined)),
109108
EmitDecoratorMetadata: cboolean(getTSSetting(project, "EmitDecoratorMetadata", projectActiveConfig, undefined)),
109+
ExperimentalAsyncFunctions: cboolean(getTSSetting(project, "ExperimentalAsyncFunctions", projectActiveConfig, undefined)),
110110
ExperimentalDecorators: cboolean(getTSSetting(project, "ExperimentalDecorators", projectActiveConfig, undefined)),
111111
GeneratesDeclarations: cboolean(getTSSetting(project, "GeneratesDeclarations", projectActiveConfig, undefined)),
112112
InlineSourceMap: cboolean(getTSSetting(project, "InlineSourceMap", projectActiveConfig, undefined)),
113113
InlineSources: cboolean(getTSSetting(project, "InlineSources", projectActiveConfig, undefined)),
114114
IsolatedModules: cboolean(getTSSetting(project, "IsolatedModules", projectActiveConfig, undefined)),
115+
JSXEmit: getTSSetting(project, "JSXEmit", projectActiveConfig, undefined),
115116
MapRoot: getTSSetting(project, "MapRoot", projectActiveConfig, undefined),
116117
ModuleKind: getTSSetting(project, "ModuleKind", projectActiveConfig, undefined),
118+
ModuleResolution: getTSSetting(project, "ModuleResolution", projectActiveConfig, undefined),
117119
NewLine: getTSSetting(project, "NewLine", projectActiveConfig, undefined),
118120
NoEmitOnError: cboolean(getTSSetting(project, "NoEmitOnError", projectActiveConfig, undefined)),
119121
NoEmitHelpers: cboolean(getTSSetting(project, "NoEmitHelpers", projectActiveConfig, undefined)),
@@ -129,6 +131,7 @@ var csproj2ts;
129131
SourceMap: cboolean(getTSSetting(project, "SourceMap", projectActiveConfig, undefined)),
130132
SourceRoot: getTSSetting(project, "SourceRoot", projectActiveConfig, undefined),
131133
SuppressImplicitAnyIndexErrors: cboolean(getTSSetting(project, "SuppressImplicitAnyIndexErrors", projectActiveConfig, undefined)),
134+
SuppressExcessPropertyErrors: cboolean(getTSSetting(project, "SuppressExcessPropertyErrors", projectActiveConfig, undefined)),
132135
Target: getTSSetting(project, "Target", projectActiveConfig, undefined)
133136
};
134137
csproj2ts.getTypeScriptDefaultsFromPropsFileOrDefaults(result)
@@ -255,7 +258,7 @@ var csproj2ts;
255258
};
256259
var minimumVisualStudioVersion = 10;
257260
var findPropsFileName = function (settings) {
258-
return new Promise(function (resolve, reject) {
261+
return new es6_promise_1.Promise(function (resolve, reject) {
259262
var propsFileName = csproj2ts.normalizePath(settings.VSProjectDetails.TypeScriptDefaultPropsFilePath, settings);
260263
if (fs.existsSync(propsFileName)) {
261264
resolve(propsFileName);
@@ -274,7 +277,7 @@ var csproj2ts;
274277
});
275278
};
276279
csproj2ts.getTypeScriptDefaultsFromPropsFileOrDefaults = function (settings) {
277-
return new Promise(function (resolve, reject) {
280+
return new es6_promise_1.Promise(function (resolve, reject) {
278281
findPropsFileName(settings).then(function (propsFileName) {
279282
csproj2ts.xml2jsReadXMLFile(propsFileName).then(function (parsedPropertiesFile) {
280283
if (!parsedPropertiesFile || !parsedPropertiesFile.Project || !parsedPropertiesFile.Project.PropertyGroup) {

0 commit comments

Comments
 (0)