postgraphile 4.12.11 → 5.0.0-0.3

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 (134) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/LICENSE.md +15 -20
  3. package/README.md +20 -171
  4. package/dist/cli-run.d.ts +3 -0
  5. package/dist/cli-run.d.ts.map +1 -0
  6. package/dist/cli-run.js +7 -0
  7. package/dist/cli-run.js.map +1 -0
  8. package/dist/cli.d.ts +21 -0
  9. package/dist/cli.d.ts.map +1 -0
  10. package/dist/cli.js +180 -0
  11. package/dist/cli.js.map +1 -0
  12. package/dist/index.d.ts +14 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +88 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/plugins/PgV4BehaviorPlugin.d.ts +11 -0
  17. package/dist/plugins/PgV4BehaviorPlugin.d.ts.map +1 -0
  18. package/dist/plugins/PgV4BehaviorPlugin.js +73 -0
  19. package/dist/plugins/PgV4BehaviorPlugin.js.map +1 -0
  20. package/dist/plugins/PgV4InflectionPlugin.d.ts +11 -0
  21. package/dist/plugins/PgV4InflectionPlugin.d.ts.map +1 -0
  22. package/dist/plugins/PgV4InflectionPlugin.js +91 -0
  23. package/dist/plugins/PgV4InflectionPlugin.js.map +1 -0
  24. package/dist/plugins/PgV4NoIgnoreIndexes.d.ts +2 -0
  25. package/dist/plugins/PgV4NoIgnoreIndexes.d.ts.map +1 -0
  26. package/dist/plugins/PgV4NoIgnoreIndexes.js +72 -0
  27. package/dist/plugins/PgV4NoIgnoreIndexes.js.map +1 -0
  28. package/dist/plugins/PgV4SmartTagsPlugin.d.ts +11 -0
  29. package/dist/plugins/PgV4SmartTagsPlugin.d.ts.map +1 -0
  30. package/dist/plugins/PgV4SmartTagsPlugin.js +190 -0
  31. package/dist/plugins/PgV4SmartTagsPlugin.js.map +1 -0
  32. package/dist/presets/amber.d.ts +5 -0
  33. package/dist/presets/amber.d.ts.map +1 -0
  34. package/dist/presets/amber.js +38 -0
  35. package/dist/presets/amber.js.map +1 -0
  36. package/dist/presets/v4.d.ts +34 -0
  37. package/dist/presets/v4.d.ts.map +1 -0
  38. package/dist/presets/v4.js +142 -0
  39. package/dist/presets/v4.js.map +1 -0
  40. package/dist/schema.d.ts +34 -0
  41. package/dist/schema.d.ts.map +1 -0
  42. package/dist/schema.js +82 -0
  43. package/dist/schema.js.map +1 -0
  44. package/package.json +77 -154
  45. package/build/assets/favicon.ico.d.ts +0 -3
  46. package/build/assets/favicon.ico.js +0 -6
  47. package/build/assets/graphiql.html.d.ts +0 -2
  48. package/build/assets/graphiql.html.js +0 -6
  49. package/build/index.d.ts +0 -8
  50. package/build/index.js +0 -34
  51. package/build/interfaces.d.ts +0 -162
  52. package/build/interfaces.js +0 -3
  53. package/build/plugins.d.ts +0 -3
  54. package/build/plugins.js +0 -53
  55. package/build/postgraphile/cli.d.ts +0 -3
  56. package/build/postgraphile/cli.js +0 -541
  57. package/build/postgraphile/extendedFormatError.d.ts +0 -9
  58. package/build/postgraphile/extendedFormatError.js +0 -51
  59. package/build/postgraphile/http/createPostGraphileHttpRequestHandler.d.ts +0 -11
  60. package/build/postgraphile/http/createPostGraphileHttpRequestHandler.js +0 -974
  61. package/build/postgraphile/http/frameworks.d.ts +0 -110
  62. package/build/postgraphile/http/frameworks.js +0 -258
  63. package/build/postgraphile/http/liveSubscribe.d.ts +0 -22
  64. package/build/postgraphile/http/liveSubscribe.js +0 -89
  65. package/build/postgraphile/http/mapAsyncIterator.d.ts +0 -15
  66. package/build/postgraphile/http/mapAsyncIterator.js +0 -71
  67. package/build/postgraphile/http/setupServerSentEvents.d.ts +0 -9
  68. package/build/postgraphile/http/setupServerSentEvents.js +0 -51
  69. package/build/postgraphile/http/subscriptions.d.ts +0 -7
  70. package/build/postgraphile/http/subscriptions.js +0 -410
  71. package/build/postgraphile/index.d.ts +0 -5
  72. package/build/postgraphile/index.js +0 -14
  73. package/build/postgraphile/pluginHook.d.ts +0 -104
  74. package/build/postgraphile/pluginHook.js +0 -100
  75. package/build/postgraphile/postgraphile.d.ts +0 -20
  76. package/build/postgraphile/postgraphile.js +0 -332
  77. package/build/postgraphile/postgraphilerc.d.ts +0 -2
  78. package/build/postgraphile/postgraphilerc.js +0 -16
  79. package/build/postgraphile/schema/exportPostGraphileSchema.d.ts +0 -6
  80. package/build/postgraphile/schema/exportPostGraphileSchema.js +0 -45
  81. package/build/postgraphile/shutdownActions.d.ts +0 -41
  82. package/build/postgraphile/shutdownActions.js +0 -87
  83. package/build/postgraphile/withPostGraphileContext.d.ts +0 -55
  84. package/build/postgraphile/withPostGraphileContext.js +0 -457
  85. package/build/postgres/inventory/pgClientFromContext.d.ts +0 -8
  86. package/build/postgres/inventory/pgClientFromContext.js +0 -21
  87. package/build-turbo/assets/favicon.ico.d.ts +0 -3
  88. package/build-turbo/assets/favicon.ico.js +0 -6
  89. package/build-turbo/assets/graphiql.html.d.ts +0 -2
  90. package/build-turbo/assets/graphiql.html.js +0 -6
  91. package/build-turbo/index.d.ts +0 -8
  92. package/build-turbo/index.js +0 -34
  93. package/build-turbo/interfaces.d.ts +0 -162
  94. package/build-turbo/interfaces.js +0 -3
  95. package/build-turbo/plugins.d.ts +0 -3
  96. package/build-turbo/plugins.js +0 -53
  97. package/build-turbo/postgraphile/cli.d.ts +0 -3
  98. package/build-turbo/postgraphile/cli.js +0 -572
  99. package/build-turbo/postgraphile/extendedFormatError.d.ts +0 -9
  100. package/build-turbo/postgraphile/extendedFormatError.js +0 -61
  101. package/build-turbo/postgraphile/http/createPostGraphileHttpRequestHandler.d.ts +0 -11
  102. package/build-turbo/postgraphile/http/createPostGraphileHttpRequestHandler.js +0 -982
  103. package/build-turbo/postgraphile/http/frameworks.d.ts +0 -110
  104. package/build-turbo/postgraphile/http/frameworks.js +0 -258
  105. package/build-turbo/postgraphile/http/liveSubscribe.d.ts +0 -22
  106. package/build-turbo/postgraphile/http/liveSubscribe.js +0 -89
  107. package/build-turbo/postgraphile/http/mapAsyncIterator.d.ts +0 -15
  108. package/build-turbo/postgraphile/http/mapAsyncIterator.js +0 -71
  109. package/build-turbo/postgraphile/http/setupServerSentEvents.d.ts +0 -9
  110. package/build-turbo/postgraphile/http/setupServerSentEvents.js +0 -51
  111. package/build-turbo/postgraphile/http/subscriptions.d.ts +0 -7
  112. package/build-turbo/postgraphile/http/subscriptions.js +0 -409
  113. package/build-turbo/postgraphile/index.d.ts +0 -5
  114. package/build-turbo/postgraphile/index.js +0 -14
  115. package/build-turbo/postgraphile/pluginHook.d.ts +0 -104
  116. package/build-turbo/postgraphile/pluginHook.js +0 -100
  117. package/build-turbo/postgraphile/postgraphile.d.ts +0 -20
  118. package/build-turbo/postgraphile/postgraphile.js +0 -337
  119. package/build-turbo/postgraphile/postgraphilerc.d.ts +0 -2
  120. package/build-turbo/postgraphile/postgraphilerc.js +0 -16
  121. package/build-turbo/postgraphile/schema/exportPostGraphileSchema.d.ts +0 -6
  122. package/build-turbo/postgraphile/schema/exportPostGraphileSchema.js +0 -45
  123. package/build-turbo/postgraphile/shutdownActions.d.ts +0 -41
  124. package/build-turbo/postgraphile/shutdownActions.js +0 -87
  125. package/build-turbo/postgraphile/withPostGraphileContext.d.ts +0 -55
  126. package/build-turbo/postgraphile/withPostGraphileContext.js +0 -466
  127. package/build-turbo/postgres/inventory/pgClientFromContext.d.ts +0 -8
  128. package/build-turbo/postgres/inventory/pgClientFromContext.js +0 -21
  129. package/cli.js +0 -6
  130. package/index.js +0 -5
  131. package/isTurbo.js +0 -11
  132. package/plugins.d.ts +0 -1
  133. package/plugins.js +0 -5
  134. package/sponsors.json +0 -150
@@ -1,100 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.pluginHookFromOptions = exports.makePluginHook = void 0;
4
- // @ts-ignore Allow importing JSON
5
- const package_json_1 = require("../../package.json");
6
- const graphql = require("graphql");
7
- const identityHook = (input) => input;
8
- const identityPluginHook = (_hookName, input, _options) => input;
9
- function contextIsSame(context1, context2) {
10
- // Shortcut if obvious
11
- if (context1 === context2) {
12
- return true;
13
- }
14
- // Blacklist approach from now on
15
- const keys1 = Object.keys(context1);
16
- const keys2 = Object.keys(context2);
17
- if (keys1.length !== keys2.length) {
18
- return false;
19
- }
20
- // tslint:disable-next-line one-variable-per-declaration
21
- for (let i = 0, l = keys1.length; i < l; i++) {
22
- const key = keys1[i];
23
- if (context1[key] !== context2[key]) {
24
- return false;
25
- }
26
- if (!keys2.includes(key)) {
27
- return false;
28
- }
29
- }
30
- return true;
31
- }
32
- // Caches the last value of the hook, in case it's called with exactly the same
33
- // arguments again.
34
- function memoizeHook(hook) {
35
- let lastCall = null;
36
- return (argument, context) => {
37
- if (lastCall && lastCall.argument === argument && contextIsSame(lastCall.context, context)) {
38
- return lastCall.result;
39
- }
40
- else {
41
- const result = hook(argument, context);
42
- lastCall = {
43
- argument,
44
- context,
45
- result,
46
- };
47
- return result;
48
- }
49
- };
50
- }
51
- function shouldMemoizeHook(hookName) {
52
- return hookName === 'withPostGraphileContext';
53
- }
54
- function makeHook(plugins, hookName) {
55
- const combinedHook = plugins.reduce((previousHook, plugin) => {
56
- if (typeof plugin[hookName] === 'function') {
57
- return (argument, context) => {
58
- return plugin[hookName](previousHook(argument, context), context);
59
- };
60
- }
61
- else {
62
- return previousHook;
63
- }
64
- }, identityHook);
65
- if (combinedHook === identityHook) {
66
- return identityHook;
67
- }
68
- else if (shouldMemoizeHook(hookName)) {
69
- return memoizeHook(combinedHook);
70
- }
71
- else {
72
- return combinedHook;
73
- }
74
- }
75
- function makePluginHook(plugins) {
76
- const hooks = {};
77
- const emptyObject = {}; // caching this makes memoization faster when no context is needed
78
- function rawPluginHook(hookName, argument, context = emptyObject) {
79
- if (!hooks[hookName]) {
80
- hooks[hookName] = makeHook(plugins, hookName);
81
- }
82
- return hooks[hookName](argument, context);
83
- }
84
- const pluginHook = rawPluginHook('pluginHook', rawPluginHook, {});
85
- // Use this hook to check your hook is compatible with this version of
86
- // PostGraphile, also to get a reference to shared graphql instance.
87
- pluginHook('init', null, { version: package_json_1.version, graphql });
88
- return pluginHook;
89
- }
90
- exports.makePluginHook = makePluginHook;
91
- function pluginHookFromOptions(options) {
92
- if (typeof options.pluginHook === 'function') {
93
- return options.pluginHook;
94
- }
95
- else {
96
- return identityPluginHook;
97
- }
98
- }
99
- exports.pluginHookFromOptions = pluginHookFromOptions;
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luSG9vay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wb3N0Z3JhcGhpbGUvcGx1Z2luSG9vay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFRQSxrQ0FBa0M7QUFDbEMscURBQTZDO0FBQzdDLG1DQUFtQztBQTJIbkMsTUFBTSxZQUFZLEdBQUcsQ0FBSSxLQUFRLEVBQUssRUFBRSxDQUFDLEtBQUssQ0FBQztBQUMvQyxNQUFNLGtCQUFrQixHQUFpQixDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUM7QUFFL0UsU0FBUyxhQUFhLENBQUMsUUFBNkIsRUFBRSxRQUE2QjtJQUNqRixzQkFBc0I7SUFDdEIsSUFBSSxRQUFRLEtBQUssUUFBUSxFQUFFO1FBQ3pCLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFDRCxpQ0FBaUM7SUFDakMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsTUFBTSxFQUFFO1FBQ2pDLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCx3REFBd0Q7SUFDeEQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUM1QyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ25DLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENB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
@@ -1,20 +0,0 @@
1
- /// <reference types="node" />
2
- import { Pool, PoolConfig } from 'pg';
3
- import { IncomingMessage, ServerResponse } from 'http';
4
- import { GraphQLSchema } from 'graphql';
5
- import { EventEmitter } from 'events';
6
- import { PostGraphileOptions, HttpRequestHandler } from '../interfaces';
7
- import { ShutdownActions } from './shutdownActions';
8
- export interface PostgraphileSchemaBuilder<Request extends IncomingMessage = IncomingMessage, Response extends ServerResponse = ServerResponse> {
9
- _emitter: EventEmitter;
10
- getGraphQLSchema: () => Promise<GraphQLSchema>;
11
- options: PostGraphileOptions<Request, Response>;
12
- }
13
- /**
14
- * Creates a PostGraphile Http request handler by first introspecting the
15
- * database to get a GraphQL schema, and then using that to create the Http
16
- * request handler.
17
- */
18
- export declare function getPostgraphileSchemaBuilder<Request extends IncomingMessage = IncomingMessage, Response extends ServerResponse = ServerResponse>(pgPool: Pool, schema: string | Array<string>, incomingOptions: PostGraphileOptions<Request, Response>, shutdownActions?: ShutdownActions): PostgraphileSchemaBuilder;
19
- export default function postgraphile<Request extends IncomingMessage = IncomingMessage, Response extends ServerResponse = ServerResponse>(poolOrConfig?: Pool | PoolConfig | string, schema?: string | Array<string>, options?: PostGraphileOptions<Request, Response>): HttpRequestHandler;
20
- export default function postgraphile<Request extends IncomingMessage = IncomingMessage, Response extends ServerResponse = ServerResponse>(poolOrConfig?: Pool | PoolConfig | string, options?: PostGraphileOptions<Request, Response>): HttpRequestHandler;
@@ -1,337 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getPostgraphileSchemaBuilder = void 0;
4
- const pg_1 = require("pg");
5
- const graphql_1 = require("graphql");
6
- const events_1 = require("events");
7
- const postgraphile_core_1 = require("postgraphile-core");
8
- const createPostGraphileHttpRequestHandler_1 = require("./http/createPostGraphileHttpRequestHandler");
9
- const exportPostGraphileSchema_1 = require("./schema/exportPostGraphileSchema");
10
- const pluginHook_1 = require("./pluginHook");
11
- const chalk_1 = require("chalk");
12
- const withPostGraphileContext_1 = require("./withPostGraphileContext");
13
- const shutdownActions_1 = require("./shutdownActions");
14
- const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
15
- // tslint:disable-next-line no-any
16
- function isPlainObject(obj) {
17
- if (!obj || typeof obj !== 'object' || String(obj) !== '[object Object]')
18
- return false;
19
- const proto = Object.getPrototypeOf(obj);
20
- if (proto === null || proto === Object.prototype) {
21
- return true;
22
- }
23
- return false;
24
- }
25
- /**
26
- * Creates a PostGraphile Http request handler by first introspecting the
27
- * database to get a GraphQL schema, and then using that to create the Http
28
- * request handler.
29
- */
30
- function getPostgraphileSchemaBuilder(pgPool, schema, incomingOptions, shutdownActions = new shutdownActions_1.ShutdownActions()) {
31
- if (incomingOptions.live && incomingOptions.subscriptions == null) {
32
- // live implies subscriptions
33
- incomingOptions.subscriptions = true;
34
- }
35
- const pluginHook = pluginHook_1.pluginHookFromOptions(incomingOptions);
36
- const options = pluginHook('postgraphile:options', incomingOptions, {
37
- pgPool,
38
- schema,
39
- });
40
- // Check for a jwtSecret without a jwtPgTypeIdentifier
41
- // a secret without a token identifier prevents JWT creation
42
- if (options.jwtSecret && !options.jwtPgTypeIdentifier) {
43
- // tslint:disable-next-line no-console
44
- console.warn('WARNING: jwtSecret provided, however jwtPgTypeIdentifier (token identifier) not provided.');
45
- }
46
- if (options.handleErrors && (options.extendedErrors || options.showErrorStack)) {
47
- throw new Error(`You cannot combine 'handleErrors' with the other error options`);
48
- }
49
- // Creates the Postgres schemas array.
50
- const pgSchemas = Array.isArray(schema) ? schema : [schema];
51
- const _emitter = options['_emitter'] || new events_1.EventEmitter();
52
- // Creates a promise which will resolve to a GraphQL schema. Connects a
53
- // client from our pool to introspect the database.
54
- //
55
- // This is not a constant because when we are in watch mode, we want to swap
56
- // out the `gqlSchema`.
57
- let gqlSchema;
58
- const gqlSchemaPromise = createGqlSchema();
59
- return {
60
- _emitter,
61
- getGraphQLSchema: () => (gqlSchema ? Promise.resolve(gqlSchema) : gqlSchemaPromise),
62
- options,
63
- };
64
- async function createGqlSchema() {
65
- let attempts = 0;
66
- let isShuttingDown = false;
67
- shutdownActions.add(async () => {
68
- isShuttingDown = true;
69
- });
70
- /*
71
- * This function should be called after every `await` in the try{} block
72
- * below so that if a shutdown occurs whilst we're awaiting something else
73
- * we immediately clean up.
74
- */
75
- const assertAlive = () => {
76
- if (isShuttingDown) {
77
- throw Object.assign(new Error('PostGraphile is shutting down'), { isShutdownAction: true });
78
- }
79
- };
80
- // If we're in watch mode, cancel watch mode on shutdown
81
- let releaseWatchFnPromise = null;
82
- shutdownActions.add(async () => {
83
- if (releaseWatchFnPromise) {
84
- try {
85
- const releaseWatchFn = await releaseWatchFnPromise;
86
- await releaseWatchFn();
87
- }
88
- catch (e) {
89
- // Ignore errors during shutdown.
90
- }
91
- }
92
- });
93
- // If the server shuts down, make sure the schema has resolved or
94
- // rejected before signaling shutdown is complete. If it rejected,
95
- // don't propagate the error.
96
- let gqlSchemaPromise = null;
97
- shutdownActions.add(async () => {
98
- if (gqlSchemaPromise) {
99
- await gqlSchemaPromise.catch(() => null);
100
- }
101
- });
102
- // eslint-disable-next-line no-constant-condition
103
- while (true) {
104
- assertAlive();
105
- try {
106
- if (options.watchPg) {
107
- // We must register the value used by the shutdown action immediately to avoid a race condition.
108
- releaseWatchFnPromise = postgraphile_core_1.watchPostGraphileSchema(pgPool, pgSchemas, options, newSchema => {
109
- gqlSchema = newSchema;
110
- _emitter.emit('schemas:changed');
111
- exportGqlSchema(gqlSchema);
112
- });
113
- // Wait for the watch to be set up before progressing.
114
- await releaseWatchFnPromise;
115
- assertAlive();
116
- if (!gqlSchema) {
117
- throw new Error("Consistency error: watchPostGraphileSchema promises to call the callback before the promise resolves; but this hasn't happened");
118
- }
119
- }
120
- else {
121
- // We must register the value used by the shutdown action immediately to avoid a race condition.
122
- gqlSchemaPromise = postgraphile_core_1.createPostGraphileSchema(pgPool, pgSchemas, options);
123
- gqlSchema = await gqlSchemaPromise;
124
- assertAlive();
125
- exportGqlSchema(gqlSchema);
126
- }
127
- if (attempts > 0) {
128
- // tslint:disable-next-line no-console
129
- console.error(`Schema ${attempts > 15 ? 'eventually' : attempts > 5 ? 'finally' : 'now'} generated successfully`);
130
- }
131
- return gqlSchema;
132
- }
133
- catch (error) {
134
- releaseWatchFnPromise = null;
135
- gqlSchemaPromise = null;
136
- attempts++;
137
- const delay = Math.min(100 * Math.pow(attempts, 2), 30000);
138
- if (error.isShutdownAction) {
139
- throw error;
140
- }
141
- else if (isShuttingDown) {
142
- console.error('An error occurred whilst building the schema. However, the server was shutting down, which might have caused it.');
143
- console.error(error);
144
- throw error;
145
- }
146
- else if (typeof options.retryOnInitFail === 'function') {
147
- try {
148
- const start = process.hrtime();
149
- const retry = await options.retryOnInitFail(error, attempts);
150
- const diff = process.hrtime(start);
151
- const dur = diff[0] * 1e3 + diff[1] * 1e-6;
152
- if (isShuttingDown) {
153
- throw error;
154
- }
155
- else if (!retry) {
156
- // Trigger a shutdown, and swallow any new errors so old error is still thrown
157
- await shutdownActions.invokeAll().catch(e => {
158
- console.error('An additional error occured whilst calling shutdownActions.invokeAll():');
159
- console.error(e);
160
- });
161
- throw error;
162
- }
163
- else {
164
- if (dur < 50) {
165
- // retryOnInitFail didn't wait long enough; use default wait.
166
- console.error(`Your retryOnInitFail function should include a delay before resolving; falling back to a ${delay}ms wait (attempts = ${attempts}) to avoid overwhelming the database.`);
167
- await sleep(delay);
168
- }
169
- }
170
- }
171
- catch (e) {
172
- throw Object.defineProperties(new graphql_1.GraphQLError('Failed to initialize GraphQL schema.', undefined, undefined, undefined, undefined, e), {
173
- status: {
174
- value: 503,
175
- enumerable: false,
176
- },
177
- });
178
- }
179
- }
180
- else {
181
- const exitOnFail = !options.retryOnInitFail;
182
- // If we fail to build our schema, log the error and either exit or retry shortly
183
- logSeriousError(error, 'building the initial schema' + (attempts > 1 ? ` (attempt ${attempts})` : ''), exitOnFail
184
- ? 'Exiting because `retryOnInitFail` is not set.'
185
- : `We'll try again in ${delay}ms.`);
186
- if (exitOnFail) {
187
- process.exit(34);
188
- }
189
- // Retry shortly
190
- await sleep(delay);
191
- }
192
- }
193
- }
194
- }
195
- async function exportGqlSchema(newGqlSchema) {
196
- try {
197
- await exportPostGraphileSchema_1.default(newGqlSchema, options);
198
- }
199
- catch (error) {
200
- // If we exit cleanly; let calling scripts know there was a problem.
201
- process.exitCode = 35;
202
- // If we fail to export our schema, log the error.
203
- logSeriousError(error, 'exporting the schema');
204
- }
205
- }
206
- }
207
- exports.getPostgraphileSchemaBuilder = getPostgraphileSchemaBuilder;
208
- function postgraphile(poolOrConfig, schemaOrOptions, maybeOptions) {
209
- let schema;
210
- // These are the raw options we're passed in; getPostgraphileSchemaBuilder
211
- // must process them with `pluginHook` before we can rely on them.
212
- let incomingOptions;
213
- // If the second argument is a string or array, it is the schemas so set the
214
- // `schema` value and try to use the third argument (or a default) for
215
- // `incomingOptions`.
216
- if (typeof schemaOrOptions === 'string' || Array.isArray(schemaOrOptions)) {
217
- schema = schemaOrOptions;
218
- incomingOptions = maybeOptions || {};
219
- }
220
- // If the second argument is null or an object then use default `schema`
221
- // and set incomingOptions to second or third argument (or default).
222
- else if (typeof schemaOrOptions === 'object') {
223
- schema = 'public';
224
- incomingOptions = schemaOrOptions || maybeOptions || {};
225
- }
226
- // Otherwise if the second argument is present it's invalid: throw an error.
227
- else if (arguments.length > 1) {
228
- throw new Error('The second argument to postgraphile was invalid... did you mean to set a schema?');
229
- }
230
- // No schema or options specified, use defaults.
231
- else {
232
- schema = 'public';
233
- incomingOptions = {};
234
- }
235
- if (typeof poolOrConfig === 'undefined' && arguments.length >= 1) {
236
- throw new Error('The first argument to postgraphile was `undefined`... did you mean to set pool options?');
237
- }
238
- const shutdownActions = new shutdownActions_1.ShutdownActions();
239
- // Do some things with `poolOrConfig` so that in the end, we actually get a
240
- // Postgres pool.
241
- const { pgPool, releasePgPool } = toPgPool(poolOrConfig);
242
- if (releasePgPool) {
243
- shutdownActions.add(releasePgPool);
244
- }
245
- pgPool.on('error', err => {
246
- /*
247
- * This handler is required so that client connection errors don't bring
248
- * the server down (via `unhandledError`).
249
- *
250
- * `pg` will automatically terminate the client and remove it from the
251
- * pool, so we don't actually need to take any action here, just ensure
252
- * that the event listener is registered.
253
- */
254
- // tslint:disable-next-line no-console
255
- console.error('PostgreSQL client generated error: ', err.message);
256
- });
257
- pgPool.on('connect', pgClient => {
258
- // Enhance our Postgres client with debugging stuffs.
259
- withPostGraphileContext_1.debugPgClient(pgClient, !!options.allowExplain);
260
- });
261
- const { getGraphQLSchema, options, _emitter } = getPostgraphileSchemaBuilder(pgPool, schema, incomingOptions, shutdownActions);
262
- return createPostGraphileHttpRequestHandler_1.default({
263
- ...(typeof poolOrConfig === 'string' ? { ownerConnectionString: poolOrConfig } : {}),
264
- ...options,
265
- getGqlSchema: getGraphQLSchema,
266
- pgPool,
267
- _emitter,
268
- shutdownActions,
269
- });
270
- }
271
- exports.default = postgraphile;
272
- function logSeriousError(error, when, nextSteps) {
273
- // tslint:disable-next-line no-console
274
- console.error(`A ${chalk_1.default.bold('serious error')} occurred when ${chalk_1.default.bold(when)}. ${nextSteps ? nextSteps + ' ' : ''}Error details:\n\n${error.stack}\n`);
275
- }
276
- function hasPoolConstructor(obj) {
277
- return (
278
- // tslint:disable-next-line no-any
279
- (obj && typeof obj.constructor === 'function' && obj.constructor === pg_1.Pool.super_) ||
280
- false);
281
- }
282
- function constructorName(obj) {
283
- return ((obj &&
284
- typeof obj.constructor === 'function' &&
285
- obj.constructor.name &&
286
- String(obj.constructor.name)) ||
287
- null);
288
- }
289
- // tslint:disable-next-line no-any
290
- function toPgPool(poolOrConfig) {
291
- if (quacksLikePgPool(poolOrConfig)) {
292
- // If it is already a `Pool`, just use it.
293
- return { pgPool: poolOrConfig, releasePgPool: null };
294
- }
295
- if (typeof poolOrConfig === 'string') {
296
- // If it is a string, let us parse it to get a config to create a `Pool`.
297
- const pgPool = new pg_1.Pool({ connectionString: poolOrConfig });
298
- return { pgPool, releasePgPool: () => pgPool.end() };
299
- }
300
- else if (!poolOrConfig) {
301
- // Use an empty config and let the defaults take over.
302
- const pgPool = new pg_1.Pool({});
303
- return { pgPool, releasePgPool: () => pgPool.end() };
304
- }
305
- else if (isPlainObject(poolOrConfig)) {
306
- // The user handed over a configuration object, pass it through
307
- const pgPool = new pg_1.Pool(poolOrConfig);
308
- return { pgPool, releasePgPool: () => pgPool.end() };
309
- }
310
- else {
311
- throw new Error('Invalid connection string / Pool ');
312
- }
313
- }
314
- // tslint:disable-next-line no-any
315
- function quacksLikePgPool(pgConfig) {
316
- if (pgConfig instanceof pg_1.Pool)
317
- return true;
318
- if (hasPoolConstructor(pgConfig))
319
- return true;
320
- // A diagnosis of exclusion
321
- if (!pgConfig || typeof pgConfig !== 'object')
322
- return false;
323
- if (constructorName(pgConfig) !== 'Pool' && constructorName(pgConfig) !== 'BoundPool')
324
- return false;
325
- if (!pgConfig['Client'])
326
- return false;
327
- if (!pgConfig['options'])
328
- return false;
329
- if (typeof pgConfig['connect'] !== 'function')
330
- return false;
331
- if (typeof pgConfig['end'] !== 'function')
332
- return false;
333
- if (typeof pgConfig['query'] !== 'function')
334
- return false;
335
- return true;
336
- }
337
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdGdyYXBoaWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Bvc3RncmFwaGlsZS9wb3N0Z3JhcGhpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkJBQXNDO0FBRXRDLHFDQUFzRDtBQUN0RCxtQ0FBc0M7QUFDdEMseURBQXNGO0FBQ3RGLHNHQUErRjtBQUMvRixnRkFBeUU7QUFDekUsNkNBQXFEO0FBRXJELGlDQUEwQjtBQUMxQix1RUFBMEQ7QUFDMUQsdURBQW9EO0FBRXBELE1BQU0sS0FBSyxHQUFHLENBQUMsRUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUU5RSxrQ0FBa0M7QUFDbEMsU0FBUyxhQUFhLENBQUMsR0FBUTtJQUM3QixJQUFJLENBQUMsR0FBRyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssaUJBQWlCO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDdkYsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQUU7UUFDaEQsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQVdEOzs7O0dBSUc7QUFDSCxTQUFnQiw0QkFBNEIsQ0FJMUMsTUFBWSxFQUNaLE1BQThCLEVBQzlCLGVBQXVELEVBQ3ZELGtCQUFtQyxJQUFJLGlDQUFlLEVBQUU7SUFFeEQsSUFBSSxlQUFlLENBQUMsSUFBSSxJQUFJLGVBQWUsQ0FBQyxhQUFhLElBQUksSUFBSSxFQUFFO1FBQ2pFLDZCQUE2QjtRQUM3QixlQUFlLENBQUMsYUFBYSxHQUFHLElBQUksQ0FB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
@@ -1,2 +0,0 @@
1
- declare const config: any;
2
- export default config;
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- // tslint:disable no-console
4
- let postgraphileRCFile = null;
5
- try {
6
- postgraphileRCFile = require.resolve(process.cwd() + '/.postgraphilerc');
7
- }
8
- catch (e) {
9
- // No postgraphileRC; carry on
10
- }
11
- const config = postgraphileRCFile ? require(postgraphileRCFile) : {}; // tslint:disable-line no-var-requires
12
- if (postgraphileRCFile && !Object.prototype.hasOwnProperty.call(config, 'options')) {
13
- console.warn('WARNING: Your configuration file does not export any options');
14
- }
15
- exports.default = config;
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdGdyYXBoaWxlcmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcG9zdGdyYXBoaWxlL3Bvc3RncmFwaGlsZXJjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNEJBQTRCO0FBQzVCLElBQUksa0JBQWtCLEdBQWtCLElBQUksQ0FBQztBQUM3QyxJQUFJO0lBQ0Ysa0JBQWtCLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztDQUMxRTtBQUFDLE9BQU8sQ0FBQyxFQUFFO0lBQ1YsOEJBQThCO0NBQy9CO0FBRUQsTUFBTSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxzQ0FBc0M7QUFDNUcsSUFBSSxrQkFBa0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLEVBQUU7SUFDbEYsT0FBTyxDQUFDLElBQUksQ0FBQyw4REFBOEQsQ0FBQyxDQUFDO0NBQzlFO0FBRUQsa0JBQWUsTUFBTSxDQUFDIn0=
@@ -1,6 +0,0 @@
1
- import { GraphQLSchema } from 'graphql';
2
- import { PostGraphileOptions } from '../../interfaces';
3
- /**
4
- * Exports a PostGraphile schema by looking at a Postgres client.
5
- */
6
- export default function exportPostGraphileSchema(schema: GraphQLSchema, options?: PostGraphileOptions): Promise<void>;
@@ -1,45 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const fs_1 = require("fs");
4
- const graphql_1 = require("graphql");
5
- const GQL = require("graphql");
6
- const util_1 = require("util");
7
- const introspectionQuery = typeof GQL.getIntrospectionQuery === 'function'
8
- ? GQL.getIntrospectionQuery()
9
- : GQL.introspectionQuery;
10
- const readFile = util_1.promisify(fs_1.readFile);
11
- const writeFile = util_1.promisify(fs_1.writeFile);
12
- async function writeFileIfDiffers(path, contents) {
13
- let oldContents = null;
14
- try {
15
- oldContents = await readFile(path, 'utf8');
16
- }
17
- catch (e) {
18
- /* noop */
19
- }
20
- if (oldContents !== contents) {
21
- await writeFile(path, contents);
22
- }
23
- }
24
- /**
25
- * Exports a PostGraphile schema by looking at a Postgres client.
26
- */
27
- async function exportPostGraphileSchema(schema, options = {}) {
28
- const jsonPath = typeof options.exportJsonSchemaPath === 'string' ? options.exportJsonSchemaPath : null;
29
- const graphqlPath = typeof options.exportGqlSchemaPath === 'string' ? options.exportGqlSchemaPath : null;
30
- // Sort schema, if requested
31
- const finalSchema = options.sortExport && graphql_1.lexicographicSortSchema && (jsonPath || graphqlPath)
32
- ? graphql_1.lexicographicSortSchema(schema)
33
- : schema;
34
- // JSON version
35
- if (jsonPath) {
36
- const result = await graphql_1.graphql(finalSchema, introspectionQuery);
37
- await writeFileIfDiffers(jsonPath, JSON.stringify(result, null, 2));
38
- }
39
- // Schema language version
40
- if (graphqlPath) {
41
- await writeFileIfDiffers(graphqlPath, graphql_1.printSchema(finalSchema));
42
- }
43
- }
44
- exports.default = exportPostGraphileSchema;
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0UG9zdEdyYXBoaWxlU2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Bvc3RncmFwaGlsZS9zY2hlbWEvZXhwb3J0UG9zdEdyYXBoaWxlU2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMkJBQTBFO0FBQzFFLHFDQUF1RjtBQUN2RiwrQkFBK0I7QUFFL0IsK0JBQWlDO0FBRWpDLE1BQU0sa0JBQWtCLEdBQ3RCLE9BQU8sR0FBRyxDQUFDLHFCQUFxQixLQUFLLFVBQVU7SUFDN0MsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRTtJQUM3QixDQUFDLENBQUUsR0FBVyxDQUFDLGtCQUFrQixDQUFDO0FBRXRDLE1BQU0sUUFBUSxHQUFHLGdCQUFTLENBQUMsYUFBWSxDQUFDLENBQUM7QUFDekMsTUFBTSxTQUFTLEdBQUcsZ0JBQVMsQ0FBQyxjQUFhLENBQUMsQ0FBQztBQUUzQyxLQUFLLFVBQVUsa0JBQWtCLENBQUMsSUFBWSxFQUFFLFFBQWdCO0lBQzlELElBQUksV0FBVyxHQUFrQixJQUFJLENBQUM7SUFDdEMsSUFBSTtRQUNGLFdBQVcsR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDNUM7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLFVBQVU7S0FDWDtJQUNELElBQUksV0FBVyxLQUFLLFFBQVEsRUFBRTtRQUM1QixNQUFNLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7S0FDakM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDWSxLQUFLLFVBQVUsd0JBQXdCLENBQ3BELE1BQXFCLEVBQ3JCLFVBQStCLEVBQUU7SUFFakMsTUFBTSxRQUFRLEdBQ1osT0FBTyxPQUFPLENBQUMsb0JBQW9CLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN6RixNQUFNLFdBQVcsR0FDZixPQUFPLE9BQU8sQ0FBQyxtQkFBbUIsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBRXZGLDRCQUE0QjtJQUM1QixNQUFNLFdBQVcsR0FDZixPQUFPLENBQUMsVUFBVSxJQUFJLGlDQUF1QixJQUFJLENBQUMsUUFBUSxJQUFJLFdBQVcsQ0FBQztRQUN4RSxDQUFDLENBQUMsaUNBQXVCLENBQUMsTUFBTSxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFFYixlQUFlO0lBQ2YsSUFBSSxRQUFRLEVBQUU7UUFDWixNQUFNLE1BQU0sR0FBRyxNQUFNLGlCQUFPLENBQUMsV0FBVyxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDOUQsTUFBTSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDckU7SUFFRCwwQkFBMEI7SUFDMUIsSUFBSSxXQUFXLEVBQUU7UUFDZixNQUFNLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxxQkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7S0FDakU7QUFDSCxDQUFDO0FBekJELDJDQXlCQyJ9
@@ -1,41 +0,0 @@
1
- export declare type Action = () => void | Promise<void>;
2
- /**
3
- * This class tracks actions that must be taken when PostGraphile is shut down
4
- * (released) in order to make sure that all the resources it has consumed has
5
- * been cleaned up.
6
- *
7
- * Since PostGraphile is extensible via plugins and plugins may have their own
8
- * shutdown actions we use this generic system to handle them all. If your
9
- * plugin sets up something that would keep running after PostGraphile is
10
- * `.release()`d (such as a timer, interval, network connection, filesystem
11
- * monitoring, or similar activity) then you should register an action via
12
- * `shutdownActions` to clean it up.
13
- *
14
- * This class currently has "experimental" status, it may have breaking
15
- * changes in future semver minor releases.
16
- */
17
- export declare class ShutdownActions {
18
- private actions;
19
- private didInvoke;
20
- /**
21
- * Register a function to be called when PostGraphile is released.
22
- */
23
- add(action: Action): void;
24
- /**
25
- * If your action is no longer relevant (for example it has completed, or it
26
- * was only relevant whilst in a particular mode) then be sure to remove it so
27
- * it won't be called when PostGraphile is released.
28
- */
29
- remove(action: Action): void;
30
- /**
31
- * Calls the release actions in reverse order and returns the array of resulting
32
- * promises/results. Will not throw unless the shutdown actions have already
33
- * been invoked.
34
- */
35
- invoke(): Array<Promise<void> | void>;
36
- /**
37
- * Calls all the release actions and resolves when complete (rejecting if an
38
- * error occurred).
39
- */
40
- invokeAll(): Promise<void>;
41
- }