diff --git a/declarations.d.ts b/declarations.d.ts index bfaa1c0c6..06dfb9e0e 100644 --- a/declarations.d.ts +++ b/declarations.d.ts @@ -99,8 +99,7 @@ interface Console { } declare var console: Console; -declare var global; -declare var require; +declare var require: NativeScriptRequire; // Global functions declare function Deprecated(target: Object, key?: string | symbol, value?: any): void; @@ -146,10 +145,6 @@ declare class WeakRef { clear(): void; } -declare module module { - var id: string; - var filename: string; - var exports: any; -} +declare var module: NativeScriptModule; // Same as module.exports declare var exports: any; diff --git a/gruntfile.js b/gruntfile.js index b21097ae0..9cf7f368a 100644 --- a/gruntfile.js +++ b/gruntfile.js @@ -580,18 +580,38 @@ module.exports = function(grunt) { grunt.registerTask("distribute-ts-apps-files", [ "copy:readyTsAppFiles" ]); - grunt.registerTask("generate-tns-core-modules-dts", function() { - var dtsFiles = grunt.file.expand({cwd: localCfg.outModulesDir}, [ - '**/*.d.ts', - '!tns-core-modules.d.ts' - ].concat(localCfg.defaultExcludes)); - dtsFiles.sort(); - + function writeDtsFile(dtsFiles, outFile) { var dtsLines = dtsFiles.map(function(dtsFile) { return '/// '; }); - var combinedDtsPath = pathModule.join(localCfg.outModulesDir, 'tns-core-modules.d.ts'); + var combinedDtsPath = pathModule.join(localCfg.outModulesDir, outFile); grunt.file.write(combinedDtsPath, dtsLines.join('\n')); + } + grunt.registerTask("generate-tns-core-modules-dts", function() { + var angularConflicts = ['module.d.ts'] + var angularExcludes = angularConflicts.map(function(file) { + return '!' + file; + }) + var nonES6Files = [ + 'es-collections.d.ts', + 'es6-promise.d.ts', + 'es6.d.ts', + 'weakmap.d.ts', + ]; + var es6Excludes = nonES6Files.map(function(file) { + return '!' + file; + }) + var dtsFiles = grunt.file.expand({cwd: localCfg.outModulesDir}, [ + '**/*.d.ts', + '!tns-core-modules.d.ts' + ].concat(localCfg.defaultExcludes).concat(es6Excludes).concat(angularExcludes)); + dtsFiles.sort(); + + writeDtsFile(dtsFiles, 'tns-core-modules.base.d.ts'); + var es6Files = angularConflicts.concat(['tns-core-modules.base.d.ts']); + writeDtsFile(es6Files, 'tns-core-modules.es6.d.ts'); + var allFiles = angularConflicts.concat(nonES6Files).concat(['tns-core-modules.base.d.ts']); + writeDtsFile(allFiles, 'tns-core-modules.d.ts'); }); //aliasing pack-modules for backwards compatibility grunt.registerTask("pack-modules", [ diff --git a/module.d.ts b/module.d.ts new file mode 100644 index 000000000..dfbbf67fa --- /dev/null +++ b/module.d.ts @@ -0,0 +1,13 @@ +//Base module declarations +//Not required in Angular apps since it clashes with its typings. +declare var global: any; + +interface NativeScriptRequire { + (id: string): any; +} + +declare interface NativeScriptModule { + id: string; + filename: string; + exports: any; +} diff --git a/tsconfig.json b/tsconfig.json index b443b95d9..261d57187 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -455,6 +455,7 @@ "location/location.android.ts", "location/location.d.ts", "location/location.ios.ts", + "module.d.ts", "node-tests/definitions/chai.d.ts", "node-tests/definitions/mocha.d.ts", "node-tests/test-angular-xml.ts",