Path: blob/main/components/ide/gha-update-image/lib/jb-helper/jb-releases.ts
2501 views
import { z } from "zod";1import axios from "axios";23export const productReleaseZod = z.record(4z.string(),5z.array(6z.object({7date: z.string(),8type: z.string(),9downloads: z.object({10linux: z11.object({12link: z.string(),13})14.optional(),15}),16notesLink: z.string().nullish(),17whatsnew: z.string().nullish(),18majorVersion: z.string(), // 2024.219build: z.string(), // 242.20224.15920version: z.string(), // 2024.2.121}),22),23);2425export type ReleaseItem = z.infer<typeof productReleaseZod>[string][number];2627export const releaseItemStr = (release: ReleaseItem) => {28return `${release.version}(${release.type},${release.build})`;29};3031export async function fetchProductReleases(info: { productCode: string; productType: string }) {32const { productCode, productType } = info;33// https://data.services.jetbrains.com/products/releases?code=GW&type=eap,rc,release&platform=linux34const url = `https://data.services.jetbrains.com/products/releases?code=${productCode}&type=${productType}&platform=linux`;35console.log(`Fetching product releases on ${url}`);36const response = await axios.get(url);37const data = productReleaseZod.parse(response.data);38if (!data[productCode] || data[productCode].length <= 0) {39throw new Error(`No data found for ${productCode} in ${url}`);40}41return data[productCode];42}434445