├── .gitignore ├── .swiftpm └── xcode │ └── package.xcworkspace │ └── contents.xcworkspacedata ├── LICENSE ├── Package.swift ├── README.md ├── Sources └── NostrEssentials │ ├── Blossom │ ├── BlossomUploadItem.swift │ ├── BlossomUploadResponse.swift │ └── BlossomUploader.swift │ ├── ContentParsing │ └── ContentParsing.swift │ ├── DIP-01 │ └── Event+iMeta.swift │ ├── Keys │ └── Keys.swift │ ├── NIP-01 │ ├── ClientMessages.swift │ ├── Event.swift │ ├── Filters.swift │ ├── RelayMessage.swift │ └── Tag.swift │ ├── NIP-04 │ └── Keys+NIP-04.swift │ ├── NIP-05 │ └── Nip05.swift │ ├── NIP-19 │ ├── Bech32.swift │ ├── Keys+NIP-19.swift │ └── ShareableIdentifier.swift │ ├── NIP-20 │ └── CommandResult.swift │ ├── NIP-44 │ ├── Keys+NIP-44.swift │ └── NIP44v2Encrypting.swift │ ├── NIP-46 │ └── RemoteSigningHelpers.swift │ ├── NIP-59 │ └── GiftWrapHelpers.swift │ ├── NIP-96 │ ├── MediaRequestBag.swift │ ├── NIP96WellKnown.swift │ ├── Nip96Uploader.swift │ └── UploadResponse.swift │ ├── NIP-98 │ ├── Data+sha256.swift │ └── Event+base64.swift │ ├── NostrRegexes.swift │ ├── Outbox │ └── Outbox.swift │ ├── Relays │ ├── ConnectionPool.swift │ ├── NetworkMonitor.swift │ ├── RelayConfig.swift │ └── RelayConnection.swift │ └── Utils.swift └── Tests └── NostrEssentialsTests ├── Bech32Tests.swift ├── BlossomTests.swift ├── ClientMessagesTests.swift ├── ContentParsingTests.swift ├── Dip01Tests.swift ├── EventTests.swift ├── FiltersTests.swift ├── KeysTests.swift ├── NIP-04EncryptionTests.swift ├── NIP-44EncryptionTests.swift ├── NIP-59GiftWrapTests.swift ├── Nip05Tests.swift ├── Nip46Tests.swift ├── Nip96Tests.swift ├── Nip98HttpAuthTests.swift ├── NostrRegexesTests.swift ├── OutboxTests.swift ├── RelayConnectionTests.swift ├── Resources ├── 10mb.jpg ├── 30mb.jpg ├── 48af54ea036b2b5a6d64142286eee45e862c2091740959be5d2af0872618593e.jpg ├── beerstr.png ├── bitcoin.png ├── coffeechain.png └── upload-test.png ├── ShareableIdentifierTests.swift └── UtilsTest.swift /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/.gitignore -------------------------------------------------------------------------------- /.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/LICENSE -------------------------------------------------------------------------------- /Package.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Package.swift -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/README.md -------------------------------------------------------------------------------- /Sources/NostrEssentials/Blossom/BlossomUploadItem.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/Blossom/BlossomUploadItem.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/Blossom/BlossomUploadResponse.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/Blossom/BlossomUploadResponse.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/Blossom/BlossomUploader.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/Blossom/BlossomUploader.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/ContentParsing/ContentParsing.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/ContentParsing/ContentParsing.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/DIP-01/Event+iMeta.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/DIP-01/Event+iMeta.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/Keys/Keys.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/Keys/Keys.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/NIP-01/ClientMessages.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/NIP-01/ClientMessages.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/NIP-01/Event.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/NIP-01/Event.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/NIP-01/Filters.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/NIP-01/Filters.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/NIP-01/RelayMessage.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/NIP-01/RelayMessage.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/NIP-01/Tag.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/NIP-01/Tag.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/NIP-04/Keys+NIP-04.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/NIP-04/Keys+NIP-04.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/NIP-05/Nip05.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/NIP-05/Nip05.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/NIP-19/Bech32.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/NIP-19/Bech32.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/NIP-19/Keys+NIP-19.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/NIP-19/Keys+NIP-19.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/NIP-19/ShareableIdentifier.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/NIP-19/ShareableIdentifier.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/NIP-20/CommandResult.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/NIP-20/CommandResult.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/NIP-44/Keys+NIP-44.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/NIP-44/Keys+NIP-44.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/NIP-44/NIP44v2Encrypting.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/NIP-44/NIP44v2Encrypting.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/NIP-46/RemoteSigningHelpers.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/NIP-46/RemoteSigningHelpers.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/NIP-59/GiftWrapHelpers.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/NIP-59/GiftWrapHelpers.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/NIP-96/MediaRequestBag.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/NIP-96/MediaRequestBag.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/NIP-96/NIP96WellKnown.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/NIP-96/NIP96WellKnown.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/NIP-96/Nip96Uploader.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/NIP-96/Nip96Uploader.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/NIP-96/UploadResponse.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/NIP-96/UploadResponse.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/NIP-98/Data+sha256.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/NIP-98/Data+sha256.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/NIP-98/Event+base64.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/NIP-98/Event+base64.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/NostrRegexes.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/NostrRegexes.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/Outbox/Outbox.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/Outbox/Outbox.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/Relays/ConnectionPool.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/Relays/ConnectionPool.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/Relays/NetworkMonitor.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/Relays/NetworkMonitor.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/Relays/RelayConfig.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/Relays/RelayConfig.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/Relays/RelayConnection.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/Relays/RelayConnection.swift -------------------------------------------------------------------------------- /Sources/NostrEssentials/Utils.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Sources/NostrEssentials/Utils.swift -------------------------------------------------------------------------------- /Tests/NostrEssentialsTests/Bech32Tests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Tests/NostrEssentialsTests/Bech32Tests.swift -------------------------------------------------------------------------------- /Tests/NostrEssentialsTests/BlossomTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Tests/NostrEssentialsTests/BlossomTests.swift -------------------------------------------------------------------------------- /Tests/NostrEssentialsTests/ClientMessagesTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Tests/NostrEssentialsTests/ClientMessagesTests.swift -------------------------------------------------------------------------------- /Tests/NostrEssentialsTests/ContentParsingTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Tests/NostrEssentialsTests/ContentParsingTests.swift -------------------------------------------------------------------------------- /Tests/NostrEssentialsTests/Dip01Tests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Tests/NostrEssentialsTests/Dip01Tests.swift -------------------------------------------------------------------------------- /Tests/NostrEssentialsTests/EventTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Tests/NostrEssentialsTests/EventTests.swift -------------------------------------------------------------------------------- /Tests/NostrEssentialsTests/FiltersTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Tests/NostrEssentialsTests/FiltersTests.swift -------------------------------------------------------------------------------- /Tests/NostrEssentialsTests/KeysTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Tests/NostrEssentialsTests/KeysTests.swift -------------------------------------------------------------------------------- /Tests/NostrEssentialsTests/NIP-04EncryptionTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Tests/NostrEssentialsTests/NIP-04EncryptionTests.swift -------------------------------------------------------------------------------- /Tests/NostrEssentialsTests/NIP-44EncryptionTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Tests/NostrEssentialsTests/NIP-44EncryptionTests.swift -------------------------------------------------------------------------------- /Tests/NostrEssentialsTests/NIP-59GiftWrapTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Tests/NostrEssentialsTests/NIP-59GiftWrapTests.swift -------------------------------------------------------------------------------- /Tests/NostrEssentialsTests/Nip05Tests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Tests/NostrEssentialsTests/Nip05Tests.swift -------------------------------------------------------------------------------- /Tests/NostrEssentialsTests/Nip46Tests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Tests/NostrEssentialsTests/Nip46Tests.swift -------------------------------------------------------------------------------- /Tests/NostrEssentialsTests/Nip96Tests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Tests/NostrEssentialsTests/Nip96Tests.swift -------------------------------------------------------------------------------- /Tests/NostrEssentialsTests/Nip98HttpAuthTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Tests/NostrEssentialsTests/Nip98HttpAuthTests.swift -------------------------------------------------------------------------------- /Tests/NostrEssentialsTests/NostrRegexesTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Tests/NostrEssentialsTests/NostrRegexesTests.swift -------------------------------------------------------------------------------- /Tests/NostrEssentialsTests/OutboxTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Tests/NostrEssentialsTests/OutboxTests.swift -------------------------------------------------------------------------------- /Tests/NostrEssentialsTests/RelayConnectionTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Tests/NostrEssentialsTests/RelayConnectionTests.swift -------------------------------------------------------------------------------- /Tests/NostrEssentialsTests/Resources/10mb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Tests/NostrEssentialsTests/Resources/10mb.jpg -------------------------------------------------------------------------------- /Tests/NostrEssentialsTests/Resources/30mb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Tests/NostrEssentialsTests/Resources/30mb.jpg -------------------------------------------------------------------------------- /Tests/NostrEssentialsTests/Resources/48af54ea036b2b5a6d64142286eee45e862c2091740959be5d2af0872618593e.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Tests/NostrEssentialsTests/Resources/48af54ea036b2b5a6d64142286eee45e862c2091740959be5d2af0872618593e.jpg -------------------------------------------------------------------------------- /Tests/NostrEssentialsTests/Resources/beerstr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Tests/NostrEssentialsTests/Resources/beerstr.png -------------------------------------------------------------------------------- /Tests/NostrEssentialsTests/Resources/bitcoin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Tests/NostrEssentialsTests/Resources/bitcoin.png -------------------------------------------------------------------------------- /Tests/NostrEssentialsTests/Resources/coffeechain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Tests/NostrEssentialsTests/Resources/coffeechain.png -------------------------------------------------------------------------------- /Tests/NostrEssentialsTests/Resources/upload-test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Tests/NostrEssentialsTests/Resources/upload-test.png -------------------------------------------------------------------------------- /Tests/NostrEssentialsTests/ShareableIdentifierTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Tests/NostrEssentialsTests/ShareableIdentifierTests.swift -------------------------------------------------------------------------------- /Tests/NostrEssentialsTests/UtilsTest.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nostur-com/nostr-essentials/HEAD/Tests/NostrEssentialsTests/UtilsTest.swift --------------------------------------------------------------------------------