浏览代码

add compressData and decompressData to the npm package

Achille Lacoin 3 年之前
父节点
当前提交
f5c44e1f0b
共有 4 个文件被更改,包括 33 次插入0 次删除
  1. 5 0
      src/packages/excalidraw/CHANGELOG.md
  2. 23 0
      src/packages/excalidraw/README.md
  3. 3 0
      src/packages/excalidraw/index.tsx
  4. 2 0
      src/packages/utils.ts

+ 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
 
+#### 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
 
 - `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.
 
+#### `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`
 
 **How to use**

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

@@ -206,6 +206,9 @@ export {
   getFreeDrawSvgPath,
   exportToClipboard,
   mergeLibraryItems,
+  generateEncryptionKey,
+  compressData,
+  decompressData,
 } from "../../packages/utils";
 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 {
   loadFromBlob,