(value: string): R {
try {
return JSON.parse(value);
} catch (error) {
diff --git a/src/errors/custom-error.ts b/src/errors/custom-error.ts
index 3b78c37..0c93873 100644
--- a/src/errors/custom-error.ts
+++ b/src/errors/custom-error.ts
@@ -1,4 +1,4 @@
-export default function(name: string, message: string, payload: Partial
= {}): Error {
+export default function
(name: string, message: string, payload: Partial
= {}): Error {
class CacheManagerError extends Error {
payload: Partial
;
diff --git a/src/managers/RefreshAheadManager.spec.ts b/src/managers/RefreshAheadManager.spec.ts
index c6660aa..dd8272c 100644
--- a/src/managers/RefreshAheadManager.spec.ts
+++ b/src/managers/RefreshAheadManager.spec.ts
@@ -142,7 +142,7 @@ describe("RefreshAheadManager", () => {
(manager as any).refresh = async (...args: any[]): Promise => {
await instanceRefresh.call(manager, ...args);
expect(await storage.get("test")).toMatchObject({ key: "test", value: '"234"' });
- resolve();
+ resolve(undefined);
};
Date.now = jest.fn().mockReturnValue(DATE);
@@ -173,7 +173,7 @@ describe("RefreshAheadManager", () => {
(manager as any).refresh = async (...args: any[]): Promise => {
await instanceRefresh.call(manager, ...args);
- resolve();
+ resolve(undefined);
};
Date.now = jest.fn().mockReturnValue(DATE);
@@ -209,8 +209,8 @@ describe("RefreshAheadManager", () => {
(manager as any).refresh = jest.fn().mockImplementation(async () => {
throw new Error("Operation timeout");
});
- Promise.prototype.catch = function(...args: any[]): any {
- resolve();
+ Promise.prototype.catch = function (...args: any[]): any {
+ resolve(undefined);
return realCatch.call(this, ...args);
};
diff --git a/src/managers/RefreshAheadManager.ts b/src/managers/RefreshAheadManager.ts
index 6475bd2..95e399a 100644
--- a/src/managers/RefreshAheadManager.ts
+++ b/src/managers/RefreshAheadManager.ts
@@ -50,7 +50,7 @@ class RefreshAheadManager extends BaseManager {
const result = deserialize(record.value);
if (this.isRecordExpireSoon(record)) {
- this.refresh(key, executorContext, options).catch(err => this.logger.error(err));
+ this.refresh(key, executorContext, options).catch((err) => this.logger.error(err));
}
return result;
diff --git a/src/storage/BaseStorage.spec.ts b/src/storage/BaseStorage.spec.ts
index 0697f3d..7a9a4b6 100644
--- a/src/storage/BaseStorage.spec.ts
+++ b/src/storage/BaseStorage.spec.ts
@@ -91,7 +91,7 @@ describe("BaseStorage", () => {
});
it("set sets key to storage adapter with dynamic tags", async () => {
- await storage.set("test", "123", { getTags: result => [result] });
+ await storage.set("test", "123", { getTags: (result) => [result] });
const value = JSON.parse(testStorage["cache-test"]);
@@ -105,7 +105,7 @@ describe("BaseStorage", () => {
});
it("set sets key to storage adapter with uniq array of concatenated dynamic tags and simple tags", async () => {
- await storage.set("test", "123", { tags: ["tag1", "123"], getTags: result => [result] });
+ await storage.set("test", "123", { tags: ["tag1", "123"], getTags: (result) => [result] });
const value = JSON.parse(testStorage["cache-test"]);
diff --git a/src/storage/BaseStorage.ts b/src/storage/BaseStorage.ts
index 3f8f081..f9a19c4 100644
--- a/src/storage/BaseStorage.ts
+++ b/src/storage/BaseStorage.ts
@@ -115,7 +115,7 @@ export class BaseStorage implements Storage {
* Creates new set of tag records and updates them.
*/
public async setTagVersions(tags: Tag[]): Promise {
- const values = new Map(tags.map(tag => [this.createTagKey(tag.name), `${tag.version}`]));
+ const values = new Map(tags.map((tag) => [this.createTagKey(tag.name), `${tag.version}`]));
return this.tagsAdapter.mset(values);
}
@@ -165,7 +165,7 @@ export class BaseStorage implements Storage {
return [];
}
- const existingTags = await this.tagsAdapter.mget(tagNames.map(tagName => this.createTagKey(tagName)));
+ const existingTags = await this.tagsAdapter.mget(tagNames.map((tagName) => this.createTagKey(tagName)));
return tagNames.map((tagName, index) => ({
name: tagName,
@@ -212,7 +212,7 @@ export class BaseStorage implements Storage {
let actualTags: Tag[] = [];
try {
- actualTags = await this.getTags(record.tags.map(tag => tag.name));
+ actualTags = await this.getTags(record.tags.map((tag) => tag.name));
} catch (err) {
return true;
}
@@ -225,7 +225,7 @@ export class BaseStorage implements Storage {
const recordTags = tagVersionByName(record.tags);
// at least one actualTag should have greater version
- return actualTags.some(actualTag => actualTag.version > recordTags[actualTag.name]);
+ return actualTags.some((actualTag) => actualTag.version > recordTags[actualTag.name]);
}
return false;
@@ -246,11 +246,7 @@ export class BaseStorage implements Storage {
private createKey(key: string): string {
const rawKey = this.prefix ? `${this.prefix}-${key}` : key;
- return this.hashKeys
- ? createHash("md5")
- .update(rawKey)
- .digest("hex")
- : rawKey;
+ return this.hashKeys ? createHash("md5").update(rawKey).digest("hex") : rawKey;
}
private createTagKey(tagName: string): string {
diff --git a/src/timeout.spec.ts b/src/timeout.spec.ts
index 205d3a8..db1e1cf 100644
--- a/src/timeout.spec.ts
+++ b/src/timeout.spec.ts
@@ -1,14 +1,21 @@
import timeout from "./timeout";
-jest.useFakeTimers();
-
describe("timeout", () => {
- it("resolves after given time in ms", async () => {
+ it("resolves after given time in ms", () => {
const TEST_TIMEOUT = 2000;
+ const originalTimeout = setTimeout;
+
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+ // @ts-ignore useFakeTimers broken in jest 27
+ setTimeout = jest.fn();
timeout(TEST_TIMEOUT);
expect(setTimeout).toHaveBeenCalledTimes(1);
expect(setTimeout).toHaveBeenLastCalledWith(expect.any(Function), TEST_TIMEOUT);
+
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+ // @ts-ignore useFakeTimers broken in jest 27
+ setTimeout = originalTimeout;
});
});
diff --git a/tests/integration/adapter-agnostic.ts b/tests/integration/adapter-agnostic.ts
index b699113..172fb9d 100644
--- a/tests/integration/adapter-agnostic.ts
+++ b/tests/integration/adapter-agnostic.ts
@@ -10,7 +10,7 @@ export interface Setter {
}
function delay(duration: number): Promise {
- return new Promise(resolve => setTimeout(resolve, duration + 1));
+ return new Promise((resolve) => setTimeout(resolve, duration + 1));
}
export const runAdapterTests = (get: Getter, set: Setter, adapter: StorageAdapter): void => {
diff --git a/tests/integration/cache.spec.ts b/tests/integration/cache.spec.ts
index 69b7bf2..176bccc 100644
--- a/tests/integration/cache.spec.ts
+++ b/tests/integration/cache.spec.ts
@@ -26,18 +26,18 @@ const REDIS_OPERATION_DELAY = 1000;
describe("Cache", () => {
beforeEach(
() =>
- new Promise(resolve => {
+ new Promise((resolve) => {
redis.connect().catch(() => {
/* ignore */
});
if (redis.status === "ready") {
redis.flushall();
- return resolve();
+ return resolve(undefined);
}
redis.on("ready", () => {
- resolve();
+ resolve(undefined);
redis.flushall();
});
})
diff --git a/tsconfig.json b/tsconfig.json
index 50cbbd9..b6ef3e6 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -20,7 +20,8 @@
"skipLibCheck": true,
"resolveJsonModule": true,
"noImplicitReturns": true,
- "noFallthroughCasesInSwitch": true
+ "noFallthroughCasesInSwitch": true,
+ "downlevelIteration": true
},
"include": [
"src/**/*"