From 82e96eb18e8328e9aa53585c9d26009b1d5a5512 Mon Sep 17 00:00:00 2001 From: BluJ Date: Mon, 3 Apr 2023 13:41:25 -0600 Subject: [PATCH] chore: Update and fix config type test --- lib/config/builder/config-types.test.ts | 25 +++++++++++++++++++++++++ lib/config/config-types.ts | 4 ++-- package-lock.json | 4 ++-- package.json | 2 +- 4 files changed, 30 insertions(+), 5 deletions(-) create mode 100644 lib/config/builder/config-types.test.ts diff --git a/lib/config/builder/config-types.test.ts b/lib/config/builder/config-types.test.ts new file mode 100644 index 0000000..7173886 --- /dev/null +++ b/lib/config/builder/config-types.test.ts @@ -0,0 +1,25 @@ +import { + ListValueSpecOf, + ValueSpecList, + isValueSpecListOf, +} from "../config-types"; +import { Config } from "./config"; +import { List } from "./list"; +import { Value } from "./value"; + +describe("Config Types", () => { + test("isValueSpecListOf", () => { + const options = [List.obj, List.string, List.number]; + for (const option of options) { + const test = option({} as any, { spec: Config.of({}) } as any) as any; + const someList = Value.list(test).build(); + if (isValueSpecListOf(someList, "string")) { + someList.spec satisfies ListValueSpecOf<"string">; + } else if (isValueSpecListOf(someList, "number")) { + someList.spec satisfies ListValueSpecOf<"number">; + } else if (isValueSpecListOf(someList, "object")) { + someList.spec satisfies ListValueSpecOf<"object">; + } + } + }); +}); diff --git a/lib/config/config-types.ts b/lib/config/config-types.ts index cd7ea70..39a2cad 100644 --- a/lib/config/config-types.ts +++ b/lib/config/config-types.ts @@ -129,9 +129,9 @@ export interface ValueSpecListOf // sometimes the type checker needs just a little bit of help export function isValueSpecListOf( - t: ValueSpecList, + t: ValueSpecListOf, s: S -): t is ValueSpecListOf { +): t is ValueSpecListOf & { spec: ListValueSpecOf } { return t.spec.type === s; } diff --git a/package-lock.json b/package-lock.json index 2d24ab9..e336efb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "start-sdk", - "version": "0.4.0-lib0.beta8", + "version": "0.4.0-lib0.beta9", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "start-sdk", - "version": "0.4.0-lib0.beta8", + "version": "0.4.0-lib0.beta9", "license": "MIT", "dependencies": { "@iarna/toml": "^2.2.5", diff --git a/package.json b/package.json index 5faaa2e..840623a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "start-sdk", - "version": "0.4.0-lib0.beta8", + "version": "0.4.0-lib0.beta9", "description": "For making the patterns that are wanted in making services for the startOS.", "main": "./lib/index.js", "types": "./lib/index.d.ts",