Skip to content

Commit a78b47b

Browse files
committed
refactor: remove drivers entrypoints and move factory
1 parent cc637c9 commit a78b47b

20 files changed

+107
-116
lines changed

packages/bentocache/benchmarks/mtier_get_key.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ import { multiCaching, caching } from 'cache-manager'
1111
import { redisStore } from 'cache-manager-ioredis-yet'
1212

1313
import { BentoCache } from '../index.js'
14-
import { redisDriver } from '../drivers/redis.js'
1514
import { bentostore } from '../src/bento_store.js'
16-
import { memoryDriver } from '../drivers/memory.js'
15+
import { redisDriver } from '../src/drivers/redis.js'
16+
import { memoryDriver } from '../src/drivers/memory.js'
1717
import { REDIS_CREDENTIALS } from '../test_helpers/index.js'
1818

1919
const bench = new Bench()

packages/bentocache/benchmarks/mtier_set_key.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ import { multiCaching, caching } from 'cache-manager'
1111
import { redisStore } from 'cache-manager-ioredis-yet'
1212

1313
import { BentoCache } from '../index.js'
14-
import { redisDriver } from '../drivers/redis.js'
1514
import { bentostore } from '../src/bento_store.js'
16-
import { memoryDriver } from '../drivers/memory.js'
15+
import { redisDriver } from '../src/drivers/redis.js'
16+
import { memoryDriver } from '../src/drivers/memory.js'
1717
import { REDIS_CREDENTIALS } from '../test_helpers/index.js'
1818

1919
const bench = new Bench()

packages/bentocache/benchmarks/onetier_get_key.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ import { caching } from 'cache-manager'
1010
import { redisStore } from 'cache-manager-ioredis-yet'
1111

1212
import { BentoCache } from '../index.js'
13-
import { redisDriver } from '../drivers/redis.js'
1413
import { bentostore } from '../src/bento_store.js'
14+
import { redisDriver } from '../src/drivers/redis.js'
1515
import { REDIS_CREDENTIALS } from '../test_helpers/index.js'
1616

1717
const bench = new Bench()

packages/bentocache/benchmarks/onetier_set_key.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { caching } from 'cache-manager'
99

1010
import { BentoCache } from '../index.js'
1111
import { bentostore } from '../src/bento_store.js'
12-
import { memoryDriver } from '../drivers/memory.js'
12+
import { memoryDriver } from '../src/drivers/memory.js'
1313

1414
const bench = new Bench()
1515

packages/bentocache/drivers/dynamodb.ts

-12
This file was deleted.

packages/bentocache/drivers/file.ts

-13
This file was deleted.

packages/bentocache/drivers/knex.ts

-17
This file was deleted.

packages/bentocache/drivers/kysely.ts

-17
This file was deleted.

packages/bentocache/drivers/memory.ts

-13
This file was deleted.

packages/bentocache/drivers/redis.ts

-26
This file was deleted.

packages/bentocache/factories/bentocache_factory.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { bentostore } from '../src/bento_store.js'
22
import { BentoCache } from '../src/bento_cache.js'
3-
import { memoryDriver } from '../drivers/memory.js'
3+
import { memoryDriver } from '../src/drivers/memory.js'
44
import type { RawBentoCacheOptions } from '../src/types/main.js'
55

66
/**

packages/bentocache/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
],
1616
"exports": {
1717
".": "./build/index.js",
18-
"./drivers/*": "./build/drivers/*.js",
18+
"./drivers/*": "./build/src/drivers/*.js",
1919
"./types": "./build/src/types/main.js",
2020
"./plugins/*": "./build/plugins/*.js",
2121
"./test_suite": "./build/src/test_suite.js"
@@ -112,7 +112,7 @@
112112
"entry": [
113113
"./index.ts",
114114
"./src/types/main.ts",
115-
"./drivers/*.ts",
115+
"./src/drivers/*.ts",
116116
"./plugins/*.ts",
117117
"./src/test_suite.ts"
118118
],

packages/bentocache/src/drivers/dynamodb.ts

+11-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,17 @@ import {
1111
} from '@aws-sdk/client-dynamodb'
1212

1313
import { BaseDriver } from './base_driver.js'
14-
import type { CacheDriver, DynamoDBConfig } from '../types/main.js'
14+
import type { CacheDriver, CreateDriverResult, DynamoDBConfig } from '../types/main.js'
15+
16+
/**
17+
* Create a new DynamoDB driver
18+
*/
19+
export function dynamoDbDriver(options: DynamoDBConfig): CreateDriverResult<DynamoDB> {
20+
return {
21+
options,
22+
factory: (config: DynamoDBConfig) => new DynamoDB(config),
23+
}
24+
}
1525

1626
/**
1727
* Caching driver for DynamoDB

packages/bentocache/src/drivers/file.ts

+11-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,17 @@ import { dirname, join } from 'node:path'
22
import { access, mkdir, readFile, writeFile, rm } from 'node:fs/promises'
33

44
import { BaseDriver } from './base_driver.js'
5-
import type { CacheDriver, FileConfig } from '../types/main.js'
5+
import type { CacheDriver, CreateDriverResult, FileConfig } from '../types/main.js'
6+
7+
/**
8+
* Create a new file driver
9+
*/
10+
export function fileDriver(options: FileConfig): CreateDriverResult<File> {
11+
return {
12+
options,
13+
factory: (config: FileConfig) => new File(config),
14+
}
15+
}
616

717
/**
818
* Caching driver for the filesystem

packages/bentocache/src/drivers/knex.ts

+16-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,21 @@
11
import type { Knex } from 'knex'
22

3-
import type { DatabaseAdapter, KnexConfig } from '../types/main.js'
3+
import { DatabaseDriver } from './database.js'
4+
import type { CreateDriverResult, DatabaseAdapter, KnexConfig } from '../types/main.js'
5+
6+
/**
7+
* Create a knex driver
8+
* You will need to install the underlying database package (mysql2, pg, sqlite3, etc)
9+
*/
10+
export function knexDriver(options: KnexConfig): CreateDriverResult<DatabaseDriver> {
11+
return {
12+
options,
13+
factory: (config: KnexConfig) => {
14+
const adapter = new KnexAdapter(config)
15+
return new DatabaseDriver(adapter, config)
16+
},
17+
}
18+
}
419

520
/**
621
* Knex adapter for the DatabaseDriver

packages/bentocache/src/drivers/kysely.ts

+16-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,21 @@
11
import { SqliteAdapter, type Kysely, MysqlAdapter } from 'kysely'
22

3-
import type { DatabaseAdapter, KyselyConfig } from '../types/main.js'
3+
import { DatabaseDriver } from './database.js'
4+
import type { CreateDriverResult, DatabaseAdapter, KyselyConfig } from '../types/main.js'
5+
6+
/**
7+
* Create a kysely driver
8+
* You will need to install the underlying database package (mysql2, pg, sqlite3, etc)
9+
*/
10+
export function kyselyDriver(options: KyselyConfig): CreateDriverResult<DatabaseDriver> {
11+
return {
12+
options,
13+
factory: (config: KyselyConfig) => {
14+
const adapter = new KyselyAdapter(config)
15+
return new DatabaseDriver(adapter, config)
16+
},
17+
}
18+
}
419

520
/**
621
* Kysely adapter for the DatabaseDriver

packages/bentocache/src/drivers/memory.ts

+15-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,21 @@
11
import { LRUCache } from 'lru-cache'
22

33
import { BaseDriver } from './base_driver.js'
4-
import type { L1CacheDriver, MemoryConfig as MemoryConfig } from '../types/main.js'
4+
import type {
5+
CreateDriverResult,
6+
L1CacheDriver,
7+
MemoryConfig as MemoryConfig,
8+
} from '../types/main.js'
9+
10+
/**
11+
* Create a new memory driver
12+
*/
13+
export function memoryDriver(options: MemoryConfig = {}): CreateDriverResult<Memory> {
14+
return {
15+
options,
16+
factory: (config: MemoryConfig) => new Memory(config),
17+
}
18+
}
519

620
/**
721
* A memory caching driver

packages/bentocache/src/drivers/redis.ts

+26-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,32 @@
11
import { Redis as IoRedis } from 'ioredis'
2+
import type { RedisOptions as IoRedisOptions } from 'ioredis'
23

34
import { BaseDriver } from './base_driver.js'
4-
import type { L2CacheDriver, RedisConfig } from '../types/main.js'
5+
import { RedisBus } from '../bus/drivers/redis_bus.js'
6+
import type {
7+
BusOptions,
8+
CreateBusDriverResult,
9+
CreateDriverResult,
10+
L2CacheDriver,
11+
RedisConfig,
12+
} from '../types/main.js'
13+
14+
/**
15+
* Create a new cache redis driver
16+
*/
17+
export function redisDriver(options: RedisConfig): CreateDriverResult<Redis> {
18+
return { options, factory: (config: RedisConfig) => new Redis(config) }
19+
}
20+
21+
/**
22+
* Create a new bus redis driver. It leverages the Pub/sub capabilities of Redis
23+
* to sending messages between your different processes.
24+
*/
25+
export function redisBusDriver(
26+
options: { connection: IoRedisOptions } & BusOptions,
27+
): CreateBusDriverResult {
28+
return { options, factory: (config: IoRedisOptions) => new RedisBus(config) }
29+
}
530

631
/**
732
* Caching driver for Redis

packages/bentocache/tests/bento_cache.spec.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ import EventEmitter from 'node:events'
55

66
import { bentostore } from '../src/bento_store.js'
77
import { BentoCache } from '../src/bento_cache.js'
8-
import { memoryDriver } from '../drivers/memory.js'
8+
import { memoryDriver } from '../src/drivers/memory.js'
99
import { REDIS_CREDENTIALS } from '../test_helpers/index.js'
10-
import { redisBusDriver, redisDriver } from '../drivers/redis.js'
10+
import { redisBusDriver, redisDriver } from '../src/drivers/redis.js'
1111
import { BentoCacheFactory } from '../factories/bentocache_factory.js'
1212

1313
test.group('Bento Cache', () => {

packages/bentocache/tests/typings.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { test } from '@japa/runner'
22

33
import { bentostore } from '../src/bento_store.js'
44
import { BentoCache } from '../src/bento_cache.js'
5-
import { memoryDriver } from '../drivers/memory.js'
5+
import { memoryDriver } from '../src/drivers/memory.js'
66
import type { Duration } from '../src/types/helpers.js'
77
import type { CacheEvents } from '../src/types/events.js'
88
import { CacheFactory } from '../factories/cache_factory.js'

0 commit comments

Comments
 (0)