@slonik/driver 46.2.0 → 46.4.0
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.
|
@@ -3,25 +3,30 @@ import EventEmitter from 'node:events';
|
|
|
3
3
|
import { type Readable } from 'node:stream';
|
|
4
4
|
import { type ConnectionOptions as TlsConnectionOptions } from 'node:tls';
|
|
5
5
|
import { type StrictEventEmitter } from 'strict-event-emitter-types';
|
|
6
|
-
type
|
|
7
|
-
|
|
8
|
-
fields: readonly Field[];
|
|
9
|
-
};
|
|
10
|
-
export interface DriverStream<T> extends Readable {
|
|
11
|
-
[Symbol.asyncIterator]: () => AsyncIterableIterator<StreamDataEvent<T>>;
|
|
12
|
-
on(event: 'data', listener: (chunk: StreamDataEvent<T>) => void): this;
|
|
13
|
-
on(event: string | symbol, listener: (...args: any[]) => void): this;
|
|
14
|
-
}
|
|
15
|
-
type BasicConnection = {
|
|
16
|
-
readonly query: (query: string) => Promise<void>;
|
|
6
|
+
export type Driver = {
|
|
7
|
+
createClient: () => Promise<DriverClient>;
|
|
17
8
|
};
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
9
|
+
export type DriverClient = {
|
|
10
|
+
acquire: () => void;
|
|
11
|
+
destroy: () => Promise<void>;
|
|
12
|
+
id: () => string;
|
|
13
|
+
off: DriverClientEventEmitter['off'];
|
|
14
|
+
on: DriverClientEventEmitter['on'];
|
|
15
|
+
query: (query: string, values?: unknown[]) => Promise<DriverQueryResult>;
|
|
16
|
+
release: () => Promise<void>;
|
|
17
|
+
removeListener: DriverClientEventEmitter['removeListener'];
|
|
18
|
+
state: () => DriverClientState;
|
|
19
|
+
stream: (query: string, values?: unknown[]) => DriverStream<DriverStreamResult>;
|
|
24
20
|
};
|
|
21
|
+
export type DriverClientEventEmitter = StrictEventEmitter<EventEmitter, {
|
|
22
|
+
acquire: () => void;
|
|
23
|
+
destroy: () => void;
|
|
24
|
+
error: (error: Error) => void;
|
|
25
|
+
notice: (event: DriverNotice) => void;
|
|
26
|
+
release: () => void;
|
|
27
|
+
}>;
|
|
28
|
+
export type DriverClientState = 'ACQUIRED' | 'DESTROYED' | 'IDLE' | 'PENDING_DESTROY' | 'PENDING_RELEASE';
|
|
29
|
+
export type DriverCommand = 'COPY' | 'DELETE' | 'INSERT' | 'SELECT' | 'UPDATE';
|
|
25
30
|
export type DriverConfiguration = {
|
|
26
31
|
readonly connectionTimeout: 'DISABLE_TIMEOUT' | number;
|
|
27
32
|
readonly connectionUri: string;
|
|
@@ -35,53 +40,44 @@ export type DriverConfiguration = {
|
|
|
35
40
|
readonly statementTimeout: 'DISABLE_TIMEOUT' | number;
|
|
36
41
|
readonly typeParsers: readonly DriverTypeParser[];
|
|
37
42
|
};
|
|
38
|
-
export type DriverNotice = {
|
|
39
|
-
message: string;
|
|
40
|
-
};
|
|
41
43
|
export type DriverEventEmitter = StrictEventEmitter<EventEmitter, {
|
|
42
44
|
error: (error: Error) => void;
|
|
43
45
|
}>;
|
|
44
|
-
export type DriverClientEventEmitter = StrictEventEmitter<EventEmitter, {
|
|
45
|
-
acquire: () => void;
|
|
46
|
-
destroy: () => void;
|
|
47
|
-
error: (error: Error) => void;
|
|
48
|
-
notice: (event: DriverNotice) => void;
|
|
49
|
-
release: () => void;
|
|
50
|
-
}>;
|
|
51
|
-
export type DriverClientState = 'ACQUIRED' | 'DESTROYED' | 'IDLE' | 'PENDING_DESTROY' | 'PENDING_RELEASE';
|
|
52
|
-
export type DriverClient = {
|
|
53
|
-
acquire: () => void;
|
|
54
|
-
destroy: () => Promise<void>;
|
|
55
|
-
id: () => string;
|
|
56
|
-
off: DriverClientEventEmitter['off'];
|
|
57
|
-
on: DriverClientEventEmitter['on'];
|
|
58
|
-
query: (query: string, values?: unknown[]) => Promise<DriverQueryResult>;
|
|
59
|
-
release: () => Promise<void>;
|
|
60
|
-
removeListener: DriverClientEventEmitter['removeListener'];
|
|
61
|
-
state: () => DriverClientState;
|
|
62
|
-
stream: (query: string, values?: unknown[]) => DriverStream<DriverStreamResult>;
|
|
63
|
-
};
|
|
64
|
-
export type Driver = {
|
|
65
|
-
createClient: () => Promise<DriverClient>;
|
|
66
|
-
};
|
|
67
46
|
export type DriverFactory = ({ driverConfiguration, }: {
|
|
68
47
|
driverConfiguration: DriverConfiguration;
|
|
69
48
|
}) => Promise<Driver>;
|
|
70
|
-
type
|
|
71
|
-
|
|
72
|
-
name: string;
|
|
49
|
+
export type DriverNotice = {
|
|
50
|
+
message: string;
|
|
73
51
|
};
|
|
74
|
-
export type DriverCommand = 'COPY' | 'DELETE' | 'INSERT' | 'SELECT' | 'UPDATE';
|
|
75
52
|
export type DriverQueryResult = {
|
|
76
53
|
readonly command: DriverCommand;
|
|
77
54
|
readonly fields: DriverField[];
|
|
78
55
|
readonly rowCount: null | number;
|
|
79
56
|
readonly rows: Array<Record<string, unknown>>;
|
|
80
57
|
};
|
|
58
|
+
export interface DriverStream<T> extends Readable {
|
|
59
|
+
[Symbol.asyncIterator]: () => AsyncIterableIterator<StreamDataEvent<T>>;
|
|
60
|
+
on(event: 'data', listener: (chunk: StreamDataEvent<T>) => void): this;
|
|
61
|
+
on(event: string | symbol, listener: (...args: any[]) => void): this;
|
|
62
|
+
}
|
|
81
63
|
export type DriverStreamResult = {
|
|
82
64
|
readonly fields: DriverField[];
|
|
83
65
|
readonly row: Record<string, unknown>;
|
|
84
66
|
};
|
|
67
|
+
/**
|
|
68
|
+
* @property name Value of "pg_type"."typname" (e.g. "int8", "timestamp", "timestamptz").
|
|
69
|
+
*/
|
|
70
|
+
export type DriverTypeParser<T = unknown> = {
|
|
71
|
+
readonly name: string;
|
|
72
|
+
readonly parse: (value: string) => T;
|
|
73
|
+
};
|
|
74
|
+
type BasicConnection = {
|
|
75
|
+
readonly query: (query: string) => Promise<void>;
|
|
76
|
+
};
|
|
77
|
+
type DriverField = {
|
|
78
|
+
dataTypeId: number;
|
|
79
|
+
name: string;
|
|
80
|
+
};
|
|
85
81
|
type DriverSetup = ({ driverConfiguration, driverEventEmitter, }: {
|
|
86
82
|
driverConfiguration: DriverConfiguration;
|
|
87
83
|
driverEventEmitter: DriverEventEmitter;
|
|
@@ -102,6 +98,10 @@ type InternalPoolClientFactory = {
|
|
|
102
98
|
clientEventEmitter: DriverClientEventEmitter;
|
|
103
99
|
}) => Promise<InternalPoolClient>;
|
|
104
100
|
};
|
|
101
|
+
type StreamDataEvent<T> = {
|
|
102
|
+
data: T;
|
|
103
|
+
fields: readonly Field[];
|
|
104
|
+
};
|
|
105
105
|
export declare const createDriverFactory: (setup: DriverSetup) => DriverFactory;
|
|
106
106
|
export {};
|
|
107
107
|
//# sourceMappingURL=createDriverFactory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createDriverFactory.d.ts","sourceRoot":"","sources":["../../src/factories/createDriverFactory.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,YAAY,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,KAAK,iBAAiB,IAAI,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAE1E,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,
|
|
1
|
+
{"version":3,"file":"createDriverFactory.d.ts","sourceRoot":"","sources":["../../src/factories/createDriverFactory.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,YAAY,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,KAAK,iBAAiB,IAAI,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAE1E,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,MAAM,MAAM,MAAM,GAAG;IACnB,YAAY,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,EAAE,EAAE,MAAM,MAAM,CAAC;IACjB,GAAG,EAAE,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACrC,EAAE,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACnC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACzE,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,cAAc,EAAE,wBAAwB,CAAC,gBAAgB,CAAC,CAAC;IAC3D,KAAK,EAAE,MAAM,iBAAiB,CAAC;IAC/B,MAAM,EAAE,CACN,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,OAAO,EAAE,KACf,YAAY,CAAC,kBAAkB,CAAC,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,kBAAkB,CACvD,YAAY,EACZ;IACE,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC9B,MAAM,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACtC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CACF,CAAC;AAEF,MAAM,MAAM,iBAAiB,GACzB,UAAU,GACV,WAAW,GACX,MAAM,GACN,iBAAiB,GACjB,iBAAiB,CAAC;AAEtB,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE/E,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,MAAM,CAAC;IACvD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IAC7C,QAAQ,CAAC,+BAA+B,EAAE,iBAAiB,GAAG,MAAM,CAAC;IACrE,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC;IAClD,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,QAAQ,CAAC,GAAG,CAAC,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,gBAAgB,EAAE,iBAAiB,GAAG,MAAM,CAAC;IACtD,QAAQ,CAAC,WAAW,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACnD,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,kBAAkB,CACjD,YAAY,EACZ;IACE,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAC/B,CACF,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,EAC3B,mBAAmB,GACpB,EAAE;IACD,mBAAmB,EAAE,mBAAmB,CAAC;CAC1C,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAEtB,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,IAAI,GAAG,MAAM,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC/C,CAAC;AAGF,MAAM,WAAW,YAAY,CAAC,CAAC,CAAE,SAAQ,QAAQ;IAC/C,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,qBAAqB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAExE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IAGvE,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;CACtE;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,GAAG,OAAO,IAAI;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,CAAC;CACtC,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,WAAW,GAAG,CAAC,EAClB,mBAAmB,EACnB,kBAAkB,GACnB,EAAE;IACD,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,kBAAkB,EAAE,kBAAkB,CAAC;CACxC,KAAK,OAAO,CAAC,yBAAyB,CAAC,CAAC;AAEzC;;;;GAIG;AACH,KAAK,kBAAkB,GAAG;IACxB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACzE,MAAM,EAAE,CACN,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,OAAO,EAAE,KACf,YAAY,CAAC,kBAAkB,CAAC,CAAC;CACvC,CAAC;AAEF,KAAK,yBAAyB,GAAG;IAC/B,gBAAgB,EAAE,CAAC,EACjB,kBAAkB,GACnB,EAAE;QACD,kBAAkB,EAAE,wBAAwB,CAAC;KAC9C,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACnC,CAAC;AAEF,KAAK,eAAe,CAAC,CAAC,IAAI;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAA;CAAE,CAAC;AAEhE,eAAO,MAAM,mBAAmB,UAAW,WAAW,KAAG,aA4RxD,CAAC"}
|
package/package.json
CHANGED
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
]
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@slonik/types": "^46.
|
|
20
|
-
"@slonik/utilities": "^46.
|
|
19
|
+
"@slonik/types": "^46.4.0",
|
|
20
|
+
"@slonik/utilities": "^46.4.0",
|
|
21
21
|
"roarr": "^7.21.1",
|
|
22
22
|
"serialize-error": "^8.0.0",
|
|
23
23
|
"strict-event-emitter-types": "^2.0.0"
|
|
@@ -27,11 +27,11 @@
|
|
|
27
27
|
"@types/node": "^22.9.0",
|
|
28
28
|
"ava": "^6.1.3",
|
|
29
29
|
"cspell": "^8.16.0",
|
|
30
|
-
"eslint": "^9.
|
|
30
|
+
"eslint": "^9.16.0",
|
|
31
31
|
"nyc": "^15.1.0",
|
|
32
32
|
"ts-node": "^10.9.1",
|
|
33
33
|
"typescript": "^5.6.3",
|
|
34
|
-
"@slonik/eslint-config": "^46.
|
|
34
|
+
"@slonik/eslint-config": "^46.4.0"
|
|
35
35
|
},
|
|
36
36
|
"engines": {
|
|
37
37
|
"node": ">=18"
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"url": "https://github.com/gajus/slonik"
|
|
75
75
|
},
|
|
76
76
|
"types": "./dist/index.d.ts",
|
|
77
|
-
"version": "46.
|
|
77
|
+
"version": "46.4.0",
|
|
78
78
|
"scripts": {
|
|
79
79
|
"build": "rm -fr ./dist && tsc --project ./tsconfig.json",
|
|
80
80
|
"lint": "npm run lint:cspell && npm run lint:eslint && npm run lint:tsc",
|
|
@@ -10,29 +10,45 @@ import { type ConnectionOptions as TlsConnectionOptions } from 'node:tls';
|
|
|
10
10
|
import { serializeError } from 'serialize-error';
|
|
11
11
|
import { type StrictEventEmitter } from 'strict-event-emitter-types';
|
|
12
12
|
|
|
13
|
-
type
|
|
13
|
+
export type Driver = {
|
|
14
|
+
createClient: () => Promise<DriverClient>;
|
|
15
|
+
};
|
|
14
16
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
export type DriverClient = {
|
|
18
|
+
acquire: () => void;
|
|
19
|
+
destroy: () => Promise<void>;
|
|
20
|
+
id: () => string;
|
|
21
|
+
off: DriverClientEventEmitter['off'];
|
|
22
|
+
on: DriverClientEventEmitter['on'];
|
|
23
|
+
query: (query: string, values?: unknown[]) => Promise<DriverQueryResult>;
|
|
24
|
+
release: () => Promise<void>;
|
|
25
|
+
removeListener: DriverClientEventEmitter['removeListener'];
|
|
26
|
+
state: () => DriverClientState;
|
|
27
|
+
stream: (
|
|
28
|
+
query: string,
|
|
29
|
+
values?: unknown[],
|
|
30
|
+
) => DriverStream<DriverStreamResult>;
|
|
31
|
+
};
|
|
20
32
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
33
|
+
export type DriverClientEventEmitter = StrictEventEmitter<
|
|
34
|
+
EventEmitter,
|
|
35
|
+
{
|
|
36
|
+
acquire: () => void;
|
|
37
|
+
destroy: () => void;
|
|
38
|
+
error: (error: Error) => void;
|
|
39
|
+
notice: (event: DriverNotice) => void;
|
|
40
|
+
release: () => void;
|
|
41
|
+
}
|
|
42
|
+
>;
|
|
24
43
|
|
|
25
|
-
type
|
|
26
|
-
|
|
27
|
-
|
|
44
|
+
export type DriverClientState =
|
|
45
|
+
| 'ACQUIRED'
|
|
46
|
+
| 'DESTROYED'
|
|
47
|
+
| 'IDLE'
|
|
48
|
+
| 'PENDING_DESTROY'
|
|
49
|
+
| 'PENDING_RELEASE';
|
|
28
50
|
|
|
29
|
-
|
|
30
|
-
* @property name Value of "pg_type"."typname" (e.g. "int8", "timestamp", "timestamptz").
|
|
31
|
-
*/
|
|
32
|
-
export type DriverTypeParser<T = unknown> = {
|
|
33
|
-
readonly name: string;
|
|
34
|
-
readonly parse: (value: string) => T;
|
|
35
|
-
};
|
|
51
|
+
export type DriverCommand = 'COPY' | 'DELETE' | 'INSERT' | 'SELECT' | 'UPDATE';
|
|
36
52
|
|
|
37
53
|
export type DriverConfiguration = {
|
|
38
54
|
readonly connectionTimeout: 'DISABLE_TIMEOUT' | number;
|
|
@@ -48,10 +64,6 @@ export type DriverConfiguration = {
|
|
|
48
64
|
readonly typeParsers: readonly DriverTypeParser[];
|
|
49
65
|
};
|
|
50
66
|
|
|
51
|
-
export type DriverNotice = {
|
|
52
|
-
message: string;
|
|
53
|
-
};
|
|
54
|
-
|
|
55
67
|
export type DriverEventEmitter = StrictEventEmitter<
|
|
56
68
|
EventEmitter,
|
|
57
69
|
{
|
|
@@ -59,57 +71,16 @@ export type DriverEventEmitter = StrictEventEmitter<
|
|
|
59
71
|
}
|
|
60
72
|
>;
|
|
61
73
|
|
|
62
|
-
export type DriverClientEventEmitter = StrictEventEmitter<
|
|
63
|
-
EventEmitter,
|
|
64
|
-
{
|
|
65
|
-
acquire: () => void;
|
|
66
|
-
destroy: () => void;
|
|
67
|
-
error: (error: Error) => void;
|
|
68
|
-
notice: (event: DriverNotice) => void;
|
|
69
|
-
release: () => void;
|
|
70
|
-
}
|
|
71
|
-
>;
|
|
72
|
-
|
|
73
|
-
export type DriverClientState =
|
|
74
|
-
| 'ACQUIRED'
|
|
75
|
-
| 'DESTROYED'
|
|
76
|
-
| 'IDLE'
|
|
77
|
-
| 'PENDING_DESTROY'
|
|
78
|
-
| 'PENDING_RELEASE';
|
|
79
|
-
|
|
80
|
-
export type DriverClient = {
|
|
81
|
-
acquire: () => void;
|
|
82
|
-
destroy: () => Promise<void>;
|
|
83
|
-
id: () => string;
|
|
84
|
-
off: DriverClientEventEmitter['off'];
|
|
85
|
-
on: DriverClientEventEmitter['on'];
|
|
86
|
-
query: (query: string, values?: unknown[]) => Promise<DriverQueryResult>;
|
|
87
|
-
release: () => Promise<void>;
|
|
88
|
-
removeListener: DriverClientEventEmitter['removeListener'];
|
|
89
|
-
state: () => DriverClientState;
|
|
90
|
-
stream: (
|
|
91
|
-
query: string,
|
|
92
|
-
values?: unknown[],
|
|
93
|
-
) => DriverStream<DriverStreamResult>;
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
export type Driver = {
|
|
97
|
-
createClient: () => Promise<DriverClient>;
|
|
98
|
-
};
|
|
99
|
-
|
|
100
74
|
export type DriverFactory = ({
|
|
101
75
|
driverConfiguration,
|
|
102
76
|
}: {
|
|
103
77
|
driverConfiguration: DriverConfiguration;
|
|
104
78
|
}) => Promise<Driver>;
|
|
105
79
|
|
|
106
|
-
type
|
|
107
|
-
|
|
108
|
-
name: string;
|
|
80
|
+
export type DriverNotice = {
|
|
81
|
+
message: string;
|
|
109
82
|
};
|
|
110
83
|
|
|
111
|
-
export type DriverCommand = 'COPY' | 'DELETE' | 'INSERT' | 'SELECT' | 'UPDATE';
|
|
112
|
-
|
|
113
84
|
export type DriverQueryResult = {
|
|
114
85
|
readonly command: DriverCommand;
|
|
115
86
|
readonly fields: DriverField[];
|
|
@@ -117,11 +88,38 @@ export type DriverQueryResult = {
|
|
|
117
88
|
readonly rows: Array<Record<string, unknown>>;
|
|
118
89
|
};
|
|
119
90
|
|
|
91
|
+
// @ts-expect-error - TODO figure out how to fix this
|
|
92
|
+
export interface DriverStream<T> extends Readable {
|
|
93
|
+
[Symbol.asyncIterator]: () => AsyncIterableIterator<StreamDataEvent<T>>;
|
|
94
|
+
// eslint-disable-next-line @typescript-eslint/method-signature-style
|
|
95
|
+
on(event: 'data', listener: (chunk: StreamDataEvent<T>) => void): this;
|
|
96
|
+
|
|
97
|
+
// eslint-disable-next-line @typescript-eslint/method-signature-style
|
|
98
|
+
on(event: string | symbol, listener: (...args: any[]) => void): this;
|
|
99
|
+
}
|
|
100
|
+
|
|
120
101
|
export type DriverStreamResult = {
|
|
121
102
|
readonly fields: DriverField[];
|
|
122
103
|
readonly row: Record<string, unknown>;
|
|
123
104
|
};
|
|
124
105
|
|
|
106
|
+
/**
|
|
107
|
+
* @property name Value of "pg_type"."typname" (e.g. "int8", "timestamp", "timestamptz").
|
|
108
|
+
*/
|
|
109
|
+
export type DriverTypeParser<T = unknown> = {
|
|
110
|
+
readonly name: string;
|
|
111
|
+
readonly parse: (value: string) => T;
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
type BasicConnection = {
|
|
115
|
+
readonly query: (query: string) => Promise<void>;
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
type DriverField = {
|
|
119
|
+
dataTypeId: number;
|
|
120
|
+
name: string;
|
|
121
|
+
};
|
|
122
|
+
|
|
125
123
|
type DriverSetup = ({
|
|
126
124
|
driverConfiguration,
|
|
127
125
|
driverEventEmitter,
|
|
@@ -153,6 +151,8 @@ type InternalPoolClientFactory = {
|
|
|
153
151
|
}) => Promise<InternalPoolClient>;
|
|
154
152
|
};
|
|
155
153
|
|
|
154
|
+
type StreamDataEvent<T> = { data: T; fields: readonly Field[] };
|
|
155
|
+
|
|
156
156
|
export const createDriverFactory = (setup: DriverSetup): DriverFactory => {
|
|
157
157
|
return async ({ driverConfiguration }): Promise<Driver> => {
|
|
158
158
|
const { resetConnection } = driverConfiguration;
|