From 72df4cb502e00567c4dc0e7a6bef9baf431ccfee Mon Sep 17 00:00:00 2001 From: BluJ Date: Mon, 8 May 2023 16:59:56 -0600 Subject: [PATCH] wip: SDK up to createAction --- lib/StartSDK.ts | 37 +++++++++++++++++++++++++++++------ lib/autoconfig/AutoConfig.ts | 16 +++++++-------- lib/backup/Backups.ts | 9 +++++---- lib/config/configConstants.ts | 5 ----- 4 files changed, 43 insertions(+), 24 deletions(-) diff --git a/lib/StartSDK.ts b/lib/StartSDK.ts index 56cfc32..1f1f60b 100644 --- a/lib/StartSDK.ts +++ b/lib/StartSDK.ts @@ -11,8 +11,17 @@ import { } from "./config/configTypes" import { Variants } from "./config/builder/variants" import { createAction } from "./actions/createAction" -import { ActionMetaData, Effects, ActionResult, Metadata } from "./types" +import { + ActionMetaData, + Effects, + ActionResult, + Metadata, + BackupOptions, +} from "./types" import { Utils } from "./util" +import { AutoConfig, AutoConfigFrom } from "./autoconfig/AutoConfig" +import { BackupSet, Backups } from "./backup/Backups" +import { smtpConfig } from "./config/configConstants" // prettier-ignore type AnyNeverCond = @@ -41,11 +50,27 @@ class StartSDK { build() { return this.anyOf({ - // TODO AutoConfig - // TODO Backup - // TODO Config - // TODO configConstants - // TODO configDependencies + AutoConfig: ( + configs: AutoConfigFrom, + path: keyof AutoConfigFrom, + ) => new AutoConfig(configs, path), + Backups: { + volumes: (...volumeNames: Array) => + Backups.volumes(...volumeNames), + addSets: ( + ...options: BackupSet[] + ) => Backups.addSets(...options), + withOptions: (options?: Partial) => + Backups.with_options(options), + }, + Config: { + of: < + Spec extends Record | Value>, + >( + spec: Spec, + ) => Config.of(spec), + }, + configConstants: { smtpConfig }, createAction: < Store, ConfigType extends diff --git a/lib/autoconfig/AutoConfig.ts b/lib/autoconfig/AutoConfig.ts index a558ce2..5b6d2fb 100644 --- a/lib/autoconfig/AutoConfig.ts +++ b/lib/autoconfig/AutoConfig.ts @@ -2,21 +2,19 @@ import { AutoConfigure, DeepPartial, Effects, ExpectedExports } from "../types" import { Utils, utils } from "../util" import { deepEqual } from "../util/deepEqual" import { deepMerge } from "../util/deepMerge" -import { WrapperDataContract } from "../wrapperData/wrapperDataContract" -export type AutoConfigFrom = { +export type AutoConfigFrom = { [key in keyof NestedConfigs & string]: (options: { effects: Effects localConfig: Input remoteConfig: NestedConfigs[key] - utils: Utils + utils: Utils }) => Promise> } -export class AutoConfig { +export class AutoConfig { constructor( - readonly wrapperDataContract: WrapperDataContract, - readonly configs: AutoConfigFrom, - readonly path: keyof AutoConfigFrom, + readonly configs: AutoConfigFrom, + readonly path: keyof AutoConfigFrom, ) {} async check( @@ -25,7 +23,7 @@ export class AutoConfig { const origConfig = JSON.parse(JSON.stringify(options.localConfig)) const newOptions = { ...options, - utils: utils(this.wrapperDataContract, options.effects), + utils: utils(options.effects), localConfig: options.localConfig as Input, remoteConfig: options.remoteConfig as any, } @@ -46,7 +44,7 @@ export class AutoConfig { ): ReturnType { const newOptions = { ...options, - utils: utils(this.wrapperDataContract, options.effects), + utils: utils(options.effects), localConfig: options.localConfig as Input, remoteConfig: options.remoteConfig as any, } diff --git a/lib/backup/Backups.ts b/lib/backup/Backups.ts index e088b80..0e1f4cb 100644 --- a/lib/backup/Backups.ts +++ b/lib/backup/Backups.ts @@ -1,6 +1,5 @@ import { SDKManifest } from "../manifest/ManifestTypes" import * as T from "../types" -import fs from "fs" export type BACKUP = "BACKUP" export const DEFAULT_OPTIONS: T.BackupOptions = { @@ -9,7 +8,7 @@ export const DEFAULT_OPTIONS: T.BackupOptions = { ignoreExisting: false, exclude: [], } -type BackupSet = { +export type BackupSet = { srcPath: string srcVolume: Volumes | BACKUP dstPath: string @@ -41,7 +40,7 @@ type BackupSet = { export class Backups { static BACKUP: BACKUP = "BACKUP" - constructor( + private constructor( private options = DEFAULT_OPTIONS, private backupSet = [] as BackupSet[], ) {} @@ -67,7 +66,9 @@ export class Backups { ) { return new Backups({ ...DEFAULT_OPTIONS, ...options }) } - set_options(options?: Partial) { + + static withOptions = Backups.with_options + setOptions(options?: Partial) { this.options = { ...this.options, ...options, diff --git a/lib/config/configConstants.ts b/lib/config/configConstants.ts index 821c583..4f0fc7a 100644 --- a/lib/config/configConstants.ts +++ b/lib/config/configConstants.ts @@ -1,14 +1,9 @@ import { SmtpValue } from "../types" -import { - createWrapperDataContract, - neverWrapperDataContract, -} from "../wrapperData/wrapperDataContract" import { Config, ConfigSpecOf } from "./builder/config" import { Value } from "./builder/value" import { Variants } from "./builder/variants" export const smtpConfig = Value.filteredUnion( - neverWrapperDataContract, async ({ effects, utils }) => { const smtp = await utils.getSystemSmtp().once() return smtp ? [] : ["system"]