Ever need a string but also wish it weren’t a String type? Like if you got some unsafe user input and never want to accidentally put it in a SQL query unsanitized? Of if you got a local ID and didn’t want to mix it up with a remote ID?
SpecialString achieves just this. In all but name, it acts like a string. However, it’s protected by Swift’s powerful type system so that it can never be mistaken as something else.
Premade Special Strings
This package contains some premade special strings for common usages:
UnsafeUserInput - Unsafe user input. It must be sanitized before it can be safely used.
SanitizedUserInput - User input which has gone through some process and can now be deemed safe to use.
Password - A password. It must never be serialized as a plaintext string.
Identifiers
Identifiers are very commonly strings, so they are perfect use cases for SpecialString! However, because each identifier is inherently tied to the service in which it identifies something, this package does not define any. Instead, you should define a new special type for each remote service, like LocalImageIdentifier, GoogleDriveItemIdentifier, or BrowserSessionIdentifier.
EssentiallyAString
This package also includes the handy protocol EssentiallyAString, which helps you make types which are essentially strings. This greatly improves the ergonomics of SpecialString, letting you use it in most of the ways a String can be used.
Feel free to use EssentiallyAString for other things!
SpecialString
Ever need a string but also wish it weren’t a
String
type? Like if you got some unsafe user input and never want to accidentally put it in a SQL query unsanitized? Of if you got a local ID and didn’t want to mix it up with a remote ID?SpecialString
achieves just this. In all but name, it acts like a string. However, it’s protected by Swift’s powerful type system so that it can never be mistaken as something else.Premade Special Strings
This package contains some premade special strings for common usages:
UnsafeUserInput
- Unsafe user input. It must be sanitized before it can be safely used.SanitizedUserInput
- User input which has gone through some process and can now be deemed safe to use.Password
- A password. It must never be serialized as a plaintext string.Identifiers
Identifiers are very commonly strings, so they are perfect use cases for
SpecialString
! However, because each identifier is inherently tied to the service in which it identifies something, this package does not define any. Instead, you should define a new special type for each remote service, likeLocalImageIdentifier
,GoogleDriveItemIdentifier
, orBrowserSessionIdentifier
.EssentiallyAString
This package also includes the handy protocol
EssentiallyAString
, which helps you make types which are essentially strings. This greatly improves the ergonomics ofSpecialString
, letting you use it in most of the ways aString
can be used.Feel free to use
EssentiallyAString
for other things!