mirror of
https://github.com/Start9Labs/start-sdk.git
synced 2026-03-30 04:11:57 +00:00
remove list of unions
This commit is contained in:
@@ -1,5 +1,3 @@
|
||||
import { typeFromProps } from "../../util";
|
||||
|
||||
export class IBuilder<A> {
|
||||
protected constructor(readonly a: A) { }
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { BuilderExtract, IBuilder } from "./builder";
|
||||
import { Config } from "./config";
|
||||
import { Variants } from "./variants";
|
||||
import {
|
||||
InputSpec,
|
||||
UniqueBy,
|
||||
@@ -107,47 +106,6 @@ export class List<A extends ValueSpecList> extends IBuilder<A> {
|
||||
...value,
|
||||
});
|
||||
}
|
||||
static union<
|
||||
A extends {
|
||||
name: string;
|
||||
description: string | null;
|
||||
warning: string | null;
|
||||
default: Record<string, unknown>[];
|
||||
range: string;
|
||||
spec: {
|
||||
select: {
|
||||
name: string;
|
||||
description: string | null;
|
||||
warning: string | null;
|
||||
}
|
||||
variants: Variants<{
|
||||
[key: string]: { name: string; spec: InputSpec };
|
||||
}>;
|
||||
displayAs: null | string;
|
||||
uniqueBy: UniqueBy;
|
||||
default: string;
|
||||
};
|
||||
}
|
||||
>(a: A) {
|
||||
const { spec: previousSpec, ...rest } = a;
|
||||
const { variants: previousVariants, ...restSpec } = previousSpec;
|
||||
const variants = previousVariants.build() as BuilderExtract<
|
||||
A["spec"]["variants"]
|
||||
>;
|
||||
const spec = {
|
||||
...restSpec,
|
||||
variants,
|
||||
};
|
||||
const value = {
|
||||
spec,
|
||||
...rest,
|
||||
};
|
||||
return new List({
|
||||
type: "list" as const,
|
||||
subtype: "union" as const,
|
||||
...value,
|
||||
});
|
||||
}
|
||||
|
||||
public validator() {
|
||||
return guardAll(this.a);
|
||||
|
||||
@@ -7,7 +7,6 @@ import {
|
||||
ValueSpec,
|
||||
ValueSpecList,
|
||||
ValueSpecNumber,
|
||||
ValueSpecOf,
|
||||
ValueSpecString,
|
||||
} from "../config-types";
|
||||
import { guardAll } from "../../util";
|
||||
@@ -146,8 +145,10 @@ export class Value<A extends ValueSpec> extends IBuilder<A> {
|
||||
name: string;
|
||||
description: string | null;
|
||||
warning: string | null;
|
||||
selectKey: string;
|
||||
variants: Variants<{ [key: string]: { name: string; spec: InputSpec } }>;
|
||||
default: string;
|
||||
nullable: boolean;
|
||||
default: string | null;
|
||||
}
|
||||
>(a: A) {
|
||||
const { variants: previousVariants, ...rest } = a;
|
||||
|
||||
@@ -66,13 +66,13 @@ export interface ValueSpecBoolean extends WithStandalone {
|
||||
|
||||
export interface ValueSpecUnion extends WithStandalone {
|
||||
type: "union";
|
||||
variants: { [key: string]: { name: string; spec: InputSpec } };
|
||||
default: null | string;
|
||||
selectKey: string;
|
||||
nullable: boolean
|
||||
variants: Record<string, { name: string; spec: InputSpec }>;
|
||||
}
|
||||
|
||||
export interface ValueSpecFile extends WithStandalone {
|
||||
type: "file";
|
||||
placeholder: null | string;
|
||||
nullable: boolean;
|
||||
extensions: string[];
|
||||
}
|
||||
@@ -89,11 +89,10 @@ export interface WithStandalone {
|
||||
}
|
||||
|
||||
export interface SelectBase {
|
||||
values: { [value: string]: string };
|
||||
values: Record<string, string>;
|
||||
}
|
||||
|
||||
/** no lists of booleans, lists*/
|
||||
export type ListValueSpecType = "string" | "number" | "object" | "union";
|
||||
export type ListValueSpecType = "string" | "number" | "object";
|
||||
|
||||
/** represents a spec for the values of a list */
|
||||
export type ListValueSpecOf<T extends ListValueSpecType> = T extends "string"
|
||||
@@ -102,8 +101,6 @@ export type ListValueSpecOf<T extends ListValueSpecType> = T extends "string"
|
||||
? ListValueSpecNumber
|
||||
: T extends "object"
|
||||
? ListValueSpecObject
|
||||
: T extends "union"
|
||||
? ListValueSpecUnion
|
||||
: never;
|
||||
|
||||
/** represents a spec for a list */
|
||||
@@ -163,19 +160,4 @@ export type UniqueBy =
|
||||
| { any: readonly UniqueBy[] | UniqueBy[] }
|
||||
| { all: readonly UniqueBy[] | UniqueBy[] };
|
||||
|
||||
export interface ListValueSpecUnion {
|
||||
select: {
|
||||
name: string
|
||||
description: null | string
|
||||
warning: null | string
|
||||
}
|
||||
variants: { [key: string]: { name: string; spec: InputSpec } };
|
||||
/** a handlebars template for labeling each union list item */
|
||||
displayAs: null | string;
|
||||
/** indicates whether duplicates can be permitted in the list */
|
||||
uniqueBy: UniqueBy;
|
||||
/** the default variant when creating a new union instance in the list*/
|
||||
default: null | string;
|
||||
}
|
||||
|
||||
export type DefaultString = string | { charset: string; len: number };
|
||||
|
||||
Reference in New Issue
Block a user