chore: Wrapper Data Contract

This commit is contained in:
BluJ
2023-05-08 11:49:56 -06:00
parent bb59b96e64
commit aded4f6b3d
18 changed files with 265 additions and 187 deletions

View File

@@ -2,6 +2,7 @@ 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<WD, Input, NestedConfigs> = {
[key in keyof NestedConfigs & string]: (options: {
@@ -13,6 +14,7 @@ export type AutoConfigFrom<WD, Input, NestedConfigs> = {
}
export class AutoConfig<WD, Input, NestedConfigs> {
constructor(
readonly wrapperDataContract: WrapperDataContract<WD>,
readonly configs: AutoConfigFrom<WD, Input, NestedConfigs>,
readonly path: keyof AutoConfigFrom<WD, Input, NestedConfigs>,
) {}
@@ -23,7 +25,7 @@ export class AutoConfig<WD, Input, NestedConfigs> {
const origConfig = JSON.parse(JSON.stringify(options.localConfig))
const newOptions = {
...options,
utils: utils<WD>(options.effects),
utils: utils(this.wrapperDataContract, options.effects),
localConfig: options.localConfig as Input,
remoteConfig: options.remoteConfig as any,
}
@@ -44,7 +46,7 @@ export class AutoConfig<WD, Input, NestedConfigs> {
): ReturnType<AutoConfigure["autoConfigure"]> {
const newOptions = {
...options,
utils: utils<WD>(options.effects),
utils: utils(this.wrapperDataContract, options.effects),
localConfig: options.localConfig as Input,
remoteConfig: options.remoteConfig as any,
}

View File

@@ -1,4 +1,5 @@
import { SDKManifest } from "../manifest/ManifestTypes"
import { WrapperDataContract } from "../wrapperData/wrapperDataContract"
import { AutoConfig, AutoConfigFrom } from "./AutoConfig"
export function setupAutoConfig<
@@ -8,7 +9,10 @@ export function setupAutoConfig<
NestedConfigs extends {
[key in keyof Manifest["dependencies"]]: unknown
},
>(configs: AutoConfigFrom<WD, Input, NestedConfigs>) {
>(
wrapperDataContract: WrapperDataContract<WD>,
configs: AutoConfigFrom<WD, Input, NestedConfigs>,
) {
type C = typeof configs
const answer = { ...configs } as unknown as {
[k in keyof C]: AutoConfig<WD, Input, NestedConfigs>
@@ -18,7 +22,7 @@ export function setupAutoConfig<
WD,
Input,
NestedConfigs
>(configs, key as keyof typeof configs)
>(wrapperDataContract, configs, key as keyof typeof configs)
}
return answer
}