From 24cfd39001e9afe572eb4b3c5f9b75f8d66630c3 Mon Sep 17 00:00:00 2001 From: MARCROCK22 Date: Fri, 20 Sep 2024 03:42:22 +0000 Subject: [PATCH] fix: dont encode cache data by default --- src/cache/adapters/default.ts | 4 +-- src/cache/adapters/limited.ts | 22 ++++++++------- tests/cache.test.js | 53 +++++++++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+), 12 deletions(-) create mode 100644 tests/cache.test.js diff --git a/src/cache/adapters/default.ts b/src/cache/adapters/default.ts index 85a572f..530ab88 100644 --- a/src/cache/adapters/default.ts +++ b/src/cache/adapters/default.ts @@ -14,10 +14,10 @@ export class MemoryAdapter implements Adapter { constructor( public options: MemoryAdapterOptions = { encode(data) { - return JSON.stringify(data) as T; + return data; }, decode(data) { - return JSON.parse(data as string); + return data; }, }, ) {} diff --git a/src/cache/adapters/limited.ts b/src/cache/adapters/limited.ts index 27311e9..f9576a1 100644 --- a/src/cache/adapters/limited.ts +++ b/src/cache/adapters/limited.ts @@ -47,10 +47,10 @@ export class LimitedMemoryAdapter implements Adapter { limit: Number.POSITIVE_INFINITY, }, encode(data) { - return JSON.stringify(data) as T; + return data; }, decode(data) { - return JSON.parse(data as string); + return data; }, } satisfies LimitedMemoryAdapterOptions, options, @@ -111,10 +111,6 @@ export class LimitedMemoryAdapter implements Adapter { const existsRelation = self.relationships.has(relationshipNamespace); if (existsRelation) { switch (relationshipNamespace) { - case 'guild': - case 'user': - self.removeToRelationship(namespace, k.split('.')[1]); - break; case 'ban': case 'member': case 'voice_state': @@ -134,6 +130,11 @@ export class LimitedMemoryAdapter implements Adapter { case 'message': self.removeToRelationship(namespace, k.split('.')[1]); break; + // case 'guild': + // case 'user': + default: + self.removeToRelationship(namespace, k.split('.')[1]); + break; } } }, @@ -214,10 +215,6 @@ export class LimitedMemoryAdapter implements Adapter { ?.delete(`${parentNamespace}.${keySplit.at(1)}.${keySplit.at(2)}`); } break; - case 'user': - case 'guild': - this.storage.get(parentNamespace)?.delete(`${parentNamespace}.${keySplit.at(1)}`); - break; case 'channel': case 'emoji': case 'presence': @@ -237,6 +234,11 @@ export class LimitedMemoryAdapter implements Adapter { } } break; + // case 'user': + // case 'guild': + default: + this.storage.get(parentNamespace)?.delete(`${parentNamespace}.${keySplit.at(1)}`); + break; } } diff --git a/tests/cache.test.js b/tests/cache.test.js new file mode 100644 index 0000000..9916777 --- /dev/null +++ b/tests/cache.test.js @@ -0,0 +1,53 @@ +//@ts-check +const { describe, test } = require('node:test'); +const { Client } = require('../lib/index'); +const { LimitedMemoryAdapter, MemoryAdapter } = require('../lib/index'); + +// all intents +const intents = 53608447; + +describe('test memory cache adapter', () => { + const adapter = new MemoryAdapter(); + + test('discord cache', () => { + const client = new Client({ + getRC: () => ({ + locations: { + base: '', + output: '', + }, + intents, + token: '', + }), + }); + client.setServices({ + cache: { + adapter, + }, + }); + return client.cache.testAdapter(); + }); +}); + +describe('test limited memory cache adapter', () => { + const adapter = new LimitedMemoryAdapter(); + + test('discord cache', () => { + const client = new Client({ + getRC: () => ({ + locations: { + base: '', + output: '', + }, + intents, + token: '', + }), + }); + client.setServices({ + cache: { + adapter, + }, + }); + return client.cache.testAdapter(); + }); +});