Răsfoiți Sursa

add compressData and decompressData to the npm package

Achille Lacoin 3 ani în urmă
părinte
comite
f5c44e1f0b

+ 5 - 0
src/packages/excalidraw/CHANGELOG.md

@@ -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`.

+ 23 - 0
src/packages/excalidraw/README.md

@@ -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**

+ 3 - 0
src/packages/excalidraw/index.tsx

@@ -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";
 
 

+ 2 - 0
src/packages/utils.ts

@@ -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,