JSPM

@iameli/syntax

0.1.5
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 3
  • Score
    100M100P100Q30165F
  • License MIT

Validation for atproto identifiers and formats: DID, handle, NSID, AT URI, etc

Package Exports

  • @iameli/syntax
  • @iameli/syntax/dist/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@iameli/syntax) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

@iameli/syntax: validation helpers for identifier strings

Validation logic for atproto identifiers - DIDs, Handles, NSIDs, and AT URIs.

NPM Github CI Status

Usage

Handles

Syntax specification: https://atproto.com/specs/handle

import { isValidHandle, ensureValidHandle, isValidDid } from '@iameli/syntax'

isValidHandle('alice.test') // returns true
ensureValidHandle('alice.test') // returns void

isValidHandle('al!ce.test') // returns false
ensureValidHandle('al!ce.test') // throws

ensureValidDid('did:method:val') // returns void
ensureValidDid(':did:method:val') // throws

NameSpaced IDs (NSID)

Syntax specification: https://atproto.com/specs/nsid

import { NSID } from '@iameli/syntax'

const id1 = NSID.parse('com.example.foo')
id1.authority // => 'example.com'
id1.name // => 'foo'
id1.toString() // => 'com.example.foo'

const id2 = NSID.create('example.com', 'foo')
id2.authority // => 'example.com'
id2.name // => 'foo'
id2.toString() // => 'com.example.foo'

const id3 = NSID.create('example.com', 'someRecord')
id3.authority // => 'example.com'
id3.name // => 'someRecord'
id3.toString() // => 'com.example.someRecord'

NSID.isValid('com.example.foo') // => true
NSID.isValid('com.example.someRecord') // => true
NSID.isValid('example.com/foo') // => false
NSID.isValid('foo') // => false

AT URI

Syntax specification: https://atproto.com/specs/at-uri-scheme

import { AtUri } from '@iameli/syntax'

const uri = new AtUri('at://bob.com/com.example.post/1234')
uri.protocol // => 'at:'
uri.origin // => 'at://bob.com'
uri.hostname // => 'bob.com'
uri.collection // => 'com.example.post'
uri.rkey // => '1234'

License

This project is dual-licensed under MIT and Apache 2.0 terms:

Downstream projects and end users may chose either license individually, or both together, at their discretion. The motivation for this dual-licensing is the additional software patent assurance provided by Apache 2.0.