fogui-common 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/model/base/Model.d.ts +1 -2
- package/dist/model/base/Model.js.map +1 -1
- package/dist/types/base/ArrayType.d.ts +9 -8
- package/dist/types/base/ArrayType.js +2 -0
- package/dist/types/base/ArrayType.js.map +1 -1
- package/dist/types/base/ArrayType.spec.js +3 -1
- package/dist/types/base/ArrayType.spec.js.map +1 -1
- package/dist/types/base/StringArrayType.d.ts +1 -1
- package/dist/types/base/StringArrayType.js.map +1 -1
- package/dist/util/InferType.d.ts +4 -1
- package/dist/util/InferType.js +2 -0
- package/dist/util/InferType.js.map +1 -1
- package/package.json +1 -1
- package/src/model/base/Model.ts +1 -1
- package/src/types/base/ArrayType.spec.ts +4 -2
- package/src/types/base/ArrayType.ts +13 -11
- package/src/types/base/StringArrayType.ts +7 -2
- package/src/util/InferType.ts +17 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AttributeType, ParseAndValidationCriticality, ParseAndValidationResult, parseResult } from "../../types/base/AttributeType.js";
|
|
2
2
|
import { InferType } from "../../util/InferType.js";
|
|
3
3
|
export declare const required: true;
|
|
4
|
-
interface PropertyOptions {
|
|
4
|
+
export interface PropertyOptions {
|
|
5
5
|
required?: boolean;
|
|
6
6
|
type: AttributeType<any, any>;
|
|
7
7
|
}
|
|
@@ -12,4 +12,3 @@ export declare class Model extends AttributeType<object, Record<string, any>> {
|
|
|
12
12
|
[key: string]: any;
|
|
13
13
|
}, level?: ParseAndValidationCriticality): Promise<ParseAndValidationResult>;
|
|
14
14
|
}
|
|
15
|
-
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Model.js","sourceRoot":"","sources":["../../../src/model/base/Model.ts"],"names":[],"mappings":"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","sourcesContent":["import { AttributeType, ParseAndValidationCriticality, ParseAndValidationResult, parseResult } from \"../../types/base/AttributeType.js\";\nimport { InferType } from \"../../util/InferType.js\";\n\nexport const required = true as const\n\n\
|
|
1
|
+
{"version":3,"file":"Model.js","sourceRoot":"","sources":["../../../src/model/base/Model.ts"],"names":[],"mappings":"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","sourcesContent":["import { AttributeType, ParseAndValidationCriticality, ParseAndValidationResult, parseResult } from \"../../types/base/AttributeType.js\";\nimport { InferType } from \"../../util/InferType.js\";\n\nexport const required = true as const\n\n\nexport interface PropertyOptions {\n required?: boolean;\n type: AttributeType<any, any>;\n}\n\n\nexport class Model extends AttributeType<object,Record<string, any>> {\n properties: Record<string, PropertyOptions> = {};\n parse(value: Record<string, any>): parseResult<InferType<this>> {\n const obj: any = {};\n let validationObject:ParseAndValidationResult = {criticality:ParseAndValidationCriticality.Ok,messages:[]}\n validationObject.subValidationResults={}\n for (const key in this.properties) {\n if (this.properties[key].required || value[key] !== undefined) {\n let result = this.properties[key].type.parse(value[key]);\n obj[key] = result.value;\n validationObject.subValidationResults[key]=result.deepResult\n validationObject.criticality=Math.max(validationObject.criticality,result.deepResult.criticality)\n }\n }\n for(let objectProperty in value){\n if(this.properties[objectProperty]===undefined)\n validationObject.messages.push({criticality:ParseAndValidationCriticality.Error, message:`Property \"${objectProperty}\" nicht erlaubt.` })\n }\n return {value: obj, deepResult: validationObject};\n }\n async validate(value: { [key: string]: any}, level?: ParseAndValidationCriticality): Promise<ParseAndValidationResult> {\n let validationObject:ParseAndValidationResult = {criticality:ParseAndValidationCriticality.Ok,messages:[]}\n validationObject.subValidationResults={}\n for(let propertyName in this.properties){\n let property = this.properties[propertyName]\n if(value[propertyName]===undefined ){\n if(property.required){\n validationObject.messages.push({criticality:ParseAndValidationCriticality.Error, message:`Property \"${propertyName}\" is required.`})\n validationObject.criticality=Math.max(validationObject.criticality,ParseAndValidationCriticality.Error)\n }\n continue\n }\n let validationResult = await property.type.validate(value[propertyName])\n validationObject.subValidationResults[propertyName]=validationResult\n validationObject.criticality=Math.max(validationObject.criticality,validationResult.criticality)\n }\n for(let objectProperty in value){\n if(this.properties[objectProperty]===undefined)\n validationObject.messages.push({criticality:ParseAndValidationCriticality.Error, message:`Property \"${objectProperty}\" nicht erlaubt.` })\n }\n return validationObject\n }\n}"]}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
+
import { InferExternalType, InferType } from "../../util/InferType.js";
|
|
1
2
|
import { AttributeType, AttributeTypeOptions, ParseAndValidationCriticality, ParseAndValidationResult, parseResult } from "./AttributeType.js";
|
|
2
|
-
export type ArrayTypeOptions = AttributeTypeOptions<any[]> & {
|
|
3
|
-
type:
|
|
3
|
+
export type ArrayTypeOptions<T> = AttributeTypeOptions<any[]> & {
|
|
4
|
+
type: T;
|
|
4
5
|
};
|
|
5
|
-
export declare
|
|
6
|
-
|
|
7
|
-
constructor(options?: ArrayTypeOptions);
|
|
8
|
-
parse(value:
|
|
9
|
-
validate(value:
|
|
10
|
-
format(value:
|
|
6
|
+
export declare class ArrayType<T extends AttributeType<any, any>> extends AttributeType<InferType<T>[], InferExternalType<T>[]> {
|
|
7
|
+
type: T;
|
|
8
|
+
constructor(options?: ArrayTypeOptions<T>);
|
|
9
|
+
parse(value: InferExternalType<T>[]): parseResult<InferType<T>[]>;
|
|
10
|
+
validate(value: InferType<T>[], level?: ParseAndValidationCriticality): Promise<ParseAndValidationResult>;
|
|
11
|
+
format(value: InferType<T>[]): InferExternalType<T>[];
|
|
11
12
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { AttributeType, ParseAndValidationCriticality } from "./AttributeType.js";
|
|
2
2
|
export class ArrayType extends AttributeType {
|
|
3
|
+
type;
|
|
3
4
|
constructor(options) {
|
|
4
5
|
super(options);
|
|
6
|
+
this.type = options?.type ? options.type : new AttributeType();
|
|
5
7
|
}
|
|
6
8
|
parse(value) {
|
|
7
9
|
let resultObject = { criticality: ParseAndValidationCriticality.Ok, messages: [] };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArrayType.js","sourceRoot":"","sources":["../../../src/types/base/ArrayType.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ArrayType.js","sourceRoot":"","sources":["../../../src/types/base/ArrayType.ts"],"names":[],"mappings":"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","sourcesContent":["import { InferExternalType, InferType } from \"../../util/InferType.js\";\nimport { AttributeType, AttributeTypeOptions, ParseAndValidationCriticality, ParseAndValidationResult, parseResult } from \"./AttributeType.js\";\n\n\nexport type ArrayTypeOptions<T> = AttributeTypeOptions<any[]> &{\n type: T \n} \n\n\nexport class ArrayType<T extends AttributeType<any, any>> extends AttributeType<InferType<T>[],InferExternalType<T>[]> {\n type: T \n constructor(options?: ArrayTypeOptions<T>) {\n super(options)\n this.type = options?.type ? options.type : new AttributeType() as T\n }\n parse(value: InferExternalType<T>[]): parseResult<InferType<T>[]> {\n let resultObject:ParseAndValidationResult = {criticality:ParseAndValidationCriticality.Ok,messages:[]}\n resultObject.subValidationResults={}\n let returnObject:InferType<T>[] = []\n if(!value) return {value: this.defaultValue, deepResult: { criticality: ParseAndValidationCriticality.Info, messages: [{criticality: ParseAndValidationCriticality.Info, message:'No value given using default Value!'}] }}\n if(!Array.isArray(value)) return {value: this.defaultValue, deepResult: { criticality: ParseAndValidationCriticality.Error, messages: [{criticality: ParseAndValidationCriticality.Error, message:'Value is not an array'}] }}\n for(let i=0; i< value.length; i++){\n const result = this.type.parse(value[i])\n resultObject.criticality = Math.max(resultObject.criticality, result.deepResult.criticality)\n resultObject.subValidationResults[i] = resultObject\n returnObject.push(result.value as InferType<T>)\n }\n return {value: returnObject, deepResult: resultObject} \n }\n async validate(value: InferType<T>[], level?: ParseAndValidationCriticality): Promise<ParseAndValidationResult> {\n let validationObject:ParseAndValidationResult = {\n criticality: ParseAndValidationCriticality.Ok, messages: [], subValidationResults: {}\n }\n validationObject.subValidationResults = {}\n for(let i=0; i< value.length; i++){\n const validationResult = await this.type.validate(value[i], level)\n validationObject.criticality = Math.max(validationObject.criticality, validationResult.criticality)\n validationObject.subValidationResults[i] = validationResult\n }\n return validationObject\n }\n format(value: InferType<T>[]): InferExternalType<T>[] {\n if(!value) return []\n return value.map(v=>this.type.format(v) as InferExternalType<T>)\n }\n}"]}
|
|
@@ -3,7 +3,9 @@ import { ArrayType } from "./ArrayType.js";
|
|
|
3
3
|
import { ParseAndValidationCriticality } from "./AttributeType.js";
|
|
4
4
|
import { NumberType } from "./NumberType.js";
|
|
5
5
|
class NumberArrayType extends ArrayType {
|
|
6
|
-
|
|
6
|
+
constructor() {
|
|
7
|
+
super({ type: new NumberType(), defaultValue: [] });
|
|
8
|
+
}
|
|
7
9
|
}
|
|
8
10
|
describe("ArrayType", () => {
|
|
9
11
|
let arrayType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArrayType.spec.js","sourceRoot":"","sources":["../../../src/types/base/ArrayType.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAiB,6BAA6B,EAA4B,MAAM,oBAAoB,CAAC;AAC5G,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI7C,MAAM,eAAgB,SAAQ,
|
|
1
|
+
{"version":3,"file":"ArrayType.spec.js","sourceRoot":"","sources":["../../../src/types/base/ArrayType.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from \"chai\";\nimport { ArrayType } from \"./ArrayType.js\";\nimport { AttributeType, ParseAndValidationCriticality, ParseAndValidationResult } from \"./AttributeType.js\";\nimport { NumberType } from \"./NumberType.js\";\n\n\n\nclass NumberArrayType extends ArrayType<NumberType> {\n constructor() {\n super({type: new NumberType(), defaultValue: []})\n }\n}\n\ndescribe(\"ArrayType\", () => {\n let arrayType: NumberArrayType;\n\n beforeEach(() => {\n arrayType = new NumberArrayType();\n });\n\n describe(\"parse\", () => {\n it(\"should parse an array of numbers\", () => {\n const result = arrayType.parse([\"1\", \"2\", \"3\"]).value;\n expect(result).to.deep.equal([1, 2, 3]);\n });\n\n it(\"should return defaultValue if value is undefined\", () => {\n const result = arrayType.parse(undefined as any).value;\n expect(result).to.equal(arrayType.defaultValue);\n });\n\n it(\"should return error result if value is not an array\", () => {\n const result = arrayType.parse(123 as any);\n expect(result.deepResult.criticality).to.equal(ParseAndValidationCriticality.Error);\n expect(result.deepResult.messages).to.deep.include({ criticality: ParseAndValidationCriticality.Error, message: \"Value is not an array\" });\n });\n });\n\n describe(\"validate\", () => {\n it(\"should validate all elements and aggregate criticality\", async () => {\n const result = await arrayType.validate([1, NaN, 3]);\n result.subValidationResults = result.subValidationResults || {};\n expect(result.criticality).to.equal(ParseAndValidationCriticality.Error);\n expect(result.subValidationResults[1].messages).to.deep.include({ criticality: ParseAndValidationCriticality.Error, message: \"Not a number\" });\n });\n\n it(\"should return Ok for valid array\", async () => {\n const result = await arrayType.validate([1, 2, 3]);\n expect(result.criticality).to.equal(ParseAndValidationCriticality.Ok);\n });\n });\n\n describe(\"format\", () => {\n it(\"should format an array of numbers\", () => {\n const result = arrayType.format([1, 2, 3]);\n expect(result).to.deep.equal([\"1\", \"2\", \"3\"]);\n });\n\n it(\"should return empty array if value is undefined\", () => {\n const result = arrayType.format(undefined as any);\n expect(result).to.deep.equal([]);\n });\n });\n});"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StringArrayType.js","sourceRoot":"","sources":["../../../src/types/base/StringArrayType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"StringArrayType.js","sourceRoot":"","sources":["../../../src/types/base/StringArrayType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAoB,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,OAAO,eAAgB,SAAQ,SAAqB;IACtD,IAAI,GAAG,IAAI,UAAU,EAAE,CAAA;CAM1B","sourcesContent":["import { ArrayType, ArrayTypeOptions } from \"./ArrayType.js\";\nimport { StringType } from \"./StringType.js\";\n\nexport class StringArrayType extends ArrayType<StringType>{\n type = new StringType()\n /*constructor(options?:ArrayTypeOptions<StringType>) {\n options = options || {type: new StringType()}\n options.type = options.type || new StringType()\n super({type: new StringType()})\n }*/\n}"]}
|
package/dist/util/InferType.d.ts
CHANGED
|
@@ -11,5 +11,8 @@ type PartialPartial<T, K extends keyof T> = Partial<Pick<T, K>> & Omit<T, K> ext
|
|
|
11
11
|
} : never;
|
|
12
12
|
export type InferType<T> = T extends Model ? PartialPartial<{
|
|
13
13
|
[K in keyof T["properties"]]: InferType<T["properties"][K]["type"]>;
|
|
14
|
-
}, OptionalKeys<T["properties"]>> : T extends ArrayType<infer U
|
|
14
|
+
}, OptionalKeys<T["properties"]>> : T extends ArrayType<infer U> ? InferType<T["type"]>[] : T extends AttributeType<infer U> ? U : never;
|
|
15
|
+
export type InferExternalType<T> = T extends Model ? PartialPartial<{
|
|
16
|
+
[K in keyof T["properties"]]: InferExternalType<T["properties"][K]["type"]>;
|
|
17
|
+
}, OptionalKeys<T["properties"]>> : T extends ArrayType<infer U> ? InferExternalType<T["type"]>[] : T extends AttributeType<any, infer U> ? U : never;
|
|
15
18
|
export {};
|
package/dist/util/InferType.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InferType.js","sourceRoot":"","sources":["../../src/util/InferType.ts"],"names":[],"mappings":"","sourcesContent":["import { Model } from \"../model/base/Model.js\";\nimport { ArrayType } from \"../types/base/ArrayType.js\";\nimport { AttributeType } from \"../types/base/AttributeType.js\";\n\n\ntype RequriedKeys<T> = {\n [K in keyof T]: T[K] extends { required: true } ? K : never;\n}[keyof T];\n\ntype OptionalKeys<T> = {\n [K in keyof T]: T[K] extends { required: true } ? never : K;\n}[keyof T];\n\ntype PartialPartial<T, K extends keyof T> = Partial<Pick<T, K>> & Omit<T, K> extends\n infer O ? { [P in keyof O]: O[P] } : never;\n\nexport type InferType<T> = T extends Model\n ? \n PartialPartial<{[K in keyof T[\"properties\"]]: InferType<T[\"properties\"][K][\"type\"]>},\n OptionalKeys<T[\"properties\"]>>\n \n : T extends ArrayType<infer U
|
|
1
|
+
{"version":3,"file":"InferType.js","sourceRoot":"","sources":["../../src/util/InferType.ts"],"names":[],"mappings":";AAwCA,gCAAgC;AAChC,yCAAyC","sourcesContent":["import { Model } from \"../model/base/Model.js\";\nimport { ArrayType } from \"../types/base/ArrayType.js\";\nimport { AttributeType } from \"../types/base/AttributeType.js\";\n\n\ntype RequriedKeys<T> = {\n [K in keyof T]: T[K] extends { required: true } ? K : never;\n}[keyof T];\n\ntype OptionalKeys<T> = {\n [K in keyof T]: T[K] extends { required: true } ? never : K;\n}[keyof T];\n\ntype PartialPartial<T, K extends keyof T> = Partial<Pick<T, K>> & Omit<T, K> extends\n infer O ? { [P in keyof O]: O[P] } : never;\n\nexport type InferType<T> = T extends Model\n ? \n PartialPartial<{[K in keyof T[\"properties\"]]: InferType<T[\"properties\"][K][\"type\"]>},\n OptionalKeys<T[\"properties\"]>>\n \n : T extends ArrayType<infer U>\n ? InferType<T[\"type\"]>[]\n : \n T extends AttributeType<infer U>\n ? U\n : never;\n\nexport type InferExternalType<T> = T extends Model\n ? \n PartialPartial<{[K in keyof T[\"properties\"]]: InferExternalType<T[\"properties\"][K][\"type\"]>},\n OptionalKeys<T[\"properties\"]>>\n \n : T extends ArrayType<infer U>\n ? InferExternalType<T[\"type\"]>[]\n : \n T extends AttributeType<any, infer U>\n ? U\n : never;\n\n// type Test = InferType<Config>\n// type Test2 = InferExternalType<Config>"]}
|
package/package.json
CHANGED
package/src/model/base/Model.ts
CHANGED
|
@@ -5,8 +5,10 @@ import { NumberType } from "./NumberType.js";
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
class NumberArrayType extends ArrayType<
|
|
9
|
-
|
|
8
|
+
class NumberArrayType extends ArrayType<NumberType> {
|
|
9
|
+
constructor() {
|
|
10
|
+
super({type: new NumberType()})
|
|
11
|
+
}
|
|
10
12
|
}
|
|
11
13
|
|
|
12
14
|
describe("ArrayType", () => {
|
|
@@ -1,31 +1,33 @@
|
|
|
1
|
+
import { InferExternalType, InferType } from "../../util/InferType.js";
|
|
1
2
|
import { AttributeType, AttributeTypeOptions, ParseAndValidationCriticality, ParseAndValidationResult, parseResult } from "./AttributeType.js";
|
|
2
3
|
|
|
3
4
|
|
|
4
|
-
export type ArrayTypeOptions = AttributeTypeOptions<any[]> &{
|
|
5
|
-
type:
|
|
5
|
+
export type ArrayTypeOptions<T> = AttributeTypeOptions<any[]> &{
|
|
6
|
+
type: T
|
|
6
7
|
}
|
|
7
8
|
|
|
8
9
|
|
|
9
|
-
export
|
|
10
|
-
|
|
11
|
-
constructor(options?: ArrayTypeOptions) {
|
|
10
|
+
export class ArrayType<T extends AttributeType<any, any>> extends AttributeType<InferType<T>[],InferExternalType<T>[]> {
|
|
11
|
+
type: T
|
|
12
|
+
constructor(options?: ArrayTypeOptions<T>) {
|
|
12
13
|
super(options)
|
|
14
|
+
this.type = options?.type ? options.type : new AttributeType() as T
|
|
13
15
|
}
|
|
14
|
-
parse(value:
|
|
16
|
+
parse(value: InferExternalType<T>[]): parseResult<InferType<T>[]> {
|
|
15
17
|
let resultObject:ParseAndValidationResult = {criticality:ParseAndValidationCriticality.Ok,messages:[]}
|
|
16
18
|
resultObject.subValidationResults={}
|
|
17
|
-
let returnObject:
|
|
19
|
+
let returnObject:InferType<T>[] = []
|
|
18
20
|
if(!value) return {value: this.defaultValue, deepResult: { criticality: ParseAndValidationCriticality.Info, messages: [{criticality: ParseAndValidationCriticality.Info, message:'No value given using default Value!'}] }}
|
|
19
21
|
if(!Array.isArray(value)) return {value: this.defaultValue, deepResult: { criticality: ParseAndValidationCriticality.Error, messages: [{criticality: ParseAndValidationCriticality.Error, message:'Value is not an array'}] }}
|
|
20
22
|
for(let i=0; i< value.length; i++){
|
|
21
23
|
const result = this.type.parse(value[i])
|
|
22
24
|
resultObject.criticality = Math.max(resultObject.criticality, result.deepResult.criticality)
|
|
23
25
|
resultObject.subValidationResults[i] = resultObject
|
|
24
|
-
returnObject.push(result.value as
|
|
26
|
+
returnObject.push(result.value as InferType<T>)
|
|
25
27
|
}
|
|
26
28
|
return {value: returnObject, deepResult: resultObject}
|
|
27
29
|
}
|
|
28
|
-
async validate(value:
|
|
30
|
+
async validate(value: InferType<T>[], level?: ParseAndValidationCriticality): Promise<ParseAndValidationResult> {
|
|
29
31
|
let validationObject:ParseAndValidationResult = {
|
|
30
32
|
criticality: ParseAndValidationCriticality.Ok, messages: [], subValidationResults: {}
|
|
31
33
|
}
|
|
@@ -37,8 +39,8 @@ export abstract class ArrayType<InternalType,ExternalType> extends AttributeType
|
|
|
37
39
|
}
|
|
38
40
|
return validationObject
|
|
39
41
|
}
|
|
40
|
-
format(value:
|
|
42
|
+
format(value: InferType<T>[]): InferExternalType<T>[] {
|
|
41
43
|
if(!value) return []
|
|
42
|
-
return value.map(v=>this.type.format(v) as
|
|
44
|
+
return value.map(v=>this.type.format(v) as InferExternalType<T>)
|
|
43
45
|
}
|
|
44
46
|
}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
import { ArrayType } from "./ArrayType.js";
|
|
1
|
+
import { ArrayType, ArrayTypeOptions } from "./ArrayType.js";
|
|
2
2
|
import { StringType } from "./StringType.js";
|
|
3
3
|
|
|
4
|
-
export class StringArrayType extends ArrayType<
|
|
4
|
+
export class StringArrayType extends ArrayType<StringType>{
|
|
5
5
|
type = new StringType()
|
|
6
|
+
/*constructor(options?:ArrayTypeOptions<StringType>) {
|
|
7
|
+
options = options || {type: new StringType()}
|
|
8
|
+
options.type = options.type || new StringType()
|
|
9
|
+
super({type: new StringType()})
|
|
10
|
+
}*/
|
|
6
11
|
}
|
package/src/util/InferType.ts
CHANGED
|
@@ -19,9 +19,24 @@ export type InferType<T> = T extends Model
|
|
|
19
19
|
PartialPartial<{[K in keyof T["properties"]]: InferType<T["properties"][K]["type"]>},
|
|
20
20
|
OptionalKeys<T["properties"]>>
|
|
21
21
|
|
|
22
|
-
: T extends ArrayType<infer U
|
|
22
|
+
: T extends ArrayType<infer U>
|
|
23
23
|
? InferType<T["type"]>[]
|
|
24
24
|
:
|
|
25
25
|
T extends AttributeType<infer U>
|
|
26
26
|
? U
|
|
27
|
-
: never;
|
|
27
|
+
: never;
|
|
28
|
+
|
|
29
|
+
export type InferExternalType<T> = T extends Model
|
|
30
|
+
?
|
|
31
|
+
PartialPartial<{[K in keyof T["properties"]]: InferExternalType<T["properties"][K]["type"]>},
|
|
32
|
+
OptionalKeys<T["properties"]>>
|
|
33
|
+
|
|
34
|
+
: T extends ArrayType<infer U>
|
|
35
|
+
? InferExternalType<T["type"]>[]
|
|
36
|
+
:
|
|
37
|
+
T extends AttributeType<any, infer U>
|
|
38
|
+
? U
|
|
39
|
+
: never;
|
|
40
|
+
|
|
41
|
+
// type Test = InferType<Config>
|
|
42
|
+
// type Test2 = InferExternalType<Config>
|