Merge pull request #1535 from NativeScript/hdeshev/angular-dts-compat

Generate segmented d.ts files and resolve Angular type clashes
This commit is contained in:
Hristo Deshev
2016-02-12 11:15:21 +02:00
4 changed files with 44 additions and 15 deletions

9
declarations.d.ts vendored
View File

@ -99,8 +99,7 @@ interface Console {
} }
declare var console: Console; declare var console: Console;
declare var global; declare var require: NativeScriptRequire;
declare var require;
// Global functions // Global functions
declare function Deprecated(target: Object, key?: string | symbol, value?: any): void; declare function Deprecated(target: Object, key?: string | symbol, value?: any): void;
@ -146,10 +145,6 @@ declare class WeakRef<T> {
clear(): void; clear(): void;
} }
declare module module { declare var module: NativeScriptModule;
var id: string;
var filename: string;
var exports: any;
}
// Same as module.exports // Same as module.exports
declare var exports: any; declare var exports: any;

View File

@ -580,18 +580,38 @@ module.exports = function(grunt) {
grunt.registerTask("distribute-ts-apps-files", [ grunt.registerTask("distribute-ts-apps-files", [
"copy:readyTsAppFiles" "copy:readyTsAppFiles"
]); ]);
grunt.registerTask("generate-tns-core-modules-dts", function() { function writeDtsFile(dtsFiles, outFile) {
var dtsFiles = grunt.file.expand({cwd: localCfg.outModulesDir}, [
'**/*.d.ts',
'!tns-core-modules.d.ts'
].concat(localCfg.defaultExcludes));
dtsFiles.sort();
var dtsLines = dtsFiles.map(function(dtsFile) { var dtsLines = dtsFiles.map(function(dtsFile) {
return '/// <reference path="' + dtsFile + '" />'; return '/// <reference path="' + dtsFile + '" />';
}); });
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.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 //aliasing pack-modules for backwards compatibility
grunt.registerTask("pack-modules", [ grunt.registerTask("pack-modules", [

13
module.d.ts vendored Normal file
View File

@ -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;
}

View File

@ -455,6 +455,7 @@
"location/location.android.ts", "location/location.android.ts",
"location/location.d.ts", "location/location.d.ts",
"location/location.ios.ts", "location/location.ios.ts",
"module.d.ts",
"node-tests/definitions/chai.d.ts", "node-tests/definitions/chai.d.ts",
"node-tests/definitions/mocha.d.ts", "node-tests/definitions/mocha.d.ts",
"node-tests/test-angular-xml.ts", "node-tests/test-angular-xml.ts",