From 33bfeb8cda52bde90f92287ee7c0fddab5fd0958 Mon Sep 17 00:00:00 2001 From: Irwan Fario Subastian Date: Wed, 25 Oct 2017 16:33:49 +1100 Subject: [PATCH] Slate base64 serializer and SSR (#1208) * provide polyfill for btoa and atob * add fallback for Buffer.from * fix listing issues * remove window usage for URIComponent * remove monkeyPatching and add window check * fix linter warnings * update to use isomorphic-base64 --- packages/slate-base64-serializer/package.json | 3 +++ packages/slate-base64-serializer/src/index.js | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/slate-base64-serializer/package.json b/packages/slate-base64-serializer/package.json index c14c9a21e..96568ead4 100644 --- a/packages/slate-base64-serializer/package.json +++ b/packages/slate-base64-serializer/package.json @@ -15,6 +15,9 @@ "slate": "^0.27.4", "uglify-js": "^2.7.0" }, + "dependencies": { + "isomorphic-base64": "^1.0.2" + }, "scripts": { "build": "babel --out-dir ./lib ./src", "build:max": "mkdir -p ./dist && NODE_ENV=production browserify ./src/index.js --transform babelify --transform envify --transform [ browserify-global-shim --global ] --standalone SlateBase64Serializer > ./dist/slate-base64-serializer.js", diff --git a/packages/slate-base64-serializer/src/index.js b/packages/slate-base64-serializer/src/index.js index c008c5cb5..477d4191c 100644 --- a/packages/slate-base64-serializer/src/index.js +++ b/packages/slate-base64-serializer/src/index.js @@ -1,5 +1,6 @@ import { State } from 'slate' +import { atob, btoa } from 'isomorphic-base64' /** * Encode a JSON `object` as base-64 `string`. @@ -10,7 +11,7 @@ import { State } from 'slate' function encode(object) { const string = JSON.stringify(object) - const encoded = window.btoa(window.encodeURIComponent(string)) + const encoded = btoa(encodeURIComponent(string)) return encoded } @@ -22,7 +23,7 @@ function encode(object) { */ function decode(string) { - const decoded = window.decodeURIComponent(window.atob(string)) + const decoded = decodeURIComponent(atob(string)) const object = JSON.parse(decoded) return object }