Skip to content

Commit 26db3de

Browse files
committed
feat(tsfmt): support TypeScript 2.0.6
1 parent b12d86c commit 26db3de

File tree

35 files changed

+449
-491
lines changed

35 files changed

+449
-491
lines changed

lib/formatter.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import * as ts from "typescript";
2-
import { createDefaultFormatCodeOptions } from "./utils";
2+
import { createDefaultFormatCodeSettings } from "./utils";
33

44
// from https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#pretty-printer-using-the-ls-formatter
55

66
// Note: this uses ts.formatting which is part of the typescript 1.4 package but is not currently
77
// exposed in the public typescript.d.ts. The typings should be exposed in the next release.
8-
export default function format(fileName: string, text: string, options = createDefaultFormatCodeOptions()) {
8+
export default function format(fileName: string, text: string, options = createDefaultFormatCodeSettings()) {
99

1010
// Parse the source text
1111
let sourceFile = ts.createSourceFile(fileName, text, ts.ScriptTarget.Latest, true);
@@ -16,11 +16,11 @@ export default function format(fileName: string, text: string, options = createD
1616
// Apply the edits on the input code
1717
return applyEdits(text, edits);
1818

19-
function getRuleProvider(options: ts.FormatCodeOptions) {
19+
function getRuleProvider(settings: ts.FormatCodeSettings) {
2020
// Share this between multiple formatters using the same options.
2121
// This represents the bulk of the space the formatter uses.
2222
let ruleProvider = new (ts as any).formatting.RulesProvider();
23-
ruleProvider.ensureUpToDate(options);
23+
ruleProvider.ensureUpToDate(settings);
2424
return ruleProvider;
2525
}
2626

lib/index.ts

+23-23
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as ts from "typescript";
22
import formatter from "./formatter";
3-
import { createDefaultFormatCodeOptions, parseJSON } from "./utils";
3+
import { createDefaultFormatCodeSettings, parseJSON } from "./utils";
44

55
export { parseJSON };
66

@@ -24,11 +24,11 @@ export interface Options {
2424
}
2525

2626
export interface OptionModifier {
27-
(fileName: string, opts: Options, formatOptions: ts.FormatCodeOptions): ts.FormatCodeOptions | Promise<ts.FormatCodeOptions>;
27+
(fileName: string, opts: Options, formatSettings: ts.FormatCodeSettings): ts.FormatCodeSettings | Promise<ts.FormatCodeSettings>;
2828
}
2929

3030
export interface PostProcessor {
31-
(fileName: string, formattedCode: string, opts: Options, formatOptions: ts.FormatCodeOptions): string | Promise<string>;
31+
(fileName: string, formattedCode: string, opts: Options, formatSettings: ts.FormatCodeSettings): string | Promise<string>;
3232
}
3333

3434
class Processor {
@@ -39,34 +39,34 @@ class Processor {
3939
this.optionModifiers.push(modifier);
4040
}
4141

42-
processFormatCodeOptions(fileName: string, opts: Options, formatOptions: ts.FormatCodeOptions): Promise<ts.FormatCodeOptions> {
42+
processFormatCodeOptions(fileName: string, opts: Options, formatSettings: ts.FormatCodeSettings): Promise<ts.FormatCodeSettings> {
4343
let optionModifiers = [...this.optionModifiers];
4444

45-
let next = (formatOptions: ts.FormatCodeOptions): Promise<ts.FormatCodeOptions> => {
45+
let next = (formatSettings: ts.FormatCodeSettings): Promise<ts.FormatCodeSettings> => {
4646
if (optionModifiers.length === 0) {
47-
return Promise.resolve(formatOptions);
47+
return Promise.resolve(formatSettings);
4848
}
49-
let modifier = optionModifiers.shift()!;
50-
let ret = modifier(fileName, opts, formatOptions);
51-
return Promise.resolve(ret).then(formatOptions => next(formatOptions));
49+
let modifier = optionModifiers.shift() !;
50+
let ret = modifier(fileName, opts, formatSettings);
51+
return Promise.resolve(ret).then(formatSettings => next(formatSettings));
5252
};
5353

54-
return next(formatOptions);
54+
return next(formatSettings);
5555
}
5656

5757
addPostProcess(postProcessor: PostProcessor) {
5858
this.postProcessors.push(postProcessor);
5959
}
6060

61-
postProcess(fileName: string, formattedCode: string, opts: Options, formatOptions: ts.FormatCodeOptions): Promise<string> {
61+
postProcess(fileName: string, formattedCode: string, opts: Options, formatSettings: ts.FormatCodeSettings): Promise<string> {
6262
let postProcessors = [...this.postProcessors];
6363

6464
let next = (formattedCode: string): Promise<string> => {
6565
if (postProcessors.length === 0) {
6666
return Promise.resolve(formattedCode);
6767
}
68-
let processor = postProcessors.shift()!;
69-
let ret = processor(fileName, formattedCode, opts, formatOptions);
68+
let processor = postProcessors.shift() !;
69+
let ret = processor(fileName, formattedCode, opts, formatSettings);
7070
return Promise.resolve(ret).then(formattedCode => next(formattedCode));
7171
};
7272

@@ -80,7 +80,7 @@ export interface ResultMap {
8080

8181
export interface Result {
8282
fileName: string;
83-
options: ts.FormatCodeOptions | null;
83+
settings: ts.FormatCodeSettings | null;
8484
message: string;
8585
error: boolean;
8686
src: string;
@@ -94,7 +94,7 @@ export function processFiles(files: string[], opts: Options): Promise<ResultMap>
9494
if (!fs.existsSync(fileName)) {
9595
let result: Result = {
9696
fileName: fileName,
97-
options: null,
97+
settings: null,
9898
message: `${fileName} does not exist. process abort.\n`,
9999
error: true,
100100
src: "",
@@ -148,19 +148,19 @@ export function processString(fileName: string, content: string, opts: Options):
148148
processor.addOptionModify(tslintjson);
149149
processor.addPostProcess(tslintPostProcess);
150150
}
151-
processor.addPostProcess((_fileName: string, formattedCode: string, _opts: Options, formatOptions: ts.FormatCodeOptions) => {
151+
processor.addPostProcess((_fileName: string, formattedCode: string, _opts: Options, formatSettings: ts.FormatCodeSettings) => {
152152
// replace newline code. maybe NewLineCharacter params affect to only "new" newline by language service.
153-
formattedCode = formattedCode.replace(/\r?\n/g, formatOptions.NewLineCharacter);
153+
formattedCode = formattedCode.replace(/\r?\n/g, formatSettings.newLineCharacter || "\n");
154154
return Promise.resolve(formattedCode);
155155
});
156156

157-
let formatOptions = createDefaultFormatCodeOptions();
158-
return processor.processFormatCodeOptions(fileName, opts, formatOptions)
159-
.then(formatOptions => {
160-
let formattedCode = formatter(fileName, content, formatOptions);
157+
let formatSettings = createDefaultFormatCodeSettings();
158+
return processor.processFormatCodeOptions(fileName, opts, formatSettings)
159+
.then(formatSettings => {
160+
let formattedCode = formatter(fileName, content, formatSettings);
161161

162162
// apply post process logic
163-
return processor.postProcess(fileName, formattedCode, opts, formatOptions);
163+
return processor.postProcess(fileName, formattedCode, opts, formatSettings);
164164

165165
}).then(formattedCode => {
166166
let message = "";
@@ -181,7 +181,7 @@ export function processString(fileName: string, content: string, opts: Options):
181181

182182
let result: Result = {
183183
fileName: fileName,
184-
options: formatOptions,
184+
settings: formatSettings,
185185
message: message,
186186
error: error,
187187
src: content,

lib/provider/base.ts

+19-19
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,11 @@ interface TsfmtSettings {
3636
convertTabsToSpaces?: boolean;
3737
}
3838

39-
export default function makeFormatCodeOptions(fileName: string, opts: Options, formatOptions: ts.FormatCodeOptions): ts.FormatCodeOptions {
39+
export default function makeFormatCodeOptions(fileName: string, opts: Options, formatSettings: ts.FormatCodeSettings): ts.FormatCodeSettings {
4040
let baseDir = opts.baseDir ? path.resolve(opts.baseDir) : path.dirname(path.resolve(fileName));
4141
let configFileName = getConfigFileName(baseDir, "tsfmt.json");
4242
if (!configFileName) {
43-
return formatOptions;
43+
return formatSettings;
4444
}
4545

4646
if (opts.verbose) {
@@ -49,52 +49,52 @@ export default function makeFormatCodeOptions(fileName: string, opts: Options, f
4949

5050
let config: TsfmtSettings = parseJSON(fs.readFileSync(configFileName, "utf-8"));
5151
if (typeof config.insertSpaceAfterCommaDelimiter === "boolean") {
52-
formatOptions.InsertSpaceAfterCommaDelimiter = config.insertSpaceAfterCommaDelimiter;
52+
formatSettings.insertSpaceAfterCommaDelimiter = config.insertSpaceAfterCommaDelimiter;
5353
}
5454
if (typeof config.insertSpaceAfterSemicolonInForStatements === "boolean") {
55-
formatOptions.InsertSpaceAfterSemicolonInForStatements = config.insertSpaceAfterSemicolonInForStatements;
55+
formatSettings.insertSpaceAfterSemicolonInForStatements = config.insertSpaceAfterSemicolonInForStatements;
5656
}
5757
if (typeof config.insertSpaceBeforeAndAfterBinaryOperators === "boolean") {
58-
formatOptions.InsertSpaceBeforeAndAfterBinaryOperators = config.insertSpaceBeforeAndAfterBinaryOperators;
58+
formatSettings.insertSpaceBeforeAndAfterBinaryOperators = config.insertSpaceBeforeAndAfterBinaryOperators;
5959
}
6060
if (typeof config.insertSpaceAfterKeywordsInControlFlowStatements === "boolean") {
61-
formatOptions.InsertSpaceAfterKeywordsInControlFlowStatements = config.insertSpaceAfterKeywordsInControlFlowStatements;
61+
formatSettings.insertSpaceAfterKeywordsInControlFlowStatements = config.insertSpaceAfterKeywordsInControlFlowStatements;
6262
}
6363
if (typeof config.insertSpaceAfterFunctionKeywordForAnonymousFunctions === "boolean") {
64-
formatOptions.InsertSpaceAfterFunctionKeywordForAnonymousFunctions = config.insertSpaceAfterFunctionKeywordForAnonymousFunctions;
64+
formatSettings.insertSpaceAfterFunctionKeywordForAnonymousFunctions = config.insertSpaceAfterFunctionKeywordForAnonymousFunctions;
6565
}
6666
if (typeof config.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis === "boolean") {
67-
formatOptions.InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis = config.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis;
67+
formatSettings.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis = config.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis;
6868
}
6969
if (typeof config.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets === "boolean") {
70-
formatOptions.InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets = config.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets;
70+
formatSettings.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets = config.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets;
7171
}
7272
if (typeof config.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces === "boolean") {
73-
formatOptions.InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces = config.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces;
73+
formatSettings.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces = config.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces;
7474
}
7575
if (typeof config.placeOpenBraceOnNewLineForFunctions === "boolean") {
76-
formatOptions.PlaceOpenBraceOnNewLineForFunctions = config.placeOpenBraceOnNewLineForFunctions;
76+
formatSettings.placeOpenBraceOnNewLineForFunctions = config.placeOpenBraceOnNewLineForFunctions;
7777
}
7878
if (typeof config.placeOpenBraceOnNewLineForControlBlocks === "boolean") {
79-
formatOptions.PlaceOpenBraceOnNewLineForControlBlocks = config.placeOpenBraceOnNewLineForControlBlocks;
79+
formatSettings.placeOpenBraceOnNewLineForControlBlocks = config.placeOpenBraceOnNewLineForControlBlocks;
8080
}
8181
if (typeof config.indentSize === "number") {
82-
formatOptions.IndentSize = config.indentSize;
82+
formatSettings.indentSize = config.indentSize;
8383
}
8484
if (typeof config.indentStyle === "number") {
85-
formatOptions.IndentStyle = config.indentStyle as number;
85+
formatSettings.indentStyle = config.indentStyle as number;
8686
} else if (typeof config.indentStyle === "string") {
87-
formatOptions.IndentStyle = (ts.IndentStyle as any)[config.indentStyle] as number;
87+
formatSettings.indentStyle = (ts.IndentStyle as any)[config.indentStyle] as number;
8888
}
8989
if (typeof config.tabSize === "number") {
90-
formatOptions.TabSize = config.tabSize;
90+
formatSettings.tabSize = config.tabSize;
9191
}
9292
if (typeof config.newLineCharacter === "string") {
93-
formatOptions.NewLineCharacter = config.newLineCharacter;
93+
formatSettings.newLineCharacter = config.newLineCharacter;
9494
}
9595
if (typeof config.convertTabsToSpaces === "boolean") {
96-
formatOptions.ConvertTabsToSpaces = config.convertTabsToSpaces;
96+
formatSettings.convertTabsToSpaces = config.convertTabsToSpaces;
9797
}
9898

99-
return formatOptions;
99+
return formatSettings;
100100
}

lib/provider/editorconfig.ts

+10-10
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { Options } from "../";
66

77
let emitBaseDirWarning = false;
88

9-
export default function makeFormatCodeOptions(fileName: string, opts: Options, formatOptions: ts.FormatCodeOptions): Promise<ts.FormatCodeOptions> {
9+
export default function makeFormatCodeOptions(fileName: string, opts: Options, formatSettings: ts.FormatCodeSettings): Promise<ts.FormatCodeSettings> {
1010

1111
if (opts.verbose && opts.baseDir && !emitBaseDirWarning) {
1212
console.log("editorconfig is not supported baseDir options");
@@ -17,35 +17,35 @@ export default function makeFormatCodeOptions(fileName: string, opts: Options, f
1717
.parse(fileName)
1818
.then(config => {
1919
if (Object.keys(config).length === 0) {
20-
return formatOptions;
20+
return formatSettings;
2121
}
2222
if (opts.verbose) {
2323
console.log("editorconfig: \n" + "file: " + fileName + "\n" + JSON.stringify(config, null, 2));
2424
}
2525

2626
if (config.indent_style === "tab") {
27-
formatOptions.ConvertTabsToSpaces = false;
27+
formatSettings.convertTabsToSpaces = false;
2828
// if (typeof config.tab_width === "number") {
2929
// options.TabSize = config.tab_width;
3030
// }
3131
} else if (typeof config.indent_size === "number") {
32-
formatOptions.ConvertTabsToSpaces = true;
33-
formatOptions.IndentSize = config.indent_size;
32+
formatSettings.convertTabsToSpaces = true;
33+
formatSettings.indentSize = config.indent_size;
3434
}
3535
if (config.end_of_line === "lf") {
36-
formatOptions.NewLineCharacter = "\n";
36+
formatSettings.newLineCharacter = "\n";
3737
} else if (config.end_of_line === "cr") {
38-
formatOptions.NewLineCharacter = "\r";
38+
formatSettings.newLineCharacter = "\r";
3939
} else if (config.end_of_line === "crlf") {
40-
formatOptions.NewLineCharacter = "\r\n";
40+
formatSettings.newLineCharacter = "\r\n";
4141
}
4242

43-
return formatOptions;
43+
return formatSettings;
4444
});
4545
}
4646

4747

48-
export function postProcess(fileName: string, formattedCode: string, opts: Options, _formatOptions: ts.FormatCodeOptions): Promise<string> {
48+
export function postProcess(fileName: string, formattedCode: string, opts: Options, _formatSettings: ts.FormatCodeSettings): Promise<string> {
4949

5050
if (opts.verbose && opts.baseDir && !emitBaseDirWarning) {
5151
console.log("editorconfig is not supported baseDir options");

lib/provider/tsconfigjson.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -12,27 +12,27 @@ interface TsconfigSettings {
1212
};
1313
}
1414

15-
export default function makeFormatCodeOptions(fileName: string, opts: Options, formatOptions: ts.FormatCodeOptions): ts.FormatCodeOptions {
15+
export default function makeFormatCodeOptions(fileName: string, opts: Options, formatSettings: ts.FormatCodeSettings): ts.FormatCodeSettings {
1616

1717
let baseDir = opts.baseDir ? path.resolve(opts.baseDir) : path.dirname(path.resolve(fileName));
1818
let configFileName = getConfigFileName(baseDir, "tsconfig.json");
1919
if (!configFileName) {
20-
return formatOptions;
20+
return formatSettings;
2121
}
2222
if (opts.verbose) {
2323
console.log(`read ${configFileName} for ${fileName}`);
2424
}
2525

2626
let config: TsconfigSettings = parseJSON(fs.readFileSync(configFileName, "utf-8"));
2727
if (!config.compilerOptions || !config.compilerOptions.newLine) {
28-
return formatOptions;
28+
return formatSettings;
2929
}
3030

3131
if (config.compilerOptions.newLine.toLowerCase() === "crlf") {
32-
formatOptions.NewLineCharacter = "\r\n";
32+
formatSettings.newLineCharacter = "\r\n";
3333
} else if (config.compilerOptions.newLine.toLowerCase() === "lf") {
34-
formatOptions.NewLineCharacter = "\n";
34+
formatSettings.newLineCharacter = "\n";
3535
}
3636

37-
return formatOptions;
37+
return formatSettings;
3838
}

0 commit comments

Comments
 (0)