From b54c43921823efd5fa410b4e4c436e95fe3a6fd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Poul=20Kjeldager=20S=C3=B8rensen?= Date: Tue, 27 Oct 2015 02:19:49 +0100 Subject: [PATCH 1/8] made option config argument optional --- yeoman-generator/yeoman-generator.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yeoman-generator/yeoman-generator.d.ts b/yeoman-generator/yeoman-generator.d.ts index f6d0dd9814..b6ebc2f479 100644 --- a/yeoman-generator/yeoman-generator.d.ts +++ b/yeoman-generator/yeoman-generator.d.ts @@ -29,7 +29,7 @@ declare module yo { determineAppname(): void; getCollisionFilter(): (output: any) => void; hookFor(name: string, config: IHookConfig): void; - option(name: string, config: IYeomanGeneratorOption): void; + option(name: string, config?: IYeomanGeneratorOption): void; rootGeneratorName(): string; run(args?: any): void; run(args: any, callback?: Function): void; From 6a7c067667b8389d1e92da9ff05b434a341a4701 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Poul=20Kjeldager=20S=C3=B8rensen?= Date: Tue, 27 Oct 2015 02:24:28 +0100 Subject: [PATCH 2/8] the configs for option is all optional --- yeoman-generator/yeoman-generator.d.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/yeoman-generator/yeoman-generator.d.ts b/yeoman-generator/yeoman-generator.d.ts index b6ebc2f479..0586c2ee20 100644 --- a/yeoman-generator/yeoman-generator.d.ts +++ b/yeoman-generator/yeoman-generator.d.ts @@ -65,11 +65,11 @@ declare module yo { } export interface IYeomanGeneratorOption { - alias: string; - defaults: any; - desc: string; - hide: boolean; - type: any; + alias?: string; + defaults?: any; + desc?: string; + hide?: boolean; + type?: any; } export interface IQueueProps { From a81c1166f12bb41103accfb3a3da1164a7d337ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Poul=20Kjeldager=20S=C3=B8rensen?= Date: Tue, 27 Oct 2015 02:40:15 +0100 Subject: [PATCH 3/8] added async,prompt and appname --- yeoman-generator/yeoman-generator.d.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/yeoman-generator/yeoman-generator.d.ts b/yeoman-generator/yeoman-generator.d.ts index 0586c2ee20..2f7c58185e 100644 --- a/yeoman-generator/yeoman-generator.d.ts +++ b/yeoman-generator/yeoman-generator.d.ts @@ -43,6 +43,11 @@ declare module yo { setMaxListeners(n: number): void; listeners(event: string): Function[]; emit(event: string, ...args: any[]): boolean; + + async(): any; + prompt(opt?, callback?); + + appname:string; } export interface IArgumentConfig { From 76666791b18fe703b6cf786af10acbddef0655ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Poul=20Kjeldager=20S=C3=B8rensen?= Date: Tue, 27 Oct 2015 03:07:05 +0100 Subject: [PATCH 4/8] added gruntfile property and interface --- yeoman-generator/yeoman-generator.d.ts | 291 +++++++++++++------------ 1 file changed, 152 insertions(+), 139 deletions(-) diff --git a/yeoman-generator/yeoman-generator.d.ts b/yeoman-generator/yeoman-generator.d.ts index 2f7c58185e..5de23f725a 100644 --- a/yeoman-generator/yeoman-generator.d.ts +++ b/yeoman-generator/yeoman-generator.d.ts @@ -5,168 +5,181 @@ /// declare module yo { - export interface IYeomanGenerator { - argument(name: string, config: IArgumentConfig): void; - composeWith(namespace: string, options: any, settings?: IComposeSetting): IYeomanGenerator; - defaultFor(name: string): void; - destinationRoot(rootPath: string): string; - determineAppname(): void; - getCollisionFilter(): (output: any) => void; - hookFor(name: string, config: IHookConfig): void; - option(name: string, config: IYeomanGeneratorOption): void; - rootGeneratorName(): string; - run(args?: any): void; - run(args: any, callback?: Function): void; - runHooks(callback?: Function): void; - sourceRoot(rootPath: string): string; - } + export interface IYeomanGenerator { + argument(name: string, config: IArgumentConfig): void; + composeWith(namespace: string, options: any, settings?: IComposeSetting): IYeomanGenerator; + defaultFor(name: string): void; + destinationRoot(rootPath: string): string; + determineAppname(): void; + getCollisionFilter(): (output: any) => void; + hookFor(name: string, config: IHookConfig): void; + option(name: string, config: IYeomanGeneratorOption): void; + rootGeneratorName(): string; + run(args?: any): void; + run(args: any, callback?: Function): void; + runHooks(callback?: Function): void; + sourceRoot(rootPath: string): string; - export class YeomanGeneratorBase implements IYeomanGenerator, NodeJS.EventEmitter { - argument(name: string, config: IArgumentConfig): void; - composeWith(namespace: string, options: any, settings?: IComposeSetting): IYeomanGenerator; - defaultFor(name: string): void; - destinationRoot(rootPath: string): string; - determineAppname(): void; - getCollisionFilter(): (output: any) => void; - hookFor(name: string, config: IHookConfig): void; - option(name: string, config?: IYeomanGeneratorOption): void; - rootGeneratorName(): string; - run(args?: any): void; - run(args: any, callback?: Function): void; - runHooks(callback?: Function): void; - sourceRoot(rootPath: string): string; - addListener(event: string, listener: Function): NodeJS.EventEmitter; - on(event: string, listener: Function): NodeJS.EventEmitter; - once(event: string, listener: Function): NodeJS.EventEmitter; - removeListener(event: string, listener: Function): NodeJS.EventEmitter; - removeAllListeners(event?: string): NodeJS.EventEmitter; - setMaxListeners(n: number): void; - listeners(event: string): Function[]; - emit(event: string, ...args: any[]): boolean; - - async(): any; - prompt(opt?, callback?); - - appname:string; - } - export interface IArgumentConfig { - desc: string; - required: boolean; - optional: boolean; - type: any; - defaults: any; - } + } - export interface IComposeSetting { - local?: string; - link?: string; - } + export class YeomanGeneratorBase implements IYeomanGenerator, NodeJS.EventEmitter { + argument(name: string, config: IArgumentConfig): void; + composeWith(namespace: string, options: any, settings?: IComposeSetting): IYeomanGenerator; + defaultFor(name: string): void; + destinationRoot(rootPath: string): string; + determineAppname(): void; + getCollisionFilter(): (output: any) => void; + hookFor(name: string, config: IHookConfig): void; + option(name: string, config?: IYeomanGeneratorOption): void; + rootGeneratorName(): string; + run(args?: any): void; + run(args: any, callback?: Function): void; + runHooks(callback?: Function): void; + sourceRoot(rootPath: string): string; + addListener(event: string, listener: Function): NodeJS.EventEmitter; + on(event: string, listener: Function): NodeJS.EventEmitter; + once(event: string, listener: Function): NodeJS.EventEmitter; + removeListener(event: string, listener: Function): NodeJS.EventEmitter; + removeAllListeners(event?: string): NodeJS.EventEmitter; + setMaxListeners(n: number): void; + listeners(event: string): Function[]; + emit(event: string, ...args: any[]): boolean; - export interface IHookConfig { - as: string; - args: any; - options: any; - } + async(): any; + prompt(opt?, callback?); + log(message: string); + npmInstall(packages: string[], options?); - export interface IYeomanGeneratorOption { - alias?: string; - defaults?: any; - desc?: string; - hide?: boolean; - type?: any; - } + appname: string; + gruntfile: IGruntFileStatic; + } - export interface IQueueProps { - initializing: () => void; - prompting?: () => void; - configuring?: () => void; - default?: () => void; - writing: { - [target: string]: () => void; - }; - conflicts?: () => void; - install?: () => void; - end: () => void; - } + export interface IGruntFileStatic { + loadNpmTasks(pluginName: string): void; + insertConfig(name, config); + registerTask(name, tasks); + insertVariable(name, value); + prependJavaScript(code); + } - export interface INamedBase extends IYeomanGenerator { - } + export interface IArgumentConfig { + desc: string; + required: boolean; + optional: boolean; + type: any; + defaults: any; + } - export interface IBase extends INamedBase { - } + export interface IComposeSetting { + local?: string; + link?: string; + } - export interface IAssert { - file(path: string): void; - file(paths: string[]): void; - fileContent(file: string, reg: RegExp): void; + export interface IHookConfig { + as: string; + args: any; + options: any; + } - /** @param {[String, RegExp][]} pairs */ - fileContent(pairs: any[][]): void; + export interface IYeomanGeneratorOption { + alias?: string; + defaults?: any; + desc?: string; + hide?: boolean; + type?: any; + } - /** @param {[String, RegExp][]|String[]} pairs */ - files(pairs: any[]): void; + export interface IQueueProps { + initializing: () => void; + prompting?: () => void; + configuring?: () => void; + default?: () => void; + writing: { + [target: string]: () => void; + }; + conflicts?: () => void; + install?: () => void; + end: () => void; + } - /** - * @param {Object} subject - * @param {Object|Array} methods - */ - implement(subject: any, methods: any): void; - noFile(file: string): void; - noFileContent(file: string, reg: RegExp): void; + export interface INamedBase extends IYeomanGenerator { + } - /** @param {[String, RegExp][]} pairs */ - noFileContent(pairs: any[][]): void; + export interface IBase extends INamedBase { + } - /** - * @param {Object} subject - * @param {Object|Array} methods - */ - noImplement(subject: any, methods: any): void; + export interface IAssert { + file(path: string): void; + file(paths: string[]): void; + fileContent(file: string, reg: RegExp): void; - textEqual(value: string, expected: string): void; - } + /** @param {[String, RegExp][]} pairs */ + fileContent(pairs: any[][]): void; - export interface ITestHelper { - createDummyGenerator(): IYeomanGenerator; - createGenerator(name: string, dependencies: any[], args: any, options: any): IYeomanGenerator; - decorate(context: any, method: string, replacement: Function, options: any): void; - gruntfile(options: any, done: Function): void; - mockPrompt(generator: IYeomanGenerator, answers: any): void; - registerDependencies(dependencies: string[]): void; - restore(): void; + /** @param {[String, RegExp][]|String[]} pairs */ + files(pairs: any[]): void; - /** @param {String|Function} generator */ - run(generator: any): IRunContext; - } + /** + * @param {Object} subject + * @param {Object|Array} methods + */ + implement(subject: any, methods: any): void; + noFile(file: string): void; + noFileContent(file: string, reg: RegExp): void; - export interface IRunContext { - async(): Function; - inDir(dirPath: string): IRunContext; + /** @param {[String, RegExp][]} pairs */ + noFileContent(pairs: any[][]): void; - /** @param {String|String[]} args */ - withArguments(args: any): IRunContext; - withGenerators(dependencies: string[]): IRunContext; - withOptions(options: any): IRunContext; - withPrompts(answers: any): IRunContext; - } + /** + * @param {Object} subject + * @param {Object|Array} methods + */ + noImplement(subject: any, methods: any): void; - /** @type file file-utils */ - var file: any; - var assert: IAssert; - var test: ITestHelper; - module generators { + textEqual(value: string, expected: string): void; + } - export class NamedBase extends YeomanGeneratorBase implements INamedBase { - constructor(args: string | string[], options: any); - } + export interface ITestHelper { + createDummyGenerator(): IYeomanGenerator; + createGenerator(name: string, dependencies: any[], args: any, options: any): IYeomanGenerator; + decorate(context: any, method: string, replacement: Function, options: any): void; + gruntfile(options: any, done: Function): void; + mockPrompt(generator: IYeomanGenerator, answers: any): void; + registerDependencies(dependencies: string[]): void; + restore(): void; - export class Base extends NamedBase implements IBase { - static extend(protoProps: IQueueProps, staticProps?: any): IYeomanGenerator; - } - } + /** @param {String|Function} generator */ + run(generator: any): IRunContext; + } + + export interface IRunContext { + async(): Function; + inDir(dirPath: string): IRunContext; + + /** @param {String|String[]} args */ + withArguments(args: any): IRunContext; + withGenerators(dependencies: string[]): IRunContext; + withOptions(options: any): IRunContext; + withPrompts(answers: any): IRunContext; + } + + /** @type file file-utils */ + var file: any; + var assert: IAssert; + var test: ITestHelper; + module generators { + + export class NamedBase extends YeomanGeneratorBase implements INamedBase { + constructor(args: string | string[], options: any); + } + + export class Base extends NamedBase implements IBase { + static extend(protoProps: IQueueProps, staticProps?: any): IYeomanGenerator; + } + } } declare module "yeoman-generator" { - export = yo; + export = yo; } From 9ce874b71252058000c8180f8523c8680be36f33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Poul=20Kjeldager=20S=C3=B8rensen?= Date: Tue, 27 Oct 2015 03:11:14 +0100 Subject: [PATCH 5/8] added types for making build happy --- yeoman-generator/yeoman-generator.d.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/yeoman-generator/yeoman-generator.d.ts b/yeoman-generator/yeoman-generator.d.ts index 5de23f725a..992b611bd2 100644 --- a/yeoman-generator/yeoman-generator.d.ts +++ b/yeoman-generator/yeoman-generator.d.ts @@ -47,14 +47,20 @@ declare module yo { emit(event: string, ...args: any[]): boolean; async(): any; - prompt(opt?, callback?); + prompt(opt?:IPromptOptions, callback?:(answers:any)=>void); log(message: string); npmInstall(packages: string[], options?); appname: string; gruntfile: IGruntFileStatic; } - + export interface IPromptOptions{ + type:stirng; + name:string; + message:string; + default:string; + } + export interface IGruntFileStatic { loadNpmTasks(pluginName: string): void; insertConfig(name, config); From 13a9213fe54efe27d87e098a0714ff24171626ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Poul=20Kjeldager=20S=C3=B8rensen?= Date: Tue, 27 Oct 2015 03:14:03 +0100 Subject: [PATCH 6/8] added return types on methods --- yeoman-generator/yeoman-generator.d.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yeoman-generator/yeoman-generator.d.ts b/yeoman-generator/yeoman-generator.d.ts index 992b611bd2..3e456cb73f 100644 --- a/yeoman-generator/yeoman-generator.d.ts +++ b/yeoman-generator/yeoman-generator.d.ts @@ -47,9 +47,9 @@ declare module yo { emit(event: string, ...args: any[]): boolean; async(): any; - prompt(opt?:IPromptOptions, callback?:(answers:any)=>void); - log(message: string); - npmInstall(packages: string[], options?); + prompt(opt?:IPromptOptions, callback?:(answers:any)=>void) :void; + log(message: string) : void; + npmInstall(packages: string[], options?) :void; appname: string; gruntfile: IGruntFileStatic; From 6c4ef6671d3aa63e06cdae3e20f208fefc906e8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Poul=20Kjeldager=20S=C3=B8rensen?= Date: Tue, 27 Oct 2015 03:17:42 +0100 Subject: [PATCH 7/8] A few more type errors --- yeoman-generator/yeoman-generator.d.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/yeoman-generator/yeoman-generator.d.ts b/yeoman-generator/yeoman-generator.d.ts index 3e456cb73f..ee12efac6b 100644 --- a/yeoman-generator/yeoman-generator.d.ts +++ b/yeoman-generator/yeoman-generator.d.ts @@ -55,7 +55,7 @@ declare module yo { gruntfile: IGruntFileStatic; } export interface IPromptOptions{ - type:stirng; + type:string; name:string; message:string; default:string; @@ -63,10 +63,10 @@ declare module yo { export interface IGruntFileStatic { loadNpmTasks(pluginName: string): void; - insertConfig(name, config); - registerTask(name, tasks); - insertVariable(name, value); - prependJavaScript(code); + insertConfig(name:string, config:any):void; + registerTask(name:string, tasks:any):void; + insertVariable(name:string, value:any):void; + prependJavaScript(code:string):void; } export interface IArgumentConfig { From 64d834e93e0e5367e5b985107c41c7a9d97d3841 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Poul=20Kjeldager=20S=C3=B8rensen?= Date: Tue, 27 Oct 2015 03:23:17 +0100 Subject: [PATCH 8/8] last type error --- yeoman-generator/yeoman-generator.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yeoman-generator/yeoman-generator.d.ts b/yeoman-generator/yeoman-generator.d.ts index ee12efac6b..4ccd98e44a 100644 --- a/yeoman-generator/yeoman-generator.d.ts +++ b/yeoman-generator/yeoman-generator.d.ts @@ -49,7 +49,7 @@ declare module yo { async(): any; prompt(opt?:IPromptOptions, callback?:(answers:any)=>void) :void; log(message: string) : void; - npmInstall(packages: string[], options?) :void; + npmInstall(packages: string[], options?:any) :void; appname: string; gruntfile: IGruntFileStatic;