profile
viewpoint
Tim Caswell creationix @magic-script Leander, TX, USA http://creationix.com/ Making the world better and more free, one technology at a time.

creationix/brozula 162

VM that runs in the browser and interprets luajit bytecode.

creationix/adventure 41

Adventure is the start of a real-time RPG world using node.js and Websockets.

creationix/boxcode 23

A tiling code editor

creationix/basic-games 20

An archive of the best games I wrote for Q-Basic over a 10 year span.

creationix/bench-suite 14

A benchmark skeleton for something better than static hello world http servers.

creationix/bodec 8

Binary ops using typed arrays

creationix/ama 6

Ask me anything!

bmeck/node-protocols 4

Place for the gathering of protocol implementations

creationix/ar-joy 3

sample app controlling ar-drone with joystick

creationix/b36 3

Simple utility for converting between base36 strings and buffers

issue commentmultiformats/multibase

Base 2, base 8, and base 10

Are there actually use cases where only decimal digits but a large or arbitrary number of digits is allowed?

I know of lots of places that store integers, but those have limits on size typically 32 or 64 bits which is way too small for hashes.

Stebalien

comment created time in a day

issue commenthypercore-protocol/community

Proposal for Trackers

I've not tried working with the backoff configurations. That may enough. I'm also a sucker for simplicity.

creationix

comment created time in 3 days

issue commenthypercore-protocol/community

Proposal for Trackers

I love μtp, my only concern was the protocol itself is designed to be a background protocol and is very "polite" and backs away if there is any congestion. I've seen cases in some other experiments where it can get very slow on busy networks.

If this hasn't actually been a concern, I'm fine with it.

In my experiments, I was looking at https://en.wikipedia.org/wiki/QUIC as the main alternative, but not sure it's worth the trouble. Did you look into it yet?

creationix

comment created time in 17 days

issue commenthypercore-protocol/community

Proposal for Trackers

Is the protocol still μtp based or did it switch to something with higher throughput?

creationix

comment created time in 17 days

push eventcreationix/sel-parse-go

Tim Caswell

commit sha e196a5950ffd706a71d0c4fe8b476c331810bfa9

Cheat to pass first test

view details

push time in 19 days

push eventcreationix/sel-parse-go

Tim Caswell

commit sha dd8a24c83af82598a560d2235ac93a1157044054

Get it compiling with first proper failing test

view details

push time in 19 days

push eventcreationix/sel-parse-go

Tim Caswell

commit sha ee83a150bc0e0a89bf2dee9f25bce3a063501853

Get it compiling with first proper failing test

view details

push time in 19 days

push eventcreationix/sel-parse-go

Tim Caswell

commit sha 8ddf045c3dc80f0f1a17d7d3b1be950c3d0b8671

Restructure as go package and test

view details

push time in 19 days

push eventcreationix/sel-parse-go

Tim Caswell

commit sha e0b36ca8a8d5a3d4aa426aa39bb967b97b9ad482

Use the proper selector library to integrate with

view details

push time in 19 days

issue commenthypercore-protocol/community

Proposal for Trackers

I could see value in a HTTP version for use cases where hole punching is just not going to work. It would need to relay the data anyway. The file data could act like cached http data and the peersockets could also be proxied over websockets.

But if we do want to act more like the DHT and only facilitate P2P connections, then we would need something UDP based for the hole punching to work right?

creationix

comment created time in 21 days

issue commenthypercore-protocol/community

Proposal for Trackers

Note that this new discovery method doesn't have to be mutually exclusive with LAN multicast discovery or DHT discovery. The content itself is still addressed using the public key. The tracker is merely a strong hint and a dedicated server to speed up the connection.

Another service the trackers could optionally provide is to relay the data when hole punching doesn't work.

The important point here is these servers are not the source of truth, they are services to make the experience better and faster. Everything should continue working without them (if the data is also advertised on the DHT)

A fully configured tracker could be the equivalent of stun + relay + caching proxy. Being a caching proxy is especially useful in the case of being a relay since it had the data going through it anyway.

creationix

comment created time in 21 days

issue openedhypercore-protocol/community

Proposal for Trackers

If I understand correctly (I've been out of the hypercore community for a bit), the new DHT is used for both NAT traversal via hole punching as well as advertising and discovering peers. Combining these two into the same protocol/service was a brilliant move!

But there are some trade-offs in the decentralized nature of a DHT that are not desirable for all use cases. In particular, I have use cases where I'd love to use the other parts of the ecosystem (P2P hosting, P2P sockets, content addressed content, etc), but need faster performance and am willing to centralize part of the system to achieve this goal.

My proposal is to add a discovery/connection protocol that's similar to the DHT, except the address of a public server is part of the address (tracker address + public key instead of just public key). The tracker will know the current location of peers with the advertised content and be able to connect me quickly.

Also, some trackers can optionally act as a cloud cache of the data itself to speed up the process even more.

This is the workflow I imagine for publishing data.

  1. Create a local hypercore
  2. Connect to a tracker with optional authentication and advertise the new hypercore. 2a. If the tracker is also configured as a data cache, it starts syncing and storing data.
  3. Share a url that contains both the tracker's address as well as the normal public key.

Then the flow for reading this data:

  1. Get the address + public key from a link or something.
  2. Connect to the tracker asking for peers
  3. The tracker connects you with the advertised peer(s). 3a. If configured as a storage peer, it can also provide data directly.

I'm not sure exactly what would need changing in the protocol to allow this, but I do think that making it a clearly defined protocol could encourage commercial offerings of such trackers. It would probably be good if the tracker protocol allowed extensions for other value providing services or blockchain integration or whatever the provider wanted to integrate.

created time in 21 days

issue commentcreationix/js-git

Current js-git capabilities for use in open source project

Sorry, no progress. Last I checked, github and the popular hosts still haven't added CORS headers ot the git https endpoints so it's not possible to speak git protocols from a website.

timaeudg

comment created time in 23 days

push eventcreationix/sel-parse-go

Tim Caswell

commit sha ffd7777196a6a57199e76ccbb3bc7c57fbe30c43

Parse schema for selector IPLD format

view details

push time in a month

create barnchcreationix/sel-parse-go

branch : master

created branch time in a month

created repositorycreationix/sel-parse-go

IPLD Selector Syntax Parser

created time in a month

PR opened ipld/js-block

Fix minor typo.
+1 -1

0 comment

1 changed file

pr created time in a month

push eventcreationix/js-block

Tim Caswell

commit sha f03494ef86d59476b3a5c3129a5e55707815800f

Fix minor typo.

view details

push time in a month

fork creationix/js-block

IPLD Block Interface

fork in a month

created tagmagic-script/magic-script-polyfills

tagv2.10.2

Polyfill for MagicScript

created time in a month

push eventmagic-script/magic-script-polyfills

Tim Caswell

commit sha 6e8d3dcd3a11e322df0f0d51bbeaa993e446f73b

Bump version to 2.10.2 and update dev deps

view details

push time in a month

push eventmagic-script/magic-script-components-lumin

Mariusz Brona

commit sha fea475ee5f7d7811972abe767aa2bfbceaeb0bc0

Feature/#128 file system access interface (#129) * Add file system access interface for Lumin * Move react and react-reconciler to peerDependencies * Move react and react-reconciler back to dependencies * Remove react and react reconciler from dev dependencies * Add read and write file implementation * Add rest of NativeFileSystem methods Co-authored-by: Tim Caswell <tcaswell@magicleap.com>

view details

push time in a month

push eventmagic-script/magic-script-components-lumin

Mariusz Brona

commit sha fea475ee5f7d7811972abe767aa2bfbceaeb0bc0

Feature/#128 file system access interface (#129) * Add file system access interface for Lumin * Move react and react-reconciler to peerDependencies * Move react and react-reconciler back to dependencies * Remove react and react reconciler from dev dependencies * Add read and write file implementation * Add rest of NativeFileSystem methods Co-authored-by: Tim Caswell <tcaswell@magicleap.com>

view details

push time in a month

delete branch magic-script/magic-script-components-lumin

delete branch : feature/#128_file_system_access_interface

delete time in a month

PR merged magic-script/magic-script-components-lumin

Feature/#128 file system access interface

Thank you for your contribution to MagicScript Project. Before submitting this PR, please make sure:

  • [x] Your code builds clean without any errors or warnings
  • [x] You are using approved terminology
  • [x] You have added unit tests
+346 -1

0 comment

3 changed files

panwrona

pr closed time in a month

push eventmagic-script/magic-script-components-lumin

Tim Caswell

commit sha 0a8ed679bc954e5e43a567a9d6b413cf5aa9268a

Add rest of NativeFileSystem methods

view details

push time in a month

Pull request review commentmagic-script/magic-script-components-lumin

Feature/#128 file system access interface

+import { open, write, close, read } from "magic-script-polyfills/src-ts/fs-promised.ts"+import { b64ToBin, rawToBin, strToBin, binToStr } from "magic-script-polyfills/src/bintools.js"++ class NativeFileSystem {     -    writeFile(path, content, encoding) {-        return Promise.reject(new Error('Write file function is not implemented yet'));+     async writeFile(path, contents, encoding) {+        const fd = await open(path, "w", 0o644);+        try {+            const body = encoding === 'utf8' ? strToBin(contents)+            : encoding === 'base64' ? b64ToBin(contents)+            : encoding === 'ascii' ? rawToBin(contents) +            : `Unsupported encoding '${encoding}'`;+            if(body === `Unsupported encoding '${encoding}'`) {+                throw new Error(body)+            }+            await write(fd, body, 0);+        } finally {+            await close(fd);+        }     } -    readFile(path, encoding) {-        return Promise.reject(new Error('Read file function is not implemented yet'));+    async readFile(path, encoding) {+        const fd = await open(path, "r", 0o444);+        try {+            let content = new Uint8Array(64 * 1024);

This needs to not hard-code the file length unless you know all files are exactly 64k long.

panwrona

comment created time in a month

PR closed creationix/jsonparse

Change new Buffer(size) to Buffer.allocate(size)

Initialize temp_buffs with 00 for security reasons. new Buffer(size) is deprecated and the contents of a newly created Buffer are unknown and may contain sensitive data. Use Buffer.alloc(size) instead to initialize a Buffer with zeroes.

+1 -1

0 comment

1 changed file

Mnilko

pr closed time in a month

push eventcreationix/jsonparse

Stephane Alnet

commit sha a980a1709c87c5a57a33d2dbebee4d15a4d8272d

add number reviver

view details

Tim Caswell

commit sha b2d8bc6db4f6be3f276752b3b9f882b1945afede

Merge pull request #39 from shimaore/number-reviver add number reviver

view details

push time in a month

PR merged creationix/jsonparse

add number reviver

Provide a generic way to parse numbers (e.g. to handle/store properly as big decimals, strings, …) while preserving the original semantics.

+20 -11

1 comment

1 changed file

shimaore

pr closed time in a month

push eventcreationix/jsonparse

Stephane Alnet

commit sha 7a38415615d484599af9f0cdb0ded03953f60977

use proper alloc at all times

view details

Tim Caswell

commit sha 5c803705b47c17eba4ccf07f154af42e79a12cad

Merge pull request #40 from shimaore/proper-alloc use proper alloc at all times

view details

push time in a month

PR merged creationix/jsonparse

use proper alloc at all times

Provide a proper allocator for all Buffer calls in a backward-compatible way.

+6 -2

1 comment

1 changed file

shimaore

pr closed time in a month

Pull request review commentcreationix/jsonparse

use proper alloc at all times

 var TAB =             "\t".charCodeAt(0);  var STRING_BUFFER_SIZE = 64 * 1024; +function alloc(size) {+  return Buffer.alloc ? Buffer.alloc(size) : new Buffer(size);+}

This is great, but maybe do the lookup once:

var  alloc = Buffer.alloc || function alloc(size) { return new Buffer(size) };
shimaore

comment created time in a month

startedwasm3/wasm3

started time in a month

Pull request review commentmagic-script/magic-script-components-lumin

Feature/#128 file system access interface

+class NativeFileSystem {+    +    writeFile(path, content, encoding) {+        return Promise.reject(new Error('Write file function is not implemented yet'));

Is this the interface you're trying to copy? https://github.com/itinance/react-native-fs#writefilefilepath-string-contents-string-encoding-string-promisevoid

import { open, write, close } from "magic-script-polyfills/src/fs-promised.js"
import { b64ToBin, rawToBin, strToBin } from "magic-script-polyfills/src/bintools.js"

export async function writeFile(filepath: string, contents: string, encoding: "utf8" | "ascii" | "base64" = "utf8"): Promise<void> {
    const fd = await open(filepath, "w", 0o644);
    try {
        const body: Uint8Array = encoding === 'utf8' ? strToBin(contents)
            : encoding === 'ascii' ? rawToBin(contents) 
            : encoding === 'base64' ? b64ToBin(contents)
            : `Unsupported encoding '${encoding}'`;
        await write(fd, body, 0);
    }
    finally {
        await close(fd);
    }
}
panwrona

comment created time in a month

Pull request review commentmagic-script/magic-script-components-lumin

Feature/#128 file system access interface

+class NativeFileSystem {+    +    writeFile(path, content, encoding) {+        return Promise.reject(new Error('Write file function is not implemented yet'));

If you'd like, I can write a function for you. I just need to know the desired interface. It looks like you want to return a promise, I'm assuming path is a string. Does content only take a string, or does it also take ArrayBuffer or ArrayBufferViews like Uint8Array? What is encoding for and is it actually used anywhere or do we always assume utf8 for strings?

panwrona

comment created time in a month

Pull request review commentmagic-script/magic-script-components-lumin

Feature/#128 file system access interface

+class NativeFileSystem {+    +    writeFile(path, content, encoding) {+        return Promise.reject(new Error('Write file function is not implemented yet'));

The raw FS APIs for magicscript lumin are documented here http://api.magicscript.org/modules/uv.fs.html

But these are very low-level. You probably want to re-use some code from polyfills.

For example, here are implementations of the node.js style writeFile(Sync) functions:

  • https://github.com/magic-script/magic-script-polyfills/blob/master/src-ts/node/fs.ts#L573
  • https://github.com/magic-script/magic-script-polyfills/blob/master/src-ts/node/fs.ts#L607

To use the node functions, simply import "fs" as long as the polyfills plugin for rollup is turned on.

Also, any code from polyfills can be imported directly like:

// Node.js style APIs
import { writeFileSync, writeFile } from "fs";

// simpler internal functions in polyfills
import { writeFileStream } from "magic-script-polyfills/src/fs-promised.js"
panwrona

comment created time in a month

startedtehnokv/picojs

started time in a month

startedandrewrk/zig-window

started time in a month

startedforest-lang/forest-compiler

started time in a month

push eventmagic-script/magic-script-cli

Tim Caswell

commit sha 6d0dcaab3036944fce0f8be230cd4695a9a77674

Prefer browser versions in npm dependencies This is needed to support modules like uuid that have a browser version and a node version. Our polyfills match the browser version better.

view details

push time in a month

delete branch magic-script/magic-script-cli

delete branch : rollup-prefer-browser

delete time in a month

PR merged magic-script/magic-script-cli

Prefer browser versions in npm dependencies

This is needed to support modules like uuid that have a browser version and a node version. Our polyfills match the browser version better.

+1 -1

0 comment

1 changed file

creationix

pr closed time in a month

PR opened magic-script/magic-script-cli

Prefer browser versions in npm dependencies

This is needed to support modules like uuid that have a browser version and a node version. Our polyfills match the browser version better.

+1 -1

0 comment

1 changed file

pr created time in a month

create barnchmagic-script/magic-script-cli

branch : rollup-prefer-browser

created branch time in a month

push eventmagic-script/magic-script-polyfills

Tim Caswell

commit sha 0d16c46e44809c368eef1ec54c3a4ee59b168f7c

Don't crash pretty printer if .toJSON fails

view details

push time in a month

PR closed chrisdickinson/git-list-pack

Make bops dependency a range
+1 -1

0 comment

1 changed file

creationix

pr closed time in 2 months

issue commentcreationix/js-git

support simple HTTP protocol

Indexed db should work in private browsing in chrome, I'm not sure if Firefox ever fixed their version.

But also, it wouldn't be hard to swap out the indexeddb cache with an in memory one.

SoniEx2

comment created time in 2 months

issue commentcreationix/js-git

support simple HTTP protocol

https://www.youtube.com/watch?v=W7CVVxfne_I

SoniEx2

comment created time in 2 months

issue commentcreationix/js-git

support simple HTTP protocol

Ok, fixed the gh-pages issues and the demo is now live.

You can test it by going to https://creationix.github.io/http-clone/?https://soniex2.autistic.space/git-repos/abdl.git

image

Since I'm not on the same domain as soniex2, I needed to use an extension to add the CORS headers.

SoniEx2

comment created time in 2 months

push eventcreationix/http-clone

Tim Caswell

commit sha 2c37eb18c89073af5668068abba715441a7ef6b5

Remove jspm from git repo

view details

push time in 2 months

push eventcreationix/http-clone

Tim Caswell

commit sha de4ae258d54b558d590cf6d55a68bd90888c14de

Actually include pako in git repo

view details

push time in 2 months

issue commentcreationix/js-git

support simple HTTP protocol

I got a working sample here. https://github.com/creationix/http-clone/blob/master/src/main.ts

I ended up coding it from scratch mostly and pulling in a couple of files from js-git.

I'm having trouble with gh-pages caching. It works pretty well if I enable an extension to add CORS headers to ganarchy.

SoniEx2

comment created time in 2 months

push eventcreationix/http-clone

Tim Caswell

commit sha 4be0f3c09fa6fa35d7da972b390664aa2bf84423

Render basic git browsing

view details

push time in 2 months

push eventcreationix/http-clone

Tim Caswell

commit sha 7137199b77806be03f48e1c4f377d2b4dd284810

Get url from hash

view details

push time in 2 months

push eventcreationix/http-clone

Tim Caswell

commit sha fe8343cf5ffc6f797fee2e8c5ef5e8e621947e98

Add nojekyll

view details

push time in 2 months

push eventcreationix/http-clone

Tim Caswell

commit sha 05492fa95820e27aac3e3dda30ddd278eac6caf4

Add pako from jspm

view details

push time in 2 months

push eventcreationix/http-clone

Tim Caswell

commit sha ffce0a089a2ff3cb06bdb6cd75377cc147da0c0f

Move output to docs folder

view details

push time in 2 months

create barnchcreationix/http-clone

branch : master

created branch time in 2 months

created repositorycreationix/http-clone

created time in 2 months

issue commentcreationix/js-git

support simple HTTP protocol

For reference, the CSP rule in question is set via the HTTP server in this header:

Content-Security-Policy: default-src 'none'; connect-src http: https: *:*; img-src 'self'; style-src 'self'; frame-ancestors *:*; base-uri 'none'; script-src 'self' 'unsafe-inline'; form-action 'none'
SoniEx2

comment created time in 2 months

issue commentcreationix/js-git

support simple HTTP protocol

For reference, the CSP rule in question is set via the HTTP server in this header:

Content-Security-Policy: default-src 'none'; connect-src http: https: *:*; img-src 'self'; style-src 'self'; frame-ancestors *:*; base-uri 'none'; script-src 'self' 'unsafe-inline'; form-action 'none'
SoniEx2

comment created time in 2 months

issue commentcreationix/js-git

support simple HTTP protocol

The CSP issue is something your current ganarchy subdomain is opting into and will also prevent the requests. You'll need to make sure your web front-end doesn't disallow requests to the domains with the git repos.

SoniEx2

comment created time in 2 months

issue commentcreationix/js-git

support simple HTTP protocol

For now I can work around the CORS issue in my browser with this extension https://chrome.google.com/webstore/detail/moesif-orign-cors-changer/digfbfaphojjndkpccljibejjbppifbc

But you'll need to update your server to add the headers (or run the web client on the same domain).

SoniEx2

comment created time in 2 months

issue commentcreationix/js-git

support simple HTTP protocol

I can't use "no-cors" mode because that makes the response opaque (the body will always be empty).

It's not possible for a website on a different domain to clone from your server without your server adding CORS headers that allow it. This is a security mechanism of the web, not just some limitation of fetch.

SoniEx2

comment created time in 2 months

issue commentcreationix/js-git

support simple HTTP protocol

Note that you currently can't even request from your other subdomain because of it's CSP settings.

> await fetch("https://soniex2.autistic.space/git-repos/abdl.git/info/refs")
Error: Refused to connect to 'https://soniex2.autistic.space/git-repos/abdl.git/info/refs' because it violates the following Content Security Policy directive: "default-src 'none'". Note that 'connect-src' was not explicitly set, so 'default-src' is used as a fallback.
SoniEx2

comment created time in 2 months

issue commentcreationix/js-git

support simple HTTP protocol

Good news, your repos seem to be the most simple format. I traced a git clone to see what requests a web client would need to make:

$ GIT_CURL_VERBOSE=1 GIT_TRACE=1  git clone --verbose https://soniex2.autistic.space/git-repos/abdl.git --bare 2>&1 | grep GET
> GET /git-repos/abdl.git/info/refs?service=git-upload-pack HTTP/1.1
> GET /git-repos/abdl.git/HEAD HTTP/1.1
> GET /git-repos/abdl.git/objects/b2/59b179f5ceba60a1d04fef07559c0b01720c31 HTTP/1.1
> GET /git-repos/abdl.git/objects/a0/315c67fddc7919e6d6892e8d1eb15f328057a6 HTTP/1.1
> GET /git-repos/abdl.git/objects/c0/67e3258864d5c3bcaf03beee3ff6744cd03fae HTTP/1.1
> GET /git-repos/abdl.git/objects/be/4afe68c46ee28d84ab0082b3c4f01d6bba02db HTTP/1.1
> GET /git-repos/abdl.git/objects/e9/f667fdb1cf4176d9bd62e7fbbecedb60cde008 HTTP/1.1
> GET /git-repos/abdl.git/objects/3f/9f66712aaa071bd3bb32c46e1e4dc1fed13378 HTTP/1.1
> GET /git-repos/abdl.git/objects/90/09c4f4e3bd8519eb133d50c1bd29d8ab108bd3 HTTP/1.1
> GET /git-repos/abdl.git/objects/72/2e26908435ad18ba20c0742a8fda98a29fde51 HTTP/1.1
> GET /git-repos/abdl.git/objects/b4/abf62666666fe26a5e4d7970465b292536d9e6 HTTP/1.1
> GET /git-repos/abdl.git/objects/31/51b2adb8417f4c1d3056c244e3b86a690606a4 HTTP/1.1
> GET /git-repos/abdl.git/objects/8b/35d98f9087296098bb4b69ce663540ebbc0488 HTTP/1.1
> GET /git-repos/abdl.git/objects/16/3b9a366e80f892ec0bc3a30b1790a244d513c9 HTTP/1.1
> GET /git-repos/abdl.git/objects/d2/5baa9c0a78b0007a34a569b774d983b905f0b5 HTTP/1.1
> GET /git-repos/abdl.git/objects/be/3f7b28e564e7dd05eaf59d64adba1a4065ac0e HTTP/1.1
> GET /git-repos/abdl.git/objects/ba/f9414a35a2f48ed1b22644fd4522272fb4bc66 HTTP/1.1
> GET /git-repos/abdl.git/objects/4c/25074288dbe80f599d1d0ad7572bf321353695 HTTP/1.1
> GET /git-repos/abdl.git/objects/df/0eb072ab980a4ef9fad6b60e51ad90795d3e09 HTTP/1.1
> GET /git-repos/abdl.git/objects/8f/60342d533fae1b70d7ddbaedf0d97cbb515bca HTTP/1.1
> GET /git-repos/abdl.git/objects/34/551d96ce021d2264094a4941ef15a64224d195 HTTP/1.1
> GET /git-repos/abdl.git/objects/a3/e98b807c813435ebf5aee56e49e83a2981e426 HTTP/1.1
> GET /git-repos/abdl.git/objects/4d/c391f4d3d5baa85024cc8cc73122c5f6bbed34 HTTP/1.1
> GET /git-repos/abdl.git/objects/3c/d61f3e6902fcdb298c408c3a9d89b029967140 HTTP/1.1
> GET /git-repos/abdl.git/objects/06/f5f35148cfcb371fd8203679e0c25c021a6bce HTTP/1.1
> GET /git-repos/abdl.git/objects/bc/9bfb31bb009a7f3fa8ce79a4f1afdb74ce58c0 HTTP/1.1
> GET /git-repos/abdl.git/objects/ef/cd3dfa8926609a9f62090dd1e0c5deec2b82f8 HTTP/1.1
> GET /git-repos/abdl.git/objects/a8/b17ceb3a8f69219a706b04fdfd629cb915e350 HTTP/1.1
> GET /git-repos/abdl.git/objects/2f/76586c47a42ec68b54f515ae06d2ea338858de HTTP/1.1
> GET /git-repos/abdl.git/objects/83/ca2ca94f75671be795248183a21b1cfb8dc773 HTTP/1.1
> GET /git-repos/abdl.git/objects/98/21bd288c0c7eb0daa46fa3d54eb7e584b786ea HTTP/1.1
> GET /git-repos/abdl.git/objects/57/fb9764240ab131769717863303b9593d6baf7c HTTP/1.1
> GET /git-repos/abdl.git/objects/cb/dcd9dd71f3215520b40b0454cd21c03101bd33 HTTP/1.1
> GET /git-repos/abdl.git/objects/02/532cc7085ebe370ff482d2c56d1d19a3eb5421 HTTP/1.1
> GET /git-repos/abdl.git/objects/3f/ba7311c04e6f14d7fd8080b32ea9b80fc9a0ee HTTP/1.1
> GET /git-repos/abdl.git/objects/fd/4123ec5aba8c6b75586111d960ad59e6816095 HTTP/1.1
> GET /git-repos/abdl.git/objects/35/0ba95f9d1561486d702b9deed6391075851f78 HTTP/1.1
> GET /git-repos/abdl.git/objects/e4/f8272a637dda62b2f483244dbd2b31c588484e HTTP/1.1
> GET /git-repos/abdl.git/objects/04/29b51a212c85a0790eac764bac54e403328a17 HTTP/1.1
> GET /git-repos/abdl.git/objects/b4/971f08758a4428fe90d0a56f58257cdbd728eb HTTP/1.1
> GET /git-repos/abdl.git/objects/2c/6b26aa0b01458195f09b13e02ab98b9925f5a4 HTTP/1.1
> GET /git-repos/abdl.git/objects/3e/179a28a7c4a11eb39c90f1c855180acc5220cc HTTP/1.1
> GET /git-repos/abdl.git/objects/1d/e2e15f8997a2bd450d8aa2d5d57564c1787650 HTTP/1.1
> GET /git-repos/abdl.git/objects/96/1acff9d5c6b3c18533739f162c03b8789ef3d5 HTTP/1.1
> GET /git-repos/abdl.git/objects/4d/f9cdfd9b9e29e8abd01d0032050d9d45998204 HTTP/1.1
> GET /git-repos/abdl.git/objects/2c/ea90d76fd799834c3ad922f36a258e0de07f38 HTTP/1.1
> GET /git-repos/abdl.git/objects/73/808d4740f673f9639db321ac9b5191d9e8c1fc HTTP/1.1
> GET /git-repos/abdl.git/objects/ba/f0185c8b30287ccb90a470162bd7a4e7b3ce7c HTTP/1.1
> GET /git-repos/abdl.git/objects/3f/ed79f1de6032726db2c49b80f91e573823958a HTTP/1.1
> GET /git-repos/abdl.git/objects/d3/2a241c82cfc3f774b82d71c73d4b4e5d0aa965 HTTP/1.1
> GET /git-repos/abdl.git/objects/54/7bb68545ee09c1bd803d6e75a72db092418afb HTTP/1.1
> GET /git-repos/abdl.git/objects/5a/b7efb79e88602086f8343685355239107bf7f3 HTTP/1.1
> GET /git-repos/abdl.git/objects/65/549edbc232774810c4c30b1986f1c9e966b052 HTTP/1.1
> GET /git-repos/abdl.git/objects/d3/7053860259ad58a667e104011e680a12bbdc8a HTTP/1.1
> GET /git-repos/abdl.git/objects/fb/0b8f6d355569a8435f3427f24eb9757a76ca03 HTTP/1.1
> GET /git-repos/abdl.git/objects/a6/200fd659c806424b53bc2ec0575622f62ac3b5 HTTP/1.1
> GET /git-repos/abdl.git/objects/6f/4df5d08e147f74f91bf7ce2f882dca1390c721 HTTP/1.1
> GET /git-repos/abdl.git/objects/d7/51187bf56393a1582c9111eb2a4703d541ddde HTTP/1.1
> GET /git-repos/abdl.git/objects/c3/9a45e956441013024accdd930bc6ee46c1fd8a HTTP/1.1
> GET /git-repos/abdl.git/objects/f9/eedccc8b7f0c83fa1573b6b7473a003962f3c8 HTTP/1.1
> GET /git-repos/abdl.git/objects/06/95e3f08c034a866204a1443a5860e912a30d0f HTTP/1.1
> GET /git-repos/abdl.git/objects/af/e12d712f4364f703ed1b19f02cf058dd09fb0f HTTP/1.1
> GET /git-repos/abdl.git/objects/73/7d0df71b03234ba6fc44d8edc3467d581822bc HTTP/1.1
> GET /git-repos/abdl.git/objects/53/4bcf491e8669bcf473631a4eb3c1cae519343d HTTP/1.1
> GET /git-repos/abdl.git/objects/27/31716fccaa2820d93e7bebd50acfea5c8876ea HTTP/1.1
> GET /git-repos/abdl.git/objects/6c/87b7151c1f7dbf07a309ca6e2cc71800323089 HTTP/1.1
> GET /git-repos/abdl.git/objects/0e/c1018a0a15198e6acd518f537aa5efb70f745a HTTP/1.1
> GET /git-repos/abdl.git/objects/d9/51c7b0d752d482815491b015f75701c3df1020 HTTP/1.1
> GET /git-repos/abdl.git/objects/7f/748df5f3e341736db39977b9d3e1c3d196d054 HTTP/1.1
> GET /git-repos/abdl.git/objects/a1/b8ddf536259a04362804dbc0cf368c1fead5a2 HTTP/1.1
> GET /git-repos/abdl.git/objects/8d/de74206f433f0ab109678629d9856a48e144dd HTTP/1.1
> GET /git-repos/abdl.git/objects/fe/50369a55d087861bd288315e685c7623ca8ab6 HTTP/1.1
> GET /git-repos/abdl.git/objects/58/f49478e78c8b92ed00dc977c89e365af33e5a3 HTTP/1.1
> GET /git-repos/abdl.git/objects/dd/309c1ad5b65dd2d8f9cb98b00f4ddd87637234 HTTP/1.1
> GET /git-repos/abdl.git/objects/b8/2d59a79eaf42e6e90347acfb24f77bfc4026b9 HTTP/1.1
> GET /git-repos/abdl.git/objects/c6/9ef69afa979d7ab71c6cfdedd3b8e1d6afc116 HTTP/1.1
> GET /git-repos/abdl.git/objects/36/a629caddbb71eed332a5d55ded21923a54a5d6 HTTP/1.1
> GET /git-repos/abdl.git/objects/41/f28ebbd4fc2d03baf4136eb3345d25ac967bb3 HTTP/1.1
> GET /git-repos/abdl.git/objects/2c/d52aa1fafd8e471edab13ac401b01fbdcf79e2 HTTP/1.1
> GET /git-repos/abdl.git/objects/4e/8277e4b1bc9b5d5983b8278fbcf9a232c05a4e HTTP/1.1
> GET /git-repos/abdl.git/objects/62/1203d3239adf80fea769eda93f727cc6f4ac5a HTTP/1.1
> GET /git-repos/abdl.git/objects/f6/021c41887a70926346bce4742ccc3515e7a16f HTTP/1.1
> GET /git-repos/abdl.git/objects/c5/eef7033bdb15ef0df7f33d3064b62db0909ec4 HTTP/1.1
> GET /git-repos/abdl.git/objects/89/ed7c1d085324423f1018b55ae447a8269d717e HTTP/1.1
> GET /git-repos/abdl.git/objects/d9/0a0becf445cc4a0db74cdd0cc5e44133ced048 HTTP/1.1
> GET /git-repos/abdl.git/objects/cf/adb3cd191d1af529af6775b8b2f3491b7a1f59 HTTP/1.1
> GET /git-repos/abdl.git/objects/e1/22005c39752197c722708a363236b20d38c666 HTTP/1.1
> GET /git-repos/abdl.git/objects/ca/4d3efeb3ada7075410630e6f2820f176d13a61 HTTP/1.1
> GET /git-repos/abdl.git/objects/60/bce5a1d6fc049d40d0f0a7f946a65c35554a2e HTTP/1.1
> GET /git-repos/abdl.git/objects/de/58b9b5c1ab40f586eea107bb2ed984dec948a5 HTTP/1.1
> GET /git-repos/abdl.git/objects/09/9e8f957f3c969c148e6106bf50787d471c0d04 HTTP/1.1
> GET /git-repos/abdl.git/objects/f8/b8c80d13d6fd4350458533e61fd21fe8e5d1c1 HTTP/1.1
> GET /git-repos/abdl.git/objects/03/b9cf3e2105dfe0dda0470cf03926c89180340f HTTP/1.1
> GET /git-repos/abdl.git/objects/0d/164950a84a8e172c592eb5d37a5dc817cd3cf6 HTTP/1.1
> GET /git-repos/abdl.git/objects/f2/b77e7f73b443cbbbada16d9ce6fa28233ddd22 HTTP/1.1
> GET /git-repos/abdl.git/objects/4f/5241f6cb55a8afbe46c849b96a75e395e30ea0 HTTP/1.1
> GET /git-repos/abdl.git/objects/9c/ed95c0441c4572c3b02d88efd203ef95b8b73a HTTP/1.1
> GET /git-repos/abdl.git/objects/c0/55c6ae3d545b928fbb2b77e6f0ddc31fac84f8 HTTP/1.1
> GET /git-repos/abdl.git/objects/80/3b633a4920a80396098f57483ae9883e4e5824 HTTP/1.1
> GET /git-repos/abdl.git/objects/f6/34e813f264240dcf4cf742fb27f93fda9006c3 HTTP/1.1
> GET /git-repos/abdl.git/objects/1b/26ad799217af7e187fdae78e862a6bf46e5591 HTTP/1.1
> GET /git-repos/abdl.git/objects/d8/cb86c7639c8b5b36e5d6898acee9bce6d7ad83 HTTP/1.1
> GET /git-repos/abdl.git/objects/17/2e0a4bcf176b8ba96eb97f0410b87545d26219 HTTP/1.1
> GET /git-repos/abdl.git/objects/1a/83ed408bda6dd94275468c6c62c2afc7127fe0 HTTP/1.1
> GET /git-repos/abdl.git/objects/5d/96459ac6ab9ff89c17f1df7ccc35efb0a5cc98 HTTP/1.1
> GET /git-repos/abdl.git/objects/02/efd3875bb2c3f45b297b6409204e8b0138251f HTTP/1.1
> GET /git-repos/abdl.git/objects/c8/fb32aa865cc3db16311bd6524c6f22ea9ab93c HTTP/1.1
> GET /git-repos/abdl.git/objects/ee/305066b729a8859cbbc038425d2e4d5623fefb HTTP/1.1
> GET /git-repos/abdl.git/objects/15/7745c4a42bb2f05945beb6ba9fbe5d8aa6b12a HTTP/1.1
> GET /git-repos/abdl.git/objects/39/df4a049ce23e9fd50e6e390d84c2f63564fcf5 HTTP/1.1
> GET /git-repos/abdl.git/objects/c8/53a49df35a1b582d7e5e800fa3b42e0d16efca HTTP/1.1
> GET /git-repos/abdl.git/objects/de/5f53aa8cf6326df79cc20aade56104fbea9827 HTTP/1.1
> GET /git-repos/abdl.git/objects/73/41341afce5825b14c417a3714a26c69ab1447b HTTP/1.1
> GET /git-repos/abdl.git/objects/84/b7d4cb8d9ad36fa637ce6812b87ff94562f2fc HTTP/1.1
> GET /git-repos/abdl.git/objects/ce/213f201e6bd70965531eda4346883259d987ba HTTP/1.1
> GET /git-repos/abdl.git/objects/0f/74bd87a23b515b45da7e6f5d9cc82380443dab HTTP/1.1
> GET /git-repos/abdl.git/objects/72/cd04bc0b3375f060756f03160b1f4165537622 HTTP/1.1
> GET /git-repos/abdl.git/objects/08/0ab3feaa856a8b973de3a5bfe9e477220d3cd3 HTTP/1.1
> GET /git-repos/abdl.git/objects/83/3aad3f457461d7aa81cae843fe91d96d191547 HTTP/1.1
> GET /git-repos/abdl.git/objects/ba/c1257b0e4639fe0454ad47e80d69fe80489ff6 HTTP/1.1
> GET /git-repos/abdl.git/objects/4b/96af709001f62d40fa68c6dd508f89c968fb3e HTTP/1.1
> GET /git-repos/abdl.git/objects/93/17643b2792bff6beab8a455bf2f06604c39a18 HTTP/1.1

As you can see, it tries to start with a smart http client, but the server ignores the smart part and speaks the dumb protocol. It then proceeds to grab the loose objects one by one.

It sounds like you'll want an API that caches objects locally in indexedDB grabbing objects as needed on demand and renders some form of UI from the API that reads from the object cache.

But I also did a quick test from several domains and unless your web client is the same domain, your fetch requests will be blocked by CORS:

Access to fetch at 'https://soniex2.autistic.space/git-repos/abdl.git/info/refs' from origin 'https://exploder.creationix.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
SoniEx2

comment created time in 2 months

push eventmagic-script/magic-script-webgl-prism-controller

Tim Caswell

commit sha 6115e46a047f4bcd90ecbc303b43ba3de4e0393d

Update README.md

view details

push time in 2 months

push eventmagic-script/magic-script-typings

Tim Caswell

commit sha a4c044182f7ed77f81f38e83f337dbce7fe57494

Add lunr dependency for faster search

view details

push time in 2 months

push eventmagic-script/magic-script-typings

Tim Caswell

commit sha 02cbbbc4a65e36282a50752365b00f3908acd68d

Add lunr dependency for faster search

view details

push time in 2 months

push eventmagic-script/magic-script-typings

Tim Caswell

commit sha a16e8cf0bc266f62bbb3dfda4f4c5c7d49f8814b

Update main.js to use new search index

view details

push time in 2 months

push eventmagic-script/magic-script-typings

Tim Caswell

commit sha a1a4bb016f06f0f422652e3c6a17d0b4455810ff

Update main.js to have new search logic

view details

push time in 2 months

push eventmagic-script/magic-script-typings

Tim Caswell

commit sha 3a84c04967dba80bbe0b1aa81da696709a49b6a7

Fix build command in README

view details

push time in 2 months

push eventmagic-script/magic-script-typings

Tim Caswell

commit sha e37d7f192f732c40ceea51bb3035f3ebd5be0771

Add missing search index

view details

push time in 2 months

delete branch magic-script/magic-script-typings

delete branch : add_manual_bindings

delete time in 2 months

delete branch magic-script/magic-script-typings

delete branch : website

delete time in 2 months

push eventmagic-script/magic-script-typings

Tim Caswell

commit sha 298b17905ed332af5e68823cb070a8d5982b5030

Rebuild using typedoc html and versions (#13)

view details

push time in 2 months

delete branch magic-script/magic-script-typings

delete branch : gh-pages-preview

delete time in 2 months

PR merged magic-script/magic-script-typings

Rebuild using typedoc html and versions

This was built using the new build system in #12

+441859 -453637

0 comment

2149 changed files

creationix

pr closed time in 2 months

delete branch magic-script/magic-script-typings

delete branch : switch-to-typedoc-html

delete time in 2 months

push eventmagic-script/magic-script-typings

Tim Caswell

commit sha 94a74fb4eaa82a43cf573be3e84fc9eeff2ad23b

Add versions by switching to typedoc html (#12) * Add versions * Update README for new workflow * Improve build script * Add back in legal footer and actually fix build script * Update gitignore * Add latest to version dropdown that redirects to top level * Don't duplicate latest version * Properly clean old gh-pages content when rebuilding

view details

push time in 2 months

PR opened magic-script/magic-script-typings

Rebuild using typedoc html and versions

This was built using the new build system in #12

+441859 -453637

0 comment

2149 changed files

pr created time in 2 months

push eventmagic-script/magic-script-typings

Tim Caswell

commit sha 0ce6ffedc2b5ea9e5ed6afd3d8598727ac0bde3e

Properly clean old gh-pages content when rebuilding

view details

push time in 2 months

push eventmagic-script/magic-script-typings

Tim Caswell

commit sha d5a912e27e0e70e98cda724e1c5aa870a5914aea

Rebuild using typedoc html and versions

view details

push time in 2 months

create barnchmagic-script/magic-script-typings

branch : gh-pages-preview

created branch time in 2 months

push eventmagic-script/magic-script-typings

Tim Caswell

commit sha 3993be34f15a2eb4f768e1012b39476172dcc14e

Don't duplicate latest version

view details

push time in 2 months

push eventmagic-script/magic-script-typings

Tim Caswell

commit sha 26ee58e2fdbb1738d7673df1b79bf4e3fbe8e1c5

Add latest to version dropdown that redirects to top level

view details

push time in 2 months

push eventmagic-script/magic-script-typings

Tim Caswell

commit sha 1d81047e6e7202bf935b73424dd299dbad989409

Update gitignore

view details

push time in 2 months

push eventmagic-script/magic-script-typings

Tim Caswell

commit sha e6999f88e8b5c0d2454504d8884e2ebba3c57239

Improve build script

view details

Tim Caswell

commit sha 2b24cd3b5352cf11316c42991463c460d7aa862b

Add back in legal footer and actually fix build script

view details

push time in 2 months

push eventmagic-script/magic-script-typings

Tim Caswell

commit sha fc68168664f00694413a1a3b843ee2d93d37c741

Update README for new workflow

view details

push time in 2 months

create barnchmagic-script/magic-script-typings

branch : switch-to-typedoc-html

created branch time in 2 months

push eventmagic-script/magic-script-typings

Tim Caswell

commit sha ed78bdfd2a8cbb90af8a954b604aed0b0a687cda

Add versions

view details

push time in 2 months

push eventmagic-script/magic-script-typings

Tim Caswell

commit sha dbdb34bc0b75e75cef89809de5e12d93111bca49

Remove unused .gitignore

view details

push time in 2 months

push eventmagic-script/magic-script-typings

Tim Caswell

commit sha def9d7306453fcf38546b1efb44e740b39ed3f0e

Remove unused .gitignore

view details

push time in 2 months

push eventmagic-script/magic-script-typings

Tim Caswell

commit sha dc8a2b2d20a27ae540a5bf2384bb7861e3505022

Add in v1.6 and v1.7 versioned docs generated directly from typedoc

view details

push time in 2 months

push eventmagic-script/magic-script-typings

Tim Caswell

commit sha c756a5e32444cf2eae946d6313e3fc5fbf7e7c54

Get docs building

view details

push time in 2 months

push eventmagic-script/magic-script-typings

Tim Caswell

commit sha 167bcf1e9b1d1b8f48347a3da9a46964cf4e9f24

Move v1.6.x typings into their own branch

view details

push time in 2 months

create barnchmagic-script/magic-script-typings

branch : website

created branch time in 2 months

more