swagger-typed-express-docs
Version:
Simple express runtime parser and documentation swagger generator with 100% support of Typescript static types
75 lines (74 loc) • 4.39 kB
TypeScript
import { NiceMerge } from './generics';
import { TObject } from './tsSchema';
export declare const tObject_omit: <TObj extends TObject, PropsToOmit extends (keyof TObj["properties"])[], NewProperties = Omit<TObj["properties"], PropsToOmit[number]> extends infer T ? { [K in keyof T]: Omit<TObj["properties"], PropsToOmit[number]>[K]; } : never, Out = Omit<TObj, "properties"> & {
properties: NewProperties;
} extends infer T_1 ? { [K_1 in keyof T_1]: (Omit<TObj, "properties"> & {
properties: NewProperties;
})[K_1]; } : never>(obj: TObj, ...attrsName: PropsToOmit) => Out;
export declare const tObject_pick: <TObj extends TObject, PropsToPick extends (keyof TObj["properties"])[], NewProperties = Pick<TObj["properties"], PropsToPick[number]> extends infer T ? { [K in keyof T]: Pick<TObj["properties"], PropsToPick[number]>[K]; } : never, Out = Omit<TObj, "properties"> & {
properties: NewProperties;
} extends infer T_1 ? { [K_1 in keyof T_1]: (Omit<TObj, "properties"> & {
properties: NewProperties;
})[K_1]; } : never>(obj: TObj, ...attrsName: PropsToPick) => Out;
export declare const tObject_partial: <TObj extends TObject>(obj: TObj) => Omit<TObj, "properties"> & {
properties: { [K_1 in keyof TObj["properties"]]: Omit<TObj["properties"][K_1], "required"> & {
required: false;
} extends infer T_1 ? { [K_2 in keyof T_1]: (Omit<TObj["properties"][K_1], "required"> & {
required: false;
})[K_2]; } : never; };
} extends infer T ? { [K in keyof T]: (Omit<TObj, "properties"> & {
properties: { [K_1 in keyof TObj["properties"]]: Omit<TObj["properties"][K_1], "required"> & {
required: false;
} extends infer T_1 ? { [K_2 in keyof T_1]: (Omit<TObj["properties"][K_1], "required"> & {
required: false;
})[K_2]; } : never; };
})[K]; } : never;
export declare const tUnionObject: <T extends string, U>(type: T, attrs: U) => {
properties: {
type: {
type: "enum";
options: [import("./generics").DeepWriteable<T>];
required: true;
};
} & U;
type: "object";
required: true;
};
export declare const tUtils: {
unionObject: <T extends string, U>(type: T, attrs: U) => {
properties: {
type: {
type: "enum";
options: [import("./generics").DeepWriteable<T>];
required: true;
};
} & U;
type: "object";
required: true;
};
tObject: {
pick: <TObj extends TObject, PropsToPick extends (keyof TObj["properties"])[], NewProperties = Pick<TObj["properties"], PropsToPick[number]> extends infer T_1 ? { [K in keyof T_1]: Pick<TObj["properties"], PropsToPick[number]>[K]; } : never, Out = Omit<TObj, "properties"> & {
properties: NewProperties;
} extends infer T_2 ? { [K_1 in keyof T_2]: (Omit<TObj, "properties"> & {
properties: NewProperties;
})[K_1]; } : never>(obj: TObj, ...attrsName: PropsToPick) => Out;
omit: <TObj_1 extends TObject, PropsToOmit extends (keyof TObj_1["properties"])[], NewProperties_1 = Omit<TObj_1["properties"], PropsToOmit[number]> extends infer T_3 ? { [K_2 in keyof T_3]: Omit<TObj_1["properties"], PropsToOmit[number]>[K_2]; } : never, Out_1 = Omit<TObj_1, "properties"> & {
properties: NewProperties_1;
} extends infer T_4 ? { [K_3 in keyof T_4]: (Omit<TObj_1, "properties"> & {
properties: NewProperties_1;
})[K_3]; } : never>(obj: TObj_1, ...attrsName: PropsToOmit) => Out_1;
partial: <TObj_2 extends TObject>(obj: TObj_2) => Omit<TObj_2, "properties"> & {
properties: { [K_5 in keyof TObj_2["properties"]]: Omit<TObj_2["properties"][K_5], "required"> & {
required: false;
} extends infer T_7 ? { [K_6 in keyof T_7]: (Omit<TObj_2["properties"][K_5], "required"> & {
required: false;
})[K_6]; } : never; };
} extends infer T_5 ? { [K_4 in keyof T_5]: (Omit<TObj_2, "properties"> & {
properties: { [K_5 in keyof TObj_2["properties"]]: Omit<TObj_2["properties"][K_5], "required"> & {
required: false;
} extends infer T_6 ? { [K_6 in keyof T_6]: (Omit<TObj_2["properties"][K_5], "required"> & {
required: false;
})[K_6]; } : never; };
})[K_4]; } : never;
};
};