Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 30 additions & 11 deletions gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ var bump = require('gulp-bump');
var wrapUmd = require("gulp-wrap-umd");
var awspublish = require('gulp-awspublish');
var gulpTemplate = require('gulp-template');
var babel = require('gulp-babel');

// custom builder_helper stripper to remove builder helper functions
var stripper = require("./gulp/gulp-stripper");
Expand All @@ -38,11 +39,15 @@ var VERSIONABLE_FILES = [

var paths = {
scripts: {
filesToTranspile:[
"src/js/Alpaca-async.js",
],
core: [
"src/js/polyfills/*.js",
"thirdparty/base/Base.js",

"src/js/Alpaca.js",
"src/js/Alpaca-async.js",
"build/tmp/transpiled/Alpaca-async.js",
"src/js/ObservableUtils.js",
"src/js/Observables.js",
"src/js/Observable.js",
Expand Down Expand Up @@ -399,13 +404,26 @@ gulp.task("build-scripts", function(cb) {

//console.log("build-scripts start");
// core
var first = gulp.src(paths.scripts.core)
.pipe(concat('scripts-core.js'))
.pipe(gulp.dest('build/tmp'));

first.on("end", function() {

es.concat(
var first = gulp.src(paths.scripts.filesToTranspile)
.pipe(babel({
presets: [
['@babel/preset-env', {
targets: {
'ie': '9'
}
}]
]
}))
.pipe(gulp.dest('build/tmp/transpiled'));

first.on("end", function(){
var second = gulp.src(paths.scripts.core)
.pipe(concat('scripts-core.js'))
.pipe(gulp.dest('build/tmp'));

second.on("end", function() {

es.concat(

// web
gulp.src(paths.scripts.web)
Expand Down Expand Up @@ -443,13 +461,14 @@ gulp.task("build-scripts", function(cb) {
.pipe(uglify())
.pipe(gulp.dest('build/alpaca/jquerymobile'))

).pipe(es.wait(function() {
).pipe(es.wait(function() {

//console.log("build-scripts completed");
cb();

})).pipe(notify({message: "Built Alpaca JS"}));
});
})).pipe(notify({message: "Built Alpaca JS"}));
});
})
});

gulp.task("build-styles", function(cb) {
Expand Down
3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
"version": "1.5.27",
"main": "dist/alpaca/bootstrap/alpaca.js",
"devDependencies": {
"@babel/core": "^7.4.5",
"@babel/preset-env": "^7.4.5",
"bower": "^1.8.8",
"cucumber": "~0.3.3",
"event-stream": "^4.0.1",
Expand All @@ -26,6 +28,7 @@
"grunt-jsdoc": "^2.3.0",
"gulp": "^3.9.1",
"gulp-awspublish": "^3.4.0",
"gulp-babel": "^8.0.0",
"gulp-bump": "^3.1.1",
"gulp-clean": "^0.4.0",
"gulp-concat": "^2.6.1",
Expand Down
79 changes: 79 additions & 0 deletions src/js/polyfills/ArrayFromPolyfill.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
// This polyfill is taken from MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Polyfill
// Production steps of ECMA-262, Edition 6, 22.1.2.1
if (!Array.from) {
Array.from = (function () {
var toStr = Object.prototype.toString;
var isCallable = function (fn) {
return typeof fn === 'function' || toStr.call(fn) === '[object Function]';
};
var toInteger = function (value) {
var number = Number(value);
if (isNaN(number)) { return 0; }
if (number === 0 || !isFinite(number)) { return number; }
return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number));
};
var maxSafeInteger = Math.pow(2, 53) - 1;
var toLength = function (value) {
var len = toInteger(value);
return Math.min(Math.max(len, 0), maxSafeInteger);
};

// The length property of the from method is 1.
return function from(arrayLike/*, mapFn, thisArg */) {
// 1. Let C be the this value.
var C = this;

// 2. Let items be ToObject(arrayLike).
var items = Object(arrayLike);

// 3. ReturnIfAbrupt(items).
if (arrayLike == null) {
throw new TypeError('Array.from requires an array-like object - not null or undefined');
}

// 4. If mapfn is undefined, then let mapping be false.
var mapFn = arguments.length > 1 ? arguments[1] : void undefined;
var T;
if (typeof mapFn !== 'undefined') {
// 5. else
// 5. a If IsCallable(mapfn) is false, throw a TypeError exception.
if (!isCallable(mapFn)) {
throw new TypeError('Array.from: when provided, the second argument must be a function');
}

// 5. b. If thisArg was supplied, let T be thisArg; else let T be undefined.
if (arguments.length > 2) {
T = arguments[2];
}
}

// 10. Let lenValue be Get(items, "length").
// 11. Let len be ToLength(lenValue).
var len = toLength(items.length);

// 13. If IsConstructor(C) is true, then
// 13. a. Let A be the result of calling the [[Construct]] internal method
// of C with an argument list containing the single item len.
// 14. a. Else, Let A be ArrayCreate(len).
var A = isCallable(C) ? Object(new C(len)) : new Array(len);

// 16. Let k be 0.
var k = 0;
// 17. Repeat, while k < len… (also steps a - h)
var kValue;
while (k < len) {
kValue = items[k];
if (mapFn) {
A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k);
} else {
A[k] = kValue;
}
k += 1;
}
// 18. Let putStatus be Put(A, "length", len, true).
A.length = len;
// 20. Return A.
return A;
};
}());
}