Skip to content

Commit

Permalink
Fix typing errors
Browse files Browse the repository at this point in the history
  • Loading branch information
marvinhagemeister committed May 26, 2017
1 parent 84a1571 commit 2a0b8de
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 13 deletions.
3 changes: 2 additions & 1 deletion src/generators/dom/interfaces.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
export interface State {
name: string;
namespace: string;
parentNode: string;
isTopLevel: boolean
Expand All @@ -7,4 +8,4 @@ export interface State {
inEachBlock?: boolean;
allUsedContexts?: string[];
usesComponent?: boolean;
}
}
9 changes: 7 additions & 2 deletions src/generators/shared/utils/getGlobals.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
export default function getGlobals ( imports, { globals, onerror, onwarn } ) {
import { Declaration, Options } from './getIntro';

export type Globals = (id: string) => any;

export default function getGlobals ( imports: Declaration[], options: Options ) {
const { globals, onerror, onwarn } = options;
const globalFn = getGlobalFn( globals );

return imports.map( x => {
Expand Down Expand Up @@ -33,7 +38,7 @@ export default function getGlobals ( imports, { globals, onerror, onwarn } ) {
});
}

function getGlobalFn ( globals ) {
function getGlobalFn ( globals: any ): Globals {
if ( typeof globals === 'function' ) return globals;
if ( typeof globals === 'object' ) {
return id => globals[ id ];
Expand Down
35 changes: 27 additions & 8 deletions src/generators/shared/utils/getIntro.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,26 @@
import deindent from '../../../utils/deindent.js';
import getGlobals from './getGlobals';
import getGlobals, { Globals } from './getGlobals';

export type ModuleFormat = "es" | "amd" | "cjs" | "iife" | "umd" | "eval";

export interface Options {
name: string;
amd?: {
id?: string;
};
globals: Globals | object;
onerror: (err: Error) => void;
onwarn: (obj: Error | { message: string }) => void;
}

export interface Declaration {
name: string;
source: {
value: string;
};
}

export default function getIntro ( format: string, options, imports ) {
export default function getIntro ( format: ModuleFormat, options: Options, imports: Declaration[] ) {
if ( format === 'es' ) return '';
if ( format === 'amd' ) return getAmdIntro( options, imports );
if ( format === 'cjs' ) return getCjsIntro( options, imports );
Expand All @@ -12,7 +31,7 @@ export default function getIntro ( format: string, options, imports ) {
throw new Error( `Not implemented: ${format}` );
}

function getAmdIntro ( options, imports ) {
function getAmdIntro ( options: Options, imports: Declaration[] ) {
const sourceString = imports.length ?
`[ ${imports.map( declaration => `'${removeExtension( declaration.source.value )}'` ).join( ', ' )} ], ` :
'';
Expand All @@ -22,7 +41,7 @@ function getAmdIntro ( options, imports ) {
return `define(${id ? ` '${id}', ` : ''}${sourceString}function (${paramString( imports )}) { 'use strict';\n\n`;
}

function getCjsIntro ( options, imports ) {
function getCjsIntro ( options: Options, imports: Declaration[] ) {
const requireBlock = imports
.map( declaration => `var ${declaration.name} = require( '${declaration.source.value}' );` )
.join( '\n\n' );
Expand All @@ -34,15 +53,15 @@ function getCjsIntro ( options, imports ) {
return `'use strict';\n\n`;
}

function getIifeIntro ( options, imports ) {
function getIifeIntro ( options: Options, imports: Declaration[] ) {
if ( !options.name ) {
throw new Error( `Missing required 'name' option for IIFE export` );
}

return `var ${options.name} = (function (${paramString( imports )}) { 'use strict';\n\n`;
}

function getUmdIntro ( options, imports ) {
function getUmdIntro ( options: Options, imports: Declaration[] ) {
if ( !options.name ) {
throw new Error( `Missing required 'name' option for UMD export` );
}
Expand All @@ -61,11 +80,11 @@ function getUmdIntro ( options, imports ) {
}(this, (function (${paramString( imports )}) { 'use strict';` + '\n\n';
}

function getEvalIntro ( options, imports ) {
function getEvalIntro ( options: Options, imports: Declaration[] ) {
return `(function (${paramString( imports )}) { 'use strict';\n\n`;
}

function paramString ( imports ) {
function paramString ( imports: Declaration[] ) {
return imports.length ? ` ${imports.map( dep => dep.name ).join( ', ' )} ` : '';
}

Expand Down
4 changes: 2 additions & 2 deletions tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"compilerOptions": {
"types" : ["node"],
"types" : ["node", "mocha"],
"noImplicitAny": true,
"diagnostics": true,
"noImplicitThis": true,
Expand All @@ -15,4 +15,4 @@
"exclude": [
"node_modules"
]
}
}

0 comments on commit 2a0b8de

Please sign in to comment.