pogi 2.11.1 → 3.0.0-beta4

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.
Files changed (82) hide show
  1. package/.env +5 -0
  2. package/.vscode/launch.json +47 -15
  3. package/jest.config.js +23 -0
  4. package/lib/bin/generateInterface.js +3 -3
  5. package/lib/bin/generateInterface.js.map +1 -1
  6. package/lib/connectionOptions.d.ts +7 -0
  7. package/lib/index.d.ts +1 -1
  8. package/lib/pgConverters.d.ts +9 -10
  9. package/lib/pgConverters.js +44 -39
  10. package/lib/pgConverters.js.map +1 -1
  11. package/lib/pgConverters.test.d.ts +1 -0
  12. package/lib/pgConverters.test.js +13 -0
  13. package/lib/pgConverters.test.js.map +1 -0
  14. package/lib/pgDb.d.ts +22 -31
  15. package/lib/pgDb.js +71 -74
  16. package/lib/pgDb.js.map +1 -1
  17. package/lib/pgDb.test.d.ts +1 -0
  18. package/lib/pgDb.test.js +1132 -0
  19. package/lib/pgDb.test.js.map +1 -0
  20. package/lib/pgDbInterface.d.ts +22 -0
  21. package/lib/pgDbInterface.js +11 -0
  22. package/lib/pgDbInterface.js.map +1 -0
  23. package/lib/pgDbOperators.d.ts +3 -3
  24. package/lib/pgDbOperators.js +4 -7
  25. package/lib/pgDbOperators.js.map +1 -1
  26. package/lib/pgDbOperators.test.d.ts +1 -0
  27. package/lib/pgDbOperators.test.js +313 -0
  28. package/lib/pgDbOperators.test.js.map +1 -0
  29. package/lib/pgSchema.d.ts +2 -3
  30. package/lib/pgSchema.js.map +1 -1
  31. package/lib/pgSchemaInterface.d.ts +0 -0
  32. package/lib/pgSchemaInterface.js +2 -0
  33. package/lib/pgSchemaInterface.js.map +1 -0
  34. package/lib/pgTable.d.ts +13 -38
  35. package/lib/pgTable.js +54 -54
  36. package/lib/pgTable.js.map +1 -1
  37. package/lib/pgTableInterface.d.ts +28 -0
  38. package/lib/pgTableInterface.js +4 -0
  39. package/lib/pgTableInterface.js.map +1 -0
  40. package/lib/pgUtils.d.ts +16 -6
  41. package/lib/pgUtils.js +163 -31
  42. package/lib/pgUtils.js.map +1 -1
  43. package/lib/queryAble.d.ts +15 -64
  44. package/lib/queryAble.js +46 -45
  45. package/lib/queryAble.js.map +1 -1
  46. package/lib/queryAbleInterface.d.ts +55 -0
  47. package/lib/queryAbleInterface.js +7 -0
  48. package/lib/queryAbleInterface.js.map +1 -0
  49. package/lib/queryWhere.d.ts +2 -2
  50. package/lib/queryWhere.js +19 -23
  51. package/lib/queryWhere.js.map +1 -1
  52. package/lib/test/pgDbOperatorSpec.d.ts +1 -0
  53. package/lib/test/pgDbOperatorSpec.js +326 -0
  54. package/lib/test/pgDbOperatorSpec.js.map +1 -0
  55. package/lib/test/pgDbSpec.d.ts +1 -0
  56. package/lib/test/pgDbSpec.js +1139 -0
  57. package/lib/test/pgDbSpec.js.map +1 -0
  58. package/lib/test/pgServiceRestartTest.d.ts +1 -0
  59. package/lib/test/pgServiceRestartTest.js +1532 -0
  60. package/lib/test/pgServiceRestartTest.js.map +1 -0
  61. package/package.json +21 -14
  62. package/{src/tsconfig.json → tsconfig.json} +11 -11
  63. package/spec/resources/init.sql +0 -122
  64. package/spec/resources/throw_exception.sql +0 -5
  65. package/spec/resources/tricky.sql +0 -13
  66. package/spec/run.js +0 -5
  67. package/spec/support/jasmine.json +0 -9
  68. package/src/bin/generateInterface.ts +0 -54
  69. package/src/connectionOptions.ts +0 -42
  70. package/src/index.ts +0 -6
  71. package/src/pgConverters.ts +0 -55
  72. package/src/pgDb.ts +0 -839
  73. package/src/pgDbLogger.ts +0 -13
  74. package/src/pgDbOperators.ts +0 -62
  75. package/src/pgSchema.ts +0 -15
  76. package/src/pgTable.ts +0 -401
  77. package/src/pgUtils.ts +0 -176
  78. package/src/queryAble.ts +0 -422
  79. package/src/queryWhere.ts +0 -326
  80. package/src/test/pgDbOperatorSpec.ts +0 -492
  81. package/src/test/pgDbSpec.ts +0 -1339
  82. package/src/test/pgServiceRestartTest.ts +0 -1500
package/.env ADDED
@@ -0,0 +1,5 @@
1
+ #PGDATABASE=labcup
2
+ PGHOST=127.0.0.1
3
+ PGPASSWORD="labcup"
4
+ PGUSER="labcup"
5
+ #PGPORT=5432
@@ -11,25 +11,57 @@
11
11
  "cwd": "${workspaceFolder}",
12
12
  "runtimeExecutable": "npm",
13
13
  "runtimeArgs": [
14
- "run-script", "test_debug"
14
+ "run-script",
15
+ "test_debug"
15
16
  ],
16
17
  "port": 9229
17
18
  },
18
19
  {
19
- "name": "Run test",
20
- "type": "node",
21
- "request": "launch",
22
- "cwd": "${workspaceFolder}",
23
- "program": "${workspaceFolder}/spec/run.js",
24
- "runtimeExecutable": "node",
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
- "fs.js",
27
- "typescript.js",
28
- "tslib.js",
29
- "loader.js",
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;iBACjE;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,KAAK,CAAC,6BAA6B,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC;qBAC7F;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
+ {"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 './queryAble';
6
+ export { QueryOptions } from './queryAbleInterface';
@@ -1,10 +1,9 @@
1
- export declare let arraySplit: (str: any) => any[];
2
- export declare let numWithValidation: (val: any) => number;
3
- export declare let numberOrNull: (val: any) => number;
4
- export declare let boolOrNull: (val: any) => boolean;
5
- export declare let arraySplitToBool: (val: any) => any;
6
- export declare let arraySplitToNum: (val: any) => any;
7
- export declare let arraySplitToNumWithValidation: (val: any) => any;
8
- export declare let stringArrayToNumWithValidation: (val: any) => any;
9
- export declare let arraySplitToDate: (val: any) => any;
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)[];
@@ -1,63 +1,68 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.arraySplitToJson = exports.arraySplitToDate = exports.stringArrayToNumWithValidation = exports.arraySplitToNumWithValidation = exports.arraySplitToNum = exports.arraySplitToBool = exports.boolOrNull = exports.numberOrNull = exports.numWithValidation = exports.arraySplit = void 0;
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
- let arraySplit = (str) => {
6
- if (str == "{}")
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
- str = str.substring(1, str.length - 1);
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(str);
14
- let valStr = (parsingResult[2] == 'NULL') ? null :
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 < str.length);
21
+ } while (e.lastIndex < s.length);
18
22
  return valList;
19
- };
20
- exports.arraySplit = arraySplit;
21
- let numWithValidation = val => {
22
- if (val === 'NULL') {
23
+ }
24
+ exports.parseArray = parseArray;
25
+ ;
26
+ function parseNumberWithValidation(s) {
27
+ if (s === 'NULL') {
23
28
  return null;
24
29
  }
25
- let v = +val;
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: " + val);
32
+ throw new Error("Number can't be represented in javascript precisely: " + s);
28
33
  }
29
34
  return v;
30
- };
31
- exports.numWithValidation = numWithValidation;
32
- let numberOrNull = val => {
33
- if (val === 'NULL') {
35
+ }
36
+ exports.parseNumberWithValidation = parseNumberWithValidation;
37
+ ;
38
+ function parseNumberOrNull(s) {
39
+ if (s === 'NULL') {
34
40
  return null;
35
41
  }
36
- return +val;
37
- };
38
- exports.numberOrNull = numberOrNull;
39
- let boolOrNull = val => {
40
- if (val === 'NULL') {
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 val == 't';
44
- };
45
- exports.boolOrNull = boolOrNull;
46
- let arraySplitToBool = val => val == "{}" ? [] : val.substring(1, val.length - 1).split(',').map(exports.boolOrNull);
47
- exports.arraySplitToBool = arraySplitToBool;
48
- let arraySplitToNum = val => val == "{}" ? [] : val.substring(1, val.length - 1).split(',').map(exports.numberOrNull);
49
- exports.arraySplitToNum = arraySplitToNum;
50
- let arraySplitToNumWithValidation = val => val == "{}" ? [] : val.substring(1, val.length - 1).split(',').map(exports.numWithValidation);
51
- exports.arraySplitToNumWithValidation = arraySplitToNumWithValidation;
52
- let stringArrayToNumWithValidation = val => val.map(exports.numWithValidation);
53
- exports.stringArrayToNumWithValidation = stringArrayToNumWithValidation;
54
- let arraySplitToDate = val => val == "{}" ? [] : val.substring(1, val.length - 1).split(',').map(d => d == 'NULL' ? null : moment(d.substring(1, d.length - 1)).toDate());
55
- exports.arraySplitToDate = arraySplitToDate;
56
- let arraySplitToJson = (str) => {
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.arraySplitToJson = arraySplitToJson;
65
+ exports.parseJsonArray = parseJsonArray;
61
66
  function unescapeString(s) {
62
67
  return s.slice(1, s.length - 1)
63
68
  .replace(/\\"/g, '"')
@@ -1 +1 @@
1
- {"version":3,"file":"pgConverters.js","sourceRoot":"","sources":["../src/pgConverters.ts"],"names":[],"mappings":"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"}
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,33 +1,24 @@
1
- import { QueryAble, ResultFieldType, IPgDb, PostProcessResultFunc } from "./queryAble";
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 interface Notification {
19
- processId: number;
20
- channel: string;
21
- payload?: string;
22
- }
23
- export declare class PgDb extends QueryAble implements IPgDb {
14
+ export declare class PgDb extends QueryAble {
24
15
  protected static instances: {
25
16
  [index: string]: Promise<PgDb>;
26
17
  };
27
- pool: any;
28
- connection: any;
18
+ pool: pg.Pool;
19
+ connection: pg.PoolClient | null;
29
20
  config: ConnectionOptions;
30
- defaultSchemas: any;
21
+ defaultSchemas: string[];
31
22
  db: PgDb;
32
23
  schemas: {
33
24
  [name: string]: PgSchema;
@@ -36,14 +27,14 @@ export declare class PgDb extends QueryAble implements IPgDb {
36
27
  [name: string]: PgTable<any>;
37
28
  };
38
29
  fn: {
39
- [name: string]: (...any: any[]) => any;
30
+ [name: string]: (...args: any[]) => any;
40
31
  };
41
32
  [name: string]: any | PgSchema;
42
- pgdbTypeParsers: Record<string, (string: any) => any>;
33
+ pgdbTypeParsers: Record<string, (s: any) => any>;
43
34
  knownOids: Record<number, boolean>;
44
- postProcessResult: PostProcessResultFunc;
35
+ postProcessResult: PostProcessResultFunc | undefined | null;
45
36
  private constructor();
46
- setPostProcessResult(f: (res: any[], fields: ResultFieldType[], logger: PgDbLogger) => void): void;
37
+ setPostProcessResult(f: null | ((res: any[], fields: ResultFieldType[], logger: PgDbLogger) => void)): void;
47
38
  static getInstance(config: ConnectionOptions): Promise<PgDb>;
48
39
  close(): Promise<void>;
49
40
  static connect(config: ConnectionOptions): Promise<PgDb>;
@@ -52,15 +43,15 @@ export declare class PgDb extends QueryAble implements IPgDb {
52
43
  private initSchemasAndTables;
53
44
  private setDefaultTablesAndFunctions;
54
45
  private initFieldTypes;
55
- setTypeParser(typeName: string, parser: (string: any) => any, schemaName?: string): Promise<void>;
56
- setPgDbTypeParser(typeName: string, parser: (string: any) => any, schemaName?: string): Promise<void>;
57
- resetMissingParsers(connection: any, oidList: number[]): Promise<void>;
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>;
58
49
  dedicatedConnectionBegin(): Promise<PgDb>;
59
50
  dedicatedConnectionEnd(): Promise<PgDb>;
60
51
  savePoint(name: string): Promise<PgDb>;
61
52
  savePointRelease(name: string): Promise<PgDb>;
62
53
  transactionBegin(options?: {
63
- isolationLevel?: TranzactionIsolationLevel;
54
+ isolationLevel?: TransactionIsolationLevel;
64
55
  deferrable?: boolean;
65
56
  readOnly?: boolean;
66
57
  }): Promise<PgDb>;
@@ -69,19 +60,19 @@ export declare class PgDb extends QueryAble implements IPgDb {
69
60
  savePoint?: string;
70
61
  }): Promise<PgDb>;
71
62
  isTransactionActive(): boolean;
72
- execute(fileName: string, statementTransformerFunction?: (string: any) => string): Promise<void>;
63
+ execute(fileName: string, statementTransformerFunction?: (s: string) => string): Promise<void>;
73
64
  private listeners;
74
65
  private connectionForListen;
75
66
  private _needToRestartConnectionForListen;
76
67
  private restartConnectionForListen;
77
68
  listen(channel: string, callback: (notification: Notification) => void): Promise<void>;
78
- unlisten(channel: string, callback?: (Notification: any) => void): Promise<void>;
69
+ unlisten(channel: string, callback?: (notification: Notification) => void): Promise<void>;
79
70
  notify(channel: string, payload?: string): Promise<any[]>;
80
- runRestartConnectionForListen(): Promise<Error>;
71
+ runRestartConnectionForListen(): Promise<Error | null>;
81
72
  needToFixConnectionForListen(): boolean;
82
73
  private tryToFixConnectionForListenActively;
83
74
  notificationListener: (notification: Notification) => boolean;
84
- errorListener: (e: any) => void;
75
+ errorListener: (e: Error) => void;
85
76
  private initConnectionForListen;
86
77
  }
87
78
  export default PgDb;