Fixed typescript build

This commit is contained in:
Ozzie Gooen 2022-07-20 08:27:57 -07:00
parent 1c4557b638
commit 078534f7c8
2 changed files with 82 additions and 72 deletions

View File

@ -120,77 +120,86 @@ function createTsExport(
x: expressionValue, x: expressionValue,
environment: environment environment: environment
): squiggleExpression { ): squiggleExpression {
switch (x.tag) { switch (x) {
case "EvArray": case "EvVoid":
// genType doesn't convert anything more than 2 layers down into {tag: x, value: x} return tag("void", "");
// format, leaving it as the raw values. This converts the raw values default: {
// directly into typescript values. switch (x.tag) {
// case "EvArray":
// The casting here is because genType is about the types of the returned // genType doesn't convert anything more than 2 layers down into {tag: x, value: x}
// values, claiming they are fully recursive when that's not actually the // format, leaving it as the raw values. This converts the raw values
// case // directly into typescript values.
return tag( //
"array", // The casting here is because genType is about the types of the returned
x.value.map( // values, claiming they are fully recursive when that's not actually the
(arrayItem): squiggleExpression => // case
convertRawToTypescript( return tag(
arrayItem as unknown as rescriptExport, "array",
environment x.value.map(
(arrayItem): squiggleExpression =>
convertRawToTypescript(
arrayItem as unknown as rescriptExport,
environment
)
) )
) );
); case "EvArrayString":
case "EvArrayString": return tag("arraystring", x.value);
return tag("arraystring", x.value); case "EvBool":
case "EvBool": return tag("boolean", x.value);
return tag("boolean", x.value); case "EvCall":
case "EvCall": return tag("call", x.value);
return tag("call", x.value); case "EvLambda":
case "EvLambda": return tag("lambda", x.value);
return tag("lambda", x.value); case "EvDistribution":
case "EvDistribution": return tag("distribution", new Distribution(x.value, environment));
return tag("distribution", new Distribution(x.value, environment)); case "EvNumber":
case "EvNumber": return tag("number", x.value);
return tag("number", x.value); case "EvRecord":
case "EvRecord": // genType doesn't support records, so we have to do the raw conversion ourself
// genType doesn't support records, so we have to do the raw conversion ourself let result: tagged<"record", { [key: string]: squiggleExpression }> =
let result: tagged<"record", { [key: string]: squiggleExpression }> = tag( tag(
"record", "record",
_.mapValues(x.value, (x: unknown) => _.mapValues(x.value, (x: unknown) =>
convertRawToTypescript(x as rescriptExport, environment) convertRawToTypescript(x as rescriptExport, environment)
) )
); );
return result; return result;
case "EvString": case "EvString":
return tag("string", x.value); return tag("string", x.value);
case "EvSymbol": case "EvSymbol":
return tag("symbol", x.value); return tag("symbol", x.value);
case "EvDate": case "EvDate":
return tag("date", x.value); return tag("date", x.value);
case "EvTimeDuration": case "EvTimeDuration":
return tag("timeDuration", x.value); return tag("timeDuration", x.value);
case "EvDeclaration": case "EvDeclaration":
return tag("lambdaDeclaration", x.value); return tag("lambdaDeclaration", x.value);
case "EvTypeIdentifier": case "EvTypeIdentifier":
return tag("typeIdentifier", x.value); return tag("typeIdentifier", x.value);
case "EvType": case "EvType":
let typeResult: tagged<"type", { [key: string]: squiggleExpression }> = let typeResult: tagged<
tag( "type",
"type", { [key: string]: squiggleExpression }
_.mapValues(x.value, (x: unknown) => > = tag(
convertRawToTypescript(x as rescriptExport, environment) "type",
) _.mapValues(x.value, (x: unknown) =>
); convertRawToTypescript(x as rescriptExport, environment)
return typeResult; )
case "EvModule": );
let moduleResult: tagged< return typeResult;
"module", case "EvModule":
{ [key: string]: squiggleExpression } let moduleResult: tagged<
> = tag( "module",
"module", { [key: string]: squiggleExpression }
_.mapValues(x.value, (x: unknown) => > = tag(
convertRawToTypescript(x as rescriptExport, environment) "module",
) _.mapValues(x.value, (x: unknown) =>
); convertRawToTypescript(x as rescriptExport, environment)
return moduleResult; )
);
return moduleResult;
}
}
} }
} }

View File

@ -131,7 +131,8 @@ export type squiggleExpression =
| tagged<"record", { [key: string]: squiggleExpression }> | tagged<"record", { [key: string]: squiggleExpression }>
| tagged<"type", { [key: string]: squiggleExpression }> | tagged<"type", { [key: string]: squiggleExpression }>
| tagged<"typeIdentifier", string> | tagged<"typeIdentifier", string>
| tagged<"module", { [key: string]: squiggleExpression }>; | tagged<"module", { [key: string]: squiggleExpression }>
| tagged<"void", string>;
export { lambdaValue }; export { lambdaValue };