From fdf4a5b1e10fe73620f60db72edaa324ee808ca9 Mon Sep 17 00:00:00 2001 From: Carson Full Date: Mon, 4 Mar 2024 17:37:42 -0600 Subject: [PATCH] Tweak tuple type emission for nesting --- packages/driver/src/reflection/analyzeQuery.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/driver/src/reflection/analyzeQuery.ts b/packages/driver/src/reflection/analyzeQuery.ts index 8165c62b0..73a8f012d 100644 --- a/packages/driver/src/reflection/analyzeQuery.ts +++ b/packages/driver/src/reflection/analyzeQuery.ts @@ -149,7 +149,8 @@ export const defaultCodecGenerators: CodecGeneratorMap = new Map([ const subCodecs = codec .getSubcodecs() .map((subCodec) => ctx.walk(subCodec)); - return `${ctx.readonly ? "readonly " : ""}[${subCodecs.join(", ")}]`; + const tuple = `[${subCodecs.join(", ")}]`; + return ctx.readonly ? `(readonly ${tuple})` : tuple; }), genDef(ArrayCodec, (codec, ctx) => ctx.applyCardinality(ctx.walk(codec.getSubcodecs()[0]), Cardinality.Many) @@ -216,13 +217,15 @@ export const defaultApplyCardinalityToTsType = (type: string, cardinality: Cardinality): string => { switch (cardinality) { case Cardinality.Many: - return `${ctx.readonly ? "readonly " : ""}${type}[]`; + return `${ctx.readonly ? "Readonly" : ""}Array<${type}>`; case Cardinality.One: return type; case Cardinality.AtMostOne: return `${type} | null`; - case Cardinality.AtLeastOne: - return `${ctx.readonly ? "readonly " : ""}[(${type}), ...(${type})[]]`; + case Cardinality.AtLeastOne: { + const tuple = `[(${type}), ...(${type})[]]`; + return ctx.readonly ? `(readonly ${tuple})` : tuple; + } } throw new Error(`Unexpected cardinality: ${cardinality}`); };