pogi 2.11.0 → 3.0.0-beta3
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.
- package/.env +5 -0
- package/.vscode/launch.json +47 -15
- package/jest.config.js +23 -0
- package/lib/bin/generateInterface.js +3 -3
- package/lib/bin/generateInterface.js.map +1 -1
- package/lib/connectionOptions.d.ts +7 -0
- package/lib/index.d.ts +1 -1
- package/lib/pgConverters.d.ts +9 -10
- package/lib/pgConverters.js +44 -39
- package/lib/pgConverters.js.map +1 -1
- package/lib/pgConverters.test.d.ts +1 -0
- package/lib/pgConverters.test.js +13 -0
- package/lib/pgConverters.test.js.map +1 -0
- package/lib/pgDb.d.ts +23 -31
- package/lib/pgDb.js +122 -103
- package/lib/pgDb.js.map +1 -1
- package/lib/pgDb.test.d.ts +1 -0
- package/lib/pgDb.test.js +1126 -0
- package/lib/pgDb.test.js.map +1 -0
- package/lib/pgDbInterface.d.ts +22 -0
- package/lib/pgDbInterface.js +11 -0
- package/lib/pgDbInterface.js.map +1 -0
- package/lib/pgDbOperators.d.ts +3 -3
- package/lib/pgDbOperators.js +4 -7
- package/lib/pgDbOperators.js.map +1 -1
- package/lib/pgDbOperators.test.d.ts +1 -0
- package/lib/pgDbOperators.test.js +313 -0
- package/lib/pgDbOperators.test.js.map +1 -0
- package/lib/pgSchema.d.ts +2 -3
- package/lib/pgSchema.js.map +1 -1
- package/lib/pgSchemaInterface.d.ts +0 -0
- package/lib/pgSchemaInterface.js +2 -0
- package/lib/pgSchemaInterface.js.map +1 -0
- package/lib/pgTable.d.ts +13 -38
- package/lib/pgTable.js +54 -54
- package/lib/pgTable.js.map +1 -1
- package/lib/pgTableInterface.d.ts +28 -0
- package/lib/pgTableInterface.js +4 -0
- package/lib/pgTableInterface.js.map +1 -0
- package/lib/pgUtils.d.ts +16 -6
- package/lib/pgUtils.js +162 -31
- package/lib/pgUtils.js.map +1 -1
- package/lib/queryAble.d.ts +16 -53
- package/lib/queryAble.js +58 -50
- package/lib/queryAble.js.map +1 -1
- package/lib/queryAbleInterface.d.ts +55 -0
- package/lib/queryAbleInterface.js +7 -0
- package/lib/queryAbleInterface.js.map +1 -0
- package/lib/queryWhere.d.ts +2 -2
- package/lib/queryWhere.js +19 -23
- package/lib/queryWhere.js.map +1 -1
- package/lib/test/pgDbOperatorSpec.d.ts +1 -0
- package/lib/test/pgDbOperatorSpec.js +326 -0
- package/lib/test/pgDbOperatorSpec.js.map +1 -0
- package/lib/test/pgDbSpec.d.ts +1 -0
- package/lib/test/pgDbSpec.js +1139 -0
- package/lib/test/pgDbSpec.js.map +1 -0
- package/lib/test/pgServiceRestartTest.d.ts +1 -0
- package/lib/test/pgServiceRestartTest.js +1532 -0
- package/lib/test/pgServiceRestartTest.js.map +1 -0
- package/package.json +21 -14
- package/{src/tsconfig.json → tsconfig.json} +11 -11
- package/spec/resources/init.sql +0 -122
- package/spec/resources/throw_exception.sql +0 -5
- package/spec/resources/tricky.sql +0 -13
- package/spec/run.js +0 -5
- package/spec/support/jasmine.json +0 -9
- package/src/bin/generateInterface.ts +0 -54
- package/src/connectionOptions.ts +0 -42
- package/src/index.ts +0 -6
- package/src/pgConverters.ts +0 -55
- package/src/pgDb.ts +0 -820
- package/src/pgDbLogger.ts +0 -13
- package/src/pgDbOperators.ts +0 -62
- package/src/pgSchema.ts +0 -15
- package/src/pgTable.ts +0 -401
- package/src/pgUtils.ts +0 -176
- package/src/queryAble.ts +0 -393
- package/src/queryWhere.ts +0 -326
- package/src/test/pgDbOperatorSpec.ts +0 -492
- package/src/test/pgDbSpec.ts +0 -1339
- package/src/test/pgServiceRestartTest.ts +0 -1500
package/.env
ADDED
package/.vscode/launch.json
CHANGED
|
@@ -11,25 +11,57 @@
|
|
|
11
11
|
"cwd": "${workspaceFolder}",
|
|
12
12
|
"runtimeExecutable": "npm",
|
|
13
13
|
"runtimeArgs": [
|
|
14
|
-
"run-script",
|
|
14
|
+
"run-script",
|
|
15
|
+
"test_debug"
|
|
15
16
|
],
|
|
16
17
|
"port": 9229
|
|
17
18
|
},
|
|
18
19
|
{
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
"
|
|
20
|
+
"name": "Run test",
|
|
21
|
+
"type": "node",
|
|
22
|
+
"request": "launch",
|
|
23
|
+
"cwd": "${workspaceFolder}",
|
|
24
|
+
"program": "${workspaceFolder}/node_modules/jest/bin/jest",
|
|
25
|
+
"args": [
|
|
26
|
+
"--runInBand",
|
|
27
|
+
"--config",
|
|
28
|
+
"jest.config.js",
|
|
29
|
+
"--runTestsByPath",
|
|
30
|
+
"${relativeFile}",
|
|
31
|
+
],
|
|
32
|
+
"console": "integratedTerminal",
|
|
33
|
+
"internalConsoleOptions": "neverOpen",
|
|
34
|
+
"disableOptimisticBPs": true,
|
|
35
|
+
"skipFiles": [
|
|
36
|
+
"fs.js",
|
|
37
|
+
"typescript.js",
|
|
38
|
+
"tslib.js",
|
|
39
|
+
"loader.js",
|
|
40
|
+
"loaders.js",
|
|
41
|
+
"helpers.js",
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"type": "node",
|
|
46
|
+
"name": "vscode-jest-tests",
|
|
47
|
+
"request": "launch",
|
|
48
|
+
"program": "${workspaceFolder}/node_modules/jest/bin/jest",
|
|
49
|
+
"args": [
|
|
50
|
+
"--runInBand"
|
|
51
|
+
],
|
|
52
|
+
"cwd": "${workspaceFolder}",
|
|
53
|
+
"envFile": "${workspaceFolder}/.env",
|
|
54
|
+
"console": "integratedTerminal",
|
|
55
|
+
"internalConsoleOptions": "neverOpen",
|
|
56
|
+
"disableOptimisticBPs": true,
|
|
57
|
+
"outFiles": [
|
|
58
|
+
"${workspaceFolder}/lib/*.js",
|
|
59
|
+
"!${workspaceFolder}/node_modules/**/*",
|
|
60
|
+
],
|
|
25
61
|
"skipFiles": [
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
"loaders.js",
|
|
31
|
-
"helpers.js",
|
|
32
|
-
]
|
|
33
|
-
}
|
|
62
|
+
"${workspaceFolder}/node_modules/**/*.js",
|
|
63
|
+
"<node_internals>/**/*.js"
|
|
64
|
+
],
|
|
65
|
+
}
|
|
34
66
|
]
|
|
35
67
|
}
|
package/jest.config.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// For a detailed explanation regarding each configuration property, visit:
|
|
2
|
+
// https://jestjs.io/docs/en/configuration.html
|
|
3
|
+
|
|
4
|
+
module.exports = {
|
|
5
|
+
roots: ["./src"],
|
|
6
|
+
testMatch: [
|
|
7
|
+
"**/*.test.ts"
|
|
8
|
+
],
|
|
9
|
+
testPathIgnorePatterns: ["/dist/", "/build/"],
|
|
10
|
+
|
|
11
|
+
// A preset that is used as a base for Jest's configuration
|
|
12
|
+
preset: "ts-jest",
|
|
13
|
+
testEnvironment: "node",
|
|
14
|
+
testRunner: "jest-jasmine2",
|
|
15
|
+
|
|
16
|
+
globals: {
|
|
17
|
+
"ts-jest": {
|
|
18
|
+
tsconfig: "tsconfig.json",
|
|
19
|
+
isolatedModules: true
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
setupFiles: ['dotenv/config']
|
|
23
|
+
};
|
|
@@ -5,7 +5,7 @@ const pgDb_1 = require("../pgDb");
|
|
|
5
5
|
const pgSchema_1 = require("../pgSchema");
|
|
6
6
|
const pgTable_1 = require("../pgTable");
|
|
7
7
|
(function () {
|
|
8
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
8
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
|
9
9
|
try {
|
|
10
10
|
let pgdb = yield pgDb_1.PgDb.connect({
|
|
11
11
|
logger: {
|
|
@@ -17,7 +17,7 @@ const pgTable_1 = require("../pgTable");
|
|
|
17
17
|
console.log('export interface PgDbType extends PgDb {');
|
|
18
18
|
for (let schemaName in pgdb.schemas) {
|
|
19
19
|
if (!(pgdb[schemaName] instanceof pgSchema_1.PgSchema)) {
|
|
20
|
-
throw Error('Already existing property: ' + schemaName + '!');
|
|
20
|
+
throw new Error('Already existing property: ' + schemaName + '!');
|
|
21
21
|
}
|
|
22
22
|
console.log(` '${schemaName}': PgSchema_${schemaName};`);
|
|
23
23
|
}
|
|
@@ -31,7 +31,7 @@ const pgTable_1 = require("../pgTable");
|
|
|
31
31
|
console.log(`export interface PgSchema_${schemaName} extends PgSchema {`);
|
|
32
32
|
for (let tableName in pgdb.schemas[schemaName].tables) {
|
|
33
33
|
if (!(pgdb[schemaName][tableName] instanceof pgTable_1.PgTable)) {
|
|
34
|
-
throw Error('Already existing property: ' + tableName + ' on schema:' + schemaName + '!');
|
|
34
|
+
throw new Error('Already existing property: ' + tableName + ' on schema:' + schemaName + '!');
|
|
35
35
|
}
|
|
36
36
|
console.log(` '${tableName}': PgTable<any>;`);
|
|
37
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateInterface.js","sourceRoot":"","sources":["../../src/bin/generateInterface.ts"],"names":[],"mappings":";;;AAAA,kCAA6B;AAC7B,0CAAqC;AACrC,wCAAmC;AAEnC,CAAC;;QACG,IAAI;YACA,IAAI,IAAI,GAAG,MAAM,WAAI,CAAC,OAAO,CAAC;gBAC1B,MAAM,EAAE;oBACJ,GAAG,EAAE,GAAG,EAAE;oBACV,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK;iBAC1B;aACJ,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YAExD,KAAK,IAAI,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE;gBACjC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,mBAAQ,CAAC,EAAE;oBACzC,MAAM,KAAK,CAAC,6BAA6B,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"generateInterface.js","sourceRoot":"","sources":["../../src/bin/generateInterface.ts"],"names":[],"mappings":";;;AAAA,kCAA6B;AAC7B,0CAAqC;AACrC,wCAAmC;AAEnC,CAAC;;QACG,IAAI;YACA,IAAI,IAAI,GAAG,MAAM,WAAI,CAAC,OAAO,CAAC;gBAC1B,MAAM,EAAE;oBACJ,GAAG,EAAE,GAAG,EAAE;oBACV,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK;iBAC1B;aACJ,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YAExD,KAAK,IAAI,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE;gBACjC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,mBAAQ,CAAC,EAAE;oBACzC,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC;iBACrE;gBACD,OAAO,CAAC,GAAG,CAAC,QAAQ,UAAU,eAAe,UAAU,GAAG,CAAC,CAAC;aAC/D;YAED,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAChC,KAAK,IAAI,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE;gBACjC,OAAO,CAAC,GAAG,CAAC,YAAY,UAAU,eAAe,UAAU,GAAG,CAAC,CAAC;aACnE;YACD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAEjB,KAAK,IAAI,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE;gBACjC,OAAO,CAAC,GAAG,CAAC,6BAA6B,UAAU,qBAAqB,CAAC,CAAC;gBAC1E,KAAK,IAAI,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE;oBACnD,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,YAAY,iBAAO,CAAC,EAAE;wBACnD,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC;qBACjG;oBACD,OAAO,CAAC,GAAG,CAAC,QAAQ,SAAS,kBAAkB,CAAC,CAAC;iBACpD;gBACD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;gBAC7B,KAAK,IAAI,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE;oBACnD,OAAO,CAAC,GAAG,CAAC,YAAY,SAAS,kBAAkB,CAAC,CAAC;iBACxD;gBACD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAErB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aACpB;YAGD,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;QAAC,OAAO,CAAC,EAAE;YACR,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACpB;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;CAAA,CAAC,EAAE,CAAC"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { PgDbLogger } from './pgDbLogger';
|
|
2
|
+
export interface ForceEscapeColumnsOptions {
|
|
3
|
+
select?: boolean;
|
|
4
|
+
where?: boolean;
|
|
5
|
+
orderBy?: boolean;
|
|
6
|
+
groupBy?: boolean;
|
|
7
|
+
}
|
|
2
8
|
export interface ConnectionOptions {
|
|
3
9
|
host?: string;
|
|
4
10
|
user?: string;
|
|
@@ -22,4 +28,5 @@ export interface ConnectionOptions {
|
|
|
22
28
|
idleTimeoutMillis?: number;
|
|
23
29
|
logger?: PgDbLogger;
|
|
24
30
|
skipUndefined?: 'all' | 'select' | 'none';
|
|
31
|
+
forceEscapeColumns?: boolean | ForceEscapeColumnsOptions;
|
|
25
32
|
}
|
package/lib/index.d.ts
CHANGED
|
@@ -3,4 +3,4 @@ export { ConnectionOptions } from './connectionOptions';
|
|
|
3
3
|
export { PgDbLogger } from './pgDbLogger';
|
|
4
4
|
export { PgTable } from './pgTable';
|
|
5
5
|
export { PgSchema } from './pgSchema';
|
|
6
|
-
export { QueryOptions } from './
|
|
6
|
+
export { QueryOptions } from './queryAbleInterface';
|
package/lib/pgConverters.d.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
export declare
|
|
2
|
-
export declare
|
|
3
|
-
export declare
|
|
4
|
-
export declare
|
|
5
|
-
export declare let
|
|
6
|
-
export declare let
|
|
7
|
-
export declare let
|
|
8
|
-
export declare let
|
|
9
|
-
export declare let
|
|
10
|
-
export declare let arraySplitToJson: (str: any) => any[];
|
|
1
|
+
export declare function parseArray(s: string): (string | null)[];
|
|
2
|
+
export declare function parseNumberWithValidation(s: string): number | null;
|
|
3
|
+
export declare function parseNumberOrNull(s: string): number | null;
|
|
4
|
+
export declare function parseBoolOrNull(s: string): boolean | null;
|
|
5
|
+
export declare let parseBooleanArray: (s: string) => (boolean | null)[];
|
|
6
|
+
export declare let parseNumberArray: (s: string) => (number | null)[];
|
|
7
|
+
export declare let parseNumberArrayWithValidation: (s: string[]) => (number | null)[];
|
|
8
|
+
export declare let parseDateArray: (s: string) => (Date | null)[];
|
|
9
|
+
export declare let parseJsonArray: (s: string) => (Object | null)[];
|
package/lib/pgConverters.js
CHANGED
|
@@ -1,63 +1,68 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.parseJsonArray = exports.parseDateArray = exports.parseNumberArrayWithValidation = exports.parseNumberArray = exports.parseBooleanArray = exports.parseBoolOrNull = exports.parseNumberOrNull = exports.parseNumberWithValidation = exports.parseArray = void 0;
|
|
4
4
|
const moment = require("moment");
|
|
5
|
-
|
|
6
|
-
if (
|
|
5
|
+
function parseArray(s) {
|
|
6
|
+
if (!s || s[0] !== '{' || s[s.length - 1] !== '}')
|
|
7
|
+
throw new Error('Invalid array value:' + s);
|
|
8
|
+
if (s == "{}")
|
|
7
9
|
return [];
|
|
8
|
-
|
|
10
|
+
s = s.slice(1, s.length - 1);
|
|
9
11
|
let e = /(?:("(?:[^"\\]|\\.)*")|([^,"]*))(?:,|$)/g;
|
|
10
12
|
let valList = [];
|
|
11
13
|
let parsingResult;
|
|
12
14
|
do {
|
|
13
|
-
parsingResult = e.exec(
|
|
14
|
-
|
|
15
|
+
parsingResult = e.exec(s);
|
|
16
|
+
if (!parsingResult)
|
|
17
|
+
throw new Error('Invalid array value:' + s);
|
|
18
|
+
let valStr = (parsingResult[2] === 'NULL') ? null :
|
|
15
19
|
(parsingResult[1] == null ? parsingResult[2] : unescapeString(parsingResult[1]));
|
|
16
20
|
valList.push(valStr);
|
|
17
|
-
} while (e.lastIndex <
|
|
21
|
+
} while (e.lastIndex < s.length);
|
|
18
22
|
return valList;
|
|
19
|
-
}
|
|
20
|
-
exports.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
+
}
|
|
24
|
+
exports.parseArray = parseArray;
|
|
25
|
+
;
|
|
26
|
+
function parseNumberWithValidation(s) {
|
|
27
|
+
if (s === 'NULL') {
|
|
23
28
|
return null;
|
|
24
29
|
}
|
|
25
|
-
let v = +
|
|
30
|
+
let v = +s;
|
|
26
31
|
if (v > Number.MAX_SAFE_INTEGER || v < Number.MIN_SAFE_INTEGER) {
|
|
27
|
-
throw Error("Number can't be represented in javascript precisely: " +
|
|
32
|
+
throw new Error("Number can't be represented in javascript precisely: " + s);
|
|
28
33
|
}
|
|
29
34
|
return v;
|
|
30
|
-
}
|
|
31
|
-
exports.
|
|
32
|
-
|
|
33
|
-
|
|
35
|
+
}
|
|
36
|
+
exports.parseNumberWithValidation = parseNumberWithValidation;
|
|
37
|
+
;
|
|
38
|
+
function parseNumberOrNull(s) {
|
|
39
|
+
if (s === 'NULL') {
|
|
34
40
|
return null;
|
|
35
41
|
}
|
|
36
|
-
return +
|
|
37
|
-
}
|
|
38
|
-
exports.
|
|
39
|
-
|
|
40
|
-
|
|
42
|
+
return +s;
|
|
43
|
+
}
|
|
44
|
+
exports.parseNumberOrNull = parseNumberOrNull;
|
|
45
|
+
;
|
|
46
|
+
function parseBoolOrNull(s) {
|
|
47
|
+
if (s === 'NULL') {
|
|
41
48
|
return null;
|
|
42
49
|
}
|
|
43
|
-
return
|
|
44
|
-
}
|
|
45
|
-
exports.
|
|
46
|
-
let
|
|
47
|
-
exports.
|
|
48
|
-
let
|
|
49
|
-
exports.
|
|
50
|
-
let
|
|
51
|
-
exports.
|
|
52
|
-
let
|
|
53
|
-
exports.
|
|
54
|
-
let
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
let vals = exports.arraySplit(str);
|
|
58
|
-
return vals.map(s => typeof s === 'string' ? JSON.parse(s) : s);
|
|
50
|
+
return s == 't';
|
|
51
|
+
}
|
|
52
|
+
exports.parseBoolOrNull = parseBoolOrNull;
|
|
53
|
+
let parseBooleanArray = (s) => s == "{}" ? [] : s.substring(1, s.length - 1).split(',').map(parseBoolOrNull);
|
|
54
|
+
exports.parseBooleanArray = parseBooleanArray;
|
|
55
|
+
let parseNumberArray = (s) => s == "{}" ? [] : s.substring(1, s.length - 1).split(',').map(parseNumberOrNull);
|
|
56
|
+
exports.parseNumberArray = parseNumberArray;
|
|
57
|
+
let parseNumberArrayWithValidation = (s) => s.map(parseNumberWithValidation);
|
|
58
|
+
exports.parseNumberArrayWithValidation = parseNumberArrayWithValidation;
|
|
59
|
+
let parseDateArray = (s) => s == "{}" ? [] : s.substring(1, s.length - 1).split(',').map(d => d == 'NULL' ? null : moment(d.substring(1, d.length - 1)).toDate());
|
|
60
|
+
exports.parseDateArray = parseDateArray;
|
|
61
|
+
let parseJsonArray = (s) => {
|
|
62
|
+
let vals = parseArray(s);
|
|
63
|
+
return vals.map(s2 => typeof s2 === 'string' ? JSON.parse(s2) : s2);
|
|
59
64
|
};
|
|
60
|
-
exports.
|
|
65
|
+
exports.parseJsonArray = parseJsonArray;
|
|
61
66
|
function unescapeString(s) {
|
|
62
67
|
return s.slice(1, s.length - 1)
|
|
63
68
|
.replace(/\\"/g, '"')
|
package/lib/pgConverters.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pgConverters.js","sourceRoot":"","sources":["../src/pgConverters.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;
|
|
1
|
+
{"version":3,"file":"pgConverters.js","sourceRoot":"","sources":["../src/pgConverters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const pgConverters_1 = require("./pgConverters");
|
|
5
|
+
describe("pgConverters.test", () => {
|
|
6
|
+
it("parseArray", () => (0, tslib_1.__awaiter)(void 0, void 0, void 0, function* () {
|
|
7
|
+
expect((0, pgConverters_1.parseArray)('{}')).toEqual([]);
|
|
8
|
+
expect((0, pgConverters_1.parseArray)('{1,2}')).toEqual(['1', '2']);
|
|
9
|
+
expect((0, pgConverters_1.parseArray)('{NULL,""}')).toEqual([null, '']);
|
|
10
|
+
expect((0, pgConverters_1.parseArray)('{"\\\\","\\""}')).toEqual(['\\', '"']);
|
|
11
|
+
}));
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=pgConverters.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pgConverters.test.js","sourceRoot":"","sources":["../src/pgConverters.test.ts"],"names":[],"mappings":";;;AAAA,iDAA4C;AAE5C,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,YAAY,EAAE,GAAS,EAAE;QACxB,MAAM,CAAC,IAAA,yBAAU,EAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACrC,MAAM,CAAC,IAAA,yBAAU,EAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,IAAA,yBAAU,EAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,IAAA,yBAAU,EAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAA,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
package/lib/pgDb.d.ts
CHANGED
|
@@ -1,35 +1,25 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { PgTable } from "./pgTable";
|
|
3
|
-
import { PgSchema } from "./pgSchema";
|
|
4
|
-
import { PgDbLogger } from './pgDbLogger';
|
|
1
|
+
import * as pg from 'pg';
|
|
5
2
|
import { ConnectionOptions } from './connectionOptions';
|
|
3
|
+
import { Notification, PostProcessResultFunc, ResultFieldType, TransactionIsolationLevel } from "./pgDbInterface";
|
|
4
|
+
import { PgDbLogger } from './pgDbLogger';
|
|
5
|
+
import { PgSchema } from "./pgSchema";
|
|
6
|
+
import { PgTable } from "./pgTable";
|
|
7
|
+
import { QueryAble } from "./queryAble";
|
|
6
8
|
export declare enum FieldType {
|
|
7
9
|
JSON = 0,
|
|
8
10
|
ARRAY = 1,
|
|
9
11
|
TIME = 2,
|
|
10
12
|
TSVECTOR = 3
|
|
11
13
|
}
|
|
12
|
-
export declare enum TranzactionIsolationLevel {
|
|
13
|
-
serializable = "SERIALIZABLE",
|
|
14
|
-
repeatableRead = "REPEATABLE READ",
|
|
15
|
-
readCommitted = "READ COMMITTED",
|
|
16
|
-
readUncommitted = "READ UNCOMMITTED"
|
|
17
|
-
}
|
|
18
|
-
export declare type PostProcessResultFunc = (res: any[], fields: ResultFieldType[], logger: PgDbLogger) => void;
|
|
19
|
-
export interface Notification {
|
|
20
|
-
processId: number;
|
|
21
|
-
channel: string;
|
|
22
|
-
payload?: string;
|
|
23
|
-
}
|
|
24
14
|
export declare class PgDb extends QueryAble {
|
|
25
15
|
protected static instances: {
|
|
26
16
|
[index: string]: Promise<PgDb>;
|
|
27
17
|
};
|
|
28
|
-
pool:
|
|
29
|
-
connection:
|
|
18
|
+
pool: pg.Pool;
|
|
19
|
+
connection: pg.PoolClient | null;
|
|
30
20
|
config: ConnectionOptions;
|
|
31
|
-
defaultSchemas:
|
|
32
|
-
db:
|
|
21
|
+
defaultSchemas: string[];
|
|
22
|
+
db: PgDb;
|
|
33
23
|
schemas: {
|
|
34
24
|
[name: string]: PgSchema;
|
|
35
25
|
};
|
|
@@ -37,14 +27,14 @@ export declare class PgDb extends QueryAble {
|
|
|
37
27
|
[name: string]: PgTable<any>;
|
|
38
28
|
};
|
|
39
29
|
fn: {
|
|
40
|
-
[name: string]: (...
|
|
30
|
+
[name: string]: (...args: any[]) => any;
|
|
41
31
|
};
|
|
42
32
|
[name: string]: any | PgSchema;
|
|
43
|
-
pgdbTypeParsers:
|
|
33
|
+
pgdbTypeParsers: Record<string, (s: any) => any>;
|
|
44
34
|
knownOids: Record<number, boolean>;
|
|
45
|
-
postProcessResult: PostProcessResultFunc;
|
|
35
|
+
postProcessResult: PostProcessResultFunc | undefined | null;
|
|
46
36
|
private constructor();
|
|
47
|
-
setPostProcessResult(f: (res: any[], fields: ResultFieldType[], logger: PgDbLogger) => void): void;
|
|
37
|
+
setPostProcessResult(f: null | ((res: any[], fields: ResultFieldType[], logger: PgDbLogger) => void)): void;
|
|
48
38
|
static getInstance(config: ConnectionOptions): Promise<PgDb>;
|
|
49
39
|
close(): Promise<void>;
|
|
50
40
|
static connect(config: ConnectionOptions): Promise<PgDb>;
|
|
@@ -53,15 +43,15 @@ export declare class PgDb extends QueryAble {
|
|
|
53
43
|
private initSchemasAndTables;
|
|
54
44
|
private setDefaultTablesAndFunctions;
|
|
55
45
|
private initFieldTypes;
|
|
56
|
-
setTypeParser(typeName: string, parser: (
|
|
57
|
-
setPgDbTypeParser(typeName: string, parser: (
|
|
58
|
-
resetMissingParsers(connection:
|
|
46
|
+
setTypeParser(typeName: string, parser: (s: string) => any, schemaName?: string): Promise<void>;
|
|
47
|
+
setPgDbTypeParser(typeName: string, parser: (s: string) => any, schemaName?: string): Promise<void>;
|
|
48
|
+
resetMissingParsers(connection: pg.PoolClient, oidList: number[]): Promise<void>;
|
|
59
49
|
dedicatedConnectionBegin(): Promise<PgDb>;
|
|
60
50
|
dedicatedConnectionEnd(): Promise<PgDb>;
|
|
61
51
|
savePoint(name: string): Promise<PgDb>;
|
|
62
52
|
savePointRelease(name: string): Promise<PgDb>;
|
|
63
53
|
transactionBegin(options?: {
|
|
64
|
-
isolationLevel?:
|
|
54
|
+
isolationLevel?: TransactionIsolationLevel;
|
|
65
55
|
deferrable?: boolean;
|
|
66
56
|
readOnly?: boolean;
|
|
67
57
|
}): Promise<PgDb>;
|
|
@@ -70,17 +60,19 @@ export declare class PgDb extends QueryAble {
|
|
|
70
60
|
savePoint?: string;
|
|
71
61
|
}): Promise<PgDb>;
|
|
72
62
|
isTransactionActive(): boolean;
|
|
73
|
-
execute(fileName: string, statementTransformerFunction?: (
|
|
63
|
+
execute(fileName: string, statementTransformerFunction?: (s: string) => string): Promise<void>;
|
|
74
64
|
private listeners;
|
|
75
65
|
private connectionForListen;
|
|
76
66
|
private _needToRestartConnectionForListen;
|
|
77
67
|
private restartConnectionForListen;
|
|
78
68
|
listen(channel: string, callback: (notification: Notification) => void): Promise<void>;
|
|
79
|
-
unlisten(channel: string, callback?: (
|
|
69
|
+
unlisten(channel: string, callback?: (notification: Notification) => void): Promise<void>;
|
|
80
70
|
notify(channel: string, payload?: string): Promise<any[]>;
|
|
81
|
-
runRestartConnectionForListen(): Promise<Error>;
|
|
71
|
+
runRestartConnectionForListen(): Promise<Error | null>;
|
|
82
72
|
needToFixConnectionForListen(): boolean;
|
|
83
73
|
private tryToFixConnectionForListenActively;
|
|
74
|
+
notificationListener: (notification: Notification) => boolean;
|
|
75
|
+
errorListener: (e: Error) => void;
|
|
84
76
|
private initConnectionForListen;
|
|
85
77
|
}
|
|
86
78
|
export default PgDb;
|