Upgrade JSZip

This commit is contained in:
Jordan Eldredge 2017-06-25 14:07:49 -07:00
parent ea2c97b96d
commit fa16b4c6da
3 changed files with 67 additions and 34 deletions

View file

@ -2,7 +2,15 @@ import SKIN_SPRITES from "./skinSprites";
import JSZip from "../node_modules/jszip/dist/jszip"; // Hack
import { parseViscolors, parseIni } from "./utils";
const bmpUriFromFile = file => `data:image/bmp;base64,${btoa(file.asBinary())}`;
const bmpUriFromBase64 = data64 => `data:image/bmp;base64,${data64}`;
const imgFromUri = uri =>
new Promise(resolve => {
const img = new Image();
img.onload = () => {
resolve(img);
};
img.src = uri;
});
// "Promisify" processBuffer
const getBufferFromFile = file =>
@ -10,7 +18,7 @@ const getBufferFromFile = file =>
file.processBuffer(resolve);
});
const getZipFromBuffer = buffer => new JSZip(buffer);
const getZipFromBuffer = buffer => JSZip.loadAsync(buffer);
const getSpriteSheetFilesFromZip = zip => {
const spriteObjs = SKIN_SPRITES.map(spriteObj => ({
@ -22,11 +30,11 @@ const getSpriteSheetFilesFromZip = zip => {
// Extract the CSS rules for a given file, and add them to the object
const extractCss = spriteObj =>
new Promise(resolve => {
const uri = bmpUriFromFile(spriteObj.file);
const img = new Image();
img.onload = () => {
spriteObj.file
.async("base64")
.then(bmpUriFromBase64)
.then(imgFromUri)
.then(img => {
const canvas = document.createElement("canvas");
const images = {};
spriteObj.sprites.forEach(sprite => {
@ -40,22 +48,22 @@ const extractCss = spriteObj =>
images[sprite.name] = image;
}
});
resolve({ ...spriteObj, images });
};
img.src = uri;
});
return { ...spriteObj, images };
});
// Extract the color data from a VISCOLOR.TXT file and add it to the object
const extractColors = spriteObj => ({
...spriteObj,
colors: parseViscolors(spriteObj.file.asText())
});
const extractColors = spriteObj =>
spriteObj.file.async("text").then(content => ({
...spriteObj,
colors: parseViscolors(content)
}));
// Extract the color data from a VISCOLOR.TXT file and add it to the object
const extractPlaylistStyle = spriteObj => ({
...spriteObj,
playlistStyle: parseIni(spriteObj.file.asText())
});
const extractPlaylistStyle = spriteObj =>
spriteObj.file.async("text").then(content => ({
...spriteObj,
playlistStyle: parseIni(content)
}));
const getSkinDataFromFiles = spriteObjs =>
Promise.all(

View file

@ -61,7 +61,7 @@
"babel-plugin-transform-react-jsx": "^6.8.0",
"cardinal-spline-js": "^2.3.6",
"classnames": "^2.2.5",
"jszip": "^2.6.0",
"jszip": "^3.1.3",
"rc-slider": "^6.3.1",
"react": "^15.3.1",
"react-dom": "^15.4.2",
@ -77,4 +77,4 @@
"\\.css$": "<rootDir>/js/__mocks__/styleMock.js"
}
}
}
}

View file

@ -1251,6 +1251,10 @@ core-js@^2.4.0:
version "2.4.1"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
core-js@~2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.3.0.tgz#fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65"
core-util-is@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
@ -1653,6 +1657,10 @@ es6-map@^0.1.3:
es6-symbol "~3.1.1"
event-emitter "~0.3.5"
es6-promise@~3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.0.2.tgz#010d5858423a5f118979665f46486a95c6ee2bb6"
es6-set@~0.1.5:
version "0.1.5"
resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1"
@ -2400,6 +2408,10 @@ ignore@^3.2.0:
version "3.2.6"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.6.tgz#26e8da0644be0bb4cb39516f6c79f0e0f4ffe48c"
immediate@~3.0.5:
version "3.0.6"
resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
imurmurhash@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
@ -3044,11 +3056,15 @@ jsx-ast-utils@^1.3.4:
dependencies:
object-assign "^4.1.0"
jszip@^2.6.0:
version "2.6.1"
resolved "https://registry.yarnpkg.com/jszip/-/jszip-2.6.1.tgz#b88f3a7b2e67a2a048152982c7a3756d9c4828f0"
jszip@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.1.3.tgz#8a920403b2b1651c0fc126be90192d9080957c37"
dependencies:
core-js "~2.3.0"
es6-promise "~3.0.2"
lie "~3.1.0"
pako "~1.0.2"
readable-stream "~2.0.6"
kind-of@^3.0.2:
version "3.1.0"
@ -3077,6 +3093,12 @@ levn@^0.3.0, levn@~0.3.0:
prelude-ls "~1.1.2"
type-check "~0.3.2"
lie@~3.1.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e"
dependencies:
immediate "~3.0.5"
load-json-file@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
@ -3201,7 +3223,7 @@ memory-fs@^0.4.0, memory-fs@~0.4.1:
errno "^0.1.3"
readable-stream "^2.0.1"
meow@^3.6.0, meow@^3.7.0:
meow@^3.7.0:
version "3.7.0"
resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
dependencies:
@ -3939,15 +3961,7 @@ prettier@^1.4.1:
version "1.4.4"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.4.4.tgz#a8d1447b14c9bf67e6d420dcadd10fb9a4fad65a"
pretty-bytes-cli@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/pretty-bytes-cli/-/pretty-bytes-cli-2.0.0.tgz#e705662cffdc9c75291835333bc2f89ad3c033cf"
dependencies:
get-stdin "^5.0.1"
meow "^3.6.0"
pretty-bytes "^4.0.0"
pretty-bytes@^4.0.0, pretty-bytes@^4.0.2:
pretty-bytes@^4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9"
@ -4164,6 +4178,17 @@ read-pkg@^1.0.0:
string_decoder "~0.10.x"
util-deprecate "~1.0.1"
readable-stream@~2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e"
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.1"
isarray "~1.0.0"
process-nextick-args "~1.0.6"
string_decoder "~0.10.x"
util-deprecate "~1.0.1"
readdirp@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"