postgraphile 4.13.0 → 5.0.0-0.10

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 +118 -0
  2. package/LICENSE.md +15 -20
  3. package/README.md +15 -170
  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 +199 -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 +79 -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 -163
  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 -976
  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 -411
  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 -163
  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 -984
  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 -410
  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 -151
package/dist/index.js ADDED
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.postgraphile = exports.makeSchema = exports.makePgSources = void 0;
4
+ // Copy the types through for our dependents
5
+ require("graphile-build");
6
+ require("graphile-build-pg");
7
+ const grafast_1 = require("grafast");
8
+ const graphile_config_1 = require("graphile-config");
9
+ const schema_js_1 = require("./schema.js");
10
+ var schema_js_2 = require("./schema.js");
11
+ Object.defineProperty(exports, "makePgSources", { enumerable: true, get: function () { return schema_js_2.makePgSources; } });
12
+ Object.defineProperty(exports, "makeSchema", { enumerable: true, get: function () { return schema_js_2.makeSchema; } });
13
+ function postgraphile(preset) {
14
+ const config = (0, graphile_config_1.resolvePresets)([preset]);
15
+ let serverParams;
16
+ let stopWatchingPromise = null;
17
+ if (config.server?.watch) {
18
+ serverParams = (0, grafast_1.defer)();
19
+ stopWatchingPromise = (0, schema_js_1.watchSchema)(preset, (error, newParams) => {
20
+ if (error || !newParams) {
21
+ console.error("Watch error: ", error);
22
+ return;
23
+ }
24
+ const oldServerParams = serverParams;
25
+ serverParams = newParams;
26
+ if (oldServerParams !== null &&
27
+ "resolve" in oldServerParams &&
28
+ typeof oldServerParams.resolve === "function") {
29
+ oldServerParams.resolve(serverParams);
30
+ }
31
+ if (server) {
32
+ server.setParams(serverParams);
33
+ }
34
+ });
35
+ }
36
+ else {
37
+ serverParams = (0, schema_js_1.makeSchema)(preset);
38
+ }
39
+ let server;
40
+ let released = false;
41
+ function assertAlive() {
42
+ if (released) {
43
+ throw new Error(`PostGraphile instance has been released`);
44
+ }
45
+ }
46
+ return {
47
+ async getGrafserv() {
48
+ assertAlive();
49
+ if (!server) {
50
+ const { grafserv } = await import("grafserv");
51
+ server = grafserv(config, serverParams);
52
+ server.onRelease(() => {
53
+ if (!released) {
54
+ throw new Error(`Grafserv instance released before PostGraphile instance; this is forbidden.`);
55
+ }
56
+ });
57
+ }
58
+ return server;
59
+ },
60
+ async getServerParams() {
61
+ assertAlive();
62
+ return serverParams;
63
+ },
64
+ async getSchema() {
65
+ assertAlive();
66
+ return (await serverParams).schema;
67
+ },
68
+ async release() {
69
+ assertAlive();
70
+ released = true;
71
+ if (server) {
72
+ await server.release();
73
+ }
74
+ if (stopWatchingPromise) {
75
+ try {
76
+ const cb = await stopWatchingPromise;
77
+ cb();
78
+ }
79
+ catch (e) {
80
+ /* nom nom nom */
81
+ }
82
+ }
83
+ },
84
+ };
85
+ }
86
+ exports.postgraphile = postgraphile;
87
+ exports.default = postgraphile;
88
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,4CAA4C;AAC5C,0BAAwB;AACxB,6BAA2B;AAG3B,qCAAgC;AAGhC,qDAAiD;AAGjD,2CAAsD;AAEtD,yCAAwD;AAA/C,0GAAA,aAAa,OAAA;AAAE,uGAAA,UAAU,OAAA;AAIlC,SAAgB,YAAY,CAAC,MAA6B;IAMxD,MAAM,MAAM,GAAG,IAAA,gCAAc,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACxC,IAAI,YAGY,CAAC;IACjB,IAAI,mBAAmB,GAA+B,IAAI,CAAC;IAC3D,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE;QACxB,YAAY,GAAG,IAAA,eAAK,GAAgB,CAAC;QACrC,mBAAmB,GAAG,IAAA,uBAAW,EAAC,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YAC7D,IAAI,KAAK,IAAI,CAAC,SAAS,EAAE;gBACvB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;gBACtC,OAAO;aACR;YACD,MAAM,eAAe,GAAG,YAAY,CAAC;YACrC,YAAY,GAAG,SAAS,CAAC;YACzB,IACE,eAAe,KAAK,IAAI;gBACxB,SAAS,IAAI,eAAe;gBAC5B,OAAO,eAAe,CAAC,OAAO,KAAK,UAAU,EAC7C;gBACA,eAAe,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;aACvC;YACD,IAAI,MAAM,EAAE;gBACV,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;aAChC;QACH,CAAC,CAAC,CAAC;KACJ;SAAM;QACL,YAAY,GAAG,IAAA,sBAAU,EAAC,MAAM,CAAC,CAAC;KACnC;IACD,IAAI,MAA4B,CAAC;IAEjC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,SAAS,WAAW;QAClB,IAAI,QAAQ,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;SAC5D;IACH,CAAC;IAED,OAAO;QACL,KAAK,CAAC,WAAW;YACf,WAAW,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;gBAE9C,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;gBACxC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE;oBACpB,IAAI,CAAC,QAAQ,EAAE;wBACb,MAAM,IAAI,KAAK,CACb,6EAA6E,CAC9E,CAAC;qBACH;gBACH,CAAC,CAAC,CAAC;aACJ;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,KAAK,CAAC,eAAe;YACnB,WAAW,EAAE,CAAC;YACd,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,KAAK,CAAC,SAAS;YACb,WAAW,EAAE,CAAC;YACd,OAAO,CAAC,MAAM,YAAY,CAAC,CAAC,MAAM,CAAC;QACrC,CAAC;QACD,KAAK,CAAC,OAAO;YACX,WAAW,EAAE,CAAC;YACd,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,MAAM,EAAE;gBACV,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;aACxB;YACD,IAAI,mBAAmB,EAAE;gBACvB,IAAI;oBACF,MAAM,EAAE,GAAG,MAAM,mBAAmB,CAAC;oBACrC,EAAE,EAAE,CAAC;iBACN;gBAAC,OAAO,CAAC,EAAE;oBACV,iBAAiB;iBAClB;aACF;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AArFD,oCAqFC;AAED,kBAAe,YAAY,CAAC"}
@@ -0,0 +1,11 @@
1
+ import "graphile-config";
2
+ import "graphile-build-pg";
3
+ declare global {
4
+ namespace GraphileConfig {
5
+ interface GatherHelpers {
6
+ pgV4SmartTags: Record<string, never>;
7
+ }
8
+ }
9
+ }
10
+ export declare const PgV4BehaviorPlugin: GraphileConfig.Plugin;
11
+ //# sourceMappingURL=PgV4BehaviorPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PgV4BehaviorPlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/PgV4BehaviorPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,CAAC;AACzB,OAAO,mBAAmB,CAAC;AAM3B,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,cAAc,CAAC;QACvB,UAAU,aAAa;YACrB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;SACtC;KACF;CACF;AAsBD,eAAO,MAAM,kBAAkB,EAAE,cAAc,CAAC,MAyD/C,CAAC"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PgV4BehaviorPlugin = void 0;
4
+ require("graphile-config");
5
+ require("graphile-build-pg");
6
+ const util_1 = require("util");
7
+ const v4ComputedColumnChecks = (s, pgProc) => {
8
+ const args = pgProc.getArguments();
9
+ const firstArg = args[0];
10
+ // Has to be in same schema
11
+ if (firstArg.type.typnamespace !== pgProc.pronamespace) {
12
+ return false;
13
+ }
14
+ // Has to start with the name prefix
15
+ if (!pgProc.proname.startsWith(firstArg.type.typname + "_")) {
16
+ return false;
17
+ }
18
+ return true;
19
+ };
20
+ exports.PgV4BehaviorPlugin = {
21
+ name: "PgV4BehaviorPlugin",
22
+ description: "For compatibility with PostGraphile v4 schemas, this plugin updates the default behaviors of certain things.",
23
+ version: "0.0.0",
24
+ gather: {
25
+ hooks: {
26
+ pgProcedures_PgSource(info, event) {
27
+ const { source: s } = event;
28
+ // Apply default behavior
29
+ const behavior = [];
30
+ const firstParameter = s.parameters[0];
31
+ if (s.isMutation && s.parameters) {
32
+ behavior.push("-queryField mutationField -typeField");
33
+ }
34
+ else if (s.parameters &&
35
+ s.parameters?.[0]?.codec?.columns &&
36
+ !s.isMutation &&
37
+ v4ComputedColumnChecks(s, event.pgProc)) {
38
+ behavior.push("-queryField -mutationField typeField");
39
+ }
40
+ else if (!s.isMutation &&
41
+ s.parameters &&
42
+ // Don't default to this being a queryField if it looks like a computed column function
43
+ (!firstParameter?.codec?.columns ||
44
+ firstParameter?.codec?.extensions?.isTableLike === false)) {
45
+ behavior.push("queryField -mutationField -typeField");
46
+ }
47
+ else {
48
+ behavior.push("-queryField -mutationField -typeField");
49
+ }
50
+ if (!s.extensions) {
51
+ s.extensions = Object.create(null);
52
+ }
53
+ if (!s.extensions.tags) {
54
+ s.extensions.tags = Object.create(null);
55
+ }
56
+ const b = s.extensions.tags.behavior;
57
+ if (!b) {
58
+ s.extensions.tags.behavior = behavior;
59
+ }
60
+ else if (typeof b === "string") {
61
+ s.extensions.tags.behavior = [...behavior, b];
62
+ }
63
+ else if (Array.isArray(b)) {
64
+ s.extensions.tags.behavior = [...behavior, ...b];
65
+ }
66
+ else {
67
+ throw new Error(`${s}.extensions.tags.behavior has unknown shape '${(0, util_1.inspect)(b)}'`);
68
+ }
69
+ },
70
+ },
71
+ },
72
+ };
73
+ //# sourceMappingURL=PgV4BehaviorPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PgV4BehaviorPlugin.js","sourceRoot":"","sources":["../../src/plugins/PgV4BehaviorPlugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import "graphile-config";
2
+ import "graphile-build-pg";
3
+ declare global {
4
+ namespace GraphileConfig {
5
+ interface GatherHelpers {
6
+ pgV4SmartTags: Record<string, never>;
7
+ }
8
+ }
9
+ }
10
+ export declare const PgV4InflectionPlugin: GraphileConfig.Plugin;
11
+ //# sourceMappingURL=PgV4InflectionPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PgV4InflectionPlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/PgV4InflectionPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,CAAC;AACzB,OAAO,mBAAmB,CAAC;AAE3B,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,cAAc,CAAC;QACvB,UAAU,aAAa;YACrB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;SACtC;KACF;CACF;AAED,eAAO,MAAM,oBAAoB,EAAE,cAAc,CAAC,MAwFjD,CAAC"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PgV4InflectionPlugin = void 0;
4
+ require("graphile-config");
5
+ require("graphile-build-pg");
6
+ exports.PgV4InflectionPlugin = {
7
+ name: "PgV4InflectionPlugin",
8
+ description: "For compatibility with PostGraphile v4 schemas, this plugin emulates the default version 4 inflectors",
9
+ version: "0.0.0",
10
+ inflection: {
11
+ ignoreReplaceIfNotExists: ["deletedNodeId"],
12
+ replace: {
13
+ _schemaPrefix() {
14
+ return ``;
15
+ },
16
+ enumValue(previous, options, value, codec) {
17
+ const oldValue = previous.call(this, value, codec);
18
+ return this.coerceToGraphQLName(this.constantCase(oldValue));
19
+ },
20
+ _columnName(previous, options, details) {
21
+ const { codec, columnName } = details;
22
+ const column = codec.columns[columnName];
23
+ if (!column) {
24
+ throw new Error(`Attempted to access column '${columnName}' of codec '${codec.name}', but it doesn't have that column (known columns: ${Object.keys(codec.columns).join(", ")})`);
25
+ }
26
+ if (column.extensions?.argIndex != null && !column.extensions.argName) {
27
+ return `arg${column.extensions.argIndex + 1}`;
28
+ }
29
+ return previous.call(this, details);
30
+ },
31
+ functionMutationResultFieldName(previous, options, details) {
32
+ const { source, returnGraphQLTypeName } = details;
33
+ if (source.extensions?.tags?.resultFieldName) {
34
+ return source.extensions.tags.resultFieldName;
35
+ }
36
+ let name;
37
+ if (source.extensions?.singleOutputParameterName) {
38
+ name = this.camelCase(source.extensions.singleOutputParameterName);
39
+ }
40
+ else if (returnGraphQLTypeName === "Int") {
41
+ name = "integer";
42
+ }
43
+ else if (returnGraphQLTypeName === "Float") {
44
+ name = "float";
45
+ }
46
+ else if (returnGraphQLTypeName === "Boolean") {
47
+ name = "boolean";
48
+ }
49
+ else if (returnGraphQLTypeName === "String") {
50
+ name = "string";
51
+ }
52
+ else if (source.codec.isAnonymous) {
53
+ // returns a record type
54
+ name = "result";
55
+ }
56
+ else {
57
+ name = this.camelCase(returnGraphQLTypeName);
58
+ }
59
+ const plural = !source.isUnique || !!source.codec.arrayOfCodec;
60
+ return plural ? this.pluralize(name) : name;
61
+ },
62
+ deletedNodeId(previous, options, { source }) {
63
+ // Silly V4 behavior
64
+ return this.camelCase(`deleted-${this.singularize(source.extensions?.tags?.originalName ?? this._sourceName(source))}-id`);
65
+ },
66
+ orderByType(previous, options, typeName) {
67
+ return this.upperCamelCase(`${this.pluralize(typeName)}-order-by`);
68
+ },
69
+ tableConnectionType(previous, options, codec) {
70
+ if (codec.isAnonymous) {
71
+ return this.connectionType(this.tableType(codec));
72
+ }
73
+ else {
74
+ return this.connectionType(this.pluralize(this.tableType(codec)));
75
+ }
76
+ },
77
+ tableEdgeField(previous, options, codec) {
78
+ return this.camelCase(`${this.tableType(codec)}-edge`);
79
+ },
80
+ tableEdgeType(previous, options, codec) {
81
+ if (codec.isAnonymous) {
82
+ return this.edgeType(this.tableType(codec));
83
+ }
84
+ else {
85
+ return this.edgeType(this.pluralize(this.tableType(codec)));
86
+ }
87
+ },
88
+ },
89
+ },
90
+ };
91
+ //# sourceMappingURL=PgV4InflectionPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PgV4InflectionPlugin.js","sourceRoot":"","sources":["../../src/plugins/PgV4InflectionPlugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const PgV4NoIgnoreIndexesPlugin: GraphileConfig.Plugin;
2
+ //# sourceMappingURL=PgV4NoIgnoreIndexes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PgV4NoIgnoreIndexes.d.ts","sourceRoot":"","sources":["../../src/plugins/PgV4NoIgnoreIndexes.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC,MA6EtD,CAAC"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PgV4NoIgnoreIndexesPlugin = void 0;
4
+ const graphile_build_pg_1 = require("graphile-build-pg");
5
+ exports.PgV4NoIgnoreIndexesPlugin = {
6
+ name: "PgV4NoIgnoreIndexesPlugin",
7
+ version: "0.0.0",
8
+ gather: {
9
+ hooks: {
10
+ pgRelations_relation(info, event) {
11
+ const { relation, pgConstraint } = event;
12
+ if (pgConstraint._id.startsWith("FAKE_")) {
13
+ // Pretend fake constraints are indexed.
14
+ return;
15
+ }
16
+ // If it's not indexed, remove the list/connection behaviors
17
+ if (relation.isReferencee) {
18
+ const referencedColumns = pgConstraint
19
+ .getAttributes()
20
+ .map((att) => att.attname);
21
+ const remoteIndexes = pgConstraint
22
+ .getClass()
23
+ .getIndexes()
24
+ .filter((idx) => !idx.indpred);
25
+ const isIndexed = remoteIndexes.some((idx) => {
26
+ const cols = idx.getKeys();
27
+ if (cols.length < referencedColumns.length) {
28
+ return false;
29
+ }
30
+ const firstColNames = cols
31
+ .slice(0, referencedColumns.length)
32
+ .map((k) => k?.attname);
33
+ return referencedColumns.every((key) => firstColNames.includes(key));
34
+ });
35
+ if (!isIndexed) {
36
+ if (!relation.extensions) {
37
+ relation.extensions = { tags: Object.create(null) };
38
+ }
39
+ if (!relation.extensions.tags) {
40
+ relation.extensions.tags = Object.create(null);
41
+ }
42
+ (0, graphile_build_pg_1.addBehaviorToTags)(relation.extensions.tags, "-list -connection -single -manyToMany");
43
+ }
44
+ }
45
+ },
46
+ pgCodecs_column(info, event) {
47
+ const { column, pgAttribute } = event;
48
+ // If this column isn't indexed, remove the filter and order behaviors
49
+ const isIndexed = pgAttribute
50
+ .getClass()
51
+ .getIndexes()
52
+ .some((idx) => {
53
+ if (idx.indpred) {
54
+ return false;
55
+ }
56
+ const keys = idx.getKeys();
57
+ return keys[0]?.attname === pgAttribute.attname;
58
+ });
59
+ if (!isIndexed) {
60
+ if (!column.extensions) {
61
+ column.extensions = {};
62
+ }
63
+ if (!column.extensions.tags) {
64
+ column.extensions.tags = Object.create(null);
65
+ }
66
+ (0, graphile_build_pg_1.addBehaviorToTags)(column.extensions.tags, "-filterBy -orderBy");
67
+ }
68
+ },
69
+ },
70
+ },
71
+ };
72
+ //# sourceMappingURL=PgV4NoIgnoreIndexes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PgV4NoIgnoreIndexes.js","sourceRoot":"","sources":["../../src/plugins/PgV4NoIgnoreIndexes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import "graphile-config";
2
+ declare global {
3
+ namespace GraphileConfig {
4
+ interface GatherHelpers {
5
+ pgV4SmartTags: Record<string, never>;
6
+ }
7
+ }
8
+ }
9
+ export declare const PgV4SmartTagsPlugin: GraphileConfig.Plugin;
10
+ export default PgV4SmartTagsPlugin;
11
+ //# sourceMappingURL=PgV4SmartTagsPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PgV4SmartTagsPlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/PgV4SmartTagsPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,CAAC;AAMzB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,cAAc,CAAC;QACvB,UAAU,aAAa;YACrB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;SACtC;KACF;CACF;AAED,eAAO,MAAM,mBAAmB,EAAE,cAAc,CAAC,MAqChD,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PgV4SmartTagsPlugin = void 0;
4
+ require("graphile-config");
5
+ const graphile_build_pg_1 = require("graphile-build-pg");
6
+ const util_1 = require("util");
7
+ exports.PgV4SmartTagsPlugin = {
8
+ name: "PgV4SmartTagsPlugin",
9
+ description: "For compatibility with PostGraphile v4 schemas, this plugin attempts to convert various V4 smart tags (`@omit`, etc) and convert them to V5 behaviors",
10
+ version: "0.0.0",
11
+ after: ["PgSmartCommentsPlugin"],
12
+ before: ["PgFakeConstraintsPlugin", "PgEnumTablesPlugin"],
13
+ provides: ["smart-tags"],
14
+ gather: {
15
+ namespace: "pgV4SmartTags",
16
+ helpers: {},
17
+ hooks: {
18
+ // Run in the 'introspection' phase before anything uses the tags
19
+ pgIntrospection_introspection(info, event) {
20
+ const { introspection } = event;
21
+ // Note the code here relies on the fact that `getTagsAndDescription`
22
+ // memoizes because it mutates the return result; if this changes then
23
+ // the code will no longer achieve its goal.
24
+ for (const pgClass of introspection.classes) {
25
+ processTags(pgClass.getTagsAndDescription().tags);
26
+ }
27
+ for (const pgAttr of introspection.attributes) {
28
+ processTags(pgAttr.getTagsAndDescription().tags);
29
+ }
30
+ for (const pgConstraint of introspection.constraints) {
31
+ processTags(pgConstraint.getTagsAndDescription().tags);
32
+ }
33
+ for (const pgProc of introspection.procs) {
34
+ processTags(pgProc.getTagsAndDescription().tags);
35
+ }
36
+ for (const pgType of introspection.types) {
37
+ processTags(pgType.getTagsAndDescription().tags);
38
+ }
39
+ },
40
+ },
41
+ },
42
+ };
43
+ exports.default = exports.PgV4SmartTagsPlugin;
44
+ function processTags(tags) {
45
+ processOmit(tags);
46
+ convertBoolean(tags, "sortable", "orderBy order");
47
+ convertBoolean(tags, "filterable", "filter filterBy");
48
+ convertBoolean(tags, "enum", "enum");
49
+ processSimpleCollections(tags);
50
+ }
51
+ function processSimpleCollections(tags) {
52
+ if (tags?.simpleCollections) {
53
+ switch (tags.simpleCollections) {
54
+ case "omit": {
55
+ (0, graphile_build_pg_1.addBehaviorToTags)(tags, "-list +connection", true);
56
+ break;
57
+ }
58
+ case "both": {
59
+ (0, graphile_build_pg_1.addBehaviorToTags)(tags, "+list +connection", true);
60
+ break;
61
+ }
62
+ case "only": {
63
+ (0, graphile_build_pg_1.addBehaviorToTags)(tags, "+list -connection", true);
64
+ break;
65
+ }
66
+ default: {
67
+ console.warn(`Did not understand @simpleCollections argument '${tags.simpleCollections}'`);
68
+ }
69
+ }
70
+ }
71
+ }
72
+ function convertBoolean(tags, key, behavior) {
73
+ if (tags && tags[key]) {
74
+ (0, graphile_build_pg_1.addBehaviorToTags)(tags, behavior, true);
75
+ }
76
+ }
77
+ function processOmit(tags) {
78
+ const omit = tags?.omit;
79
+ if (!omit) {
80
+ return;
81
+ }
82
+ const behavior = [];
83
+ const processOmit = (omit) => {
84
+ if (omit === true || omit === "*") {
85
+ behavior.push("-*");
86
+ return;
87
+ }
88
+ if (typeof omit !== "string") {
89
+ throw new Error(`Issue in smart tags; expected omit to be true/string/string[], but found something unexpected: ${(0, util_1.inspect)(tags.omit)}`);
90
+ }
91
+ if (omit[0] === ":") {
92
+ // Convert ':' string into longhand
93
+ const letters = omit.slice(1).split("");
94
+ const string = letters
95
+ .map((l) => {
96
+ switch (l) {
97
+ case "C":
98
+ return "create";
99
+ case "R":
100
+ return "read";
101
+ case "U":
102
+ return "update";
103
+ case "D":
104
+ return "delete";
105
+ case "X":
106
+ return "execute";
107
+ case "F":
108
+ return "filter";
109
+ case "O":
110
+ return "order";
111
+ case "A":
112
+ return "all";
113
+ case "M":
114
+ return "many";
115
+ default:
116
+ console.warn(`Abbreviation '${l}' in '@omit' string '${omit}' not recognized.`);
117
+ return l;
118
+ }
119
+ })
120
+ .join(",");
121
+ return processOmit(string);
122
+ }
123
+ const parts = omit.split(",");
124
+ for (const part of parts) {
125
+ switch (part) {
126
+ case "create": {
127
+ behavior.push("-insert");
128
+ break;
129
+ }
130
+ case "read": {
131
+ behavior.push("-select -node");
132
+ break;
133
+ }
134
+ case "update": {
135
+ behavior.push("-update");
136
+ break;
137
+ }
138
+ case "delete": {
139
+ behavior.push("-delete");
140
+ break;
141
+ }
142
+ case "execute": {
143
+ behavior.push("-queryField -mutationField -typeField");
144
+ break;
145
+ }
146
+ case "filter": {
147
+ // TODO: we should figure out which of these to use depending on the circumstance
148
+ behavior.push("-filter -filterBy");
149
+ break;
150
+ }
151
+ case "order": {
152
+ // TODO: we should figure out which of these to use depending on the circumstance
153
+ behavior.push("-order -orderBy");
154
+ break;
155
+ }
156
+ case "all": {
157
+ behavior.push("-query:list -query:connection");
158
+ break;
159
+ }
160
+ case "many": {
161
+ behavior.push("-singularRelation:list -singularRelation:connection -manyRelation:list -manyRelation:connection");
162
+ break;
163
+ }
164
+ case "manyToMany": {
165
+ behavior.push("-manyToMany");
166
+ break;
167
+ }
168
+ case "": {
169
+ // ignore
170
+ break;
171
+ }
172
+ default: {
173
+ // TODO: we should give plugin authors the option of adding other
174
+ // omits here, e.g. `@omit manyToMany`
175
+ console.warn(`Option '${part}' in '@omit' string '${omit}' not recognized; assuming -${part} behavior`);
176
+ behavior.push(`-${part}`);
177
+ break;
178
+ }
179
+ }
180
+ }
181
+ };
182
+ if (Array.isArray(omit)) {
183
+ omit.forEach(processOmit);
184
+ }
185
+ else {
186
+ processOmit(omit);
187
+ }
188
+ (0, graphile_build_pg_1.addBehaviorToTags)(tags, behavior.join(" "), true);
189
+ }
190
+ //# sourceMappingURL=PgV4SmartTagsPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PgV4SmartTagsPlugin.js","sourceRoot":"","sources":["../../src/plugins/PgV4SmartTagsPlugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import "graphile-config";
2
+ export declare const orderedPlugins: GraphileConfig.Preset;
3
+ export declare const postgraphilePresetAmber: GraphileConfig.Preset;
4
+ export default postgraphilePresetAmber;
5
+ //# sourceMappingURL=amber.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amber.d.ts","sourceRoot":"","sources":["../../src/presets/amber.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,CAAC;AAgCzB,eAAO,MAAM,cAAc,EAAE,cAAc,CAAC,MAwB3C,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,cAAc,CAAC,MAGpD,CAAC;AAEF,eAAe,uBAAuB,CAAC"}