From 9a4fd80c8ca45e6ba927772bb3634d9e5ec40d9e Mon Sep 17 00:00:00 2001 From: Mike North Date: Sun, 16 Sep 2018 15:00:28 -0700 Subject: [PATCH 01/29] [@ember/polyfills] Move types from ember (#28923) https://github.com/typed-ember/ember-cli-typescript/issues/299 --- types/ember/index.d.ts | 22 ++++------------------ types/ember/tsconfig.json | 3 +++ types/ember__polyfills/index.d.ts | 17 ++++++++++++++--- types/ember__polyfills/tsconfig.json | 4 +++- types/ember__polyfills/types.d.ts | 4 ++++ 5 files changed, 28 insertions(+), 22 deletions(-) create mode 100644 types/ember__polyfills/types.d.ts diff --git a/types/ember/index.d.ts b/types/ember/index.d.ts index 5b059a0ee4..5a2a654cbc 100755 --- a/types/ember/index.d.ts +++ b/types/ember/index.d.ts @@ -34,6 +34,7 @@ declare module 'ember' { import { Registry as ServiceRegistry } from '@ember/service'; import { Registry as ControllerRegistry } from '@ember/controller'; import ModuleComputed from '@ember/object/computed'; + import * as EmberPolyfills from '@ember/polyfills'; // Get an alias to the global Array type to use in inner scope below. type GlobalArray = T[]; @@ -3138,11 +3139,7 @@ declare module 'ember' { * A value is present if it not `isBlank`. */ function isPresent(obj?: any): boolean; - /** - * Merge the contents of two objects together into the first object. - * @deprecated Use Object.assign - */ - function merge(original: T, updates: U): Mix; + const merge: typeof EmberPolyfills.merge; /** * Makes a method available via an additional name. */ @@ -3289,14 +3286,12 @@ declare module 'ember' { function typeOf(value: T): KeysOfType; function typeOf(): 'undefined'; function typeOf(item: any): string; + // TODO: replace with an es6 reexport when declare module 'ember' is removed /** * Copy properties from a source object to a target object. * @deprecated Use Object.assign */ - function assign(target: T, source: U): Mix; - function assign(target: T, source1: U, source2: V): Mix3; - function assign(target: T, source1: U, source2: V, source3: W): Mix4; - + const assign: typeof EmberPolyfills.assign; /** * Polyfill for Object.create * @deprecated Use Object.create @@ -3790,15 +3785,6 @@ declare module '@ember/object/proxy' { export default class ObjectProxy extends Ember.ObjectProxy { } } -declare module '@ember/polyfills' { - import Ember from 'ember'; - export const assign: typeof Ember.assign; - export const create: typeof Ember.create; - export const hasPropertyAccessors: typeof Ember.platform.hasPropertyAccessors; - export const keys: typeof Ember.keys; - export const merge: typeof Ember.merge; -} - declare module '@ember/routing/auto-location' { import Ember from 'ember'; export default class AutoLocation extends Ember.AutoLocation { } diff --git a/types/ember/tsconfig.json b/types/ember/tsconfig.json index a267c26dd5..ed3a4345ff 100755 --- a/types/ember/tsconfig.json +++ b/types/ember/tsconfig.json @@ -14,6 +14,9 @@ "typeRoots": [ "../" ], + "paths": { + "@ember/polyfills": ["ember__polyfills"] + }, "types": [], "noEmit": true, "forceConsistentCasingInFileNames": true diff --git a/types/ember__polyfills/index.d.ts b/types/ember__polyfills/index.d.ts index 2a3c9b4a93..1bca6dbba4 100644 --- a/types/ember__polyfills/index.d.ts +++ b/types/ember__polyfills/index.d.ts @@ -4,7 +4,18 @@ // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.8 -import Ember from 'ember'; +import { Mix, Mix3, Mix4 } from './types'; -export const assign: typeof Ember.assign; -export const merge: typeof Ember.merge; +/** + * Copy properties from a source object to a target object. + * @deprecated Use Object.assign + */ +export function assign(target: T, source: U): Mix; +export function assign(target: T, source1: U, source2: V): Mix3; +export function assign(target: T, source1: U, source2: V, source3: W): Mix4; + +/** + * Merge the contents of two objects together into the first object. + * @deprecated Use Object.assign + */ +export function merge(original: T, updates: U): Mix; diff --git a/types/ember__polyfills/tsconfig.json b/types/ember__polyfills/tsconfig.json index a2a6bd371b..ab08b95d99 100644 --- a/types/ember__polyfills/tsconfig.json +++ b/types/ember__polyfills/tsconfig.json @@ -15,7 +15,8 @@ "../" ], "paths": { - "@ember/polyfills": ["ember__polyfills"] + "@ember/polyfills": ["ember__polyfills"], + "@ember/polyfills/*": ["ember__polyfills/*"] }, "types": [], "noEmit": true, @@ -23,6 +24,7 @@ }, "files": [ "index.d.ts", + "types.d.ts", "ember__polyfills-tests.ts" ] } diff --git a/types/ember__polyfills/types.d.ts b/types/ember__polyfills/types.d.ts new file mode 100644 index 0000000000..d1c8cf2306 --- /dev/null +++ b/types/ember__polyfills/types.d.ts @@ -0,0 +1,4 @@ +export type Mix = B & Pick>; +export type Mix3 = Mix, C>; +export type Mix4 = Mix3, C, D>; +export default Mix; From d9c8fecb5fba5b177fd7dbd6eb3087370e74e357 Mon Sep 17 00:00:00 2001 From: Mike North Date: Sun, 16 Sep 2018 15:00:45 -0700 Subject: [PATCH 02/29] [ember] addObserver, removeObserver should return functions (#28921) Fixes https://github.com/typed-ember/ember-cli-typescript/issues/290 --- types/ember/index.d.ts | 34 ++++++++++---------- types/ember/test/private/observable-tests.ts | 8 ++--- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/types/ember/index.d.ts b/types/ember/index.d.ts index 5a2a654cbc..3c0d3c15cf 100755 --- a/types/ember/index.d.ts +++ b/types/ember/index.d.ts @@ -1734,11 +1734,11 @@ declare module 'ember' { key: keyof this, target: Target, method: ObserverMethod - ): void; + ): this; addObserver( key: keyof this, method: ObserverMethod - ): void; + ): this; /** * Remove an observer you have previously registered on this object. Pass * the same key, target, and method you passed to `addObserver()` and your @@ -1748,11 +1748,11 @@ declare module 'ember' { key: keyof this, target: Target, method: ObserverMethod - ): any; + ): this; removeObserver( key: keyof this, method: ObserverMethod - ): any; + ): this; /** * Retrieves the value of a property, or a default value in the case that the * property returns `undefined`. @@ -3147,33 +3147,33 @@ declare module 'ember' { /** * Specify a method that observes property changes. */ - function observer(key1: string, func: (target: any, key: string) => void): void; - function observer( + function observer void>(key1: string, func: Fn): Fn; + function observer void>( key1: string, key2: string, - func: (target: any, key: string) => void - ): void; - function observer( + func: Fn + ): Fn; + function observer void>( key1: string, key2: string, key3: string, - func: (target: any, key: string) => void - ): void; - function observer( + func: Fn + ): Fn; + function observer void>( key1: string, key2: string, key3: string, key4: string, - func: (target: any, key: string) => void - ): void; - function observer( + func: Fn + ): Fn; + function observer void>( key1: string, key2: string, key3: string, key4: string, key5: string, - func: (target: any, key: string) => void - ): void; + func: Fn + ): Fn; /** * Adds an observer on a property. */ diff --git a/types/ember/test/private/observable-tests.ts b/types/ember/test/private/observable-tests.ts index be3d4bd69f..1a789cc114 100644 --- a/types/ember/test/private/observable-tests.ts +++ b/types/ember/test/private/observable-tests.ts @@ -69,13 +69,13 @@ class DemoObservable implements Observable { notifyPropertyChange(keyName: string): this { throw new Error("Method not implemented."); } - addObserver(key: keyof this, target: Target, method: keyof Target | ((this: Target, sender: this, key: string, value: any, rev: number) => void)): void; - addObserver(key: K, method: keyof this | ((this: this, sender: this, key: K, value: this[K], rev: number) => void)): void; + addObserver(key: keyof this, target: Target, method: keyof Target | ((this: Target, sender: this, key: string, value: any, rev: number) => void)): any; + addObserver(key: K, method: keyof this | ((this: this, sender: this, key: K, value: this[K], rev: number) => void)): any; addObserver(key: any, target: any, method?: any) { throw new Error("Method not implemented."); } - removeObserver(key: keyof this, target: Target, method: keyof Target | ((this: Target, sender: this, key: string, value: any, rev: number) => void)): void; - removeObserver(key: keyof this, method: keyof this | ((this: this, sender: this, key: string, value: any, rev: number) => void)): void; + removeObserver(key: keyof this, target: Target, method: keyof Target | ((this: Target, sender: this, key: string, value: any, rev: number) => void)): any; + removeObserver(key: keyof this, method: keyof this | ((this: this, sender: this, key: string, value: any, rev: number) => void)): any; removeObserver(key: any, target: any, method?: any): void { throw new Error("Method not implemented."); } From 5016fdb13a1c4000f1d1e0eec01452e0c51b479c Mon Sep 17 00:00:00 2001 From: tamnguyenvt Date: Mon, 17 Sep 2018 14:29:59 +0700 Subject: [PATCH 03/29] papaparse: Allow to change papa.SCRIPT_PATH (#28932) --- types/papaparse/index.d.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/types/papaparse/index.d.ts b/types/papaparse/index.d.ts index de820c771f..4e52dd66a4 100644 --- a/types/papaparse/index.d.ts +++ b/types/papaparse/index.d.ts @@ -50,7 +50,8 @@ export const UNIT_SEP: string; export const WORKERS_SUPPORTED: boolean; // The relative path to Papa Parse. This is automatically detected when Papa Parse is loaded synchronously. -export const SCRIPT_PATH: string; +// Assign it a value to override auto-detected path. +export let SCRIPT_PATH: string; // When passed to Papa Parse a Readable stream is returned. export const NODE_STREAM_INPUT = 1; From 373eab6d1c0e9bf37c5bbfecf51da6d46d0168cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Monnot?= Date: Mon, 17 Sep 2018 09:31:09 +0200 Subject: [PATCH 04/29] Update definitions for react-vertical-timeline-component (#28909) --- types/react-vertical-timeline-component/index.d.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/types/react-vertical-timeline-component/index.d.ts b/types/react-vertical-timeline-component/index.d.ts index 44a9fb3116..7939abd43a 100644 --- a/types/react-vertical-timeline-component/index.d.ts +++ b/types/react-vertical-timeline-component/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for react-vertical-timeline-component 2.1 +// Type definitions for react-vertical-timeline-component 2.2 // Project: https://github.com/stephane-monnot/react-vertical-timeline // Definitions by: Stéphane Monnot // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped @@ -20,6 +20,7 @@ export interface VerticalTimelineElementProps { icon?: React.ReactNode; position?: string; style?: React.CSSProperties; + visibilitySensorProps?: any; } export class VerticalTimeline extends React.Component { } From e42f9330816b732a24caa8fd0c89c287aac0153c Mon Sep 17 00:00:00 2001 From: tyfkda Date: Mon, 17 Sep 2018 16:31:43 +0900 Subject: [PATCH 05/29] Change md5 declaration to accepts Array (#28891) md5 accepts not only `string | Buffer`, but also `Array` from the beginning: https://github.com/pvorb/node-md5/blob/master/md5.js#L19 --- types/md5/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/md5/index.d.ts b/types/md5/index.d.ts index 7cfed0ca35..071c5306fc 100644 --- a/types/md5/index.d.ts +++ b/types/md5/index.d.ts @@ -11,7 +11,7 @@ * @param {(string | Buffer)} message - a string or buffer to hash * @returns {string} the resultant MD5 hash of the given message */ -declare function md5(message: string | Buffer): string; +declare function md5(message: string | Buffer | Array): string; declare namespace md5 {} From 91886422ba81a660de918a5de5acd35be3b0eed6 Mon Sep 17 00:00:00 2001 From: Jinesh Shah Date: Mon, 17 Sep 2018 03:32:34 -0400 Subject: [PATCH 06/29] Fix exports to allow named exports (#28902) * Fix exports Fix exports so they can be name for "declaration: true" tsconfigs * Updated tests * Update tsconfig.json * Update tslint.json --- types/postmark/index.d.ts | 267 ++++++++++++++++++++++++------- types/postmark/postmark-tests.ts | 120 +++++++------- types/postmark/tsconfig.json | 19 +-- types/postmark/tslint.json | 7 +- 4 files changed, 278 insertions(+), 135 deletions(-) diff --git a/types/postmark/index.d.ts b/types/postmark/index.d.ts index 24810299a7..b2b7ac0cfc 100644 --- a/types/postmark/index.d.ts +++ b/types/postmark/index.d.ts @@ -1,12 +1,10 @@ // Type definitions for postmark 1.4 // Project: http://wildbit.github.io/postmark.js -// Definitions by: Ben Bayard +// Definitions by: Ben Bayard +// Jinesh Shah // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.4 -export = postmark; - -declare const postmark: Postmark.Postmark; declare namespace Postmark { const defaults: Options; @@ -87,7 +85,9 @@ declare namespace Postmark { InlineCssForHtmlTestRender?: boolean; } - type PostmarkCallback = ((e: PostmarkError, ret: T) => undefined) | undefined; + type PostmarkCallback = + | ((e: PostmarkError, ret: T) => undefined) + | undefined; interface SimpleOptions { ssl: boolean; @@ -109,36 +109,64 @@ declare namespace Postmark { constructor(serverKey: string, options?: Partial); send(message: PostmarkMessage): Promise; - send(message: PostmarkMessage, callback: PostmarkCallback): undefined; + send( + message: PostmarkMessage, + callback: PostmarkCallback + ): undefined; - sendEmailWithTemplate(message: PostmarkMessageWithTemplate): Promise; - sendEmailWithTemplate(message: PostmarkMessageWithTemplate, callback: PostmarkCallback): undefined; + sendEmailWithTemplate( + message: PostmarkMessageWithTemplate + ): Promise; + sendEmailWithTemplate( + message: PostmarkMessageWithTemplate, + callback: PostmarkCallback + ): undefined; batch(message: PostmarkMessage[]): Promise; - batch(message: PostmarkMessage[], callback: PostmarkCallback): undefined; + batch( + message: PostmarkMessage[], + callback: PostmarkCallback + ): undefined; sendEmail(message: PostmarkMessage): Promise; - sendEmail(message: PostmarkMessage, callback: PostmarkCallback): undefined; + sendEmail( + message: PostmarkMessage, + callback: PostmarkCallback + ): undefined; sendEmailBatch(message: PostmarkMessage[]): Promise; - sendEmailBatch(message: PostmarkMessage[], callback: PostmarkCallback): undefined; + sendEmailBatch( + message: PostmarkMessage[], + callback: PostmarkCallback + ): undefined; // stats getDeliveryStatistics(): Promise; - getDeliveryStatistics(callback: PostmarkCallback): undefined; + getDeliveryStatistics( + callback: PostmarkCallback + ): undefined; // bounces getBounces(filter: BounceFilter): Promise; - getBounces(filter: BounceFilter, callback?: PostmarkCallback): undefined; + getBounces( + filter: BounceFilter, + callback?: PostmarkCallback + ): undefined; getBounce(id: number): Promise; getBounce(id: number, callback?: PostmarkCallback): undefined; getBounceDump(id: number): Promise; - getBounceDump(id: number, callback?: PostmarkCallback): undefined; + getBounceDump( + id: number, + callback?: PostmarkCallback + ): undefined; activateBounce(id: number): Promise; - activateBounce(id: number, callback?: PostmarkCallback): undefined; + activateBounce( + id: number, + callback?: PostmarkCallback + ): undefined; getBounceTags(): Promise; getBounceTags(callback?: PostmarkCallback): undefined; @@ -148,54 +176,112 @@ declare namespace Postmark { getServer(callback?: PostmarkCallback): undefined; editServer(server: Partial): Promise; - editServer(server: Partial, callback?: PostmarkCallback): undefined; + editServer( + server: Partial, + callback?: PostmarkCallback + ): undefined; // message info - getOutboundMessages(filter: OutboundMessageFilter): Promise; - getOutboundMessages(filter: OutboundMessageFilter, callback?: PostmarkCallback): undefined; + getOutboundMessages( + filter: OutboundMessageFilter + ): Promise; + getOutboundMessages( + filter: OutboundMessageFilter, + callback?: PostmarkCallback + ): undefined; getOutboundMessageDetails(id: number): Promise; - getOutboundMessageDetails(id: number, callback?: PostmarkCallback): undefined; + getOutboundMessageDetails( + id: number, + callback?: PostmarkCallback + ): undefined; getMessageOpens(filter: OpenMessageFilter): Promise; - getMessageOpens(filter: OpenMessageFilter, callback?: PostmarkCallback): undefined; + getMessageOpens( + filter: OpenMessageFilter, + callback?: PostmarkCallback + ): undefined; - getMessageOpensForSingleMessage(id: number, filter: Filter): Promise; - getMessageOpensForSingleMessage(id: number, filter: Filter, callback?: PostmarkCallback): undefined; + getMessageOpensForSingleMessage( + id: number, + filter: Filter + ): Promise; + getMessageOpensForSingleMessage( + id: number, + filter: Filter, + callback?: PostmarkCallback + ): undefined; - getInboundMessages(filter: InboundMessageFilter): Promise; - getInboundMessages(filter: InboundMessageFilter, callback?: PostmarkCallback): undefined; + getInboundMessages( + filter: InboundMessageFilter + ): Promise; + getInboundMessages( + filter: InboundMessageFilter, + callback?: PostmarkCallback + ): undefined; getInboundMessageDetails(id: number): Promise; - getInboundMessageDetails(id: number, callback?: PostmarkCallback): undefined; + getInboundMessageDetails( + id: number, + callback?: PostmarkCallback + ): undefined; bypassBlockedInboundMessage(id: number): Promise; - bypassBlockedInboundMessage(id: number, callback?: PostmarkCallback): undefined; + bypassBlockedInboundMessage( + id: number, + callback?: PostmarkCallback + ): undefined; getOuboundOverview(filter: BaseFilter): Promise; - getOuboundOverview(filter: BaseFilter, callback?: PostmarkCallback): undefined; + getOuboundOverview( + filter: BaseFilter, + callback?: PostmarkCallback + ): undefined; retryInboundHookForMessage(id: number): Promise; - retryInboundHookForMessage(id: number, callback?: PostmarkCallback): undefined; + retryInboundHookForMessage( + id: number, + callback?: PostmarkCallback + ): undefined; // templates getTemplate(id: number): Promise