webgme
Version:
Web-based Generic Modeling Environment
168 lines (139 loc) • 4.86 kB
Markdown
---
title: Upgrade Guide
layout: default
section: main
---
### From 2.x to 3.0.0
* Deprecated objects/methods has been removed:
* `options.base64` in `generate()` (the base64 type is still valid)
* `options.base64`, `options.binary`, `options.dir`, `options.date`
on `ZipObject` (see the [2.3 upgrade section](#from-222-to-230))
* `JSZip.utils`
* `JSZip.prototype.crc32`, `JSZip.prototype.utf8encode`, `JSZip.prototype.utf8decode`
* `JSZip.base64` (you can get the content of a file directly as a base64 string)
* `JSZip.compressions` has been removed.
* On `ZipObject`, the synchronous getters has been replaced by `async()` and
`nodeStream()`.
* The `generate()` method has been replaced by `generateAsync()` and
`generateNodeStream()`.
* The `type` option in `generate()` is now mandatory.
* The "text" type has been replaced by the "string" type, a binary string is
named "binarystring".
* The `load()` method and the constructor with data (`new JSZip(data)`) have
been replaced by `loadAsync()`.
* When adding a file, the option `createFolders` now defaults to `true`. If
you don't want to create sub folders, set it to false.
* `zip.generateAsync()` and `zip.generateNodeStream()` now depend on the
current folder level.
```js
// 2.x
zip.file("test.txt").asText();
// 3.x
zip.file("test.txt").async("string")
.then(function (content) {
// use content
});
// 2.x
zip.generate();
// 3.x
zip.generateAsync({type:"uint8array"})
.then(function (content) {
// use content
});
// 2.x
new JSZip(data);
zip.load(data);
// zip.file(...)
// 3.x
JSZip.loadAsync(data).then(zip) {...};
zip.loadAsync(data).then(zip) {...};
// here, zip won't have (yet) the updated content
// 2.x
var data = zip.file("img.jpg").asBinary();
var dataURI = "data:image/jpeg;base64," + JSZip.base64.encode(data);
// 3.x
zip.file("img.jpg").async("base64")
.then(function (data64) {
var dataURI = "data:image/jpeg;base64," + data64;
});
```
`async` and `loadAsync` use (a polyfill of) promises, you can find
the documentation [here](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)
and a tutorial [here](http://www.html5rocks.com/en/tutorials/es6/promises/).
It is worth noting that:
```js
/*
* JSZip accepts these promise as input
*/
// replace a content with JSZip v2
var content = zip.file("my_file").asText();
content = content.replace(/apples/, 'oranges');
zip.file("my_file", content);
// replace a content with JSZip v3
var contentPromise = zip.file("my_file").async("text").then(function (content) {
return content.replace(/apples/, 'oranges');
});
zip.file("my_file", contentPromise);
/*
* Promises are chainable
*/
// read, update, generate a zip file with JSZip v2
var zip = new JSZip(content);
zip.file("new_file", "new_content");
var blob = zip.generate({type: "blob"});
saveAs(blob, "result.zip");
// read, update, generate a zip file with JSZip v3
JSZip.loadAsync(content)
.then(function (zip) {
zip.file("new_file", "new_content");
// if you return the zip object, it will be available in the next "then"
return zip;
.then(function (zip) {
// if you return a promise of a blob, promises will "merge": the current
// promise will wait for the other and the next "then" will get the
// blob
return zip.generateAsync({type: "blob"});
.then(function (blob) {
saveAs(blob, "result.zip");
});
```
### From 2.2.2 to 2.3.0
* On `ZipObject#options`, the attributes `date` and `dir` have been
deprecated and are now on `ZipObject`.
* On `ZipObject#options`, the attributes `base64` and `binary` have been
deprecated.
* `JSZip.base64`, `JSZip.prototype.crc32`, `JSZip.prototype.utf8decode`,
`JSZip.prototype.utf8encode` and `JSZip.utils` have been deprecated.
```js
// deprecated
zip.file("test.txt").options.date
zip.file("test.txt").options.dir
// new API
zip.file("test.txt").date
zip.file("test.txt").dir
```
### From 2.0.0 to 2.1.0
* The packaging changed : instead of loading jszip.js, jszip-load.js,
jszip-inflate.js, jszip-deflate.js, just include dist/jszip.js or
dist/jszip.min.js.
For AMD loader users : JSZip now registers itself. You just have to put the
file at the right place or configure your loader.
### From 1.x to 2.x
* `JSZipBase64` has been renamed to `JSZip.base64`.
* The `data` attribute doesn't exist anymore :
use the getters `asText()`, `asBinary()`, etc
* The compression/decompression methods now give their input type with the
`compressInputType` and `uncompressInputType` attributes.
Example for the data attribute :
```js
// before
zip.file("test.txt").data;
zip.files["test.txt"].data;
zip.file("image.png").data;
zip.files["image.png"].data;
// after
zip.file("test.txt").asText();
zip.files["test.txt"].asText();
zip.file("image.png").asBinary();
zip.files["image.png"].asBinary();
```