- new transformers interface #76

This commit is contained in:
Eugene Zolenko 2018-04-27 17:16:38 -06:00
parent 9719d2f9a1
commit 7b939304ae
11 changed files with 604 additions and 23 deletions

View File

@ -139,7 +139,7 @@ See explanation for `rollupCommonJSResolveHack` option below.
```js
const keysTransformer = require('ts-transformer-keys/transformer').default;
const transformers = (service) =>
const transformer = (service) =>
{
before: [ keysTransformer(service.getProgram()) ],
after: []
@ -147,7 +147,7 @@ See explanation for `rollupCommonJSResolveHack` option below.
// ...
plugins: [
typescript({ transformers })
typescript({ transformers: [transformer] })
]
```

3
dist/host.d.ts vendored
View File

@ -1,4 +1,5 @@
import * as tsTypes from "typescript";
import { TransformerFactoryCreator } from "./ioptions";
export declare class LanguageServiceHost implements tsTypes.LanguageServiceHost {
private parsedConfig;
private transformers;
@ -6,7 +7,7 @@ export declare class LanguageServiceHost implements tsTypes.LanguageServiceHost
private snapshots;
private versions;
private service?;
constructor(parsedConfig: tsTypes.ParsedCommandLine, transformers: (service: tsTypes.LanguageService) => tsTypes.CustomTransformers | undefined);
constructor(parsedConfig: tsTypes.ParsedCommandLine, transformers: TransformerFactoryCreator[]);
reset(): void;
setLanguageService(service: tsTypes.LanguageService): void;
setSnapshot(fileName: string, data: string): tsTypes.IScriptSnapshot;

3
dist/ioptions.d.ts vendored
View File

@ -1,5 +1,6 @@
import { tsModule } from "./tsproxy";
import * as tsTypes from "typescript";
export declare type TransformerFactoryCreator = (ls: tsTypes.LanguageService) => tsTypes.CustomTransformers;
export interface IOptions {
include: string | string[];
exclude: string | string[];
@ -13,7 +14,7 @@ export interface IOptions {
useTsconfigDeclarationDir: boolean;
typescript: typeof tsModule;
tsconfigOverride: any;
transformers: (service: tsTypes.LanguageService) => tsTypes.CustomTransformers;
transformers: TransformerFactoryCreator[];
tsconfigDefaults: any;
sourceMapCallback: (id: string, map: string) => void;
}

View File

@ -17314,9 +17314,21 @@ var LanguageServiceHost = /** @class */ (function () {
return tsModule.sys.getDirectories(directoryName);
};
LanguageServiceHost.prototype.getCustomTransformers = function () {
if (this.service === undefined || this.transformers === undefined)
if (this.service === undefined || this.transformers === undefined || this.transformers.length === 0)
return undefined;
return this.transformers(this.service);
var transformer = {
before: [],
after: []
};
for (var _i = 0, _a = this.transformers; _i < _a.length; _i++) {
var creator = _a[_i];
var factory = creator(this.service);
if (factory.before)
transformer.before.push.apply(factory.before);
if (factory.after)
transformer.after.push.apply(factory.after);
}
return transformer;
};
return LanguageServiceHost;
}());
@ -19990,7 +20002,7 @@ function typescript(options) {
tsconfig: undefined,
useTsconfigDeclarationDir: false,
tsconfigOverride: {},
transformers: undefined,
transformers: [],
tsconfigDefaults: {},
});
setTypescriptModule(pluginOptions.typescript);

File diff suppressed because one or more lines are too long

View File

@ -17310,9 +17310,21 @@ var LanguageServiceHost = /** @class */ (function () {
return tsModule.sys.getDirectories(directoryName);
};
LanguageServiceHost.prototype.getCustomTransformers = function () {
if (this.service === undefined || this.transformers === undefined)
if (this.service === undefined || this.transformers === undefined || this.transformers.length === 0)
return undefined;
return this.transformers(this.service);
var transformer = {
before: [],
after: []
};
for (var _i = 0, _a = this.transformers; _i < _a.length; _i++) {
var creator = _a[_i];
var factory = creator(this.service);
if (factory.before)
transformer.before.push.apply(factory.before);
if (factory.after)
transformer.after.push.apply(factory.after);
}
return transformer;
};
return LanguageServiceHost;
}());
@ -19986,7 +19998,7 @@ function typescript(options) {
tsconfig: undefined,
useTsconfigDeclarationDir: false,
tsconfigOverride: {},
transformers: undefined,
transformers: [],
tsconfigDefaults: {},
});
setTypescriptModule(pluginOptions.typescript);

File diff suppressed because one or more lines are too long

549
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "rollup-plugin-typescript2",
"version": "0.12.1",
"version": "0.14.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -52,7 +52,7 @@
"@types/node": {
"version": "8.0.47",
"resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.47.tgz",
"integrity": "sha1-lo5Zb5Gs1ZBpBUVYoAcIxEXKMMI=",
"integrity": "sha512-kOwL746WVvt/9Phf6/JgX/bsGQvbrK5iUgzyfwZNcKVFcjAUVSpF9HxevLTld2SG9aywYHOILj38arDdY1r/iQ==",
"dev": true
},
"@types/object-hash": {
@ -227,7 +227,7 @@
"diff": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz",
"integrity": "sha1-sdhVB9rzlkgo3lSzfQ1zumfdpWw=",
"integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==",
"dev": true
},
"escape-string-regexp": {
@ -263,6 +263,535 @@
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
"fsevents": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.3.tgz",
"integrity": "sha512-X+57O5YkDTiEQGiw8i7wYc2nQgweIekqkepI8Q3y4wVlurgBt2SuwxTeYUYMZIGpLZH3r/TsMjczCMXE5ZOt7Q==",
"dev": true,
"optional": true,
"requires": {
"nan": "2.10.0",
"node-pre-gyp": "0.9.1"
},
"dependencies": {
"abbrev": {
"version": "1.1.1",
"bundled": true,
"dev": true,
"optional": true
},
"ansi-regex": {
"version": "2.1.1",
"bundled": true,
"dev": true
},
"aproba": {
"version": "1.2.0",
"bundled": true,
"dev": true,
"optional": true
},
"are-we-there-yet": {
"version": "1.1.4",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"delegates": "1.0.0",
"readable-stream": "2.3.6"
}
},
"balanced-match": {
"version": "1.0.0",
"bundled": true,
"dev": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"dev": true,
"requires": {
"balanced-match": "1.0.0",
"concat-map": "0.0.1"
}
},
"chownr": {
"version": "1.0.1",
"bundled": true,
"dev": true,
"optional": true
},
"code-point-at": {
"version": "1.1.0",
"bundled": true,
"dev": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true,
"dev": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true,
"dev": true
},
"core-util-is": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"debug": {
"version": "2.6.9",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"ms": "2.0.0"
}
},
"deep-extend": {
"version": "0.4.2",
"bundled": true,
"dev": true,
"optional": true
},
"delegates": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"detect-libc": {
"version": "1.0.3",
"bundled": true,
"dev": true,
"optional": true
},
"fs-minipass": {
"version": "1.2.5",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minipass": "2.2.4"
}
},
"fs.realpath": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"gauge": {
"version": "2.7.4",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"aproba": "1.2.0",
"console-control-strings": "1.1.0",
"has-unicode": "2.0.1",
"object-assign": "4.1.1",
"signal-exit": "3.0.2",
"string-width": "1.0.2",
"strip-ansi": "3.0.1",
"wide-align": "1.1.2"
}
},
"glob": {
"version": "7.1.2",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"fs.realpath": "1.0.0",
"inflight": "1.0.6",
"inherits": "2.0.3",
"minimatch": "3.0.4",
"once": "1.4.0",
"path-is-absolute": "1.0.1"
}
},
"has-unicode": {
"version": "2.0.1",
"bundled": true,
"dev": true,
"optional": true
},
"iconv-lite": {
"version": "0.4.21",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"safer-buffer": "2.1.2"
}
},
"ignore-walk": {
"version": "3.0.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minimatch": "3.0.4"
}
},
"inflight": {
"version": "1.0.6",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"once": "1.4.0",
"wrappy": "1.0.2"
}
},
"inherits": {
"version": "2.0.3",
"bundled": true,
"dev": true
},
"ini": {
"version": "1.3.5",
"bundled": true,
"dev": true,
"optional": true
},
"is-fullwidth-code-point": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
"number-is-nan": "1.0.1"
}
},
"isarray": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"minimatch": {
"version": "3.0.4",
"bundled": true,
"dev": true,
"requires": {
"brace-expansion": "1.1.11"
}
},
"minimist": {
"version": "0.0.8",
"bundled": true,
"dev": true
},
"minipass": {
"version": "2.2.4",
"bundled": true,
"dev": true,
"requires": {
"safe-buffer": "5.1.1",
"yallist": "3.0.2"
}
},
"minizlib": {
"version": "1.1.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minipass": "2.2.4"
}
},
"mkdirp": {
"version": "0.5.1",
"bundled": true,
"dev": true,
"requires": {
"minimist": "0.0.8"
}
},
"ms": {
"version": "2.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"needle": {
"version": "2.2.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"debug": "2.6.9",
"iconv-lite": "0.4.21",
"sax": "1.2.4"
}
},
"node-pre-gyp": {
"version": "0.9.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"detect-libc": "1.0.3",
"mkdirp": "0.5.1",
"needle": "2.2.0",
"nopt": "4.0.1",
"npm-packlist": "1.1.10",
"npmlog": "4.1.2",
"rc": "1.2.6",
"rimraf": "2.6.2",
"semver": "5.5.0",
"tar": "4.4.1"
}
},
"nopt": {
"version": "4.0.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"abbrev": "1.1.1",
"osenv": "0.1.5"
}
},
"npm-bundled": {
"version": "1.0.3",
"bundled": true,
"dev": true,
"optional": true
},
"npm-packlist": {
"version": "1.1.10",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"ignore-walk": "3.0.1",
"npm-bundled": "1.0.3"
}
},
"npmlog": {
"version": "4.1.2",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"are-we-there-yet": "1.1.4",
"console-control-strings": "1.1.0",
"gauge": "2.7.4",
"set-blocking": "2.0.0"
}
},
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
"dev": true
},
"object-assign": {
"version": "4.1.1",
"bundled": true,
"dev": true,
"optional": true
},
"once": {
"version": "1.4.0",
"bundled": true,
"dev": true,
"requires": {
"wrappy": "1.0.2"
}
},
"os-homedir": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"os-tmpdir": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"osenv": {
"version": "0.1.5",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"os-homedir": "1.0.2",
"os-tmpdir": "1.0.2"
}
},
"path-is-absolute": {
"version": "1.0.1",
"bundled": true,
"dev": true,
"optional": true
},
"process-nextick-args": {
"version": "2.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"rc": {
"version": "1.2.6",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"deep-extend": "0.4.2",
"ini": "1.3.5",
"minimist": "1.2.0",
"strip-json-comments": "2.0.1"
},
"dependencies": {
"minimist": {
"version": "1.2.0",
"bundled": true,
"dev": true,
"optional": true
}
}
},
"readable-stream": {
"version": "2.3.6",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"core-util-is": "1.0.2",
"inherits": "2.0.3",
"isarray": "1.0.0",
"process-nextick-args": "2.0.0",
"safe-buffer": "5.1.1",
"string_decoder": "1.1.1",
"util-deprecate": "1.0.2"
}
},
"rimraf": {
"version": "2.6.2",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"glob": "7.1.2"
}
},
"safe-buffer": {
"version": "5.1.1",
"bundled": true,
"dev": true
},
"safer-buffer": {
"version": "2.1.2",
"bundled": true,
"dev": true,
"optional": true
},
"sax": {
"version": "1.2.4",
"bundled": true,
"dev": true,
"optional": true
},
"semver": {
"version": "5.5.0",
"bundled": true,
"dev": true,
"optional": true
},
"set-blocking": {
"version": "2.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"signal-exit": {
"version": "3.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"string-width": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"requires": {
"code-point-at": "1.1.0",
"is-fullwidth-code-point": "1.0.0",
"strip-ansi": "3.0.1"
}
},
"string_decoder": {
"version": "1.1.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "5.1.1"
}
},
"strip-ansi": {
"version": "3.0.1",
"bundled": true,
"dev": true,
"requires": {
"ansi-regex": "2.1.1"
}
},
"strip-json-comments": {
"version": "2.0.1",
"bundled": true,
"dev": true,
"optional": true
},
"tar": {
"version": "4.4.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"chownr": "1.0.1",
"fs-minipass": "1.2.5",
"minipass": "2.2.4",
"minizlib": "1.1.0",
"mkdirp": "0.5.1",
"safe-buffer": "5.1.1",
"yallist": "3.0.2"
}
},
"util-deprecate": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"wide-align": {
"version": "1.1.2",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"string-width": "1.0.2"
}
},
"wrappy": {
"version": "1.0.2",
"bundled": true,
"dev": true
},
"yallist": {
"version": "3.0.2",
"bundled": true,
"dev": true
}
}
},
"glob": {
"version": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
"integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=",
@ -400,6 +929,13 @@
"brace-expansion": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz"
}
},
"nan": {
"version": "2.10.0",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
"integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==",
"dev": true,
"optional": true
},
"object-hash": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.0.tgz",
@ -460,7 +996,7 @@
"rimraf": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
"integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
"integrity": "sha1-LtgVDSShbqhlHm1u8PR8QVjOejY=",
"dev": true,
"requires": {
"glob": "7.1.2"
@ -650,7 +1186,7 @@
}
},
"rollup-plugin-typescript2": {
"version": "github:ezolenko/rollup-plugin-typescript2#2e3f4bc0c232d13ec71f0e3d146d38e8808b5d50",
"version": "github:ezolenko/rollup-plugin-typescript2#9719d2f9a17c67e9cca78d987b03e8e2dbe0c12f",
"dev": true,
"requires": {
"fs-extra": "5.0.0",
@ -965,7 +1501,7 @@
"rollup-watch": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/rollup-watch/-/rollup-watch-4.3.1.tgz",
"integrity": "sha512-6yjnIwfjpSrqA8IafyIu7fsEyeImNR4aDjA1bQ7KWeVuiA+Clfsx8+PGQkyABWIQzmauQ//tIJ5wAxLXsXs8qQ==",
"integrity": "sha1-WqHq6reHrd82iQXRArOdb8XOSos=",
"dev": true,
"requires": {
"chokidar": "1.7.0",
@ -1051,6 +1587,7 @@
"requires": {
"anymatch": "1.3.2",
"async-each": "1.0.1",
"fsevents": "1.2.3",
"glob-parent": "2.0.0",
"inherits": "2.0.3",
"is-binary-path": "1.0.1",

View File

@ -3,6 +3,7 @@ import * as tsTypes from "typescript";
import { existsSync } from "fs";
import * as _ from "lodash";
import { normalize } from "./normalize";
import { TransformerFactoryCreator } from "./ioptions";
export class LanguageServiceHost implements tsTypes.LanguageServiceHost
{
@ -11,7 +12,7 @@ export class LanguageServiceHost implements tsTypes.LanguageServiceHost
private versions: { [fileName: string]: number } = {};
private service?: tsTypes.LanguageService;
constructor(private parsedConfig: tsTypes.ParsedCommandLine, private transformers: (service: tsTypes.LanguageService) => tsTypes.CustomTransformers | undefined)
constructor(private parsedConfig: tsTypes.ParsedCommandLine, private transformers: TransformerFactoryCreator[])
{
}
@ -117,9 +118,24 @@ export class LanguageServiceHost implements tsTypes.LanguageServiceHost
public getCustomTransformers(): tsTypes.CustomTransformers | undefined
{
if (this.service === undefined || this.transformers === undefined)
if (this.service === undefined || this.transformers === undefined || this.transformers.length === 0)
return undefined;
return this.transformers(this.service);
const transformer =
{
before: <tsTypes.TransformerFactory<tsTypes.SourceFile>[]>[],
after: <tsTypes.TransformerFactory<tsTypes.SourceFile>[]>[]
}
for (let creator of this.transformers)
{
const factory = creator(this.service);
if (factory.before)
transformer.before.push.apply(factory.before);
if (factory.after)
transformer.after.push.apply(factory.after);
}
return transformer;
}
}

View File

@ -56,7 +56,7 @@ export default function typescript(options?: Partial<IOptions>)
tsconfig: undefined,
useTsconfigDeclarationDir: false,
tsconfigOverride: {},
transformers: undefined,
transformers: [],
tsconfigDefaults: {},
});

View File

@ -1,6 +1,8 @@
import { tsModule } from "./tsproxy";
import * as tsTypes from "typescript";
export type TransformerFactoryCreator = (ls: tsTypes.LanguageService) => tsTypes.CustomTransformers;
export interface IOptions
{
include: string|string[];
@ -15,7 +17,7 @@ export interface IOptions
useTsconfigDeclarationDir: boolean;
typescript: typeof tsModule;
tsconfigOverride: any;
transformers: (service: tsTypes.LanguageService) => tsTypes.CustomTransformers;
transformers: TransformerFactoryCreator[];
tsconfigDefaults: any;
sourceMapCallback: (id: string, map: string) => void;
}