Skip to content

Commit

Permalink
fix hub types
Browse files Browse the repository at this point in the history
  • Loading branch information
berekuk committed Jan 23, 2024
1 parent f8fc608 commit 76a9f2a
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,13 @@
import { FC, use, useState } from "react";
import { graphql, useFragment } from "react-relay";

import { SqValuePathEdge } from "@quri/squiggle-lang";
import {
squiggleLangByVersion,
useAdjustSquiggleVersion,
VersionedSquiggleChart,
versionSupportsExports,
versionSupportsSqPathV2,
} from "@quri/versioned-squiggle-components";

import { squiggleHubLinker } from "@/squiggle/components/linker";
Expand Down Expand Up @@ -36,10 +38,16 @@ const VersionedSquiggleModelExportPage: FC<
linker: squiggleHubLinker,
});

const rootPath = new squiggleLang.SqValuePath({
root: "bindings",
items: [{ type: "string", value: variableName }],
});
const rootPath = versionSupportsSqPathV2.props(squiggleLang)
? new squiggleLang.SqValuePath({
root: "bindings",
edges: [SqValuePathEdge.fromKey(variableName)],
})
: new squiggleLang.SqValuePath({
root: "bindings",
items: [{ type: "string", value: variableName }],
});

return { project, rootPath };
});

Expand Down
1 change: 1 addition & 0 deletions packages/versioned-components/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ export {
versionSupportsDropdownMenu,
versionSupportsExports,
versionSupportsImportTooltip,
versionSupportsSqPathV2,
versionSupportsSquiggleChart,
} from "./versions.js";

Expand Down
16 changes: 15 additions & 1 deletion packages/versioned-components/src/squiggleLangByVersion.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ type PackageTypes = {
dev: Awaited<typeof import("@quri/squiggle-lang")>;
};

export async function squiggleLangByVersion<T extends SquiggleVersion>(
async function squiggleLangPackageByVersion<T extends SquiggleVersion>(
version: T
): Promise<PackageTypes[T]> {
// We do explicit casting of imports, but it shouldn't matter.
Expand All @@ -27,3 +27,17 @@ export async function squiggleLangByVersion<T extends SquiggleVersion>(
throw new Error(`Unkonwn version ${version satisfies never}`);
}
}

// Conditional is a trick from https://stackoverflow.com/a/51691257
type VersionedSquiggleLang<T extends SquiggleVersion = SquiggleVersion> =
T extends string ? PackageTypes[T] & { version: T } : never;

export async function squiggleLangByVersion<T extends SquiggleVersion>(
version: T
): Promise<VersionedSquiggleLang<T>> {
const squiggleLang = await squiggleLangPackageByVersion(version);
return {
...squiggleLang,
version,
} as VersionedSquiggleLang<T>;
}

0 comments on commit 76a9f2a

Please sign in to comment.