chore: New sdk things

This commit is contained in:
BluJ
2023-03-06 15:28:11 -07:00
parent 40c75cfcb2
commit b4fc6e891e
19 changed files with 157 additions and 185 deletions

View File

@@ -3,7 +3,7 @@ import { Config } from "./config";
import { List } from "./list";
import { Variants } from "./variants";
import {
ConfigSpec,
InputSpec,
UniqueBy,
ValueSpec,
ValueSpecList,
@@ -80,7 +80,7 @@ export class Value<A extends ValueSpec> extends IBuilder<A> {
A extends Description &
NullableDefault<DefaultString> &
Nullable &
StringSpec
StringSpec,
>(a: A) {
return new Value({
type: "string" as const,
@@ -88,7 +88,7 @@ export class Value<A extends ValueSpec> extends IBuilder<A> {
} as ValueSpecString);
}
static number<
A extends Description & NullableDefault<number> & Nullable & NumberSpec
A extends Description & NullableDefault<number> & Nullable & NumberSpec,
>(a: A) {
return new Value({
type: "number" as const,
@@ -100,7 +100,7 @@ export class Value<A extends ValueSpec> extends IBuilder<A> {
Default<string> & {
values: readonly string[] | string[];
"value-names": Record<string, string>;
}
},
>(a: A) {
return new Value({
type: "enum" as const,
@@ -115,9 +115,9 @@ export class Value<A extends ValueSpec> extends IBuilder<A> {
default: null | { [k: string]: unknown };
"display-as": null | string;
"unique-by": null | string;
spec: Config<ConfigSpec>;
spec: Config<InputSpec>;
"value-names": Record<string, string>;
}
},
>(a: A) {
const { spec: previousSpec, ...rest } = a;
const spec = previousSpec.build() as BuilderExtract<A["spec"]>;
@@ -139,11 +139,11 @@ export class Value<A extends ValueSpec> extends IBuilder<A> {
[key: string]: string;
};
};
variants: Variants<{ [key: string]: ConfigSpec }>;
variants: Variants<{ [key: string]: InputSpec }>;
"display-as": string | null;
"unique-by": UniqueBy;
},
B extends string
B extends string,
>(a: A) {
const { variants: previousVariants, ...rest } = a;
const variants = previousVariants.build() as BuilderExtract<A["variants"]>;