Commit aed08235 authored by nanahira's avatar nanahira

don't be too strict

parent 93d83551
Pipeline #7059 passed with stages
in 35 seconds
......@@ -142,25 +142,29 @@ function applySchemaForClass<T>(
return instance;
}
export function SchemaClass<T>(originalClass: ClassType<T>) {
const schema = schemaFromClass(originalClass);
const newClass = (function (...args: any[]): T {
const instance = new originalClass(...args);
const originalObject = args[0];
return applySchemaForClass(originalClass, instance, originalObject);
} as unknown) as ClassType<T> & Schema<T>;
Object.defineProperty(newClass, 'name', {
value: originalClass.name,
});
Object.setPrototypeOf(newClass, originalClass.prototype);
for (const field of schemaFields) {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
newClass[field] = schema[field];
}
return newClass;
}
export function RegisterSchema(options: SchemaClassOptions = {}) {
return function <T>(originalClass: ClassType<T>) {
return function <T>(originalClass: ClassType<T>): any {
Metadata.set('SchemaClassOptions', options)(originalClass);
const schema = schemaFromClass(originalClass);
const newClass = (function (...args: any[]): any {
const instance = new originalClass(...args);
const originalObject = args[0];
return applySchemaForClass(originalClass, instance, originalObject);
} as unknown) as ClassType<T> & Schema<T>;
Object.defineProperty(newClass, 'name', {
value: originalClass.name,
});
Object.setPrototypeOf(newClass, originalClass.prototype);
for (const field of schemaFields) {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
newClass[field] = schema[field];
}
return newClass;
return SchemaClass(originalClass);
};
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment