Skip to content

Commit 809f4e0

Browse files
fix(http-server/data): initialize cache with available payloads (#463)
1 parent 90885c9 commit 809f4e0

File tree

4 files changed

+27
-15
lines changed

4 files changed

+27
-15
lines changed

src/cache.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class _AppCache {
4040
fs.writeFileSync(path.join(kPayloadsPath, pkg.replaceAll("/", "-")), JSON.stringify(payload));
4141
}
4242

43-
async getPayload(pkg) {
43+
getPayload(pkg) {
4444
try {
4545
return JSON.parse(fs.readFileSync(path.join(kPayloadsPath, pkg.replaceAll("/", "-")), "utf-8"));
4646
}
@@ -51,9 +51,13 @@ class _AppCache {
5151
}
5252
}
5353

54-
async getPayloadOrNull(pkg) {
54+
availablePayloads() {
55+
return fs.readdirSync(kPayloadsPath);
56+
}
57+
58+
getPayloadOrNull(pkg) {
5559
try {
56-
return await this.getPayload(pkg);
60+
return this.getPayload(pkg);
5761
}
5862
catch {
5963
return null;
@@ -125,7 +129,7 @@ class _AppCache {
125129
catch {
126130
// Do nothing.
127131
}
128-
const packagesInFolder = fs.readdirSync(kPayloadsPath);
132+
const packagesInFolder = this.availablePayloads();
129133
if (packagesInFolder.length === 0) {
130134
await this.#initDefaultPayloadsList();
131135

src/http-server/endpoints/data.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export async function get(_req, res) {
2525
logger.info(`[data|get](current: ${current})`);
2626
logger.debug(`[data|get](lru: ${mru})`);
2727

28-
send(res, 200, await appCache.getPayload(current));
28+
send(res, 200, appCache.getPayload(current));
2929
}
3030
catch {
3131
logger.error(`[data|get](No cache yet. Creating one...)`);
@@ -37,7 +37,7 @@ export async function get(_req, res) {
3737
mru: [formatted],
3838
current: formatted,
3939
lru: [],
40-
availables: [],
40+
availables: appCache.availablePayloads(),
4141
lastUsed: {
4242
[formatted]: Date.now()
4343
},

src/http-server/websocket/commands/search.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export async function* search(
88
const { logger, cache } = context;
99
logger.info(`[ws|search](pkg: ${pkg})`);
1010

11-
const cachedPayload = await cache.getPayloadOrNull(pkg);
11+
const cachedPayload = cache.getPayloadOrNull(pkg);
1212
if (cachedPayload) {
1313
logger.info(`[ws|search](payload: ${pkg} found in cache)`);
1414
const cacheList = await cache.payloadsList();

test/cache.test.js

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,42 +48,50 @@ describe("appCache", () => {
4848
assert.equal(writeValue, JSON.stringify({ foo: "bar" }));
4949
});
5050

51-
it("getPayload should return the payload", async(t) => {
51+
it("getPayload should return the payload", (t) => {
5252
t.mock.method(fs, "readFileSync", () => JSON.stringify({ foo: "bar" }));
5353

54-
const payload = await appCache.getPayload("foo/bar");
54+
const payload = appCache.getPayload("foo/bar");
5555

5656
assert.deepEqual(payload, { foo: "bar" });
5757
});
5858

59-
it("getPayload should throw", async(t) => {
59+
it("getPayload should throw", (t) => {
6060
t.mock.method(fs, "readFileSync", () => {
6161
throw new Error("boo");
6262
});
6363

64-
await assert.rejects(async() => appCache.getPayload("foo/bar"), {
64+
assert.throws(() => appCache.getPayload("foo/bar"), {
6565
message: "boo"
6666
});
6767
});
6868

69-
it("getPayloadOrNull should return payload", async(t) => {
69+
it("getPayloadOrNull should return payload", (t) => {
7070
t.mock.method(fs, "readFileSync", () => JSON.stringify({ foo: "bar" }));
7171

72-
const payload = await appCache.getPayloadOrNull("foo/bar");
72+
const payload = appCache.getPayloadOrNull("foo/bar");
7373

7474
assert.deepEqual(payload, { foo: "bar" });
7575
});
7676

77-
it("getPayloadOrNull should return null", async(t) => {
77+
it("getPayloadOrNull should return null", (t) => {
7878
t.mock.method(fs, "readFileSync", () => {
7979
throw new Error("boo");
8080
});
8181

82-
const payload = await appCache.getPayloadOrNull("foo/bar");
82+
const payload = appCache.getPayloadOrNull("foo/bar");
8383

8484
assert.equal(payload, null);
8585
});
8686

87+
it("availablePayloads should return the list of payloads", (t) => {
88+
t.mock.method(fs, "readdirSync", () => ["foo-bar", "bar-foo"]);
89+
90+
const payloads = appCache.availablePayloads();
91+
92+
assert.deepEqual(payloads, ["foo-bar", "bar-foo"]);
93+
});
94+
8795
it("should update and get payloadsList", async() => {
8896
await appCache.updatePayloadsList({ foo: "bar" });
8997

0 commit comments

Comments
 (0)