sonamu 0.8.27 → 0.8.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"knex.d.ts","sourceRoot":"","sources":["../../src/database/knex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAGjC,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAoD5D"}
1
+ {"version":3,"file":"knex.d.ts","sourceRoot":"","sources":["../../src/database/knex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAGjC,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CA0C5D"}
@@ -8,38 +8,30 @@ export function createKnexInstance(config) {
8
8
  }
9
9
  }
10
10
  config.pool = {
11
+ maxConnectionLifetimeMillis: 1800000,
12
+ maxConnectionLifetimeJitterMillis: 300000,
11
13
  ...config.pool ?? {},
12
14
  propagateCreateError: false,
13
15
  idleTimeoutMillis: 10000,
14
16
  reapIntervalMillis: 1000,
15
17
  acquireTimeoutMillis: 30000,
16
18
  createTimeoutMillis: 30000,
19
+ validate: (connection)=>{
20
+ if (typeof connection !== "object" || connection === null) return false;
21
+ const conn = connection;
22
+ if (conn._ending === true || conn._closed === true) return false;
23
+ return true;
24
+ },
17
25
  afterCreate: (conn, done)=>{
18
26
  // pg driver: 소켓 레벨 keepAlive 설정
19
27
  const stream = conn.connection;
20
28
  if (stream?.stream?.setKeepAlive) {
21
29
  stream.stream.setKeepAlive(true, 10000);
22
30
  }
23
- conn.on("error", (err)=>{
24
- Object.defineProperty(conn, "__knex__disposed", {
25
- value: err,
26
- writable: true,
27
- configurable: true,
28
- enumerable: true
29
- });
30
- });
31
31
  done(null, conn);
32
32
  }
33
33
  };
34
- const knexInstance = knex(config);
35
- knexInstance.client.validateConnection = (connection)=>{
36
- if (typeof connection !== "object" || connection === null) return false;
37
- if ("__knex__disposed" in connection) return false;
38
- const conn = connection;
39
- if (conn._ending === true || conn._closed === true) return false;
40
- return true;
41
- };
42
- return knexInstance;
34
+ return knex(config);
43
35
  }
44
36
 
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhYmFzZS9rbmV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgS25leCB9IGZyb20gXCJrbmV4XCI7XG5pbXBvcnQga25leCBmcm9tIFwia25leFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlS25leEluc3RhbmNlKGNvbmZpZzogS25leC5Db25maWcpOiBLbmV4IHtcbiAgaWYgKGNvbmZpZy5jb25uZWN0aW9uICYmIHR5cGVvZiBjb25maWcuY29ubmVjdGlvbiA9PT0gXCJvYmplY3RcIikge1xuICAgIGNvbnN0IGNvbm4gPSBjb25maWcuY29ubmVjdGlvbiBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICAgIGlmIChjb25uLmtlZXBBbGl2ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25uLmtlZXBBbGl2ZSA9IHRydWU7XG4gICAgICBjb25uLmtlZXBBbGl2ZUluaXRpYWxEZWxheU1pbGxpcyA9IGNvbm4ua2VlcEFsaXZlSW5pdGlhbERlbGF5TWlsbGlzID8/IDEwMDAwO1xuICAgIH1cbiAgfVxuXG4gIGNvbmZpZy5wb29sID0ge1xuICAgIC4uLihjb25maWcucG9vbCA/PyB7fSksXG4gICAgcHJvcGFnYXRlQ3JlYXRlRXJyb3I6IGZhbHNlLFxuICAgIGlkbGVUaW1lb3V0TWlsbGlzOiAxMDAwMCxcbiAgICByZWFwSW50ZXJ2YWxNaWxsaXM6IDEwMDAsXG4gICAgYWNxdWlyZVRpbWVvdXRNaWxsaXM6IDMwMDAwLFxuICAgIGNyZWF0ZVRpbWVvdXRNaWxsaXM6IDMwMDAwLFxuICAgIGFmdGVyQ3JlYXRlOiAoKFxuICAgICAgY29ubjogS25leC5DbGllbnQgJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgIGRvbmU6IChlcnI6IEVycm9yIHwgbnVsbCwgY29ubjogS25leC5DbGllbnQpID0+IHZvaWQsXG4gICAgKSA9PiB7XG4gICAgICAvLyBwZyBkcml2ZXI6IOyGjOy8kyDroIjrsqgga2VlcEFsaXZlIOyEpOyglVxuICAgICAgY29uc3Qgc3RyZWFtID0gKGNvbm4gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pLmNvbm5lY3Rpb24gYXNcbiAgICAgICAgfCB7IHN0cmVhbT86IHsgc2V0S2VlcEFsaXZlPzogKGVuYWJsZTogYm9vbGVhbiwgaW5pdGlhbERlbGF5OiBudW1iZXIpID0+IHZvaWQgfSB9XG4gICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHN0cmVhbT8uc3RyZWFtPy5zZXRLZWVwQWxpdmUpIHtcbiAgICAgICAgc3RyZWFtLnN0cmVhbS5zZXRLZWVwQWxpdmUodHJ1ZSwgMTAwMDApO1xuICAgICAgfVxuXG4gICAgICBjb25uLm9uKFwiZXJyb3JcIiwgKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbm4sIFwiX19rbmV4X19kaXNwb3NlZFwiLCB7XG4gICAgICAgICAgdmFsdWU6IGVycixcbiAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgZG9uZShudWxsLCBjb25uKTtcbiAgICB9KSBzYXRpc2ZpZXMgS25leC5Qb29sQ29uZmlnW1wiYWZ0ZXJDcmVhdGVcIl0sXG4gIH07XG5cbiAgY29uc3Qga25leEluc3RhbmNlID0ga25leChjb25maWcpO1xuICBrbmV4SW5zdGFuY2UuY2xpZW50LnZhbGlkYXRlQ29ubmVjdGlvbiA9IChjb25uZWN0aW9uOiB1bmtub3duKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBjb25uZWN0aW9uICE9PSBcIm9iamVjdFwiIHx8IGNvbm5lY3Rpb24gPT09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoXCJfX2tuZXhfX2Rpc3Bvc2VkXCIgaW4gY29ubmVjdGlvbikgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGNvbm4gPSBjb25uZWN0aW9uIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGlmIChjb25uLl9lbmRpbmcgPT09IHRydWUgfHwgY29ubi5fY2xvc2VkID09PSB0cnVlKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgcmV0dXJuIGtuZXhJbnN0YW5jZTtcbn1cbiJdLCJuYW1lcyI6WyJrbmV4IiwiY3JlYXRlS25leEluc3RhbmNlIiwiY29uZmlnIiwiY29ubmVjdGlvbiIsImNvbm4iLCJrZWVwQWxpdmUiLCJ1bmRlZmluZWQiLCJrZWVwQWxpdmVJbml0aWFsRGVsYXlNaWxsaXMiLCJwb29sIiwicHJvcGFnYXRlQ3JlYXRlRXJyb3IiLCJpZGxlVGltZW91dE1pbGxpcyIsInJlYXBJbnRlcnZhbE1pbGxpcyIsImFjcXVpcmVUaW1lb3V0TWlsbGlzIiwiY3JlYXRlVGltZW91dE1pbGxpcyIsImFmdGVyQ3JlYXRlIiwiZG9uZSIsInN0cmVhbSIsInNldEtlZXBBbGl2ZSIsIm9uIiwiZXJyIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJ2YWx1ZSIsIndyaXRhYmxlIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsImtuZXhJbnN0YW5jZSIsImNsaWVudCIsInZhbGlkYXRlQ29ubmVjdGlvbiIsIl9lbmRpbmciLCJfY2xvc2VkIl0sIm1hcHBpbmdzIjoiQUFDQSxPQUFPQSxVQUFVLE9BQU87QUFFeEIsT0FBTyxTQUFTQyxtQkFBbUJDLE1BQW1CO0lBQ3BELElBQUlBLE9BQU9DLFVBQVUsSUFBSSxPQUFPRCxPQUFPQyxVQUFVLEtBQUssVUFBVTtRQUM5RCxNQUFNQyxPQUFPRixPQUFPQyxVQUFVO1FBRTlCLElBQUlDLEtBQUtDLFNBQVMsS0FBS0MsV0FBVztZQUNoQ0YsS0FBS0MsU0FBUyxHQUFHO1lBQ2pCRCxLQUFLRywyQkFBMkIsR0FBR0gsS0FBS0csMkJBQTJCLElBQUk7UUFDekU7SUFDRjtJQUVBTCxPQUFPTSxJQUFJLEdBQUc7UUFDWixHQUFJTixPQUFPTSxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQ3JCQyxzQkFBc0I7UUFDdEJDLG1CQUFtQjtRQUNuQkMsb0JBQW9CO1FBQ3BCQyxzQkFBc0I7UUFDdEJDLHFCQUFxQjtRQUNyQkMsYUFBYyxDQUNaVixNQUNBVztZQUVBLGdDQUFnQztZQUNoQyxNQUFNQyxTQUFTLEFBQUNaLEtBQWlDRCxVQUFVO1lBRzNELElBQUlhLFFBQVFBLFFBQVFDLGNBQWM7Z0JBQ2hDRCxPQUFPQSxNQUFNLENBQUNDLFlBQVksQ0FBQyxNQUFNO1lBQ25DO1lBRUFiLEtBQUtjLEVBQUUsQ0FBQyxTQUFTLENBQUNDO2dCQUNoQkMsT0FBT0MsY0FBYyxDQUFDakIsTUFBTSxvQkFBb0I7b0JBQzlDa0IsT0FBT0g7b0JBQ1BJLFVBQVU7b0JBQ1ZDLGNBQWM7b0JBQ2RDLFlBQVk7Z0JBQ2Q7WUFDRjtZQUVBVixLQUFLLE1BQU1YO1FBQ2I7SUFDRjtJQUVBLE1BQU1zQixlQUFlMUIsS0FBS0U7SUFDMUJ3QixhQUFhQyxNQUFNLENBQUNDLGtCQUFrQixHQUFHLENBQUN6QjtRQUN4QyxJQUFJLE9BQU9BLGVBQWUsWUFBWUEsZUFBZSxNQUFNLE9BQU87UUFDbEUsSUFBSSxzQkFBc0JBLFlBQVksT0FBTztRQUM3QyxNQUFNQyxPQUFPRDtRQUNiLElBQUlDLEtBQUt5QixPQUFPLEtBQUssUUFBUXpCLEtBQUswQixPQUFPLEtBQUssTUFBTSxPQUFPO1FBQzNELE9BQU87SUFDVDtJQUVBLE9BQU9KO0FBQ1QifQ==
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhYmFzZS9rbmV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgS25leCB9IGZyb20gXCJrbmV4XCI7XG5pbXBvcnQga25leCBmcm9tIFwia25leFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlS25leEluc3RhbmNlKGNvbmZpZzogS25leC5Db25maWcpOiBLbmV4IHtcbiAgaWYgKGNvbmZpZy5jb25uZWN0aW9uICYmIHR5cGVvZiBjb25maWcuY29ubmVjdGlvbiA9PT0gXCJvYmplY3RcIikge1xuICAgIGNvbnN0IGNvbm4gPSBjb25maWcuY29ubmVjdGlvbiBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICAgIGlmIChjb25uLmtlZXBBbGl2ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25uLmtlZXBBbGl2ZSA9IHRydWU7XG4gICAgICBjb25uLmtlZXBBbGl2ZUluaXRpYWxEZWxheU1pbGxpcyA9IGNvbm4ua2VlcEFsaXZlSW5pdGlhbERlbGF5TWlsbGlzID8/IDEwMDAwO1xuICAgIH1cbiAgfVxuXG4gIGNvbmZpZy5wb29sID0ge1xuICAgIG1heENvbm5lY3Rpb25MaWZldGltZU1pbGxpczogMTgwMDAwMCxcbiAgICBtYXhDb25uZWN0aW9uTGlmZXRpbWVKaXR0ZXJNaWxsaXM6IDMwMDAwMCxcbiAgICAuLi4oY29uZmlnLnBvb2wgPz8ge30pLFxuICAgIHByb3BhZ2F0ZUNyZWF0ZUVycm9yOiBmYWxzZSxcbiAgICBpZGxlVGltZW91dE1pbGxpczogMTAwMDAsXG4gICAgcmVhcEludGVydmFsTWlsbGlzOiAxMDAwLFxuICAgIGFjcXVpcmVUaW1lb3V0TWlsbGlzOiAzMDAwMCxcbiAgICBjcmVhdGVUaW1lb3V0TWlsbGlzOiAzMDAwMCxcbiAgICB2YWxpZGF0ZTogKGNvbm5lY3Rpb246IHVua25vd24pID0+IHtcbiAgICAgIGlmICh0eXBlb2YgY29ubmVjdGlvbiAhPT0gXCJvYmplY3RcIiB8fCBjb25uZWN0aW9uID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gICAgICBjb25zdCBjb25uID0gY29ubmVjdGlvbiBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgIGlmIChjb25uLl9lbmRpbmcgPT09IHRydWUgfHwgY29ubi5fY2xvc2VkID09PSB0cnVlKSByZXR1cm4gZmFsc2U7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICAgIGFmdGVyQ3JlYXRlOiAoKFxuICAgICAgY29ubjogS25leC5DbGllbnQgJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgIGRvbmU6IChlcnI6IEVycm9yIHwgbnVsbCwgY29ubjogS25leC5DbGllbnQpID0+IHZvaWQsXG4gICAgKSA9PiB7XG4gICAgICAvLyBwZyBkcml2ZXI6IOyGjOy8kyDroIjrsqgga2VlcEFsaXZlIOyEpOyglVxuICAgICAgY29uc3Qgc3RyZWFtID0gKGNvbm4gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pLmNvbm5lY3Rpb24gYXNcbiAgICAgICAgfCB7IHN0cmVhbT86IHsgc2V0S2VlcEFsaXZlPzogKGVuYWJsZTogYm9vbGVhbiwgaW5pdGlhbERlbGF5OiBudW1iZXIpID0+IHZvaWQgfSB9XG4gICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHN0cmVhbT8uc3RyZWFtPy5zZXRLZWVwQWxpdmUpIHtcbiAgICAgICAgc3RyZWFtLnN0cmVhbS5zZXRLZWVwQWxpdmUodHJ1ZSwgMTAwMDApO1xuICAgICAgfVxuXG4gICAgICBkb25lKG51bGwsIGNvbm4pO1xuICAgIH0pIHNhdGlzZmllcyBLbmV4LlBvb2xDb25maWdbXCJhZnRlckNyZWF0ZVwiXSxcbiAgfTtcblxuICByZXR1cm4ga25leChjb25maWcpO1xufVxuIl0sIm5hbWVzIjpbImtuZXgiLCJjcmVhdGVLbmV4SW5zdGFuY2UiLCJjb25maWciLCJjb25uZWN0aW9uIiwiY29ubiIsImtlZXBBbGl2ZSIsInVuZGVmaW5lZCIsImtlZXBBbGl2ZUluaXRpYWxEZWxheU1pbGxpcyIsInBvb2wiLCJtYXhDb25uZWN0aW9uTGlmZXRpbWVNaWxsaXMiLCJtYXhDb25uZWN0aW9uTGlmZXRpbWVKaXR0ZXJNaWxsaXMiLCJwcm9wYWdhdGVDcmVhdGVFcnJvciIsImlkbGVUaW1lb3V0TWlsbGlzIiwicmVhcEludGVydmFsTWlsbGlzIiwiYWNxdWlyZVRpbWVvdXRNaWxsaXMiLCJjcmVhdGVUaW1lb3V0TWlsbGlzIiwidmFsaWRhdGUiLCJfZW5kaW5nIiwiX2Nsb3NlZCIsImFmdGVyQ3JlYXRlIiwiZG9uZSIsInN0cmVhbSIsInNldEtlZXBBbGl2ZSJdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBT0EsVUFBVSxPQUFPO0FBRXhCLE9BQU8sU0FBU0MsbUJBQW1CQyxNQUFtQjtJQUNwRCxJQUFJQSxPQUFPQyxVQUFVLElBQUksT0FBT0QsT0FBT0MsVUFBVSxLQUFLLFVBQVU7UUFDOUQsTUFBTUMsT0FBT0YsT0FBT0MsVUFBVTtRQUU5QixJQUFJQyxLQUFLQyxTQUFTLEtBQUtDLFdBQVc7WUFDaENGLEtBQUtDLFNBQVMsR0FBRztZQUNqQkQsS0FBS0csMkJBQTJCLEdBQUdILEtBQUtHLDJCQUEyQixJQUFJO1FBQ3pFO0lBQ0Y7SUFFQUwsT0FBT00sSUFBSSxHQUFHO1FBQ1pDLDZCQUE2QjtRQUM3QkMsbUNBQW1DO1FBQ25DLEdBQUlSLE9BQU9NLElBQUksSUFBSSxDQUFDLENBQUM7UUFDckJHLHNCQUFzQjtRQUN0QkMsbUJBQW1CO1FBQ25CQyxvQkFBb0I7UUFDcEJDLHNCQUFzQjtRQUN0QkMscUJBQXFCO1FBQ3JCQyxVQUFVLENBQUNiO1lBQ1QsSUFBSSxPQUFPQSxlQUFlLFlBQVlBLGVBQWUsTUFBTSxPQUFPO1lBQ2xFLE1BQU1DLE9BQU9EO1lBQ2IsSUFBSUMsS0FBS2EsT0FBTyxLQUFLLFFBQVFiLEtBQUtjLE9BQU8sS0FBSyxNQUFNLE9BQU87WUFDM0QsT0FBTztRQUNUO1FBQ0FDLGFBQWMsQ0FDWmYsTUFDQWdCO1lBRUEsZ0NBQWdDO1lBQ2hDLE1BQU1DLFNBQVMsQUFBQ2pCLEtBQWlDRCxVQUFVO1lBRzNELElBQUlrQixRQUFRQSxRQUFRQyxjQUFjO2dCQUNoQ0QsT0FBT0EsTUFBTSxDQUFDQyxZQUFZLENBQUMsTUFBTTtZQUNuQztZQUVBRixLQUFLLE1BQU1oQjtRQUNiO0lBQ0Y7SUFFQSxPQUFPSixLQUFLRTtBQUNkIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sonamu",
3
- "version": "0.8.27",
3
+ "version": "0.8.28",
4
4
  "description": "Sonamu — TypeScript Fullstack API Framework",
5
5
  "keywords": [
6
6
  "typescript",
@@ -128,9 +128,9 @@
128
128
  "vite": "7.3.0",
129
129
  "vitest": "^4.0.10",
130
130
  "@sonamu-kit/hmr-hook": "^0.4.1",
131
- "@sonamu-kit/hmr-runner": "^0.1.1",
132
131
  "@sonamu-kit/tasks": "^0.2.0",
133
- "@sonamu-kit/ts-loader": "^2.1.3"
132
+ "@sonamu-kit/ts-loader": "^2.1.3",
133
+ "@sonamu-kit/hmr-runner": "^0.1.1"
134
134
  },
135
135
  "devDependencies": {
136
136
  "@biomejs/biome": "^2.3.13",
@@ -12,12 +12,20 @@ export function createKnexInstance(config: Knex.Config): Knex {
12
12
  }
13
13
 
14
14
  config.pool = {
15
+ maxConnectionLifetimeMillis: 1800000,
16
+ maxConnectionLifetimeJitterMillis: 300000,
15
17
  ...(config.pool ?? {}),
16
18
  propagateCreateError: false,
17
19
  idleTimeoutMillis: 10000,
18
20
  reapIntervalMillis: 1000,
19
21
  acquireTimeoutMillis: 30000,
20
22
  createTimeoutMillis: 30000,
23
+ validate: (connection: unknown) => {
24
+ if (typeof connection !== "object" || connection === null) return false;
25
+ const conn = connection as Record<string, unknown>;
26
+ if (conn._ending === true || conn._closed === true) return false;
27
+ return true;
28
+ },
21
29
  afterCreate: ((
22
30
  conn: Knex.Client & Record<string, unknown>,
23
31
  done: (err: Error | null, conn: Knex.Client) => void,
@@ -30,27 +38,9 @@ export function createKnexInstance(config: Knex.Config): Knex {
30
38
  stream.stream.setKeepAlive(true, 10000);
31
39
  }
32
40
 
33
- conn.on("error", (err: Error) => {
34
- Object.defineProperty(conn, "__knex__disposed", {
35
- value: err,
36
- writable: true,
37
- configurable: true,
38
- enumerable: true,
39
- });
40
- });
41
-
42
41
  done(null, conn);
43
42
  }) satisfies Knex.PoolConfig["afterCreate"],
44
43
  };
45
44
 
46
- const knexInstance = knex(config);
47
- knexInstance.client.validateConnection = (connection: unknown) => {
48
- if (typeof connection !== "object" || connection === null) return false;
49
- if ("__knex__disposed" in connection) return false;
50
- const conn = connection as Record<string, unknown>;
51
- if (conn._ending === true || conn._closed === true) return false;
52
- return true;
53
- };
54
-
55
- return knexInstance;
45
+ return knex(config);
56
46
  }