Skip to content

Commit ebf116e

Browse files
authored
Deno: Inline required fields from meta.json in Flatpak data (#478)
meta.json is statefull
1 parent f945399 commit ebf116e

File tree

3 files changed

+24
-12
lines changed

3 files changed

+24
-12
lines changed

deno/deno.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@flatpak-contrib/flatpak-deno-generator",
3-
"version": "1.3.4",
3+
"version": "1.3.5",
44
"exports": "./src/main.ts",
55
"license": "MIT"
66
}

deno/src/main.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,14 +75,19 @@ export interface FlatpakData {
7575
export async function jsrPkgToFlatpakData(pkg: Pkg): Promise<FlatpakData[]> {
7676
const flatpkData: FlatpakData[] = [];
7777
const metaUrl = `https://jsr.io/${pkg.module}/meta.json`;
78-
const metaText = await fetch(
78+
const metaJson = await fetch(
7979
metaUrl,
80-
).then((r) => r.text());
80+
).then((r) => r.json());
8181

82+
// "meta.json" file is a stateful file, thats why we inline what we need
8283
flatpkData.push({
83-
type: "file",
84-
url: metaUrl,
85-
sha256: await sha256(metaText),
84+
type: "inline",
85+
contents: JSON.stringify({
86+
scope: metaJson.scope,
87+
name: metaJson.name,
88+
latest: metaJson.latest,
89+
versions: {},
90+
}),
8691
dest: `vendor/jsr.io/${pkg.module}`,
8792
"dest-filename": "meta.json",
8893
});

deno/tests/main.test.ts

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@ import { jsrPkgToFlatpakData, npmPkgToFlatpakData } from "../src/main.ts";
55

66
Deno.test("jsrPkgToFlatpakData returns correct flatpak data", async () => {
77
// Mock fetch for meta.json and versioned meta
8-
const metaJson = JSON.stringify({
9-
dummy: true,
10-
});
8+
const metaJson = {
9+
scope: "@std",
10+
name: "encoding",
11+
latest: "1.0.10",
12+
};
1113
const metaVerJson = JSON.stringify({
1214
moduleGraph2: {
1315
"/mod.ts": {},
@@ -43,7 +45,7 @@ Deno.test("jsrPkgToFlatpakData returns correct flatpak data", async () => {
4345
}
4446
if (url.endsWith("meta.json")) {
4547
return {
46-
text: async () => metaJson,
48+
json: async () => metaJson,
4749
} as Response;
4850
}
4951
throw new Error("Unexpected fetch url: " + url);
@@ -67,9 +69,14 @@ Deno.test("jsrPkgToFlatpakData returns correct flatpak data", async () => {
6769
// Should have meta.json, versioned meta, /mod.ts, deno.json, and duplicate deno.json
6870
assertEquals(data.length, 5);
6971

70-
// meta.json
71-
assertEquals(data[0].url, "https://jsr.io/@std/encoding/meta.json");
72+
// meta.json should be inline type with specific contents
73+
assertEquals(data[0].type, "inline");
7274
assertEquals(data[0]["dest-filename"], "meta.json");
75+
const inlineContents = JSON.parse(data[0].contents as string);
76+
assertEquals(inlineContents.scope, "@std");
77+
assertEquals(inlineContents.name, "encoding");
78+
assertEquals(inlineContents.latest, "1.0.10");
79+
assertEquals(inlineContents.versions, {});
7380
assertEquals(data[1].url, "https://jsr.io/@std/encoding/1.0.10_meta.json");
7481
assertEquals(data[1]["dest-filename"], "1.0.10_meta.json");
7582

0 commit comments

Comments
 (0)