feat: Add effect of smtp & withWrapperData

This commit is contained in:
BluJ
2023-05-02 15:34:49 -06:00
parent 23994a6587
commit 27145c3974
5 changed files with 27 additions and 2 deletions

View File

@@ -114,6 +114,9 @@ export class Config<Type extends Record<string, any>, WD> {
},
}
}
withWrapperData<NewWrapperData extends WD>() {
return this as any as Config<Type, NewWrapperData>
}
}
export function topConfig<WrapperData>() {

View File

@@ -626,4 +626,8 @@ export class Value<Type, WD> {
a.validator,
)
}
withWrapperData<NewWrapperData extends WD>() {
return this as any as Value<Type, NewWrapperData>
}
}

View File

@@ -103,4 +103,8 @@ export class Variants<Type, WD> {
return variants
}, validator)
}
withWrapperData<NewWrapperData extends WD>() {
return this as any as Variants<Type, NewWrapperData>
}
}

View File

@@ -1,4 +1,5 @@
import { Config, Value, Variants } from "./builder"
import { SmtpValue } from "../types"
import { Config, Value, Variants, topConfig } from "./builder"
export const smtpConfig = Value.union(
{
@@ -11,7 +12,7 @@ export const smtpConfig = Value.union(
system: { name: "System Credentials", spec: Config.of({}) },
custom: {
name: "Custom Credentials",
spec: Config.of({
spec: Config.of<SmtpValue, unknown>({
server: Value.text({
name: "SMTP Server",
required: {

View File

@@ -133,6 +133,15 @@ export type Daemon = {
export type HealthStatus = "passing" | "warning" | "failing" | "disabled"
export type SmtpValue = {
server: string
port: number
from: string
login: string
password: string | null | undefined
tls: boolean
}
export type CommandType<A extends string> =
| ValidIfNoStupidEscape<A>
| [string, ...string[]]
@@ -308,6 +317,10 @@ export type Effects = {
callback: (config: unknown, previousConfig: unknown) => void
}): Promise<ExtractWrapperData<WrapperData, Path>>
getSystemSmtp(input: {
callback: (config: unknown, previousConfig: unknown) => void
}): Promise<SmtpValue>
/** Used to store values that can be accessed and subscribed to */
setWrapperData<WrapperData = never, Path extends string = never>(options: {
/** Sets the value for the wrapper at the path, it will override, using the [JsonPath](https://jsonpath.com/) */