graphile-utils 5.0.0-0.28 → 5.0.0-0.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # graphile-utils
2
2
 
3
+ ## 5.0.0-0.29
4
+
5
+ ### Patch Changes
6
+
7
+ - [#223](https://github.com/benjie/postgraphile-private/pull/223)
8
+ [`df8c06657`](https://github.com/benjie/postgraphile-private/commit/df8c06657e6f5a7d1444d86dc32fd750d1433223)
9
+ Thanks [@benjie](https://github.com/benjie)! - `graphile-utils` now includes
10
+ the `makeAddPgTableConditionPlugin` and `makeAddPgTableOrderByPlugin`
11
+ generators, freshly ported from V4. The signatures of these functions has
12
+ changed slightly, but the functionality is broadly the same.
13
+ - Updated dependencies
14
+ [[`4c2b7d1ca`](https://github.com/benjie/postgraphile-private/commit/4c2b7d1ca1afbda1e47da22c346cc3b03d01b7f0),
15
+ [`2abc58cf6`](https://github.com/benjie/postgraphile-private/commit/2abc58cf61e78e77b2ba44a875f0ef5b3f98b245),
16
+ [`c8a56cdc8`](https://github.com/benjie/postgraphile-private/commit/c8a56cdc83390e5735beb9b90f004e7975cab28c),
17
+ [`df8c06657`](https://github.com/benjie/postgraphile-private/commit/df8c06657e6f5a7d1444d86dc32fd750d1433223)]:
18
+ - grafast@0.0.1-0.18
19
+ - graphile-build@5.0.0-0.24
20
+ - graphile-build-pg@5.0.0-0.29
21
+
3
22
  ## 5.0.0-0.28
4
23
 
5
24
  ### Patch Changes
package/dist/index.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  export { EXPORTABLE } from "./exportable.js";
2
2
  export { gql } from "./gql.js";
3
3
  export { makeAddInflectorsPlugin } from "./makeAddInflectorsPlugin.js";
4
+ export { makeAddPgTableConditionPlugin } from "./makeAddPgTableConditionPlugin.js";
5
+ export { makeAddPgTableOrderByPlugin, MakeAddPgTableOrderByPluginOrders, NullsSortMethod, orderByAscDesc, OrderByAscDescOptions, } from "./makeAddPgTableOrderByPlugin.js";
4
6
  export { ChangeNullabilityRules, ChangeNullabilityTypeRules, makeChangeNullabilityPlugin, NullabilitySpec, NullabilitySpecString, } from "./makeChangeNullabilityPlugin.js";
5
7
  export { EnumResolver, ExtensionDefinition, makeExtendSchemaPlugin, ObjectFieldConfig, ObjectPlan, ObjectResolver, Plans, Resolvers, } from "./makeExtendSchemaPlugin.js";
6
8
  export { makeJSONPgSmartTagsPlugin, makePgSmartTagsFromFilePlugin, makePgSmartTagsPlugin, TagsFilePlugin, } from "./makePgSmartTagsPlugin.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,2BAA2B,EAC3B,eAAe,EACf,qBAAqB,GACtB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,KAAK,EACL,SAAS,GACV,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,yBAAyB,EACzB,6BAA6B,EAC7B,qBAAqB,EACrB,cAAc,GACf,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EACL,2BAA2B,EAC3B,iCAAiC,EACjC,eAAe,EACf,cAAc,EACd,qBAAqB,GACtB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,2BAA2B,EAC3B,eAAe,EACf,qBAAqB,GACtB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,KAAK,EACL,SAAS,GACV,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,yBAAyB,EACzB,6BAA6B,EAC7B,qBAAqB,EACrB,cAAc,GACf,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,0BAA0B,CAAC"}
package/dist/index.js CHANGED
@@ -1,12 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeWrapPlansPlugin = exports.makeProcessSchemaPlugin = exports.TagsFilePlugin = exports.makePgSmartTagsPlugin = exports.makePgSmartTagsFromFilePlugin = exports.makeJSONPgSmartTagsPlugin = exports.makeExtendSchemaPlugin = exports.makeChangeNullabilityPlugin = exports.makeAddInflectorsPlugin = exports.gql = exports.EXPORTABLE = void 0;
3
+ exports.makeWrapPlansPlugin = exports.makeProcessSchemaPlugin = exports.TagsFilePlugin = exports.makePgSmartTagsPlugin = exports.makePgSmartTagsFromFilePlugin = exports.makeJSONPgSmartTagsPlugin = exports.makeExtendSchemaPlugin = exports.makeChangeNullabilityPlugin = exports.orderByAscDesc = exports.makeAddPgTableOrderByPlugin = exports.makeAddPgTableConditionPlugin = exports.makeAddInflectorsPlugin = exports.gql = exports.EXPORTABLE = void 0;
4
4
  var exportable_js_1 = require("./exportable.js");
5
5
  Object.defineProperty(exports, "EXPORTABLE", { enumerable: true, get: function () { return exportable_js_1.EXPORTABLE; } });
6
6
  var gql_js_1 = require("./gql.js");
7
7
  Object.defineProperty(exports, "gql", { enumerable: true, get: function () { return gql_js_1.gql; } });
8
8
  var makeAddInflectorsPlugin_js_1 = require("./makeAddInflectorsPlugin.js");
9
9
  Object.defineProperty(exports, "makeAddInflectorsPlugin", { enumerable: true, get: function () { return makeAddInflectorsPlugin_js_1.makeAddInflectorsPlugin; } });
10
+ var makeAddPgTableConditionPlugin_js_1 = require("./makeAddPgTableConditionPlugin.js");
11
+ Object.defineProperty(exports, "makeAddPgTableConditionPlugin", { enumerable: true, get: function () { return makeAddPgTableConditionPlugin_js_1.makeAddPgTableConditionPlugin; } });
12
+ var makeAddPgTableOrderByPlugin_js_1 = require("./makeAddPgTableOrderByPlugin.js");
13
+ Object.defineProperty(exports, "makeAddPgTableOrderByPlugin", { enumerable: true, get: function () { return makeAddPgTableOrderByPlugin_js_1.makeAddPgTableOrderByPlugin; } });
14
+ Object.defineProperty(exports, "orderByAscDesc", { enumerable: true, get: function () { return makeAddPgTableOrderByPlugin_js_1.orderByAscDesc; } });
10
15
  var makeChangeNullabilityPlugin_js_1 = require("./makeChangeNullabilityPlugin.js");
11
16
  Object.defineProperty(exports, "makeChangeNullabilityPlugin", { enumerable: true, get: function () { return makeChangeNullabilityPlugin_js_1.makeChangeNullabilityPlugin; } });
12
17
  var makeExtendSchemaPlugin_js_1 = require("./makeExtendSchemaPlugin.js");
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,iDAA6C;AAApC,2GAAA,UAAU,OAAA;AACnB,mCAA+B;AAAtB,6FAAA,GAAG,OAAA;AACZ,2EAAuE;AAA9D,qIAAA,uBAAuB,OAAA;AAChC,mFAM0C;AAHxC,6IAAA,2BAA2B,OAAA;AAI7B,yEASqC;AANnC,mIAAA,sBAAsB,OAAA;AAOxB,uEAKoC;AAJlC,qIAAA,yBAAyB,OAAA;AACzB,yIAAA,6BAA6B,OAAA;AAC7B,iIAAA,qBAAqB,OAAA;AACrB,0HAAA,cAAc,OAAA;AAEhB,2EAAuE;AAA9D,qIAAA,uBAAuB,OAAA;AAChC,mEAQkC;AAPhC,6HAAA,mBAAmB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,iDAA6C;AAApC,2GAAA,UAAU,OAAA;AACnB,mCAA+B;AAAtB,6FAAA,GAAG,OAAA;AACZ,2EAAuE;AAA9D,qIAAA,uBAAuB,OAAA;AAChC,uFAAmF;AAA1E,iJAAA,6BAA6B,OAAA;AACtC,mFAM0C;AALxC,6IAAA,2BAA2B,OAAA;AAG3B,gIAAA,cAAc,OAAA;AAGhB,mFAM0C;AAHxC,6IAAA,2BAA2B,OAAA;AAI7B,yEASqC;AANnC,mIAAA,sBAAsB,OAAA;AAOxB,uEAKoC;AAJlC,qIAAA,yBAAyB,OAAA;AACzB,yIAAA,6BAA6B,OAAA;AAC7B,iIAAA,qBAAqB,OAAA;AACrB,0HAAA,cAAc,OAAA;AAEhB,2EAAuE;AAA9D,qIAAA,uBAAuB,OAAA;AAChC,mEAQkC;AAPhC,6HAAA,mBAAmB,OAAA"}
@@ -0,0 +1,14 @@
1
+ import type { PgConditionStep, PgSelectStep } from "@dataplan/pg";
2
+ import type { FieldArgs, GraphileInputFieldConfig } from "grafast";
3
+ import type { SQL, sql } from "pg-sql2";
4
+ export declare function makeAddPgTableConditionPlugin(match: {
5
+ databaseName?: string;
6
+ schemaName: string;
7
+ tableName: string;
8
+ }, conditionFieldName: string, conditionFieldSpecGenerator: (build: GraphileBuild.Build) => GraphileInputFieldConfig<any, any, any, any, any>, conditionGenerator?: (value: FieldArgs, helpers: {
9
+ $condition: PgConditionStep<PgSelectStep<any, any, any, any>>;
10
+ sql: typeof sql;
11
+ sqlTableAlias: SQL;
12
+ build: GraphileBuild.Build;
13
+ }) => SQL | null | undefined): GraphileConfig.Plugin;
14
+ //# sourceMappingURL=makeAddPgTableConditionPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeAddPgTableConditionPlugin.d.ts","sourceRoot":"","sources":["../src/makeAddPgTableConditionPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAIxC,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EACvE,kBAAkB,EAAE,MAAM,EAC1B,2BAA2B,EAAE,CAC3B,KAAK,EAAE,aAAa,CAAC,KAAK,KACvB,wBAAwB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACtD,kBAAkB,CAAC,EAAE,CACnB,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE;IACP,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC9D,GAAG,EAAE,OAAO,GAAG,CAAC;IAChB,aAAa,EAAE,GAAG,CAAC;IACnB,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC;CAC5B,KACE,GAAG,GAAG,IAAI,GAAG,SAAS,GAC1B,cAAc,CAAC,MAAM,CAqGvB"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeAddPgTableConditionPlugin = void 0;
4
+ const exportable_js_1 = require("./exportable.js");
5
+ function makeAddPgTableConditionPlugin(match, conditionFieldName, conditionFieldSpecGenerator, conditionGenerator) {
6
+ const { databaseName = "main", schemaName, tableName } = match;
7
+ const displayName = `makeAddPgTableConditionPlugin__${schemaName}__${tableName}__${conditionFieldName}`;
8
+ const plugin = {
9
+ name: displayName,
10
+ version: "0.0.0",
11
+ // Make sure we're loaded before PgConnectionArgOrderBy, otherwise
12
+ // ordering added by conditions will be overridden by the default
13
+ // ordering.
14
+ before: ["PgConnectionArgOrderByPlugin"],
15
+ schema: {
16
+ hooks: {
17
+ build(build) {
18
+ const meta = (build._pluginMeta[displayName] = Object.create(null));
19
+ meta.seen = false;
20
+ return build;
21
+ },
22
+ finalize(schema, build) {
23
+ const meta = build._pluginMeta[displayName];
24
+ if (!meta.seen) {
25
+ // eslint-disable-next-line no-console
26
+ console.error(`WARNING: failed to add condition '${conditionFieldName}' to table "${schemaName}"."${tableName}"; did you get the schema/table name right?`);
27
+ }
28
+ return schema;
29
+ },
30
+ GraphQLInputObjectType_fields(fields, build, context) {
31
+ const { sql } = build;
32
+ const { scope: { isPgCondition, pgCodec: table }, fieldWithHooks, } = context;
33
+ if (!isPgCondition ||
34
+ !table ||
35
+ !table.columns ||
36
+ table.extensions?.pg?.databaseName !== databaseName ||
37
+ table.extensions?.pg?.schemaName !== schemaName ||
38
+ table.extensions?.pg?.name !== tableName) {
39
+ return fields;
40
+ }
41
+ const conditionFieldSpec = conditionFieldSpecGenerator(build);
42
+ if (conditionFieldSpec.applyPlan ||
43
+ conditionFieldSpec.extensions?.graphile?.applyPlan) {
44
+ if (conditionGenerator) {
45
+ throw new Error(`${displayName}: You supplied 'applyPlan' for your field spec, so you cannot also supply a 'conditionGenerator'`);
46
+ }
47
+ // Done.
48
+ }
49
+ else {
50
+ if (!conditionGenerator) {
51
+ throw new Error(`${displayName}: You have not supplied 'applyPlan' for your field spec, nor a 'conditionGenerator', so we don't know what to do with this condition`);
52
+ }
53
+ // build applyPlan
54
+ conditionFieldSpec.applyPlan = (0, exportable_js_1.EXPORTABLE)((build, conditionGenerator, sql) => function applyPlan($condition, val) {
55
+ const expression = conditionGenerator(val, {
56
+ $condition,
57
+ sql,
58
+ sqlTableAlias: $condition.alias,
59
+ build,
60
+ });
61
+ if (expression) {
62
+ $condition.where(expression);
63
+ }
64
+ }, [build, conditionGenerator, sql]);
65
+ }
66
+ const meta = build._pluginMeta[displayName];
67
+ meta.seen = true;
68
+ return build.extend(fields, {
69
+ [conditionFieldName]: fieldWithHooks({
70
+ fieldName: conditionFieldName,
71
+ }, conditionFieldSpec),
72
+ }, `Adding condition from ${displayName}`);
73
+ },
74
+ },
75
+ },
76
+ };
77
+ return plugin;
78
+ }
79
+ exports.makeAddPgTableConditionPlugin = makeAddPgTableConditionPlugin;
80
+ //# sourceMappingURL=makeAddPgTableConditionPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeAddPgTableConditionPlugin.js","sourceRoot":"","sources":["../src/makeAddPgTableConditionPlugin.ts"],"names":[],"mappings":";;;AAIA,mDAA6C;AAE7C,SAAgB,6BAA6B,CAC3C,KAAuE,EACvE,kBAA0B,EAC1B,2BAEsD,EACtD,kBAQ2B;IAE3B,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAC/D,MAAM,WAAW,GAAG,kCAAkC,UAAU,KAAK,SAAS,KAAK,kBAAkB,EAAE,CAAC;IACxG,MAAM,MAAM,GAA0B;QACpC,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,OAAO;QAChB,kEAAkE;QAClE,iEAAiE;QACjE,YAAY;QACZ,MAAM,EAAE,CAAC,8BAA8B,CAAC;QAExC,MAAM,EAAE;YACN,KAAK,EAAE;gBACL,KAAK,CAAC,KAAK;oBACT,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;oBACpE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;oBAClB,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,QAAQ,CAAC,MAAM,EAAE,KAAK;oBACpB,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,WAAW,CAAE,CAAC;oBAC7C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;wBACd,sCAAsC;wBACtC,OAAO,CAAC,KAAK,CACX,qCAAqC,kBAAkB,eAAe,UAAU,MAAM,SAAS,6CAA6C,CAC7I,CAAC;qBACH;oBACD,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAED,6BAA6B,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO;oBAClD,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;oBACtB,MAAM,EACJ,KAAK,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,EACxC,cAAc,GACf,GAAG,OAAO,CAAC;oBACZ,IACE,CAAC,aAAa;wBACd,CAAC,KAAK;wBACN,CAAC,KAAK,CAAC,OAAO;wBACd,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE,YAAY,KAAK,YAAY;wBACnD,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE,UAAU,KAAK,UAAU;wBAC/C,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE,IAAI,KAAK,SAAS,EACxC;wBACA,OAAO,MAAM,CAAC;qBACf;oBACD,MAAM,kBAAkB,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC;oBAC9D,IACE,kBAAkB,CAAC,SAAS;wBAC5B,kBAAkB,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAClD;wBACA,IAAI,kBAAkB,EAAE;4BACtB,MAAM,IAAI,KAAK,CACb,GAAG,WAAW,kGAAkG,CACjH,CAAC;yBACH;wBACD,QAAQ;qBACT;yBAAM;wBACL,IAAI,CAAC,kBAAkB,EAAE;4BACvB,MAAM,IAAI,KAAK,CACb,GAAG,WAAW,sIAAsI,CACrJ,CAAC;yBACH;wBACD,kBAAkB;wBAClB,kBAAkB,CAAC,SAAS,GAAG,IAAA,0BAAU,EACvC,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,EAAE,CACjC,SAAS,SAAS,CAChB,UAA6D,EAC7D,GAAG;4BAEH,MAAM,UAAU,GAAG,kBAAmB,CAAC,GAAG,EAAE;gCAC1C,UAAU;gCACV,GAAG;gCACH,aAAa,EAAE,UAAU,CAAC,KAAK;gCAC/B,KAAK;6BACN,CAAC,CAAC;4BACH,IAAI,UAAU,EAAE;gCACd,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;6BAC9B;wBACH,CAAC,EACH,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,CAAC,CACjC,CAAC;qBACH;oBACD,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,WAAW,CAAE,CAAC;oBAC7C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;oBACjB,OAAO,KAAK,CAAC,MAAM,CACjB,MAAM,EACN;wBACE,CAAC,kBAAkB,CAAC,EAAE,cAAc,CAClC;4BACE,SAAS,EAAE,kBAAkB;yBAC9B,EACD,kBAAkB,CACnB;qBACF,EACD,yBAAyB,WAAW,EAAE,CACvC,CAAC;gBACJ,CAAC;aACF;SACF;KACF,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AApHD,sEAoHC"}
@@ -0,0 +1,24 @@
1
+ import type { PgOrderSpec, PgSelectStep } from "@dataplan/pg";
2
+ type OrderBySpecIdentity = string | Omit<PgOrderSpec, "direction"> | (($select: PgSelectStep<any, any, any, any>) => Omit<PgOrderSpec, "direction">);
3
+ export interface MakeAddPgTableOrderByPluginOrders {
4
+ [orderByEnumValue: string]: {
5
+ extensions: {
6
+ graphile: {
7
+ applyPlan($select: PgSelectStep<any, any, any, any>): void;
8
+ };
9
+ };
10
+ };
11
+ }
12
+ export declare function makeAddPgTableOrderByPlugin(match: {
13
+ databaseName?: string;
14
+ schemaName: string;
15
+ tableName: string;
16
+ }, ordersGenerator: (build: GraphileBuild.Build) => MakeAddPgTableOrderByPluginOrders, hint?: string): GraphileConfig.Plugin;
17
+ export type NullsSortMethod = "first" | "last" | "first-iff-ascending" | "last-iff-ascending" | undefined;
18
+ export interface OrderByAscDescOptions {
19
+ unique?: boolean;
20
+ nulls?: NullsSortMethod;
21
+ }
22
+ export declare function orderByAscDesc(baseName: string, columnOrSqlFragment: OrderBySpecIdentity, uniqueOrOptions?: boolean | OrderByAscDescOptions): MakeAddPgTableOrderByPluginOrders;
23
+ export {};
24
+ //# sourceMappingURL=makeAddPgTableOrderByPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeAddPgTableOrderByPlugin.d.ts","sourceRoot":"","sources":["../src/makeAddPgTableOrderByPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAI9D,KAAK,mBAAmB,GACpB,MAAM,GACN,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,GAC9B,CAAC,CACC,OAAO,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KACtC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;AAEzC,MAAM,WAAW,iCAAiC;IAChD,CAAC,gBAAgB,EAAE,MAAM,GAAG;QAC1B,UAAU,EAAE;YACV,QAAQ,EAAE;gBACR,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;aAC5D,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAID,wBAAgB,2BAA2B,CACzC,KAAK,EAAE;IACL,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,EACD,eAAe,EAAE,CACf,KAAK,EAAE,aAAa,CAAC,KAAK,KACvB,iCAAiC,EACtC,IAAI,SAAiG,GACpG,cAAc,CAAC,MAAM,CAyCvB;AAED,MAAM,MAAM,eAAe,GACvB,OAAO,GACP,MAAM,GACN,qBAAqB,GACrB,oBAAoB,GACpB,SAAS,CAAC;AAEd,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,mBAAmB,EAAE,mBAAmB,EACxC,eAAe,GAAE,OAAO,GAAG,qBAA6B,GACvD,iCAAiC,CAyJnC"}
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.orderByAscDesc = exports.makeAddPgTableOrderByPlugin = void 0;
4
+ const exportable_js_1 = require("./exportable.js");
5
+ const counterByName = new Map();
6
+ function makeAddPgTableOrderByPlugin(match, ordersGenerator, hint = `Adding orders with makeAddPgTableOrderByPlugin to "${match.schemaName}"."${match.tableName}"`) {
7
+ const { databaseName = "main", schemaName, tableName } = match;
8
+ const baseDisplayName = `makeAddPgTableOrderByPlugin_${schemaName}_${tableName}`;
9
+ let counter = counterByName.get(baseDisplayName);
10
+ if (!counter) {
11
+ counter = 0;
12
+ }
13
+ counter++;
14
+ counterByName.set(baseDisplayName, counter);
15
+ const displayName = counter === 1 ? baseDisplayName : `${baseDisplayName}_${counter}`;
16
+ const plugin = {
17
+ name: displayName,
18
+ version: "0.0.0",
19
+ schema: {
20
+ hooks: {
21
+ GraphQLEnumType_values(values, build, context) {
22
+ const { extend } = build;
23
+ const { scope: { isPgRowSortEnum, pgCodec: table }, } = context;
24
+ if (!isPgRowSortEnum ||
25
+ !table ||
26
+ !table.columns ||
27
+ table.extensions?.pg?.databaseName !== databaseName ||
28
+ table.extensions?.pg?.schemaName !== schemaName ||
29
+ table.extensions?.pg?.name !== tableName) {
30
+ return values;
31
+ }
32
+ const newValues = ordersGenerator(build);
33
+ return extend(values, newValues, hint);
34
+ },
35
+ },
36
+ },
37
+ };
38
+ return plugin;
39
+ }
40
+ exports.makeAddPgTableOrderByPlugin = makeAddPgTableOrderByPlugin;
41
+ function orderByAscDesc(baseName, columnOrSqlFragment, uniqueOrOptions = false) {
42
+ const options = typeof uniqueOrOptions === "boolean"
43
+ ? { unique: uniqueOrOptions }
44
+ : uniqueOrOptions ?? {};
45
+ const { unique = false, nulls } = options;
46
+ if (typeof unique !== "boolean") {
47
+ throw new Error(`Invalid value for "unique" passed to orderByAscDesc for ${baseName}. Unique must be a boolean.`);
48
+ }
49
+ const isValidNullsOption = [
50
+ "first",
51
+ "last",
52
+ "first-iff-ascending",
53
+ "last-iff-ascending",
54
+ undefined,
55
+ ].includes(nulls);
56
+ if (!isValidNullsOption) {
57
+ throw new Error(`Invalid value for "nulls" passed to orderByAscDesc for ${baseName}. Nulls must be sorted by one of: undefined | "first" | "last" | "first-iff-ascending" | "last-iff-ascending".`);
58
+ }
59
+ const ascendingNulls = typeof nulls === "undefined"
60
+ ? undefined
61
+ : ["first", "first-iff-ascending"].includes(nulls)
62
+ ? "FIRST"
63
+ : "LAST";
64
+ const descendingNulls = typeof nulls === "undefined"
65
+ ? undefined
66
+ : ["first", "last-iff-ascending"].includes(nulls)
67
+ ? "FIRST"
68
+ : "LAST";
69
+ let spec;
70
+ const ascendingPlan = typeof columnOrSqlFragment === "string"
71
+ ? (0, exportable_js_1.EXPORTABLE)((ascendingNulls, columnOrSqlFragment, unique) => function applyPlan($select) {
72
+ $select.orderBy({
73
+ nulls: ascendingNulls,
74
+ attribute: columnOrSqlFragment,
75
+ direction: "ASC",
76
+ });
77
+ if (unique) {
78
+ $select.setOrderIsUnique();
79
+ }
80
+ }, [ascendingNulls, columnOrSqlFragment, unique])
81
+ : typeof columnOrSqlFragment === "function"
82
+ ? (0, exportable_js_1.EXPORTABLE)((ascendingNulls, columnOrSqlFragment, unique) => function applyPlan($select) {
83
+ $select.orderBy({
84
+ nulls: ascendingNulls,
85
+ ...columnOrSqlFragment($select),
86
+ direction: "ASC",
87
+ });
88
+ if (unique) {
89
+ $select.setOrderIsUnique();
90
+ }
91
+ }, [ascendingNulls, columnOrSqlFragment, unique])
92
+ : ((spec = {
93
+ nulls: ascendingNulls,
94
+ ...columnOrSqlFragment,
95
+ direction: "ASC",
96
+ }),
97
+ (0, exportable_js_1.EXPORTABLE)((spec, unique) => function applyPlan($select) {
98
+ $select.orderBy(spec);
99
+ if (unique) {
100
+ $select.setOrderIsUnique();
101
+ }
102
+ }, [spec, unique]));
103
+ const descendingPlan = typeof columnOrSqlFragment === "string"
104
+ ? (0, exportable_js_1.EXPORTABLE)((columnOrSqlFragment, descendingNulls, unique) => function applyPlan($select) {
105
+ $select.orderBy({
106
+ nulls: descendingNulls,
107
+ attribute: columnOrSqlFragment,
108
+ direction: "DESC",
109
+ });
110
+ if (unique) {
111
+ $select.setOrderIsUnique();
112
+ }
113
+ }, [columnOrSqlFragment, descendingNulls, unique])
114
+ : typeof columnOrSqlFragment === "function"
115
+ ? (0, exportable_js_1.EXPORTABLE)((columnOrSqlFragment, descendingNulls, unique) => function applyPlan($select) {
116
+ $select.orderBy({
117
+ nulls: descendingNulls,
118
+ ...columnOrSqlFragment($select),
119
+ direction: "DESC",
120
+ });
121
+ if (unique) {
122
+ $select.setOrderIsUnique();
123
+ }
124
+ }, [columnOrSqlFragment, descendingNulls, unique])
125
+ : ((spec = {
126
+ nulls: descendingNulls,
127
+ ...columnOrSqlFragment,
128
+ direction: "DESC",
129
+ }),
130
+ (0, exportable_js_1.EXPORTABLE)((spec, unique) => function applyPlan($select) {
131
+ $select.orderBy(spec);
132
+ if (unique) {
133
+ $select.setOrderIsUnique();
134
+ }
135
+ }, [spec, unique]));
136
+ const orders = {
137
+ [`${baseName}_ASC`]: {
138
+ extensions: {
139
+ graphile: {
140
+ applyPlan: ascendingPlan,
141
+ },
142
+ },
143
+ },
144
+ [`${baseName}_DESC`]: {
145
+ extensions: {
146
+ graphile: {
147
+ applyPlan: descendingPlan,
148
+ },
149
+ },
150
+ },
151
+ };
152
+ return orders;
153
+ }
154
+ exports.orderByAscDesc = orderByAscDesc;
155
+ //# sourceMappingURL=makeAddPgTableOrderByPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeAddPgTableOrderByPlugin.js","sourceRoot":"","sources":["../src/makeAddPgTableOrderByPlugin.ts"],"names":[],"mappings":";;;AAEA,mDAA6C;AAmB7C,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEhD,SAAgB,2BAA2B,CACzC,KAIC,EACD,eAEsC,EACtC,IAAI,GAAG,sDAAsD,KAAK,CAAC,UAAU,MAAM,KAAK,CAAC,SAAS,GAAG;IAErG,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAC/D,MAAM,eAAe,GAAG,+BAA+B,UAAU,IAAI,SAAS,EAAE,CAAC;IACjF,IAAI,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,GAAG,CAAC,CAAC;KACb;IACD,OAAO,EAAE,CAAC;IACV,aAAa,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IAC5C,MAAM,WAAW,GACf,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,IAAI,OAAO,EAAE,CAAC;IACpE,MAAM,MAAM,GAA0B;QACpC,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,OAAO;QAEhB,MAAM,EAAE;YACN,KAAK,EAAE;gBACL,sBAAsB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO;oBAC3C,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;oBACzB,MAAM,EACJ,KAAK,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,GAC3C,GAAG,OAAO,CAAC;oBAEZ,IACE,CAAC,eAAe;wBAChB,CAAC,KAAK;wBACN,CAAC,KAAK,CAAC,OAAO;wBACd,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE,YAAY,KAAK,YAAY;wBACnD,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE,UAAU,KAAK,UAAU;wBAC/C,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE,IAAI,KAAK,SAAS,EACxC;wBACA,OAAO,MAAM,CAAC;qBACf;oBACD,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;oBAEzC,OAAO,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;gBACzC,CAAC;aACF;SACF;KACF,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AAnDD,kEAmDC;AAcD,SAAgB,cAAc,CAC5B,QAAgB,EAChB,mBAAwC,EACxC,kBAAmD,KAAK;IAExD,MAAM,OAAO,GACX,OAAO,eAAe,KAAK,SAAS;QAClC,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE;QAC7B,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC;IAC5B,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAE1C,IAAI,OAAO,MAAM,KAAK,SAAS,EAAE;QAC/B,MAAM,IAAI,KAAK,CACb,2DAA2D,QAAQ,6BAA6B,CACjG,CAAC;KACH;IAED,MAAM,kBAAkB,GAAG;QACzB,OAAO;QACP,MAAM;QACN,qBAAqB;QACrB,oBAAoB;QACpB,SAAS;KACV,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAElB,IAAI,CAAC,kBAAkB,EAAE;QACvB,MAAM,IAAI,KAAK,CACb,0DAA0D,QAAQ,gHAAgH,CACnL,CAAC;KACH;IACD,MAAM,cAAc,GAClB,OAAO,KAAK,KAAK,WAAW;QAC1B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;YAClD,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,MAAM,CAAC;IACb,MAAM,eAAe,GACnB,OAAO,KAAK,KAAK,WAAW;QAC1B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;YACjD,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,MAAM,CAAC;IAIb,IAAI,IAAiB,CAAC;IACtB,MAAM,aAAa,GACjB,OAAO,mBAAmB,KAAK,QAAQ;QACrC,CAAC,CAAC,IAAA,0BAAU,EACR,CAAC,cAAc,EAAE,mBAAmB,EAAE,MAAM,EAAE,EAAE,CAC9C,SAAS,SAAS,CAAC,OAAO;YACxB,OAAO,CAAC,OAAO,CAAC;gBACd,KAAK,EAAE,cAAc;gBACrB,SAAS,EAAE,mBAAmB;gBAC9B,SAAS,EAAE,KAAK;aACjB,CAAC,CAAC;YACH,IAAI,MAAM,EAAE;gBACV,OAAO,CAAC,gBAAgB,EAAE,CAAC;aAC5B;QACH,CAAC,EACH,CAAC,cAAc,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAC9C;QACH,CAAC,CAAC,OAAO,mBAAmB,KAAK,UAAU;YAC3C,CAAC,CAAC,IAAA,0BAAU,EACR,CAAC,cAAc,EAAE,mBAAmB,EAAE,MAAM,EAAE,EAAE,CAC9C,SAAS,SAAS,CAAC,OAAO;gBACxB,OAAO,CAAC,OAAO,CAAC;oBACd,KAAK,EAAE,cAAc;oBACrB,GAAG,mBAAmB,CAAC,OAAO,CAAC;oBAC/B,SAAS,EAAE,KAAK;iBACF,CAAC,CAAC;gBAClB,IAAI,MAAM,EAAE;oBACV,OAAO,CAAC,gBAAgB,EAAE,CAAC;iBAC5B;YACH,CAAC,EACH,CAAC,cAAc,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAC9C;YACH,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;gBACP,KAAK,EAAE,cAAc;gBACrB,GAAG,mBAAmB;gBACtB,SAAS,EAAE,KAAK;aACF,CAAC;gBACjB,IAAA,0BAAU,EACR,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CACf,SAAS,SAAS,CAAC,OAAO;oBACxB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBACtB,IAAI,MAAM,EAAE;wBACV,OAAO,CAAC,gBAAgB,EAAE,CAAC;qBAC5B;gBACH,CAAC,EACH,CAAC,IAAI,EAAE,MAAM,CAAC,CACf,CAAC,CAAC;IACT,MAAM,cAAc,GAClB,OAAO,mBAAmB,KAAK,QAAQ;QACrC,CAAC,CAAC,IAAA,0BAAU,EACR,CAAC,mBAAmB,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,CAC/C,SAAS,SAAS,CAAC,OAAO;YACxB,OAAO,CAAC,OAAO,CAAC;gBACd,KAAK,EAAE,eAAe;gBACtB,SAAS,EAAE,mBAAmB;gBAC9B,SAAS,EAAE,MAAM;aAClB,CAAC,CAAC;YACH,IAAI,MAAM,EAAE;gBACV,OAAO,CAAC,gBAAgB,EAAE,CAAC;aAC5B;QACH,CAAC,EACH,CAAC,mBAAmB,EAAE,eAAe,EAAE,MAAM,CAAC,CAC/C;QACH,CAAC,CAAC,OAAO,mBAAmB,KAAK,UAAU;YAC3C,CAAC,CAAC,IAAA,0BAAU,EACR,CAAC,mBAAmB,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,CAC/C,SAAS,SAAS,CAAC,OAAO;gBACxB,OAAO,CAAC,OAAO,CAAC;oBACd,KAAK,EAAE,eAAe;oBACtB,GAAG,mBAAmB,CAAC,OAAO,CAAC;oBAC/B,SAAS,EAAE,MAAM;iBACH,CAAC,CAAC;gBAClB,IAAI,MAAM,EAAE;oBACV,OAAO,CAAC,gBAAgB,EAAE,CAAC;iBAC5B;YACH,CAAC,EACH,CAAC,mBAAmB,EAAE,eAAe,EAAE,MAAM,CAAC,CAC/C;YACH,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;gBACP,KAAK,EAAE,eAAe;gBACtB,GAAG,mBAAmB;gBACtB,SAAS,EAAE,MAAM;aACH,CAAC;gBACjB,IAAA,0BAAU,EACR,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CACf,SAAS,SAAS,CAAC,OAAO;oBACxB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBACtB,IAAI,MAAM,EAAE;wBACV,OAAO,CAAC,gBAAgB,EAAE,CAAC;qBAC5B;gBACH,CAAC,EACH,CAAC,IAAI,EAAE,MAAM,CAAC,CACf,CAAC,CAAC;IAET,MAAM,MAAM,GAAsC;QAChD,CAAC,GAAG,QAAQ,MAAM,CAAC,EAAE;YACnB,UAAU,EAAE;gBACV,QAAQ,EAAE;oBACR,SAAS,EAAE,aAAa;iBACzB;aACF;SACF;QACD,CAAC,GAAG,QAAQ,OAAO,CAAC,EAAE;YACpB,UAAU,EAAE;gBACV,QAAQ,EAAE;oBACR,SAAS,EAAE,cAAc;iBAC1B;aACF;SACF;KACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AA7JD,wCA6JC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "graphile-utils",
3
- "version": "5.0.0-0.28",
3
+ "version": "5.0.0-0.29",
4
4
  "description": "Utilities to help with building graphile-build plugins",
5
5
  "type": "commonjs",
6
6
  "main": "dist/index.js",
@@ -47,18 +47,19 @@
47
47
  "node": ">=14.17"
48
48
  },
49
49
  "peerDependencies": {
50
- "grafast": "^0.0.1-0.17",
51
- "graphile-build": "^5.0.0-0.23",
52
- "graphile-build-pg": "^5.0.0-0.28",
50
+ "grafast": "^0.0.1-0.18",
51
+ "graphile-build": "^5.0.0-0.24",
52
+ "graphile-build-pg": "^5.0.0-0.29",
53
53
  "graphql": "^16.1.0-experimental-stream-defer.6",
54
54
  "pg-introspection": "^0.0.1-0.3"
55
55
  },
56
56
  "devDependencies": {
57
- "graphile-build": "^5.0.0-0.23",
58
- "graphile-build-pg": "^5.0.0-0.28",
57
+ "graphile-build": "^5.0.0-0.24",
58
+ "graphile-build-pg": "^5.0.0-0.29",
59
59
  "jest": "^28.1.0",
60
60
  "jest-serializer-graphql-schema": "^5.0.0-0.3",
61
61
  "nodemon": "^2.0.15",
62
+ "postgraphile": "^5.0.0-0.32",
62
63
  "ts-node": "^10.9.1",
63
64
  "typescript": "^5.0.0-beta"
64
65
  },