Skip to content

Instantly share code, notes, and snippets.

View alanshaw's full-sized avatar
🌶️
https://storacha.network

ash alanshaw

🌶️
https://storacha.network
View GitHub Profile
@alanshaw
alanshaw / bafkqaaa.txt
Created November 29, 2024 16:14
zero-length "identity" multihash with "raw" codec
\x01\x55\x00\x00
bafkqaaa
@alanshaw
alanshaw / cli.sh
Created November 26, 2024 14:38
Env for storacha CLI STAGING
export STORACHA_SERVICE_DID=did:web:staging.upload.storacha.network
export STORACHA_SERVICE_URL=https://staging.upload.storacha.network
export STORACHA_STORE_NAME=storacha-cli-staging
export STORACHA_RECEIPTS_URL=https://staging.upload.storacha.network/receipt/
@alanshaw
alanshaw / mkdelegate.js
Last active November 7, 2024 22:18
Delegations for the Storacha Network
// node mkdelegate.js <private-key>
import { delegate } from '@ucanto/core'
import * as ed25519 from '@ucanto/principal/ed25519'
import * as Link from 'multiformats/link'
import { identity } from 'multiformats/hashes/identity'
import { base64 } from 'multiformats/bases/base64'
import * as DID from '@ipld/dag-ucan/did'
const indexingServiceDID = 'did:web:staging.indexer.storacha.network'
const uploadServiceDID = 'did:web:staging.upload.storacha.network'
@alanshaw
alanshaw / get-commitments.js
Created October 31, 2024 11:49
Get the commitments
const cids = [
'bafybeiei72mvsmckxh6jliaxtgtmktcucw6zjktmjko6lpdb76uy677nym',
'bafybeige7or65xqaqzbrsrnyf3alrcmr3mbkiwvbevc3hpkpiydbixjcte',
'bafybeidovp3gf6h6aye6vv25o3r6ayc32c3znzgijtvqqmqrnsfcljvz7i',
'bafybeigqhr6wptfw6a2jjvvd6alq73mgnn2ugfmnnzdksmaid44divhnju',
'bafybeicih3gpoxip4n2ozuqqfskdwymxcr27i6xgtdmnivuhy5q76weklu',
'bafybeia2fnngg5gzhc6v6ul23j67m4b4j3ekyxnonvyx5n4uo7jtq236my',
'bafybeieymcyqlnif4rtzt3cfterlyudr6lz6bpt3kkchji7bxgcjq3a4iy',
'bafybeibh4swn5lir77xo3sdxps5h3kl6xygmhutdkqwewnyrdvjz435nue',
'bafybeifef47tawlpfdjlrmvohjrnxgozarrwxkrdcqx3mmwigf4fakfr6a',
@alanshaw
alanshaw / gocov.sh
Last active September 18, 2024 09:21
Golang coverage
go test -coverprofile=c.out -v ./...
go tool cover -html="c.out"
# or
go install github.com/cancue/covreport@latest
go test -coverprofile=c.out -v ./...
~/go/bin/covreport -i c.out
open cover.html
@alanshaw
alanshaw / getElementsState.js
Created July 21, 2017 16:38
Nightwatch commands for getting state of multiple elements
// Get state for multiple elements
// getState is passed an element and should return a promise that gets some state
// e.g. http://nightwatchjs.org/api#elementIdText
// Callback will be called with an array of the state values once they're all resolved
exports.command = function getElementsState (selector, getState, callback) {
this.elements('css selector', selector, function (elements) {
const values = elements.value.map(getState)
Promise.all(values).then(callback)
})
return this
@alanshaw
alanshaw / w3-up-server.md
Last active June 25, 2024 10:46
How do you use w3up on the server/in CI where there's no persistent filesystem?

On your local computer:

  1. Create a keypair for the server

    npx ucan-key ed --json

    Note down did and key values!

const sumUsage = client => {
const period = getPeriod(new Date())
/** @type {Record<ProviderDID, Record<SpaceDID, number>>} */
let totalBySpace = {}
let total = 0
for (const account of Object.values(client.accounts())) {
const subscriptions = await client.capability.subscriptions.list(account.did())
for (const { consumers } of subscriptions.results) {
for (const space of consumers) {
const report = await client.capability.usage.report(space)
@alanshaw
alanshaw / streaming-iterables.md
Last active September 22, 2023 23:49
Streaming iterables WAT?

Streaming iterables

Your friends from pull stream, but in terms of async iterators.

source it

A "source" is something that can be consumed. It is an iterable object.

const ints = {
@alanshaw
alanshaw / fx.md
Created September 19, 2023 18:06
How fx invocations work

Want to do an async task of adding two number together? Not problem.

invoke do/async-addition 40, 2
  # create a delegation for the result and get the CID
  result-cid = cid-for(delegate(do/async-addition-result 40, 2))

  # create a receipt for this invocation, including the CID of the result delegation
  receipt = generate-receipt-for(do/async-addition 40, 2, fx.join: result-cid)