diff --git a/Makefile b/Makefile index 4c58350..d33cbf2 100644 --- a/Makefile +++ b/Makefile @@ -3,11 +3,12 @@ version = $(shell git tag --sort=committerdate | tail -1) test: $(TS_FILES) npm test +make clean: + rm -rf dist # utils/test/output.ts: utils/test/config.json scripts/oldSpecToBuilder.ts # cat utils/test/config.json | deno run scripts/oldSpecToBuilder.ts "../../mod" |deno fmt - > utils/test/output.ts bundle: fmt $(TS_FILES) .FORCE node_modules - rm -rf dist || true npx tsc-multi npx tsc --emitDeclarationOnly diff --git a/lib/config/builder/variants.ts b/lib/config/builder/variants.ts index 0b61b0a..5d7018b 100644 --- a/lib/config/builder/variants.ts +++ b/lib/config/builder/variants.ts @@ -39,12 +39,12 @@ import { Config } from "."; ``` */ export class Variants< - A extends { [key: string]: ConfigSpec }, + A extends { [key: string]: ConfigSpec } > extends IBuilder { static of< A extends { [key: string]: Config; - }, + } >(a: A) { const variants: { [K in keyof A]: BuilderExtract } = {} as any; for (const key in a) { @@ -58,14 +58,14 @@ export class Variants< } static withVariant( key: K, - value: Config, + value: Config ) { return Variants.empty().withVariant(key, value); } withVariant( key: K, - value: Config, + value: Config ) { return new Variants({ ...this.a, diff --git a/lib/health/healthRunner.ts b/lib/health/healthRunner.ts index 13b594c..9c43cb1 100644 --- a/lib/health/healthRunner.ts +++ b/lib/health/healthRunner.ts @@ -3,7 +3,7 @@ import { object, string } from "ts-matches"; export type HealthCheck = ( effects: Types.Effects, - dateMs: number, + dateMs: number ) => Promise; export type HealthResult = | { success: string } @@ -23,7 +23,7 @@ function safelyStringify(e: unknown) { } async function timeoutHealth( effects: Types.Effects, - timeMs: number, + timeMs: number ): Promise { await effects.sleep(timeMs); return { failure: "Timed out " }; @@ -39,7 +39,7 @@ async function timeoutHealth( export default function healthRunner( name: string, fn: HealthCheck, - { defaultIntervalS = 60 } = {}, + { defaultIntervalS = 60 } = {} ) { return { create(effects: Types.Effects, defaultIntervalCreatedS = defaultIntervalS) { diff --git a/lib/health/util.ts b/lib/health/util.ts index fdc227a..78f8216 100644 --- a/lib/health/util.ts +++ b/lib/health/util.ts @@ -1,5 +1,5 @@ import { Effects, ResultType } from "../types"; -import { error, errorCode, isKnownError, ok, okOf } from "../util"; +import { isKnownError } from "../util"; import { HealthResult } from "./healthRunner"; /** @@ -10,32 +10,30 @@ import { HealthResult } from "./healthRunner"; */ export const checkWebUrl: ( url: string, - createSuccess?: null | ((response?: string | null) => string), -) => ( - effects: Effects, - duration: number, -) => Promise> = (url, createSuccess = null) => { + createSuccess?: null | ((response?: string | null) => string) +) => (effects: Effects, duration: number) => Promise = ( + url, + createSuccess = null +) => { return async (effects, duration) => { - let errorValue; - if ( - (errorValue = guardDurationAboveMinimum({ duration, minimumTime: 5000 })) - ) { + const errorValue = guardDurationAboveMinimum({ + duration, + minimumTime: 5000, + }); + if (!!errorValue) { return errorValue; } return await effects .fetch(url) - .then((x) => - okOf({ - success: - createSuccess?.(x.body) ?? `Successfully fetched URL: ${url}`, - }), - ) + .then((x) => ({ + success: createSuccess?.(x.body) ?? `Successfully fetched URL: ${url}`, + })) .catch((e) => { effects.warn(`Error while fetching URL: ${url}`); effects.error(JSON.stringify(e)); effects.error(e.toString()); - return error(`Error while fetching URL: ${url}`); + return { failure: `Error while fetching URL: ${url}` }; }); }; }; @@ -59,7 +57,7 @@ export const runHealthScript = }) => async ( effects: Effects, - _duration: number, + _duration: number ): Promise> => { const res = await effects.runCommand({ command, args }); if ("result" in res) { @@ -79,10 +77,11 @@ export const runHealthScript = export const guardDurationAboveMinimum = (input: { duration: number; minimumTime: number; -}) => (input.duration <= input.minimumTime ? errorCode(60, "Starting") : null); +}): null | HealthResult => + input.duration <= input.minimumTime ? { starting: null } : null; export const catchError = (effects: Effects) => (e: unknown) => { if (isKnownError(e)) return e; effects.error(`Health check failed: ${e}`); - return error("Error while running health check"); + return { failure: "Error while running health check" }; }; diff --git a/lib/types.ts b/lib/types.ts index 0d0f7eb..f2ef111 100644 --- a/lib/types.ts +++ b/lib/types.ts @@ -170,7 +170,7 @@ export type Effects = { method?: "GET" | "POST" | "PUT" | "DELETE" | "HEAD" | "PATCH"; headers?: Record; body?: string; - }, + } ): Promise<{ method: string; ok: boolean; @@ -382,12 +382,12 @@ export type Dependencies = { /** Checks are called to make sure that our dependency is in the correct shape. If a known error is returned we know that the dependency needs modification */ check( effects: Effects, - input: ConfigSpec, + input: ConfigSpec ): Promise>; /** This is called after we know that the dependency package needs a new configuration, this would be a transform for defaults */ autoConfigure( effects: Effects, - input: ConfigSpec, + input: ConfigSpec ): Promise>; }; }; diff --git a/lib/util/propertiesMatcher.ts b/lib/util/propertiesMatcher.ts index e8c2f15..3add1ec 100644 --- a/lib/util/propertiesMatcher.ts +++ b/lib/util/propertiesMatcher.ts @@ -107,7 +107,7 @@ function charRange(value = "") { */ export function generateDefault( generate: { charset: string; len: number }, - { random = () => Math.random() } = {}, + { random = () => Math.random() } = {} ) { const validCharSets: number[][] = generate.charset .split(",") @@ -118,7 +118,7 @@ export function generateDefault( } const max = validCharSets.reduce( (acc, x) => x.reduce((x, y) => Math.max(x, y), acc), - 0, + 0 ); let i = 0; const answer: string[] = Array(generate.len); @@ -127,7 +127,7 @@ export function generateDefault( const inRange = validCharSets.reduce( (acc, [lower, upper]) => acc || (nextValue >= lower && nextValue <= upper), - false, + false ); if (!inRange) continue; answer[i] = String.fromCharCode(nextValue); @@ -155,7 +155,7 @@ export function matchNumberWithRange(range: string) { ? "any" : left === "[" ? `greaterThanOrEqualTo${leftValue}` - : `greaterThan${leftValue}`, + : `greaterThan${leftValue}` ) .validate( // prettier-ignore @@ -165,7 +165,7 @@ export function matchNumberWithRange(range: string) { // prettier-ignore rightValue === "*" ? "any" : right === "]" ? `lessThanOrEqualTo${rightValue}` : - `lessThan${rightValue}`, + `lessThan${rightValue}` ); } function withIntegral(parser: matches.Parser, value: unknown) { @@ -186,12 +186,12 @@ const isGenerator = matches.shape({ }).test; function defaultNullable( parser: matches.Parser, - value: unknown, + value: unknown ) { if (matchDefault.test(value)) { if (isGenerator(value.default)) { return parser.defaultTo( - parser.unsafeCast(generateDefault(value.default)), + parser.unsafeCast(generateDefault(value.default)) ); } return parser.defaultTo(value.default); @@ -209,7 +209,7 @@ function defaultNullable( * @returns */ export function guardAll( - value: A, + value: A ): matches.Parser> { if (!isType.test(value)) { return matches.unknown as any; @@ -224,7 +224,7 @@ export function guardAll( case "number": return defaultNullable( withIntegral(withRange(value), value), - value, + value ) as any; case "object": @@ -244,14 +244,14 @@ export function guardAll( matches .arrayOf(guardAll({ type: subtype, ...spec } as any)) .validate((x) => rangeValidate(x.length), "valid length"), - value, + value ) as any; } case "enum": if (matchValues.test(value)) { return defaultNullable( matches.literals(value.values[0], ...value.values), - value, + value ) as any; } return matches.unknown as any; @@ -261,8 +261,8 @@ export function guardAll( ...Object.entries(value.variants).map(([variant, spec]) => matches .shape({ [value.tag.id]: matches.literal(variant) }) - .concat(typeFromProps(spec)), - ), + .concat(typeFromProps(spec)) + ) ) as any; } return matches.unknown as any; @@ -279,7 +279,7 @@ export function guardAll( * @returns */ export function typeFromProps( - valueDictionary: A, + valueDictionary: A ): matches.Parser> { if (!recordString.test(valueDictionary)) return matches.unknown as any; return matches.shape( @@ -287,7 +287,7 @@ export function typeFromProps( Object.entries(valueDictionary).map(([key, value]) => [ key, guardAll(value), - ]), - ), + ]) + ) ) as any; } diff --git a/package-lock.json b/package-lock.json index 08fa0ad..0b654e4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "start-sdk", - "version": "0.4.0-lib0.alpha3", + "version": "0.4.0-lib0.alpha4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "start-sdk", - "version": "0.4.0-lib0.alpha3", + "version": "0.4.0-lib0.alpha4", "license": "MIT", "dependencies": { "@iarna/toml": "^2.2.5", diff --git a/package.json b/package.json index 0806993..281b909 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "start-sdk", - "version": "0.4.0-lib0.alpha4", + "version": "0.4.0-lib0.alpha5", "description": "For making the patterns that are wanted in making services for the startOS.", "main": "./index.cjs", "types": "./index.d.ts",