diff --git a/build.sh b/build.sh index c159ebc41d..1401c5a079 100755 --- a/build.sh +++ b/build.sh @@ -63,7 +63,7 @@ if [[ ${BUILD_ALL} == true ]]; then ln -s ../../../../node_modules/zone.js/dist/zone.js . ln -s ../../../../node_modules/zone.js/dist/long-stack-trace-zone.js . ln -s ../../../../node_modules/systemjs/dist/system.src.js . - ln -s ../../../../node_modules/base64-js/lib/b64.js . + ln -s ../../../../node_modules/base64-js . ln -s ../../../../node_modules/reflect-metadata/Reflect.js . ln -s ../../../../node_modules/rxjs . ln -s ../../../../node_modules/angular/angular.js . @@ -79,7 +79,6 @@ if [[ ${BUILD_ALL} == true ]]; then ln -s ../../../../node_modules/zone.js/dist/zone.js . ln -s ../../../../node_modules/zone.js/dist/long-stack-trace-zone.js . ln -s ../../../../node_modules/systemjs/dist/system.src.js . - ln -s ../../../../node_modules/base64-js/lib/b64.js . ln -s ../../../../node_modules/reflect-metadata/Reflect.js . ln -s ../../../../node_modules/rxjs . ln -s ../../../../node_modules/angular/angular.js . diff --git a/modules/playground/src/web_workers/images/b64.d.ts b/modules/playground/src/web_workers/images/b64.d.ts deleted file mode 100644 index 9bdebf6b05..0000000000 --- a/modules/playground/src/web_workers/images/b64.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - -declare namespace base64js { - function fromByteArray(arr: Uint8Array): string; - function toByteArray(str: string): Uint8Array; -} - -export = base64js; diff --git a/modules/playground/src/web_workers/images/b64.js b/modules/playground/src/web_workers/images/b64.js deleted file mode 100644 index f850a56fe9..0000000000 --- a/modules/playground/src/web_workers/images/b64.js +++ /dev/null @@ -1,125 +0,0 @@ -// clang-format off -var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - -;(function (exports) { - 'use strict'; - - var Arr = (typeof Uint8Array !== 'undefined') - ? Uint8Array - : Array - - var PLUS = '+'.charCodeAt(0) - var SLASH = '/'.charCodeAt(0) - var NUMBER = '0'.charCodeAt(0) - var LOWER = 'a'.charCodeAt(0) - var UPPER = 'A'.charCodeAt(0) - var PLUS_URL_SAFE = '-'.charCodeAt(0) - var SLASH_URL_SAFE = '_'.charCodeAt(0) - - function decode (elt) { - var code = elt.charCodeAt(0) - if (code === PLUS || - code === PLUS_URL_SAFE) - return 62 // '+' - if (code === SLASH || - code === SLASH_URL_SAFE) - return 63 // '/' - if (code < NUMBER) - return -1 //no match - if (code < NUMBER + 10) - return code - NUMBER + 26 + 26 - if (code < UPPER + 26) - return code - UPPER - if (code < LOWER + 26) - return code - LOWER + 26 - } - - function b64ToByteArray (b64) { - var i, j, l, tmp, placeHolders, arr - - if (b64.length % 4 > 0) { - throw new Error('Invalid string. Length must be a multiple of 4') - } - - // the number of equal signs (place holders) - // if there are two placeholders, than the two characters before it - // represent one byte - // if there is only one, then the three characters before it represent 2 bytes - // this is just a cheap hack to not do indexOf twice - var len = b64.length - placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0 - - // base64 is 4/3 + up to two characters of the original data - arr = new Arr(b64.length * 3 / 4 - placeHolders) - - // if there are placeholders, only get up to the last complete 4 chars - l = placeHolders > 0 ? b64.length - 4 : b64.length - - var L = 0 - - function push (v) { - arr[L++] = v - } - - for (i = 0, j = 0; i < l; i += 4, j += 3) { - tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3)) - push((tmp & 0xFF0000) >> 16) - push((tmp & 0xFF00) >> 8) - push(tmp & 0xFF) - } - - if (placeHolders === 2) { - tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4) - push(tmp & 0xFF) - } else if (placeHolders === 1) { - tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2) - push((tmp >> 8) & 0xFF) - push(tmp & 0xFF) - } - - return arr - } - - function uint8ToBase64 (uint8) { - var i, - extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes - output = "", - temp, length - - function encode (num) { - return lookup.charAt(num) - } - - function tripletToBase64 (num) { - return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F) - } - - // go through the array every three bytes, we'll deal with trailing stuff later - for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) { - temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]) - output += tripletToBase64(temp) - } - - // pad the end with zeros, but make sure to not forget the extra bytes - switch (extraBytes) { - case 1: - temp = uint8[uint8.length - 1] - output += encode(temp >> 2) - output += encode((temp << 4) & 0x3F) - output += '==' - break - case 2: - temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1]) - output += encode(temp >> 10) - output += encode((temp >> 4) & 0x3F) - output += encode((temp << 2) & 0x3F) - output += '=' - break - } - - return output - } - - exports.toByteArray = b64ToByteArray - exports.fromByteArray = uint8ToBase64 -}(typeof exports === 'undefined' ? (this.base64js = {}) : exports)) diff --git a/modules/playground/src/web_workers/images/loader.js b/modules/playground/src/web_workers/images/loader.js index 6497655c31..19cd1453d3 100644 --- a/modules/playground/src/web_workers/images/loader.js +++ b/modules/playground/src/web_workers/images/loader.js @@ -9,13 +9,16 @@ importScripts( '../../../vendor/core.js', '../../../vendor/zone.js', '../../../vendor/long-stack-trace-zone.js', '../../../vendor/system.src.js', - '../../../vendor/Reflect.js', 'b64.js'); + '../../../vendor/Reflect.js'); System.config({ baseURL: '/all', - map: {'rxjs': '/all/playground/vendor/rxjs'}, + map: { + 'rxjs': '/all/playground/vendor/rxjs', + 'base64-js': '/all/playground/vendor/base64-js', + }, packages: { '@angular/core': {main: 'index.js', defaultExtension: 'js'}, @@ -27,6 +30,7 @@ System.config({ '@angular/platform-webworker-dynamic': {main: 'index.js', defaultExtension: 'js'}, '@angular/router': {main: 'index.js', defaultExtension: 'js'}, 'rxjs': {defaultExtension: 'js'}, + 'base64-js': {main: 'index.js', defaultExtension: 'js'}, }, defaultJSExtensions: true diff --git a/modules/playground/src/web_workers/images/services/bitmap.ts b/modules/playground/src/web_workers/images/services/bitmap.ts index 22d7d9eca0..89e551b946 100644 --- a/modules/playground/src/web_workers/images/services/bitmap.ts +++ b/modules/playground/src/web_workers/images/services/bitmap.ts @@ -7,7 +7,7 @@ */ import {Injectable} from '@angular/core'; -import * as base64js from '../b64'; +import {fromByteArray} from 'base64-js'; // This class is based on the Bitmap examples at: // http://www.i-programmer.info/projects/36-web/6234-reading-a-bmp-file-in-javascript.html @@ -35,12 +35,12 @@ export class BitmapService { toDataUri(imageData: ImageData): string { const header = this._createBMPHeader(imageData); imageData = this._imageDataToBMP(imageData); - return 'data:image/bmp;base64,' + btoa(header) + base64js.fromByteArray(imageData.data); + return 'data:image/bmp;base64,' + btoa(header) + fromByteArray(imageData.data); } // converts a .bmp file ArrayBuffer to a dataURI arrayBufferToDataUri(data: Uint8Array): string { - return 'data:image/bmp;base64,' + base64js.fromByteArray(data); + return 'data:image/bmp;base64,' + fromByteArray(data); } // returns a UInt8Array in BMP order (starting from the bottom) diff --git a/modules/playground/src/web_workers/images/single_thread.html b/modules/playground/src/web_workers/images/single_thread.html index 8facb87385..98dcfcbb43 100644 --- a/modules/playground/src/web_workers/images/single_thread.html +++ b/modules/playground/src/web_workers/images/single_thread.html @@ -2,13 +2,12 @@ - - + diff --git a/npm-shrinkwrap.clean.json b/npm-shrinkwrap.clean.json index ad7f930999..b6a2846d0d 100644 --- a/npm-shrinkwrap.clean.json +++ b/npm-shrinkwrap.clean.json @@ -6,6 +6,10 @@ "version": "1.5.13-alpha", "dev": true }, + "@types/base64-js": { + "version": "1.2.5", + "dev": true + }, "@types/fs-extra": { "version": "0.0.22-alpha", "dev": true @@ -205,7 +209,7 @@ "dev": true }, "assert": { - "version": "1.3.0", + "version": "1.4.1", "dev": true }, "assert-plus": { @@ -249,7 +253,7 @@ "dev": true }, "base64-js": { - "version": "0.0.8", + "version": "1.2.0", "dev": true }, "base64-url": { @@ -1801,7 +1805,7 @@ "dev": true }, "buffer": { - "version": "3.6.0", + "version": "4.9.1", "dev": true, "dependencies": { "isarray": { @@ -2153,6 +2157,10 @@ "version": "2.0.5", "dev": true }, + "crypto-browserify": { + "version": "3.2.8", + "dev": true + }, "csrf": { "version": "3.0.0", "dev": true @@ -2405,7 +2413,7 @@ "dev": true }, "events": { - "version": "1.0.2", + "version": "1.1.1", "dev": true }, "exit": { @@ -3556,6 +3564,10 @@ } } }, + "https-browserify": { + "version": "0.0.0", + "dev": true + }, "https-proxy-agent": { "version": "1.0.0", "dev": true @@ -3565,7 +3577,7 @@ "dev": true }, "ieee754": { - "version": "1.1.6", + "version": "1.1.8", "dev": true }, "incremental-dom": { @@ -4423,26 +4435,8 @@ "dev": true }, "node-libs-browser": { - "version": "0.5.3", - "dev": true, - "dependencies": { - "crypto-browserify": { - "version": "3.2.8", - "dev": true - }, - "https-browserify": { - "version": "0.0.0", - "dev": true - }, - "ripemd160": { - "version": "0.2.0", - "dev": true - }, - "sha.js": { - "version": "2.2.6", - "dev": true - } - } + "version": "0.6.0", + "dev": true }, "node-source-walk": { "version": "1.4.2", @@ -4651,7 +4645,7 @@ "dev": true }, "process": { - "version": "0.11.2", + "version": "0.11.9", "dev": true }, "process-nextick-args": { @@ -4761,7 +4755,7 @@ } }, "punycode": { - "version": "1.4.0", + "version": "1.4.1", "dev": true }, "q": { @@ -4981,6 +4975,10 @@ } } }, + "ripemd160": { + "version": "0.2.0", + "dev": true + }, "rndm": { "version": "1.1.1", "dev": true @@ -5134,6 +5132,10 @@ "version": "1.0.4", "dev": true }, + "sha.js": { + "version": "2.2.6", + "dev": true + }, "sigmund": { "version": "1.0.1", "dev": true diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index e0d80da432..a76f4a49be 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -8,6 +8,12 @@ "resolved": "https://registry.npmjs.org/@types/angularjs/-/angularjs-1.5.13-alpha.tgz", "dev": true }, + "@types/base64-js": { + "version": "1.2.5", + "from": "@types/base64-js@latest", + "resolved": "https://registry.npmjs.org/@types/base64-js/-/base64-js-1.2.5.tgz", + "dev": true + }, "@types/fs-extra": { "version": "0.0.22-alpha", "from": "@types/fs-extra@latest", @@ -301,9 +307,9 @@ "dev": true }, "assert": { - "version": "1.3.0", - "from": "assert@>=1.3.0 <1.4.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz", + "version": "1.4.1", + "from": "assert@>=1.1.1 <2.0.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", "dev": true }, "assert-plus": { @@ -367,9 +373,9 @@ "dev": true }, "base64-js": { - "version": "0.0.8", - "from": "base64-js@>=0.0.8 <0.0.9", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", + "version": "1.2.0", + "from": "base64-js@latest", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz", "dev": true }, "base64-url": { @@ -2581,9 +2587,9 @@ "dev": true }, "buffer": { - "version": "3.6.0", - "from": "buffer@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.6.0.tgz", + "version": "4.9.1", + "from": "buffer@>=4.9.0 <5.0.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", "dev": true, "dependencies": { "isarray": { @@ -3099,6 +3105,12 @@ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", "dev": true }, + "crypto-browserify": { + "version": "3.2.8", + "from": "crypto-browserify@>=3.2.6 <3.3.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.2.8.tgz", + "dev": true + }, "csrf": { "version": "3.0.0", "from": "csrf@>=3.0.0 <3.1.0", @@ -3469,9 +3481,9 @@ "dev": true }, "events": { - "version": "1.0.2", - "from": "events@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/events/-/events-1.0.2.tgz", + "version": "1.1.1", + "from": "events@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", "dev": true }, "exit": { @@ -5162,6 +5174,12 @@ } } }, + "https-browserify": { + "version": "0.0.0", + "from": "https-browserify@0.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.0.tgz", + "dev": true + }, "https-proxy-agent": { "version": "1.0.0", "from": "https-proxy-agent@>=1.0.0 <2.0.0", @@ -5175,9 +5193,9 @@ "dev": true }, "ieee754": { - "version": "1.1.6", + "version": "1.1.8", "from": "ieee754@>=1.1.4 <2.0.0", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.6.tgz", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", "dev": true }, "incremental-dom": { @@ -6433,36 +6451,10 @@ "dev": true }, "node-libs-browser": { - "version": "0.5.3", - "from": "node-libs-browser@>=0.4.0 <=0.6.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.5.3.tgz", - "dev": true, - "dependencies": { - "crypto-browserify": { - "version": "3.2.8", - "from": "crypto-browserify@>=3.2.6 <3.3.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.2.8.tgz", - "dev": true - }, - "https-browserify": { - "version": "0.0.0", - "from": "https-browserify@0.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.0.tgz", - "dev": true - }, - "ripemd160": { - "version": "0.2.0", - "from": "ripemd160@0.2.0", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz", - "dev": true - }, - "sha.js": { - "version": "2.2.6", - "from": "sha.js@2.2.6", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz", - "dev": true - } - } + "version": "0.6.0", + "from": "node-libs-browser@0.6.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.6.0.tgz", + "dev": true }, "node-source-walk": { "version": "1.4.2", @@ -6771,9 +6763,9 @@ "dev": true }, "process": { - "version": "0.11.2", + "version": "0.11.9", "from": "process@>=0.11.0 <0.12.0", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.2.tgz", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.9.tgz", "dev": true }, "process-nextick-args": { @@ -6933,9 +6925,9 @@ } }, "punycode": { - "version": "1.4.0", - "from": "punycode@>=1.3.2 <2.0.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.0.tgz", + "version": "1.4.1", + "from": "punycode@>=1.2.4 <2.0.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "dev": true }, "q": { @@ -7259,6 +7251,12 @@ } } }, + "ripemd160": { + "version": "0.2.0", + "from": "ripemd160@0.2.0", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz", + "dev": true + }, "rndm": { "version": "1.1.1", "from": "rndm@>=1.1.0 <1.2.0", @@ -7484,6 +7482,12 @@ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", "dev": true }, + "sha.js": { + "version": "2.2.6", + "from": "sha.js@2.2.6", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz", + "dev": true + }, "sigmund": { "version": "1.0.1", "from": "sigmund@>=1.0.0 <1.1.0", diff --git a/package.json b/package.json index fed8ec9d43..db1f4e9698 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ }, "devDependencies": { "@types/angularjs": "^1.5.13-alpha", + "@types/base64-js": "^1.2.5", "@types/fs-extra": "0.0.22-alpha", "@types/hammerjs": "^2.0.33", "@types/jasmine": "^2.2.22-alpha", @@ -34,7 +35,7 @@ "angular": "^1.5.0", "angular-animate": "^1.5.0", "angular-mocks": "^1.5.0", - "base64-js": "^0.0.8", + "base64-js": "^1.2.0", "bower": "^1.3.12", "browserstacktunnel-wrapper": "^1.4.2", "chokidar": "^1.1.0",