From 74b926e2272a51d8a79a161d858efc6f4e2ba84b Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Mon, 25 Mar 2024 10:38:16 -0700 Subject: [PATCH] Separate general purpose utils and protocol-related utils --- src/connect/Subscription.ts | 6 +++--- src/index.ts | 23 +++++++++++++++++++++++ src/{util => lib}/Deferred.ts | 0 src/{util => lib}/Emitter.ts | 0 src/{util => lib}/Fluent.ts | 0 src/{util => lib}/LRUCache.ts | 0 src/{util => lib}/Queue.ts | 0 src/{util => lib}/Tools.ts | 0 src/lib/index.ts | 7 +++++++ src/{util => lib}/normalize-url/index.ts | 0 src/{util => lib}/normalize-url/license | 0 src/{util => lib}/normalize-url/readme.md | 0 src/{util => protocol}/Address.ts | 0 src/{util => protocol}/Events.ts | 3 +-- src/{util => protocol}/Filters.ts | 0 src/{util => protocol}/Kinds.ts | 2 +- src/{util => protocol}/Relays.ts | 3 +-- src/{util => protocol}/Router.ts | 2 +- src/{util => protocol}/Tags.ts | 5 ++--- tsc-multi.json | 1 - 20 files changed, 39 insertions(+), 13 deletions(-) create mode 100644 src/index.ts rename src/{util => lib}/Deferred.ts (100%) rename src/{util => lib}/Emitter.ts (100%) rename src/{util => lib}/Fluent.ts (100%) rename src/{util => lib}/LRUCache.ts (100%) rename src/{util => lib}/Queue.ts (100%) rename src/{util => lib}/Tools.ts (100%) create mode 100644 src/lib/index.ts rename src/{util => lib}/normalize-url/index.ts (100%) rename src/{util => lib}/normalize-url/license (100%) rename src/{util => lib}/normalize-url/readme.md (100%) rename src/{util => protocol}/Address.ts (100%) rename src/{util => protocol}/Events.ts (97%) rename src/{util => protocol}/Filters.ts (100%) rename src/{util => protocol}/Kinds.ts (98%) rename src/{util => protocol}/Relays.ts (92%) rename src/{util => protocol}/Router.ts (99%) rename src/{util => protocol}/Tags.ts (98%) diff --git a/src/connect/Subscription.ts b/src/connect/Subscription.ts index 03ac9c6..b60c7cc 100644 --- a/src/connect/Subscription.ts +++ b/src/connect/Subscription.ts @@ -2,9 +2,9 @@ import EventEmitter from "events" import type {Event} from 'nostr-tools' import type {Executor} from "./Executor" import type {Connection} from './Connection' -import type {Filter} from '../util/Filters' -import {matchFilters} from "../util/Filters" -import {hasValidSignature} from "../util/Events" +import type {Filter} from '../protocol/Filters' +import {matchFilters} from "../protocol/Filters" +import {hasValidSignature} from "../protocol/Events" export type SubscriptionOpts = { executor: Executor diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..4f398c3 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,23 @@ +export * from "./connect/Connection" +export * from "./connect/ConnectionMeta" +export * from "./connect/Executor" +export * from "./connect/Pool" +export * from "./connect/Socket" +export * from "./connect/Subscription" +export * from "./connect/target/Multi" +export * from "./connect/target/Plex" +export * from "./connect/target/Relay" +export * from "./connect/target/Relays" +export * from "./protocol/Address" +export * from "./util/Deferred" +export * from "./util/Emitter" +export * from "./protocol/Events" +export * from "./protocol/Filters" +export * from "./util/Fluent" +export * from "./protocol/Kinds" +export * from "./util/LRUCache" +export * from "./util/Queue" +export * from "./protocol/Relays" +export * from "./protocol/Router" +export * from "./protocol/Tags" +export * from "./util/Tools" diff --git a/src/util/Deferred.ts b/src/lib/Deferred.ts similarity index 100% rename from src/util/Deferred.ts rename to src/lib/Deferred.ts diff --git a/src/util/Emitter.ts b/src/lib/Emitter.ts similarity index 100% rename from src/util/Emitter.ts rename to src/lib/Emitter.ts diff --git a/src/util/Fluent.ts b/src/lib/Fluent.ts similarity index 100% rename from src/util/Fluent.ts rename to src/lib/Fluent.ts diff --git a/src/util/LRUCache.ts b/src/lib/LRUCache.ts similarity index 100% rename from src/util/LRUCache.ts rename to src/lib/LRUCache.ts diff --git a/src/util/Queue.ts b/src/lib/Queue.ts similarity index 100% rename from src/util/Queue.ts rename to src/lib/Queue.ts diff --git a/src/util/Tools.ts b/src/lib/Tools.ts similarity index 100% rename from src/util/Tools.ts rename to src/lib/Tools.ts diff --git a/src/lib/index.ts b/src/lib/index.ts new file mode 100644 index 0000000..cea9ebb --- /dev/null +++ b/src/lib/index.ts @@ -0,0 +1,7 @@ +export * from './Deferred' +export * from './Emitter' +export * from './Fluent' +export * from './LRUCache' +export * from './Queue' +export * from './Tools' +export {default as normalizeUrl} from './normalize-url' diff --git a/src/util/normalize-url/index.ts b/src/lib/normalize-url/index.ts similarity index 100% rename from src/util/normalize-url/index.ts rename to src/lib/normalize-url/index.ts diff --git a/src/util/normalize-url/license b/src/lib/normalize-url/license similarity index 100% rename from src/util/normalize-url/license rename to src/lib/normalize-url/license diff --git a/src/util/normalize-url/readme.md b/src/lib/normalize-url/readme.md similarity index 100% rename from src/util/normalize-url/readme.md rename to src/lib/normalize-url/readme.md diff --git a/src/util/Address.ts b/src/protocol/Address.ts similarity index 100% rename from src/util/Address.ts rename to src/protocol/Address.ts diff --git a/src/util/Events.ts b/src/protocol/Events.ts similarity index 97% rename from src/util/Events.ts rename to src/protocol/Events.ts index fbfb780..f37a245 100644 --- a/src/util/Events.ts +++ b/src/protocol/Events.ts @@ -1,7 +1,6 @@ import type {Event, EventTemplate, UnsignedEvent} from 'nostr-tools' import {verifyEvent, getEventHash} from 'nostr-tools' -import {cached} from "./LRUCache" -import {now} from './Tools' +import {cached, now} from "../util" import {Tags} from './Tags' import {addressFromEvent, encodeAddress} from './Address' import {isEphemeralKind, isReplaceableKind, isPlainReplaceableKind, isParameterizedReplaceableKind} from './Kinds' diff --git a/src/util/Filters.ts b/src/protocol/Filters.ts similarity index 100% rename from src/util/Filters.ts rename to src/protocol/Filters.ts diff --git a/src/util/Kinds.ts b/src/protocol/Kinds.ts similarity index 98% rename from src/util/Kinds.ts rename to src/protocol/Kinds.ts index da406f1..47bf28d 100644 --- a/src/util/Kinds.ts +++ b/src/protocol/Kinds.ts @@ -1,4 +1,4 @@ -import {between} from './Tools' +import {between} from '../util' export const isEphemeralKind = (kind: number) => between(19999, 29999, kind) diff --git a/src/util/Relays.ts b/src/protocol/Relays.ts similarity index 92% rename from src/util/Relays.ts rename to src/protocol/Relays.ts index 2780fe5..0659c0d 100644 --- a/src/util/Relays.ts +++ b/src/protocol/Relays.ts @@ -1,5 +1,4 @@ -import normalizeUrl from "./normalize-url" -import {stripProtocol} from './Tools' +import {normalizeUrl, stripProtocol} from "../util" export const isShareableRelayUrl = (url: string) => Boolean( diff --git a/src/util/Router.ts b/src/protocol/Router.ts similarity index 99% rename from src/util/Router.ts rename to src/protocol/Router.ts index 297f652..42e143a 100644 --- a/src/util/Router.ts +++ b/src/protocol/Router.ts @@ -1,8 +1,8 @@ import type {EventTemplate, UnsignedEvent} from 'nostr-tools' +import {first, uniq, shuffle} from '../util' import type {Rumor} from './Events' import {getAddress, isReplaceable} from './Events' import {Tag, Tags} from './Tags' -import {first, uniq, shuffle} from './Tools' import {GROUP_DEFINITION, COMMUNITY_DEFINITION} from './Kinds' import {addressFromEvent, decodeAddress} from './Address' diff --git a/src/util/Tags.ts b/src/protocol/Tags.ts similarity index 98% rename from src/util/Tags.ts rename to src/protocol/Tags.ts index 90f68e0..11408b9 100644 --- a/src/util/Tags.ts +++ b/src/protocol/Tags.ts @@ -1,7 +1,6 @@ import {EventTemplate} from 'nostr-tools' -import {Fluent} from './Fluent' -import type {OmitStatics} from './Tools' -import {last} from './Tools' +import type {OmitStatics} from '../util' +import {Fluent, last} from '../util' import {isShareableRelayUrl, normalizeRelayUrl} from './Relays' import type {Address} from './Address' import {encodeAddress, decodeAddress} from './Address' diff --git a/tsc-multi.json b/tsc-multi.json index 6c37019..dd7b078 100644 --- a/tsc-multi.json +++ b/tsc-multi.json @@ -1,6 +1,5 @@ { "targets": [ - {"extname": ".cjs", "module": "commonjs"}, {"extname": ".mjs", "module": "esnext", "moduleResolution": "node"} ], "projects": ["tsconfig.json"]