Blame view

src/custom-typings.d.ts 3.69 KB
05b0b5d8   Yarik   first commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
  /*
   * Custom Type Definitions
   * When including 3rd party modules you also need to include the type definition for the module
   * if they don't provide one within the module. You can try to install it with @types
   npm install @types/node
   npm install @types/lodash
   * If you can't find the type definition in the registry we can make an ambient/global definition in
   * this file for now. For example
   declare module 'my-module' {
   export function doesSomething(value: string): string;
   }
   * If you are using a CommonJS module that is using module.exports then you will have to write your
   * types using export = yourObjectOrFunction with a namespace above it
   * notice how we have to create a namespace that is equal to the function we're assigning the export to
   declare module 'jwt-decode' {
   function jwtDecode(token: string): any;
   namespace jwtDecode {}
   export = jwtDecode;
   }
   *
   * If you're prototying and you will fix the types later you can also declare it as type any
   *
   declare var assert: any;
   declare var _: any;
   declare var $: any;
   *
   * If you're importing a module that uses Node.js modules which are CommonJS you need to import as
   * in the files such as main.browser.ts or any file within app/
   *
   import * as _ from 'lodash'
   * You can include your type definitions in this file until you create one for the @types
   *
   */
  
  interface JQuery {
      easyPieChart;
  }
  
  declare var GoogleMapsLoader:any;
  declare var L:any;
  declare var AmCharts:any;
  declare var Chart:any;
  declare var Chartist:any;
  
  // support NodeJS modules without type definitions
  declare module '*';
  
  // Extra variables that live on Global that will be replaced by webpack DefinePlugin
  declare var ENV: string;
  declare var HMR: boolean;
  declare var System: SystemJS;
  
  interface SystemJS {
    import: (path?: string) => Promise<any>;
  }
  
  interface GlobalEnvironment {
    ENV: string;
    HMR: boolean;
    SystemJS: SystemJS;
    System: SystemJS;
  }
  
  interface Es6PromiseLoader {
    (id: string): (exportName?: string) => Promise<any>;
  }
  
  type FactoryEs6PromiseLoader = () => Es6PromiseLoader;
  type FactoryPromise = () => Promise<any>;
  
  type AsyncRoutes = {
    [component: string]: Es6PromiseLoader |
      Function |
      FactoryEs6PromiseLoader |
      FactoryPromise
  };
  
  
  type IdleCallbacks = Es6PromiseLoader |
    Function |
    FactoryEs6PromiseLoader |
    FactoryPromise ;
  
  interface WebpackModule {
    hot: {
      data?: any,
      idle: any,
      accept(dependencies?: string | string[], callback?: (updatedDependencies?: any) => void): void;
      decline(deps?: any | string | string[]): void;
      dispose(callback?: (data?: any) => void): void;
      addDisposeHandler(callback?: (data?: any) => void): void;
      removeDisposeHandler(callback?: (data?: any) => void): void;
      check(autoApply?: any, callback?: (err?: Error, outdatedModules?: any[]) => void): void;
      apply(options?: any, callback?: (err?: Error, outdatedModules?: any[]) => void): void;
      status(callback?: (status?: string) => void): void | string;
      removeStatusHandler(callback?: (status?: string) => void): void;
    };
  }
  
  
  interface WebpackRequire {
    (id: string): any;
    (paths: string[], callback: (...modules: any[]) => void): void;
    ensure(ids: string[], callback: (req: WebpackRequire) => void, chunkName?: string): void;
    context(directory: string, useSubDirectories?: boolean, regExp?: RegExp): WebpackContext;
  }
  
  interface WebpackContext extends WebpackRequire {
    keys(): string[];
  }
  
  interface ErrorStackTraceLimit {
    stackTraceLimit: number;
  }
  
  
  // Extend typings
  interface NodeRequire extends WebpackRequire {}
  interface ErrorConstructor extends ErrorStackTraceLimit {}
  interface NodeRequireFunction extends Es6PromiseLoader  {}
  interface NodeModule extends WebpackModule {}
  interface Global extends GlobalEnvironment  {}