mirror of
https://github.com/Start9Labs/start-sdk.git
synced 2026-03-26 18:31:54 +00:00
38 lines
1.1 KiB
TypeScript
38 lines
1.1 KiB
TypeScript
import { ExpectedExports, Properties } from "../types"
|
|
|
|
import { PropertyGroup } from "./PropertyGroup"
|
|
import { PropertyString } from "./PropertyString"
|
|
export { PropertyGroup } from "./PropertyGroup"
|
|
export { PropertyString } from "./PropertyString"
|
|
|
|
export const test = ""
|
|
|
|
export type UnionToIntersection<T> = ((x: T) => any) extends (x: infer R) => any
|
|
? R
|
|
: never
|
|
|
|
/**
|
|
* This is used during creating the type of properties fn in the service package.
|
|
* This fn makes sure that the return type is correct and everything is infered to
|
|
* reduce the types that the user has to make.
|
|
* @param fn
|
|
* @returns
|
|
*/
|
|
export function setupProperties<WrapperData>(
|
|
fn: (args: {
|
|
wrapperData: WrapperData
|
|
}) => void | Promise<void> | Promise<(PropertyGroup | PropertyString)[]>,
|
|
): ExpectedExports.properties {
|
|
return (async (options) => {
|
|
const result = await fn(
|
|
options as {
|
|
wrapperData: WrapperData & typeof options.wrapperData
|
|
},
|
|
)
|
|
if (result) {
|
|
const answer: Properties = result.map((x) => x.data)
|
|
return answer
|
|
}
|
|
}) as ExpectedExports.properties
|
|
}
|