Skip to content

Instantly share code, notes, and snippets.

View jimmywarting's full-sized avatar

Jimmy Wärting jimmywarting

View GitHub Profile
<!DOCTYPE html>
<script src="url.js"></script>
<script>
var url = new URL('http://www.example.com/a/b/c.html?p=q&r=s&p&p=t#hash');
for (var key in url) {
console.log(key, url[key]);
}
// We allocate a file with the size of the downloaded file so we can
// append chunks randomly to diffrent position as we download the file
function allocateDisk(size, callback){
fss.cwd.getFile(prompt("Filename","movie.mp4"), {create: true}, (fileEntry) => {
fileEntry.createWriter((writer) => {
var blob = new Blob([new ArrayBuffer(1.049e+8)])
writer.onerror = (err) => {
@jimmywarting
jimmywarting / readme.md
Last active April 21, 2024 15:32
Cors proxies
Exposed headers
Service SSL status Response Type Allowed methods Allowed headers
@jimmywarting
jimmywarting / min.js
Last active July 27, 2017 01:52
Tiny fast 314 bytes es6 PRNG
// based on this https://github.com/davidbau/seedrandom#other-fast-prng-algorithms but without `next()`
(b,c,d,f,g,h,k,s=1,t=4022871197)=>(k=u=>{for(d of u)t+=d.charCodeAt(0),f=.02519603282416938*t,t=f>>>0,f-=t,f*=t,t=f>>>0,f-=t,t+=4294967296*f;return 2.3283064365386963e-10*(t>>>0)},c=k(' '),g=k(' '),h=k(' '),c-=k(b),0>c&&(c+=1),g-=k(b),0>g&&(g+=1),h-=k(b),0>h&&(h+=1),b=2091639*c+2.3283064365386963e-10*s,h=b-(0|b))
// usage
// const randomizer = <code>
// const seed = '2' // must be string
// randomizer(seed); // 0.4575677579268813
@jimmywarting
jimmywarting / peer.js
Created January 1, 2019 11:05
how to easily make webrtc connection without dependencies
var pc1 = new RTCPeerConnection(),
pc2 = new RTCPeerConnection();
var addCandidate = (pc, can) => can && pc.addIceCandidate(can).catch(console.error);
pc1.onicecandidate = e => { addCandidate(pc2, e.candidate); };
pc2.onicecandidate = e => { addCandidate(pc1, e.candidate); };
pc1.oniceconnectionstatechange = e => console.log("pc1 iceConnState:", pc1.iceConnectionState);
pc2.oniceconnectionstatechange = e => console.log("pc2 iceConnState:", pc2.iceConnectionState);
@jimmywarting
jimmywarting / custom json replacer reviver.md
Last active August 15, 2022 10:25
Custom json replacer/reviver with extended support

This custom json replacer/reviver allow you to store more types as json and still keep it as valid json.

features

  • Allow you to stringify/parse
    • BigInt
    • Infinity
    • NaN
    • Date
    • typed arrays & ArrayBuffers as web-safe base64
@jimmywarting
jimmywarting / example.js
Created February 18, 2020 12:43
native (de)compress in browser
import { compress, decompress } from 'zlib.js'
compr = await compress('hhhhheeeej'.repeat(200)).blob()
blob = await decompress(compr).blob()
@jimmywarting
jimmywarting / README.md
Last active February 3, 2024 01:57
Create your own archive format with just 60 lines of javascript

# Create Your Own Archive Format with Just 60 Lines of JavaScript

Table of Contents

  • Explanation (Introduction, Why & How)
  • Browser Limitations (Memory, Streaming, Writing, Uploading)
  • What are Blobs? (How Do They Work?)
  • The Solution (Code Sample)
    • How to Use the Sample Code
  • Takeaways (Reflection)
  • ⎋ (escape): U+238B
  • ⇥ (tab): U+21E5
  • ⇪ (caps lock): U+21EA
  • ⇧ (shift): U+21E7
  • ⌃ (control): U+2303
  • ⌥ (option): U+2325
  •  (Apple): U+F8FF (in some Apple-provided fonts only)
  • ⌘ (command): U+2318
  • ␣ (space): U+2423
@jimmywarting
jimmywarting / mod.js
Last active February 20, 2024 21:13
Reading a blob synchronous in javascript
const blob = new Blob(['123'])
const xhr = new XMLHttpRequest()
const url = URL.createObjectURL(blob)
// required if you need to read binary data:
xhr.overrideMimeType('text/plain; charset=x-user-defined')
xhr.open('GET', url, false)
xhr.send()
const uint8 = Uint8Array.from(xhr.response, c => c.charCodeAt(0))