Comments (7)
Interesting. The test cases proposed in the RFC clearly indicate that encoding an empty string results in an empty string...
BASE64("") = ""
I stand corrected.
from lz-string.
I never understood why converting an empty string would return null
instead of ""
.
My emotional expectation would be that ""
is the return of an empty input and null
is returned in the event of an error.
from lz-string.
@HelloLudger - I think the reason is because an empty string isn't a valid Base64 encoded string. There's no inputs into the Base64 encoding algorithm that generate an empty string so trying to decode an empty string makes no sense. So returning null from the function is a reasonable way to indicate an error due to invalid input.
from lz-string.
@wkrick that would be an explaination, but I found no arguments to support that ""
is no valid Base64 (or the other way around).
- Stack Overflow: https://stackoverflow.com/questions/15212127/is-an-empty-string-valid-base64-encoded-data-of-zero-bytes-length
window.atob
andwindow.btoa
(who named these functions???) also convert an empty string input to an empty string output.
from lz-string.
Two issues here, first is code output (and a breaking change) - an empty string is valid for an empty result, an error should be different. Second is that the typings don't match what they should be and isn't breaking (and is also not going to change if / when the code change)
For the empty string result we do need to check it's not breaking in the other implementations otherwise it can't be changed for legacy reasons (and would need to be part of any future plans etc)
from lz-string.
Just realised that the typings are correct for v2 - and had a look at some of the implementations for other languages, which have reproduced this behaviour faithfully, so it looks like a very breaking change!
from lz-string.
Yes... nothing that could be done without breaking. Only idea I have (and read here before in another context) would be adding mirrored functions with a new systematic of return values. (E.g. compressToBase64Preview
)
from lz-string.
Related Issues (20)
- Crash with large strings when running on Hermes (React Native)
- Is there a way to allow custom dictionaries? HOT 9
- How to realize that only specified characters are allowed to appear in the compression result? HOT 1
- LZ-String port to current typescript HOT 9
- Tag for v1.5.0 HOT 2
- Version 2 TODO list HOT 15
- Feature request: compress to source-compatible character set HOT 1
- New port for a linux executable HOT 1
- Can utf-8 codes be avoided in the output? HOT 10
- Docs: JSPerf.com links are no longer valid
- Docs: A Complete Demo for various compression/decompression HOT 3
- Docs: TSDoc HOT 3
- License Inconsistencies HOT 5
- Community Question: Breaking Changes and Version 2! HOT 10
- [email protected] build with warnings HOT 4
- Feature request: a non minified js file as a result of building v2 HOT 2
- Chrome virus warning with compressToEncodedURIComponent URL HOT 2
- CLI support for decompressing base64 encoded files HOT 1
- Please investigate the slow (irresponsible) LZString issue in Edge HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from lz-string.