sebavan %!s(int64=6) %!d(string=hai) anos
pai
achega
fbdf2e3daa

+ 5 - 1
Tools/Config/config.js

@@ -9,6 +9,7 @@ const outputFolder = path.resolve(configFolder, config.build.outputDirectory);
 const localDevES6 = path.join(tempFolder, config.build.localDevES6FolderName);
 const localDevUMD = path.join(tempFolder, config.build.localDevUMDFolderName);
 const ES6Package = path.join(tempFolder, config.build.ES6Package);
+const intermediateES6Package = path.join(tempFolder, config.build.intermediateES6Package);
 
 config.computed = {
     rootFolder,
@@ -16,7 +17,8 @@ config.computed = {
     outputFolder,
     localDevES6,
     localDevUMD,
-    ES6Package
+    ES6Package,
+    intermediateES6Package
 }
 
 config.modules.map(function(module) {
@@ -28,6 +30,7 @@ config.modules.map(function(module) {
     const localDevES6Directory = path.join(localDevES6, module);
     const localDevUMDDirectory = path.join(localDevUMD, distFolder);
     const ES6PackageDirectory = path.join(ES6Package, module);
+    const intermediateES6PackageDirectory = path.join(intermediateES6Package, module);
 
     const webpackConfigPath = path.join(mainDirectory, "webpack.config.js");
     const tsConfigPath = path.join(mainDirectory, "tsconfig.json");
@@ -56,6 +59,7 @@ config.modules.map(function(module) {
         localDevES6Directory,
         localDevUMDDirectory,
         ES6PackageDirectory,
+        intermediateES6PackageDirectory,
         webpackConfigPath,
         tsConfigPath,
         packageJSONPath,

+ 1 - 0
Tools/Config/config.json

@@ -4,6 +4,7 @@
         "tempDirectory": "./.temp/",
         "localDevES6FolderName": "localDevES6",
         "localDevUMDFolderName": "localDevUMD",
+        "intermediateES6Package": "intermediateES6Package",
         "ES6Package": "packageES6",
         "playgroundDirectory": "../../Playground/",
         "intellisenseFile": "babylon.d.txt",

+ 6 - 0
Tools/Gulp/gulpfile.js

@@ -4,6 +4,7 @@ var gulp = require("gulp");
 
 // Import Gulp Tasks
 require("./tasks/gulpTasks-libraries");
+require("./tasks/gulpTasks-librariesES6");
 require("./tasks/gulpTasks-viewerLibraries");
 require("./tasks/gulpTasks-tsLint");
 require("./tasks/gulpTasks-netlify");
@@ -37,6 +38,11 @@ gulp.task("typescript", gulp.series("core"));
 gulp.task("typescript-libraries", gulp.series(config.modules, config.viewerModules));
 
 /**
+ * Build all es 6 libs.
+ */
+gulp.task("typescript-es6", gulp.series(config.modules.map((module) => module + "-es6")));
+
+/**
  * Validate compile the code and check the comments and style case convention through typedoc
  */
 gulp.task("typedoc-check", gulp.series("core", "gui", "loaders", "serializers", "typedoc-generate", "typedoc-validate"));

+ 104 - 0
Tools/Gulp/tasks/gulpTasks-librariesES6.js

@@ -0,0 +1,104 @@
+// Gulp Tools
+var gulp = require("gulp");
+var path = require("path");
+var shelljs = require("shelljs");
+
+// Gulp Helpers
+var rmDir = require("../../NodeHelpers/rmDir");
+
+// Import Build Config
+var config = require("../../Config/config.js");
+
+/**
+ * Clean folders.
+ */
+var clean = function(settings, cb) {
+    rmDir(settings.computed.intermediateES6PackageDirectory);
+    rmDir(settings.computed.ES6PackageDirectory);
+    cb();
+}
+
+/**
+ * Copy Sources.
+ */
+var source = function(settings) {
+    return gulp.src(settings.computed.mainDirectory + "/**/*")
+        .pipe(gulp.dest(settings.computed.intermediateES6PackageDirectory));
+}
+
+/**
+ * Copy dependencies.
+ */
+var dep = function(settings) {
+    const copyPaths = []
+    // Add tsconfig rules.
+    copyPaths.push(path.join(config.computed.rootFolder, "tsconfigRules.json"));
+
+    const tsconfig = require(settings.computed.tsConfigPath);
+    for (let pathName in tsconfig.compilerOptions.paths) {
+        var paths = tsconfig.compilerOptions.paths[pathName];
+        for (let dep of paths) {
+            const fullPath = path.resolve(settings.computed.mainDirectory, 
+                tsconfig.compilerOptions.baseUrl, 
+                dep);
+            copyPaths.push(fullPath);
+        }
+    }
+
+    return gulp.src(copyPaths, { base: config.computed.rootFolder })
+        .pipe(gulp.dest(config.computed.intermediateES6Package));
+}
+
+/**
+ * TSC Build.
+ */
+var build = function(settings, cb) {
+    // Launch TSC.
+    const options = {
+        cwd: settings.computed.intermediateES6PackageDirectory,
+        verbose: true
+    };
+
+    let command = `tsc --inlineSources --sourceMap true -t es5 -m esNext --outDir "${settings.computed.ES6PackageDirectory}"`;
+    command
+    shelljs.exec(command, options, function(code, stdout, stderr) {
+        if (stderr) {
+            console.log(stderr);
+        }
+        if (stdout) {
+            console.log(stdout);
+        }
+
+        if (code !== 0) {
+            cb("TSC Failed.")
+        }
+        else {
+            cb();
+        }
+    });
+}
+
+/**
+ * Dynamic es 6 module creation.
+ */
+function buildES6Library(settings) {
+    // Creates the required tasks.
+    var tasks = [];
+
+    var cleanup = function(cb) { return clean(settings, cb); };
+    var copySource = function() { return source(settings); };
+    var dependencies = function() { return dep(settings); };
+    var buildes6 = function(cb) { return build(settings, cb) };
+
+    tasks.push(cleanup, copySource, dependencies, buildes6);
+
+    return gulp.series.apply(this, tasks);
+}
+
+/**
+ * Dynamic es 6 module creation.
+ */
+config.modules.map(function(module) {
+    const settings = config[module];
+    gulp.task(module + "-es6", buildES6Library(settings));
+});