graphile-build-pg 4.13.0 → 4.14.1

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 (106) hide show
  1. package/README.md +4 -13
  2. package/node8plus/GraphQLJSON.js +0 -11
  3. package/node8plus/GraphQLJSON.js.map +1 -1
  4. package/node8plus/PgLiveProvider.js +4 -11
  5. package/node8plus/PgLiveProvider.js.map +1 -1
  6. package/node8plus/QueryBuilder.js +42 -176
  7. package/node8plus/QueryBuilder.js.map +1 -1
  8. package/node8plus/index.js +8 -47
  9. package/node8plus/index.js.map +1 -1
  10. package/node8plus/inflections.js +9 -61
  11. package/node8plus/inflections.js.map +1 -1
  12. package/node8plus/omit.js +7 -22
  13. package/node8plus/omit.js.map +1 -1
  14. package/node8plus/parseIdentifier.js +0 -1
  15. package/node8plus/parseIdentifier.js.map +1 -1
  16. package/node8plus/pgPrepareAndRun.js +2 -14
  17. package/node8plus/pgPrepareAndRun.js.map +1 -1
  18. package/node8plus/plugins/PageInfoStartEndCursor.js +0 -4
  19. package/node8plus/plugins/PageInfoStartEndCursor.js.map +1 -1
  20. package/node8plus/plugins/PgAllRows.js +0 -29
  21. package/node8plus/plugins/PgAllRows.js.map +1 -1
  22. package/node8plus/plugins/PgBackwardRelationPlugin.js +2 -41
  23. package/node8plus/plugins/PgBackwardRelationPlugin.js.map +1 -1
  24. package/node8plus/plugins/PgBasicsPlugin.js +20 -147
  25. package/node8plus/plugins/PgBasicsPlugin.js.map +1 -1
  26. package/node8plus/plugins/PgColumnDeprecationPlugin.js +2 -5
  27. package/node8plus/plugins/PgColumnDeprecationPlugin.js.map +1 -1
  28. package/node8plus/plugins/PgColumnsPlugin.js +4 -17
  29. package/node8plus/plugins/PgColumnsPlugin.js.map +1 -1
  30. package/node8plus/plugins/PgComputedColumnsPlugin.js +4 -19
  31. package/node8plus/plugins/PgComputedColumnsPlugin.js.map +1 -1
  32. package/node8plus/plugins/PgConditionComputedColumnPlugin.js +12 -23
  33. package/node8plus/plugins/PgConditionComputedColumnPlugin.js.map +1 -1
  34. package/node8plus/plugins/PgConnectionArgCondition.js +1 -9
  35. package/node8plus/plugins/PgConnectionArgCondition.js.map +1 -1
  36. package/node8plus/plugins/PgConnectionArgFirstLastBeforeAfter.js +0 -12
  37. package/node8plus/plugins/PgConnectionArgFirstLastBeforeAfter.js.map +1 -1
  38. package/node8plus/plugins/PgConnectionArgOrderBy.js +2 -19
  39. package/node8plus/plugins/PgConnectionArgOrderBy.js.map +1 -1
  40. package/node8plus/plugins/PgConnectionArgOrderByDefaultValue.js +0 -6
  41. package/node8plus/plugins/PgConnectionArgOrderByDefaultValue.js.map +1 -1
  42. package/node8plus/plugins/PgConnectionTotalCount.js +0 -8
  43. package/node8plus/plugins/PgConnectionTotalCount.js.map +1 -1
  44. package/node8plus/plugins/PgForwardRelationPlugin.js +2 -25
  45. package/node8plus/plugins/PgForwardRelationPlugin.js.map +1 -1
  46. package/node8plus/plugins/PgIntrospectionPlugin.js +91 -180
  47. package/node8plus/plugins/PgIntrospectionPlugin.js.flow +30 -2
  48. package/node8plus/plugins/PgIntrospectionPlugin.js.map +1 -1
  49. package/node8plus/plugins/PgJWTPlugin.js +2 -18
  50. package/node8plus/plugins/PgJWTPlugin.js.map +1 -1
  51. package/node8plus/plugins/PgMutationCreatePlugin.js +0 -18
  52. package/node8plus/plugins/PgMutationCreatePlugin.js.map +1 -1
  53. package/node8plus/plugins/PgMutationPayloadEdgePlugin.js +4 -25
  54. package/node8plus/plugins/PgMutationPayloadEdgePlugin.js.map +1 -1
  55. package/node8plus/plugins/PgMutationProceduresPlugin.js +0 -6
  56. package/node8plus/plugins/PgMutationProceduresPlugin.js.map +1 -1
  57. package/node8plus/plugins/PgMutationUpdateDeletePlugin.js +14 -49
  58. package/node8plus/plugins/PgMutationUpdateDeletePlugin.js.flow +5 -2
  59. package/node8plus/plugins/PgMutationUpdateDeletePlugin.js.map +1 -1
  60. package/node8plus/plugins/PgNodeAliasPostGraphile.js +0 -6
  61. package/node8plus/plugins/PgNodeAliasPostGraphile.js.map +1 -1
  62. package/node8plus/plugins/PgOrderAllColumnsPlugin.js +0 -4
  63. package/node8plus/plugins/PgOrderAllColumnsPlugin.js.map +1 -1
  64. package/node8plus/plugins/PgOrderByPrimaryKeyPlugin.js +0 -6
  65. package/node8plus/plugins/PgOrderByPrimaryKeyPlugin.js.map +1 -1
  66. package/node8plus/plugins/PgOrderComputedColumnsPlugin.js +10 -14
  67. package/node8plus/plugins/PgOrderComputedColumnsPlugin.js.map +1 -1
  68. package/node8plus/plugins/PgQueryProceduresPlugin.js +4 -16
  69. package/node8plus/plugins/PgQueryProceduresPlugin.js.map +1 -1
  70. package/node8plus/plugins/PgRecordFunctionConnectionPlugin.js +3 -20
  71. package/node8plus/plugins/PgRecordFunctionConnectionPlugin.js.map +1 -1
  72. package/node8plus/plugins/PgRecordReturnTypesPlugin.js +11 -16
  73. package/node8plus/plugins/PgRecordReturnTypesPlugin.js.map +1 -1
  74. package/node8plus/plugins/PgRowByUniqueConstraint.js +4 -25
  75. package/node8plus/plugins/PgRowByUniqueConstraint.js.map +1 -1
  76. package/node8plus/plugins/PgRowNode.js +0 -32
  77. package/node8plus/plugins/PgRowNode.js.map +1 -1
  78. package/node8plus/plugins/PgScalarFunctionConnectionPlugin.js +3 -17
  79. package/node8plus/plugins/PgScalarFunctionConnectionPlugin.js.map +1 -1
  80. package/node8plus/plugins/PgTablesPlugin.js +7 -59
  81. package/node8plus/plugins/PgTablesPlugin.js.map +1 -1
  82. package/node8plus/plugins/PgTypesPlugin.js +140 -240
  83. package/node8plus/plugins/PgTypesPlugin.js.flow +76 -23
  84. package/node8plus/plugins/PgTypesPlugin.js.map +1 -1
  85. package/node8plus/plugins/addStartEndCursor.js +2 -5
  86. package/node8plus/plugins/addStartEndCursor.js.map +1 -1
  87. package/node8plus/plugins/debugSql.js +1 -16
  88. package/node8plus/plugins/debugSql.js.map +1 -1
  89. package/node8plus/plugins/introspectionQuery.js +3 -4
  90. package/node8plus/plugins/introspectionQuery.js.flow +11 -3
  91. package/node8plus/plugins/introspectionQuery.js.map +1 -1
  92. package/node8plus/plugins/makeProcField.js +40 -90
  93. package/node8plus/plugins/makeProcField.js.map +1 -1
  94. package/node8plus/plugins/pgField.js +2 -7
  95. package/node8plus/plugins/pgField.js.map +1 -1
  96. package/node8plus/plugins/viaTemporaryTable.js +6 -12
  97. package/node8plus/plugins/viaTemporaryTable.js.map +1 -1
  98. package/node8plus/postgresInterval.js +4 -4
  99. package/node8plus/postgresInterval.js.map +1 -1
  100. package/node8plus/queryFromResolveDataFactory.js +33 -77
  101. package/node8plus/queryFromResolveDataFactory.js.map +1 -1
  102. package/node8plus/utils.js +8 -9
  103. package/node8plus/utils.js.map +1 -1
  104. package/node8plus/withPgClient.js +4 -26
  105. package/node8plus/withPgClient.js.map +1 -1
  106. package/package.json +4 -4
@@ -5,19 +5,15 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.getPgClientAndReleaserFromConfig = exports.default = void 0;
7
7
  exports.quacksLikePgPool = quacksLikePgPool;
8
-
9
8
  var _pg = _interopRequireDefault(require("pg"));
10
-
11
9
  var _debug = _interopRequireDefault(require("debug"));
12
-
13
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
-
15
11
  const debug = (0, _debug.default)("graphile-build-pg");
16
-
17
12
  function constructorName(obj) {
18
13
  return obj && typeof obj.constructor === "function" && obj.constructor.name;
19
- } // Some duck-typing
14
+ }
20
15
 
16
+ // Some duck-typing
21
17
 
22
18
  function quacksLikePgClient(pgConfig) {
23
19
  // A diagnosis of exclusion
@@ -29,15 +25,12 @@ function quacksLikePgClient(pgConfig) {
29
25
  if (typeof pgConfig.escapeIdentifier !== "function") return false;
30
26
  return true;
31
27
  }
32
-
33
28
  function quacksLikePgPool(pgConfig) {
34
29
  // A diagnosis of exclusion
35
30
  if (!pgConfig || typeof pgConfig !== "object") return false;
36
-
37
31
  if (constructorName(pgConfig) !== "Pool" && constructorName(pgConfig) !== "BoundPool") {
38
32
  return false;
39
33
  }
40
-
41
34
  if (!pgConfig.Client) return false;
42
35
  if (!pgConfig.options) return false;
43
36
  if (typeof pgConfig.connect !== "function") return false;
@@ -45,73 +38,58 @@ function quacksLikePgPool(pgConfig) {
45
38
  if (typeof pgConfig.query !== "function") return false;
46
39
  return true;
47
40
  }
48
-
49
41
  const getPgClientAndReleaserFromConfig = async (pgConfig = process.env.DATABASE_URL) => {
50
42
  let releasePgClient = () => {};
51
-
52
43
  let pgClient;
53
-
54
44
  if (pgConfig instanceof _pg.default.Client || quacksLikePgClient(pgConfig)) {
55
45
  pgClient = pgConfig;
56
-
57
46
  if (!pgClient.release) {
58
47
  throw new Error("We only support PG clients from a PG pool (because otherwise the `await` call can hang indefinitely if an error occurs and there's no error handler)");
59
48
  }
60
49
  } else if (pgConfig instanceof _pg.default.Pool || quacksLikePgPool(pgConfig)) {
61
50
  const pgPool = pgConfig;
62
51
  pgClient = await pgPool.connect();
63
-
64
52
  releasePgClient = () => pgClient.release();
65
53
  } else if (pgConfig === undefined || typeof pgConfig === "string") {
66
54
  pgClient = new _pg.default.Client(pgConfig);
67
55
  pgClient.on("error", e => {
68
56
  debug("pgClient error occurred: %s", e);
69
57
  });
70
-
71
58
  releasePgClient = () => new Promise((resolve, reject) => pgClient.end(err => err ? reject(err) : resolve()));
72
-
73
59
  await new Promise((resolve, reject) => pgClient.connect(err => err ? reject(err) : resolve()));
74
60
  } else {
75
61
  throw new Error("You must provide either a pg.Pool or pg.Client instance or a PostgreSQL connection string.");
76
62
  }
77
-
78
63
  return {
79
64
  pgClient,
80
65
  releasePgClient
81
66
  };
82
67
  };
83
-
84
68
  exports.getPgClientAndReleaserFromConfig = getPgClientAndReleaserFromConfig;
85
-
86
69
  const withPgClient = async (pgConfig, fn) => {
87
70
  if (!fn) {
88
71
  throw new Error("Nothing to do!");
89
72
  }
90
-
91
73
  const {
92
74
  pgClient,
93
75
  releasePgClient
94
76
  } = await getPgClientAndReleaserFromConfig(pgConfig);
95
-
96
77
  const errorHandler = e => {
97
78
  // eslint-disable-next-line no-console
98
79
  console.error("withPgClient client error:", e.message);
99
80
  };
100
-
101
81
  pgClient.on("error", errorHandler);
102
-
103
82
  try {
104
83
  return await fn(pgClient);
105
84
  } finally {
106
85
  pgClient.removeListener("error", errorHandler);
107
-
108
86
  try {
109
87
  await releasePgClient();
110
- } catch (e) {// Failed to release, assuming success
88
+ } catch (e) {
89
+ // Failed to release, assuming success
111
90
  }
112
91
  }
113
92
  };
114
-
115
93
  var _default = withPgClient;
116
94
  exports.default = _default;
117
95
  //# sourceMappingURL=withPgClient.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/withPgClient.js"],"names":["debug","constructorName","obj","constructor","name","quacksLikePgClient","pgConfig","connect","end","escapeLiteral","escapeIdentifier","quacksLikePgPool","Client","options","query","getPgClientAndReleaserFromConfig","process","env","DATABASE_URL","releasePgClient","pgClient","pg","release","Error","Pool","pgPool","undefined","on","e","Promise","resolve","reject","err","withPgClient","fn","errorHandler","console","error","message","removeListener"],"mappings":"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","sourcesContent":["// @flow\nimport pg from \"pg\";\nimport debugFactory from \"debug\";\n\nconst debug = debugFactory(\"graphile-build-pg\");\n\nfunction constructorName(obj) {\n return obj && typeof obj.constructor === \"function\" && obj.constructor.name;\n}\n\n// Some duck-typing\n\nfunction quacksLikePgClient(pgConfig: mixed): boolean {\n // A diagnosis of exclusion\n if (!pgConfig || typeof pgConfig !== \"object\") return false;\n if (constructorName(pgConfig) !== \"Client\") return false;\n if (typeof pgConfig.connect !== \"function\") return false;\n if (typeof pgConfig.end !== \"function\") return false;\n if (typeof pgConfig.escapeLiteral !== \"function\") return false;\n if (typeof pgConfig.escapeIdentifier !== \"function\") return false;\n return true;\n}\n\nexport function quacksLikePgPool(pgConfig: mixed): boolean {\n // A diagnosis of exclusion\n if (!pgConfig || typeof pgConfig !== \"object\") return false;\n if (\n constructorName(pgConfig) !== \"Pool\" &&\n constructorName(pgConfig) !== \"BoundPool\"\n ) {\n return false;\n }\n if (!pgConfig.Client) return false;\n if (!pgConfig.options) return false;\n if (typeof pgConfig.connect !== \"function\") return false;\n if (typeof pgConfig.end !== \"function\") return false;\n if (typeof pgConfig.query !== \"function\") return false;\n return true;\n}\n\nexport const getPgClientAndReleaserFromConfig = async (\n pgConfig: pg.Client | pg.Pool | string = process.env.DATABASE_URL\n) => {\n let releasePgClient = () => {};\n let pgClient: pg.Client;\n if (pgConfig instanceof pg.Client || quacksLikePgClient(pgConfig)) {\n pgClient = (pgConfig: pg.Client);\n if (!pgClient.release) {\n throw new Error(\n \"We only support PG clients from a PG pool (because otherwise the `await` call can hang indefinitely if an error occurs and there's no error handler)\"\n );\n }\n } else if (pgConfig instanceof pg.Pool || quacksLikePgPool(pgConfig)) {\n const pgPool = (pgConfig: pg.Pool);\n pgClient = await pgPool.connect();\n releasePgClient = () => pgClient.release();\n } else if (pgConfig === undefined || typeof pgConfig === \"string\") {\n pgClient = new pg.Client(pgConfig);\n pgClient.on(\"error\", e => {\n debug(\"pgClient error occurred: %s\", e);\n });\n releasePgClient = () =>\n new Promise<void>((resolve, reject) =>\n pgClient.end(err => (err ? reject(err) : resolve()))\n );\n await new Promise((resolve, reject) =>\n pgClient.connect(err => (err ? reject(err) : resolve()))\n );\n } else {\n throw new Error(\n \"You must provide either a pg.Pool or pg.Client instance or a PostgreSQL connection string.\"\n );\n }\n return { pgClient, releasePgClient };\n};\n\nconst withPgClient = async (\n pgConfig: pg.Client | pg.Pool | string | void,\n fn: (pgClient: pg.Client) => *\n) => {\n if (!fn) {\n throw new Error(\"Nothing to do!\");\n }\n const { pgClient, releasePgClient } = await getPgClientAndReleaserFromConfig(\n pgConfig\n );\n const errorHandler = e => {\n // eslint-disable-next-line no-console\n console.error(\"withPgClient client error:\", e.message);\n };\n pgClient.on(\"error\", errorHandler);\n try {\n return await fn(pgClient);\n } finally {\n pgClient.removeListener(\"error\", errorHandler);\n try {\n await releasePgClient();\n } catch (e) {\n // Failed to release, assuming success\n }\n }\n};\n\nexport default withPgClient;\n"],"file":"withPgClient.js"}
1
+ {"version":3,"file":"withPgClient.js","names":["_pg","_interopRequireDefault","require","_debug","obj","__esModule","default","debug","debugFactory","constructorName","constructor","name","quacksLikePgClient","pgConfig","connect","end","escapeLiteral","escapeIdentifier","quacksLikePgPool","Client","options","query","getPgClientAndReleaserFromConfig","process","env","DATABASE_URL","releasePgClient","pgClient","pg","release","Error","Pool","pgPool","undefined","on","e","Promise","resolve","reject","err","exports","withPgClient","fn","errorHandler","console","error","message","removeListener","_default"],"sources":["../src/withPgClient.js"],"sourcesContent":["// @flow\nimport pg from \"pg\";\nimport debugFactory from \"debug\";\n\nconst debug = debugFactory(\"graphile-build-pg\");\n\nfunction constructorName(obj) {\n return obj && typeof obj.constructor === \"function\" && obj.constructor.name;\n}\n\n// Some duck-typing\n\nfunction quacksLikePgClient(pgConfig: mixed): boolean {\n // A diagnosis of exclusion\n if (!pgConfig || typeof pgConfig !== \"object\") return false;\n if (constructorName(pgConfig) !== \"Client\") return false;\n if (typeof pgConfig.connect !== \"function\") return false;\n if (typeof pgConfig.end !== \"function\") return false;\n if (typeof pgConfig.escapeLiteral !== \"function\") return false;\n if (typeof pgConfig.escapeIdentifier !== \"function\") return false;\n return true;\n}\n\nexport function quacksLikePgPool(pgConfig: mixed): boolean {\n // A diagnosis of exclusion\n if (!pgConfig || typeof pgConfig !== \"object\") return false;\n if (\n constructorName(pgConfig) !== \"Pool\" &&\n constructorName(pgConfig) !== \"BoundPool\"\n ) {\n return false;\n }\n if (!pgConfig.Client) return false;\n if (!pgConfig.options) return false;\n if (typeof pgConfig.connect !== \"function\") return false;\n if (typeof pgConfig.end !== \"function\") return false;\n if (typeof pgConfig.query !== \"function\") return false;\n return true;\n}\n\nexport const getPgClientAndReleaserFromConfig = async (\n pgConfig: pg.Client | pg.Pool | string = process.env.DATABASE_URL\n) => {\n let releasePgClient = () => {};\n let pgClient: pg.Client;\n if (pgConfig instanceof pg.Client || quacksLikePgClient(pgConfig)) {\n pgClient = (pgConfig: pg.Client);\n if (!pgClient.release) {\n throw new Error(\n \"We only support PG clients from a PG pool (because otherwise the `await` call can hang indefinitely if an error occurs and there's no error handler)\"\n );\n }\n } else if (pgConfig instanceof pg.Pool || quacksLikePgPool(pgConfig)) {\n const pgPool = (pgConfig: pg.Pool);\n pgClient = await pgPool.connect();\n releasePgClient = () => pgClient.release();\n } else if (pgConfig === undefined || typeof pgConfig === \"string\") {\n pgClient = new pg.Client(pgConfig);\n pgClient.on(\"error\", e => {\n debug(\"pgClient error occurred: %s\", e);\n });\n releasePgClient = () =>\n new Promise<void>((resolve, reject) =>\n pgClient.end(err => (err ? reject(err) : resolve()))\n );\n await new Promise((resolve, reject) =>\n pgClient.connect(err => (err ? reject(err) : resolve()))\n );\n } else {\n throw new Error(\n \"You must provide either a pg.Pool or pg.Client instance or a PostgreSQL connection string.\"\n );\n }\n return { pgClient, releasePgClient };\n};\n\nconst withPgClient = async (\n pgConfig: pg.Client | pg.Pool | string | void,\n fn: (pgClient: pg.Client) => *\n) => {\n if (!fn) {\n throw new Error(\"Nothing to do!\");\n }\n const { pgClient, releasePgClient } = await getPgClientAndReleaserFromConfig(\n pgConfig\n );\n const errorHandler = e => {\n // eslint-disable-next-line no-console\n console.error(\"withPgClient client error:\", e.message);\n };\n pgClient.on(\"error\", errorHandler);\n try {\n return await fn(pgClient);\n } finally {\n pgClient.removeListener(\"error\", errorHandler);\n try {\n await releasePgClient();\n } catch (e) {\n // Failed to release, assuming success\n }\n }\n};\n\nexport default withPgClient;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "graphile-build-pg",
3
- "version": "4.13.0",
3
+ "version": "4.14.1",
4
4
  "description": "Build a GraphQL schema by reflection over a PostgreSQL schema. Easy to customize since it's built with plugins on graphile-build",
5
5
  "main": "node8plus/index.js",
6
6
  "types": "node8plus/index.d.ts",
@@ -40,11 +40,11 @@
40
40
  "@graphile/lru": "4.11.0",
41
41
  "chalk": "^2.4.2",
42
42
  "debug": "^4.1.1",
43
- "graphile-build": "4.13.0",
43
+ "graphile-build": "4.14.1",
44
44
  "jsonwebtoken": "^9.0.0",
45
45
  "lodash": ">=4 <5",
46
46
  "lru-cache": ">=4 <5",
47
- "pg-sql2": "4.13.0"
47
+ "pg-sql2": "4.14.1"
48
48
  },
49
49
  "peerDependencies": {
50
50
  "pg": ">=6.1.0 <9"
@@ -64,5 +64,5 @@
64
64
  "engines": {
65
65
  "node": ">=8.6"
66
66
  },
67
- "gitHead": "0b2ca8bfff8f3b50dfb09079fbbf1a4e3838cedc"
67
+ "gitHead": "63f53e9be536c3b88e3b7868274b4cfeac246399"
68
68
  }