UNPKG

@multiformats/multiaddr-matcher

Version:
373 lines 9.75 kB
/** * @packageDocumentation * * This module exports various matchers that can be used to infer the type of a * passed multiaddr. * * @example * * ```ts * import { multiaddr } from '@multiformats/multiaddr' * import { DNS } from '@multiformats/multiaddr-matcher' * * const ma = multiaddr('/dnsaddr/example.org') * * DNS.matches(ma) // true - this is a multiaddr with a DNS address at the start * ``` * * @example * * The default matching behaviour ignores any subsequent tuples in the multiaddr. * If you want stricter matching you can use `.exactMatch`: * * ```ts * import { multiaddr } from '@multiformats/multiaddr' * import { DNS, Circuit } from '@multiformats/multiaddr-matcher' * * const ma = multiaddr('/dnsaddr/example.org/p2p/QmFoo/p2p-circuit/p2p/QmBar') * * DNS.exactMatch(ma) // false - this address has extra tuples after the DNS component * Circuit.matches(ma) // true * Circuit.exactMatch(ma) // true - the extra tuples are circuit relay related * ``` */ import type { Multiaddr } from '@multiformats/multiaddr'; /** * A matcher accepts multiaddr components and either fails to match and returns * false or returns a sublist of unmatched components */ export interface Matcher { match(parts: string[]): string[] | false; pattern: string; } /** * A MultiaddrMatcher allows interpreting a multiaddr as a certain type of * multiaddr */ export interface MultiaddrMatcher { /** * The matchers that make up this MultiaddrMatcher - useful if you want to * make your own custom matchers */ matchers: Matcher[]; /** * Returns true if the passed multiaddr can be treated as this type of * multiaddr */ matches(ma: Multiaddr): boolean; /** * Returns true if the passed multiaddr terminates as this type of * multiaddr */ exactMatch(ma: Multiaddr): boolean; } export declare const PEER_ID: MultiaddrMatcher; /** * Matches dns4 addresses. * * Use {@link DNS DNS} instead to match any type of DNS address. * * @example * * ```ts * import { multiaddr } from '@multiformats/multiaddr' * import { DNS4 } from '@multiformats/multiaddr-matcher' * * DNS4.matches(multiaddr('/dns4/example.org')) // true * ``` */ export declare const DNS4: MultiaddrMatcher; /** * Matches dns6 addresses. * * Use {@link DNS DNS} instead to match any type of DNS address. * * @example * * ```ts * import { multiaddr } from '@multiformats/multiaddr' * import { DNS6 } from '@multiformats/multiaddr-matcher' * * DNS6.matches(multiaddr('/dns6/example.org')) // true * ``` */ export declare const DNS6: MultiaddrMatcher; /** * Matches dnsaddr addresses. * * Use {@link DNS DNS} instead to match any type of DNS address. * * @example * * ```ts * import { multiaddr } from '@multiformats/multiaddr' * import { DNSADDR } from '@multiformats/multiaddr-matcher' * * DNSADDR.matches(multiaddr('/dnsaddr/example.org')) // true * DNSADDR.matches(multiaddr('/dnsaddr/example.org/p2p/Qmfoo')) // true * ``` */ export declare const DNSADDR: MultiaddrMatcher; /** * Matches any dns address. * * @example * * ```ts * import { multiaddr } from '@multiformats/multiaddr' * import { DNS } from '@multiformats/multiaddr-matcher' * * DNS.matches(multiaddr('/dnsaddr/example.org')) // true * DNS.matches(multiaddr('/dns4/example.org')) // true * DNS.matches(multiaddr('/dns6/example.org')) // true * DNS.matches(multiaddr('/dns6/example.org/p2p/Qmfoo')) // true * ``` */ export declare const DNS: MultiaddrMatcher; /** * A matcher for addresses that start with IP or DNS tuples. * * @example * * ```ts * import { multiaddr } from '@multiformats/multiaddr' * import { IP_OR_DOMAIN } from '@multiformats/multiaddr-matcher' * * IP_OR_DOMAIN.matches(multiaddr('/ip4/123.123.123.123')) // true * IP_OR_DOMAIN.matches(multiaddr('/ip4/123.123.123.123/p2p/QmFoo')) // true * IP_OR_DOMAIN.matches(multiaddr('/dns/example.com/p2p/QmFoo')) // true * IP_OR_DOMAIN.matches(multiaddr('/p2p/QmFoo')) // false * ``` */ export declare const IP_OR_DOMAIN: MultiaddrMatcher; /** * Matches ip4 addresses. * * Use {@link IP IP} instead to match any ip4/ip6 address. * * @example * * ```ts * import { multiaddr } from '@multiformats/multiaddr' * import { IP4 } from '@multiformats/multiaddr-matcher' * * const ma = multiaddr('/ip4/123.123.123.123') * * IP4.matches(ma) // true * ``` */ export declare const IP4: MultiaddrMatcher; /** * Matches ip6 addresses. * * Use {@link IP IP} instead to match any ip4/ip6 address. * * @example * * ```ts * import { multiaddr } from '@multiformats/multiaddr' * import { IP6 } from '@multiformats/multiaddr-matcher' * * const ma = multiaddr('/ip6/fe80::1cc1:a3b8:322f:cf22') * * IP6.matches(ma) // true * ``` */ export declare const IP6: MultiaddrMatcher; /** * Matches ip4 or ip6 addresses. * * @example * * ```ts * import { multiaddr } from '@multiformats/multiaddr' * import { IP } from '@multiformats/multiaddr-matcher' * * IP.matches(multiaddr('/ip4/123.123.123.123')) // true * IP.matches(multiaddr('/ip6/fe80::1cc1:a3b8:322f:cf22')) // true * ``` */ export declare const IP: MultiaddrMatcher; /** * Matches TCP addresses. * * @example * * ```ts * import { multiaddr } from '@multiformats/multiaddr' * import { TCP } from '@multiformats/multiaddr-matcher' * * TCP.matches(multiaddr('/ip4/123.123.123.123/tcp/1234')) // true * ``` */ export declare const TCP: MultiaddrMatcher; /** * Matches UDP addresses. * * @example * * ```ts * import { multiaddr } from '@multiformats/multiaddr' * import { UDP } from '@multiformats/multiaddr-matcher' * * UDP.matches(multiaddr('/ip4/123.123.123.123/udp/1234')) // true * ``` */ export declare const UDP: MultiaddrMatcher; /** * Matches QUIC addresses. * * @example * * ```ts * import { multiaddr } from '@multiformats/multiaddr' * import { QUIC } from '@multiformats/multiaddr-matcher' * * QUIC.matches(multiaddr('/ip4/123.123.123.123/udp/1234/quic')) // true * ``` */ export declare const QUIC: MultiaddrMatcher; /** * Matches QUICv1 addresses. * * @example * * ```ts * import { multiaddr } from '@multiformats/multiaddr' * import { QUICV1 } from '@multiformats/multiaddr-matcher' * * QUICV1.matches(multiaddr('/ip4/123.123.123.123/udp/1234/quic-v1')) // true * ``` */ export declare const QUICV1: MultiaddrMatcher; /** * Matches WebSocket addresses. * * @example * * ```ts * import { multiaddr } from '@multiformats/multiaddr' * import { WebSockets } from '@multiformats/multiaddr-matcher' * * WebSockets.matches(multiaddr('/ip4/123.123.123.123/tcp/1234/ws')) // true * ``` */ export declare const WebSockets: MultiaddrMatcher; /** * Matches secure WebSocket addresses. * * @example * * ```ts * import { multiaddr } from '@multiformats/multiaddr' * import { WebSocketsSecure } from '@multiformats/multiaddr-matcher' * * WebSocketsSecure.matches(multiaddr('/ip4/123.123.123.123/tcp/1234/wss')) // true * ``` */ export declare const WebSocketsSecure: MultiaddrMatcher; /** * Matches WebRTC-direct addresses. * * @example * * ```ts * import { multiaddr } from '@multiformats/multiaddr' * import { WebRTCDirect } from '@multiformats/multiaddr-matcher' * * WebRTCDirect.matches(multiaddr('/ip4/123.123.123.123/tcp/1234/p2p/QmFoo/webrtc-direct/certhash/u....')) // true * ``` */ export declare const WebRTCDirect: MultiaddrMatcher; /** * Matches WebTransport addresses. * * @example * * ```ts * import { multiaddr } from '@multiformats/multiaddr' * import { WebRTCDirect } from '@multiformats/multiaddr-matcher' * * WebRTCDirect.matches(multiaddr('/ip4/123.123.123.123/udp/1234/quic-v1/webtransport/certhash/u..../certhash/u..../p2p/QmFoo')) // true * ``` */ export declare const WebTransport: MultiaddrMatcher; /** * Matches peer addresses * * @example * * ```ts * import { multiaddr } from '@multiformats/multiaddr' * import { P2P } from '@multiformats/multiaddr-matcher' * * P2P.matches(multiaddr('/ip4/123.123.123.123/tcp/1234/p2p/QmFoo')) // true * ``` */ export declare const P2P: MultiaddrMatcher; /** * Matches circuit relay addresses * * @example * * ```ts * import { multiaddr } from '@multiformats/multiaddr' * import { Circuit } from '@multiformats/multiaddr-matcher' * * Circuit.matches(multiaddr('/ip4/123.123.123.123/tcp/1234/p2p/QmRelay/p2p-circuit/p2p/QmTarget')) // true * ``` */ export declare const Circuit: MultiaddrMatcher; /** * Matches WebRTC addresses * * @example * * ```ts * import { multiaddr } from '@multiformats/multiaddr' * import { WebRTC } from '@multiformats/multiaddr-matcher' * * WebRTC.matches(multiaddr('/ip4/123.123.123.123/tcp/1234/p2p/QmRelay/p2p-circuit/webrtc/p2p/QmTarget')) // true * ``` */ export declare const WebRTC: MultiaddrMatcher; /** * Matches HTTP addresses * * @example * * ```ts * import { multiaddr } from '@multiformats/multiaddr' * import { HTTP } from '@multiformats/multiaddr-matcher' * * HTTP.matches(multiaddr('/dns/example.org/http')) // true * ``` */ export declare const HTTP: MultiaddrMatcher; /** * Matches HTTPS addresses * * @example * * ```ts * import { multiaddr } from '@multiformats/multiaddr' * import { HTTP } from '@multiformats/multiaddr-matcher' * * HTTP.matches(multiaddr('/dns/example.org/tls/http')) // true * ``` */ export declare const HTTPS: MultiaddrMatcher; /** * Matches Memory addresses * * @example * * ```ts * import { multiaddr } from '@multiformats/multiaddr' * import { Memory } from '@multiformats/multiaddr-matcher' * * Memory.matches(multiaddr('/memory/0xDEADBEEF')) // true * ``` */ export declare const Memory: MultiaddrMatcher; //# sourceMappingURL=index.d.ts.map