add compressData and decompressData to the npm package

This commit is contained in:
Achille Lacoin 2022-07-21 20:31:29 +00:00 committed by pomdtr
parent 958ebeae61
commit f5c44e1f0b
No known key found for this signature in database
GPG Key ID: 125AC29703080DF9
4 changed files with 33 additions and 0 deletions

View File

@ -15,6 +15,11 @@ Please add the latest change on the top under the correct section.
### Excalidraw API ### Excalidraw API
#### Features
- Added [`compressData`](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#compressData) and [`decompressData`](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#decompressData)
- Added [`generateEncryptionKey`](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#generateEncryptionKey)
#### Breaking Changes #### Breaking Changes
- `setToastMessage` API is now renamed to `setToast` API and the function signature is also updated [#5427](https://github.com/excalidraw/excalidraw/pull/5427). You can also pass `duration` and `closable` attributes along with `message`. - `setToastMessage` API is now renamed to `setToast` API and the function signature is also updated [#5427](https://github.com/excalidraw/excalidraw/pull/5427). You can also pass `duration` and `closable` attributes along with `message`.

View File

@ -1150,6 +1150,29 @@ loadSceneOrLibraryFromBlob(
This function loads either scene or library data from the supplied blob. If the blob contains scene data, and you pass `localAppState`, `localAppState` value will be preferred over the `appState` derived from `blob`. Throws if blob doesn't contain neither valid scene data or library data. This function loads either scene or library data from the supplied blob. If the blob contains scene data, and you pass `localAppState`, `localAppState` value will be preferred over the `appState` derived from `blob`. Throws if blob doesn't contain neither valid scene data or library data.
#### `compressData`
```js
const encrytionKey = generateEncryptionKey();
const buffer = await compressData(
new TextEncoder().encode(
serializeAsJSON(elements, appState, files, "database"),
),
{ encryptionKey },
);
```
#### `decompressData`
```js
const { data: decodedBuffer } = await decompressData(new Uint8Array(payload), {
decryptionKey,
});
```
#### `generateEncryptionKey`
#### `getFreeDrawSvgPath` #### `getFreeDrawSvgPath`
**How to use** **How to use**

View File

@ -206,6 +206,9 @@ export {
getFreeDrawSvgPath, getFreeDrawSvgPath,
exportToClipboard, exportToClipboard,
mergeLibraryItems, mergeLibraryItems,
generateEncryptionKey,
compressData,
decompressData,
} from "../../packages/utils"; } from "../../packages/utils";
export { isLinearElement } from "../../element/typeChecks"; export { isLinearElement } from "../../element/typeChecks";

View File

@ -193,6 +193,8 @@ export const exportToClipboard = async (
} }
}; };
export { decompressData, compressData } from "../data/encode";
export { generateEncryptionKey } from "../data/encryption";
export { serializeAsJSON, serializeLibraryAsJSON } from "../data/json"; export { serializeAsJSON, serializeLibraryAsJSON } from "../data/json";
export { export {
loadFromBlob, loadFromBlob,