MCPcopy Index your code
hub / github.com/glideapps/quicktype / TypeInference

Class TypeInference

src/Inference.ts:81–183  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

79}
80
81export class TypeInference {
82 constructor(private readonly _typeBuilder: TypeGraphBuilder, private readonly _inferEnums: boolean) {}
83
84 inferType = (
85 cjson: CompressedJSON,
86 typeName: string,
87 isInferred: boolean,
88 valueArray: NestedValueArray
89 ): TypeRef => {
90 const unionBuilder = new InferenceUnionBuilder(this._typeBuilder, typeName, isInferred, this, cjson);
91 let numValues = 0;
92
93 forEachValueInNestedValueArray(valueArray, value => {
94 numValues += 1;
95 const t = valueTag(value);
96 switch (t) {
97 case Tag.Null:
98 unionBuilder.addNull();
99 break;
100 case Tag.False:
101 case Tag.True:
102 unionBuilder.addBool();
103 break;
104 case Tag.Integer:
105 unionBuilder.addInteger();
106 break;
107 case Tag.Double:
108 unionBuilder.addDouble();
109 break;
110 case Tag.InternedString:
111 if (this._inferEnums && !unionBuilder.haveString) {
112 const s = cjson.getStringForValue(value);
113 if (canBeEnumCase(s)) {
114 unionBuilder.addEnumCase(s);
115 } else {
116 unionBuilder.addStringType("string");
117 }
118 } else {
119 unionBuilder.addStringType("string");
120 }
121 break;
122 case Tag.UninternedString:
123 unionBuilder.addStringType("string");
124 break;
125 case Tag.Object:
126 unionBuilder.addClass(cjson.getObjectForValue(value));
127 break;
128 case Tag.Array:
129 unionBuilder.addArray(cjson.getArrayForValue(value));
130 break;
131 case Tag.Date:
132 unionBuilder.addStringType("date");
133 break;
134 case Tag.Time:
135 unionBuilder.addStringType("time");
136 break;
137 case Tag.DateTime:
138 unionBuilder.addStringType("date-time");

Callers

nothing calls this directly

Calls 5

valueTagFunction · 0.90
assertNeverFunction · 0.90
canBeEnumCaseFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…