Skip to content
This repository was archived by the owner on Oct 24, 2021. It is now read-only.

Commit 8443e49

Browse files
authored
Merge pull request #2 from btelles/master
Fix a few types, and return promise from generateDeclarations
2 parents c2e16db + 1314d33 commit 8443e49

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

src/gen-ts.ts

+11-6
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
*/
1010
// Requires node >= 7.6
1111

12-
import { Analyzer, Feature, Element, Package, FSUrlLoader, PackageUrlResolver, Property, ElementMixin, Method } from 'polymer-analyzer';
12+
import { Analyzer, Feature, Element, Analysis, FSUrlLoader, PackageUrlResolver, Property, ElementMixin, Method } from 'polymer-analyzer';
1313
import { Function as ResolvedFunction} from 'polymer-analyzer/lib/javascript/function';
1414
import { generate } from 'escodegen';
1515

@@ -24,16 +24,16 @@ const header = `declare namespace Polymer {
2424
`;
2525
const footer = `}`;
2626

27-
export function generateDeclarations() {
27+
export function generateDeclarations(): Promise<string> {
2828
const analyzer = new Analyzer({
2929
urlLoader: new FSUrlLoader(),
3030
urlResolver: new PackageUrlResolver(),
3131
});
3232

33-
analyzer.analyzePackage().then(generatePackage);
33+
return analyzer.analyzePackage().then(generatePackage);
3434
}
3535

36-
function generatePackage(pkg: Package) {
36+
function generatePackage(pkg: Analysis): Promise<string> {
3737
const declarations = [header];
3838

3939
for (const feature of pkg.getFeatures()) {
@@ -57,7 +57,7 @@ function generatePackage(pkg: Package) {
5757

5858
declarations.push(footer);
5959

60-
process.stdout.write(declarations.join('\n'));
60+
return Promise.resolve(declarations.join('\n'));
6161
}
6262

6363
function genElementDeclaration(element: Element, declarations: string[], indent: number = 0) {
@@ -236,6 +236,7 @@ const typeMap = new Map([
236236
['String', 'string'],
237237
['Number', 'number'],
238238
['Boolean', 'boolean'],
239+
['*', 'any'],
239240
['Array', 'any[]'],
240241
]);
241242

@@ -247,7 +248,6 @@ interface TsType {
247248
function getTsType(type?: string): TsType {
248249
let optional = false;
249250

250-
// default to 'any'
251251
type = type || 'any';
252252

253253
// handle Closure optionals
@@ -256,6 +256,11 @@ function getTsType(type?: string): TsType {
256256
type = type.substring(0, type.length - 1);
257257
}
258258

259+
// handle Closure unknown type
260+
if (type.startsWith('?')) {
261+
type = type + '|null';
262+
}
263+
259264
// convert from Closure
260265
if (typeMap.has(type)) {
261266
type = typeMap.get(type)!;

0 commit comments

Comments
 (0)