1.0.1 • Published 6 months ago

@synonymdev/slashtags-url v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
6 months ago

slashtags-url

Encodes and decodes Slashtags URLs

Installation

npm install @synonymdev/slashtags-url

Usage

import { format, parse, encode } from '@synonymdev/slashtags-url';

const url = format(key, {
  path: '/dir/file.json',
  query: { foo: 'bar' },
  fragment: { encryptionKey: '42' },
});
// url: slash://<z-base32 key>/dir/file.json?foo=bar#encryptionKey=42

const parsed = parse(url);
// {
//   protocol: 'slash:',
//   key: key,
//   path: '/dir/file.json',
//   query: { foo: 'bar' },
//   fragment: '#encryptionKey=42',
//   privateQuery: { encryptionKey: '42' }
// }

const id = encode(parsed.key);
// z-base32 key>

API

const id = SlashURL.encode(key)

Encodes a 32-bytes key in z-base32.

const url = SlashURL.format(key, opts)

Creates a URL from a 32-bytes key:

key must be a Buffer or an ArrayBuffer. opts includes:

  • protocol custom protocol, defaults to slash:
  • path a string representing the path, defaults to /.
  • query a query string or a key-value object to format as the query part of the url.
  • fragment a fragment string or a key-value object to format as a private query in the fragment.

const url = SlashURL.parse(url)

Parses a url to return the following:

  • key Uint8Array of the key parsed from the host part of the url.
  • id z-base32 encoding of the key, useful as identifier wherever a URL is not suitable (file names).
  • protocol the protocol part of the url.
  • path the path part of the url.
  • query the query parsed as a key value object.
  • fragment string of the fragment part.
  • privateQuery: parsed private query from the fragment part of the url.